mirror of
https://github.com/lux-tel/websites.git
synced 2026-10-30 20:31:36 +00:00
@session/sanity-types
This package is a TypeScript type generation utility for Sanity CMS schemas.
Getting Started
You can follow the generic instructions in the root README.md to get started.
Usage
Basic usage
// /schemas/types.ts
import type { GenericSchemaType, SchemaFields } from '@session/sanity-types';
type CustomFieldTypeMap = {
potato: {
colour: string;
size: number;
};
};
export type SchemaFieldsType<Fields extends SchemaFields<CustomFieldTypeMap>> = GenericSchemaType<
CustomFieldTypeMap,
Fields
>;
// /schemas/page.ts
import type { SchemaType } from './types';
const pageFields = [
defineField({
name: 'potato',
type: 'potato',
}),
];
export type PageSchemaType = SchemaFieldsType<typeof pageFields>; // { potato: { colour: string; size: number; } }
export const pageSchema = defineType({
type: 'document',
name: 'page',
fields: pageFields,
});
Add document fields
// /schemas/page.ts
import type { DocumentFields } from '@session/sanity-types';
import type { SchemaType } from './types';
const pageFields = [
defineField({
name: 'potato',
type: 'potato',
}),
];
export type PageSchemaType = SchemaFieldsType<typeof pageFields> & DocumentFields; // { potato: { colour: string; size: number; }, _id: string; _type: string; ... }
export const pageSchema = defineType({
type: 'document',
name: 'page',
fields: pageFields,
});