@driftime/sanity-plugin-handbook 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -80
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ComponentProps","ComponentType","createElement","defaultIconProps","width","height","strokeWidth","createSanityIcon","icon","props","Icon","SanityIcon","isDevelopment","process","env","isDevelopment","prefixStyle","createLogger","name","prefix","format","message","info","console","warn","error","createLogger","pluginName","logger","apiVersion","defaultTitle","defaultDocumentTitle","defaultUndocumentedFieldMessage","KeyedSegment","PortableTextBlock","PortableTextObject","PortableTextSpan","PortableTextTextBlock","SanityDocument","Strict","T","K","SanityKeyedArray","SanityHandbookGuide","_type","guideTypeName","title","description","content","SanityHandbookGuideGroup","guides","SanityHandbook","handbookTypeName","groups","SanityHandbookImage","imageTypeName","asset","url","caption","alt","SanityHandbookVideo","videoTypeName","SanityHandbookCode","codeTypeName","code","language","SanityHandbookCalloutVariant","SanityHandbookCallout","calloutTypeName","variant","body","SanityHandbookHorizontalRule","horizontalRuleTypeName","SanityHandbookLink","href","guideTypeName","handbookTypeName","singletonTypes","Set","documentTypes","ComponentProps","BookTextIconProps","BookTextIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","Nullable","T","isDefined","value","undefined","trim","Array","isArray","some","element","prototype","Reflect","getPrototypeOf","Object","keys","length","convertCase","format","words","replaceAll","toLowerCase","_match","character","toUpperCase","isRecord","Record","readPath","path","current","segment","sidebarWidth","sidebarMinimumWidth","sidebarMaximumWidth","contentMinimumWidth","contentFlex","collapsedPaneWidth","sidebarItemHeight","toolMinimumWidth","contentWidth","contentPaddingInline","contentPaddingBlockStart","contentPaddingBlockEnd","contentSpacing","section","paragraph","heading","media","callout","blockquote","list","nestedList","rule","imageTypeName","videoTypeName","assetUrlFragment","guideContentFragment","guideFragment","SanityClient","TypedQuery","__result","T","defineTypedQuery","query","fetchQuery","client","fetch","undefined","guideFragment","defineTypedQuery","SanityHandbook","SanityHandbookGuide","guideTypeName","handbookTypeName","handbookQuery","handbookDocumentsQuery","useEffect","useState","useClient","apiVersion","handbookDocumentsQuery","handbookQuery","fetchQuery","SanityHandbook","useHandbookDocument","$","_c","t0","Symbol","for","client","handbook","setHandbook","undefined","loading","setLoading","t1","t2","fetchHandbook","subscription","listen","subscribe","unsubscribe","t3","_c","isDefined","createContext","useContext","useState","ReactNode","logger","useHandbookDocument","SanityHandbookBlockDefinition","SanityHandbookDocumentRole","SanityHandbook","HandbookProviderConfig","sidebarTitle","roles","blocks","undocumentedFieldMessage","HandbookContextValues","activeTab","sidebarExpanded","loading","handbook","setActiveTab","id","setSidebarExpanded","expanded","HandbookProviderProps","children","HandbookContext","undefined","useHandbookContext","handbookContext","Error","format","HandbookProvider","t0","$","_c","t1","t2","_c","isDefined","Box","Card","Flex","Layer","LayerProvider","Text","useElementSize","useTheme_v2","useContext","ComponentProps","ReactNode","PaneContext","collapsedPaneWidth","PaneHeaderProps","title","backButton","PaneHeader","t0","$","_c","props","style","color","pane","paneSize","rootElement","collapsed","isLast","paneHeight","border","height","collapsedWidth","window","innerHeight","bg","fg","selectable","default","enabled","t1","handleTitleClick","collapse","t2","handleLayoutClick","expand","t3","undefined","t4","lineHeight","position","top","t5","t6","t7","t8","width","transform","transformOrigin","t9","t10","t11","t12","backgroundColor","minWidth","t13","cursor","outline","t14","t15","t16","t17","t18","t19","_c","isDefined","ArrowLeftIcon","Box","Button","Heading","Stack","Text","useContext","ComponentProps","ReactNode","PaneLayoutContext","PaneContent","PaneHeader","contentPaddingBlockEnd","contentPaddingBlockStart","contentPaddingInline","contentWidth","useHandbookContext","ContentPanelProps","Omit","id","title","description","children","ContentPanel","t0","$","_c","props","setSidebarExpanded","paneLayout","t1","collapsed","t2","t3","t4","Symbol","for","maxWidth","boxSizing","marginInline","paddingInline","paddingBlockStart","paddingBlockEnd","t5","t6","t7","t8","t9","t10","_c","Box","Button","Stack","Text","useClickOutsideEvent","Popover","useRef","ComponentProps","ReactNode","FieldHintProps","Omit","label","icon","open","children","onOpen","onClose","FieldHint","t0","$","_c","props","buttonReference","popoverReference","t1","Symbol","for","current","undefined","t2","maxWidth","t3","t4","t5","t6","t7","event","pointerType","t8","event_0","t9","t10","_c","ComponentProps","InfoIconProps","InfoIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","ComponentProps","LightbulbIconProps","LightbulbIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","ComponentProps","TriangleAlertIconProps","TriangleAlertIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","ComponentProps","ComponentType","InfoIcon","LightbulbIcon","TriangleAlertIcon","SanityHandbookMetadata","HintKind","name","Pick","label","icon","hintKinds","defaultIconProps","isDefined","Flex","FlexProps","useState","FieldHint","hintKinds","SanityHandbookMetadata","FieldHintsProps","Pick","FieldHints","t0","$","_c","caution","info","props","tip","openHint","setOpenHint","undefined","T0","t1","t2","t3","t4","hints","t5","Symbol","for","closeHint","flatMap","t6","name","label","icon","Icon","hint","_c","createSanityIcon","convertCase","ComponentProps","ComponentType","ReactNode","resolveTitle","type","name","title","handbook","resolveDescription","description","undefined","resolveIcon","icon","isDefined","isRecord","readPath","FieldDefinition","Schema","CompiledField","name","type","title","description","fields","of","handbook","NormalizedField","opaqueTypes","Set","inheritedFieldNames","Partial","Record","block","file","geopoint","image","slug","isCompiledField","value","hasFieldsArray","Array","isArray","hasOfArray","getTypeName","typeName","undefined","getParentTypeName","resolvedType","parentName","String","normalizeField","field","visited","result","has","shouldTrack","next","fieldSource","ofSource","map","subfield","member","resolveCustomFields","inherited","customFields","filter","resolveNormalizedFields","items","normalized","item","resolveNormalizedMembers","members","resolveParentName","schema","direct","get","resolveFields","length","memberType","getSubfields","directFields","convertCase","isDefined","ChevronDownIcon","ChevronRightIcon","Box","Card","Flex","Stack","Text","StackProps","useState","FieldDefinition","useSchema","FieldHints","useHandbookContext","resolveDescription","resolveTitle","NormalizedField","getSubfields","DocumentedFieldProps","field","ancestors","Set","noAncestors","DocumentedField","t0","$","_c","props","t1","undefined","schema","undocumentedFieldMessage","expanded","setExpanded","t2","effectiveTitle","t3","effectiveDescription","caution","example","info","t4","tip","handbook","hasHints","t5","type","has","isCycle","t6","subfields","hasSubfields","t7","t8","Symbol","for","marginTop","t9","t10","t11","t12","t13","t14","fontStyle","t15","t16","textAlign","border","cursor","length","marginBottom","paddingLeft","borderLeft","map","subfield","name","_c","DocumentedField","contentSpacing","resolveDescription","resolveIcon","resolveTitle","SanityHandbookDocumentRole","documentTypesSections","roles","map","title","documents","entries","document","id","name","description","icon","render","display","flexDirection","gap","section","fields","field","ComponentProps","LayoutGridIconProps","LayoutGridIcon","props","$","_c","t0","t1","t2","t3","Symbol","for","t4","_c","isDefined","ChevronRightIcon","Box","Card","Flex","Stack","Text","contentSpacing","useHandbookContext","resolveDescription","resolveIcon","resolveTitle","DocumentTypesOverview","$","_c","roles","setActiveTab","setSidebarExpanded","t0","Symbol","for","display","flexDirection","gap","section","t1","t2","role","title","description","documents","map","document","Icon","documentDescription","name","width","marginLeft","textAlign","border","cursor","height","color","opacity","_c","defaultIconProps","Flex","Stack","Text","hintKinds","contentSpacing","hintDescriptions","tip","info","caution","Record","HowToUse","$","_c","t0","Symbol","for","display","flexDirection","gap","section","t1","t2","t3","t4","t5","map","_temp","t6","t7","name","icon","Icon","fontSize","color","_c","_temp","createSanityIcon","BookTextIcon","LayoutGridIcon","DocumentTypesOverview","HowToUse","gettingStartedSections","title","entries","id","description","icon","render","defaultIconProps","Box","Card","Flex","Text","CardProps","CardTone","ComponentProps","ComponentType","ReactNode","InfoIcon","LightbulbIcon","TriangleAlertIcon","SanityHandbookCalloutVariant","CalloutVariantStyle","icon","tone","CalloutContentProps","Omit","variant","children","presentation","Record","tip","info","warning","CalloutContent","t0","$","_c","props","Icon","t1","Symbol","for","marginTop","fontSize","color","t2","t3","t4","t5","t6","_c","ComponentProps","PortableCodeProps","PortableCode","t0","$","_c","props","style","t1","paddingBlock","paddingInline","fontSize","backgroundColor","borderRadius","t2","_c","ComponentProps","PortableLinkProps","PortableLink","t0","$","_c","children","props","style","t1","color","t2","_c","PortableText","PortableTextComponents","PortableTextMarkComponentProps","ComponentProps","CalloutContent","PortableCode","PortableLink","contentSpacing","SanityHandbookCallout","SanityHandbookLink","CalloutBlockProps","Omit","value","components","block","normal","children","marks","code","link","href","CalloutBlock","t0","$","_c","props","style","t1","marginBlock","callout","t2","body","t3","variant","components","_c","Card","CardProps","Code","CodeContentProps","code","language","CodeContent","t0","$","_c","props","style","t1","overflowX","t2","t3","_c","isDefined","ComponentProps","CodeContent","contentSpacing","SanityHandbookCode","CodeBlockProps","Omit","value","CodeBlock","t0","$","_c","props","style","code","t1","marginBlock","media","t2","language","_c","ComponentProps","HorizontalRuleContentProps","HorizontalRuleContent","t0","$","_c","props","style","t1","border","borderTop","t2","_c","ComponentProps","HorizontalRuleContent","contentSpacing","SanityHandbookHorizontalRule","HorizontalRuleBlockProps","value","HorizontalRuleBlock","t0","$","_c","props","style","_value","t1","t2","marginBlock","rule","_c","Box","Text","BoxProps","CaptionProps","children","Caption","t0","$","_c","props","t1","Symbol","for","fontStyle","t2","t3","_c","isDefined","ComponentProps","Caption","ImageContentProps","url","alt","caption","ImageContent","t0","$","_c","props","t1","t2","Symbol","for","display","maxWidth","borderRadius","t3","t4","t5","_c","isDefined","ComponentProps","ImageContent","contentSpacing","SanityHandbookImage","ImageBlockProps","Omit","value","ImageBlock","t0","$","_c","props","style","asset","url","t1","marginBlock","media","t2","alt","caption","_c","isDefined","ComponentProps","Caption","VideoContentProps","url","caption","VideoContent","t0","$","_c","props","t1","Symbol","for","display","maxWidth","borderRadius","WebkitTransform","t2","t3","t4","t5","t6","_c","isDefined","ComponentProps","VideoContent","contentSpacing","SanityHandbookVideo","VideoBlockProps","Omit","value","VideoBlock","t0","$","_c","props","style","asset","url","t1","marginBlock","media","t2","caption","_c","Box","Text","BoxProps","PortableBlockquoteProps","muted","PortableBlockquote","t0","$","_c","children","props","style","t1","borderLeft","t2","Symbol","for","fontStyle","t3","t4","_c","Text","TextProps","PortableHeadingProps","Omit","PortableHeading","props","$","_c","t0","_c","CSSProperties","ComponentProps","PortableListProps","Omit","ordered","PortableList","t0","$","_c","props","style","t1","undefined","t2","display","flexDirection","gap","margin","paddingLeft","listStyle","t3","_c","Text","TextProps","PortableParagraphProps","PortableParagraph","props","$","_c","t0","_c","PortableText","PortableTextReact","PortableTextComponentProps","PortableTextComponents","PortableTextMarkComponentProps","PortableTextTypeComponent","PortableTextTypeComponentProps","ComponentProps","ComponentType","PortableTextBlock","PortableTextListBlock","PortableTextObject","CalloutBlock","CodeBlock","HorizontalRuleBlock","ImageBlock","VideoBlock","PortableBlockquote","PortableCode","PortableHeading","PortableLink","PortableList","PortableParagraph","contentSpacing","useHandbookContext","SanityHandbookLink","SanityKeyedArray","calloutTypeName","codeTypeName","horizontalRuleTypeName","imageTypeName","videoTypeName","listSpacing","level","nestedList","list","components","block","h2","children","marginBlockStart","heading","marginBlockEnd","normal","marginBlock","paragraph","blockquote","bullet","value","number","marks","code","link","href","blockRenderer","Component","Value","Block","PortableTextProps","t0","$","_c","props","blocks","t1","Symbol","for","t2","t3","t4","t5","types","schema","name","component","t6","t7","t8","PortableText","_c","PortableTextReact","ComponentProps","BookOpenTextIconProps","BookOpenTextIcon","props","$","_c","t0","t1","t2","t3","t4","t5","Symbol","for","t6","_c","createSanityIcon","PortableText","BookOpenTextIcon","SanityHandbook","guidesSections","handbook","groups","map","title","guides","entries","guide","id","_key","description","icon","render","content","PortableText","isDefined","ComponentType","ReactNode","useHandbookContext","documentTypesSections","gettingStartedSections","guidesSections","Entry","id","title","description","icon","render","Section","entries","useSections","$","_c","roles","handbook","loading","t0","_c","isDefined","ComponentProps","Pane","ContentPanel","contentFlex","contentMinimumWidth","useHandbookContext","useSections","ContentProps","Omit","Content","props","$","_c","activeTab","sections","T0","t0","t1","t2","t3","t4","t5","t6","id","entry","flatMap","_temp","find","title","description","render","section","entries","_c","_temp","Box","Card","Text","ComponentProps","SidebarHeadingProps","title","SidebarHeading","t0","$","_c","props","t1","Symbol","for","cursor","outline","t2","t3","_c","ChevronRightIcon","Box","Text","CSSProperties","ComponentProps","ComponentType","PreviewCard","SanityDefaultPreview","useHandbookContext","SidebarTabProps","Omit","id","label","icon","style","SidebarTab","t0","$","_c","Icon","props","activeTab","setActiveTab","setSidebarExpanded","selected","t1","t2","cursor","t3","t4","Symbol","for","opacity","t5","t6","t7","_c","ComponentProps","ComponentType","CommandList","Pane","PaneContent","PaneHeader","SidebarHeading","SidebarTab","sidebarItemHeight","sidebarMaximumWidth","sidebarMinimumWidth","sidebarWidth","useHandbookContext","useSections","SidebarHeadingItem","type","title","SidebarTabItem","id","label","icon","SidebarItem","renderItem","item","SidebarProps","Omit","Sidebar","props","$","_c","sidebarTitle","sections","t0","flatMap","_temp2","items","t1","getItemDisabled","virtualIndex","t2","t3","t4","entries","map","_temp","entry","_c","_temp2","_temp","isDefined","useContext","PaneLayoutContext","useHandbookContext","Content","Sidebar","Panes","$","_c","activeTab","sidebarExpanded","paneLayout","t0","hasContent","collapsed","t1","Symbol","for","t2","t3","_c","isDefined","useTheme_v2","useState","Tool","PaneLayout","toolMinimumWidth","HandbookProvider","HandbookProviderConfig","Panes","HandbookToolProps","tool","HandbookTool","t0","$","_c","t1","options","media","layoutCollapsed","setLayoutCollapsed","t2","Symbol","for","handleCollapse","t3","handleExpand","t4","undefined","t5","t6","minHeight","minWidth","t7","t8","_c","isDefined","configuredEditors","undefined","setConfiguredEditors","editors","isPermittedEditor","email","permitted","includes","Stack","PreviewProps","CalloutContent","SanityHandbookCallout","SanityHandbookCalloutVariant","CalloutPreviewProps","variant","body","CalloutPreview","t0","$","_c","t1","t2","map","_temp2","t3","t4","_key","children","whiteSpace","_temp","join","child","text","_c","BlockDecoratorProps","PortableCode","CodeDecorator","t0","$","_c","children","t1","_c","BlockStyleProps","PortableBlockquote","PortableHeading","PortableParagraph","ParagraphStyle","t0","$","_c","children","t1","HeadingStyle","BlockquoteStyle","_c","ComponentProps","MessageCircleIconProps","MessageCircleIcon","props","$","_c","t0","Symbol","for","t1","_c","ComponentProps","LinkIconProps","LinkIcon","props","$","_c","t0","t1","Symbol","for","t2","_c","createSanityIcon","defineArrayMember","defineField","LinkIcon","SanityHandbookLink","linkAnnotation","name","type","description","icon","preview","select","href","prepare","selection","title","fields","validation","rule","uri","scheme","createSanityIcon","defineArrayMember","defineField","defineType","CalloutPreview","CodeDecorator","ParagraphStyle","MessageCircleIcon","linkAnnotation","SanityHandbookCallout","SanityHandbookCalloutVariant","calloutTypeName","calloutType","name","type","title","description","icon","components","preview","select","variant","body","prepare","selection","fields","initialValue","validation","rule","required","options","list","value","layout","direction","of","styles","component","lists","marks","decorators","annotations","isDefined","PreviewProps","CodeContent","CodePreviewProps","code","language","CodePreview","t0","$","_c","t1","_c","ComponentProps","CodeIconProps","CodeIcon","props","$","_c","t0","t1","Symbol","for","t2","_c","createSanityIcon","defineField","defineType","CodePreview","CodeIcon","SanityHandbookCode","codeTypeName","codeType","name","type","title","description","icon","components","preview","select","code","language","fields","options","list","value","PreviewProps","HorizontalRuleContent","HorizontalRulePreviewProps","HorizontalRulePreview","_props","$","_c","t0","Symbol","for","marginBlock","_c","ComponentProps","SeparatorHorizontalIconProps","SeparatorHorizontalIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","createSanityIcon","defineField","defineType","HorizontalRulePreview","SeparatorHorizontalIcon","SanityHandbookHorizontalRule","horizontalRuleTypeName","horizontalRuleType","name","type","title","description","icon","components","preview","prepare","fields","hidden","isDefined","PreviewProps","ImageContent","ImagePreviewProps","url","alt","caption","ImagePreview","t0","$","_c","t1","Symbol","for","padding","t2","_c","ComponentProps","ImageIconProps","ImageIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","createSanityIcon","defineField","defineType","ImagePreview","ImageIcon","SanityHandbookImage","imageTypeName","imageType","name","type","title","description","icon","components","preview","select","caption","alt","url","fields","options","hotspot","isDefined","PreviewProps","VideoContent","VideoPreviewProps","url","caption","VideoPreview","t0","$","_c","t1","Symbol","for","padding","t2","_c","ComponentProps","FilmIconProps","FilmIcon","props","$","_c","t0","t1","t2","t3","t4","t5","t6","t7","Symbol","for","t8","_c","createSanityIcon","defineField","defineType","VideoPreview","FilmIcon","SanityHandbookVideo","videoTypeName","videoType","name","type","title","description","icon","components","preview","select","caption","url","fields","options","accept","Text","BlockListItemProps","ListItemStyle","t0","$","_c","children","t1","Symbol","for","marginTop","t2","_c","defineArrayMember","defineField","CodeDecorator","ListItemStyle","BlockquoteStyle","HeadingStyle","ParagraphStyle","SanityHandbookBlockDefinition","linkAnnotation","SanityHandbookGuide","calloutTypeName","codeTypeName","horizontalRuleTypeName","imageTypeName","videoTypeName","createGuideContentField","customBlocks","name","type","description","of","styles","title","value","component","lists","marks","decorators","annotations","map","block","schema","createSanityIcon","defineField","defineType","defaultDocumentTitle","BookOpenTextIcon","SanityHandbookBlockDefinition","createGuideContentField","SanityHandbookGuide","guideTypeName","createGuideType","customBlocks","name","type","title","description","icon","preview","select","prepare","selection","subtitle","fields","validation","rule","required","ComponentProps","ListPlusIconProps","ListPlusIcon","props","$","_c","t0","t1","t2","t3","t4","Symbol","for","t5","_c","createSanityIcon","isDefined","defineArrayMember","defineField","defineType","BookTextIcon","ListPlusIcon","SanityHandbook","SanityHandbookGuideGroup","guideTypeName","handbookTypeName","handbookType","name","type","title","description","icon","preview","prepare","fields","of","validation","rule","required","to","select","guide0","guide1","guide2","selection","all","filter","guide","shown","slice","hasMore","formatSubtitle","join","subtitle","createSanityIcon","ComponentType","definePlugin","DocumentDefinition","PortableTextObject","SchemaTypeDefinition","defaultTitle","defaultUndocumentedFieldMessage","pluginName","documentTypes","singletonTypes","HandbookProviderConfig","BookTextIcon","HandbookTool","isPermittedEditor","setConfiguredEditors","calloutType","codeType","horizontalRuleType","imageType","videoType","createGuideType","handbookType","FieldDefinitionBase","handbook","SanityHandbookMetadata","title","description","example","tip","info","caution","SanityHandbookDocumentRole","documents","SanityHandbookBlockDefinition","schema","component","value","SanityHandbookConfig","sidebarTitle","roles","blocks","editors","undocumentedFieldMessage","handbookPlugin","config","resolved","guideType","name","types","map","block","document","newDocumentOptions","templateItems","creationContext","currentUser","type","hiddenTypes","email","filter","templateId","some","startsWith","actions","actionComponents","schemaType","has","action","includes","tools","icon","options","createSanityIcon","CurrentUser","StructureBuilder","BookOpenTextIcon","BookTextIcon","isPermittedEditor","guideTypeName","handbookTypeName","handbookStructure","structureBuilder","context","currentUser","editors","email","listItem","document","documentTypeList","title","icon","child","id","schemaType","defaultOrdering","field","direction","useCurrentUser","isPermittedEditor","useIsHandbookEditor","editors","$","_c","user","t0","email","t1","_c","\"NODE_ENV\"","\"type\"","\"fields\"","\"of\""],"sources":["../../@repo/lib/icons.ts","../../@repo/lib/environment.ts","../../@repo/lib/logger.ts","../src/config/defaults.ts","../src/types.ts","../src/config/documents.ts","../src/icons/book-text.tsx","../../@repo/lib/utils.ts","../src/config/layout.ts","../src/groq/fragments.ts","../src/lib/groq.ts","../src/groq/documents.ts","../src/hooks/use-handbook-document.ts","../src/contexts/handbook.tsx","../src/components/pane-header.tsx","../src/components/content-panel.tsx","../src/components/documentation/hint.tsx","../src/icons/info.tsx","../src/icons/lightbulb.tsx","../src/icons/triangle-alert.tsx","../src/config/hints.ts","../src/components/documentation/hints.tsx","../src/lib/display.ts","../src/lib/schema.ts","../src/components/documentation/field.tsx","../src/sections/document-types.tsx","../src/icons/layout-grid.tsx","../src/pages/document-types-overview.tsx","../src/pages/how-to-use.tsx","../src/sections/getting-started.tsx","../src/components/blocks/callout/content.tsx","../src/components/content/portable/code.tsx","../src/components/content/portable/link.tsx","../src/components/blocks/callout/block.tsx","../src/components/blocks/code/content.tsx","../src/components/blocks/code/block.tsx","../src/components/blocks/horizontal-rule/content.tsx","../src/components/blocks/horizontal-rule/block.tsx","../src/components/caption.tsx","../src/components/blocks/image/content.tsx","../src/components/blocks/image/block.tsx","../src/components/blocks/video/content.tsx","../src/components/blocks/video/block.tsx","../src/components/content/portable/blockquote.tsx","../src/components/content/portable/heading.tsx","../src/components/content/portable/list.tsx","../src/components/content/portable/paragraph.tsx","../src/components/content/portable-text.tsx","../src/icons/book-open-text.tsx","../src/sections/guides.tsx","../src/hooks/use-sections.ts","../src/layouts/content.tsx","../src/components/sidebar/heading.tsx","../src/components/sidebar/tab.tsx","../src/layouts/sidebar.tsx","../src/layouts/panes.tsx","../src/layouts/tool.tsx","../src/lib/editors.ts","../src/components/blocks/callout/preview.tsx","../src/components/decorators.tsx","../src/components/styles.tsx","../src/icons/message-circle.tsx","../src/icons/link.tsx","../src/schemas/annotations/link.ts","../src/schemas/blocks/callout.ts","../src/components/blocks/code/preview.tsx","../src/icons/code.tsx","../src/schemas/blocks/code.ts","../src/components/blocks/horizontal-rule/preview.tsx","../src/icons/separator-horizontal.tsx","../src/schemas/blocks/horizontal-rule.ts","../src/components/blocks/image/preview.tsx","../src/icons/image.tsx","../src/schemas/blocks/image.ts","../src/components/blocks/video/preview.tsx","../src/icons/film.tsx","../src/schemas/blocks/video.ts","../src/components/lists.tsx","../src/schemas/fields/content.ts","../src/schemas/types/guide.ts","../src/icons/list-plus.tsx","../src/schemas/types/handbook.ts","../src/plugin.ts","../src/lib/structure.ts","../src/hooks/use-is-handbook-editor.ts"],"sourcesContent":["import type { ComponentProps, ComponentType } from \"react\";\nimport { createElement } from \"react\";\n\n/** Default props for the plugin's own icons. Icons from `@sanity/icons` already match the Studio. */\nexport const defaultIconProps: ComponentProps<\"svg\"> = { width: \"1em\", height: \"1em\", strokeWidth: 1.5 };\n\n/**\n * Wraps an SVG icon component for use in the Studio.\n *\n * @param icon - The icon to wrap.\n * @param props - Props that override the Studio icon defaults.\n * @returns An icon component.\n */\nexport function createSanityIcon(icon: ComponentType<ComponentProps<\"svg\">>, props?: ComponentProps<\"svg\">) {\n const Icon = icon;\n\n function SanityIcon() {\n return createElement(Icon, { ...defaultIconProps, ...props });\n }\n\n return SanityIcon;\n}\n","/** Whether this is a development build, the only kind in which the plugin logs. */\nexport const isDevelopment = process.env[\"NODE_ENV\"] === \"development\";\n","import { isDevelopment } from \"./environment\";\n\n/** Console style for the prefix, in the blue the Studio uses for its own messages. */\nconst prefixStyle = \"color: #2276fc\";\n\n/**\n * Creates a logger that prefixes messages with the plugin's name and only logs in development builds.\n * Browser consoles show the prefix in blue.\n *\n * @param name - The package name to prefix messages with.\n * @returns Functions that log progress, a warning, or an error, or format a message to throw.\n */\nexport function createLogger(name: string) {\n const prefix = `[${name}]`;\n\n /**\n * Prefixes a message with the package name.\n *\n * @param message - The message.\n * @returns The prefixed message.\n */\n function format(message: string) {\n return `${prefix} ${message}`;\n }\n\n return {\n /**\n * Logs progress worth seeing, such as what a build step did, in development builds only.\n *\n * @param message - What happened.\n */\n info(message: string) {\n if (isDevelopment) console.info(`%c${prefix}%c ${message}`, prefixStyle, \"\");\n },\n /**\n * Logs a warning about something the plugin recovered from, in development builds only.\n *\n * @param message - What happened and what to do about it.\n */\n warn(message: string) {\n if (isDevelopment) console.warn(`%c${prefix}%c ${message}`, prefixStyle, \"\");\n },\n /**\n * Logs an error the plugin couldn't recover from, in development builds only.\n *\n * @param message - What went wrong and what to do about it.\n */\n error(message: string) {\n if (isDevelopment) console.error(`%c${prefix}%c ${message}`, prefixStyle, \"\");\n },\n format,\n };\n}\n","import { createLogger } from \"@repo/lib/logger\";\n\n/** Package name, used as the prefix on every logged message. */\nexport const pluginName = \"@driftime/sanity-plugin-handbook\";\n\n/** The package's logger. */\nexport const logger = createLogger(pluginName);\n\n/** API version for the plugin's queries. */\nexport const apiVersion = \"2026-01-01\";\n\n/** Default title in the Studio's tool menu and at the top of the sidebar. */\nexport const defaultTitle = \"Handbook\";\n\n/** Title shown for documents without one. */\nexport const defaultDocumentTitle = \"Untitled\";\n\n/** Message shown for fields without a description. */\nexport const defaultUndocumentedFieldMessage =\n \"This field isn't documented yet. Ask your development team for guidance.\";\n","import type {\n KeyedSegment,\n PortableTextBlock,\n PortableTextObject,\n PortableTextSpan,\n PortableTextTextBlock,\n SanityDocument,\n} from \"sanity\";\n\n/** Removes a type's index signatures, so a misspelt property is an error rather than `unknown`. */\nexport type Strict<T> = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K] };\n\n/** Array whose items carry the `_key` Sanity gives array members. */\nexport type SanityKeyedArray<T> = (KeyedSegment & T)[];\n\n/**\n * A Handbook guide, written in rich text and shown in the tool.\n *\n * @public\n */\nexport type SanityHandbookGuide = Strict<SanityDocument> & {\n _type: typeof guideTypeName;\n /** Guide title. */\n title: string;\n /** Short description below the guide heading. */\n description?: string;\n /** Portable Text content. */\n content: SanityKeyedArray<PortableTextBlock>;\n};\n\n/** Schema type name of the guide document. */\nexport const guideTypeName = \"handbook.guide\";\n\n/**\n * A group of guides in the sidebar, in order.\n *\n * @public\n */\nexport interface SanityHandbookGuideGroup {\n /** Group title in the sidebar. */\n title: string;\n /** Guides in the group, in order. */\n guides: SanityKeyedArray<SanityHandbookGuide>;\n}\n\n/**\n * The Handbook document, listing the guide groups in sidebar order.\n *\n * @public\n */\nexport type SanityHandbook = Strict<SanityDocument> & {\n _type: typeof handbookTypeName;\n /** Guide groups, in order. */\n groups: SanityKeyedArray<SanityHandbookGuideGroup>;\n};\n\n/** Schema type name of the Handbook document. */\nexport const handbookTypeName = \"handbook.handbook\";\n\n/**\n * An image in a guide, with its caption and alternative text.\n *\n * @public\n */\nexport type SanityHandbookImage = Strict<PortableTextObject> & {\n _type: typeof imageTypeName;\n /** Image asset, reduced by the query to its URL. */\n asset?: { url?: string };\n /** Text shown below the image. */\n caption?: string;\n /** Alternative text. */\n alt?: string;\n};\n\n/** Schema type name of the image block. */\nexport const imageTypeName = \"handbook.image\";\n\n/**\n * A video in a guide, with its caption.\n *\n * @public\n */\nexport type SanityHandbookVideo = Strict<PortableTextObject> & {\n _type: typeof videoTypeName;\n /** Video asset, reduced by the query to its URL. */\n asset?: { url?: string };\n /** Text shown below the video. */\n caption?: string;\n};\n\n/** Schema type name of the video block. */\nexport const videoTypeName = \"handbook.video\";\n\n/**\n * A code block, highlighted for its language.\n *\n * @public\n */\nexport type SanityHandbookCode = Strict<PortableTextObject> & {\n _type: typeof codeTypeName;\n /** Code to display. */\n code?: string;\n /** Language used for syntax highlighting. */\n language?: string;\n};\n\n/** Schema type name of the code block. */\nexport const codeTypeName = \"handbook.code\";\n\n/**\n * Kind of callout, which sets its icon and tone.\n *\n * @public\n */\nexport type SanityHandbookCalloutVariant = \"tip\" | \"info\" | \"warning\";\n\n/**\n * A highlighted message in a guide.\n *\n * @public\n */\nexport type SanityHandbookCallout = Strict<PortableTextObject> & {\n _type: typeof calloutTypeName;\n /** Kind of callout. */\n variant: SanityHandbookCalloutVariant;\n /** Portable Text inside the callout, without inline objects. */\n body: SanityKeyedArray<PortableTextTextBlock<PortableTextSpan>>;\n};\n\n/** Schema type name of the callout block. */\nexport const calloutTypeName = \"handbook.callout\";\n\n/**\n * A divider between sections of a guide.\n *\n * @public\n */\nexport type SanityHandbookHorizontalRule = Strict<PortableTextObject> & {\n _type: typeof horizontalRuleTypeName;\n};\n\n/** Schema type name of the horizontal rule block. */\nexport const horizontalRuleTypeName = \"handbook.horizontalRule\";\n\n/**\n * A link on a run of guide text.\n *\n * @public\n */\nexport type SanityHandbookLink = Strict<PortableTextObject> & {\n _type: \"link\";\n /** Web address the link points to. */\n href?: string;\n};\n","import { guideTypeName, handbookTypeName } from \"@/types\";\n\n/** Document types hidden from the create menu. */\nexport const singletonTypes = new Set<string>([handbookTypeName]);\n\n/** Every Handbook document type, hidden from the create menu for people who can't edit them. */\nexport const documentTypes = new Set<string>([handbookTypeName, guideTypeName]);\n","import type { ComponentProps } from \"react\";\n\nexport type BookTextIconProps = ComponentProps<\"svg\">;\n\nexport function BookTextIcon(props: BookTextIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\" />\n <path d=\"M8 11h8\" />\n <path d=\"M8 7h6\" />\n </svg>\n );\n}\n","/** A value that may be null or undefined. */\ntype Nullable<T> = T | null | undefined;\n\n/**\n * Checks whether a value is present. `false`, blank strings, and empty plain objects count as absent,\n * as does an array with no present elements.\n *\n * @param value - The value to check.\n * @returns True if the value is present.\n */\nexport function isDefined<T>(value: Nullable<T> | false): value is T {\n if (value === undefined || value === null || value === false) return false;\n if (typeof value === \"string\") return value.trim() !== \"\";\n if (Array.isArray(value)) return value.some((element) => isDefined(element));\n\n if (typeof value === \"object\") {\n const prototype = Reflect.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return true;\n\n return Object.keys(value).length > 0;\n }\n\n return true;\n}\n\n/**\n * Converts a string to another case.\n *\n * @param value - The string to convert.\n * @param format - The case to convert to.\n * @returns The converted string.\n */\nexport function convertCase(value: string, format: \"kebab\" | \"snake\" | \"camel\" | \"pascal\" | \"title\" | \"sentence\") {\n const words = value\n .replaceAll(/(?<lower>[a-z0-9])(?<upper>[A-Z])/gu, \"$<lower> $<upper>\")\n .replaceAll(/[-_\\s]+/gu, \" \")\n .trim()\n .toLowerCase();\n\n switch (format) {\n case \"kebab\": {\n return words.replaceAll(/\\s+/gu, \"-\");\n }\n case \"snake\": {\n return words.replaceAll(/\\s+/gu, \"_\");\n }\n case \"camel\": {\n return words.replaceAll(/\\s+(?<character>.)/gu, (_match, character: string) => character.toUpperCase());\n }\n case \"pascal\": {\n return words.replaceAll(/(?:^|\\s+)(?<character>.)/gu, (_match, character: string) => character.toUpperCase());\n }\n case \"title\": {\n return words.replaceAll(/\\b\\w/gu, (character) => character.toUpperCase());\n }\n case \"sentence\": {\n return words.replaceAll(/^(?<character>.)/gu, (character) => character.toUpperCase());\n }\n default: {\n return value;\n }\n }\n}\n\n/**\n * Checks whether a value is an object whose keys can be read.\n *\n * @param value - The value to check.\n * @returns True if the value is an object.\n */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\n/**\n * Reads a nested value by following a path of keys.\n *\n * @param value - The object to read from.\n * @param path - The keys to follow.\n * @returns The value, or undefined when the path doesn't exist.\n */\nexport function readPath(value: unknown, path: string[]) {\n let current: unknown = value;\n\n for (const segment of path) {\n if (!isRecord(current)) return undefined;\n\n current = current[segment];\n }\n\n return current;\n}\n","/** Default sidebar width in pixels, until it's resized. */\nexport const sidebarWidth = 350;\n\n/** Minimum sidebar width in pixels before it collapses to a vertical label. */\nexport const sidebarMinimumWidth = 320;\n\n/** Maximum sidebar width in pixels. */\nexport const sidebarMaximumWidth = 640;\n\n/** Minimum content pane width in pixels. */\nexport const contentMinimumWidth = 320;\n\n/** Share of the space the content pane takes relative to the sidebar. */\nexport const contentFlex = 2.5;\n\n/** Width in pixels of a pane collapsed to a vertical label. */\nexport const collapsedPaneWidth = 51;\n\n/** Estimated sidebar row height in pixels, corrected once rows are measured. */\nexport const sidebarItemHeight = 37;\n\n/** Minimum tool width in pixels before the Studio scrolls horizontally. */\nexport const toolMinimumWidth = 320;\n\n/** Maximum width in pixels of the text column in the content pane. */\nexport const contentWidth = 640;\n\n/** Space in pixels on either side of the text column. */\nexport const contentPaddingInline = 20;\n\n/** Space in pixels above a content panel's heading. */\nexport const contentPaddingBlockStart = 32;\n\n/** Space in pixels below a content panel's last element, so long content doesn't end at the pane's edge. */\nexport const contentPaddingBlockEnd = 220;\n\n/** Vertical spacing in pixels for guide content and content panels. */\nexport const contentSpacing = {\n section: 48,\n paragraph: 16,\n heading: 48,\n media: 24,\n callout: 32,\n blockquote: 32,\n list: 32,\n nestedList: 12,\n rule: 40,\n};\n","import { imageTypeName, videoTypeName } from \"@/types\";\n\n/** Expands an image or video block's asset to just its URL. */\nconst assetUrlFragment = `\"asset\": { \"url\": asset.asset->url }`;\n\n/** Expands the image and video blocks in guide content. */\nconst guideContentFragment = `\n _type == \"${imageTypeName}\" => { ..., ${assetUrlFragment} },\n _type == \"${videoTypeName}\" => { ..., ${assetUrlFragment} }\n`;\n\n/** Expands a guide reference, including the asset URLs in its content. */\nexport const guideFragment = `...@-> {\n ...,\n content[] { ..., ${guideContentFragment} }\n}`;\n","import type { SanityClient } from \"sanity\";\n\n/** GROQ query string that carries the type of its result. */\ntype TypedQuery<T> = string & { readonly __result?: T };\n\n/**\n * Defines a GROQ query typed with its result, so fetches infer the result type.\n *\n * @param query - The GROQ query.\n * @returns The query, typed with its result.\n */\nexport function defineTypedQuery<T>(query: string): TypedQuery<T> {\n return query;\n}\n\n/**\n * Runs a typed query, returning undefined instead of null when nothing matches.\n *\n * @param client - The Sanity client.\n * @param query - The typed query.\n * @returns The result, or undefined when nothing matches.\n */\nexport async function fetchQuery<T>(client: SanityClient, query: TypedQuery<T>) {\n return (await client.fetch<T | null>(query)) ?? undefined;\n}\n","import { guideFragment } from \"@/groq/fragments\";\nimport { defineTypedQuery } from \"@/lib/groq\";\nimport type { SanityHandbook, SanityHandbookGuide } from \"@/types\";\nimport { guideTypeName, handbookTypeName } from \"@/types\";\n\n/** Handbook document with its guide references expanded. */\nexport const handbookQuery = defineTypedQuery<SanityHandbook>(`\n *[_type == \"${handbookTypeName}\"][0] {\n ...,\n groups[] {\n ...,\n guides[] {\n ...,\n ${guideFragment}\n }\n }\n }\n`);\n\n/** Handbook and guide documents, listened to so the tool refetches when they change. */\nexport const handbookDocumentsQuery = defineTypedQuery<SanityHandbook | SanityHandbookGuide>(\n `*[_type == \"${handbookTypeName}\" || _type == \"${guideTypeName}\"]`,\n);\n","import { useEffect, useState } from \"react\";\nimport { useClient } from \"sanity\";\n\nimport { apiVersion } from \"@/config/defaults\";\nimport { handbookDocumentsQuery, handbookQuery } from \"@/groq/documents\";\nimport { fetchQuery } from \"@/lib/groq\";\nimport type { SanityHandbook } from \"@/types\";\n\n/**\n * Fetches the Handbook document with its guides expanded, refetching when any Handbook document changes.\n *\n * @returns The Handbook document, and whether it's still loading.\n */\nexport function useHandbookDocument() {\n const client = useClient({ apiVersion });\n const [handbook, setHandbook] = useState<SanityHandbook | undefined>(undefined);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function fetchHandbook() {\n setHandbook(await fetchQuery(client, handbookQuery));\n setLoading(false);\n }\n\n void fetchHandbook();\n\n const subscription = client.listen(handbookDocumentsQuery).subscribe(() => {\n void fetchHandbook();\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [client]);\n\n return { handbook, loading };\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { createContext, useContext, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { logger } from \"@/config/defaults\";\nimport { useHandbookDocument } from \"@/hooks/use-handbook-document\";\nimport type { SanityHandbookBlockDefinition, SanityHandbookDocumentRole } from \"@/plugin\";\nimport type { SanityHandbook } from \"@/types\";\n\n/** Plugin configuration with every default applied. */\nexport interface HandbookProviderConfig {\n /** Heading at the top of the sidebar. */\n sidebarTitle: string;\n /** Document roles from the plugin configuration. */\n roles: SanityHandbookDocumentRole[];\n /** Custom blocks added by the site. */\n blocks: SanityHandbookBlockDefinition[];\n /** Message shown for fields without a description. */\n undocumentedFieldMessage: string;\n}\n\n/** Provider configuration plus the tab and sidebar state shared by the panes. */\ntype HandbookContextValues = HandbookProviderConfig & {\n /** ID of the selected tab, or undefined when none is selected. */\n activeTab: string | undefined;\n /** Whether the sidebar is expanded. */\n sidebarExpanded: boolean;\n /** Whether the Handbook document is still loading. */\n loading: boolean;\n /** Handbook document fetched from the dataset. */\n handbook: SanityHandbook | undefined;\n /** Selects a tab by ID. */\n setActiveTab: (id: string) => void;\n /** Expands or collapses the sidebar. */\n setSidebarExpanded: (expanded: boolean) => void;\n};\n\nexport type HandbookProviderProps = HandbookProviderConfig & {\n children: ReactNode;\n};\n\nconst HandbookContext = createContext<HandbookContextValues | undefined>(undefined);\n\n/**\n * Reads the Handbook context.\n *\n * @returns The plugin configuration and the shared pane state.\n * @throws When used outside the provider.\n */\nexport function useHandbookContext() {\n const handbookContext = useContext(HandbookContext);\n\n if (!isDefined(handbookContext)) {\n throw new Error(logger.format(\"Handbook context is only available inside the Handbook provider.\"));\n }\n\n return handbookContext;\n}\n\n/**\n * Provides the plugin configuration, the Handbook document, and the tab state shared by the sidebar and\n * content panes.\n *\n * @returns The provider.\n */\nexport function HandbookProvider({\n sidebarTitle,\n roles,\n blocks,\n undocumentedFieldMessage,\n children,\n}: HandbookProviderProps) {\n const [activeTab, setActiveTab] = useState<string | undefined>(undefined);\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const { handbook, loading } = useHandbookDocument();\n\n return (\n <HandbookContext\n value={{\n sidebarTitle,\n roles,\n blocks,\n undocumentedFieldMessage,\n activeTab,\n sidebarExpanded,\n loading,\n handbook,\n setActiveTab,\n setSidebarExpanded,\n }}\n >\n {children}\n </HandbookContext>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { Box, Card, Flex, Layer, LayerProvider, Text, useElementSize, useTheme_v2 } from \"@sanity/ui\";\nimport { useContext } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { PaneContext } from \"sanity/_singletons\";\n\nimport { collapsedPaneWidth } from \"@/config/layout\";\n\nexport type PaneHeaderProps = ComponentProps<\"div\"> & {\n title: string;\n backButton?: ReactNode;\n};\n\nexport function PaneHeader({ title, backButton, style, ...props }: PaneHeaderProps) {\n const { color } = useTheme_v2();\n const pane = useContext(PaneContext);\n const paneSize = useElementSize(pane?.rootElement ?? null);\n\n const collapsed = pane?.collapsed ?? false;\n const isLast = pane?.isLast ?? false;\n const paneHeight = paneSize?.border.height ?? 0;\n const collapsedWidth = paneHeight > 0 ? paneHeight : window.innerHeight;\n const { bg, fg } = color.selectable.default.enabled;\n\n function handleTitleClick() {\n if (collapsed) return;\n pane?.collapse();\n }\n\n function handleLayoutClick() {\n if (!collapsed) return;\n pane?.expand();\n }\n\n return (\n <LayerProvider zOffset={100}>\n <Layer\n data-collapsed={collapsed ? \"\" : undefined}\n style={{ lineHeight: 0, position: \"sticky\", top: 0, ...style }}\n {...props}\n >\n <Card tone=\"inherit\" data-collapsed={collapsed ? \"\" : undefined}>\n <Flex\n direction=\"column\"\n gap={3}\n onClick={handleLayoutClick}\n padding={3}\n sizing=\"border\"\n style={{\n width: collapsed ? collapsedWidth : undefined,\n transform: collapsed ? \"rotate(90deg)\" : undefined,\n transformOrigin: `calc(${collapsedPaneWidth}px / 2)`,\n }}\n >\n <Flex align=\"flex-start\" gap={3}>\n {isDefined(backButton) && <Box flex=\"none\">{backButton}</Box>}\n <Card\n flex={1}\n onClick={handleTitleClick}\n padding={2}\n paddingLeft={isDefined(backButton) ? 1 : 2}\n tabIndex={isLast && !collapsed ? -1 : 0}\n style={{ backgroundColor: bg, minWidth: 0 }}\n __unstable_focusRing\n >\n <Flex align=\"center\" gap={1}>\n <Text\n size={1}\n textOverflow=\"ellipsis\"\n weight=\"semibold\"\n style={{ color: fg, cursor: \"default\", minWidth: 0, outline: \"none\" }}\n >\n {title}\n </Text>\n </Flex>\n </Card>\n </Flex>\n </Flex>\n </Card>\n </Layer>\n </LayerProvider>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { ArrowLeftIcon } from \"@sanity/icons/ArrowLeft\";\nimport { Box, Button, Heading, Stack, Text } from \"@sanity/ui\";\nimport { useContext } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { PaneLayoutContext } from \"sanity/_singletons\";\nimport { PaneContent } from \"sanity/structure\";\n\nimport { PaneHeader } from \"@/components/pane-header\";\nimport { contentPaddingBlockEnd, contentPaddingBlockStart, contentPaddingInline, contentWidth } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\n\nexport type ContentPanelProps = Omit<ComponentProps<typeof PaneContent>, \"id\" | \"title\"> & {\n id: string;\n title: string;\n description?: string;\n children: ReactNode;\n};\n\nexport function ContentPanel({ id, title, description, children, ...props }: ContentPanelProps) {\n const { setSidebarExpanded } = useHandbookContext();\n const paneLayout = useContext(PaneLayoutContext);\n\n return (\n <>\n <PaneHeader\n title={title}\n backButton={\n paneLayout?.collapsed === true && (\n <Button\n aria-label=\"Back\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n onClick={() => {\n setSidebarExpanded(true);\n }}\n />\n )\n }\n />\n <PaneContent id={`panel-${id}`} aria-labelledby={id} overflow=\"auto\" {...props}>\n <Box\n style={{\n maxWidth: contentWidth,\n boxSizing: \"border-box\",\n marginInline: \"auto\",\n paddingInline: contentPaddingInline,\n paddingBlockStart: contentPaddingBlockStart,\n paddingBlockEnd: contentPaddingBlockEnd,\n }}\n >\n <Stack marginBottom={6} gap={5}>\n <Heading as=\"h2\" size={4}>\n {title}\n </Heading>\n {isDefined(description) && (\n <Text size={1} muted>\n {description}\n </Text>\n )}\n </Stack>\n {children}\n </Box>\n </PaneContent>\n </>\n );\n}\n","import { Box, Button, Stack, Text, useClickOutsideEvent } from \"@sanity/ui\";\nimport { Popover } from \"@sanity/ui/popover\";\nimport { useRef } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nexport type FieldHintProps = Omit<ComponentProps<typeof Popover>, \"content\" | \"open\" | \"children\"> & {\n label: string;\n icon: ReactNode;\n open: boolean;\n children: string;\n onOpen: () => void;\n onClose: () => void;\n};\n\nexport function FieldHint({ label, icon, open, children, onOpen, onClose, ...props }: FieldHintProps) {\n const buttonReference = useRef<HTMLButtonElement>(null);\n const popoverReference = useRef<HTMLDivElement>(null);\n\n useClickOutsideEvent(open ? onClose : undefined, () => [buttonReference.current, popoverReference.current]);\n\n return (\n <Popover\n open={open}\n placement=\"top\"\n portal\n radius={2}\n shadow={2}\n content={\n <div ref={popoverReference}>\n <Box padding={3} style={{ maxWidth: 280 }}>\n <Stack gap={3}>\n <Text size={1} weight=\"semibold\">\n {label}\n </Text>\n <Text size={1} muted>\n {children}\n </Text>\n </Stack>\n </Box>\n </div>\n }\n {...props}\n >\n <Button\n ref={buttonReference}\n aria-label={label}\n fontSize={2}\n icon={icon}\n mode=\"bleed\"\n padding={1}\n onClick={open ? onClose : onOpen}\n onPointerEnter={(event) => {\n if (event.pointerType === \"mouse\") onOpen();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"mouse\") onClose();\n }}\n />\n </Popover>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type InfoIconProps = ComponentProps<\"svg\">;\n\nexport function InfoIcon(props: InfoIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type LightbulbIconProps = ComponentProps<\"svg\">;\n\nexport function LightbulbIcon(props: LightbulbIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\" />\n <path d=\"M9 18h6\" />\n <path d=\"M10 22h4\" />\n </svg>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type TriangleAlertIconProps = ComponentProps<\"svg\">;\n\nexport function TriangleAlertIcon(props: TriangleAlertIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import type { ComponentProps, ComponentType } from \"react\";\n\nimport { InfoIcon } from \"@/icons/info\";\nimport { LightbulbIcon } from \"@/icons/lightbulb\";\nimport { TriangleAlertIcon } from \"@/icons/triangle-alert\";\nimport type { SanityHandbookMetadata } from \"@/plugin\";\n\n/** A kind of field hint: the metadata property it comes from and how it's shown. */\ninterface HintKind {\n /** Property in the field's handbook metadata that holds the hint. */\n name: keyof Pick<SanityHandbookMetadata, \"tip\" | \"info\" | \"caution\">;\n /** Heading above the hint, and the icon's accessible label. */\n label: string;\n /** Icon for the hint kind. */\n icon: ComponentType<ComponentProps<\"svg\">>;\n}\n\n/** Hint kinds, in display order. */\nexport const hintKinds: HintKind[] = [\n { name: \"tip\", label: \"Tip\", icon: LightbulbIcon },\n { name: \"info\", label: \"Information\", icon: InfoIcon },\n { name: \"caution\", label: \"Caution\", icon: TriangleAlertIcon },\n];\n","import { defaultIconProps } from \"@repo/lib/icons\";\nimport { isDefined } from \"@repo/lib/utils\";\nimport { Flex } from \"@sanity/ui\";\nimport type { FlexProps } from \"@sanity/ui\";\nimport { useState } from \"react\";\n\nimport { FieldHint } from \"@/components/documentation/hint\";\nimport { hintKinds } from \"@/config/hints\";\nimport type { SanityHandbookMetadata } from \"@/plugin\";\n\nexport type FieldHintsProps = FlexProps & Pick<SanityHandbookMetadata, \"tip\" | \"info\" | \"caution\">;\n\nexport function FieldHints({ tip, info, caution, ...props }: FieldHintsProps) {\n const [openHint, setOpenHint] = useState<string | undefined>(undefined);\n\n const hints = { tip, info, caution };\n\n function closeHint() {\n setOpenHint(undefined);\n }\n\n return (\n <Flex align=\"center\" gap={2} {...props}>\n {hintKinds.flatMap(({ name, label, icon: Icon }) => {\n const hint = hints[name];\n if (!isDefined(hint)) return [];\n\n return (\n <FieldHint\n key={name}\n label={label}\n icon={<Icon {...defaultIconProps} />}\n open={openHint === name}\n onOpen={() => {\n setOpenHint(name);\n }}\n onClose={closeHint}\n >\n {hint}\n </FieldHint>\n );\n })}\n </Flex>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { convertCase } from \"@repo/lib/utils\";\nimport type { ComponentProps, ComponentType, ReactNode } from \"react\";\n\n/**\n * Works out a schema type's label: its Handbook title, then its schema title, then its name in title case.\n *\n * @param type - The schema type or field.\n * @returns The label.\n */\nexport function resolveTitle(type: { name: string; title?: string; handbook?: { title?: string } }) {\n const { name, title, handbook } = type;\n\n return handbook?.title ?? title ?? convertCase(name, \"title\");\n}\n\n/**\n * Works out a schema type's description, preferring its Handbook description and ignoring non-string\n * schema descriptions.\n *\n * @param type - The schema type or field.\n * @returns The description, or undefined when there isn't one.\n */\nexport function resolveDescription(type: { description?: unknown; handbook?: { description?: string } }) {\n const { description, handbook } = type;\n\n return handbook?.description ?? (typeof description === \"string\" ? description : undefined);\n}\n\n/**\n * Gets a schema type's icon as a component, redrawn at the plugin's icon size to match the built-in icons.\n * String icons are ignored.\n *\n * @param type - The schema type.\n * @returns The icon component, or undefined when there isn't one.\n */\nexport function resolveIcon(type: { icon?: ReactNode | ComponentType<ComponentProps<\"svg\">> }) {\n return typeof type.icon === \"function\" ? createSanityIcon(type.icon) : undefined;\n}\n","import { isDefined, isRecord, readPath } from \"@repo/lib/utils\";\nimport type { FieldDefinition, Schema } from \"sanity\";\n\n/** A schema field as Sanity compiles it, with its type resolved to an object. */\ninterface CompiledField {\n /** Field name. */\n name: string;\n /** Resolved type, with its name and base type details. */\n type: { name: string; title?: string; description?: string; fields?: unknown[]; of?: unknown[] };\n /** Title set on an inline object definition. */\n title?: string;\n /** Description set on an inline object definition. */\n description?: string;\n /** Fields defined on an inline object definition. */\n fields?: unknown[];\n /** Members defined on an inline array definition. */\n of?: unknown[];\n /** Handbook documentation for the field. */\n handbook?: FieldDefinition[\"handbook\"];\n}\n\n/** A schema field in the shape the Handbook renders, with its type reduced to a name. */\nexport interface NormalizedField {\n /** Field name. */\n name: string;\n /** Type name. */\n type: string;\n /** Title, falling back to the base type's. */\n title?: string;\n /** Description, falling back to the base type's. */\n description?: string;\n /** Handbook documentation for the field. */\n handbook?: FieldDefinition[\"handbook\"];\n /** Subfields, on object types. */\n fields?: NormalizedField[];\n /** Members, on array types. */\n of?: NormalizedField[];\n}\n\n/** Types whose subfields aren't shown. */\nconst opaqueTypes = new Set([\n \"block\",\n \"boolean\",\n \"crossDatasetReference\",\n \"date\",\n \"datetime\",\n \"file\",\n \"geopoint\",\n \"image\",\n \"number\",\n \"reference\",\n \"slug\",\n \"string\",\n \"text\",\n \"url\",\n]);\n\n/** Fields Sanity adds to its built-in types when compiling the schema. */\nconst inheritedFieldNames: Partial<Record<string, Set<string>>> = {\n block: new Set([\"children\", \"level\", \"listItem\", \"markDefs\", \"style\"]),\n file: new Set([\"asset\", \"media\"]),\n geopoint: new Set([\"alt\", \"lat\", \"lng\"]),\n image: new Set([\"asset\", \"crop\", \"hotspot\", \"media\"]),\n slug: new Set([\"current\", \"source\"]),\n};\n\n/**\n * Checks whether a value is a compiled schema field with a type object.\n *\n * @param value - The value to check.\n * @returns True if the value is a compiled field.\n */\nfunction isCompiledField(value: unknown): value is CompiledField {\n if (!isRecord(value)) return false;\n if (!(\"name\" in value) || !(\"type\" in value)) return false;\n\n return isRecord(value[\"type\"]);\n}\n\n/**\n * Checks whether a value has a `fields` array.\n *\n * @param value - The value to check.\n * @returns True if the value has a `fields` array.\n */\nfunction hasFieldsArray(value: unknown): value is { fields: unknown[] } {\n return isRecord(value) && Array.isArray(value[\"fields\"]);\n}\n\n/**\n * Checks whether a value has an `of` array.\n *\n * @param value - The value to check.\n * @returns True if the value has an `of` array.\n */\nfunction hasOfArray(value: unknown): value is { of: unknown[] } {\n return isRecord(value) && Array.isArray(value[\"of\"]);\n}\n\n/**\n * Reads the type name a value declares.\n *\n * @param value - The value.\n * @returns The type name, or undefined when there isn't one.\n */\nfunction getTypeName(value: unknown) {\n const typeName = readPath(value, [\"type\"]);\n\n return typeof typeName === \"string\" ? typeName : undefined;\n}\n\n/**\n * Reads the parent type name from a compiled schema type.\n *\n * @param resolvedType - The compiled schema type.\n * @returns The parent type name, or undefined when there isn't one.\n */\nfunction getParentTypeName(resolvedType: unknown) {\n const parentName = readPath(resolvedType, [\"type\", \"name\"]);\n\n return isDefined(parentName) ? String(parentName) : undefined;\n}\n\n/**\n * Converts a compiled schema field into the shape the Handbook renders. Types already seen are tracked,\n * so a type that refers to itself doesn't recurse forever.\n *\n * @param field - A compiled field or a plain field definition.\n * @param visited - Type names already seen.\n * @returns The normalised field.\n */\nfunction normalizeField(field: unknown, visited = new Set<string>()) {\n if (isCompiledField(field)) {\n const typeName = field.type.name;\n\n const result: NormalizedField = {\n name: field.name,\n type: typeName,\n title: field.title ?? field.type.title,\n description: field.description ?? field.type.description,\n handbook: field.handbook,\n };\n\n if (!visited.has(typeName)) {\n const shouldTrack = !opaqueTypes.has(typeName) && typeName !== \"object\" && typeName !== \"array\";\n const next = shouldTrack ? new Set([...visited, typeName]) : visited;\n const fieldSource = hasFieldsArray(field) ? field : field.type;\n const ofSource = hasOfArray(field) ? field : field.type;\n\n if (hasFieldsArray(fieldSource)) {\n result.fields = fieldSource.fields.map((subfield) => normalizeField(subfield, next));\n }\n if (hasOfArray(ofSource)) result.of = ofSource.of.map((member) => normalizeField(member, next));\n }\n\n return result;\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion -- An already normalised value carries no marker to narrow on.\n return field as NormalizedField;\n}\n\n/**\n * Lists the fields a custom type adds to an opaque base type, leaving out the base type's own.\n *\n * @param resolvedType - The compiled or normalised schema type.\n * @param parentName - The opaque base type's name.\n * @returns The custom fields, or undefined when there are none.\n */\nfunction resolveCustomFields(resolvedType: unknown, parentName: string) {\n if (!hasFieldsArray(resolvedType)) return undefined;\n\n const inherited = inheritedFieldNames[parentName];\n\n const customFields = resolvedType.fields\n .map((field: unknown) => normalizeField(field))\n .filter((field) => !isDefined(inherited) || !inherited.has(field.name));\n\n return isDefined(customFields) ? customFields : undefined;\n}\n\n/**\n * Normalises a list of raw fields.\n *\n * @param items - The raw fields.\n * @returns The normalised fields, or undefined when there are none.\n */\nfunction resolveNormalizedFields(items: unknown[]) {\n const normalized = items.map((item) => normalizeField(item));\n\n return isDefined(normalized) ? normalized : undefined;\n}\n\n/**\n * Normalises array members, leaving out opaque types.\n *\n * @param members - The raw array members.\n * @returns The normalised members, or undefined when there are none.\n */\nfunction resolveNormalizedMembers(members: unknown[]) {\n const normalized = members.map((member) => normalizeField(member)).filter((member) => !opaqueTypes.has(member.type));\n\n return isDefined(normalized) ? normalized : undefined;\n}\n\n/**\n * Works out a value's parent type name, looking it up in the schema when the value only names its type.\n *\n * @param value - The value.\n * @param schema - The Sanity schema.\n * @returns The parent type name, or undefined when there isn't one.\n */\nfunction resolveParentName(value: unknown, schema: Schema) {\n const direct = getParentTypeName(value);\n if (isDefined(direct)) return direct;\n\n const typeName = getTypeName(value);\n if (!isDefined(typeName)) return undefined;\n\n const resolvedType = schema.get(typeName);\n return isDefined(resolvedType) ? getParentTypeName(resolvedType) : undefined;\n}\n\n/**\n * Works out the fields a value shows, whether it holds them directly, has array members that do, or\n * names a type that does.\n *\n * @param value - The value.\n * @param schema - The Sanity schema.\n * @returns The fields, or undefined when there are none.\n */\nfunction resolveFields(value: unknown, schema: Schema) {\n if (hasFieldsArray(value)) {\n const parentName = resolveParentName(value, schema);\n if (isDefined(parentName) && opaqueTypes.has(parentName)) return resolveCustomFields(value, parentName);\n\n return resolveNormalizedFields(value.fields);\n }\n\n if (hasOfArray(value)) {\n const members = value.of;\n\n if (members.length === 1) {\n const [member] = members;\n const normalized = normalizeField(member);\n\n if (opaqueTypes.has(normalized.type)) return undefined;\n\n if (hasFieldsArray(normalized)) {\n const parentName = resolveParentName(normalized, schema);\n if (isDefined(parentName) && opaqueTypes.has(parentName)) return resolveCustomFields(normalized, parentName);\n\n return resolveNormalizedFields(normalized.fields);\n }\n\n const memberType = schema.get(normalized.type);\n if (isDefined(memberType)) return resolveFields(memberType, schema);\n }\n\n return resolveNormalizedMembers(members);\n }\n\n return undefined;\n}\n\n/**\n * Works out a field's visible subfields by looking through the schema.\n *\n * @param field - The field.\n * @param schema - The Sanity schema.\n * @returns The subfields, or undefined when there are none.\n */\nexport function getSubfields(field: FieldDefinition | NormalizedField, schema: Schema) {\n if (opaqueTypes.has(field.type)) return undefined;\n\n const directFields = resolveFields(field, schema);\n if (isDefined(directFields)) return directFields;\n\n const resolvedType = schema.get(field.type);\n if (!isDefined(resolvedType)) return undefined;\n\n const parentName = getParentTypeName(resolvedType);\n if (isDefined(parentName) && opaqueTypes.has(parentName)) {\n return resolveCustomFields(resolvedType, parentName);\n }\n\n return resolveFields(resolvedType, schema);\n}\n","import { convertCase, isDefined } from \"@repo/lib/utils\";\nimport { ChevronDownIcon } from \"@sanity/icons/ChevronDown\";\nimport { ChevronRightIcon } from \"@sanity/icons/ChevronRight\";\nimport { Box, Card, Flex, Stack, Text } from \"@sanity/ui\";\nimport type { StackProps } from \"@sanity/ui\";\nimport { useState } from \"react\";\nimport type { FieldDefinition } from \"sanity\";\nimport { useSchema } from \"sanity\";\n\nimport { FieldHints } from \"@/components/documentation/hints\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { resolveDescription, resolveTitle } from \"@/lib/display\";\nimport type { NormalizedField } from \"@/lib/schema\";\nimport { getSubfields } from \"@/lib/schema\";\n\nexport type DocumentedFieldProps = StackProps & {\n field: FieldDefinition | NormalizedField;\n ancestors?: Set<string>;\n};\n\n/** Shared empty set, so the default prop keeps the same reference between renders. */\nconst noAncestors = new Set<string>();\n\nexport function DocumentedField({ field, ancestors = noAncestors, ...props }: DocumentedFieldProps) {\n const schema = useSchema();\n const { undocumentedFieldMessage } = useHandbookContext();\n const [expanded, setExpanded] = useState(false);\n\n const effectiveTitle = resolveTitle(field);\n const effectiveDescription = resolveDescription(field) ?? undocumentedFieldMessage;\n\n const { example, tip, info, caution } = field.handbook ?? {};\n const hasHints = isDefined([tip, info, caution]);\n\n const isCycle = ancestors.has(field.type);\n const subfields = isCycle ? undefined : getSubfields(field, schema);\n const hasSubfields = isDefined(subfields);\n\n return (\n <Stack gap={2} {...props}>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1} gap={2}>\n <Box flex={1}>\n <Flex align=\"center\" gap={2}>\n <Text size={1} weight=\"medium\">\n {effectiveTitle}\n </Text>\n <Text size={0} muted style={{ marginTop: 2 }}>\n {field.type}\n </Text>\n </Flex>\n </Box>\n {hasHints && <FieldHints tip={tip} info={info} caution={caution} />}\n </Flex>\n {isDefined(effectiveDescription) && (\n <Text size={1} muted>\n {effectiveDescription}\n </Text>\n )}\n {isDefined(example) && (\n <Box marginTop={1}>\n <Text size={1} muted style={{ fontStyle: \"italic\" }}>\n e.g. {example}\n </Text>\n </Box>\n )}\n </Stack>\n {isCycle && (\n <Box marginTop={2}>\n <Text size={1} muted style={{ fontStyle: \"italic\" }}>\n See {convertCase(field.type, \"title\")} above.\n </Text>\n </Box>\n )}\n {hasSubfields && (\n <>\n <Card\n as=\"button\"\n padding={3}\n radius={2}\n sizing=\"border\"\n tone=\"transparent\"\n onClick={() => {\n setExpanded(!expanded);\n }}\n style={{ marginTop: 16, textAlign: \"left\", border: \"none\", cursor: \"pointer\" }}\n >\n <Flex align=\"center\" gap={2}>\n <Text size={0}>{expanded ? <ChevronDownIcon /> : <ChevronRightIcon />}</Text>\n <Text size={1} muted weight=\"medium\">\n {subfields.length} subfield{subfields.length === 1 ? \"\" : \"s\"}\n </Text>\n </Flex>\n </Card>\n {expanded && (\n <Box\n style={{\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 16,\n borderLeft: \"1px solid var(--card-border-color)\",\n }}\n >\n <Stack gap={5}>\n {subfields.map((subfield) => (\n <DocumentedField\n key={subfield.name}\n field={subfield}\n ancestors={new Set([...ancestors, field.type])}\n />\n ))}\n </Stack>\n </Box>\n )}\n </>\n )}\n </Stack>\n );\n}\n","import { DocumentedField } from \"@/components/documentation/field\";\nimport { contentSpacing } from \"@/config/layout\";\nimport { resolveDescription, resolveIcon, resolveTitle } from \"@/lib/display\";\nimport type { SanityHandbookDocumentRole } from \"@/plugin\";\n\n/**\n * Builds a sidebar section for each document role.\n *\n * @param roles - The configured document roles.\n * @returns One section per role, with an entry per document type.\n */\nexport function documentTypesSections(roles: SanityHandbookDocumentRole[]) {\n return roles.map(({ title, documents }) => ({\n title,\n entries: documents.map((document) => ({\n id: document.name,\n title: resolveTitle(document),\n description: resolveDescription(document),\n icon: resolveIcon(document),\n render: () => (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: contentSpacing.section }}>\n {document.fields.map((field) => (\n <DocumentedField key={field.name} field={field} />\n ))}\n </div>\n ),\n })),\n }));\n}\n","import type { ComponentProps } from \"react\";\n\nexport type LayoutGridIconProps = ComponentProps<\"svg\">;\n\nexport function LayoutGridIcon(props: LayoutGridIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\" />\n </svg>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { ChevronRightIcon } from \"@sanity/icons/ChevronRight\";\nimport { Box, Card, Flex, Stack, Text } from \"@sanity/ui\";\n\nimport { contentSpacing } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { resolveDescription, resolveIcon, resolveTitle } from \"@/lib/display\";\n\nexport function DocumentTypesOverview() {\n const { roles, setActiveTab, setSidebarExpanded } = useHandbookContext();\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: contentSpacing.section }}>\n {roles.map((role) => {\n const { title, description, documents } = role;\n\n return (\n <Stack key={title} gap={2}>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n </Flex>\n {isDefined(description) && (\n <Text size={1} muted>\n {description}\n </Text>\n )}\n </Stack>\n <Box marginTop={1}>\n <Stack gap={2}>\n {documents.map((document) => {\n const Icon = resolveIcon(document);\n const documentDescription = resolveDescription(document);\n\n return (\n <Card\n key={document.name}\n as=\"button\"\n padding={3}\n radius={2}\n sizing=\"border\"\n tone=\"inherit\"\n onClick={() => {\n setActiveTab(document.name);\n setSidebarExpanded(false);\n }}\n style={{\n width: \"calc(100% + 24px)\",\n marginLeft: \"-12px\",\n textAlign: \"left\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n >\n <Flex align=\"center\" gap={3}>\n <Box flex={1}>\n <Stack gap={3}>\n <Flex align=\"center\" gap={2} style={{ marginLeft: \"-4px\" }}>\n {isDefined(Icon) && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ width: 25, height: 25, color: \"var(--card-icon-color)\" }}\n >\n <Icon />\n </Flex>\n )}\n <Text size={1} weight=\"medium\">\n {resolveTitle(document)}\n </Text>\n </Flex>\n {isDefined(documentDescription) && (\n <Box paddingBottom={1}>\n <Text size={1} muted>\n {documentDescription}\n </Text>\n </Box>\n )}\n </Stack>\n </Box>\n <Box flex=\"none\" style={{ opacity: 0.5 }}>\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n </Flex>\n </Card>\n );\n })}\n </Stack>\n </Box>\n </Stack>\n );\n })}\n </div>\n );\n}\n","import { defaultIconProps } from \"@repo/lib/icons\";\nimport { Flex, Stack, Text } from \"@sanity/ui\";\n\nimport { hintKinds } from \"@/config/hints\";\nimport { contentSpacing } from \"@/config/layout\";\n\n/** What each hint kind means, shown next to its icon as a key. */\nconst hintDescriptions = {\n tip: \"Tips and suggested practices for people editing content.\",\n info: \"More detail about how and where the field is used.\",\n caution: \"Warnings about restrictions or problems the field can cause.\",\n} satisfies Record<(typeof hintKinds)[number][\"name\"], string>;\n\nexport function HowToUse() {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: contentSpacing.section }}>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Navigating the Handbook\n </Text>\n </Flex>\n <Text size={1} muted>\n The sidebar lists everything in the Handbook: these introductory pages first, then the document types you can\n create, grouped by their role on the site, and then any guides your team has written. Select an entry to open\n it here.\n </Text>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Understanding Fields\n </Text>\n </Flex>\n <Text size={1} muted>\n Selecting a document type lists its fields, with each field’s name, the kind of value it holds, and what it’s\n for. This documentation is generated from the content model, so it always matches what you see in the editor.\n </Text>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Hints and Warnings\n </Text>\n </Flex>\n <Text size={1} muted>\n Icons next to a field’s name hold extra guidance that would make its description too long. Hover over or click\n an icon to read it, and use the key below to see what each icon means.\n </Text>\n <Stack gap={3} marginTop={2}>\n {hintKinds.map(({ name, icon: Icon }) => (\n <Flex key={name} align=\"center\" gap={3}>\n <Flex align=\"center\" flex=\"none\" style={{ fontSize: \"16px\", color: \"var(--card-icon-color)\" }}>\n <Icon {...defaultIconProps} />\n </Flex>\n <Text size={1} muted>\n {hintDescriptions[name]}\n </Text>\n </Flex>\n ))}\n </Stack>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Nested Fields\n </Text>\n </Flex>\n <Text size={1} muted>\n Some fields contain subfields, such as a content block with a heading and body text. A button below the\n description shows how many there are and expands to list them, each documented like any other field.\n </Text>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Guides\n </Text>\n </Flex>\n <Text size={1} muted>\n Below the document types, you may find guides written by your team rather than generated from the content\n model. They cover things a field description can’t, such as house style, editorial process, and how everything\n fits together.\n </Text>\n </Stack>\n </div>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\n\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { LayoutGridIcon } from \"@/icons/layout-grid\";\nimport { DocumentTypesOverview } from \"@/pages/document-types-overview\";\nimport { HowToUse } from \"@/pages/how-to-use\";\n\n/**\n * Builds the section for the plugin's introductory pages.\n *\n * @returns One section listing the built-in pages.\n */\nexport function gettingStartedSections() {\n return [\n {\n title: \"Getting Started\",\n entries: [\n {\n id: \"how-to-use-this-handbook\",\n title: \"How to use the Handbook\",\n description:\n \"How to find your way around the Handbook, read the documentation for each field, and understand its examples, hints, and subfields.\",\n icon: createSanityIcon(BookTextIcon),\n render: () => <HowToUse />,\n },\n {\n id: \"document-types\",\n title: \"Document Types\",\n description:\n \"A list of every document type, grouped by role. Select a document type to see its fields, descriptions, and examples.\",\n icon: createSanityIcon(LayoutGridIcon),\n render: () => <DocumentTypesOverview />,\n },\n ],\n },\n ];\n}\n","import { defaultIconProps } from \"@repo/lib/icons\";\nimport { Box, Card, Flex, Text } from \"@sanity/ui\";\nimport type { CardProps, CardTone } from \"@sanity/ui\";\nimport type { ComponentProps, ComponentType, ReactNode } from \"react\";\n\nimport { InfoIcon } from \"@/icons/info\";\nimport { LightbulbIcon } from \"@/icons/lightbulb\";\nimport { TriangleAlertIcon } from \"@/icons/triangle-alert\";\nimport type { SanityHandbookCalloutVariant } from \"@/types\";\n\n/** Icon and card tone for a callout variant. */\ninterface CalloutVariantStyle {\n /** Icon for the variant. */\n icon: ComponentType<ComponentProps<\"svg\">>;\n /** Card tone for the variant. */\n tone: CardTone;\n}\n\nexport type CalloutContentProps = Omit<CardProps, \"tone\"> & {\n variant: SanityHandbookCalloutVariant;\n children: ReactNode;\n};\n\n/** Icon and tone for each callout variant. */\nconst presentation: Record<SanityHandbookCalloutVariant, CalloutVariantStyle> = {\n tip: { icon: LightbulbIcon, tone: \"positive\" },\n info: { icon: InfoIcon, tone: \"primary\" },\n warning: { icon: TriangleAlertIcon, tone: \"caution\" },\n};\n\nexport function CalloutContent({ variant, children, ...props }: CalloutContentProps) {\n const { icon: Icon, tone } = presentation[variant];\n\n return (\n <Card padding={4} radius={2} tone={tone} {...props}>\n <Flex align=\"flex-start\" gap={3}>\n <Box flex=\"none\" style={{ marginTop: \"-2px\", fontSize: \"16px\", color: \"var(--card-icon-color)\" }}>\n <Icon {...defaultIconProps} />\n </Box>\n <Text size={1} style={{ color: \"var(--card-icon-color)\" }}>\n {children}\n </Text>\n </Flex>\n </Card>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type PortableCodeProps = ComponentProps<\"code\">;\n\nexport function PortableCode({ style, ...props }: PortableCodeProps) {\n return (\n <code\n style={{\n paddingBlock: 2,\n paddingInline: 4,\n fontSize: \"0.875em\",\n backgroundColor: \"var(--card-code-bg-color)\",\n borderRadius: 2,\n ...style,\n }}\n {...props}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type PortableLinkProps = ComponentProps<\"a\">;\n\nexport function PortableLink({ children, style, ...props }: PortableLinkProps) {\n return (\n <a target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: \"var(--card-link-fg-color)\", ...style }} {...props}>\n {children}\n </a>\n );\n}\n","import { PortableText } from \"@portabletext/react\";\nimport type { PortableTextComponents, PortableTextMarkComponentProps } from \"@portabletext/react\";\nimport type { ComponentProps } from \"react\";\n\nimport { CalloutContent } from \"@/components/blocks/callout/content\";\nimport { PortableCode } from \"@/components/content/portable/code\";\nimport { PortableLink } from \"@/components/content/portable/link\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookCallout, SanityHandbookLink } from \"@/types\";\n\nexport type CalloutBlockProps = Omit<ComponentProps<typeof CalloutContent>, \"variant\" | \"children\"> & {\n value: SanityHandbookCallout;\n};\n\n/** Overrides for callout text, which uses the card's own text style and doesn't wrap paragraphs. */\nconst components: PortableTextComponents = {\n block: { normal: ({ children }) => <>{children}</> },\n marks: {\n code: ({ children }) => <PortableCode>{children}</PortableCode>,\n link: ({ children, value }: PortableTextMarkComponentProps<SanityHandbookLink>) => (\n <PortableLink href={value?.href}>{children}</PortableLink>\n ),\n },\n};\n\nexport function CalloutBlock({ value, style, ...props }: CalloutBlockProps) {\n return (\n <CalloutContent variant={value.variant} style={{ marginBlock: contentSpacing.callout, ...style }} {...props}>\n <PortableText value={value.body} components={components} />\n </CalloutContent>\n );\n}\n","import { Card } from \"@sanity/ui\";\nimport type { CardProps } from \"@sanity/ui\";\nimport { Code } from \"@sanity/ui/code\";\n\nexport type CodeContentProps = CardProps & {\n code: string;\n language?: string;\n};\n\nexport function CodeContent({ code, language, style, ...props }: CodeContentProps) {\n return (\n <Card padding={4} radius={2} tone=\"transparent\" style={{ overflowX: \"auto\", ...style }} {...props}>\n <Code size={1} language={language}>\n {code}\n </Code>\n </Card>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { CodeContent } from \"@/components/blocks/code/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookCode } from \"@/types\";\n\nexport type CodeBlockProps = Omit<ComponentProps<typeof CodeContent>, \"code\" | \"language\"> & {\n value: SanityHandbookCode;\n};\n\nexport function CodeBlock({ value, style, ...props }: CodeBlockProps) {\n if (!isDefined(value.code)) return null;\n\n return (\n <CodeContent\n code={value.code}\n language={value.language}\n style={{ marginBlock: contentSpacing.media, ...style }}\n {...props}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type HorizontalRuleContentProps = ComponentProps<\"hr\">;\n\nexport function HorizontalRuleContent({ style, ...props }: HorizontalRuleContentProps) {\n return <hr style={{ border: \"none\", borderTop: \"1px solid var(--card-border-color)\", ...style }} {...props} />;\n}\n","import type { ComponentProps } from \"react\";\n\nimport { HorizontalRuleContent } from \"@/components/blocks/horizontal-rule/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookHorizontalRule } from \"@/types\";\n\nexport type HorizontalRuleBlockProps = ComponentProps<typeof HorizontalRuleContent> & {\n value: SanityHandbookHorizontalRule;\n};\n\nexport function HorizontalRuleBlock({ value: _value, style, ...props }: HorizontalRuleBlockProps) {\n return <HorizontalRuleContent style={{ marginBlock: contentSpacing.rule, ...style }} {...props} />;\n}\n","import { Box, Text } from \"@sanity/ui\";\nimport type { BoxProps } from \"@sanity/ui\";\n\nexport type CaptionProps = BoxProps & {\n children: string;\n};\n\nexport function Caption({ children, ...props }: CaptionProps) {\n return (\n <Box marginTop={3} {...props}>\n <Text size={1} muted style={{ fontStyle: \"italic\" }}>\n {children}\n </Text>\n </Box>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { Caption } from \"@/components/caption\";\n\nexport type ImageContentProps = ComponentProps<\"div\"> & {\n url: string;\n alt?: string;\n caption?: string;\n};\n\nexport function ImageContent({ url, alt, caption, ...props }: ImageContentProps) {\n return (\n <div {...props}>\n <img src={url} alt={alt ?? \"\"} style={{ display: \"block\", maxWidth: \"100%\", borderRadius: 4 }} />\n {isDefined(caption) && <Caption>{caption}</Caption>}\n </div>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { ImageContent } from \"@/components/blocks/image/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookImage } from \"@/types\";\n\nexport type ImageBlockProps = Omit<ComponentProps<typeof ImageContent>, \"url\" | \"alt\" | \"caption\"> & {\n value: SanityHandbookImage;\n};\n\nexport function ImageBlock({ value, style, ...props }: ImageBlockProps) {\n if (!isDefined(value.asset?.url)) return null;\n\n return (\n <ImageContent\n url={value.asset.url}\n alt={value.alt}\n caption={value.caption}\n style={{ marginBlock: contentSpacing.media, ...style }}\n {...props}\n />\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { Caption } from \"@/components/caption\";\n\nexport type VideoContentProps = ComponentProps<\"div\"> & {\n url: string;\n caption?: string;\n};\n\nexport function VideoContent({ url, caption, ...props }: VideoContentProps) {\n return (\n <div {...props}>\n <video\n src={url}\n controls\n style={{ display: \"block\", maxWidth: \"100%\", borderRadius: 4, WebkitTransform: \"translateZ(0)\" }}\n >\n <track kind=\"captions\" label={caption ?? \"Video\"} />\n </video>\n {isDefined(caption) && <Caption>{caption}</Caption>}\n </div>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { VideoContent } from \"@/components/blocks/video/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookVideo } from \"@/types\";\n\nexport type VideoBlockProps = Omit<ComponentProps<typeof VideoContent>, \"url\" | \"caption\"> & {\n value: SanityHandbookVideo;\n};\n\nexport function VideoBlock({ value, style, ...props }: VideoBlockProps) {\n if (!isDefined(value.asset?.url)) return null;\n\n return (\n <VideoContent\n url={value.asset.url}\n caption={value.caption}\n style={{ marginBlock: contentSpacing.media, ...style }}\n {...props}\n />\n );\n}\n","import { Box, Text } from \"@sanity/ui\";\nimport type { BoxProps } from \"@sanity/ui\";\n\nexport type PortableBlockquoteProps = BoxProps & {\n muted?: boolean;\n};\n\nexport function PortableBlockquote({ muted, children, style, ...props }: PortableBlockquoteProps) {\n return (\n <Box paddingY={1} paddingLeft={3} style={{ borderLeft: \"2px solid var(--card-border-color)\", ...style }} {...props}>\n <Text size={1} muted={muted} style={{ fontStyle: \"italic\" }}>\n {children}\n </Text>\n </Box>\n );\n}\n","import { Text } from \"@sanity/ui\";\nimport type { TextProps } from \"@sanity/ui\";\n\nexport type PortableHeadingProps = Omit<TextProps, \"as\">;\n\nexport function PortableHeading(props: PortableHeadingProps) {\n return <Text as=\"h2\" size={1} weight=\"medium\" {...props} />;\n}\n","import type { CSSProperties, ComponentProps } from \"react\";\n\n// `ref` is omitted because the rendered element varies, so no single ref type fits.\nexport type PortableListProps = Omit<ComponentProps<\"ul\">, \"ref\"> & {\n ordered?: boolean;\n};\n\nexport function PortableList({ ordered = false, style, ...props }: PortableListProps) {\n const listStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n margin: 0,\n paddingLeft: \"1.25em\",\n ...style,\n };\n\n if (ordered) return <ol style={listStyle} {...props} />;\n\n return <ul style={listStyle} {...props} />;\n}\n","import { Text } from \"@sanity/ui\";\nimport type { TextProps } from \"@sanity/ui\";\n\nexport type PortableParagraphProps = TextProps;\n\nexport function PortableParagraph(props: PortableParagraphProps) {\n return <Text size={1} {...props} />;\n}\n","import { PortableText as PortableTextReact } from \"@portabletext/react\";\nimport type {\n PortableTextComponentProps,\n PortableTextComponents,\n PortableTextMarkComponentProps,\n PortableTextTypeComponent,\n PortableTextTypeComponentProps,\n} from \"@portabletext/react\";\nimport type { ComponentProps, ComponentType } from \"react\";\nimport type { PortableTextBlock, PortableTextListBlock, PortableTextObject } from \"sanity\";\n\nimport { CalloutBlock } from \"@/components/blocks/callout/block\";\nimport { CodeBlock } from \"@/components/blocks/code/block\";\nimport { HorizontalRuleBlock } from \"@/components/blocks/horizontal-rule/block\";\nimport { ImageBlock } from \"@/components/blocks/image/block\";\nimport { VideoBlock } from \"@/components/blocks/video/block\";\nimport { PortableBlockquote } from \"@/components/content/portable/blockquote\";\nimport { PortableCode } from \"@/components/content/portable/code\";\nimport { PortableHeading } from \"@/components/content/portable/heading\";\nimport { PortableLink } from \"@/components/content/portable/link\";\nimport { PortableList } from \"@/components/content/portable/list\";\nimport { PortableParagraph } from \"@/components/content/portable/paragraph\";\nimport { contentSpacing } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport type { SanityHandbookLink, SanityKeyedArray } from \"@/types\";\nimport { calloutTypeName, codeTypeName, horizontalRuleTypeName, imageTypeName, videoTypeName } from \"@/types\";\n\n/**\n * Works out the vertical space around a list, which is smaller for nested lists.\n *\n * @param level - Nesting depth, starting at 1.\n * @returns The space in pixels.\n */\nfunction listSpacing(level: number) {\n return level > 1 ? contentSpacing.nestedList : contentSpacing.list;\n}\n\n/**\n * Components for each block style, mark, and embedded type in a guide. Marks and list items not listed\n * here are left to the library's defaults on purpose.\n */\nconst components: PortableTextComponents = {\n block: {\n h2: ({ children }) => (\n <PortableHeading style={{ marginBlockStart: contentSpacing.heading, marginBlockEnd: 4 }}>\n {children}\n </PortableHeading>\n ),\n normal: ({ children }) => (\n <PortableParagraph muted style={{ marginBlock: contentSpacing.paragraph }}>\n {children}\n </PortableParagraph>\n ),\n blockquote: ({ children }) => (\n <PortableBlockquote muted style={{ marginBlock: contentSpacing.blockquote }}>\n {children}\n </PortableBlockquote>\n ),\n },\n list: {\n bullet: ({ children, value }: PortableTextComponentProps<PortableTextListBlock>) => (\n <PortableParagraph muted style={{ marginBlock: listSpacing(value.level) }}>\n <PortableList>{children}</PortableList>\n </PortableParagraph>\n ),\n number: ({ children, value }: PortableTextComponentProps<PortableTextListBlock>) => (\n <PortableParagraph muted style={{ marginBlock: listSpacing(value.level) }}>\n <PortableList ordered>{children}</PortableList>\n </PortableParagraph>\n ),\n },\n marks: {\n code: ({ children }) => <PortableCode>{children}</PortableCode>,\n link: ({ children, value }: PortableTextMarkComponentProps<SanityHandbookLink>) => (\n <PortableLink href={value?.href}>{children}</PortableLink>\n ),\n },\n};\n\n/**\n * Wraps a block component for Portable Text, passing only the block's value. Otherwise the library's\n * other props would reach the DOM.\n *\n * @param Component - The block component.\n * @returns A component Portable Text can render the type with.\n */\nfunction blockRenderer<Value extends PortableTextObject>(Component: ComponentType<{ value: Value }>) {\n return function Block({ value }: PortableTextTypeComponentProps<Value>) {\n return <Component value={value} />;\n };\n}\n\nexport type PortableTextProps = ComponentProps<\"div\"> & {\n value: SanityKeyedArray<PortableTextBlock>;\n};\n\nexport function PortableText({ value, ...props }: PortableTextProps) {\n const { blocks } = useHandbookContext();\n\n const types: Record<string, PortableTextTypeComponent> = {\n [imageTypeName]: blockRenderer(ImageBlock),\n [videoTypeName]: blockRenderer(VideoBlock),\n [codeTypeName]: blockRenderer(CodeBlock),\n [calloutTypeName]: blockRenderer(CalloutBlock),\n [horizontalRuleTypeName]: blockRenderer(HorizontalRuleBlock),\n };\n for (const block of blocks) types[block.schema.name] = blockRenderer(block.component);\n\n return (\n <div {...props}>\n <PortableTextReact value={value} components={{ ...components, types }} />\n </div>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type BookOpenTextIconProps = ComponentProps<\"svg\">;\n\nexport function BookOpenTextIcon(props: BookOpenTextIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 7v14\" />\n <path d=\"M16 12h2\" />\n <path d=\"M16 8h2\" />\n <path d=\"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\" />\n <path d=\"M6 12h2\" />\n <path d=\"M6 8h2\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\n\nimport { PortableText } from \"@/components/content/portable-text\";\nimport { BookOpenTextIcon } from \"@/icons/book-open-text\";\nimport type { SanityHandbook } from \"@/types\";\n\n/**\n * Builds a sidebar section for each guide group.\n *\n * @param handbook - The Handbook document.\n * @returns One section per group, with an entry per guide.\n */\nexport function guidesSections(handbook: SanityHandbook) {\n return handbook.groups.map(({ title, guides }) => ({\n title,\n entries: guides.map((guide) => ({\n id: guide._key,\n title: guide.title,\n description: guide.description,\n icon: createSanityIcon(BookOpenTextIcon),\n render: () => <PortableText value={guide.content} />,\n })),\n }));\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentType, ReactNode } from \"react\";\n\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { documentTypesSections } from \"@/sections/document-types\";\nimport { gettingStartedSections } from \"@/sections/getting-started\";\nimport { guidesSections } from \"@/sections/guides\";\n\n/** A page in the sidebar and the panel it opens. */\ninterface Entry {\n /** ID shared by the sidebar row and its panel. */\n id: string;\n /** Label in the sidebar and heading of the panel. */\n title: string;\n /** Description below the panel heading. */\n description?: string;\n /** Icon next to the sidebar label. */\n icon?: ComponentType;\n /** Renders the panel's content, only while the entry is selected. */\n render: () => ReactNode;\n}\n\n/** A sidebar heading and the entries below it. */\ninterface Section {\n /** Heading text. */\n title: string;\n /** Entries in the section. */\n entries: Entry[];\n}\n\n/**\n * Lists every page in the Handbook, in sidebar order.\n *\n * @returns The built-in pages, the configured document roles, and the guide groups, as sections.\n */\nexport function useSections(): Section[] {\n const { roles, handbook, loading } = useHandbookContext();\n\n return [\n ...gettingStartedSections(),\n ...documentTypesSections(roles),\n ...(loading || !isDefined(handbook) ? [] : guidesSections(handbook)),\n ];\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\nimport { Pane } from \"sanity/structure\";\n\nimport { ContentPanel } from \"@/components/content-panel\";\nimport { contentFlex, contentMinimumWidth } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { useSections } from \"@/hooks/use-sections\";\n\nexport type ContentProps = Omit<ComponentProps<typeof Pane>, \"id\">;\n\nexport function Content(props: ContentProps) {\n const { activeTab } = useHandbookContext();\n const sections = useSections();\n\n const entry = sections.flatMap((section) => section.entries).find(({ id }) => id === activeTab);\n\n return (\n <Pane id=\"handbook-content\" flex={contentFlex} minWidth={contentMinimumWidth} {...props}>\n {isDefined(entry) && (\n <ContentPanel id={entry.id} title={entry.title} description={entry.description}>\n {entry.render()}\n </ContentPanel>\n )}\n </Pane>\n );\n}\n","import { Box, Card, Text } from \"@sanity/ui\";\nimport type { ComponentProps } from \"react\";\n\nexport type SidebarHeadingProps = ComponentProps<typeof Box> & {\n title: string;\n};\n\nexport function SidebarHeading({ title, ...props }: SidebarHeadingProps) {\n return (\n <Box paddingY={2} {...props}>\n <Card padding={2}>\n <Text size={1} muted textOverflow=\"ellipsis\" weight=\"semibold\" style={{ cursor: \"default\", outline: \"none\" }}>\n {title}\n </Text>\n </Card>\n </Box>\n );\n}\n","import { ChevronRightIcon } from \"@sanity/icons/ChevronRight\";\nimport { Box, Text } from \"@sanity/ui\";\nimport type { CSSProperties, ComponentProps, ComponentType } from \"react\";\nimport { PreviewCard, SanityDefaultPreview } from \"sanity\";\n\nimport { useHandbookContext } from \"@/contexts/handbook\";\n\nexport type SidebarTabProps = Omit<ComponentProps<typeof PreviewCard>, \"as\" | \"id\" | \"style\"> & {\n id: string;\n label: string;\n icon?: ComponentType;\n style?: CSSProperties;\n};\n\nexport function SidebarTab({ id, label, icon: Icon, style, ...props }: SidebarTabProps) {\n const { activeTab, setActiveTab, setSidebarExpanded } = useHandbookContext();\n const selected = activeTab === id;\n\n return (\n <PreviewCard\n id={id}\n as=\"button\"\n data-as=\"button\"\n selected={selected}\n marginBottom={1}\n radius={2}\n sizing=\"border\"\n tabIndex={-1}\n tone=\"inherit\"\n onClick={() => {\n setActiveTab(id);\n setSidebarExpanded(false);\n }}\n style={{ cursor: \"pointer\", ...style }}\n aria-controls={`panel-${id}`}\n __unstable_focusRing\n {...props}\n >\n <SanityDefaultPreview\n status={\n <Box style={{ opacity: 0.5 }}>\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n }\n icon={Icon}\n layout=\"compact\"\n title={label}\n />\n </PreviewCard>\n );\n}\n","import type { ComponentProps, ComponentType } from \"react\";\nimport { CommandList } from \"sanity\";\nimport { Pane, PaneContent } from \"sanity/structure\";\n\nimport { PaneHeader } from \"@/components/pane-header\";\nimport { SidebarHeading } from \"@/components/sidebar/heading\";\nimport { SidebarTab } from \"@/components/sidebar/tab\";\nimport { sidebarItemHeight, sidebarMaximumWidth, sidebarMinimumWidth, sidebarWidth } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { useSections } from \"@/hooks/use-sections\";\n\n/** A heading above a group of sidebar tabs. */\ninterface SidebarHeadingItem {\n /** Marks the item as a heading. */\n type: \"heading\";\n /** Heading text. */\n title: string;\n}\n\n/** A sidebar row that opens the content panel with the same ID. */\ninterface SidebarTabItem {\n /** Marks the item as a tab. */\n type: \"tab\";\n /** ID shared by the sidebar row and its panel. */\n id: string;\n /** Label in the sidebar. */\n label: string;\n /** Icon next to the sidebar label. */\n icon?: ComponentType;\n}\n\n/** An item in the sidebar's flat list. */\ntype SidebarItem = SidebarHeadingItem | SidebarTabItem;\n\n// `CommandList` clones what this returns to set `tabIndex`, so a wrapper component would swallow it.\nfunction renderItem(item: SidebarItem) {\n if (item.type === \"heading\") return <SidebarHeading title={item.title} />;\n\n return <SidebarTab id={item.id} label={item.label} icon={item.icon} />;\n}\n\nexport type SidebarProps = Omit<ComponentProps<typeof Pane>, \"id\">;\n\nexport function Sidebar(props: SidebarProps) {\n const { sidebarTitle } = useHandbookContext();\n const sections = useSections();\n\n const items = sections.flatMap(({ title, entries }): SidebarItem[] => [\n { type: \"heading\", title },\n ...entries.map((entry): SidebarItem => ({ type: \"tab\", id: entry.id, label: entry.title, icon: entry.icon })),\n ]);\n\n function getItemDisabled(virtualIndex: number) {\n return items[virtualIndex]?.type === \"heading\";\n }\n\n return (\n <Pane\n id=\"handbook-sidebar\"\n currentMaxWidth={sidebarWidth}\n minWidth={sidebarMinimumWidth}\n maxWidth={sidebarMaximumWidth}\n {...props}\n >\n <PaneHeader title={sidebarTitle} />\n <PaneContent overflow=\"auto\">\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={sidebarTitle}\n canReceiveFocus\n getItemDisabled={getItemDisabled}\n itemHeight={sidebarItemHeight}\n items={items}\n onlyShowSelectionWhenActive\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n </PaneContent>\n </Pane>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { useContext } from \"react\";\nimport { PaneLayoutContext } from \"sanity/_singletons\";\n\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { Content } from \"@/layouts/content\";\nimport { Sidebar } from \"@/layouts/sidebar\";\n\nexport function Panes() {\n const { activeTab, sidebarExpanded } = useHandbookContext();\n const paneLayout = useContext(PaneLayoutContext);\n\n const hasContent = isDefined(activeTab);\n\n if (paneLayout?.collapsed === true) {\n return sidebarExpanded || !hasContent ? <Sidebar /> : <Content />;\n }\n\n return (\n <>\n <Sidebar />\n {hasContent && <Content />}\n </>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { useTheme_v2 } from \"@sanity/ui\";\nimport { useState } from \"react\";\nimport type { Tool } from \"sanity\";\nimport { PaneLayout } from \"sanity/structure\";\n\nimport { toolMinimumWidth } from \"@/config/layout\";\nimport { HandbookProvider } from \"@/contexts/handbook\";\nimport type { HandbookProviderConfig } from \"@/contexts/handbook\";\nimport { Panes } from \"@/layouts/panes\";\n\nexport interface HandbookToolProps {\n tool: Tool<HandbookProviderConfig>;\n}\n\nexport function HandbookTool({ tool: { options } }: HandbookToolProps) {\n const { media } = useTheme_v2();\n const [layoutCollapsed, setLayoutCollapsed] = useState(false);\n\n function handleCollapse() {\n setLayoutCollapsed(true);\n }\n\n function handleExpand() {\n setLayoutCollapsed(false);\n }\n\n if (!isDefined(options)) return null;\n\n return (\n <HandbookProvider {...options}>\n <PaneLayout\n flex={1}\n height={layoutCollapsed ? undefined : \"fill\"}\n minWidth={media[1]}\n onCollapse={handleCollapse}\n onExpand={handleExpand}\n style={{ minHeight: \"100%\", minWidth: `${toolMinimumWidth}px` }}\n >\n <Panes />\n </PaneLayout>\n </HandbookProvider>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\n\n/** Editors from the plugin configuration, so the structure helper doesn't need them passed again. */\nlet configuredEditors: string[] | undefined = undefined;\n\n/**\n * Stores the editors from the plugin configuration. A Studio with several workspaces keeps only the last\n * workspace's list, so pass the list explicitly there.\n *\n * @param editors - Email addresses of the editors.\n */\nexport function setConfiguredEditors(editors: string[] | undefined) {\n configuredEditors = editors;\n}\n\n/**\n * Checks whether an email address belongs to an editor. Without an editors list, everyone is an editor.\n *\n * @param editors - Email addresses of the editors, defaulting to the configured list.\n * @param email - The email address to check.\n * @returns Whether the address belongs to an editor.\n */\nexport function isPermittedEditor(editors: string[] | undefined, email: string | undefined) {\n const permitted = editors ?? configuredEditors;\n\n if (!isDefined(permitted)) return true;\n if (!isDefined(email)) return false;\n\n return permitted.includes(email);\n}\n","import { Stack } from \"@sanity/ui\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { CalloutContent } from \"@/components/blocks/callout/content\";\nimport type { SanityHandbookCallout, SanityHandbookCalloutVariant } from \"@/types\";\n\nexport type CalloutPreviewProps = PreviewProps & {\n variant?: SanityHandbookCalloutVariant;\n body?: SanityHandbookCallout[\"body\"];\n};\n\nexport function CalloutPreview({ variant, body }: CalloutPreviewProps) {\n return (\n <CalloutContent variant={variant ?? \"tip\"}>\n <Stack gap={3}>\n {body?.map(({ _key, children }) => (\n <div key={_key} style={{ whiteSpace: \"pre-wrap\" }}>\n {children.map((child) => child.text).join(\"\")}\n </div>\n ))}\n </Stack>\n </CalloutContent>\n );\n}\n","import type { BlockDecoratorProps } from \"sanity\";\n\nimport { PortableCode } from \"@/components/content/portable/code\";\n\nexport function CodeDecorator({ children }: BlockDecoratorProps) {\n return <PortableCode>{children}</PortableCode>;\n}\n","import type { BlockStyleProps } from \"sanity\";\n\nimport { PortableBlockquote } from \"@/components/content/portable/blockquote\";\nimport { PortableHeading } from \"@/components/content/portable/heading\";\nimport { PortableParagraph } from \"@/components/content/portable/paragraph\";\n\nexport function ParagraphStyle({ children }: BlockStyleProps) {\n return <PortableParagraph>{children}</PortableParagraph>;\n}\n\nexport function HeadingStyle({ children }: BlockStyleProps) {\n return <PortableHeading>{children}</PortableHeading>;\n}\n\nexport function BlockquoteStyle({ children }: BlockStyleProps) {\n return <PortableBlockquote>{children}</PortableBlockquote>;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type MessageCircleIconProps = ComponentProps<\"svg\">;\n\nexport function MessageCircleIcon(props: MessageCircleIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\" />\n </svg>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type LinkIconProps = ComponentProps<\"svg\">;\n\nexport function LinkIcon(props: LinkIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineArrayMember, defineField } from \"sanity\";\n\nimport { LinkIcon } from \"@/icons/link\";\nimport type { SanityHandbookLink } from \"@/types\";\n\nexport const linkAnnotation = defineArrayMember({\n name: \"link\" satisfies SanityHandbookLink[\"_type\"],\n type: \"object\",\n description: \"Link applied to the selected text.\",\n icon: createSanityIcon(LinkIcon),\n preview: {\n select: {\n href: \"href\",\n },\n prepare(selection: { href?: string }) {\n const { href } = selection;\n\n return {\n title: href ?? \"Link\",\n };\n },\n },\n fields: [\n defineField({\n name: \"href\" satisfies keyof SanityHandbookLink,\n type: \"url\",\n title: \"URL\",\n description: \"Web address to link to. Use http, https, mailto, or tel.\",\n validation: (rule) => rule.uri({ scheme: [\"http\", \"https\", \"mailto\", \"tel\"] }),\n }),\n ],\n});\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineArrayMember, defineField, defineType } from \"sanity\";\n\nimport { CalloutPreview } from \"@/components/blocks/callout/preview\";\nimport { CodeDecorator } from \"@/components/decorators\";\nimport { ParagraphStyle } from \"@/components/styles\";\nimport { MessageCircleIcon } from \"@/icons/message-circle\";\nimport { linkAnnotation } from \"@/schemas/annotations/link\";\nimport type { SanityHandbookCallout, SanityHandbookCalloutVariant } from \"@/types\";\nimport { calloutTypeName } from \"@/types\";\n\nexport const calloutType = defineType({\n name: calloutTypeName satisfies SanityHandbookCallout[\"_type\"],\n type: \"object\",\n title: \"Callout\",\n description: \"Highlighted tip, note, or warning.\",\n icon: createSanityIcon(MessageCircleIcon),\n components: {\n preview: CalloutPreview,\n },\n preview: {\n select: {\n variant: \"variant\",\n body: \"body\",\n },\n prepare(selection: { variant?: SanityHandbookCalloutVariant; body?: SanityHandbookCallout[\"body\"] }) {\n const { variant, body } = selection;\n\n return {\n title: \"Callout\",\n variant,\n body,\n };\n },\n },\n fields: [\n defineField({\n name: \"variant\" satisfies keyof SanityHandbookCallout,\n type: \"string\",\n description: \"Kind of callout, which sets its icon and color.\",\n initialValue: \"tip\",\n validation: (rule) => rule.required(),\n options: {\n list: [\n { title: \"Tip\", value: \"tip\" },\n { title: \"Information\", value: \"info\" },\n { title: \"Warning\", value: \"warning\" },\n ],\n layout: \"radio\",\n direction: \"horizontal\",\n },\n }),\n defineField({\n name: \"body\" satisfies keyof SanityHandbookCallout,\n type: \"array\",\n description: \"Text inside the callout, with inline formatting and links.\",\n of: [\n defineArrayMember({\n name: \"block\",\n type: \"block\",\n styles: [{ title: \"Normal\", value: \"normal\", component: ParagraphStyle }],\n lists: [],\n marks: {\n decorators: [\n { title: \"Bold\", value: \"strong\" },\n { title: \"Italic\", value: \"em\" },\n { title: \"Strikethrough\", value: \"strike-through\" },\n { title: \"Code\", value: \"code\", component: CodeDecorator },\n ],\n annotations: [linkAnnotation],\n },\n }),\n ],\n }),\n ],\n});\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { CodeContent } from \"@/components/blocks/code/content\";\n\nexport type CodePreviewProps = PreviewProps & {\n code?: string;\n language?: string;\n};\n\nexport function CodePreview({ code, language }: CodePreviewProps) {\n if (!isDefined(code)) return null;\n\n return <CodeContent code={code} language={language} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type CodeIconProps = ComponentProps<\"svg\">;\n\nexport function CodeIcon(props: CodeIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m16 18 6-6-6-6\" />\n <path d=\"m8 6-6 6 6 6\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { CodePreview } from \"@/components/blocks/code/preview\";\nimport { CodeIcon } from \"@/icons/code\";\nimport type { SanityHandbookCode } from \"@/types\";\nimport { codeTypeName } from \"@/types\";\n\nexport const codeType = defineType({\n name: codeTypeName satisfies SanityHandbookCode[\"_type\"],\n type: \"object\",\n title: \"Code\",\n description: \"Code block with syntax highlighting.\",\n icon: createSanityIcon(CodeIcon),\n components: {\n preview: CodePreview,\n },\n preview: {\n select: {\n code: \"code\",\n language: \"language\",\n },\n },\n fields: [\n defineField({\n name: \"code\" satisfies keyof SanityHandbookCode,\n type: \"text\",\n description: \"Code to display.\",\n }),\n defineField({\n name: \"language\" satisfies keyof SanityHandbookCode,\n type: \"string\",\n description: \"Language used for syntax highlighting.\",\n options: {\n list: [\n { title: \"CSS\", value: \"css\" },\n { title: \"GROQ\", value: \"groq\" },\n { title: \"HTML\", value: \"html\" },\n { title: \"JavaScript\", value: \"javascript\" },\n { title: \"JSON\", value: \"json\" },\n { title: \"Plain Text\", value: \"text\" },\n { title: \"React\", value: \"tsx\" },\n { title: \"Shell\", value: \"shell\" },\n { title: \"TypeScript\", value: \"typescript\" },\n ],\n },\n }),\n ],\n});\n","import type { PreviewProps } from \"sanity\";\n\nimport { HorizontalRuleContent } from \"@/components/blocks/horizontal-rule/content\";\n\nexport type HorizontalRulePreviewProps = PreviewProps;\n\nexport function HorizontalRulePreview(_props: HorizontalRulePreviewProps) {\n return <HorizontalRuleContent style={{ marginBlock: 8 }} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type SeparatorHorizontalIconProps = ComponentProps<\"svg\">;\n\nexport function SeparatorHorizontalIcon(props: SeparatorHorizontalIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m16 16-4 4-4-4\" />\n <path d=\"M3 12h18\" />\n <path d=\"m8 8 4-4 4 4\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { HorizontalRulePreview } from \"@/components/blocks/horizontal-rule/preview\";\nimport { SeparatorHorizontalIcon } from \"@/icons/separator-horizontal\";\nimport type { SanityHandbookHorizontalRule } from \"@/types\";\nimport { horizontalRuleTypeName } from \"@/types\";\n\nexport const horizontalRuleType = defineType({\n name: horizontalRuleTypeName satisfies SanityHandbookHorizontalRule[\"_type\"],\n type: \"object\",\n title: \"Horizontal Rule\",\n description: \"Divider between sections.\",\n icon: createSanityIcon(SeparatorHorizontalIcon),\n components: {\n preview: HorizontalRulePreview,\n },\n preview: {\n prepare() {\n return {\n title: \"Horizontal Rule\",\n };\n },\n },\n fields: [\n // Sanity requires at least one field, but a rule has nothing to store.\n defineField({\n name: \"style\",\n type: \"string\",\n description: \"Unused placeholder field.\",\n hidden: true,\n }),\n ],\n});\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { ImageContent } from \"@/components/blocks/image/content\";\n\nexport type ImagePreviewProps = PreviewProps & {\n url?: string;\n alt?: string;\n caption?: string;\n};\n\nexport function ImagePreview({ url, alt, caption }: ImagePreviewProps) {\n if (!isDefined(url)) return null;\n\n return <ImageContent url={url} alt={alt} caption={caption} style={{ padding: 8 }} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type ImageIconProps = ComponentProps<\"svg\">;\n\nexport function ImageIcon(props: ImageIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { ImagePreview } from \"@/components/blocks/image/preview\";\nimport { ImageIcon } from \"@/icons/image\";\nimport type { SanityHandbookImage } from \"@/types\";\nimport { imageTypeName } from \"@/types\";\n\nexport const imageType = defineType({\n name: imageTypeName satisfies SanityHandbookImage[\"_type\"],\n type: \"object\",\n title: \"Image\",\n description: \"Image with an optional caption and alternative text.\",\n icon: createSanityIcon(ImageIcon),\n components: {\n preview: ImagePreview,\n },\n preview: {\n select: {\n caption: \"caption\",\n alt: \"alt\",\n url: \"asset.asset.url\",\n },\n },\n fields: [\n defineField({\n name: \"asset\" satisfies keyof SanityHandbookImage,\n type: \"image\",\n title: \"Image\",\n description: \"Image to show.\",\n options: { hotspot: true },\n }),\n defineField({\n name: \"caption\" satisfies keyof SanityHandbookImage,\n type: \"string\",\n description: \"Text shown below the image, such as a credit.\",\n }),\n defineField({\n name: \"alt\" satisfies keyof SanityHandbookImage,\n type: \"string\",\n title: \"Alternative Text\",\n description: \"Description of the image for people who can't see it. Don't repeat the caption.\",\n }),\n ],\n});\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { VideoContent } from \"@/components/blocks/video/content\";\n\nexport type VideoPreviewProps = PreviewProps & {\n url?: string;\n caption?: string;\n};\n\nexport function VideoPreview({ url, caption }: VideoPreviewProps) {\n if (!isDefined(url)) return null;\n\n return <VideoContent url={url} caption={caption} style={{ padding: 8 }} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type FilmIconProps = ComponentProps<\"svg\">;\n\nexport function FilmIcon(props: FilmIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M7 3v18\" />\n <path d=\"M3 7.5h4\" />\n <path d=\"M3 12h18\" />\n <path d=\"M3 16.5h4\" />\n <path d=\"M17 3v18\" />\n <path d=\"M17 7.5h4\" />\n <path d=\"M17 16.5h4\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { VideoPreview } from \"@/components/blocks/video/preview\";\nimport { FilmIcon } from \"@/icons/film\";\nimport type { SanityHandbookVideo } from \"@/types\";\nimport { videoTypeName } from \"@/types\";\n\nexport const videoType = defineType({\n name: videoTypeName satisfies SanityHandbookVideo[\"_type\"],\n type: \"object\",\n title: \"Video\",\n description: \"Video with an optional caption.\",\n icon: createSanityIcon(FilmIcon),\n components: {\n preview: VideoPreview,\n },\n preview: {\n select: {\n caption: \"caption\",\n url: \"asset.asset.url\",\n },\n },\n fields: [\n defineField({\n name: \"asset\" satisfies keyof SanityHandbookVideo,\n type: \"file\",\n title: \"Video\",\n description: \"Video to show.\",\n options: { accept: \"video/*\" },\n }),\n defineField({\n name: \"caption\" satisfies keyof SanityHandbookVideo,\n type: \"string\",\n description: \"Text shown below the video, such as a credit.\",\n }),\n ],\n});\n","import { Text } from \"@sanity/ui\";\nimport type { BlockListItemProps } from \"sanity\";\n\nexport function ListItemStyle({ children }: BlockListItemProps) {\n return (\n <Text size={1} style={{ marginTop: \"0.375em\" }}>\n {children}\n </Text>\n );\n}\n","import { defineArrayMember, defineField } from \"sanity\";\n\nimport { CodeDecorator } from \"@/components/decorators\";\nimport { ListItemStyle } from \"@/components/lists\";\nimport { BlockquoteStyle, HeadingStyle, ParagraphStyle } from \"@/components/styles\";\nimport type { SanityHandbookBlockDefinition } from \"@/plugin\";\nimport { linkAnnotation } from \"@/schemas/annotations/link\";\nimport type { SanityHandbookGuide } from \"@/types\";\nimport { calloutTypeName, codeTypeName, horizontalRuleTypeName, imageTypeName, videoTypeName } from \"@/types\";\n\n/**\n * Creates the guide content field, offering the built-in blocks and any custom ones.\n *\n * @param customBlocks - Custom blocks added by the site.\n * @returns The content field.\n */\nexport function createGuideContentField(customBlocks: SanityHandbookBlockDefinition[] = []) {\n return defineField({\n name: \"content\" satisfies keyof SanityHandbookGuide,\n type: \"array\",\n description: \"Rich text with formatting, headings, lists, images, code blocks, and custom blocks.\",\n of: [\n defineArrayMember({\n name: \"block\",\n type: \"block\",\n styles: [\n { title: \"Paragraph\", value: \"normal\", component: ParagraphStyle },\n { title: \"Heading\", value: \"h2\", component: HeadingStyle },\n { title: \"Blockquote\", value: \"blockquote\", component: BlockquoteStyle },\n ],\n lists: [\n { title: \"Bullet\", value: \"bullet\", component: ListItemStyle },\n { title: \"Number\", value: \"number\", component: ListItemStyle },\n ],\n marks: {\n decorators: [\n { title: \"Bold\", value: \"strong\" },\n { title: \"Italic\", value: \"em\" },\n { title: \"Strikethrough\", value: \"strike-through\" },\n { title: \"Code\", value: \"code\", component: CodeDecorator },\n ],\n annotations: [linkAnnotation],\n },\n }),\n defineArrayMember({ name: imageTypeName, type: imageTypeName }),\n defineArrayMember({ name: videoTypeName, type: videoTypeName }),\n defineArrayMember({ name: codeTypeName, type: codeTypeName }),\n defineArrayMember({ name: calloutTypeName, type: calloutTypeName }),\n defineArrayMember({ name: horizontalRuleTypeName, type: horizontalRuleTypeName }),\n ...customBlocks.map((block) => defineArrayMember({ name: block.schema.name, type: block.schema.name })),\n ],\n });\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { defaultDocumentTitle } from \"@/config/defaults\";\nimport { BookOpenTextIcon } from \"@/icons/book-open-text\";\nimport type { SanityHandbookBlockDefinition } from \"@/plugin\";\nimport { createGuideContentField } from \"@/schemas/fields/content\";\nimport type { SanityHandbookGuide } from \"@/types\";\nimport { guideTypeName } from \"@/types\";\n\n/**\n * Creates the guide document type, with a content field offering the built-in blocks and any custom ones.\n *\n * @param customBlocks - Custom blocks added by the site.\n * @returns The guide document type.\n */\nexport function createGuideType(customBlocks: SanityHandbookBlockDefinition[] = []) {\n return defineType({\n name: guideTypeName satisfies SanityHandbookGuide[\"_type\"],\n type: \"document\",\n title: \"Handbook Guide\",\n description: \"Handbook page written in rich text.\",\n icon: createSanityIcon(BookOpenTextIcon),\n preview: {\n select: {\n title: \"title\",\n description: \"description\",\n },\n prepare(selection: { title?: string; description?: string }) {\n const { title, description } = selection;\n\n return {\n title: title ?? defaultDocumentTitle,\n subtitle: description,\n };\n },\n },\n fields: [\n defineField({\n name: \"title\" satisfies keyof SanityHandbookGuide,\n type: \"string\",\n description: \"Title shown in the Handbook sidebar and as the guide heading.\",\n validation: (rule) => rule.required(),\n }),\n defineField({\n name: \"description\" satisfies keyof SanityHandbookGuide,\n type: \"string\",\n description: \"Short introduction shown below the heading.\",\n }),\n createGuideContentField(customBlocks),\n ],\n });\n}\n","import type { ComponentProps } from \"react\";\n\nexport type ListPlusIconProps = ComponentProps<\"svg\">;\n\nexport function ListPlusIcon(props: ListPlusIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M16 5H3\" />\n <path d=\"M11 12H3\" />\n <path d=\"M16 19H3\" />\n <path d=\"M18 9v6\" />\n <path d=\"M21 12h-6\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { isDefined } from \"@repo/lib/utils\";\nimport { defineArrayMember, defineField, defineType } from \"sanity\";\n\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { ListPlusIcon } from \"@/icons/list-plus\";\nimport type { SanityHandbook, SanityHandbookGuideGroup } from \"@/types\";\nimport { guideTypeName, handbookTypeName } from \"@/types\";\n\nexport const handbookType = defineType({\n name: handbookTypeName satisfies SanityHandbook[\"_type\"],\n type: \"document\",\n title: \"Handbook\",\n description: \"Groups of guides shown in the Handbook sidebar, in order.\",\n icon: createSanityIcon(BookTextIcon),\n preview: {\n prepare() {\n return {\n title: \"Handbook\",\n };\n },\n },\n fields: [\n defineField({\n name: \"groups\" satisfies keyof SanityHandbook,\n type: \"array\",\n description:\n \"Groups of guides shown in the Handbook sidebar, in order. Each group has a title and a list of guides, also in order.\",\n of: [\n defineArrayMember({\n name: \"group\",\n type: \"object\",\n description: \"Sidebar section holding a list of guides.\",\n icon: createSanityIcon(ListPlusIcon),\n fields: [\n defineField({\n name: \"title\" satisfies keyof SanityHandbookGuideGroup,\n type: \"string\",\n description: \"Heading shown above the group in the sidebar.\",\n validation: (rule) => rule.required(),\n }),\n defineField({\n name: \"guides\" satisfies keyof SanityHandbookGuideGroup,\n type: \"array\",\n description: \"Guides in the group, in order. Drag to reorder.\",\n of: [\n defineArrayMember({\n name: \"guide\",\n type: \"reference\",\n to: [{ type: guideTypeName }],\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: \"title\",\n guide0: \"guides.0.title\",\n guide1: \"guides.1.title\",\n guide2: \"guides.2.title\",\n },\n prepare(selection: { title?: string; guide0?: string; guide1?: string; guide2?: string }) {\n const { title, guide0, guide1, guide2 } = selection;\n\n const all = [guide0, guide1, guide2].filter((guide): guide is string => isDefined(guide));\n const shown = all.slice(0, 2);\n const hasMore = isDefined(guide2);\n\n function formatSubtitle() {\n if (!isDefined(shown)) return \"No guides selected\";\n if (hasMore) return `${shown.join(\", \")}, and others`;\n return shown.join(\" and \");\n }\n\n return {\n title: title ?? \"Group\",\n subtitle: formatSubtitle(),\n };\n },\n },\n }),\n ],\n }),\n ],\n});\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport type { ComponentType } from \"react\";\nimport { definePlugin } from \"sanity\";\nimport type { DocumentDefinition, PortableTextObject, SchemaTypeDefinition } from \"sanity\";\n\nimport { defaultTitle, defaultUndocumentedFieldMessage, pluginName } from \"@/config/defaults\";\nimport { documentTypes, singletonTypes } from \"@/config/documents\";\nimport type { HandbookProviderConfig } from \"@/contexts/handbook\";\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { HandbookTool } from \"@/layouts/tool\";\nimport { isPermittedEditor, setConfiguredEditors } from \"@/lib/editors\";\nimport { calloutType } from \"@/schemas/blocks/callout\";\nimport { codeType } from \"@/schemas/blocks/code\";\nimport { horizontalRuleType } from \"@/schemas/blocks/horizontal-rule\";\nimport { imageType } from \"@/schemas/blocks/image\";\nimport { videoType } from \"@/schemas/blocks/video\";\nimport { createGuideType } from \"@/schemas/types/guide\";\nimport { handbookType } from \"@/schemas/types/handbook\";\n\ndeclare module \"@sanity/types\" {\n interface FieldDefinitionBase {\n /** Handbook documentation for the field. */\n handbook?: SanityHandbookMetadata;\n }\n\n // oxlint-disable-next-line no-shadow -- Module augmentation intentionally redeclares the imported type.\n interface DocumentDefinition {\n /** Handbook documentation for the document type. */\n handbook?: SanityHandbookMetadata;\n }\n}\n\n/**\n * Documentation added to a field or document definition, shown in the Handbook.\n *\n * @public\n */\nexport interface SanityHandbookMetadata {\n /** Title to show instead of the schema title. */\n title?: string;\n /** Description shown below the field or document heading. */\n description?: string;\n /** Example value for the field. */\n example?: string;\n /** Tip, shown as a hint icon. */\n tip?: string;\n /** Extra information, shown as a hint icon. */\n info?: string;\n /** Warning, shown as a hint icon. */\n caution?: string;\n}\n\n/**\n * A group of document types with the same role in the content model, shown as one sidebar section.\n *\n * @public\n */\nexport interface SanityHandbookDocumentRole {\n /** Role title. */\n title: string;\n /** Short description of the role. */\n description?: string;\n /** Document definitions in the role. */\n documents: DocumentDefinition[];\n}\n\n/**\n * A custom Portable Text block for guides: its schema and the component that renders it.\n *\n * @public\n */\nexport interface SanityHandbookBlockDefinition {\n /** Schema type definition for the block. */\n schema: SchemaTypeDefinition;\n /** Component that renders the block in the Handbook. */\n component: ComponentType<{ value: PortableTextObject }>;\n}\n\n/**\n * Plugin configuration. Only `roles` is required.\n *\n * @public\n */\nexport interface SanityHandbookConfig {\n /** Title in the Studio's tool menu. Defaults to `\"Handbook\"`. */\n title?: string;\n /** Heading at the top of the sidebar. Defaults to `\"Handbook\"`. */\n sidebarTitle?: string;\n /** Document roles, each shown as a section in the sidebar. */\n roles: SanityHandbookDocumentRole[];\n /** Custom Portable Text blocks for guides. Defaults to none. */\n blocks?: SanityHandbookBlockDefinition[];\n /** Email addresses of the people who can edit Handbook documents. Defaults to everyone. */\n editors?: string[];\n /** Message shown for fields without a description. Defaults to a prompt to ask the development team. */\n undocumentedFieldMessage?: string;\n}\n\n/**\n * Adds a Handbook tool to Sanity Studio, with documentation generated from the schema and guides written\n * in the Studio.\n *\n * @param config - The plugin configuration.\n * @returns The plugin.\n * @public\n */\nexport const handbookPlugin = definePlugin<SanityHandbookConfig>((config) => {\n const { title, sidebarTitle, roles, blocks, editors, undocumentedFieldMessage } = config;\n\n setConfiguredEditors(editors);\n\n const resolved: HandbookProviderConfig = {\n sidebarTitle: sidebarTitle ?? defaultTitle,\n roles,\n blocks: blocks ?? [],\n undocumentedFieldMessage: undocumentedFieldMessage ?? defaultUndocumentedFieldMessage,\n };\n\n const guideType = createGuideType(resolved.blocks);\n\n return {\n name: pluginName,\n schema: {\n types: [\n handbookType,\n guideType,\n imageType,\n videoType,\n codeType,\n calloutType,\n horizontalRuleType,\n ...resolved.blocks.map((block) => block.schema),\n ],\n },\n document: {\n newDocumentOptions: (templateItems, { creationContext, currentUser }) => {\n if (creationContext.type !== \"global\" && creationContext.type !== \"structure\") {\n return templateItems;\n }\n\n const hiddenTypes = isPermittedEditor(editors, currentUser?.email) ? singletonTypes : documentTypes;\n\n return templateItems.filter(\n ({ templateId }) =>\n ![...hiddenTypes].some((type) => templateId === type || templateId.startsWith(`${type}-`)),\n );\n },\n actions: (actionComponents, { schemaType }) => {\n if (singletonTypes.has(schemaType)) {\n return actionComponents.filter(({ action }) => ![\"delete\", \"duplicate\", \"unpublish\"].includes(action ?? \"\"));\n }\n\n return actionComponents;\n },\n },\n tools: [\n {\n name: \"handbook\",\n title: title ?? defaultTitle,\n icon: createSanityIcon(BookTextIcon),\n component: HandbookTool,\n options: resolved,\n },\n ],\n };\n});\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport type { CurrentUser } from \"sanity\";\nimport type { StructureBuilder } from \"sanity/structure\";\n\nimport { BookOpenTextIcon } from \"@/icons/book-open-text\";\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { isPermittedEditor } from \"@/lib/editors\";\nimport { guideTypeName, handbookTypeName } from \"@/types\";\n\n/**\n * Creates Structure tool items for the Handbook documents, or none when the current user can't edit them.\n *\n * @param structureBuilder - The structure builder.\n * @param context - The structure context, with the current user.\n * @param editors - Email addresses of the editors, defaulting to the configured list.\n * @returns List items for the Handbook document and the guides list, oldest guide first.\n * @public\n */\nexport function handbookStructure(\n structureBuilder: StructureBuilder,\n context: { currentUser: CurrentUser | null },\n editors?: string[],\n) {\n if (!isPermittedEditor(editors, context.currentUser?.email)) return [];\n\n const { listItem, document, documentTypeList } = structureBuilder;\n\n return [\n listItem()\n .title(\"Handbook\")\n .icon(createSanityIcon(BookTextIcon))\n .child(document().id(handbookTypeName).schemaType(handbookTypeName).title(\"Handbook\")),\n listItem()\n .title(\"Handbook Guides\")\n .icon(createSanityIcon(BookOpenTextIcon))\n .child(\n documentTypeList(guideTypeName)\n .title(\"Handbook Guides\")\n .defaultOrdering([{ field: \"_createdAt\", direction: \"asc\" }]),\n ),\n ];\n}\n","import { useCurrentUser } from \"sanity\";\n\nimport { isPermittedEditor } from \"@/lib/editors\";\n\n/**\n * Checks whether the current user can edit Handbook documents. Without an editors list, everyone can.\n *\n * @param editors - Email addresses of the editors, defaulting to the configured list.\n * @returns Whether the current user can edit Handbook documents.\n * @public\n */\nexport function useIsHandbookEditor(editors?: string[]) {\n const user = useCurrentUser();\n\n return isPermittedEditor(editors, user?.email);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ComponentProps","ComponentType","createElement","defaultIconProps","width","height","strokeWidth","createSanityIcon","icon","props","Icon","SanityIcon","isDevelopment","process","env","isDevelopment","prefixStyle","createLogger","name","prefix","format","message","info","console","warn","error","createLogger","pluginName","logger","apiVersion","defaultTitle","defaultUndocumentedFieldMessage","KeyedSegment","PortableTextBlock","PortableTextObject","PortableTextSpan","PortableTextTextBlock","SanityDocument","Strict","T","K","SanityKeyedArray","SanityHandbookGuide","_type","guideTypeName","title","description","content","SanityHandbookGuideGroup","guides","SanityHandbook","handbookTypeName","groups","SanityHandbookImage","imageTypeName","asset","url","caption","alt","SanityHandbookVideo","videoTypeName","SanityHandbookCode","codeTypeName","code","language","SanityHandbookCalloutVariant","SanityHandbookCallout","calloutTypeName","variant","body","SanityHandbookHorizontalRule","horizontalRuleTypeName","SanityHandbookLink","href","guideTypeName","handbookTypeName","singletonTypes","Set","documentTypes","ComponentProps","BookTextIconProps","BookTextIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","Nullable","T","isDefined","value","undefined","trim","Array","isArray","some","element","prototype","Reflect","getPrototypeOf","Object","keys","length","convertCase","format","words","replaceAll","toLowerCase","_match","character","toUpperCase","isRecord","Record","readPath","path","current","segment","sidebarWidth","sidebarMinimumWidth","sidebarMaximumWidth","contentMinimumWidth","contentFlex","collapsedPaneWidth","sidebarItemHeight","toolMinimumWidth","contentWidth","contentPaddingInline","contentPaddingBlockStart","contentPaddingBlockEnd","contentSpacing","section","paragraph","heading","media","callout","blockquote","list","nestedList","rule","imageTypeName","videoTypeName","assetUrlFragment","guideContentFragment","guideFragment","guideFragment","guideTypeName","handbookTypeName","handbookQuery","handbookDocumentsQuery","useEffect","useState","useDocumentStore","apiVersion","handbookDocumentsQuery","handbookQuery","SanityHandbook","useHandbookDocument","$","_c","documentStore","handbook","setHandbook","t0","t1","subscription","listenQuery","fetch","listen","perspective","throttleTime","subscribe","result","undefined","unsubscribe","_c","isDefined","createContext","useContext","useState","ReactNode","logger","useHandbookDocument","SanityHandbookBlockDefinition","SanityHandbookDocumentRole","SanityHandbook","HandbookProviderConfig","sidebarTitle","roles","blocks","undocumentedFieldMessage","HandbookContextValues","activeTab","sidebarExpanded","handbook","setActiveTab","id","setSidebarExpanded","expanded","HandbookProviderProps","children","HandbookContext","undefined","useHandbookContext","handbookContext","Error","format","HandbookProvider","t0","$","_c","t1","t2","_c","isDefined","Box","Card","Flex","Layer","LayerProvider","Text","useElementSize","useTheme_v2","useContext","ComponentProps","ReactNode","PaneContext","collapsedPaneWidth","PaneHeaderProps","title","backButton","PaneHeader","t0","$","_c","props","style","color","pane","paneSize","rootElement","collapsed","isLast","paneHeight","border","height","collapsedWidth","window","innerHeight","bg","fg","selectable","default","enabled","t1","handleTitleClick","collapse","t2","handleLayoutClick","expand","t3","undefined","t4","lineHeight","position","top","t5","t6","t7","t8","width","transform","transformOrigin","t9","t10","t11","t12","backgroundColor","minWidth","t13","cursor","outline","t14","t15","t16","t17","t18","t19","_c","isDefined","ArrowLeftIcon","Box","Button","Heading","Stack","Text","useContext","ComponentProps","ReactNode","PaneLayoutContext","PaneContent","PaneHeader","contentPaddingBlockEnd","contentPaddingBlockStart","contentPaddingInline","contentWidth","useHandbookContext","ContentPanelProps","Omit","id","title","description","children","ContentPanel","t0","$","_c","props","setSidebarExpanded","paneLayout","t1","collapsed","t2","t3","t4","Symbol","for","maxWidth","boxSizing","marginInline","paddingInline","paddingBlockStart","paddingBlockEnd","t5","t6","t7","t8","t9","t10","_c","Box","Button","Stack","Text","useClickOutsideEvent","Popover","useRef","ComponentProps","ReactNode","FieldHintProps","Omit","label","icon","open","children","onOpen","onClose","FieldHint","t0","$","_c","props","buttonReference","popoverReference","t1","Symbol","for","current","undefined","t2","maxWidth","t3","t4","t5","t6","t7","event","pointerType","t8","event_0","t9","t10","_c","ComponentProps","InfoIconProps","InfoIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","ComponentProps","LightbulbIconProps","LightbulbIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","ComponentProps","TriangleAlertIconProps","TriangleAlertIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","ComponentProps","ComponentType","InfoIcon","LightbulbIcon","TriangleAlertIcon","SanityHandbookMetadata","HintKind","name","Pick","label","icon","hintKinds","defaultIconProps","isDefined","Flex","FlexProps","useState","FieldHint","hintKinds","SanityHandbookMetadata","FieldHintsProps","Pick","FieldHints","t0","$","_c","caution","info","props","tip","openHint","setOpenHint","undefined","T0","t1","t2","t3","t4","hints","t5","Symbol","for","closeHint","flatMap","t6","name","label","icon","Icon","hint","_c","createSanityIcon","convertCase","ComponentProps","ComponentType","ReactNode","resolveTitle","type","name","title","handbook","resolveDescription","description","undefined","resolveIcon","icon","isDefined","isRecord","readPath","FieldDefinition","Schema","CompiledField","name","type","title","description","fields","of","handbook","NormalizedField","opaqueTypes","Set","inheritedFieldNames","Partial","Record","block","file","geopoint","image","slug","isCompiledField","value","hasFieldsArray","Array","isArray","hasOfArray","getTypeName","typeName","undefined","getParentTypeName","resolvedType","parentName","String","normalizeField","field","visited","result","has","shouldTrack","next","fieldSource","ofSource","map","subfield","member","resolveCustomFields","inherited","customFields","filter","resolveNormalizedFields","items","normalized","item","resolveNormalizedMembers","members","resolveParentName","schema","direct","get","resolveFields","length","memberType","getSubfields","directFields","convertCase","isDefined","ChevronDownIcon","ChevronRightIcon","Box","Card","Flex","Stack","Text","StackProps","useState","FieldDefinition","useSchema","FieldHints","useHandbookContext","resolveDescription","resolveTitle","NormalizedField","getSubfields","DocumentedFieldProps","field","ancestors","Set","noAncestors","DocumentedField","t0","$","_c","props","t1","undefined","schema","undocumentedFieldMessage","expanded","setExpanded","t2","effectiveTitle","t3","effectiveDescription","caution","example","info","t4","tip","handbook","hasHints","t5","type","has","isCycle","t6","subfields","hasSubfields","t7","t8","Symbol","for","marginTop","t9","t10","t11","t12","t13","t14","fontStyle","t15","t16","textAlign","border","cursor","length","marginBottom","paddingLeft","borderLeft","map","subfield","name","_c","DocumentedField","contentSpacing","resolveDescription","resolveIcon","resolveTitle","SanityHandbookDocumentRole","documentTypesSections","roles","map","title","documents","entries","document","id","name","description","icon","render","display","flexDirection","gap","section","fields","field","ComponentProps","LayoutGridIconProps","LayoutGridIcon","props","$","_c","t0","t1","t2","t3","Symbol","for","t4","_c","isDefined","ChevronRightIcon","Box","Card","Flex","Stack","Text","contentSpacing","useHandbookContext","resolveDescription","resolveIcon","resolveTitle","DocumentTypesOverview","$","_c","roles","setActiveTab","setSidebarExpanded","t0","Symbol","for","display","flexDirection","gap","section","t1","t2","role","title","description","documents","map","document","Icon","documentDescription","name","width","marginLeft","textAlign","border","cursor","height","color","opacity","_c","defaultIconProps","Flex","Stack","Text","hintKinds","contentSpacing","hintDescriptions","tip","info","caution","Record","HowToUse","$","_c","t0","Symbol","for","display","flexDirection","gap","section","t1","t2","t3","t4","t5","map","_temp","t6","t7","name","icon","Icon","fontSize","color","_c","_temp","createSanityIcon","BookTextIcon","LayoutGridIcon","DocumentTypesOverview","HowToUse","gettingStartedSections","title","entries","id","description","icon","render","defaultIconProps","Box","Card","Flex","Text","CardProps","CardTone","ComponentProps","ComponentType","ReactNode","InfoIcon","LightbulbIcon","TriangleAlertIcon","SanityHandbookCalloutVariant","CalloutVariantStyle","icon","tone","CalloutContentProps","Omit","variant","children","presentation","Record","tip","info","warning","CalloutContent","t0","$","_c","props","Icon","t1","Symbol","for","marginTop","fontSize","color","t2","t3","t4","t5","t6","_c","ComponentProps","PortableCodeProps","PortableCode","t0","$","_c","props","style","t1","paddingBlock","paddingInline","fontSize","backgroundColor","borderRadius","t2","_c","ComponentProps","PortableLinkProps","PortableLink","t0","$","_c","children","props","style","t1","color","t2","_c","PortableText","PortableTextComponents","PortableTextMarkComponentProps","ComponentProps","CalloutContent","PortableCode","PortableLink","contentSpacing","SanityHandbookCallout","SanityHandbookLink","CalloutBlockProps","Omit","value","components","block","normal","children","marks","code","link","href","CalloutBlock","t0","$","_c","props","style","t1","marginBlock","callout","t2","body","t3","variant","components","_c","Card","CardProps","Code","CodeContentProps","code","language","CodeContent","t0","$","_c","props","style","t1","overflowX","t2","t3","_c","isDefined","ComponentProps","CodeContent","contentSpacing","SanityHandbookCode","CodeBlockProps","Omit","value","CodeBlock","t0","$","_c","props","style","code","t1","marginBlock","media","t2","language","_c","ComponentProps","HorizontalRuleContentProps","HorizontalRuleContent","t0","$","_c","props","style","t1","border","borderTop","t2","_c","ComponentProps","HorizontalRuleContent","contentSpacing","SanityHandbookHorizontalRule","HorizontalRuleBlockProps","value","HorizontalRuleBlock","t0","$","_c","props","style","_value","t1","t2","marginBlock","rule","_c","Box","Text","BoxProps","CaptionProps","children","Caption","t0","$","_c","props","t1","Symbol","for","fontStyle","t2","t3","_c","isDefined","ComponentProps","Caption","ImageContentProps","url","alt","caption","ImageContent","t0","$","_c","props","t1","t2","Symbol","for","display","maxWidth","borderRadius","t3","t4","t5","_c","isDefined","ComponentProps","ImageContent","contentSpacing","SanityHandbookImage","ImageBlockProps","Omit","value","ImageBlock","t0","$","_c","props","style","asset","url","t1","marginBlock","media","t2","alt","caption","_c","isDefined","ComponentProps","Caption","VideoContentProps","url","caption","VideoContent","t0","$","_c","props","t1","Symbol","for","display","maxWidth","borderRadius","WebkitTransform","t2","t3","t4","t5","t6","_c","isDefined","ComponentProps","VideoContent","contentSpacing","SanityHandbookVideo","VideoBlockProps","Omit","value","VideoBlock","t0","$","_c","props","style","asset","url","t1","marginBlock","media","t2","caption","_c","Box","Text","BoxProps","PortableBlockquoteProps","muted","PortableBlockquote","t0","$","_c","children","props","style","t1","borderLeft","t2","Symbol","for","fontStyle","t3","t4","_c","Text","TextProps","PortableHeadingProps","Omit","PortableHeading","props","$","_c","t0","_c","CSSProperties","ComponentProps","PortableListProps","Omit","ordered","PortableList","t0","$","_c","props","style","t1","undefined","t2","display","flexDirection","gap","margin","paddingLeft","listStyle","t3","_c","Text","TextProps","PortableParagraphProps","PortableParagraph","props","$","_c","t0","_c","PortableText","PortableTextReact","PortableTextComponentProps","PortableTextComponents","PortableTextMarkComponentProps","PortableTextTypeComponent","PortableTextTypeComponentProps","ComponentProps","ComponentType","PortableTextBlock","PortableTextListBlock","PortableTextObject","CalloutBlock","CodeBlock","HorizontalRuleBlock","ImageBlock","VideoBlock","PortableBlockquote","PortableCode","PortableHeading","PortableLink","PortableList","PortableParagraph","contentSpacing","useHandbookContext","SanityHandbookLink","SanityKeyedArray","calloutTypeName","codeTypeName","horizontalRuleTypeName","imageTypeName","videoTypeName","listSpacing","level","nestedList","list","components","block","h2","children","marginBlockStart","heading","marginBlockEnd","normal","marginBlock","paragraph","blockquote","bullet","value","number","marks","code","link","href","blockRenderer","Component","Value","Block","PortableTextProps","t0","$","_c","props","blocks","t1","Symbol","for","t2","t3","t4","t5","types","schema","name","component","t6","t7","t8","PortableText","_c","PortableTextReact","ComponentProps","BookOpenTextIconProps","BookOpenTextIcon","props","$","_c","t0","t1","t2","t3","t4","t5","Symbol","for","t6","_c","createSanityIcon","isDefined","PortableText","BookOpenTextIcon","SanityHandbook","guidesSections","handbook","groups","map","title","guides","entries","filter","guide","id","_key","description","icon","render","content","PortableText","isDefined","ComponentType","ReactNode","useHandbookContext","documentTypesSections","gettingStartedSections","guidesSections","Entry","id","title","description","icon","render","Section","entries","useSections","$","_c","roles","handbook","t0","_c","isDefined","ComponentProps","Pane","ContentPanel","contentFlex","contentMinimumWidth","useHandbookContext","useSections","ContentProps","Omit","Content","props","$","_c","activeTab","sections","T0","t0","t1","t2","t3","t4","t5","t6","id","entry","flatMap","_temp","find","title","description","render","section","entries","_c","_temp","Box","Card","Text","ComponentProps","SidebarHeadingProps","title","SidebarHeading","t0","$","_c","props","t1","Symbol","for","cursor","outline","t2","t3","_c","ChevronRightIcon","Box","Text","CSSProperties","ComponentProps","ComponentType","PreviewCard","SanityDefaultPreview","useHandbookContext","SidebarTabProps","Omit","id","label","icon","style","SidebarTab","t0","$","_c","Icon","props","activeTab","setActiveTab","setSidebarExpanded","selected","t1","t2","cursor","t3","t4","Symbol","for","opacity","t5","t6","t7","_c","ComponentProps","ComponentType","CommandList","Pane","PaneContent","PaneHeader","SidebarHeading","SidebarTab","sidebarItemHeight","sidebarMaximumWidth","sidebarMinimumWidth","sidebarWidth","useHandbookContext","useSections","SidebarHeadingItem","type","title","SidebarTabItem","id","label","icon","SidebarItem","renderItem","item","SidebarProps","Omit","Sidebar","props","$","_c","sidebarTitle","sections","t0","flatMap","_temp2","items","t1","getItemDisabled","virtualIndex","t2","t3","t4","entries","map","_temp","entry","_c","_temp2","_temp","isDefined","useContext","PaneLayoutContext","useHandbookContext","Content","Sidebar","Panes","$","_c","activeTab","sidebarExpanded","paneLayout","t0","hasContent","collapsed","t1","Symbol","for","t2","t3","_c","isDefined","useTheme_v2","useState","Tool","PaneLayout","toolMinimumWidth","HandbookProvider","HandbookProviderConfig","Panes","HandbookToolProps","tool","HandbookTool","t0","$","_c","t1","options","media","layoutCollapsed","setLayoutCollapsed","t2","Symbol","for","handleCollapse","t3","handleExpand","t4","undefined","t5","t6","minHeight","minWidth","t7","t8","_c","isDefined","configuredEditors","undefined","setConfiguredEditors","editors","isPermittedEditor","email","permitted","includes","Stack","PreviewProps","CalloutContent","SanityHandbookCallout","SanityHandbookCalloutVariant","CalloutPreviewProps","variant","body","CalloutPreview","t0","$","_c","t1","t2","map","_temp2","t3","t4","_key","children","whiteSpace","_temp","join","child","text","_c","BlockDecoratorProps","PortableCode","CodeDecorator","t0","$","_c","children","t1","_c","BlockStyleProps","PortableBlockquote","PortableHeading","PortableParagraph","ParagraphStyle","t0","$","_c","children","t1","HeadingStyle","BlockquoteStyle","_c","ComponentProps","MessageCircleIconProps","MessageCircleIcon","props","$","_c","t0","Symbol","for","t1","_c","ComponentProps","LinkIconProps","LinkIcon","props","$","_c","t0","t1","Symbol","for","t2","_c","createSanityIcon","defineArrayMember","defineField","LinkIcon","SanityHandbookLink","linkAnnotation","name","type","description","icon","preview","select","href","prepare","selection","title","fields","validation","rule","uri","scheme","createSanityIcon","defineArrayMember","defineField","defineType","CalloutPreview","CodeDecorator","ParagraphStyle","MessageCircleIcon","linkAnnotation","SanityHandbookCallout","SanityHandbookCalloutVariant","calloutTypeName","calloutType","name","type","title","description","icon","components","preview","select","variant","body","prepare","selection","fields","initialValue","validation","rule","required","options","list","value","layout","direction","of","styles","component","lists","marks","decorators","annotations","isDefined","PreviewProps","CodeContent","CodePreviewProps","code","language","CodePreview","t0","$","_c","t1","_c","ComponentProps","CodeIconProps","CodeIcon","props","$","_c","t0","t1","Symbol","for","t2","_c","createSanityIcon","defineField","defineType","CodePreview","CodeIcon","SanityHandbookCode","codeTypeName","codeType","name","type","title","description","icon","components","preview","select","code","language","fields","options","list","value","PreviewProps","HorizontalRuleContent","HorizontalRulePreviewProps","HorizontalRulePreview","_props","$","_c","t0","Symbol","for","marginBlock","_c","ComponentProps","SeparatorHorizontalIconProps","SeparatorHorizontalIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","createSanityIcon","defineField","defineType","HorizontalRulePreview","SeparatorHorizontalIcon","SanityHandbookHorizontalRule","horizontalRuleTypeName","horizontalRuleType","name","type","title","description","icon","components","preview","prepare","fields","hidden","isDefined","PreviewProps","ImageContent","ImagePreviewProps","url","alt","caption","ImagePreview","t0","$","_c","t1","Symbol","for","padding","t2","_c","ComponentProps","ImageIconProps","ImageIcon","props","$","_c","t0","t1","t2","Symbol","for","t3","_c","createSanityIcon","defineField","defineType","ImagePreview","ImageIcon","SanityHandbookImage","imageTypeName","imageType","name","type","title","description","icon","components","preview","select","caption","alt","url","fields","options","hotspot","isDefined","PreviewProps","VideoContent","VideoPreviewProps","url","caption","VideoPreview","t0","$","_c","t1","Symbol","for","padding","t2","_c","ComponentProps","FilmIconProps","FilmIcon","props","$","_c","t0","t1","t2","t3","t4","t5","t6","t7","Symbol","for","t8","_c","createSanityIcon","defineField","defineType","VideoPreview","FilmIcon","SanityHandbookVideo","videoTypeName","videoType","name","type","title","description","icon","components","preview","select","caption","url","fields","options","accept","Text","BlockListItemProps","ListItemStyle","t0","$","_c","children","t1","Symbol","for","marginTop","t2","_c","defineArrayMember","defineField","CodeDecorator","ListItemStyle","BlockquoteStyle","HeadingStyle","ParagraphStyle","SanityHandbookBlockDefinition","linkAnnotation","SanityHandbookGuide","calloutTypeName","codeTypeName","horizontalRuleTypeName","imageTypeName","videoTypeName","createGuideContentField","customBlocks","name","type","description","of","styles","title","value","component","lists","marks","decorators","annotations","map","block","schema","createSanityIcon","defineField","defineType","BookOpenTextIcon","SanityHandbookBlockDefinition","createGuideContentField","SanityHandbookGuide","guideTypeName","createGuideType","customBlocks","name","type","title","description","icon","preview","select","subtitle","fields","validation","rule","required","ComponentProps","ListPlusIconProps","ListPlusIcon","props","$","_c","t0","t1","t2","t3","t4","Symbol","for","t5","_c","createSanityIcon","isDefined","defineArrayMember","defineField","defineType","BookTextIcon","ListPlusIcon","SanityHandbook","SanityHandbookGuideGroup","guideTypeName","handbookTypeName","handbookType","name","type","title","description","icon","preview","prepare","fields","of","validation","rule","required","to","select","guide0","guide1","guide2","guide3","selection","shown","filter","guide","formatSubtitle","slice","join","Intl","ListFormat","format","subtitle","createSanityIcon","ComponentType","definePlugin","DocumentDefinition","PortableTextObject","SchemaTypeDefinition","defaultTitle","defaultUndocumentedFieldMessage","pluginName","documentTypes","singletonTypes","HandbookProviderConfig","BookTextIcon","HandbookTool","isPermittedEditor","setConfiguredEditors","calloutType","codeType","horizontalRuleType","imageType","videoType","createGuideType","handbookType","FieldDefinitionBase","handbook","SanityHandbookMetadata","title","description","example","tip","info","caution","SanityHandbookDocumentRole","documents","SanityHandbookBlockDefinition","schema","component","value","SanityHandbookConfig","sidebarTitle","roles","blocks","editors","undocumentedFieldMessage","handbookPlugin","config","resolved","guideType","name","types","map","block","document","newDocumentOptions","templateItems","creationContext","currentUser","type","hiddenTypes","email","filter","templateId","some","startsWith","actions","actionComponents","schemaType","has","action","includes","tools","icon","options","createSanityIcon","CurrentUser","StructureBuilder","BookOpenTextIcon","BookTextIcon","isPermittedEditor","guideTypeName","handbookTypeName","handbookStructure","structureBuilder","context","currentUser","editors","email","listItem","document","documentTypeList","title","icon","child","id","schemaType","defaultOrdering","field","direction","useCurrentUser","isPermittedEditor","useIsHandbookEditor","editors","$","_c","user","t0","email","t1","_c","\"NODE_ENV\"","\"type\"","\"fields\"","\"of\""],"sources":["../../@repo/lib/icons.ts","../../@repo/lib/environment.ts","../../@repo/lib/logger.ts","../src/config/defaults.ts","../src/types.ts","../src/config/documents.ts","../src/icons/book-text.tsx","../../@repo/lib/utils.ts","../src/config/layout.ts","../src/groq/fragments.ts","../src/groq/documents.ts","../src/hooks/use-handbook-document.ts","../src/contexts/handbook.tsx","../src/components/pane-header.tsx","../src/components/content-panel.tsx","../src/components/documentation/hint.tsx","../src/icons/info.tsx","../src/icons/lightbulb.tsx","../src/icons/triangle-alert.tsx","../src/config/hints.ts","../src/components/documentation/hints.tsx","../src/lib/display.ts","../src/lib/schema.ts","../src/components/documentation/field.tsx","../src/sections/document-types.tsx","../src/icons/layout-grid.tsx","../src/pages/document-types-overview.tsx","../src/pages/how-to-use.tsx","../src/sections/getting-started.tsx","../src/components/blocks/callout/content.tsx","../src/components/content/portable/code.tsx","../src/components/content/portable/link.tsx","../src/components/blocks/callout/block.tsx","../src/components/blocks/code/content.tsx","../src/components/blocks/code/block.tsx","../src/components/blocks/horizontal-rule/content.tsx","../src/components/blocks/horizontal-rule/block.tsx","../src/components/caption.tsx","../src/components/blocks/image/content.tsx","../src/components/blocks/image/block.tsx","../src/components/blocks/video/content.tsx","../src/components/blocks/video/block.tsx","../src/components/content/portable/blockquote.tsx","../src/components/content/portable/heading.tsx","../src/components/content/portable/list.tsx","../src/components/content/portable/paragraph.tsx","../src/components/content/portable-text.tsx","../src/icons/book-open-text.tsx","../src/sections/guides.tsx","../src/hooks/use-sections.ts","../src/layouts/content.tsx","../src/components/sidebar/heading.tsx","../src/components/sidebar/tab.tsx","../src/layouts/sidebar.tsx","../src/layouts/panes.tsx","../src/layouts/tool.tsx","../src/lib/editors.ts","../src/components/blocks/callout/preview.tsx","../src/components/decorators.tsx","../src/components/styles.tsx","../src/icons/message-circle.tsx","../src/icons/link.tsx","../src/schemas/annotations/link.ts","../src/schemas/blocks/callout.ts","../src/components/blocks/code/preview.tsx","../src/icons/code.tsx","../src/schemas/blocks/code.ts","../src/components/blocks/horizontal-rule/preview.tsx","../src/icons/separator-horizontal.tsx","../src/schemas/blocks/horizontal-rule.ts","../src/components/blocks/image/preview.tsx","../src/icons/image.tsx","../src/schemas/blocks/image.ts","../src/components/blocks/video/preview.tsx","../src/icons/film.tsx","../src/schemas/blocks/video.ts","../src/components/lists.tsx","../src/schemas/fields/content.ts","../src/schemas/types/guide.ts","../src/icons/list-plus.tsx","../src/schemas/types/handbook.ts","../src/plugin.ts","../src/lib/structure.ts","../src/hooks/use-is-handbook-editor.ts"],"sourcesContent":["import type { ComponentProps, ComponentType } from \"react\";\nimport { createElement } from \"react\";\n\n/** Default props for the plugin's own icons. Icons from `@sanity/icons` already match the Studio. */\nexport const defaultIconProps: ComponentProps<\"svg\"> = { width: \"1em\", height: \"1em\", strokeWidth: 1.5 };\n\n/**\n * Wraps an SVG icon component for use in the Studio.\n *\n * @param icon - The icon to wrap.\n * @param props - Props that override the Studio icon defaults.\n * @returns An icon component.\n */\nexport function createSanityIcon(icon: ComponentType<ComponentProps<\"svg\">>, props?: ComponentProps<\"svg\">) {\n const Icon = icon;\n\n function SanityIcon() {\n return createElement(Icon, { ...defaultIconProps, ...props });\n }\n\n return SanityIcon;\n}\n","/** Whether this is a development build, the only kind in which the plugin logs. */\nexport const isDevelopment = process.env[\"NODE_ENV\"] === \"development\";\n","import { isDevelopment } from \"./environment\";\n\n/** Console style for the prefix, in the blue the Studio uses for its own messages. */\nconst prefixStyle = \"color: #2276fc\";\n\n/**\n * Creates a logger that prefixes messages with the plugin's name and only logs in development builds.\n * Browser consoles show the prefix in blue.\n *\n * @param name - The package name to prefix messages with.\n * @returns Functions that log progress, a warning, or an error, or format a message to throw.\n */\nexport function createLogger(name: string) {\n const prefix = `[${name}]`;\n\n /**\n * Prefixes a message with the package name.\n *\n * @param message - The message.\n * @returns The prefixed message.\n */\n function format(message: string) {\n return `${prefix} ${message}`;\n }\n\n return {\n /**\n * Logs progress worth seeing, such as what a build step did, in development builds only.\n *\n * @param message - What happened.\n */\n info(message: string) {\n if (isDevelopment) console.info(`%c${prefix}%c ${message}`, prefixStyle, \"\");\n },\n /**\n * Logs a warning about something the plugin recovered from, in development builds only.\n *\n * @param message - What happened and what to do about it.\n */\n warn(message: string) {\n if (isDevelopment) console.warn(`%c${prefix}%c ${message}`, prefixStyle, \"\");\n },\n /**\n * Logs an error the plugin couldn't recover from, in development builds only.\n *\n * @param message - What went wrong and what to do about it.\n */\n error(message: string) {\n if (isDevelopment) console.error(`%c${prefix}%c ${message}`, prefixStyle, \"\");\n },\n format,\n };\n}\n","import { createLogger } from \"@repo/lib/logger\";\n\n/** Package name, used as the prefix on every logged message. */\nexport const pluginName = \"@driftime/sanity-plugin-handbook\";\n\n/** The package's logger. */\nexport const logger = createLogger(pluginName);\n\n/** API version for the plugin's queries. */\nexport const apiVersion = \"2026-01-01\";\n\n/** Default title in the Studio's tool menu and at the top of the sidebar. */\nexport const defaultTitle = \"Handbook\";\n\n/** Message shown for fields without a description. */\nexport const defaultUndocumentedFieldMessage =\n \"This field isn't documented yet. Ask your development team for guidance.\";\n","import type {\n KeyedSegment,\n PortableTextBlock,\n PortableTextObject,\n PortableTextSpan,\n PortableTextTextBlock,\n SanityDocument,\n} from \"sanity\";\n\n/** Removes a type's index signatures, so a misspelt property is an error rather than `unknown`. */\nexport type Strict<T> = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K] };\n\n/** Array whose items carry the `_key` Sanity gives array members. */\nexport type SanityKeyedArray<T> = (KeyedSegment & T)[];\n\n/**\n * A Handbook guide, written in rich text and shown in the tool.\n *\n * @public\n */\nexport type SanityHandbookGuide = Strict<SanityDocument> & {\n _type: typeof guideTypeName;\n /** Guide title. */\n title: string;\n /** Short description below the guide heading. */\n description?: string;\n /** Portable Text content. */\n content: SanityKeyedArray<PortableTextBlock>;\n};\n\n/** Schema type name of the guide document. */\nexport const guideTypeName = \"handbook.guide\";\n\n/**\n * A group of guides in the sidebar, in order.\n *\n * @public\n */\nexport interface SanityHandbookGuideGroup {\n /** Group title in the sidebar. */\n title: string;\n /** Guides in the group, in order, or undefined when none have been added. */\n guides?: SanityKeyedArray<SanityHandbookGuide>;\n}\n\n/**\n * The Handbook document, listing the guide groups in sidebar order.\n *\n * @public\n */\nexport type SanityHandbook = Strict<SanityDocument> & {\n _type: typeof handbookTypeName;\n /** Guide groups, in order, or undefined when none have been added. */\n groups?: SanityKeyedArray<SanityHandbookGuideGroup>;\n};\n\n/** Schema type name of the Handbook document. */\nexport const handbookTypeName = \"handbook.handbook\";\n\n/**\n * An image in a guide, with its caption and alternative text.\n *\n * @public\n */\nexport type SanityHandbookImage = Strict<PortableTextObject> & {\n _type: typeof imageTypeName;\n /** Image asset, reduced by the query to its URL. */\n asset?: { url?: string };\n /** Text shown below the image. */\n caption?: string;\n /** Alternative text. */\n alt?: string;\n};\n\n/** Schema type name of the image block. */\nexport const imageTypeName = \"handbook.image\";\n\n/**\n * A video in a guide, with its caption.\n *\n * @public\n */\nexport type SanityHandbookVideo = Strict<PortableTextObject> & {\n _type: typeof videoTypeName;\n /** Video asset, reduced by the query to its URL. */\n asset?: { url?: string };\n /** Text shown below the video. */\n caption?: string;\n};\n\n/** Schema type name of the video block. */\nexport const videoTypeName = \"handbook.video\";\n\n/**\n * A code block, highlighted for its language.\n *\n * @public\n */\nexport type SanityHandbookCode = Strict<PortableTextObject> & {\n _type: typeof codeTypeName;\n /** Code to display. */\n code?: string;\n /** Language used for syntax highlighting. */\n language?: string;\n};\n\n/** Schema type name of the code block. */\nexport const codeTypeName = \"handbook.code\";\n\n/**\n * Kind of callout, which sets its icon and tone.\n *\n * @public\n */\nexport type SanityHandbookCalloutVariant = \"tip\" | \"info\" | \"warning\";\n\n/**\n * A highlighted message in a guide.\n *\n * @public\n */\nexport type SanityHandbookCallout = Strict<PortableTextObject> & {\n _type: typeof calloutTypeName;\n /** Kind of callout. */\n variant: SanityHandbookCalloutVariant;\n /** Portable Text inside the callout, without inline objects. */\n body: SanityKeyedArray<PortableTextTextBlock<PortableTextSpan>>;\n};\n\n/** Schema type name of the callout block. */\nexport const calloutTypeName = \"handbook.callout\";\n\n/**\n * A divider between sections of a guide.\n *\n * @public\n */\nexport type SanityHandbookHorizontalRule = Strict<PortableTextObject> & {\n _type: typeof horizontalRuleTypeName;\n};\n\n/** Schema type name of the horizontal rule block. */\nexport const horizontalRuleTypeName = \"handbook.horizontalRule\";\n\n/**\n * A link on a run of guide text.\n *\n * @public\n */\nexport type SanityHandbookLink = Strict<PortableTextObject> & {\n _type: \"link\";\n /** Web address the link points to. */\n href?: string;\n};\n","import { guideTypeName, handbookTypeName } from \"@/types\";\n\n/** Document types hidden from the create menu. */\nexport const singletonTypes = new Set<string>([handbookTypeName]);\n\n/** Every Handbook document type, hidden from the create menu for people who can't edit them. */\nexport const documentTypes = new Set<string>([handbookTypeName, guideTypeName]);\n","import type { ComponentProps } from \"react\";\n\nexport type BookTextIconProps = ComponentProps<\"svg\">;\n\nexport function BookTextIcon(props: BookTextIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\" />\n <path d=\"M8 11h8\" />\n <path d=\"M8 7h6\" />\n </svg>\n );\n}\n","/** A value that may be null or undefined. */\ntype Nullable<T> = T | null | undefined;\n\n/**\n * Checks whether a value is present. `false`, blank strings, and empty plain objects count as absent,\n * as does an array with no present elements.\n *\n * @param value - The value to check.\n * @returns True if the value is present.\n */\nexport function isDefined<T>(value: Nullable<T> | false): value is T {\n if (value === undefined || value === null || value === false) return false;\n if (typeof value === \"string\") return value.trim() !== \"\";\n if (Array.isArray(value)) return value.some((element) => isDefined(element));\n\n if (typeof value === \"object\") {\n const prototype = Reflect.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return true;\n\n return Object.keys(value).length > 0;\n }\n\n return true;\n}\n\n/**\n * Converts a string to another case.\n *\n * @param value - The string to convert.\n * @param format - The case to convert to.\n * @returns The converted string.\n */\nexport function convertCase(value: string, format: \"kebab\" | \"snake\" | \"camel\" | \"pascal\" | \"title\" | \"sentence\") {\n const words = value\n .replaceAll(/(?<lower>[a-z0-9])(?<upper>[A-Z])/gu, \"$<lower> $<upper>\")\n .replaceAll(/[-_\\s]+/gu, \" \")\n .trim()\n .toLowerCase();\n\n switch (format) {\n case \"kebab\": {\n return words.replaceAll(/\\s+/gu, \"-\");\n }\n case \"snake\": {\n return words.replaceAll(/\\s+/gu, \"_\");\n }\n case \"camel\": {\n return words.replaceAll(/\\s+(?<character>.)/gu, (_match, character: string) => character.toUpperCase());\n }\n case \"pascal\": {\n return words.replaceAll(/(?:^|\\s+)(?<character>.)/gu, (_match, character: string) => character.toUpperCase());\n }\n case \"title\": {\n return words.replaceAll(/\\b\\w/gu, (character) => character.toUpperCase());\n }\n case \"sentence\": {\n return words.replaceAll(/^(?<character>.)/gu, (character) => character.toUpperCase());\n }\n default: {\n return value;\n }\n }\n}\n\n/**\n * Checks whether a value is an object whose keys can be read.\n *\n * @param value - The value to check.\n * @returns True if the value is an object.\n */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\n/**\n * Reads a nested value by following a path of keys.\n *\n * @param value - The object to read from.\n * @param path - The keys to follow.\n * @returns The value, or undefined when the path doesn't exist.\n */\nexport function readPath(value: unknown, path: string[]) {\n let current: unknown = value;\n\n for (const segment of path) {\n if (!isRecord(current)) return undefined;\n\n current = current[segment];\n }\n\n return current;\n}\n","/** Default sidebar width in pixels, until it's resized. */\nexport const sidebarWidth = 350;\n\n/** Minimum sidebar width in pixels before it collapses to a vertical label. */\nexport const sidebarMinimumWidth = 320;\n\n/** Maximum sidebar width in pixels. */\nexport const sidebarMaximumWidth = 640;\n\n/** Minimum content pane width in pixels. */\nexport const contentMinimumWidth = 320;\n\n/** Share of the space the content pane takes relative to the sidebar. */\nexport const contentFlex = 2.5;\n\n/** Width in pixels of a pane collapsed to a vertical label. */\nexport const collapsedPaneWidth = 51;\n\n/** Estimated sidebar row height in pixels, corrected once rows are measured. */\nexport const sidebarItemHeight = 37;\n\n/** Minimum tool width in pixels before the Studio scrolls horizontally. */\nexport const toolMinimumWidth = 320;\n\n/** Maximum width in pixels of the text column in the content pane. */\nexport const contentWidth = 640;\n\n/** Space in pixels on either side of the text column. */\nexport const contentPaddingInline = 20;\n\n/** Space in pixels above a content panel's heading. */\nexport const contentPaddingBlockStart = 32;\n\n/** Space in pixels below a content panel's last element, so long content doesn't end at the pane's edge. */\nexport const contentPaddingBlockEnd = 220;\n\n/** Vertical spacing in pixels for guide content and content panels. */\nexport const contentSpacing = {\n section: 48,\n paragraph: 16,\n heading: 48,\n media: 24,\n callout: 32,\n blockquote: 32,\n list: 32,\n nestedList: 12,\n rule: 40,\n};\n","import { imageTypeName, videoTypeName } from \"@/types\";\n\n/** Expands an image or video block's asset to just its URL. */\nconst assetUrlFragment = `\"asset\": { \"url\": asset.asset->url }`;\n\n/** Expands the image and video blocks in guide content. */\nconst guideContentFragment = `\n _type == \"${imageTypeName}\" => { ..., ${assetUrlFragment} },\n _type == \"${videoTypeName}\" => { ..., ${assetUrlFragment} }\n`;\n\n/** Expands a guide reference, including the asset URLs in its content. */\nexport const guideFragment = `...@-> {\n ...,\n content[] { ..., ${guideContentFragment} }\n}`;\n","import { guideFragment } from \"@/groq/fragments\";\nimport { guideTypeName, handbookTypeName } from \"@/types\";\n\n/** Handbook document with its guide references expanded. */\nexport const handbookQuery = `\n *[_type == \"${handbookTypeName}\"][0] {\n ...,\n groups[] {\n ...,\n guides[] {\n ...,\n ${guideFragment}\n }\n }\n }\n`;\n\n/** Handbook and guide documents, listened to so the tool refetches when they change. */\nexport const handbookDocumentsQuery = `*[_type == \"${handbookTypeName}\" || _type == \"${guideTypeName}\"]`;\n","import { useEffect, useState } from \"react\";\nimport { useDocumentStore } from \"sanity\";\n\nimport { apiVersion } from \"@/config/defaults\";\nimport { handbookDocumentsQuery, handbookQuery } from \"@/groq/documents\";\nimport type { SanityHandbook } from \"@/types\";\n\n/**\n * Reads the published Handbook document with its guides expanded, updating when any Handbook document is published.\n *\n * @returns The Handbook document, or undefined while it loads or when there isn't one.\n */\nexport function useHandbookDocument() {\n const documentStore = useDocumentStore();\n const [handbook, setHandbook] = useState<SanityHandbook>();\n\n useEffect(() => {\n const subscription = documentStore\n .listenQuery(\n { fetch: handbookQuery, listen: handbookDocumentsQuery },\n {},\n { apiVersion, perspective: \"published\", throttleTime: 1000 },\n )\n .subscribe((result: SanityHandbook | null) => {\n setHandbook(result ?? undefined);\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [documentStore]);\n\n return handbook;\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { createContext, useContext, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { logger } from \"@/config/defaults\";\nimport { useHandbookDocument } from \"@/hooks/use-handbook-document\";\nimport type { SanityHandbookBlockDefinition, SanityHandbookDocumentRole } from \"@/plugin\";\nimport type { SanityHandbook } from \"@/types\";\n\n/** Plugin configuration with every default applied. */\nexport interface HandbookProviderConfig {\n /** Heading at the top of the sidebar. */\n sidebarTitle: string;\n /** Document roles from the plugin configuration. */\n roles: SanityHandbookDocumentRole[];\n /** Custom blocks added by the site. */\n blocks: SanityHandbookBlockDefinition[];\n /** Message shown for fields without a description. */\n undocumentedFieldMessage: string;\n}\n\n/** Provider configuration plus the tab and sidebar state shared by the panes. */\ntype HandbookContextValues = HandbookProviderConfig & {\n /** ID of the selected tab, or undefined when none is selected. */\n activeTab: string | undefined;\n /** Whether the sidebar is expanded. */\n sidebarExpanded: boolean;\n /** Handbook document fetched from the dataset, or undefined while it loads or when there isn't one. */\n handbook: SanityHandbook | undefined;\n /** Selects a tab by ID. */\n setActiveTab: (id: string) => void;\n /** Expands or collapses the sidebar. */\n setSidebarExpanded: (expanded: boolean) => void;\n};\n\nexport type HandbookProviderProps = HandbookProviderConfig & {\n children: ReactNode;\n};\n\nconst HandbookContext = createContext<HandbookContextValues | undefined>(undefined);\n\n/**\n * Reads the Handbook context.\n *\n * @returns The plugin configuration and the shared pane state.\n * @throws When used outside the provider.\n */\nexport function useHandbookContext() {\n const handbookContext = useContext(HandbookContext);\n\n if (!isDefined(handbookContext)) {\n throw new Error(logger.format(\"Handbook context is only available inside the Handbook provider.\"));\n }\n\n return handbookContext;\n}\n\n/**\n * Provides the plugin configuration, the Handbook document, and the tab state shared by the sidebar and\n * content panes.\n *\n * @returns The provider.\n */\nexport function HandbookProvider({\n sidebarTitle,\n roles,\n blocks,\n undocumentedFieldMessage,\n children,\n}: HandbookProviderProps) {\n const [activeTab, setActiveTab] = useState<string | undefined>(undefined);\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const handbook = useHandbookDocument();\n\n return (\n <HandbookContext\n value={{\n sidebarTitle,\n roles,\n blocks,\n undocumentedFieldMessage,\n activeTab,\n sidebarExpanded,\n handbook,\n setActiveTab,\n setSidebarExpanded,\n }}\n >\n {children}\n </HandbookContext>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { Box, Card, Flex, Layer, LayerProvider, Text, useElementSize, useTheme_v2 } from \"@sanity/ui\";\nimport { useContext } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { PaneContext } from \"sanity/_singletons\";\n\nimport { collapsedPaneWidth } from \"@/config/layout\";\n\nexport type PaneHeaderProps = ComponentProps<\"div\"> & {\n title: string;\n backButton?: ReactNode;\n};\n\nexport function PaneHeader({ title, backButton, style, ...props }: PaneHeaderProps) {\n const { color } = useTheme_v2();\n const pane = useContext(PaneContext);\n const paneSize = useElementSize(pane?.rootElement ?? null);\n\n const collapsed = pane?.collapsed ?? false;\n const isLast = pane?.isLast ?? false;\n const paneHeight = paneSize?.border.height ?? 0;\n const collapsedWidth = paneHeight > 0 ? paneHeight : window.innerHeight;\n const { bg, fg } = color.selectable.default.enabled;\n\n function handleTitleClick() {\n if (collapsed) return;\n pane?.collapse();\n }\n\n function handleLayoutClick() {\n if (!collapsed) return;\n pane?.expand();\n }\n\n return (\n <LayerProvider zOffset={100}>\n <Layer\n data-collapsed={collapsed ? \"\" : undefined}\n style={{ lineHeight: 0, position: \"sticky\", top: 0, ...style }}\n {...props}\n >\n <Card tone=\"inherit\" data-collapsed={collapsed ? \"\" : undefined}>\n <Flex\n direction=\"column\"\n gap={3}\n onClick={handleLayoutClick}\n padding={3}\n sizing=\"border\"\n style={{\n width: collapsed ? collapsedWidth : undefined,\n transform: collapsed ? \"rotate(90deg)\" : undefined,\n transformOrigin: `calc(${collapsedPaneWidth}px / 2)`,\n }}\n >\n <Flex align=\"flex-start\" gap={3}>\n {isDefined(backButton) && <Box flex=\"none\">{backButton}</Box>}\n <Card\n flex={1}\n onClick={handleTitleClick}\n padding={2}\n paddingLeft={isDefined(backButton) ? 1 : 2}\n tabIndex={isLast && !collapsed ? -1 : 0}\n style={{ backgroundColor: bg, minWidth: 0 }}\n __unstable_focusRing\n >\n <Flex align=\"center\" gap={1}>\n <Text\n size={1}\n textOverflow=\"ellipsis\"\n weight=\"semibold\"\n style={{ color: fg, cursor: \"default\", minWidth: 0, outline: \"none\" }}\n >\n {title}\n </Text>\n </Flex>\n </Card>\n </Flex>\n </Flex>\n </Card>\n </Layer>\n </LayerProvider>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { ArrowLeftIcon } from \"@sanity/icons/ArrowLeft\";\nimport { Box, Button, Heading, Stack, Text } from \"@sanity/ui\";\nimport { useContext } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { PaneLayoutContext } from \"sanity/_singletons\";\nimport { PaneContent } from \"sanity/structure\";\n\nimport { PaneHeader } from \"@/components/pane-header\";\nimport { contentPaddingBlockEnd, contentPaddingBlockStart, contentPaddingInline, contentWidth } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\n\nexport type ContentPanelProps = Omit<ComponentProps<typeof PaneContent>, \"id\" | \"title\"> & {\n id: string;\n title: string;\n description?: string;\n children: ReactNode;\n};\n\nexport function ContentPanel({ id, title, description, children, ...props }: ContentPanelProps) {\n const { setSidebarExpanded } = useHandbookContext();\n const paneLayout = useContext(PaneLayoutContext);\n\n return (\n <>\n <PaneHeader\n title={title}\n backButton={\n paneLayout?.collapsed === true && (\n <Button\n aria-label=\"Back\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n onClick={() => {\n setSidebarExpanded(true);\n }}\n />\n )\n }\n />\n <PaneContent id={`panel-${id}`} aria-labelledby={id} overflow=\"auto\" {...props}>\n <Box\n style={{\n maxWidth: contentWidth,\n boxSizing: \"border-box\",\n marginInline: \"auto\",\n paddingInline: contentPaddingInline,\n paddingBlockStart: contentPaddingBlockStart,\n paddingBlockEnd: contentPaddingBlockEnd,\n }}\n >\n <Stack marginBottom={6} gap={5}>\n <Heading as=\"h2\" size={4}>\n {title}\n </Heading>\n {isDefined(description) && (\n <Text size={1} muted>\n {description}\n </Text>\n )}\n </Stack>\n {children}\n </Box>\n </PaneContent>\n </>\n );\n}\n","import { Box, Button, Stack, Text, useClickOutsideEvent } from \"@sanity/ui\";\nimport { Popover } from \"@sanity/ui/popover\";\nimport { useRef } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nexport type FieldHintProps = Omit<ComponentProps<typeof Popover>, \"content\" | \"open\" | \"children\"> & {\n label: string;\n icon: ReactNode;\n open: boolean;\n children: string;\n onOpen: () => void;\n onClose: () => void;\n};\n\nexport function FieldHint({ label, icon, open, children, onOpen, onClose, ...props }: FieldHintProps) {\n const buttonReference = useRef<HTMLButtonElement>(null);\n const popoverReference = useRef<HTMLDivElement>(null);\n\n useClickOutsideEvent(open ? onClose : undefined, () => [buttonReference.current, popoverReference.current]);\n\n return (\n <Popover\n open={open}\n placement=\"top\"\n portal\n radius={2}\n shadow={2}\n content={\n <div ref={popoverReference}>\n <Box padding={3} style={{ maxWidth: 280 }}>\n <Stack gap={3}>\n <Text size={1} weight=\"semibold\">\n {label}\n </Text>\n <Text size={1} muted>\n {children}\n </Text>\n </Stack>\n </Box>\n </div>\n }\n {...props}\n >\n <Button\n ref={buttonReference}\n aria-label={label}\n fontSize={2}\n icon={icon}\n mode=\"bleed\"\n padding={1}\n onClick={open ? onClose : onOpen}\n onPointerEnter={(event) => {\n if (event.pointerType === \"mouse\") onOpen();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"mouse\") onClose();\n }}\n />\n </Popover>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type InfoIconProps = ComponentProps<\"svg\">;\n\nexport function InfoIcon(props: InfoIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type LightbulbIconProps = ComponentProps<\"svg\">;\n\nexport function LightbulbIcon(props: LightbulbIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\" />\n <path d=\"M9 18h6\" />\n <path d=\"M10 22h4\" />\n </svg>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type TriangleAlertIconProps = ComponentProps<\"svg\">;\n\nexport function TriangleAlertIcon(props: TriangleAlertIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import type { ComponentProps, ComponentType } from \"react\";\n\nimport { InfoIcon } from \"@/icons/info\";\nimport { LightbulbIcon } from \"@/icons/lightbulb\";\nimport { TriangleAlertIcon } from \"@/icons/triangle-alert\";\nimport type { SanityHandbookMetadata } from \"@/plugin\";\n\n/** A kind of field hint: the metadata property it comes from and how it's shown. */\ninterface HintKind {\n /** Property in the field's handbook metadata that holds the hint. */\n name: keyof Pick<SanityHandbookMetadata, \"tip\" | \"info\" | \"caution\">;\n /** Heading above the hint, and the icon's accessible label. */\n label: string;\n /** Icon for the hint kind. */\n icon: ComponentType<ComponentProps<\"svg\">>;\n}\n\n/** Hint kinds, in display order. */\nexport const hintKinds: HintKind[] = [\n { name: \"tip\", label: \"Tip\", icon: LightbulbIcon },\n { name: \"info\", label: \"Information\", icon: InfoIcon },\n { name: \"caution\", label: \"Caution\", icon: TriangleAlertIcon },\n];\n","import { defaultIconProps } from \"@repo/lib/icons\";\nimport { isDefined } from \"@repo/lib/utils\";\nimport { Flex } from \"@sanity/ui\";\nimport type { FlexProps } from \"@sanity/ui\";\nimport { useState } from \"react\";\n\nimport { FieldHint } from \"@/components/documentation/hint\";\nimport { hintKinds } from \"@/config/hints\";\nimport type { SanityHandbookMetadata } from \"@/plugin\";\n\nexport type FieldHintsProps = FlexProps & Pick<SanityHandbookMetadata, \"tip\" | \"info\" | \"caution\">;\n\nexport function FieldHints({ tip, info, caution, ...props }: FieldHintsProps) {\n const [openHint, setOpenHint] = useState<string | undefined>(undefined);\n\n const hints = { tip, info, caution };\n\n function closeHint() {\n setOpenHint(undefined);\n }\n\n return (\n <Flex align=\"center\" gap={2} {...props}>\n {hintKinds.flatMap(({ name, label, icon: Icon }) => {\n const hint = hints[name];\n if (!isDefined(hint)) return [];\n\n return (\n <FieldHint\n key={name}\n label={label}\n icon={<Icon {...defaultIconProps} />}\n open={openHint === name}\n onOpen={() => {\n setOpenHint(name);\n }}\n onClose={closeHint}\n >\n {hint}\n </FieldHint>\n );\n })}\n </Flex>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { convertCase } from \"@repo/lib/utils\";\nimport type { ComponentProps, ComponentType, ReactNode } from \"react\";\n\n/**\n * Works out a schema type's label: its Handbook title, then its schema title, then its name in title case.\n *\n * @param type - The schema type or field.\n * @returns The label.\n */\nexport function resolveTitle(type: { name: string; title?: string; handbook?: { title?: string } }) {\n const { name, title, handbook } = type;\n\n return handbook?.title ?? title ?? convertCase(name, \"title\");\n}\n\n/**\n * Works out a schema type's description, preferring its Handbook description and ignoring non-string\n * schema descriptions.\n *\n * @param type - The schema type or field.\n * @returns The description, or undefined when there isn't one.\n */\nexport function resolveDescription(type: { description?: unknown; handbook?: { description?: string } }) {\n const { description, handbook } = type;\n\n return handbook?.description ?? (typeof description === \"string\" ? description : undefined);\n}\n\n/**\n * Gets a schema type's icon as a component, redrawn at the plugin's icon size to match the built-in icons.\n * String icons are ignored.\n *\n * @param type - The schema type.\n * @returns The icon component, or undefined when there isn't one.\n */\nexport function resolveIcon(type: { icon?: ReactNode | ComponentType<ComponentProps<\"svg\">> }) {\n return typeof type.icon === \"function\" ? createSanityIcon(type.icon) : undefined;\n}\n","import { isDefined, isRecord, readPath } from \"@repo/lib/utils\";\nimport type { FieldDefinition, Schema } from \"sanity\";\n\n/** A schema field as Sanity compiles it, with its type resolved to an object. */\ninterface CompiledField {\n /** Field name. */\n name: string;\n /** Resolved type, with its name and base type details. */\n type: {\n name: string;\n title?: string;\n description?: string;\n fields?: unknown[];\n of?: unknown[];\n handbook?: FieldDefinition[\"handbook\"];\n };\n /** Title set on an inline object definition. */\n title?: string;\n /** Description set on an inline object definition. */\n description?: string;\n /** Fields defined on an inline object definition. */\n fields?: unknown[];\n /** Members defined on an inline array definition. */\n of?: unknown[];\n /** Handbook documentation for the field. */\n handbook?: FieldDefinition[\"handbook\"];\n}\n\n/** A schema field in the shape the Handbook renders, with its type reduced to a name. */\nexport interface NormalizedField {\n /** Field name. */\n name: string;\n /** Type name. */\n type: string;\n /** Title, falling back to the base type's. */\n title?: string;\n /** Description, falling back to the base type's. */\n description?: string;\n /** Handbook documentation for the field. */\n handbook?: FieldDefinition[\"handbook\"];\n /** Subfields, on object types. */\n fields?: NormalizedField[];\n /** Members, on array types. */\n of?: NormalizedField[];\n}\n\n/** Types whose subfields aren't shown. */\nconst opaqueTypes = new Set([\n \"block\",\n \"boolean\",\n \"crossDatasetReference\",\n \"date\",\n \"datetime\",\n \"file\",\n \"geopoint\",\n \"image\",\n \"number\",\n \"reference\",\n \"slug\",\n \"string\",\n \"text\",\n \"url\",\n]);\n\n/** Fields Sanity adds to its built-in types when compiling the schema. */\nconst inheritedFieldNames: Partial<Record<string, Set<string>>> = {\n block: new Set([\"children\", \"level\", \"listItem\", \"markDefs\", \"style\"]),\n file: new Set([\"asset\", \"media\"]),\n geopoint: new Set([\"alt\", \"lat\", \"lng\"]),\n image: new Set([\"asset\", \"crop\", \"hotspot\", \"media\"]),\n slug: new Set([\"current\", \"source\"]),\n};\n\n/**\n * Checks whether a value is a compiled schema field with a type object.\n *\n * @param value - The value to check.\n * @returns True if the value is a compiled field.\n */\nfunction isCompiledField(value: unknown): value is CompiledField {\n if (!isRecord(value)) return false;\n if (!(\"name\" in value) || !(\"type\" in value)) return false;\n\n return isRecord(value[\"type\"]);\n}\n\n/**\n * Checks whether a value has a `fields` array.\n *\n * @param value - The value to check.\n * @returns True if the value has a `fields` array.\n */\nfunction hasFieldsArray(value: unknown): value is { fields: unknown[] } {\n return isRecord(value) && Array.isArray(value[\"fields\"]);\n}\n\n/**\n * Checks whether a value has an `of` array.\n *\n * @param value - The value to check.\n * @returns True if the value has an `of` array.\n */\nfunction hasOfArray(value: unknown): value is { of: unknown[] } {\n return isRecord(value) && Array.isArray(value[\"of\"]);\n}\n\n/**\n * Reads the type name a value declares.\n *\n * @param value - The value.\n * @returns The type name, or undefined when there isn't one.\n */\nfunction getTypeName(value: unknown) {\n const typeName = readPath(value, [\"type\"]);\n\n return typeof typeName === \"string\" ? typeName : undefined;\n}\n\n/**\n * Reads the parent type name from a compiled schema type.\n *\n * @param resolvedType - The compiled schema type.\n * @returns The parent type name, or undefined when there isn't one.\n */\nfunction getParentTypeName(resolvedType: unknown) {\n const parentName = readPath(resolvedType, [\"type\", \"name\"]);\n\n return isDefined(parentName) ? String(parentName) : undefined;\n}\n\n/**\n * Converts a compiled schema field into the shape the Handbook renders. Types already seen are tracked,\n * so a type that refers to itself doesn't recurse forever.\n *\n * @param field - A compiled field or a plain field definition.\n * @param visited - Type names already seen.\n * @returns The normalised field.\n */\nfunction normalizeField(field: unknown, visited = new Set<string>()) {\n if (isCompiledField(field)) {\n const typeName = field.type.name;\n\n const result: NormalizedField = {\n name: field.name,\n type: typeName,\n title: field.title ?? field.type.title,\n description: field.description ?? field.type.description,\n // Sanity compiles a field's own properties onto its type, so that's where its documentation ends up.\n handbook: field.handbook ?? field.type.handbook,\n };\n\n if (!visited.has(typeName)) {\n const shouldTrack = !opaqueTypes.has(typeName) && typeName !== \"object\" && typeName !== \"array\";\n const next = shouldTrack ? new Set([...visited, typeName]) : visited;\n const fieldSource = hasFieldsArray(field) ? field : field.type;\n const ofSource = hasOfArray(field) ? field : field.type;\n\n if (hasFieldsArray(fieldSource)) {\n result.fields = fieldSource.fields.map((subfield) => normalizeField(subfield, next));\n }\n if (hasOfArray(ofSource)) result.of = ofSource.of.map((member) => normalizeField(member, next));\n }\n\n return result;\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion -- An already normalised value carries no marker to narrow on.\n return field as NormalizedField;\n}\n\n/**\n * Lists the fields a custom type adds to an opaque base type, leaving out the base type's own.\n *\n * @param resolvedType - The compiled or normalised schema type.\n * @param parentName - The opaque base type's name.\n * @returns The custom fields, or undefined when there are none.\n */\nfunction resolveCustomFields(resolvedType: unknown, parentName: string) {\n if (!hasFieldsArray(resolvedType)) return undefined;\n\n const inherited = inheritedFieldNames[parentName];\n\n const customFields = resolvedType.fields\n .map((field: unknown) => normalizeField(field))\n .filter((field) => !isDefined(inherited) || !inherited.has(field.name));\n\n return isDefined(customFields) ? customFields : undefined;\n}\n\n/**\n * Normalises a list of raw fields.\n *\n * @param items - The raw fields.\n * @returns The normalised fields, or undefined when there are none.\n */\nfunction resolveNormalizedFields(items: unknown[]) {\n const normalized = items.map((item) => normalizeField(item));\n\n return isDefined(normalized) ? normalized : undefined;\n}\n\n/**\n * Normalises array members, leaving out opaque types.\n *\n * @param members - The raw array members.\n * @returns The normalised members, or undefined when there are none.\n */\nfunction resolveNormalizedMembers(members: unknown[]) {\n const normalized = members.map((member) => normalizeField(member)).filter((member) => !opaqueTypes.has(member.type));\n\n return isDefined(normalized) ? normalized : undefined;\n}\n\n/**\n * Works out a value's parent type name, looking it up in the schema when the value only names its type.\n *\n * @param value - The value.\n * @param schema - The Sanity schema.\n * @returns The parent type name, or undefined when there isn't one.\n */\nfunction resolveParentName(value: unknown, schema: Schema) {\n const direct = getParentTypeName(value);\n if (isDefined(direct)) return direct;\n\n const typeName = getTypeName(value);\n if (!isDefined(typeName)) return undefined;\n\n const resolvedType = schema.get(typeName);\n return isDefined(resolvedType) ? getParentTypeName(resolvedType) : undefined;\n}\n\n/**\n * Works out the fields a value shows, whether it holds them directly, has array members that do, or\n * names a type that does.\n *\n * @param value - The value.\n * @param schema - The Sanity schema.\n * @returns The fields, or undefined when there are none.\n */\nfunction resolveFields(value: unknown, schema: Schema) {\n if (hasFieldsArray(value)) {\n const parentName = resolveParentName(value, schema);\n if (isDefined(parentName) && opaqueTypes.has(parentName)) return resolveCustomFields(value, parentName);\n\n return resolveNormalizedFields(value.fields);\n }\n\n if (hasOfArray(value)) {\n const members = value.of;\n\n if (members.length === 1) {\n const [member] = members;\n const normalized = normalizeField(member);\n\n if (opaqueTypes.has(normalized.type)) return undefined;\n\n if (hasFieldsArray(normalized)) {\n const parentName = resolveParentName(normalized, schema);\n if (isDefined(parentName) && opaqueTypes.has(parentName)) return resolveCustomFields(normalized, parentName);\n\n return resolveNormalizedFields(normalized.fields);\n }\n\n const memberType = schema.get(normalized.type);\n if (isDefined(memberType)) return resolveFields(memberType, schema);\n }\n\n return resolveNormalizedMembers(members);\n }\n\n return undefined;\n}\n\n/**\n * Works out a field's visible subfields by looking through the schema.\n *\n * @param field - The field.\n * @param schema - The Sanity schema.\n * @returns The subfields, or undefined when there are none.\n */\nexport function getSubfields(field: FieldDefinition | NormalizedField, schema: Schema) {\n if (opaqueTypes.has(field.type)) return undefined;\n\n const directFields = resolveFields(field, schema);\n if (isDefined(directFields)) return directFields;\n\n const resolvedType = schema.get(field.type);\n if (!isDefined(resolvedType)) return undefined;\n\n const parentName = getParentTypeName(resolvedType);\n if (isDefined(parentName) && opaqueTypes.has(parentName)) {\n return resolveCustomFields(resolvedType, parentName);\n }\n\n return resolveFields(resolvedType, schema);\n}\n","import { convertCase, isDefined } from \"@repo/lib/utils\";\nimport { ChevronDownIcon } from \"@sanity/icons/ChevronDown\";\nimport { ChevronRightIcon } from \"@sanity/icons/ChevronRight\";\nimport { Box, Card, Flex, Stack, Text } from \"@sanity/ui\";\nimport type { StackProps } from \"@sanity/ui\";\nimport { useState } from \"react\";\nimport type { FieldDefinition } from \"sanity\";\nimport { useSchema } from \"sanity\";\n\nimport { FieldHints } from \"@/components/documentation/hints\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { resolveDescription, resolveTitle } from \"@/lib/display\";\nimport type { NormalizedField } from \"@/lib/schema\";\nimport { getSubfields } from \"@/lib/schema\";\n\nexport type DocumentedFieldProps = StackProps & {\n field: FieldDefinition | NormalizedField;\n ancestors?: Set<string>;\n};\n\n/** Shared empty set, so the default prop keeps the same reference between renders. */\nconst noAncestors = new Set<string>();\n\nexport function DocumentedField({ field, ancestors = noAncestors, ...props }: DocumentedFieldProps) {\n const schema = useSchema();\n const { undocumentedFieldMessage } = useHandbookContext();\n const [expanded, setExpanded] = useState(false);\n\n const effectiveTitle = resolveTitle(field);\n const effectiveDescription = resolveDescription(field) ?? undocumentedFieldMessage;\n\n const { example, tip, info, caution } = field.handbook ?? {};\n const hasHints = isDefined([tip, info, caution]);\n\n const isCycle = ancestors.has(field.type);\n const subfields = isCycle ? undefined : getSubfields(field, schema);\n const hasSubfields = isDefined(subfields);\n\n return (\n <Stack gap={2} {...props}>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1} gap={2}>\n <Box flex={1}>\n <Flex align=\"center\" gap={2}>\n <Text size={1} weight=\"medium\">\n {effectiveTitle}\n </Text>\n <Text size={0} muted style={{ marginTop: 2 }}>\n {field.type}\n </Text>\n </Flex>\n </Box>\n {hasHints && <FieldHints tip={tip} info={info} caution={caution} />}\n </Flex>\n {isDefined(effectiveDescription) && (\n <Text size={1} muted>\n {effectiveDescription}\n </Text>\n )}\n {isDefined(example) && (\n <Box marginTop={1}>\n <Text size={1} muted style={{ fontStyle: \"italic\" }}>\n e.g. {example}\n </Text>\n </Box>\n )}\n </Stack>\n {isCycle && (\n <Box marginTop={2}>\n <Text size={1} muted style={{ fontStyle: \"italic\" }}>\n See {convertCase(field.type, \"title\")} above.\n </Text>\n </Box>\n )}\n {hasSubfields && (\n <>\n <Card\n as=\"button\"\n padding={3}\n radius={2}\n sizing=\"border\"\n tone=\"transparent\"\n onClick={() => {\n setExpanded(!expanded);\n }}\n style={{ marginTop: 16, textAlign: \"left\", border: \"none\", cursor: \"pointer\" }}\n >\n <Flex align=\"center\" gap={2}>\n <Text size={0}>{expanded ? <ChevronDownIcon /> : <ChevronRightIcon />}</Text>\n <Text size={1} muted weight=\"medium\">\n {subfields.length} subfield{subfields.length === 1 ? \"\" : \"s\"}\n </Text>\n </Flex>\n </Card>\n {expanded && (\n <Box\n style={{\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 16,\n borderLeft: \"1px solid var(--card-border-color)\",\n }}\n >\n <Stack gap={5}>\n {subfields.map((subfield) => (\n <DocumentedField\n key={subfield.name}\n field={subfield}\n ancestors={new Set([...ancestors, field.type])}\n />\n ))}\n </Stack>\n </Box>\n )}\n </>\n )}\n </Stack>\n );\n}\n","import { DocumentedField } from \"@/components/documentation/field\";\nimport { contentSpacing } from \"@/config/layout\";\nimport { resolveDescription, resolveIcon, resolveTitle } from \"@/lib/display\";\nimport type { SanityHandbookDocumentRole } from \"@/plugin\";\n\n/**\n * Builds a sidebar section for each document role.\n *\n * @param roles - The configured document roles.\n * @returns One section per role, with an entry per document type.\n */\nexport function documentTypesSections(roles: SanityHandbookDocumentRole[]) {\n return roles.map(({ title, documents }) => ({\n title,\n entries: documents.map((document) => ({\n id: document.name,\n title: resolveTitle(document),\n description: resolveDescription(document),\n icon: resolveIcon(document),\n render: () => (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: contentSpacing.section }}>\n {document.fields.map((field) => (\n <DocumentedField key={field.name} field={field} />\n ))}\n </div>\n ),\n })),\n }));\n}\n","import type { ComponentProps } from \"react\";\n\nexport type LayoutGridIconProps = ComponentProps<\"svg\">;\n\nexport function LayoutGridIcon(props: LayoutGridIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\" />\n </svg>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { ChevronRightIcon } from \"@sanity/icons/ChevronRight\";\nimport { Box, Card, Flex, Stack, Text } from \"@sanity/ui\";\n\nimport { contentSpacing } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { resolveDescription, resolveIcon, resolveTitle } from \"@/lib/display\";\n\nexport function DocumentTypesOverview() {\n const { roles, setActiveTab, setSidebarExpanded } = useHandbookContext();\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: contentSpacing.section }}>\n {roles.map((role) => {\n const { title, description, documents } = role;\n\n return (\n <Stack key={title} gap={2}>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n </Flex>\n {isDefined(description) && (\n <Text size={1} muted>\n {description}\n </Text>\n )}\n </Stack>\n <Box marginTop={1}>\n <Stack gap={2}>\n {documents.map((document) => {\n const Icon = resolveIcon(document);\n const documentDescription = resolveDescription(document);\n\n return (\n <Card\n key={document.name}\n as=\"button\"\n padding={3}\n radius={2}\n sizing=\"border\"\n tone=\"inherit\"\n onClick={() => {\n setActiveTab(document.name);\n setSidebarExpanded(false);\n }}\n style={{\n width: \"calc(100% + 24px)\",\n marginLeft: \"-12px\",\n textAlign: \"left\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n >\n <Flex align=\"center\" gap={3}>\n <Box flex={1}>\n <Stack gap={3}>\n <Flex align=\"center\" gap={2} style={{ marginLeft: \"-4px\" }}>\n {isDefined(Icon) && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ width: 25, height: 25, color: \"var(--card-icon-color)\" }}\n >\n <Icon />\n </Flex>\n )}\n <Text size={1} weight=\"medium\">\n {resolveTitle(document)}\n </Text>\n </Flex>\n {isDefined(documentDescription) && (\n <Box paddingBottom={1}>\n <Text size={1} muted>\n {documentDescription}\n </Text>\n </Box>\n )}\n </Stack>\n </Box>\n <Box flex=\"none\" style={{ opacity: 0.5 }}>\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n </Flex>\n </Card>\n );\n })}\n </Stack>\n </Box>\n </Stack>\n );\n })}\n </div>\n );\n}\n","import { defaultIconProps } from \"@repo/lib/icons\";\nimport { Flex, Stack, Text } from \"@sanity/ui\";\n\nimport { hintKinds } from \"@/config/hints\";\nimport { contentSpacing } from \"@/config/layout\";\n\n/** What each hint kind means, shown next to its icon as a key. */\nconst hintDescriptions = {\n tip: \"Tips and suggested practices for people editing content.\",\n info: \"More detail about how and where the field is used.\",\n caution: \"Warnings about restrictions or problems the field can cause.\",\n} satisfies Record<(typeof hintKinds)[number][\"name\"], string>;\n\nexport function HowToUse() {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: contentSpacing.section }}>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Navigating the Handbook\n </Text>\n </Flex>\n <Text size={1} muted>\n The sidebar lists everything in the Handbook: these introductory pages first, then the document types you can\n create, grouped by their role on the site, and then any guides your team has written. Select an entry to open\n it here.\n </Text>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Understanding Fields\n </Text>\n </Flex>\n <Text size={1} muted>\n Selecting a document type lists its fields, with each field’s name, the kind of value it holds, and what it’s\n for. This documentation is generated from the content model, so it always matches what you see in the editor.\n </Text>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Hints and Warnings\n </Text>\n </Flex>\n <Text size={1} muted>\n Icons next to a field’s name hold extra guidance that would make its description too long. Hover over or click\n an icon to read it, and use the key below to see what each icon means.\n </Text>\n <Stack gap={3} marginTop={2}>\n {hintKinds.map(({ name, icon: Icon }) => (\n <Flex key={name} align=\"center\" gap={3}>\n <Flex align=\"center\" flex=\"none\" style={{ fontSize: \"16px\", color: \"var(--card-icon-color)\" }}>\n <Icon {...defaultIconProps} />\n </Flex>\n <Text size={1} muted>\n {hintDescriptions[name]}\n </Text>\n </Flex>\n ))}\n </Stack>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Nested Fields\n </Text>\n </Flex>\n <Text size={1} muted>\n Some fields contain subfields, such as a content block with a heading and body text. A button below the\n description shows how many there are and expands to list them, each documented like any other field.\n </Text>\n </Stack>\n <Stack gap={3}>\n <Flex align=\"center\" paddingY={1}>\n <Text size={1} weight=\"medium\">\n Guides\n </Text>\n </Flex>\n <Text size={1} muted>\n Below the document types, you may find guides written by your team rather than generated from the content\n model. They cover things a field description can’t, such as house style, editorial process, and how everything\n fits together.\n </Text>\n </Stack>\n </div>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\n\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { LayoutGridIcon } from \"@/icons/layout-grid\";\nimport { DocumentTypesOverview } from \"@/pages/document-types-overview\";\nimport { HowToUse } from \"@/pages/how-to-use\";\n\n/**\n * Builds the section for the plugin's introductory pages.\n *\n * @returns One section listing the built-in pages.\n */\nexport function gettingStartedSections() {\n return [\n {\n title: \"Getting Started\",\n entries: [\n {\n id: \"how-to-use-this-handbook\",\n title: \"How to use the Handbook\",\n description:\n \"How to find your way around the Handbook, read the documentation for each field, and understand its examples, hints, and subfields.\",\n icon: createSanityIcon(BookTextIcon),\n render: () => <HowToUse />,\n },\n {\n id: \"document-types\",\n title: \"Document Types\",\n description:\n \"A list of every document type, grouped by role. Select a document type to see its fields, descriptions, and examples.\",\n icon: createSanityIcon(LayoutGridIcon),\n render: () => <DocumentTypesOverview />,\n },\n ],\n },\n ];\n}\n","import { defaultIconProps } from \"@repo/lib/icons\";\nimport { Box, Card, Flex, Text } from \"@sanity/ui\";\nimport type { CardProps, CardTone } from \"@sanity/ui\";\nimport type { ComponentProps, ComponentType, ReactNode } from \"react\";\n\nimport { InfoIcon } from \"@/icons/info\";\nimport { LightbulbIcon } from \"@/icons/lightbulb\";\nimport { TriangleAlertIcon } from \"@/icons/triangle-alert\";\nimport type { SanityHandbookCalloutVariant } from \"@/types\";\n\n/** Icon and card tone for a callout variant. */\ninterface CalloutVariantStyle {\n /** Icon for the variant. */\n icon: ComponentType<ComponentProps<\"svg\">>;\n /** Card tone for the variant. */\n tone: CardTone;\n}\n\nexport type CalloutContentProps = Omit<CardProps, \"tone\"> & {\n variant: SanityHandbookCalloutVariant;\n children: ReactNode;\n};\n\n/** Icon and tone for each callout variant. */\nconst presentation: Record<SanityHandbookCalloutVariant, CalloutVariantStyle> = {\n tip: { icon: LightbulbIcon, tone: \"positive\" },\n info: { icon: InfoIcon, tone: \"primary\" },\n warning: { icon: TriangleAlertIcon, tone: \"caution\" },\n};\n\nexport function CalloutContent({ variant, children, ...props }: CalloutContentProps) {\n const { icon: Icon, tone } = presentation[variant];\n\n return (\n <Card padding={4} radius={2} tone={tone} {...props}>\n <Flex align=\"flex-start\" gap={3}>\n <Box flex=\"none\" style={{ marginTop: \"-2px\", fontSize: \"16px\", color: \"var(--card-icon-color)\" }}>\n <Icon {...defaultIconProps} />\n </Box>\n <Text size={1} style={{ color: \"var(--card-icon-color)\" }}>\n {children}\n </Text>\n </Flex>\n </Card>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type PortableCodeProps = ComponentProps<\"code\">;\n\nexport function PortableCode({ style, ...props }: PortableCodeProps) {\n return (\n <code\n style={{\n paddingBlock: 2,\n paddingInline: 4,\n fontSize: \"0.875em\",\n backgroundColor: \"var(--card-code-bg-color)\",\n borderRadius: 2,\n ...style,\n }}\n {...props}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type PortableLinkProps = ComponentProps<\"a\">;\n\nexport function PortableLink({ children, style, ...props }: PortableLinkProps) {\n return (\n <a target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: \"var(--card-link-fg-color)\", ...style }} {...props}>\n {children}\n </a>\n );\n}\n","import { PortableText } from \"@portabletext/react\";\nimport type { PortableTextComponents, PortableTextMarkComponentProps } from \"@portabletext/react\";\nimport type { ComponentProps } from \"react\";\n\nimport { CalloutContent } from \"@/components/blocks/callout/content\";\nimport { PortableCode } from \"@/components/content/portable/code\";\nimport { PortableLink } from \"@/components/content/portable/link\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookCallout, SanityHandbookLink } from \"@/types\";\n\nexport type CalloutBlockProps = Omit<ComponentProps<typeof CalloutContent>, \"variant\" | \"children\"> & {\n value: SanityHandbookCallout;\n};\n\n/** Overrides for callout text, which uses the card's own text style and doesn't wrap paragraphs. */\nconst components: PortableTextComponents = {\n block: { normal: ({ children }) => <>{children}</> },\n marks: {\n code: ({ children }) => <PortableCode>{children}</PortableCode>,\n link: ({ children, value }: PortableTextMarkComponentProps<SanityHandbookLink>) => (\n <PortableLink href={value?.href}>{children}</PortableLink>\n ),\n },\n};\n\nexport function CalloutBlock({ value, style, ...props }: CalloutBlockProps) {\n return (\n <CalloutContent variant={value.variant} style={{ marginBlock: contentSpacing.callout, ...style }} {...props}>\n <PortableText value={value.body} components={components} />\n </CalloutContent>\n );\n}\n","import { Card } from \"@sanity/ui\";\nimport type { CardProps } from \"@sanity/ui\";\nimport { Code } from \"@sanity/ui/code\";\n\nexport type CodeContentProps = CardProps & {\n code: string;\n language?: string;\n};\n\nexport function CodeContent({ code, language, style, ...props }: CodeContentProps) {\n return (\n <Card padding={4} radius={2} tone=\"transparent\" style={{ overflowX: \"auto\", ...style }} {...props}>\n <Code size={1} language={language}>\n {code}\n </Code>\n </Card>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { CodeContent } from \"@/components/blocks/code/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookCode } from \"@/types\";\n\nexport type CodeBlockProps = Omit<ComponentProps<typeof CodeContent>, \"code\" | \"language\"> & {\n value: SanityHandbookCode;\n};\n\nexport function CodeBlock({ value, style, ...props }: CodeBlockProps) {\n if (!isDefined(value.code)) return null;\n\n return (\n <CodeContent\n code={value.code}\n language={value.language}\n style={{ marginBlock: contentSpacing.media, ...style }}\n {...props}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type HorizontalRuleContentProps = ComponentProps<\"hr\">;\n\nexport function HorizontalRuleContent({ style, ...props }: HorizontalRuleContentProps) {\n return <hr style={{ border: \"none\", borderTop: \"1px solid var(--card-border-color)\", ...style }} {...props} />;\n}\n","import type { ComponentProps } from \"react\";\n\nimport { HorizontalRuleContent } from \"@/components/blocks/horizontal-rule/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookHorizontalRule } from \"@/types\";\n\nexport type HorizontalRuleBlockProps = ComponentProps<typeof HorizontalRuleContent> & {\n value: SanityHandbookHorizontalRule;\n};\n\nexport function HorizontalRuleBlock({ value: _value, style, ...props }: HorizontalRuleBlockProps) {\n return <HorizontalRuleContent style={{ marginBlock: contentSpacing.rule, ...style }} {...props} />;\n}\n","import { Box, Text } from \"@sanity/ui\";\nimport type { BoxProps } from \"@sanity/ui\";\n\nexport type CaptionProps = BoxProps & {\n children: string;\n};\n\nexport function Caption({ children, ...props }: CaptionProps) {\n return (\n <Box marginTop={3} {...props}>\n <Text size={1} muted style={{ fontStyle: \"italic\" }}>\n {children}\n </Text>\n </Box>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { Caption } from \"@/components/caption\";\n\nexport type ImageContentProps = ComponentProps<\"div\"> & {\n url: string;\n alt?: string;\n caption?: string;\n};\n\nexport function ImageContent({ url, alt, caption, ...props }: ImageContentProps) {\n return (\n <div {...props}>\n <img src={url} alt={alt ?? \"\"} style={{ display: \"block\", maxWidth: \"100%\", borderRadius: 4 }} />\n {isDefined(caption) && <Caption>{caption}</Caption>}\n </div>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { ImageContent } from \"@/components/blocks/image/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookImage } from \"@/types\";\n\nexport type ImageBlockProps = Omit<ComponentProps<typeof ImageContent>, \"url\" | \"alt\" | \"caption\"> & {\n value: SanityHandbookImage;\n};\n\nexport function ImageBlock({ value, style, ...props }: ImageBlockProps) {\n if (!isDefined(value.asset?.url)) return null;\n\n return (\n <ImageContent\n url={value.asset.url}\n alt={value.alt}\n caption={value.caption}\n style={{ marginBlock: contentSpacing.media, ...style }}\n {...props}\n />\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { Caption } from \"@/components/caption\";\n\nexport type VideoContentProps = ComponentProps<\"div\"> & {\n url: string;\n caption?: string;\n};\n\nexport function VideoContent({ url, caption, ...props }: VideoContentProps) {\n return (\n <div {...props}>\n <video\n src={url}\n controls\n style={{ display: \"block\", maxWidth: \"100%\", borderRadius: 4, WebkitTransform: \"translateZ(0)\" }}\n >\n <track kind=\"captions\" label={caption ?? \"Video\"} />\n </video>\n {isDefined(caption) && <Caption>{caption}</Caption>}\n </div>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nimport { VideoContent } from \"@/components/blocks/video/content\";\nimport { contentSpacing } from \"@/config/layout\";\nimport type { SanityHandbookVideo } from \"@/types\";\n\nexport type VideoBlockProps = Omit<ComponentProps<typeof VideoContent>, \"url\" | \"caption\"> & {\n value: SanityHandbookVideo;\n};\n\nexport function VideoBlock({ value, style, ...props }: VideoBlockProps) {\n if (!isDefined(value.asset?.url)) return null;\n\n return (\n <VideoContent\n url={value.asset.url}\n caption={value.caption}\n style={{ marginBlock: contentSpacing.media, ...style }}\n {...props}\n />\n );\n}\n","import { Box, Text } from \"@sanity/ui\";\nimport type { BoxProps } from \"@sanity/ui\";\n\nexport type PortableBlockquoteProps = BoxProps & {\n muted?: boolean;\n};\n\nexport function PortableBlockquote({ muted, children, style, ...props }: PortableBlockquoteProps) {\n return (\n <Box paddingY={1} paddingLeft={3} style={{ borderLeft: \"2px solid var(--card-border-color)\", ...style }} {...props}>\n <Text size={1} muted={muted} style={{ fontStyle: \"italic\" }}>\n {children}\n </Text>\n </Box>\n );\n}\n","import { Text } from \"@sanity/ui\";\nimport type { TextProps } from \"@sanity/ui\";\n\nexport type PortableHeadingProps = Omit<TextProps, \"as\">;\n\nexport function PortableHeading(props: PortableHeadingProps) {\n return <Text as=\"h2\" size={1} weight=\"medium\" {...props} />;\n}\n","import type { CSSProperties, ComponentProps } from \"react\";\n\n// `ref` is omitted because the rendered element varies, so no single ref type fits.\nexport type PortableListProps = Omit<ComponentProps<\"ul\">, \"ref\"> & {\n ordered?: boolean;\n};\n\nexport function PortableList({ ordered = false, style, ...props }: PortableListProps) {\n const listStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n margin: 0,\n paddingLeft: \"1.25em\",\n ...style,\n };\n\n if (ordered) return <ol style={listStyle} {...props} />;\n\n return <ul style={listStyle} {...props} />;\n}\n","import { Text } from \"@sanity/ui\";\nimport type { TextProps } from \"@sanity/ui\";\n\nexport type PortableParagraphProps = TextProps;\n\nexport function PortableParagraph(props: PortableParagraphProps) {\n return <Text size={1} {...props} />;\n}\n","import { PortableText as PortableTextReact } from \"@portabletext/react\";\nimport type {\n PortableTextComponentProps,\n PortableTextComponents,\n PortableTextMarkComponentProps,\n PortableTextTypeComponent,\n PortableTextTypeComponentProps,\n} from \"@portabletext/react\";\nimport type { ComponentProps, ComponentType } from \"react\";\nimport type { PortableTextBlock, PortableTextListBlock, PortableTextObject } from \"sanity\";\n\nimport { CalloutBlock } from \"@/components/blocks/callout/block\";\nimport { CodeBlock } from \"@/components/blocks/code/block\";\nimport { HorizontalRuleBlock } from \"@/components/blocks/horizontal-rule/block\";\nimport { ImageBlock } from \"@/components/blocks/image/block\";\nimport { VideoBlock } from \"@/components/blocks/video/block\";\nimport { PortableBlockquote } from \"@/components/content/portable/blockquote\";\nimport { PortableCode } from \"@/components/content/portable/code\";\nimport { PortableHeading } from \"@/components/content/portable/heading\";\nimport { PortableLink } from \"@/components/content/portable/link\";\nimport { PortableList } from \"@/components/content/portable/list\";\nimport { PortableParagraph } from \"@/components/content/portable/paragraph\";\nimport { contentSpacing } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport type { SanityHandbookLink, SanityKeyedArray } from \"@/types\";\nimport { calloutTypeName, codeTypeName, horizontalRuleTypeName, imageTypeName, videoTypeName } from \"@/types\";\n\n/**\n * Works out the vertical space around a list, which is smaller for nested lists.\n *\n * @param level - Nesting depth, starting at 1.\n * @returns The space in pixels.\n */\nfunction listSpacing(level: number) {\n return level > 1 ? contentSpacing.nestedList : contentSpacing.list;\n}\n\n/**\n * Components for each block style, mark, and embedded type in a guide. Marks and list items not listed\n * here are left to the library's defaults on purpose.\n */\nconst components: PortableTextComponents = {\n block: {\n h2: ({ children }) => (\n <PortableHeading style={{ marginBlockStart: contentSpacing.heading, marginBlockEnd: 4 }}>\n {children}\n </PortableHeading>\n ),\n normal: ({ children }) => (\n <PortableParagraph muted style={{ marginBlock: contentSpacing.paragraph }}>\n {children}\n </PortableParagraph>\n ),\n blockquote: ({ children }) => (\n <PortableBlockquote muted style={{ marginBlock: contentSpacing.blockquote }}>\n {children}\n </PortableBlockquote>\n ),\n },\n list: {\n bullet: ({ children, value }: PortableTextComponentProps<PortableTextListBlock>) => (\n <PortableParagraph muted style={{ marginBlock: listSpacing(value.level) }}>\n <PortableList>{children}</PortableList>\n </PortableParagraph>\n ),\n number: ({ children, value }: PortableTextComponentProps<PortableTextListBlock>) => (\n <PortableParagraph muted style={{ marginBlock: listSpacing(value.level) }}>\n <PortableList ordered>{children}</PortableList>\n </PortableParagraph>\n ),\n },\n marks: {\n code: ({ children }) => <PortableCode>{children}</PortableCode>,\n link: ({ children, value }: PortableTextMarkComponentProps<SanityHandbookLink>) => (\n <PortableLink href={value?.href}>{children}</PortableLink>\n ),\n },\n};\n\n/**\n * Wraps a block component for Portable Text, passing only the block's value. Otherwise the library's\n * other props would reach the DOM.\n *\n * @param Component - The block component.\n * @returns A component Portable Text can render the type with.\n */\nfunction blockRenderer<Value extends PortableTextObject>(Component: ComponentType<{ value: Value }>) {\n return function Block({ value }: PortableTextTypeComponentProps<Value>) {\n return <Component value={value} />;\n };\n}\n\nexport type PortableTextProps = ComponentProps<\"div\"> & {\n value: SanityKeyedArray<PortableTextBlock>;\n};\n\nexport function PortableText({ value, ...props }: PortableTextProps) {\n const { blocks } = useHandbookContext();\n\n const types: Record<string, PortableTextTypeComponent> = {\n [imageTypeName]: blockRenderer(ImageBlock),\n [videoTypeName]: blockRenderer(VideoBlock),\n [codeTypeName]: blockRenderer(CodeBlock),\n [calloutTypeName]: blockRenderer(CalloutBlock),\n [horizontalRuleTypeName]: blockRenderer(HorizontalRuleBlock),\n };\n for (const block of blocks) types[block.schema.name] = blockRenderer(block.component);\n\n return (\n <div {...props}>\n <PortableTextReact value={value} components={{ ...components, types }} />\n </div>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type BookOpenTextIconProps = ComponentProps<\"svg\">;\n\nexport function BookOpenTextIcon(props: BookOpenTextIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 7v14\" />\n <path d=\"M16 12h2\" />\n <path d=\"M16 8h2\" />\n <path d=\"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\" />\n <path d=\"M6 12h2\" />\n <path d=\"M6 8h2\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { isDefined } from \"@repo/lib/utils\";\n\nimport { PortableText } from \"@/components/content/portable-text\";\nimport { BookOpenTextIcon } from \"@/icons/book-open-text\";\nimport type { SanityHandbook } from \"@/types\";\n\n/**\n * Builds a sidebar section for each guide group.\n *\n * @param handbook - The Handbook document.\n * @returns One section per group, with an entry per published guide.\n */\nexport function guidesSections(handbook: SanityHandbook) {\n return (handbook.groups ?? []).map(({ title, guides }) => ({\n title,\n // A guide that isn't published comes back as a bare reference, with no title to show.\n entries: (guides ?? [])\n .filter((guide) => isDefined(guide.title))\n .map((guide) => ({\n id: guide._key,\n title: guide.title,\n description: guide.description,\n icon: createSanityIcon(BookOpenTextIcon),\n render: () => <PortableText value={guide.content} />,\n })),\n }));\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentType, ReactNode } from \"react\";\n\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { documentTypesSections } from \"@/sections/document-types\";\nimport { gettingStartedSections } from \"@/sections/getting-started\";\nimport { guidesSections } from \"@/sections/guides\";\n\n/** A page in the sidebar and the panel it opens. */\ninterface Entry {\n /** ID shared by the sidebar row and its panel. */\n id: string;\n /** Label in the sidebar and heading of the panel. */\n title: string;\n /** Description below the panel heading. */\n description?: string;\n /** Icon next to the sidebar label. */\n icon?: ComponentType;\n /** Renders the panel's content, only while the entry is selected. */\n render: () => ReactNode;\n}\n\n/** A sidebar heading and the entries below it. */\ninterface Section {\n /** Heading text. */\n title: string;\n /** Entries in the section. */\n entries: Entry[];\n}\n\n/**\n * Lists every page in the Handbook, in sidebar order.\n *\n * @returns The built-in pages, the configured document roles, and the guide groups, as sections.\n */\nexport function useSections(): Section[] {\n const { roles, handbook } = useHandbookContext();\n\n return [\n ...gettingStartedSections(),\n ...documentTypesSections(roles),\n ...(isDefined(handbook) ? guidesSections(handbook) : []),\n ];\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { ComponentProps } from \"react\";\nimport { Pane } from \"sanity/structure\";\n\nimport { ContentPanel } from \"@/components/content-panel\";\nimport { contentFlex, contentMinimumWidth } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { useSections } from \"@/hooks/use-sections\";\n\nexport type ContentProps = Omit<ComponentProps<typeof Pane>, \"id\">;\n\nexport function Content(props: ContentProps) {\n const { activeTab } = useHandbookContext();\n const sections = useSections();\n\n const entry = sections.flatMap((section) => section.entries).find(({ id }) => id === activeTab);\n\n return (\n <Pane id=\"handbook-content\" flex={contentFlex} minWidth={contentMinimumWidth} {...props}>\n {isDefined(entry) && (\n <ContentPanel id={entry.id} title={entry.title} description={entry.description}>\n {entry.render()}\n </ContentPanel>\n )}\n </Pane>\n );\n}\n","import { Box, Card, Text } from \"@sanity/ui\";\nimport type { ComponentProps } from \"react\";\n\nexport type SidebarHeadingProps = ComponentProps<typeof Box> & {\n title: string;\n};\n\nexport function SidebarHeading({ title, ...props }: SidebarHeadingProps) {\n return (\n <Box paddingY={2} {...props}>\n <Card padding={2}>\n <Text size={1} muted textOverflow=\"ellipsis\" weight=\"semibold\" style={{ cursor: \"default\", outline: \"none\" }}>\n {title}\n </Text>\n </Card>\n </Box>\n );\n}\n","import { ChevronRightIcon } from \"@sanity/icons/ChevronRight\";\nimport { Box, Text } from \"@sanity/ui\";\nimport type { CSSProperties, ComponentProps, ComponentType } from \"react\";\nimport { PreviewCard, SanityDefaultPreview } from \"sanity\";\n\nimport { useHandbookContext } from \"@/contexts/handbook\";\n\nexport type SidebarTabProps = Omit<ComponentProps<typeof PreviewCard>, \"as\" | \"id\" | \"style\"> & {\n id: string;\n label: string;\n icon?: ComponentType;\n style?: CSSProperties;\n};\n\nexport function SidebarTab({ id, label, icon: Icon, style, ...props }: SidebarTabProps) {\n const { activeTab, setActiveTab, setSidebarExpanded } = useHandbookContext();\n const selected = activeTab === id;\n\n return (\n <PreviewCard\n id={id}\n as=\"button\"\n data-as=\"button\"\n selected={selected}\n marginBottom={1}\n radius={2}\n sizing=\"border\"\n tabIndex={-1}\n tone=\"inherit\"\n onClick={() => {\n setActiveTab(id);\n setSidebarExpanded(false);\n }}\n style={{ cursor: \"pointer\", ...style }}\n aria-controls={`panel-${id}`}\n __unstable_focusRing\n {...props}\n >\n <SanityDefaultPreview\n status={\n <Box style={{ opacity: 0.5 }}>\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n }\n icon={Icon}\n layout=\"compact\"\n title={label}\n />\n </PreviewCard>\n );\n}\n","import type { ComponentProps, ComponentType } from \"react\";\nimport { CommandList } from \"sanity\";\nimport { Pane, PaneContent } from \"sanity/structure\";\n\nimport { PaneHeader } from \"@/components/pane-header\";\nimport { SidebarHeading } from \"@/components/sidebar/heading\";\nimport { SidebarTab } from \"@/components/sidebar/tab\";\nimport { sidebarItemHeight, sidebarMaximumWidth, sidebarMinimumWidth, sidebarWidth } from \"@/config/layout\";\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { useSections } from \"@/hooks/use-sections\";\n\n/** A heading above a group of sidebar tabs. */\ninterface SidebarHeadingItem {\n /** Marks the item as a heading. */\n type: \"heading\";\n /** Heading text. */\n title: string;\n}\n\n/** A sidebar row that opens the content panel with the same ID. */\ninterface SidebarTabItem {\n /** Marks the item as a tab. */\n type: \"tab\";\n /** ID shared by the sidebar row and its panel. */\n id: string;\n /** Label in the sidebar. */\n label: string;\n /** Icon next to the sidebar label. */\n icon?: ComponentType;\n}\n\n/** An item in the sidebar's flat list. */\ntype SidebarItem = SidebarHeadingItem | SidebarTabItem;\n\n// `CommandList` clones what this returns to set `tabIndex`, so a wrapper component would swallow it.\nfunction renderItem(item: SidebarItem) {\n if (item.type === \"heading\") return <SidebarHeading title={item.title} />;\n\n return <SidebarTab id={item.id} label={item.label} icon={item.icon} />;\n}\n\nexport type SidebarProps = Omit<ComponentProps<typeof Pane>, \"id\">;\n\nexport function Sidebar(props: SidebarProps) {\n const { sidebarTitle } = useHandbookContext();\n const sections = useSections();\n\n const items = sections.flatMap(({ title, entries }): SidebarItem[] => [\n { type: \"heading\", title },\n ...entries.map((entry): SidebarItem => ({ type: \"tab\", id: entry.id, label: entry.title, icon: entry.icon })),\n ]);\n\n function getItemDisabled(virtualIndex: number) {\n return items[virtualIndex]?.type === \"heading\";\n }\n\n return (\n <Pane\n id=\"handbook-sidebar\"\n currentMaxWidth={sidebarWidth}\n minWidth={sidebarMinimumWidth}\n maxWidth={sidebarMaximumWidth}\n {...props}\n >\n <PaneHeader title={sidebarTitle} />\n <PaneContent overflow=\"auto\">\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={sidebarTitle}\n canReceiveFocus\n getItemDisabled={getItemDisabled}\n itemHeight={sidebarItemHeight}\n items={items}\n onlyShowSelectionWhenActive\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n </PaneContent>\n </Pane>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { useContext } from \"react\";\nimport { PaneLayoutContext } from \"sanity/_singletons\";\n\nimport { useHandbookContext } from \"@/contexts/handbook\";\nimport { Content } from \"@/layouts/content\";\nimport { Sidebar } from \"@/layouts/sidebar\";\n\nexport function Panes() {\n const { activeTab, sidebarExpanded } = useHandbookContext();\n const paneLayout = useContext(PaneLayoutContext);\n\n const hasContent = isDefined(activeTab);\n\n if (paneLayout?.collapsed === true) {\n return sidebarExpanded || !hasContent ? <Sidebar /> : <Content />;\n }\n\n return (\n <>\n <Sidebar />\n {hasContent && <Content />}\n </>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\nimport { useTheme_v2 } from \"@sanity/ui\";\nimport { useState } from \"react\";\nimport type { Tool } from \"sanity\";\nimport { PaneLayout } from \"sanity/structure\";\n\nimport { toolMinimumWidth } from \"@/config/layout\";\nimport { HandbookProvider } from \"@/contexts/handbook\";\nimport type { HandbookProviderConfig } from \"@/contexts/handbook\";\nimport { Panes } from \"@/layouts/panes\";\n\nexport interface HandbookToolProps {\n tool: Tool<HandbookProviderConfig>;\n}\n\nexport function HandbookTool({ tool: { options } }: HandbookToolProps) {\n const { media } = useTheme_v2();\n const [layoutCollapsed, setLayoutCollapsed] = useState(false);\n\n function handleCollapse() {\n setLayoutCollapsed(true);\n }\n\n function handleExpand() {\n setLayoutCollapsed(false);\n }\n\n if (!isDefined(options)) return null;\n\n return (\n <HandbookProvider {...options}>\n <PaneLayout\n flex={1}\n height={layoutCollapsed ? undefined : \"fill\"}\n minWidth={media[1]}\n onCollapse={handleCollapse}\n onExpand={handleExpand}\n style={{ minHeight: \"100%\", minWidth: `${toolMinimumWidth}px` }}\n >\n <Panes />\n </PaneLayout>\n </HandbookProvider>\n );\n}\n","import { isDefined } from \"@repo/lib/utils\";\n\n/** Editors from the plugin configuration, so the structure helper doesn't need them passed again. */\nlet configuredEditors: string[] | undefined = undefined;\n\n/**\n * Stores the editors from the plugin configuration. A Studio with several workspaces keeps only the last\n * workspace's list, so pass the list explicitly there.\n *\n * @param editors - Email addresses of the editors.\n */\nexport function setConfiguredEditors(editors: string[] | undefined) {\n configuredEditors = editors;\n}\n\n/**\n * Checks whether an email address belongs to an editor. Without an editors list, everyone is an editor.\n *\n * @param editors - Email addresses of the editors, defaulting to the configured list.\n * @param email - The email address to check.\n * @returns Whether the address belongs to an editor.\n */\nexport function isPermittedEditor(editors: string[] | undefined, email: string | undefined) {\n const permitted = editors ?? configuredEditors;\n\n if (!isDefined(permitted)) return true;\n if (!isDefined(email)) return false;\n\n return permitted.includes(email);\n}\n","import { Stack } from \"@sanity/ui\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { CalloutContent } from \"@/components/blocks/callout/content\";\nimport type { SanityHandbookCallout, SanityHandbookCalloutVariant } from \"@/types\";\n\nexport type CalloutPreviewProps = PreviewProps & {\n variant?: SanityHandbookCalloutVariant;\n body?: SanityHandbookCallout[\"body\"];\n};\n\nexport function CalloutPreview({ variant, body }: CalloutPreviewProps) {\n return (\n <CalloutContent variant={variant ?? \"tip\"}>\n <Stack gap={3}>\n {body?.map(({ _key, children }) => (\n <div key={_key} style={{ whiteSpace: \"pre-wrap\" }}>\n {children.map((child) => child.text).join(\"\")}\n </div>\n ))}\n </Stack>\n </CalloutContent>\n );\n}\n","import type { BlockDecoratorProps } from \"sanity\";\n\nimport { PortableCode } from \"@/components/content/portable/code\";\n\nexport function CodeDecorator({ children }: BlockDecoratorProps) {\n return <PortableCode>{children}</PortableCode>;\n}\n","import type { BlockStyleProps } from \"sanity\";\n\nimport { PortableBlockquote } from \"@/components/content/portable/blockquote\";\nimport { PortableHeading } from \"@/components/content/portable/heading\";\nimport { PortableParagraph } from \"@/components/content/portable/paragraph\";\n\nexport function ParagraphStyle({ children }: BlockStyleProps) {\n return <PortableParagraph>{children}</PortableParagraph>;\n}\n\nexport function HeadingStyle({ children }: BlockStyleProps) {\n return <PortableHeading>{children}</PortableHeading>;\n}\n\nexport function BlockquoteStyle({ children }: BlockStyleProps) {\n return <PortableBlockquote>{children}</PortableBlockquote>;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type MessageCircleIconProps = ComponentProps<\"svg\">;\n\nexport function MessageCircleIcon(props: MessageCircleIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\" />\n </svg>\n );\n}\n","import type { ComponentProps } from \"react\";\n\nexport type LinkIconProps = ComponentProps<\"svg\">;\n\nexport function LinkIcon(props: LinkIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineArrayMember, defineField } from \"sanity\";\n\nimport { LinkIcon } from \"@/icons/link\";\nimport type { SanityHandbookLink } from \"@/types\";\n\nexport const linkAnnotation = defineArrayMember({\n name: \"link\" satisfies SanityHandbookLink[\"_type\"],\n type: \"object\",\n description: \"Link applied to the selected text.\",\n icon: createSanityIcon(LinkIcon),\n preview: {\n select: {\n href: \"href\",\n },\n prepare(selection: { href?: string }) {\n const { href } = selection;\n\n return {\n title: href ?? \"Link\",\n };\n },\n },\n fields: [\n defineField({\n name: \"href\" satisfies keyof SanityHandbookLink,\n type: \"url\",\n title: \"URL\",\n description: \"Web address to link to. Use http, https, mailto, or tel.\",\n validation: (rule) => rule.uri({ scheme: [\"http\", \"https\", \"mailto\", \"tel\"] }),\n }),\n ],\n});\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineArrayMember, defineField, defineType } from \"sanity\";\n\nimport { CalloutPreview } from \"@/components/blocks/callout/preview\";\nimport { CodeDecorator } from \"@/components/decorators\";\nimport { ParagraphStyle } from \"@/components/styles\";\nimport { MessageCircleIcon } from \"@/icons/message-circle\";\nimport { linkAnnotation } from \"@/schemas/annotations/link\";\nimport type { SanityHandbookCallout, SanityHandbookCalloutVariant } from \"@/types\";\nimport { calloutTypeName } from \"@/types\";\n\nexport const calloutType = defineType({\n name: calloutTypeName satisfies SanityHandbookCallout[\"_type\"],\n type: \"object\",\n title: \"Callout\",\n description: \"Highlighted tip, note, or warning.\",\n icon: createSanityIcon(MessageCircleIcon),\n components: {\n preview: CalloutPreview,\n },\n preview: {\n select: {\n variant: \"variant\",\n body: \"body\",\n },\n prepare(selection: { variant?: SanityHandbookCalloutVariant; body?: SanityHandbookCallout[\"body\"] }) {\n const { variant, body } = selection;\n\n return {\n title: \"Callout\",\n variant,\n body,\n };\n },\n },\n fields: [\n defineField({\n name: \"variant\" satisfies keyof SanityHandbookCallout,\n type: \"string\",\n description: \"Kind of callout, which sets its icon and color.\",\n initialValue: \"tip\",\n validation: (rule) => rule.required(),\n options: {\n list: [\n { title: \"Tip\", value: \"tip\" },\n { title: \"Information\", value: \"info\" },\n { title: \"Warning\", value: \"warning\" },\n ],\n layout: \"radio\",\n direction: \"horizontal\",\n },\n }),\n defineField({\n name: \"body\" satisfies keyof SanityHandbookCallout,\n type: \"array\",\n description: \"Text inside the callout, with inline formatting and links.\",\n of: [\n defineArrayMember({\n name: \"block\",\n type: \"block\",\n styles: [{ title: \"Normal\", value: \"normal\", component: ParagraphStyle }],\n lists: [],\n marks: {\n decorators: [\n { title: \"Bold\", value: \"strong\" },\n { title: \"Italic\", value: \"em\" },\n { title: \"Strikethrough\", value: \"strike-through\" },\n { title: \"Code\", value: \"code\", component: CodeDecorator },\n ],\n annotations: [linkAnnotation],\n },\n }),\n ],\n }),\n ],\n});\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { CodeContent } from \"@/components/blocks/code/content\";\n\nexport type CodePreviewProps = PreviewProps & {\n code?: string;\n language?: string;\n};\n\nexport function CodePreview({ code, language }: CodePreviewProps) {\n if (!isDefined(code)) return null;\n\n return <CodeContent code={code} language={language} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type CodeIconProps = ComponentProps<\"svg\">;\n\nexport function CodeIcon(props: CodeIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m16 18 6-6-6-6\" />\n <path d=\"m8 6-6 6 6 6\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { CodePreview } from \"@/components/blocks/code/preview\";\nimport { CodeIcon } from \"@/icons/code\";\nimport type { SanityHandbookCode } from \"@/types\";\nimport { codeTypeName } from \"@/types\";\n\nexport const codeType = defineType({\n name: codeTypeName satisfies SanityHandbookCode[\"_type\"],\n type: \"object\",\n title: \"Code\",\n description: \"Code block with syntax highlighting.\",\n icon: createSanityIcon(CodeIcon),\n components: {\n preview: CodePreview,\n },\n preview: {\n select: {\n code: \"code\",\n language: \"language\",\n },\n },\n fields: [\n defineField({\n name: \"code\" satisfies keyof SanityHandbookCode,\n type: \"text\",\n description: \"Code to display.\",\n }),\n defineField({\n name: \"language\" satisfies keyof SanityHandbookCode,\n type: \"string\",\n description: \"Language used for syntax highlighting.\",\n options: {\n list: [\n { title: \"CSS\", value: \"css\" },\n { title: \"GROQ\", value: \"groq\" },\n { title: \"HTML\", value: \"html\" },\n { title: \"JavaScript\", value: \"javascript\" },\n { title: \"JSON\", value: \"json\" },\n { title: \"Plain Text\", value: \"text\" },\n { title: \"React\", value: \"tsx\" },\n { title: \"Shell\", value: \"shell\" },\n { title: \"TypeScript\", value: \"typescript\" },\n ],\n },\n }),\n ],\n});\n","import type { PreviewProps } from \"sanity\";\n\nimport { HorizontalRuleContent } from \"@/components/blocks/horizontal-rule/content\";\n\nexport type HorizontalRulePreviewProps = PreviewProps;\n\nexport function HorizontalRulePreview(_props: HorizontalRulePreviewProps) {\n return <HorizontalRuleContent style={{ marginBlock: 8 }} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type SeparatorHorizontalIconProps = ComponentProps<\"svg\">;\n\nexport function SeparatorHorizontalIcon(props: SeparatorHorizontalIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m16 16-4 4-4-4\" />\n <path d=\"M3 12h18\" />\n <path d=\"m8 8 4-4 4 4\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { HorizontalRulePreview } from \"@/components/blocks/horizontal-rule/preview\";\nimport { SeparatorHorizontalIcon } from \"@/icons/separator-horizontal\";\nimport type { SanityHandbookHorizontalRule } from \"@/types\";\nimport { horizontalRuleTypeName } from \"@/types\";\n\nexport const horizontalRuleType = defineType({\n name: horizontalRuleTypeName satisfies SanityHandbookHorizontalRule[\"_type\"],\n type: \"object\",\n title: \"Horizontal Rule\",\n description: \"Divider between sections.\",\n icon: createSanityIcon(SeparatorHorizontalIcon),\n components: {\n preview: HorizontalRulePreview,\n },\n preview: {\n prepare() {\n return {\n title: \"Horizontal Rule\",\n };\n },\n },\n fields: [\n // Sanity requires at least one field, but a rule has nothing to store.\n defineField({\n name: \"style\",\n type: \"string\",\n description: \"Unused placeholder field.\",\n hidden: true,\n }),\n ],\n});\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { ImageContent } from \"@/components/blocks/image/content\";\n\nexport type ImagePreviewProps = PreviewProps & {\n url?: string;\n alt?: string;\n caption?: string;\n};\n\nexport function ImagePreview({ url, alt, caption }: ImagePreviewProps) {\n if (!isDefined(url)) return null;\n\n return <ImageContent url={url} alt={alt} caption={caption} style={{ padding: 8 }} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type ImageIconProps = ComponentProps<\"svg\">;\n\nexport function ImageIcon(props: ImageIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { ImagePreview } from \"@/components/blocks/image/preview\";\nimport { ImageIcon } from \"@/icons/image\";\nimport type { SanityHandbookImage } from \"@/types\";\nimport { imageTypeName } from \"@/types\";\n\nexport const imageType = defineType({\n name: imageTypeName satisfies SanityHandbookImage[\"_type\"],\n type: \"object\",\n title: \"Image\",\n description: \"Image with an optional caption and alternative text.\",\n icon: createSanityIcon(ImageIcon),\n components: {\n preview: ImagePreview,\n },\n preview: {\n select: {\n caption: \"caption\",\n alt: \"alt\",\n url: \"asset.asset.url\",\n },\n },\n fields: [\n defineField({\n name: \"asset\" satisfies keyof SanityHandbookImage,\n type: \"image\",\n title: \"Image\",\n description: \"Image to show.\",\n options: { hotspot: true },\n }),\n defineField({\n name: \"caption\" satisfies keyof SanityHandbookImage,\n type: \"string\",\n description: \"Text shown below the image, such as a credit.\",\n }),\n defineField({\n name: \"alt\" satisfies keyof SanityHandbookImage,\n type: \"string\",\n title: \"Alternative Text\",\n description: \"Description of the image for people who can't see it. Don't repeat the caption.\",\n }),\n ],\n});\n","import { isDefined } from \"@repo/lib/utils\";\nimport type { PreviewProps } from \"sanity\";\n\nimport { VideoContent } from \"@/components/blocks/video/content\";\n\nexport type VideoPreviewProps = PreviewProps & {\n url?: string;\n caption?: string;\n};\n\nexport function VideoPreview({ url, caption }: VideoPreviewProps) {\n if (!isDefined(url)) return null;\n\n return <VideoContent url={url} caption={caption} style={{ padding: 8 }} />;\n}\n","import type { ComponentProps } from \"react\";\n\nexport type FilmIconProps = ComponentProps<\"svg\">;\n\nexport function FilmIcon(props: FilmIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M7 3v18\" />\n <path d=\"M3 7.5h4\" />\n <path d=\"M3 12h18\" />\n <path d=\"M3 16.5h4\" />\n <path d=\"M17 3v18\" />\n <path d=\"M17 7.5h4\" />\n <path d=\"M17 16.5h4\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { VideoPreview } from \"@/components/blocks/video/preview\";\nimport { FilmIcon } from \"@/icons/film\";\nimport type { SanityHandbookVideo } from \"@/types\";\nimport { videoTypeName } from \"@/types\";\n\nexport const videoType = defineType({\n name: videoTypeName satisfies SanityHandbookVideo[\"_type\"],\n type: \"object\",\n title: \"Video\",\n description: \"Video with an optional caption.\",\n icon: createSanityIcon(FilmIcon),\n components: {\n preview: VideoPreview,\n },\n preview: {\n select: {\n caption: \"caption\",\n url: \"asset.asset.url\",\n },\n },\n fields: [\n defineField({\n name: \"asset\" satisfies keyof SanityHandbookVideo,\n type: \"file\",\n title: \"Video\",\n description: \"Video to show.\",\n options: { accept: \"video/*\" },\n }),\n defineField({\n name: \"caption\" satisfies keyof SanityHandbookVideo,\n type: \"string\",\n description: \"Text shown below the video, such as a credit.\",\n }),\n ],\n});\n","import { Text } from \"@sanity/ui\";\nimport type { BlockListItemProps } from \"sanity\";\n\nexport function ListItemStyle({ children }: BlockListItemProps) {\n return (\n <Text size={1} style={{ marginTop: \"0.375em\" }}>\n {children}\n </Text>\n );\n}\n","import { defineArrayMember, defineField } from \"sanity\";\n\nimport { CodeDecorator } from \"@/components/decorators\";\nimport { ListItemStyle } from \"@/components/lists\";\nimport { BlockquoteStyle, HeadingStyle, ParagraphStyle } from \"@/components/styles\";\nimport type { SanityHandbookBlockDefinition } from \"@/plugin\";\nimport { linkAnnotation } from \"@/schemas/annotations/link\";\nimport type { SanityHandbookGuide } from \"@/types\";\nimport { calloutTypeName, codeTypeName, horizontalRuleTypeName, imageTypeName, videoTypeName } from \"@/types\";\n\n/**\n * Creates the guide content field, offering the built-in blocks and any custom ones.\n *\n * @param customBlocks - Custom blocks added by the site.\n * @returns The content field.\n */\nexport function createGuideContentField(customBlocks: SanityHandbookBlockDefinition[] = []) {\n return defineField({\n name: \"content\" satisfies keyof SanityHandbookGuide,\n type: \"array\",\n description: \"Rich text with formatting, headings, lists, images, code blocks, and custom blocks.\",\n of: [\n defineArrayMember({\n name: \"block\",\n type: \"block\",\n styles: [\n { title: \"Paragraph\", value: \"normal\", component: ParagraphStyle },\n { title: \"Heading\", value: \"h2\", component: HeadingStyle },\n { title: \"Blockquote\", value: \"blockquote\", component: BlockquoteStyle },\n ],\n lists: [\n { title: \"Bullet\", value: \"bullet\", component: ListItemStyle },\n { title: \"Number\", value: \"number\", component: ListItemStyle },\n ],\n marks: {\n decorators: [\n { title: \"Bold\", value: \"strong\" },\n { title: \"Italic\", value: \"em\" },\n { title: \"Strikethrough\", value: \"strike-through\" },\n { title: \"Code\", value: \"code\", component: CodeDecorator },\n ],\n annotations: [linkAnnotation],\n },\n }),\n defineArrayMember({ name: imageTypeName, type: imageTypeName }),\n defineArrayMember({ name: videoTypeName, type: videoTypeName }),\n defineArrayMember({ name: codeTypeName, type: codeTypeName }),\n defineArrayMember({ name: calloutTypeName, type: calloutTypeName }),\n defineArrayMember({ name: horizontalRuleTypeName, type: horizontalRuleTypeName }),\n ...customBlocks.map((block) => defineArrayMember({ name: block.schema.name, type: block.schema.name })),\n ],\n });\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { defineField, defineType } from \"sanity\";\n\nimport { BookOpenTextIcon } from \"@/icons/book-open-text\";\nimport type { SanityHandbookBlockDefinition } from \"@/plugin\";\nimport { createGuideContentField } from \"@/schemas/fields/content\";\nimport type { SanityHandbookGuide } from \"@/types\";\nimport { guideTypeName } from \"@/types\";\n\n/**\n * Creates the guide document type, with a content field offering the built-in blocks and any custom ones.\n *\n * @param customBlocks - Custom blocks added by the site.\n * @returns The guide document type.\n */\nexport function createGuideType(customBlocks: SanityHandbookBlockDefinition[] = []) {\n return defineType({\n name: guideTypeName satisfies SanityHandbookGuide[\"_type\"],\n type: \"document\",\n title: \"Handbook Guide\",\n description: \"Handbook page written in rich text.\",\n icon: createSanityIcon(BookOpenTextIcon),\n preview: {\n // The Studio shows its own \"Untitled\" when there's no title.\n select: {\n title: \"title\",\n subtitle: \"description\",\n },\n },\n fields: [\n defineField({\n name: \"title\" satisfies keyof SanityHandbookGuide,\n type: \"string\",\n description: \"Title shown in the Handbook sidebar and as the guide heading.\",\n validation: (rule) => rule.required(),\n }),\n defineField({\n name: \"description\" satisfies keyof SanityHandbookGuide,\n type: \"string\",\n description: \"Short introduction shown below the heading.\",\n }),\n createGuideContentField(customBlocks),\n ],\n });\n}\n","import type { ComponentProps } from \"react\";\n\nexport type ListPlusIconProps = ComponentProps<\"svg\">;\n\nexport function ListPlusIcon(props: ListPlusIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M16 5H3\" />\n <path d=\"M11 12H3\" />\n <path d=\"M16 19H3\" />\n <path d=\"M18 9v6\" />\n <path d=\"M21 12h-6\" />\n </svg>\n );\n}\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport { isDefined } from \"@repo/lib/utils\";\nimport { defineArrayMember, defineField, defineType } from \"sanity\";\n\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { ListPlusIcon } from \"@/icons/list-plus\";\nimport type { SanityHandbook, SanityHandbookGuideGroup } from \"@/types\";\nimport { guideTypeName, handbookTypeName } from \"@/types\";\n\nexport const handbookType = defineType({\n name: handbookTypeName satisfies SanityHandbook[\"_type\"],\n type: \"document\",\n title: \"Handbook\",\n description: \"Groups of guides shown in the Handbook sidebar, in order.\",\n icon: createSanityIcon(BookTextIcon),\n preview: {\n prepare() {\n return {\n title: \"Handbook\",\n };\n },\n },\n fields: [\n defineField({\n name: \"groups\" satisfies keyof SanityHandbook,\n type: \"array\",\n description:\n \"Groups of guides shown in the Handbook sidebar, in order. Each group has a title and a list of guides, also in order.\",\n of: [\n defineArrayMember({\n name: \"group\",\n type: \"object\",\n description: \"Sidebar section holding a list of guides.\",\n icon: createSanityIcon(ListPlusIcon),\n fields: [\n defineField({\n name: \"title\" satisfies keyof SanityHandbookGuideGroup,\n type: \"string\",\n description: \"Heading shown above the group in the sidebar.\",\n validation: (rule) => rule.required(),\n }),\n defineField({\n name: \"guides\" satisfies keyof SanityHandbookGuideGroup,\n type: \"array\",\n description: \"Guides in the group, in order. Drag to reorder.\",\n of: [\n defineArrayMember({\n name: \"guide\",\n type: \"reference\",\n to: [{ type: guideTypeName }],\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: \"title\",\n guide0: \"guides.0.title\",\n guide1: \"guides.1.title\",\n guide2: \"guides.2.title\",\n guide3: \"guides.3.title\",\n },\n prepare(selection: { title?: string; guide0?: string; guide1?: string; guide2?: string; guide3?: string }) {\n const { title, guide0, guide1, guide2, guide3 } = selection;\n\n const shown = [guide0, guide1, guide2].filter((guide): guide is string => isDefined(guide));\n\n function formatSubtitle() {\n if (!isDefined(shown)) return \"No guides selected\";\n if (isDefined(guide3)) return `${shown.slice(0, 2).join(\", \")}, and others`;\n return new Intl.ListFormat(\"en-US\").format(shown);\n }\n\n return {\n title: title ?? \"Group\",\n subtitle: formatSubtitle(),\n };\n },\n },\n }),\n ],\n }),\n ],\n});\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport type { ComponentType } from \"react\";\nimport { definePlugin } from \"sanity\";\nimport type { DocumentDefinition, PortableTextObject, SchemaTypeDefinition } from \"sanity\";\n\nimport { defaultTitle, defaultUndocumentedFieldMessage, pluginName } from \"@/config/defaults\";\nimport { documentTypes, singletonTypes } from \"@/config/documents\";\nimport type { HandbookProviderConfig } from \"@/contexts/handbook\";\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { HandbookTool } from \"@/layouts/tool\";\nimport { isPermittedEditor, setConfiguredEditors } from \"@/lib/editors\";\nimport { calloutType } from \"@/schemas/blocks/callout\";\nimport { codeType } from \"@/schemas/blocks/code\";\nimport { horizontalRuleType } from \"@/schemas/blocks/horizontal-rule\";\nimport { imageType } from \"@/schemas/blocks/image\";\nimport { videoType } from \"@/schemas/blocks/video\";\nimport { createGuideType } from \"@/schemas/types/guide\";\nimport { handbookType } from \"@/schemas/types/handbook\";\n\ndeclare module \"@sanity/types\" {\n interface FieldDefinitionBase {\n /** Handbook documentation for the field. */\n handbook?: SanityHandbookMetadata;\n }\n\n // oxlint-disable-next-line no-shadow -- Module augmentation intentionally redeclares the imported type.\n interface DocumentDefinition {\n /** Handbook documentation for the document type. */\n handbook?: SanityHandbookMetadata;\n }\n}\n\n/**\n * Documentation added to a field or document definition, shown in the Handbook.\n *\n * @public\n */\nexport interface SanityHandbookMetadata {\n /** Title to show instead of the schema title. */\n title?: string;\n /** Description shown below the field or document heading. */\n description?: string;\n /** Example value for the field. */\n example?: string;\n /** Tip, shown as a hint icon. */\n tip?: string;\n /** Extra information, shown as a hint icon. */\n info?: string;\n /** Warning, shown as a hint icon. */\n caution?: string;\n}\n\n/**\n * A group of document types with the same role in the content model, shown as one sidebar section.\n *\n * @public\n */\nexport interface SanityHandbookDocumentRole {\n /** Role title. */\n title: string;\n /** Short description of the role. */\n description?: string;\n /** Document definitions in the role. */\n documents: DocumentDefinition[];\n}\n\n/**\n * A custom Portable Text block for guides: its schema and the component that renders it.\n *\n * @public\n */\nexport interface SanityHandbookBlockDefinition {\n /** Schema type definition for the block. */\n schema: SchemaTypeDefinition;\n /** Component that renders the block in the Handbook. */\n component: ComponentType<{ value: PortableTextObject }>;\n}\n\n/**\n * Plugin configuration. Only `roles` is required.\n *\n * @public\n */\nexport interface SanityHandbookConfig {\n /** Title in the Studio's tool menu. Defaults to `\"Handbook\"`. */\n title?: string;\n /** Heading at the top of the sidebar. Defaults to `\"Handbook\"`. */\n sidebarTitle?: string;\n /** Document roles, each shown as a section in the sidebar. */\n roles: SanityHandbookDocumentRole[];\n /** Custom Portable Text blocks for guides. Defaults to none. */\n blocks?: SanityHandbookBlockDefinition[];\n /** Email addresses of the people who can edit Handbook documents. Defaults to everyone. */\n editors?: string[];\n /** Message shown for fields without a description. Defaults to a prompt to ask the development team. */\n undocumentedFieldMessage?: string;\n}\n\n/**\n * Adds a Handbook tool to Sanity Studio, with documentation generated from the schema and guides written\n * in the Studio.\n *\n * @param config - The plugin configuration.\n * @returns The plugin.\n * @public\n */\nexport const handbookPlugin = definePlugin<SanityHandbookConfig>((config) => {\n const { title, sidebarTitle, roles, blocks, editors, undocumentedFieldMessage } = config;\n\n setConfiguredEditors(editors);\n\n const resolved: HandbookProviderConfig = {\n sidebarTitle: sidebarTitle ?? defaultTitle,\n roles,\n blocks: blocks ?? [],\n undocumentedFieldMessage: undocumentedFieldMessage ?? defaultUndocumentedFieldMessage,\n };\n\n const guideType = createGuideType(resolved.blocks);\n\n return {\n name: pluginName,\n schema: {\n types: [\n handbookType,\n guideType,\n imageType,\n videoType,\n codeType,\n calloutType,\n horizontalRuleType,\n ...resolved.blocks.map((block) => block.schema),\n ],\n },\n document: {\n newDocumentOptions: (templateItems, { creationContext, currentUser }) => {\n if (creationContext.type !== \"global\" && creationContext.type !== \"structure\") {\n return templateItems;\n }\n\n const hiddenTypes = isPermittedEditor(editors, currentUser?.email) ? singletonTypes : documentTypes;\n\n return templateItems.filter(\n ({ templateId }) =>\n ![...hiddenTypes].some((type) => templateId === type || templateId.startsWith(`${type}-`)),\n );\n },\n actions: (actionComponents, { schemaType }) => {\n if (singletonTypes.has(schemaType)) {\n return actionComponents.filter(({ action }) => ![\"delete\", \"duplicate\", \"unpublish\"].includes(action ?? \"\"));\n }\n\n return actionComponents;\n },\n },\n tools: [\n {\n name: \"handbook\",\n title: title ?? defaultTitle,\n icon: createSanityIcon(BookTextIcon),\n component: HandbookTool,\n options: resolved,\n },\n ],\n };\n});\n","import { createSanityIcon } from \"@repo/lib/icons\";\nimport type { CurrentUser } from \"sanity\";\nimport type { StructureBuilder } from \"sanity/structure\";\n\nimport { BookOpenTextIcon } from \"@/icons/book-open-text\";\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { isPermittedEditor } from \"@/lib/editors\";\nimport { guideTypeName, handbookTypeName } from \"@/types\";\n\n/**\n * Creates Structure tool items for the Handbook documents, or none when the current user can't edit them.\n *\n * @param structureBuilder - The structure builder.\n * @param context - The structure context, with the current user.\n * @param editors - Email addresses of the editors, defaulting to the configured list.\n * @returns List items for the Handbook document and the guides list, oldest guide first.\n * @public\n */\nexport function handbookStructure(\n structureBuilder: StructureBuilder,\n context: { currentUser: CurrentUser | null },\n editors?: string[],\n) {\n if (!isPermittedEditor(editors, context.currentUser?.email)) return [];\n\n const { listItem, document, documentTypeList } = structureBuilder;\n\n return [\n listItem()\n .title(\"Handbook\")\n .icon(createSanityIcon(BookTextIcon))\n .child(document().id(handbookTypeName).schemaType(handbookTypeName).title(\"Handbook\")),\n listItem()\n .title(\"Handbook Guides\")\n .icon(createSanityIcon(BookOpenTextIcon))\n .child(\n documentTypeList(guideTypeName)\n .title(\"Handbook Guides\")\n .defaultOrdering([{ field: \"_createdAt\", direction: \"asc\" }]),\n ),\n ];\n}\n","import { useCurrentUser } from \"sanity\";\n\nimport { isPermittedEditor } from \"@/lib/editors\";\n\n/**\n * Checks whether the current user can edit Handbook documents. Without an editors list, everyone can.\n *\n * @param editors - Email addresses of the editors, defaulting to the configured list.\n * @returns Whether the current user can edit Handbook documents.\n * @public\n */\nexport function useIsHandbookEditor(editors?: string[]) {\n const user = useCurrentUser();\n\n return isPermittedEditor(editors, user?.email);\n}\n"],"mappings":"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"}
|