fumadocs-ui 16.17.2 → 16.17.3

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.
@@ -1 +1 @@
1
- @source inline("!header !showItem *:col-start-1 *:my-auto *:pointer-events-auto *:rounded-md *:row-start-1 *:w-(--fd-sidebar-width) --fd-docs-height --fd-docs-row-1 --fd-docs-row-2 --fd-docs-row-3 --fd-header-height --fd-layout-width --fd-sidebar-col --fd-sidebar-width --fd-toc-popover-height --fd-toc-width -mx-1 -translate-x-(--fd-sidebar-width) -translate-y-full [&_svg]:shrink-0 [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-popover-height:0px] [--fd-toc-width:0px] [grid-area:header] [grid-area:main] [grid-area:sidebar] [grid-area:tabs] [grid-area:toc-popover] [grid-area:toc] aiChat aria-valuemax aria-valuemin aria-valuenow article available backdrop-blur-sm before before:absolute before:bg-fd-border before:content-[''] before:inset-s-2.5 before:inset-y-1 before:w-px bg-fd-background/80 border-b-2 border-e border-e-0 border-fd-primary border-y-0 breadcrumb breadcrumbEnabled circleProps circumference clerk click containerProps createLinkItemRenderer data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-s-2.5 data-[active=true]:before:inset-y-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-sidebar-in data-[transparent=false]:bg-fd-background/80 data-full data-hovered data-layout-content data-layout-main data-sidebar-collapsed data-sidebar-panel data-sidebar-placeholder data-toc-popover data-toc-popover-content data-toc-popover-trigger data-transparent defaultSlots duration-250 edit empty:mb-0 first:mt-0 flex-row-reverse font-semibold footer footerEnabled footerList fumadocs-core/breadcrumb gap-2.5 gap-6 getBreadcrumbItemsFromPath grid-cols-1 gridTemplate h-(--fd-header-height) h-(--fd-toc-popover-height) h-10 h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none iconLinks including inert information inset-e-0 inset-s-4 inset-y-2 isNavTransparent isTop items-end justify-items-center justify-self-end justify-start layout-level layoutTabs linkItems max max-h-[50vh] max-md:hidden max-md:layout:[--fd-header-height:--spacing(14)] max-w-[1168px] max-w-[380px] max-w-[900px] max-xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)] mb-4 mb-8 mb-auto md:in-data-[sidebar-collapsed=true]:pt-16 md:layout:[--fd-sidebar-width:268px] md:pt-8 md:px-6 min min-h-(--fd-docs-height) mt-6 mx-0.5 navEnabled navTransparentMode nd-docs-layout nd-page nd-subnav nd-toc nd-toc-placeholder no normalizedValue onClickItem onClickOutside overflow-x-clip p-0 pagination pb-1.5 pe-0 pe-4 pointer-events-none popover progress progressbar provided pt-0.5 pt-12 pt-2 pt-3 px-6 py-0 py-6 radius restSvgProps rotate-180 rounded-none rtl:-translate-x-2 rtl:translate-x-full selectedIdx setDate showItem sidebarEnabled sidebarProps size-4.5 stroke-current/25 strokeDasharray strokeDashoffset tabMode tableOfContent tableOfContentPopover takes text-[1.75em] text-end text-fd-foreground timezone toc-popover toc-title tocEnabled tocPopover tocPopoverEnabled tocPopoverProps tocProps top-(--fd-docs-row-1) top-(--fd-docs-row-2) top-[calc(--spacing(4)+var(--fd-docs-row-3))] transition-[--fd-sidebar-col] transition-[opacity,translate,color] transition-[opacity,translate] transition-[opacity,visibility] transition-[width,inset-block,translate,background-color] translate-x-2 translate-y-full transparentMode typography under unlisted updated useBaseSlots useDocsLayout useDocsPage useFooterItems useIsScrollTop useTreeContext w-(--fd-sidebar-width) w-(--fd-toc-width) w-4 w-[85%] xl:border-s xl:h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] xl:hidden xl:in-data-[sidebar-collapsed=true]:pt-14 xl:layout:[--fd-toc-width:268px] xl:pt-14 xl:px-8 xl:sticky xl:top-(--fd-docs-row-1) z-10 z-20 z-30");
1
+ @source inline("!header !showItem *:col-start-1 *:my-auto *:pointer-events-auto *:rounded-md *:row-start-1 *:w-(--fd-sidebar-width) --fd-docs-height --fd-docs-row-1 --fd-docs-row-2 --fd-docs-row-3 --fd-header-height --fd-layout-width --fd-sidebar-col --fd-sidebar-width --fd-toc-popover-height --fd-toc-width -mx-1 -translate-x-(--fd-sidebar-width) -translate-y-full [&_svg]:shrink-0 [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-popover-height:0px] [--fd-toc-width:0px] [grid-area:header] [grid-area:main] [grid-area:sidebar] [grid-area:tabs] [grid-area:toc-popover] [grid-area:toc] aiChat aria-valuemax aria-valuemin aria-valuenow article available backdrop-blur-sm before:absolute before:bg-fd-border before:content-[''] before:inset-s-2.5 before:inset-y-1 before:w-px bg-fd-background/80 border-b-2 border-e border-e-0 border-fd-primary border-y-0 breadcrumb breadcrumbEnabled circleProps circumference clerk click containerProps createLinkItemRenderer data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-s-2.5 data-[active=true]:before:inset-y-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-sidebar-in data-[transparent=false]:bg-fd-background/80 data-full data-hovered data-layout-content data-layout-main data-sidebar-collapsed data-sidebar-panel data-sidebar-placeholder data-toc-popover data-toc-popover-content data-toc-popover-trigger data-transparent defaultSlots duration-250 edit empty:mb-0 first:mt-0 flex-row-reverse font-semibold footer footerEnabled footerList fumadocs-core/breadcrumb gap-2.5 gap-6 getBreadcrumbItemsFromPath grid-cols-1 gridTemplate h-(--fd-header-height) h-(--fd-toc-popover-height) h-10 h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none iconLinks including inert information inset-e-0 inset-s-4 inset-y-2 isNavTransparent isTop items-end justify-items-center justify-self-end justify-start layout-level layoutTabs linkItems max max-h-[50vh] max-md:layout:[--fd-header-height:--spacing(14)] max-w-[1168px] max-w-[380px] max-w-[900px] max-xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)] mb-4 mb-8 mb-auto md:in-data-[sidebar-collapsed=true]:pt-16 md:layout:[--fd-sidebar-width:268px] md:pt-8 md:px-6 min min-h-(--fd-docs-height) mt-6 mx-0.5 navEnabled navTransparentMode nd-docs-layout nd-page nd-subnav nd-toc nd-toc-placeholder no normalizedValue onClickItem onClickOutside overflow-x-clip pagination pb-1.5 pe-0 pe-4 pointer-events-none popover progress progressbar provided pt-0.5 pt-12 pt-2 pt-3 px-6 py-0 py-6 radius restSvgProps rotate-180 rounded-none rtl:-translate-x-2 rtl:translate-x-full selectedIdx setDate showItem sidebarEnabled sidebarProps size-4.5 stroke-current/25 strokeDasharray strokeDashoffset tabMode tableOfContent tableOfContentPopover takes text-[1.75em] text-end timezone toc-popover toc-title tocEnabled tocPopover tocPopoverEnabled tocPopoverProps tocProps top-(--fd-docs-row-1) top-(--fd-docs-row-2) top-[calc(--spacing(4)+var(--fd-docs-row-3))] transition-[--fd-sidebar-col] transition-[opacity,translate,color] transition-[opacity,translate] transition-[opacity,visibility] transition-[width,inset-block,translate,background-color] translate-x-2 translate-y-full transparentMode typography under unlisted updated useBaseSlots useDocsLayout useDocsPage useFooterItems useIsScrollTop useTreeContext viewport w-(--fd-sidebar-width) w-(--fd-toc-width) w-4 w-[85%] xl:border-s xl:h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] xl:hidden xl:in-data-[sidebar-collapsed=true]:pt-14 xl:layout:[--fd-toc-width:268px] xl:pt-14 xl:px-8 xl:sticky xl:top-(--fd-docs-row-1) z-10 z-20 z-30");
@@ -1 +1 @@
1
- @source inline("!enabled !header *:gap-0! *:rounded-lg --removed-body-scroll-bar-size -mx-1 [&_svg]:shrink-0 [grid-area:main] animate animate-fd-fade-in aria-valuemax aria-valuemin aria-valuenow article available backdrop-blur-md backdrop-blur-sm before before:absolute before:bg-fd-border before:content-[''] before:inset-y-1 before:start-2.5 before:w-px bg-fd-background/60 bg-fd-popover/80 border-x bottom-26 breadcrumb breadcrumbEnabled circleProps circumference clerk click containerProps createLinkItemRenderer createPortal data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-full data-layout-content data-layout-main data-toc-popover data-toc-popover-content data-toc-popover-trigger defaultChildren defaultSlots defaultTabs duration ease edit empty:mb-0 exit first:mt-0 flex-row-reverse flux-layout-slot font-semibold footer footerEnabled footerList fumadocs-core/breadcrumb gap-2.5 getBreadcrumbItemsFromPath grid-cols-1 h-8.5 h-9 head hide hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none including information initial justify-items-center layout-level lg:text-sm linkItems mask-[linear-gradient(to_bottom,transparent,white_--spacing(14),white_calc(100%---spacing(14)),transparent)] max max-h-[50vh] max-w-[1200px] max-w-[900px] max-w-svw mb-1.5 mb-4 mb-8 mb-auto md:pt-8 md:px-6 min min-h-11 motion motion/react ms-1 mt-6 nd-flux-layout nd-page no normalizedValue onAnimationComplete opacity overflow-x-clip overflow-y-hidden pagination pb-24 pointer-events-none popLayout pr-(--removed-body-scroll-bar-size,0) progress progressbar provided ps-2.5 py-10 py-16 py-6 radius react-remove-scroll renderNavigationPanel replace restSvgProps rotate-180 scale selectedIdx setBlockScroll setContainer setDate sidebarEnabled sidebarProps size-4.5 sm:border sm:bottom-6 sm:max-w-[380px] sm:max-w-[400px] sm:p-1 sm:rounded-2xl spanProps start stroke-current/25 strokeDasharray strokeDashoffset tabDropdown tableOfContent text-[1.75em] text-end timezone tocEnabled tocProps tool transition translate-x-[calc(-50%-var(--removed-body-scroll-bar-size,0px)/2)] translateY typography under updated useBaseSlots useDocsPage useFluxLayout useFooterItems w-[calc(100%-var(--removed-body-scroll-bar-size,0px))] wait xl:pt-14 xl:px-8 z-30");
1
+ @source inline("!enabled !header *:gap-0! *:rounded-lg --removed-body-scroll-bar-size -mx-1 [&_svg]:shrink-0 [grid-area:main] animate animate-fd-fade-in aria-valuemax aria-valuemin aria-valuenow article available backdrop-blur-md backdrop-blur-sm before:absolute before:bg-fd-border before:content-[''] before:inset-y-1 before:start-2.5 before:w-px bg-fd-background/60 bg-fd-popover/80 border-x bottom-26 breadcrumb breadcrumbEnabled circleProps circumference clerk click containerProps createLinkItemRenderer createPortal data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-full data-layout-content data-layout-main data-toc-popover data-toc-popover-content data-toc-popover-trigger defaultChildren defaultSlots defaultTabs duration ease edit empty:mb-0 exit first:mt-0 flex-row-reverse flux-layout-slot font-semibold footer footerEnabled footerList fumadocs-core/breadcrumb gap-2.5 getBreadcrumbItemsFromPath grid-cols-1 h-8.5 h-9 head hide hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none including information initial justify-items-center layout-level lg:text-sm linkItems mask-[linear-gradient(to_bottom,transparent,white_--spacing(14),white_calc(100%---spacing(14)),transparent)] max max-h-[50vh] max-w-[1200px] max-w-[900px] max-w-svw mb-1.5 mb-4 mb-8 mb-auto md:pt-8 md:px-6 min min-h-11 motion motion/react ms-1 mt-6 nd-flux-layout nd-page no normalizedValue onAnimationComplete opacity overflow-x-clip overflow-y-hidden pagination pb-24 pointer-events-none popLayout pr-(--removed-body-scroll-bar-size,0) progress progressbar provided ps-2.5 py-10 py-16 py-6 radius react-remove-scroll renderNavigationPanel replace restSvgProps rotate-180 scale selectedIdx setBlockScroll setContainer setDate sidebarEnabled sidebarProps size-4.5 sm:border sm:bottom-6 sm:max-w-[380px] sm:max-w-[400px] sm:p-1 sm:rounded-2xl spanProps stroke-current/25 strokeDasharray strokeDashoffset tabDropdown tableOfContent text-[1.75em] text-end timezone tocEnabled tocProps tool transition translate-x-[calc(-50%-var(--removed-body-scroll-bar-size,0px)/2)] translateY typography under updated useBaseSlots useDocsPage useFluxLayout useFooterItems viewport w-[calc(100%-var(--removed-body-scroll-bar-size,0px))] wait xl:pt-14 xl:px-8 z-30");
@@ -1 +1 @@
1
- @source inline("!footer --fd-header-height --fd-left-width --fd-main-width --fd-right-width --row --width -me-1.5 -mt-1.5 -mx-1 -translate-x-[280px] @default @sm:max-w-[200px] [--fd-left-width:0px] [--fd-main-width:900px] [--fd-right-width:0px] [--row:calc(3*var(--spacing))] [--row:calc(6*var(--spacing))] [grid-area:left-margin/left-margin/right/right] [grid-area:left] [grid-area:main] [grid-area:right/right-margin/right/right] [grid-area:right] [mask-image:linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent))] [mask-image:radial-gradient(circle_at_center_right,white,white_200px,transparent_500px)] aiChat article autoScroll available backdrop-blur-sm base baseVariants before bg-fd-muted-foreground/50 bg-fd-popover/80 clientX collapse contentProps data-[active=false]:hover:text-fd-accent-foreground data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-sidebar-in data-fd-full defaultSlots defaultTabs edit exitTimerRef fd-glass-layout first:mt-0 flex-row-reverse font-semibold footer footerList fumadocs-core/breadcrumb getBreadcrumbItemsFromPath grid-cols-1 gridTemplate gridTemplateRows h-0 h-6 h-8 h-[calc(100dvh---spacing(4))] handles hover hover:decoration-dashed hover:decoration-fd-muted-foreground hover:opacity-80 hover:underline hover:underline-offset-4 inAnimation including information innerWidth inset-e-0 isLayoutTabActive itemTriggerVariants items-start justify-end justify-self-end layout:[--fd-main-width:1200px] leaves left left-margin leftSpace lg linkItems longer max-md:bg-linear-to-t max-md:bottom-0 max-md:from-fd-background max-md:h-16 max-md:hidden max-md:mt-auto max-md:pb-4 max-md:ps-[calc(--spacing(1.5)-1px)] max-md:w-4 max-w-[calc(100vw-3rem)] max-xl:-translate-y-1/2 max-xl:bg-fd-popover max-xl:end-1 max-xl:grid-cols-[calc(240px---spacing(6))] max-xl:mask-none max-xl:max-h-[calc(100dvh---spacing(32))] max-xl:overflow-clip max-xl:p-3 max-xl:ps-[calc(--spacing(2.5)-1px)] max-xl:rounded-xl max-xl:shadow-md max-xl:text-fd-popover-foreground max-xl:top-1/2 max-xl:w-6 max-xl:w-[240px] mb-8 md:bg-linear-to-b md:from-fd-background md:h-(--fd-header-height) md:layout:[--fd-header-height:--spacing(12)] md:layout:[--fd-left-width:0px] md:layout:[--fd-left-width:280px] md:layout:[--fd-right-width:12px] md:pb-8 md:pt-16 md:pt-2 md:px-2 md:py-1.5 md:top-0 min-h-dvh mobile mt-2 mt-2.5 mt-4 mx-2 my-2 nd-toc nd-toc-title no onPointerDown opacity-100 overflow-x-clip overflow-y-hidden p-0 p-6 pagination pb-16 pb-4 pe-3 pe-3.5 pen pointer pointer-events-none provided ps-2.5 ps-3 ps-4.5 pt-2 pt-4 reuse right right-margin rightIcon setDate setInAnimation setMobileOpen shadow-fd-background shouldOpen size-10 size-12 size-3.5! size-4! start text-[1.75em] text-end text-fd-foreground text-fd-primary/80 timeout timezone top-2 transition-[background-color,width,height] transition-[grid-template-rows] transition-[opacity,height] transition-[width,padding] transitionTimerRef typography under unlisted updated useBaseSlots useFooterItems useGlassLayout w-(--width) w-[360px] w-[calc(280px---spacing(2))] we well xl:[@media(hover:none)]:[--row:calc(6*var(--spacing))] xl:[@media(hover:none)]:h-6 xl:[@media(hover:none)]:h-px xl:[@media(hover:none)]:opacity-100 xl:[@media(hover:none)]:pointer-events-auto xl:[@media(hover:none)]:w-(--width) xl:bg-fd-popover xl:border xl:flex-row-reverse xl:h-[calc(100dvh---spacing(10))] xl:h-[calc(100dvh-var(--fd-header-height)---spacing(4))] xl:hidden xl:items-center xl:items-end xl:layout:[--fd-right-width:240px] xl:me-2 xl:pe-4 xl:rounded-2xl xl:shadow-sm xl:sticky xl:text-end xl:top-10 xl:top-[calc(var(--fd-header-height)+--spacing(2))] z-10 z-20 z-30");
1
+ @source inline("!footer --fd-header-height --fd-left-width --fd-main-width --fd-right-width --row --width -me-1.5 -mt-1.5 -mx-1 -translate-x-[280px] @default @sm:max-w-[200px] [--fd-left-width:0px] [--fd-main-width:900px] [--fd-right-width:0px] [--row:calc(3*var(--spacing))] [--row:calc(6*var(--spacing))] [grid-area:left-margin/left-margin/right/right] [grid-area:left] [grid-area:main] [grid-area:right/right-margin/right/right] [grid-area:right] [mask-image:linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent))] [mask-image:radial-gradient(circle_at_center_right,white,white_200px,transparent_500px)] aiChat article autoScroll available backdrop-blur-sm base baseVariants bg-fd-muted-foreground/50 bg-fd-popover/80 clientX collapse contentProps data-[active=false]:hover:text-fd-accent-foreground data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-sidebar-in data-fd-full defaultSlots defaultTabs edit exitTimerRef fd-glass-layout first:mt-0 flex-row-reverse font-semibold footer footerList fumadocs-core/breadcrumb getBreadcrumbItemsFromPath grid-cols-1 gridTemplate gridTemplateRows h-0 h-6 h-8 h-[calc(100dvh---spacing(4))] handles hover hover:decoration-dashed hover:decoration-fd-muted-foreground hover:opacity-80 hover:underline hover:underline-offset-4 inAnimation including information innerWidth inset-e-0 isLayoutTabActive itemTriggerVariants items-start justify-end justify-self-end layout:[--fd-main-width:1200px] leaves left left-margin leftSpace lg linkItems longer max-md:bg-linear-to-t max-md:bottom-0 max-md:from-fd-background max-md:h-16 max-md:mt-auto max-md:pb-4 max-md:ps-[calc(--spacing(1.5)-1px)] max-md:w-4 max-w-[calc(100vw-3rem)] max-xl:-translate-y-1/2 max-xl:bg-fd-popover max-xl:end-1 max-xl:grid-cols-[calc(240px---spacing(6))] max-xl:mask-none max-xl:max-h-[calc(100dvh---spacing(32))] max-xl:overflow-clip max-xl:p-3 max-xl:ps-[calc(--spacing(2.5)-1px)] max-xl:rounded-xl max-xl:shadow-md max-xl:text-fd-popover-foreground max-xl:top-1/2 max-xl:w-6 max-xl:w-[240px] mb-8 md:bg-linear-to-b md:from-fd-background md:h-(--fd-header-height) md:layout:[--fd-header-height:--spacing(12)] md:layout:[--fd-left-width:0px] md:layout:[--fd-left-width:280px] md:layout:[--fd-right-width:12px] md:pb-8 md:pt-16 md:pt-2 md:px-2 md:py-1.5 md:top-0 min-h-dvh mobile mt-2 mt-2.5 mx-2 my-2 nd-toc nd-toc-title no onPointerDown opacity-100 overflow-x-clip overflow-y-hidden p-6 pagination pb-16 pb-4 pe-3 pe-3.5 pen pointer pointer-events-none provided ps-2.5 ps-3 ps-4.5 pt-2 pt-4 reuse right right-margin rightIcon setDate setInAnimation setMobileOpen shadow-fd-background shouldOpen size-10 size-12 size-3.5! size-4! text-[1.75em] text-end text-fd-primary/80 timeout timezone top-2 transition-[background-color,width,height] transition-[grid-template-rows] transition-[opacity,height] transition-[width,padding] transitionTimerRef typography under unlisted updated useBaseSlots useFooterItems useGlassLayout w-(--width) w-[360px] w-[calc(280px---spacing(2))] we well xl:[@media(hover:none)]:[--row:calc(6*var(--spacing))] xl:[@media(hover:none)]:h-6 xl:[@media(hover:none)]:h-px xl:[@media(hover:none)]:opacity-100 xl:[@media(hover:none)]:pointer-events-auto xl:[@media(hover:none)]:w-(--width) xl:bg-fd-popover xl:border xl:flex-row-reverse xl:h-[calc(100dvh---spacing(10))] xl:h-[calc(100dvh-var(--fd-header-height)---spacing(4))] xl:hidden xl:items-center xl:items-end xl:layout:[--fd-right-width:240px] xl:me-2 xl:pe-4 xl:rounded-2xl xl:shadow-sm xl:sticky xl:text-end xl:top-10 xl:top-[calc(var(--fd-header-height)+--spacing(2))] z-10 z-20 z-30");
@@ -1 +1 @@
1
- @source inline("*:max-w-(--fd-layout-width) *:mx-auto --fd-layout-width -me-1.5 -ms-1.5 -mx-1 [&_svg]:size-5.5 [--fd-layout-width:1400px] been bg-fd-background/80 data-[active=true]:font-medium defaultVariants enableHoverToOpen first:ms-0 font-bold font-semibold gap-2.5 grid-cols-1 h-14 had hideIfDisabled hover:text-fd-popover-foreground/50 hovering isTop isTransparent justify-end last:me-0 lg:grid-cols-3 lg:hidden linkItems looking max-lg:hidden max-lg:rounded-b-2xl max-lg:shadow-lg max-sm:hidden max-sm:mt-2 max-w-[240px] max-w-md mb-4 md:grid-cols-2 might mobile mt-4 navEnabled navItemVariants nd-home-layout nd-nav ps-2.5 px-6 px-8 sm:flex-row sm:hidden sm:items-center sm:justify-end temporarily text-2xl text-6xl text-base transparentMode under useBaseSlots useHomeLayout useIsScrollTop");
1
+ @source inline("*:max-w-(--fd-layout-width) *:mx-auto --fd-layout-width -me-1.5 -ms-1.5 -mx-1 [&_svg]:size-5.5 [--fd-layout-width:1400px] been bg-fd-background/80 data-[active=true]:font-medium defaultVariants enableHoverToOpen first:ms-0 font-bold font-semibold gap-2.5 grid-cols-1 had hideIfDisabled hover:text-fd-popover-foreground/50 hovering isTop isTransparent justify-end last:me-0 lg:grid-cols-3 lg:hidden linkItems looking max-lg:hidden max-lg:rounded-b-2xl max-lg:shadow-lg max-sm:hidden max-sm:mt-2 max-w-[240px] max-w-md mb-4 md:grid-cols-2 might mobile navEnabled navItemVariants nd-home-layout nd-nav ps-2.5 px-6 px-8 sm:flex-row sm:hidden sm:items-center sm:justify-end temporarily text-2xl text-6xl text-base transparentMode under useBaseSlots useHomeLayout useIsScrollTop");
@@ -1 +1 @@
1
- @source inline("!footer !isSelected !showItem *:col-start-1 *:max-w-[1285px] *:max-w-[900px] *:my-auto *:pointer-events-auto *:row-start-1 *:w-(--fd-sidebar-width) --fd-ai-chat-col --fd-ai-chat-col_300ms_ease-in-out --fd-docs-height --fd-docs-row-1 --fd-docs-row-2 --fd-docs-row-3 --fd-header-height --fd-layout-width --fd-sidebar-col --fd-sidebar-col_150ms --fd-sidebar-width --fd-toc-col --fd-toc-popover-height --fd-toc-width -me-1.5 -ms-1.5 -mx-1 -translate-x-(--fd-sidebar-width) -translate-y-full [&_svg]:shrink-0 [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-col:max(var(--fd-toc-width),var(--fd-ai-chat-col))] [--fd-toc-popover-height:0px] [--fd-toc-width:0px] [grid-area:header] [grid-area:main] [grid-area:sidebar] [grid-area:toc-popover] [grid-area:toc] [transition:--fd-sidebar-col_150ms,--fd-ai-chat-col_300ms_ease-in-out] aiChat aiChatOpen aria-valuemax aria-valuemin aria-valuenow article auto-cols-auto auto-rows-auto available backdrop-blur-sm before before:absolute before:bg-fd-border before:content-[''] before:inset-s-2.5 before:inset-y-1 before:w-px bg-fd-background/80 border-b-2 border-e border-fd-primary breadcrumb breadcrumbEnabled circleProps circumference clerk click collapseTrigger containerProps createLinkItemRenderer data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-s-2.5 data-[active=true]:before:inset-y-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-[collapsed=false]:hidden data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-sidebar-in data-[transparent=false]:bg-fd-background/80 data-full data-header-body data-header-tabs data-hovered data-layout-content data-layout-main data-sidebar-collapsed data-sidebar-placeholder data-toc-popover data-toc-popover-content data-toc-popover-trigger data-transparent defaultSlots delaySetOpen duration-250 edit empty:mb-0 first:mt-0 flex-row-reverse font-semibold footer footerEnabled footerList freezeUntil fumadocs-core/breadcrumb gap-2.5 gap-6 getBreadcrumbItemsFromPath grid-cols-1 gridTemplate h-(--fd-toc-popover-height) h-10 h-14 h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] has-data-[active=true]:text-fd-primary has-data-[collapsed=true]:md:flex hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none hoverDelay iconLinks including information inset-e-0 inset-y-2 isLayoutTabActive isNavTransparent isSelected isTop items-end justify-end justify-self-end layout-level layout:[--fd-header-height:--spacing(14)] lg:hidden lg:layout:[--fd-header-height:--spacing(24)] linkItems max max-h-[50vh] max-lg:flex max-lg:hidden max-md:flex max-md:hidden max-w-[240px] max-w-[380px] max-w-sm max-xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)] maxTouchPoints mb-1.5 mb-3 mb-8 mb-auto md:gap-2 md:layout:[--fd-sidebar-width:268px] md:pt-8 md:px-6 min min-h-(--fd-docs-height) mt-6 mt-px mx-0.5 navEnabled navMode navTransparentMode navbar nd-notebook-layout nd-page nd-subnav nd-toc nd-toc-placeholder no normalizedValue onClickItem onClickOutside ontouchstart overflow-x-clip pageCol pagination pb-1.5 pe-4 pointer-events-none popover progress progressbar provided ps-2.5 pt-0.5 pt-12 pt-2 px-6 py-6 radius resolvedTabs restSvgProps rotate-180 rtl:-translate-x-2 rtl:translate-x-full selectedIdx setDate showItem showLayoutTabs sidebarCollapsible sidebarProps size-4.5 stroke-current/25 strokeDasharray strokeDashoffset tabMode tableOfContent tableOfContentPopover takes text-[1.75em] text-end text-fd-foreground timeoutRef timezone toc-popover toc-title tocEnabled tocPopover tocPopoverEnabled tocPopoverProps tocProps top-(--fd-docs-row-1) top-(--fd-docs-row-2) top-(--fd-docs-row-3) transition-[opacity,translate,color] transition-[opacity,translate] transition-[opacity,visibility] transition-[width,inset-block,translate,background-color] translate-x-2 translate-y-full transparentMode typedTabs typography under unlisted updated useBaseSlots useDocsPage useFooterItems useIsScrollTop useNotebookLayout w-(--fd-sidebar-width) w-(--fd-toc-width) w-4 w-[85%] xl:[--fd-ai-chat-col:var(--fd-ai-chat-width)] xl:border-s xl:h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] xl:hidden xl:layout:[--fd-toc-width:268px] xl:max-w-full xl:pt-14 xl:px-8 xl:sticky xl:top-(--fd-docs-row-3) z-10 z-20");
1
+ @source inline("!footer !isSelected !showItem *:col-start-1 *:max-w-[1285px] *:max-w-[900px] *:my-auto *:pointer-events-auto *:row-start-1 *:w-(--fd-sidebar-width) --fd-ai-chat-col --fd-ai-chat-col_300ms_ease-in-out --fd-docs-height --fd-docs-row-1 --fd-docs-row-2 --fd-docs-row-3 --fd-header-height --fd-layout-width --fd-sidebar-col --fd-sidebar-col_150ms --fd-sidebar-width --fd-toc-col --fd-toc-popover-height --fd-toc-width -me-1.5 -ms-1.5 -mx-1 -translate-x-(--fd-sidebar-width) -translate-y-full [&_svg]:shrink-0 [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-col:max(var(--fd-toc-width),var(--fd-ai-chat-col))] [--fd-toc-popover-height:0px] [--fd-toc-width:0px] [grid-area:header] [grid-area:main] [grid-area:sidebar] [grid-area:toc-popover] [grid-area:toc] [transition:--fd-sidebar-col_150ms,--fd-ai-chat-col_300ms_ease-in-out] aiChat aiChatOpen aria-valuemax aria-valuemin aria-valuenow article auto-cols-auto auto-rows-auto available backdrop-blur-sm before:absolute before:bg-fd-border before:content-[''] before:inset-s-2.5 before:inset-y-1 before:w-px bg-fd-background/80 border-b-2 border-e border-fd-primary breadcrumb breadcrumbEnabled circleProps circumference clerk click collapseTrigger containerProps createLinkItemRenderer data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-s-2.5 data-[active=true]:before:inset-y-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-[collapsed=false]:hidden data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-sidebar-in data-[transparent=false]:bg-fd-background/80 data-full data-header-body data-header-tabs data-hovered data-layout-content data-layout-main data-sidebar-collapsed data-sidebar-placeholder data-toc-popover data-toc-popover-content data-toc-popover-trigger data-transparent defaultSlots delaySetOpen duration-250 edit empty:mb-0 first:mt-0 flex-row-reverse font-semibold footer footerEnabled footerList freezeUntil fumadocs-core/breadcrumb gap-2.5 gap-6 getBreadcrumbItemsFromPath grid-cols-1 gridTemplate h-(--fd-toc-popover-height) h-10 h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] has-data-[active=true]:text-fd-primary has-data-[collapsed=true]:md:flex hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none hoverDelay iconLinks including information inset-e-0 inset-y-2 isLayoutTabActive isNavTransparent isSelected isTop items-end justify-end justify-self-end layout-level layout:[--fd-header-height:--spacing(14)] lg:hidden lg:layout:[--fd-header-height:--spacing(24)] linkItems max max-h-[50vh] max-lg:flex max-lg:hidden max-md:flex max-w-[240px] max-w-[380px] max-w-sm max-xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)] maxTouchPoints mb-1.5 mb-3 mb-8 mb-auto md:gap-2 md:layout:[--fd-sidebar-width:268px] md:pt-8 md:px-6 min min-h-(--fd-docs-height) mt-6 mt-px mx-0.5 navEnabled navMode navTransparentMode navbar nd-notebook-layout nd-page nd-subnav nd-toc nd-toc-placeholder no normalizedValue onClickItem onClickOutside ontouchstart overflow-x-clip pageCol pagination pb-1.5 pe-4 pointer-events-none popover progress progressbar provided ps-2.5 pt-0.5 pt-12 pt-2 px-6 py-6 radius resolvedTabs restSvgProps rotate-180 rtl:-translate-x-2 rtl:translate-x-full selectedIdx setDate showItem showLayoutTabs sidebarCollapsible sidebarProps size-4.5 stroke-current/25 strokeDasharray strokeDashoffset tabMode tableOfContent tableOfContentPopover takes text-[1.75em] text-end timeoutRef timezone toc-popover toc-title tocEnabled tocPopover tocPopoverEnabled tocPopoverProps tocProps top-(--fd-docs-row-1) top-(--fd-docs-row-2) top-(--fd-docs-row-3) transition-[opacity,translate,color] transition-[opacity,translate] transition-[opacity,visibility] transition-[width,inset-block,translate,background-color] translate-x-2 translate-y-full transparentMode typedTabs typography under unlisted updated useBaseSlots useDocsPage useFooterItems useIsScrollTop useNotebookLayout viewport w-(--fd-sidebar-width) w-(--fd-toc-width) w-4 w-[85%] xl:[--fd-ai-chat-col:var(--fd-ai-chat-width)] xl:border-s xl:h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] xl:hidden xl:layout:[--fd-toc-width:268px] xl:max-w-full xl:pt-14 xl:px-8 xl:sticky xl:top-(--fd-docs-row-3) z-10 z-20");
@@ -1 +1 @@
1
- @source inline("!collapsed !isActive !items !nested !open !title *:border-b *:data-[empty=true]:border-b-0 *:first:font-medium *:first:text-fd-primary *:flex *:flex! *:flex-col *:flex-col! *:gap-0.5! *:has-[+:last-child[data-empty=true]]:border-b-0 *:last:border-b-0 *:mask-[linear-gradient(to_bottom,white,white_30px,transparent_80px)] *:not-first:text-fd-muted-foreground *:nth-2:text-xs *:rounded-full ---spacing --callout-color --color-fd- --color-fd-muted --fd-ai-chat-width --fd-animated-height --fd-banner-height --offset-distance --opacity --padding-right --radix-navigation-menu-viewport-height --radix-popover-content-available-height --radix-popover-content-transform-origin --radix-popover-trigger-width --shiki-dark-bg --shiki-light-bg --spacing --track-bottom --track-top -mb-px -me-0.5 -me-2 -mx-px -rotate-90 -top-1.5 -translate-x-1/2 -translate-y-1/2 -z-1 @container @defaultValue @deprecated @fuma-translate/react @keyframes @max-lg:col-span-full @max-xl:hidden @param @radix-ui/react-accordion @radix-ui/react-collapsible @radix-ui/react-dialog @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-presence @radix-ui/react-scroll-area @radix-ui/react-tabs @ts-expect-error @typescript-eslint/no-namespace [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none [&_::highlight(fd-search)]:text-fd-primary [&_::highlight(fd-search)]:underline [&_svg]:size-3.5 [&_svg]:size-4 [&_svg]:size-4.5 [&_svg]:size-5 [&_svg]:size-full [&_svg]:text-fd-muted-foreground [clip-path:inset(0_0_100%)] [offset-distance:var(--offset-distance,0)] [scrollbar-width:none] a abcdefghijklmnopqrstuvwxyz234567 about absolute accordion action actions active activeItem add advanced after align align-text-bottom alignItems alignmentBaseline all allowClear allowCopy allowedMode allows alphabet altKey always an anchor and animate-pulse animation another application/json are areaRef aria-activedescendant aria-autocomplete aria-controls aria-describedby aria-expanded aria-hidden aria-label aria-labelledby aria-live aria-selected as aside ask assume assumes async at auto await b backdrop-blur-lg backdrop-blur-xs background background-position backgroundColor backgroundImage backgroundSize backward banner basePath baseProps baseSlots baseUrl based became behaviour belongs beside between bg-(--callout-color)/50 bg-(--shiki-light-bg) bg-fd-accent bg-fd-background bg-fd-border bg-fd-card bg-fd-muted bg-fd-overlay bg-fd-popover bg-fd-popover/60 bg-fd-primary bg-fd-primary/10 bg-fd-secondary bg-fd-secondary/50 bg-transparent bind binded bitsLeft black block blockRef boolean border border-b border-l border-none border-s border-t border-transparent borderBottom bottom bottom-0 bottom-1.5 boundary buffer bundle button buttonVariants by cache cached can canonical cards case cells center central change changeLayout changes chat child children chooseLanguage class-variance-authority className clear client client-side clientHeight clientWidth clients clipPath clone close closeOnRedirect closed closing cn code col-span-full collapsed collapsible collapsing collection color colors column columns com combobox compact compat compatible component components composedRef computed config const container containerRef containing content contents context controlled/uncontrolled copy core counterSet createContext createRelativeLink css ctx current currentColor cursor-default custom customize cva cx cy d dangerouslySetInnerHTML dark dark:bg-(--shiki-dark-bg) dashed data data-[active=true]:text-fd-primary data-[motion=from-end]:animate-fd-enterFromRight data-[motion=from-start]:animate-fd-enterFromLeft data-[motion=to-end]:animate-fd-exitToRight data-[motion=to-start]:animate-fd-exitToLeft data-[state=active]:border-fd-primary data-[state=active]:text-fd-primary data-[state=closed]:animate-fd-accordion-up data-[state=closed]:animate-fd-collapsible-up data-[state=closed]:animate-fd-dialog-out data-[state=closed]:animate-fd-fade-out data-[state=closed]:animate-fd-nav-menu-out data-[state=closed]:animate-fd-popover-out data-[state=hidden]:animate-fd-fade-out data-[state=inactive]:hidden data-[state=open]:animate-fd-accordion-down data-[state=open]:animate-fd-collapsible-down data-[state=open]:animate-fd-dialog-in data-[state=open]:animate-fd-fade-in data-[state=open]:animate-fd-nav-menu-in data-[state=open]:animate-fd-popover-in data-[state=open]:bg-fd-accent data-[state=open]:bg-fd-accent/50 data-[state=open]:text-fd-accent-foreground data-accordion-value data-active data-card data-checked data-checked:text-fd-accent-foreground data-collapsed data-empty data-highlight-ignore data-icon data-line-numbers data-line-numbers-start data-search data-search-full data-state data-theme-toggle date debounced declare default defaultColor defaultFormatter defaultIndex defaultItems defaultLanguage defaultMdxComponents defaultOpen defaultOpenLevel defaultShikiFactory defaultTransform defaultUrl defaultValue defineI18nUI defined delay delayMs depends deprecated depth description desktop detect development dialog dir disabled disabled:bg-fd-secondary disabled:opacity-50 disabled:pointer-events-none disabled:text-fd-secondary-foreground display displayName displayed distance div divide-fd-border divide-x divide-y docked document documented dominantBaseline don drawer dropdown duration-100 duration-200 duration-300 duration-400 during each ease-in-out ease-out element else empty empty:hidden enabled encoded end-2 endIdx endpoint env environment equal error escape eslint-disable-next-line event export expose extends external extraProps false fd-moving-banner fd-scroll-container fd-search-list fd-step fd-steps fetch fetchClient fetchOptions field fieldVariants figure file fill fill-(--callout-color) fill-fd-muted fill-fd-muted-foreground fill-fd-primary fill-fd-primary-foreground filter filters finally fixed flex flex-1 flex-col flex-row flex-wrap flexDirection floating flushSync focus focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring focus-visible:ring-inset folder folders font-medium font-mono fontSize fontWeight for forceMount forks formatter formatterOptions found free from full fumadocs-core/framework fumadocs-core/highlight fumadocs-core/i18n fumadocs-core/link fumadocs-core/page-tree fumadocs-core/search fumadocs-core/source fumadocs-core/toc function gap gap-0.5 gap-1 gap-1.5 gap-2 gap-3 gap-3.5 gap-4 gap-x-3 gap-y-4 generated getActive ghost github-dark github-light githubUrl given global globalKey grid grid-cols-2 grid-cols-[1fr_3fr] grid-cols-subgrid gridTemplateColumns group group-data-[active=true]:bg-fd-primary group-data-[active=true]:text-fd-primary-foreground group-data-[state=active]:bg-fd-primary group-data-[state=open]:rotate-180 group-data-[state=open]:rotate-90 group-hover/heading:opacity-100 group/heading groupListeners groups guides h h-(--fd-animated-height) h-(--radix-navigation-menu-viewport-height) h-9.5 h-[calc(100%+--spacing(1.5))] h-full h-px h1 h2 h3 h4 h5 h6 hand handleThemeChange has-focus-visible:bg-fd-accent hash hashchange hast-util-to-jsx-runtime hastContent have header headerId headers heading height hidden hideLocale highlight highlightRef highlighter hints hover:bg-fd-accent hover:bg-fd-accent/80 hover:bg-fd-primary/80 hover:text-fd-accent-foreground hovered href html hydration i i18n i18nProvider icon icon-sm icon-xs iconClass id idea idx if if-needed ignore ignoreTyping img import in inTab index infinite info inline inline-flex input inputType inset-0 inset-e-2 inset-s-0 inset-s-3 inset-s-6 inset-x-0 inset-x-2 inset-y-0 inside instanceof instead integration interface intersect invisible is isActive isComposing isFirst isLast isLoading isTabActive isUp it item itemLineLengths itemVariants items items-baseline items-center itemsProp its js justify-between justify-center keepBackground key keyCode keydown keys l l0 l1 l2 label lang language languageSelect last last:line-clamp-2 last:rounded-b-xl layer layout layout:[--fd-ai-chat-width:min(--spacing(100),100vw---spacing(4))] lays leading-5 leading-none leaving left-0 left-1/2 length let letting level light light-dark light-dark-system like line line-through linear link links list list-none listbox listener listeners locale localeTranslations locales lower ltr lucide lucide-book lucide-book-icon lucide-react made main make mapped margin marginTop mark markdownUrl marked mask-[linear-gradient(to_bottom,transparent,white_12px,white_calc(100%-12px),transparent)] mask-[linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] maskComposite maskImage max-h-(--radix-popover-content-available-height) max-h-20 max-h-[460px] max-h-[600px] max-h-[80svh] max-md:bg-fd-secondary max-md:border max-md:p-1.5 max-md:rounded-md max-w-[1400px] max-w-[98vw] max-w-full max-w-screen-sm max-width max-xl:border max-xl:end-2 max-xl:fixed max-xl:inset-y-2 max-xl:rounded-2xl max-xl:shadow-xl max-xl:translate-x-[calc(100%+--spacing(2))] max-xl:w-(--fd-ai-chat-width) maximumFractionDigits mb-1 mb-2 md:hidden md:mb-auto md:size-5 md:top-[calc(50%-250px)] mdComponents mdx/types.js me-1 me-1.5 me-2 me-auto measured menu menuItems mergeRefs message metaKey middle min-h-0 min-w-0 min-w-[240px] min-w-fit min-w-full mode module motion-reduce:transition-none mount mounted mouse ms-2 ms-3 ms-auto ms-px mt-1 must mx-auto my-0 my-0! my-0.5 my-4 my-6 my-auto n name names namespace nav navItems navTitle navigate navigation nd-copy-ignore nd-sidebar nd-sidebar-mobile nearest needed nested nested-url never new newTheme next next-themes next/og node nodes none noop noopener noreferrer normal normalize not not-first:border-t not-last:mb-2 not-last:truncate not-prose notation note now null number numbers object observer of offsetHeight offsetPath offsetTop on onChange onClick onCopy onKey onOpenChange onOpenChangeCallback onPointerEnter onPointerLeave onPointerMove onPrint onSearchChange onSearchChangeCallback onSelect onSelectCallback onTagChange onTagChangeCallback onValueChange once one only opacity-(--opacity,0) opacity-0 open openFromHash opened option optional options or order origin-(--radix-popover-content-transform-origin) origin-[top_center] origin-center original other out outline outline-none output over overflow-auto overflow-clip overflow-hidden overflow-x-auto overflow-y-auto override overscroll-contain own owner p p-0.5 p-1 p-1.5 p-2 p-3 p-4 padding paddingBottom paddingInlineStart page pageUrl pageUrlProp panel panels parameters params parentId pass passed path pathname paths pb-0 pb-2 pe-2 pe-2.5 per performing persist persistent place placed placeholder placeholder:text-fd-muted-foreground please pointerType points polite populated pos positions possible powered pre pre-rendering predate prefetch present prev previous previousRef primary primaryColor primaryTextColor production promises prompt prompts prop props prose prose-no-margin prose-sm provide provider ps-1 ps-2 ps-3.25 ps-4 ps-8 pt-0 pure px px-0.5 px-1 px-1.5 px-2 px-2.5 px-3 px-4 py-0.5 py-1 py-1.5 py-12 py-2 py-2.5 py-3 py-3.5 q query querySelector questions rainbow rainbowColors raw re-create re-render react react-dom react-hooks/rules-of-hooks react-medium-image-zoom react/jsx-runtime read reader ref referenced region registering rel relative remove render renderOptions repo repository required resize resizing resolve resolved resolvedTheme response rest result results return revalidate right-2 role root rootRef round rounded-2xl rounded-[inherit] rounded-full rounded-lg rounded-md rounded-sm rounded-xl router row rowRenderOptions rows rtl:-scale-x-100 rtl:max-xl:-translate-x-[calc(100%+--spacing(2))] rtl:rotate-180 rtl:rotate-90 s same scroll scroll-into-view-if-needed scroll-m-20 scroll-m-24 scroll-m-28 scroll-m-4 scrollIntoView scrollMode search searchOptions searchToggle searchToggleEnabled searchTrigger secondary see select-none selected separate separator server set setActive setCollapsed setHover setLoading setMounted setOpen setOpenSearch setSvg setTag setValue shadow-2xl shadow-black/50 shadow-lg shadow-md shadow-sm shiftKey shiki shikiOptions shortcuts should show showAlgolia showOrama shown shows shrink-0 side sideOffset sidebar signature simple since single site size size-1 size-3 size-3.5 size-4 size-5 size-6.5 size-9 size-full sizes slots sm smaller so solid some source space span specific sr-only src stars startIdx state static status stay sticky still str string stroke stroke-fd-foreground/10 stroke-fd-primary strokeLinecap strokeLinejoin strokeWidth style styles subscribe subscribeActive success successful supported supposed sure svg switch switcher system t tab tabIndex table tableRenderOptions tables tabs tabsRef tag tagName tags take target tbody td text text-(--callout-color) text-[0.8125rem] text-[0.8125rem]/5 text-[0.9375rem] text-[10px] text-center text-fd-accent-foreground text-fd-card text-fd-card-foreground text-fd-foreground/80 text-fd-muted-foreground text-fd-muted-foreground/50 text-fd-popover-foreground text-fd-popover-foreground/80 text-fd-primary text-fd-primary-foreground text-fd-primary/50 text-fd-secondary-foreground text-inherit text-lg text-nowrap text-sm text-start text-xs text/plain textAnchor textContent th that the thead their them theme themeAriaLabels themeSwitch themeSwitchEnabled themes then they this throw thumbBox tier timerRef tip title to toJsxRuntime toc tocInfo toolbar top top-0 top-1/2 top-2.5 top-3 top-4 touch tr transform transition-[clip-path] transition-[height] transition-[opacity,offset-distance] transition-[width,height] transition-[width,margin,translate,visibility] transition-[width,margin,translate] transition-all transition-colors transition-opacity transition-transform translationKeys translations translations/keys.json transparent tree trigger triggers true truncate try type typeof types unchanged undefined underline underlying understand unknown unnecessarily update updateAnchor updates upperX url urls us usage use useAlgoliaSearch useCopyButton useDocsSearch useHotKey useI18n useId useIsDocsLayout useItems useMediaQuery useMemo useOnChange useOramaCloudSearch usePathname useProps useRef useRouter useSearchContext useSidebar useState useSyncExternalStore useTOCItems useTabsGroups useTheme useTranslations useTreePath useful users using usually v v17 value valueToIdMap values variables variant variants vertical viewBox viewRef viewport viewportProps visible vite void w w-(--fd-ai-chat-width) w-(--radix-popover-trigger-width) w-0 w-0.5 w-1.5 w-1/4 w-[calc(100%-1rem)] w-fit w-full w-max w-px want warn warning what when where which while white whitespace-nowrap whitespaces wide width will window with without work wrap wrap-anywhere wrapElement wrapInSuspense wrapped x x1 x2 xl:w-(--fd-ai-chat-width) xmlns y y1 y2 you your z-2 z-40 z-50 zoom zoomImg zoomMargin");
1
+ @source inline("!collapsed !isActive !items !nested !open !title *:border-b *:data-[empty=true]:border-b-0 *:first:font-medium *:first:text-fd-primary *:flex *:flex! *:flex-col *:flex-col! *:gap-0.5! *:has-[+:last-child[data-empty=true]]:border-b-0 *:last:border-b-0 *:mask-[linear-gradient(to_bottom,white,white_30px,transparent_80px)] *:not-first:text-fd-muted-foreground *:nth-2:text-xs *:rounded-full ---spacing --callout-color --color-fd- --color-fd-muted --fd-ai-chat-width --fd-animated-height --fd-banner-height --offset-distance --opacity --padding-right --radix-navigation-menu-viewport-height --radix-popover-content-available-height --radix-popover-content-transform-origin --radix-popover-trigger-width --shiki-dark-bg --shiki-light-bg --spacing --track-bottom --track-top -mb-px -me-0.5 -me-2 -mx-px -rotate-90 -top-1.5 -translate-x-1/2 -translate-y-1/2 -z-1 @container @defaultValue @deprecated @fuma-translate/react @keyframes @max-lg:col-span-full @max-xl:hidden @param @radix-ui/react-accordion @radix-ui/react-collapsible @radix-ui/react-dialog @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-presence @radix-ui/react-scroll-area @radix-ui/react-tabs @ts-expect-error @typescript-eslint/no-namespace [&:focus-visible_img]:ring-2 [&:focus-visible_img]:ring-fd-ring [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none [&_::highlight(fd-search)]:text-fd-primary [&_::highlight(fd-search)]:underline [&_img]:cursor-zoom-in [&_svg]:size-3.5 [&_svg]:size-4 [&_svg]:size-4.5 [&_svg]:size-5 [&_svg]:size-full [&_svg]:text-fd-muted-foreground [clip-path:inset(0_0_100%)] [container-type:size] [offset-distance:var(--offset-distance,0)] [scrollbar-width:none] a abcdefghijklmnopqrstuvwxyz234567 about above absolute accordion action actions active activeItem add advanced after align align-text-bottom align-top alignItems alignmentBaseline all allowClear allowCopy allowedMode allows alphabet alt altKey always an anchor and animate-pulse animation another application/json are areaRef aria-activedescendant aria-autocomplete aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-selected as aside ask aspectRatio assume assumes async at auto await b backdrop-blur-lg backdrop-blur-xs background background-position backgroundColor backgroundImage backgroundSize backward banner basePath baseProps baseSlots baseUrl based became before behavior behaviour belongs beside between bg-(--callout-color)/50 bg-(--shiki-light-bg) bg-cover bg-fd-accent bg-fd-background bg-fd-border bg-fd-card bg-fd-muted bg-fd-overlay bg-fd-popover bg-fd-popover/60 bg-fd-primary bg-fd-primary/10 bg-fd-secondary bg-fd-secondary/50 bg-transparent bind binded bitsLeft black block blockRef boolean border border-b border-l border-none border-s border-t border-transparent borderBottom bottom bottom-0 bottom-1.5 boundary box buffer bundle button buttonVariants by cache cached callbacks can canonical caption cards case cells center central change changeLayout changes chat child children chooseLanguage class-variance-authority className clear client client-side clientHeight clientWidth clients clipPath clone close closeOnRedirect closed closing cn code col-span-full collapsed collapsible collapsing collection color colors column columns com combobox compact compat compatible component components composedRef computed config const container containerRef containing content contents context controlled/uncontrolled copy core counterSet createContext createRelativeLink css ctx current currentColor currentSrc cursor-default cursor-zoom-out custom customize cva cx cy d dangerouslySetInnerHTML dark dark:bg-(--shiki-dark-bg) dashed data data-[active=true]:text-fd-primary data-[motion=from-end]:animate-fd-enterFromRight data-[motion=from-start]:animate-fd-enterFromLeft data-[motion=to-end]:animate-fd-exitToRight data-[motion=to-start]:animate-fd-exitToLeft data-[state=active]:border-fd-primary data-[state=active]:text-fd-primary data-[state=closed]:animate-fd-accordion-up data-[state=closed]:animate-fd-collapsible-up data-[state=closed]:animate-fd-dialog-out data-[state=closed]:animate-fd-fade-out data-[state=closed]:animate-fd-nav-menu-out data-[state=closed]:animate-fd-popover-out data-[state=hidden]:animate-fd-fade-out data-[state=inactive]:hidden data-[state=open]:animate-fd-accordion-down data-[state=open]:animate-fd-collapsible-down data-[state=open]:animate-fd-dialog-in data-[state=open]:animate-fd-fade-in data-[state=open]:animate-fd-nav-menu-in data-[state=open]:animate-fd-popover-in data-[state=open]:bg-fd-accent data-[state=open]:bg-fd-accent/50 data-[state=open]:text-fd-accent-foreground data-accordion-value data-active data-card data-checked data-checked:text-fd-accent-foreground data-collapsed data-empty data-highlight-ignore data-icon data-line-numbers data-line-numbers-start data-search data-search-full data-state data-theme-toggle date debounced declare default defaultColor defaultFormatter defaultIndex defaultItems defaultLanguage defaultMdxComponents defaultOpen defaultOpenLevel defaultShikiFactory defaultTransform defaultUrl defaultValue defineI18nUI defined delay delayMs depends deprecated depth description desktop detect development dialog dir direction disabled disabled:bg-fd-secondary disabled:opacity-50 disabled:pointer-events-none disabled:text-fd-secondary-foreground display displayName displayed distance div divide-fd-border divide-x divide-y docked document documented dominantBaseline don drawer dropdown duration-100 duration-200 duration-300 duration-400 during each ease-in-out ease-out element else empty empty:hidden enabled encoded end-2 endIdx endpoint env environment equal error escape eslint-disable-next-line event export expose extends external extraProps failed false fd-lightbox fd-moving-banner fd-scroll-container fd-search-list fd-step fd-steps fetch fetchClient fetchOptions field fieldVariants figcaption figure file fill fill-(--callout-color) fill-fd-muted fill-fd-muted-foreground fill-fd-primary fill-fd-primary-foreground filter filters final finally fixed flex flex-1 flex-col flex-row flex-wrap flexDirection floating flushSync focus focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring focus-visible:ring-inset folder folders font-medium font-mono fontSize fontWeight for forceMount forks formatter formatterOptions found free from full fumadocs-core/framework fumadocs-core/highlight fumadocs-core/i18n fumadocs-core/link fumadocs-core/page-tree fumadocs-core/search fumadocs-core/source fumadocs-core/toc function gap gap-0.5 gap-1 gap-1.5 gap-2 gap-3 gap-3.5 gap-4 gap-x-3 gap-y-4 generated getActive ghost github-dark github-light githubUrl given global globalKey grid grid-cols-2 grid-cols-[1fr_3fr] grid-cols-subgrid gridTemplateColumns group group-data-[active=true]:bg-fd-primary group-data-[active=true]:text-fd-primary-foreground group-data-[state=active]:bg-fd-primary group-data-[state=open]:rotate-180 group-data-[state=open]:rotate-90 group-hover/heading:opacity-100 group/heading groupListeners groups guides h h-(--fd-animated-height) h-(--radix-navigation-menu-viewport-height) h-14 h-9.5 h-[calc(100%+--spacing(1.5))] h-full h-px h1 h2 h3 h4 h5 h6 hand handleThemeChange has has-focus-visible:bg-fd-accent hash hashchange hast-util-to-jsx-runtime hastContent have header headerId headers heading height hidden hideLocale highlight highlightRef highlighter hints hover:bg-fd-accent hover:bg-fd-accent/80 hover:bg-fd-primary/80 hover:text-fd-accent-foreground hovered href html hydration i i18n i18nProvider icon icon-sm icon-xs iconClass id idea idx if if-needed ignore ignoreTyping image images img import in inTab index infinite info inline inline-flex input inputType inset-0 inset-e-2 inset-e-2.5 inset-s-0 inset-s-2.5 inset-s-3 inset-s-6 inset-x-0 inset-x-2 inset-y-0 inside instanceof instant instead integration interface intersect into invisible is isActive isComposing isFirst isLast isLoading isTabActive isUp it item itemLineLengths itemVariants items items-baseline items-center itemsProp its js justify-between justify-center keepBackground key keyCode keydown keys l l0 l1 l2 label lang language languageSelect last last:line-clamp-2 last:rounded-b-xl layer layout layout:[--fd-ai-chat-width:min(--spacing(100),100vw---spacing(4))] lays lazy leading-5 leading-none leaving left-0 left-1/2 length let letting level light light-dark light-dark-system lightbox like line line-through linear link links list list-none listbox listener listeners loading locale localeTranslations locales lower ltr lucide lucide-book lucide-book-icon lucide-react m-0 made main make mapped margin marginTop mark markdownUrl marked mask-[linear-gradient(to_bottom,transparent,white_12px,white_calc(100%-12px),transparent)] mask-[linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] maskComposite maskImage matches max-h-(--radix-popover-content-available-height) max-h-20 max-h-[460px] max-h-[600px] max-h-[80svh] max-h-full max-h-none max-md:bg-fd-secondary max-md:border max-md:hidden max-md:p-1.5 max-md:rounded-md max-w-[1400px] max-w-[98vw] max-w-full max-w-none max-w-screen-sm max-width max-xl:border max-xl:end-2 max-xl:fixed max-xl:inset-y-2 max-xl:rounded-2xl max-xl:shadow-xl max-xl:translate-x-[calc(100%+--spacing(2))] max-xl:w-(--fd-ai-chat-width) maximumFractionDigits mb-1 mb-2 md:hidden md:mb-auto md:px-16 md:size-5 md:top-[calc(50%-250px)] mdComponents mdx/types.js me-1 me-1.5 me-2 me-auto measured menu menuItems mergeRefs message metaKey middle min-h-0 min-w-0 min-w-[240px] min-w-fit min-w-full mode module morph motion-reduce:transition-none mount mounted mouse ms-2 ms-3 ms-auto ms-px mt-1 mt-4 must mx-auto my-0 my-0! my-0.5 my-4 my-6 my-auto n name names namespace naturalHeight naturalWidth nav navItems navTitle navigate navigation nd-copy-ignore nd-sidebar nd-sidebar-mobile nearest needed nested nested-url never new newTheme next next-themes next/og node nodes none noop noopener noreferrer normal normalize not not-empty:border-b not-empty:p-3 not-first:border-t not-last:mb-2 not-last:truncate not-prose notation note now null number numbers object observer of offsetHeight offsetPath offsetTop on onCancel onChange onClick onClose onCopy onKey onKeyDown onOpenChange onOpenChangeCallback onPointerEnter onPointerLeave onPointerMove onPrint onSearchChange onSearchChangeCallback onSelect onSelectCallback onTagChange onTagChangeCallback onValueChange once one only opacity-(--opacity,0) opacity-0 open openFromHash opened option optional options or order origin-(--radix-popover-content-transform-origin) origin-[top_center] origin-center original other out outline outline-none output over overflow overflow-auto overflow-clip overflow-hidden overflow-x-auto overflow-y-auto override overscroll-contain overscroll-x-contain own owner p p-0 p-0.5 p-1 p-1.5 p-2 p-3 p-4 padding paddingBottom paddingInlineStart page pageUrl pageUrlProp panel panels parameters params parentId pass passed path pathname paths pb-0 pb-2 pb-6 pe-2 pe-2.5 per performing persist persistent place placed placeholder placeholder:text-fd-muted-foreground please pointerType points polite populated pos positions possible powered pre pre-rendering predate prefers-reduced-motion prefetch present prev preventScroll previous previousRef primary primaryColor primaryTextColor production promises prompt prompts prop props prose prose-no-margin prose-sm provide provider ps-1 ps-2 ps-3.25 ps-4 ps-8 pt-0 pure px px-0.5 px-1 px-1.5 px-2 px-2.5 px-3 px-4 py-0.5 py-1 py-1.5 py-12 py-2 py-2.5 py-3 py-3.5 q query querySelector questions rainbow rainbowColors ratio raw re-create re-render react react-dom react-hooks/rules-of-hooks react-medium-image-zoom react/jsx-runtime read reader ref referenced region register registering rel relative remove render renderOptions repo repository required resize resizing resolve resolved resolvedTheme response rest result results return returned revalidate right-2 role root rootRef round rounded-2xl rounded-[inherit] rounded-full rounded-lg rounded-md rounded-sm rounded-xl router row rowRenderOptions rows rtl rtl:-scale-x-100 rtl:max-xl:-translate-x-[calc(100%+--spacing(2))] rtl:rotate-180 rtl:rotate-90 runs s same scroll scroll-into-view-if-needed scroll-m-20 scroll-m-24 scroll-m-28 scroll-m-4 scrollIntoView scrollMode scroller scrollerRef search searchOptions searchToggle searchToggleEnabled searchTrigger secondary see select-none selected separate separator server set setActive setCollapsed setHover setLoading setMounted setOpen setOpenSearch setSlides setSvg setTag setValue shadow-2xl shadow-black/50 shadow-lg shadow-md shadow-sm shiftKey shiki shikiOptions shortcuts should show showAlgolia showOrama showing shown shows shrink-0 side sideOffset sidebar signature simple since single site size size-1 size-3 size-3.5 size-4 size-5 size-6.5 size-9 size-full sized sizes slide slots sm smaller smooth snap-always snap-mandatory snap-start snap-x so solid some source space span specific sr-only src stars start startIdx startViewTransition state static status stay step sticky still str string stroke stroke-fd-foreground/10 stroke-fd-primary strokeLinecap strokeLinejoin strokeWidth style styles subscribe subscribeActive success successful supported supposed sure svg switch switcher system t tab tabIndex table tableRenderOptions tables tabs tabsRef tabular-nums tag tagName tags take target tbody td text text-(--callout-color) text-[0.8125rem] text-[0.8125rem]/5 text-[0.9375rem] text-[10px] text-center text-fd-accent-foreground text-fd-card text-fd-card-foreground text-fd-error text-fd-foreground text-fd-foreground/80 text-fd-muted-foreground text-fd-muted-foreground/50 text-fd-popover-foreground text-fd-popover-foreground/80 text-fd-primary text-fd-primary-foreground text-fd-primary/50 text-fd-secondary-foreground text-inherit text-lg text-nowrap text-sm text-start text-xs text/plain textAnchor textContent th that the thead their them theme themeAriaLabels themeSwitch themeSwitchEnabled themes then they this throw thumbBox tier timerRef tip title to toJsxRuntime toc tocInfo toolbar top top-0 top-1/2 top-2.5 top-3 top-3.25 top-4 touch tr transform transition-[clip-path] transition-[height] transition-[opacity,offset-distance] transition-[width,height] transition-[width,margin,translate,visibility] transition-[width,margin,translate] transition-all transition-colors transition-opacity transition-transform translationKeys translations translations/keys.json transparent tree trigger triggers true truncate try twice type typeof types unchanged undefined underline underlying understand unknown unnecessarily unused update updateAnchor updates upperX url urls us usage use useAlgoliaSearch useCopyButton useDocsSearch useHotKey useI18n useId useIsDocsLayout useItems useMediaQuery useMemo useOnChange useOramaCloudSearch usePathname useProps useRef useRouter useSearchContext useSidebar useState useSyncExternalStore useTOCItems useTabsGroups useTheme useTranslations useTreePath useful users using usually v v17 value valueToIdMap values variables variant variants vertical viewBox viewRef viewTransitionName viewer viewportProps visible vite void w w-(--fd-ai-chat-width) w-(--radix-popover-trigger-width) w-0 w-0.5 w-1.5 w-1/4 w-[calc(100%-1rem)] w-fit w-full w-max w-px want warn warning what when where which while white whitespace-nowrap whitespaces wide width will window with without work wrap wrap-anywhere wrapElement wrapInSuspense wrapped x x1 x2 xl:w-(--fd-ai-chat-width) xmlns y y1 y2 you your z-2 z-40 z-50 zoom zoomImg zoomInProps zoomMargin zoomable");
@@ -8,6 +8,7 @@ export type Translations = {
8
8
  "Close Search(search dialog)(aria-label)": string;
9
9
  "Close Sidebar(aria-label)": string;
10
10
  "Close Sidebar(sidebar)(aria-label)": string;
11
+ "Close(image zoom)(aria-label)": string;
11
12
  "Collapse Sidebar(sidebar)(aria-label)": string;
12
13
  "Copied Anchor Link(heading anchor)(aria-label)": string;
13
14
  "Copied Link(accordion)(aria-label)": string;
@@ -21,9 +22,11 @@ export type Translations = {
21
22
  "Default(type table)": string;
22
23
  "Edit on GitHub(edit page)": string;
23
24
  "Hide Sidebar(sidebar)": string;
25
+ "Image Viewer(image zoom)(aria-label)": string;
24
26
  "Last updated on(page footer)": string;
25
27
  "Layout Tab(layout tab trigger)": string;
26
28
  "Light(theme switcher)(aria-label)": string;
29
+ "Next Image(image zoom)(aria-label)": string;
27
30
  "Next Page(pagination)": string;
28
31
  "No Headings(table of contents)": string;
29
32
  "No results found(search dialog)": string;
@@ -38,10 +41,13 @@ export type Translations = {
38
41
  "Open(page actions)": string;
39
42
  "Page Not Found(404 page)": string;
40
43
  "Parameters(type table)": string;
44
+ "Previous Image(image zoom)(aria-label)": string;
41
45
  "Previous Page(pagination)": string;
42
46
  "Prop(type table)": string;
43
47
  "Read {url}, I want to ask questions about it.(page actions)": string;
44
48
  "Returns(type table)": string;
49
+ "Search failed(search dialog)": string;
50
+ "Search failed, showing results for {query}(search dialog)": string;
45
51
  "Search(search dialog)": string;
46
52
  "Search(search trigger)": string;
47
53
  "Show Sidebar(sidebar)": string;
@@ -8,6 +8,7 @@ var keys_default = [
8
8
  "Close Search(search dialog)(aria-label)",
9
9
  "Close Sidebar(aria-label)",
10
10
  "Close Sidebar(sidebar)(aria-label)",
11
+ "Close(image zoom)(aria-label)",
11
12
  "Collapse Sidebar(sidebar)(aria-label)",
12
13
  "Copied Anchor Link(heading anchor)(aria-label)",
13
14
  "Copied Link(accordion)(aria-label)",
@@ -21,9 +22,11 @@ var keys_default = [
21
22
  "Default(type table)",
22
23
  "Edit on GitHub(edit page)",
23
24
  "Hide Sidebar(sidebar)",
25
+ "Image Viewer(image zoom)(aria-label)",
24
26
  "Last updated on(page footer)",
25
27
  "Layout Tab(layout tab trigger)",
26
28
  "Light(theme switcher)(aria-label)",
29
+ "Next Image(image zoom)(aria-label)",
27
30
  "Next Page(pagination)",
28
31
  "No Headings(table of contents)",
29
32
  "No results found(search dialog)",
@@ -38,10 +41,13 @@ var keys_default = [
38
41
  "Open(page actions)",
39
42
  "Page Not Found(404 page)",
40
43
  "Parameters(type table)",
44
+ "Previous Image(image zoom)(aria-label)",
41
45
  "Previous Page(pagination)",
42
46
  "Prop(type table)",
43
47
  "Read {url}, I want to ask questions about it.(page actions)",
44
48
  "Returns(type table)",
49
+ "Search failed(search dialog)",
50
+ "Search failed, showing results for {query}(search dialog)",
45
51
  "Search(search dialog)",
46
52
  "Search(search trigger)",
47
53
  "Show Sidebar(sidebar)",
@@ -30,9 +30,11 @@ export interface SearchDialogProps extends SharedProps {
30
30
  isLoading?: boolean;
31
31
  /** the last successful search, `<SearchDialogList />` shows its results */
32
32
  data?: SearchResult;
33
+ /** the last search failed, `<SearchDialogList />` shows it above the results of `data` */
34
+ error?: Error;
33
35
  children: ReactNode;
34
36
  }
35
- export declare function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading, data, onSelect: onSelectProp, children }: SearchDialogProps): JsxRuntime.JSX.Element;
37
+ export declare function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading, data, error, onSelect: onSelectProp, children }: SearchDialogProps): JsxRuntime.JSX.Element;
36
38
  export declare function SearchDialogHeader(props: ComponentProps<'div'>): JsxRuntime.JSX.Element;
37
39
  export declare function SearchDialogInput(props: ComponentProps<'input'>): JsxRuntime.JSX.Element;
38
40
  export declare function SearchDialogClose({ children, className, ...props }: ComponentProps<'button'>): JsxRuntime.JSX.Element;
@@ -83,6 +85,7 @@ export declare function useSearch(): {
83
85
  onSelect: (item: SearchItemType) => void;
84
86
  isLoading: boolean;
85
87
  data?: SearchResult;
88
+ error?: Error;
86
89
  /** the query to highlight */
87
90
  query: string;
88
91
  /** the id of the active item */
@@ -4,7 +4,7 @@ import { buttonVariants } from "../ui/button.js";
4
4
  import { useRouter } from "fumadocs-core/framework";
5
5
  import * as JsxRuntime from "react/jsx-runtime";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
- import { ChevronRight, Hash, SearchIcon } from "lucide-react";
7
+ import { ChevronRight, CircleAlert, Hash, SearchIcon } from "lucide-react";
8
8
  import { cva } from "class-variance-authority";
9
9
  import { Fragment as Fragment$1, createContext, use, useCallback, useEffect, useEffectEvent, useLayoutEffect, useMemo, useRef, useSyncExternalStore } from "react";
10
10
  import { T, useTranslations } from "@fuma-translate/react";
@@ -96,7 +96,7 @@ const rowRenderOptions = {
96
96
  thead: () => null
97
97
  }
98
98
  };
99
- function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading = false, data, onSelect: onSelectProp, children }) {
99
+ function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading = false, data, error, onSelect: onSelectProp, children }) {
100
100
  const router = useRouter();
101
101
  const onOpenChangeCallback = useRef(onOpenChange);
102
102
  onOpenChangeCallback.current = onOpenChange;
@@ -136,6 +136,7 @@ function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading =
136
136
  search,
137
137
  isLoading,
138
138
  data,
139
+ error,
139
140
  query: data ? data.query : search,
140
141
  onOpenChange: (v) => onOpenChangeCallback.current(v),
141
142
  onSearchChange: (v) => onSearchChangeCallback.current(v),
@@ -145,7 +146,8 @@ function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading =
145
146
  isLoading,
146
147
  open,
147
148
  search,
148
- data
149
+ data,
150
+ error
149
151
  ]),
150
152
  children
151
153
  })
@@ -225,9 +227,13 @@ function SearchDialogList({ items: itemsProp, defaultItems = null, Empty = () =>
225
227
  }), Item = (props) => /* @__PURE__ */ jsx(SearchDialogListItem, { ...props }), Table = (props) => /* @__PURE__ */ jsx(SearchDialogListTable, { ...props }), ...props }) {
226
228
  const ref = useRef(null);
227
229
  const t = useTranslations({ note: "search dialog" });
228
- const { onSelect, data, getActive, setActive } = useSearch();
230
+ const { onSelect, data, error, getActive, setActive } = useSearch();
229
231
  const items = itemsProp === void 0 ? data?.items ?? defaultItems : itemsProp;
230
- useLayoutEffect(() => setActive(items?.[0]?.id ?? null), [setActive, items]);
232
+ useLayoutEffect(() => setActive(error ? null : items?.[0]?.id ?? null), [
233
+ setActive,
234
+ items,
235
+ error
236
+ ]);
231
237
  const onKey = useEffectEvent((e) => {
232
238
  if (!items || e.isComposing || e.keyCode === 229) return;
233
239
  const list = flattenItems(items);
@@ -249,23 +255,37 @@ function SearchDialogList({ items: itemsProp, defaultItems = null, Empty = () =>
249
255
  const element = ref.current;
250
256
  if (!element) return;
251
257
  const observer = new ResizeObserver(() => {
252
- const viewport = element.firstElementChild;
253
- element.style.setProperty("--fd-animated-height", `${viewport.clientHeight}px`);
258
+ let height = 0;
259
+ for (const child of element.children) height += child.offsetHeight;
260
+ element.style.setProperty("--fd-animated-height", `${height}px`);
254
261
  });
255
- const viewport = element.firstElementChild;
256
- if (viewport) observer.observe(viewport);
262
+ for (const child of element.children) observer.observe(child);
257
263
  window.addEventListener("keydown", onKey);
258
264
  return () => {
259
265
  observer.disconnect();
260
266
  window.removeEventListener("keydown", onKey);
261
267
  };
262
268
  }, []);
263
- return /* @__PURE__ */ jsx("div", {
269
+ return /* @__PURE__ */ jsxs("div", {
264
270
  ...props,
265
271
  ref,
266
- "data-empty": items === null,
272
+ "data-empty": items === null && !error,
267
273
  className: cn("overflow-hidden h-(--fd-animated-height) transition-[height] [&_::highlight(fd-search)]:text-fd-primary [&_::highlight(fd-search)]:underline", props.className),
268
- children: /* @__PURE__ */ jsxs("div", {
274
+ children: [/* @__PURE__ */ jsx("p", {
275
+ role: "status",
276
+ className: cn("truncate text-sm not-empty:p-3", items && "not-empty:border-b"),
277
+ children: error && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CircleAlert, { className: "inline size-5 me-2 align-top text-fd-error" }), data ? /* @__PURE__ */ jsx(T, {
278
+ text: "Search failed, showing results for {query}",
279
+ note: "search dialog",
280
+ variables: { query: /* @__PURE__ */ jsx("span", {
281
+ className: "font-medium",
282
+ children: data.query
283
+ }) }
284
+ }) : /* @__PURE__ */ jsx(T, {
285
+ text: "Search failed",
286
+ note: "search dialog"
287
+ })] })
288
+ }), /* @__PURE__ */ jsxs("div", {
269
289
  id: "fd-search-list",
270
290
  role: items?.length ? "listbox" : void 0,
271
291
  "aria-label": items?.length ? t("Search") : void 0,
@@ -278,7 +298,7 @@ function SearchDialogList({ items: itemsProp, defaultItems = null, Empty = () =>
278
298
  item,
279
299
  onClick: () => onSelect(item)
280
300
  }) }, item.id))]
281
- })
301
+ })]
282
302
  });
283
303
  }
284
304
  function flattenItems(items) {
@@ -1,7 +1,7 @@
1
1
  import { UncontrolledProps } from "../node_modules/.pnpm/react-medium-image-zoom@5.4.9_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/react-medium-image-zoom/dist/uncontrolled.js";
2
2
  import "../node_modules/.pnpm/react-medium-image-zoom@5.4.9_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/react-medium-image-zoom/dist/index.js";
3
3
  import { ImageProps } from "fumadocs-core/framework";
4
- import { ComponentProps } from "react";
4
+ import { ComponentProps, ReactNode } from "react";
5
5
  //#region src/components/image-zoom.d.ts
6
6
  export type ImageZoomProps = ImageProps & {
7
7
  /**
@@ -9,9 +9,21 @@ export type ImageZoomProps = ImageProps & {
9
9
  */
10
10
  zoomInProps?: ComponentProps<'img'>;
11
11
  /**
12
- * Props for `react-medium-image-zoom`
12
+ * Props for `react-medium-image-zoom`, unused inside `<Lightbox />`
13
13
  */
14
14
  rmiz?: UncontrolledProps;
15
+ /**
16
+ * Caption in `<Lightbox />`
17
+ *
18
+ * @defaultValue `title`
19
+ */
20
+ caption?: ReactNode;
15
21
  };
16
- export declare function ImageZoom({ zoomInProps, children, rmiz, ...props }: ImageZoomProps): import("react").JSX.Element;
22
+ export declare function ImageZoom({ zoomInProps, children, rmiz, caption, ...props }: ImageZoomProps): import("react").JSX.Element;
23
+ /**
24
+ * Browse the zoomable images inside in one viewer
25
+ */
26
+ export declare function Lightbox({ children }: {
27
+ children: ReactNode;
28
+ }): import("react").JSX.Element;
17
29
  //#endregion
@@ -1,9 +1,16 @@
1
1
  "use client";
2
+ import { cn } from "../utils/cn.js";
3
+ import { buttonVariants } from "./ui/button.js";
2
4
  import { Uncontrolled } from "../node_modules/.pnpm/react-medium-image-zoom@5.4.9_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/react-medium-image-zoom/dist/uncontrolled.js";
3
5
  import "./image-zoom2.css";
4
6
  import { Image } from "fumadocs-core/framework";
5
- import { jsx } from "react/jsx-runtime";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ import { ChevronLeft, ChevronRight, X } from "lucide-react";
9
+ import { createContext, use, useRef, useState } from "react";
10
+ import { useTranslations } from "@fuma-translate/react";
11
+ import { createPortal, flushSync } from "react-dom";
6
12
  //#region src/components/image-zoom.tsx
13
+ const LightboxContext = createContext(null);
7
14
  function getImageSrc(src) {
8
15
  if (typeof src === "string") return src;
9
16
  if (typeof src === "object") {
@@ -12,21 +19,239 @@ function getImageSrc(src) {
12
19
  }
13
20
  return "";
14
21
  }
15
- function ImageZoom({ zoomInProps, children, rmiz, ...props }) {
22
+ function ImageZoom({ zoomInProps, children, rmiz, caption, ...props }) {
23
+ const lightbox = use(LightboxContext);
24
+ const zoomImg = {
25
+ src: getImageSrc(props.src),
26
+ sizes: void 0,
27
+ ...zoomInProps
28
+ };
29
+ const image = children ?? /* @__PURE__ */ jsx(Image, {
30
+ sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px",
31
+ ...props
32
+ });
33
+ if (lightbox) return /* @__PURE__ */ jsx("span", {
34
+ role: "button",
35
+ tabIndex: 0,
36
+ "aria-haspopup": "dialog",
37
+ ref: (element) => {
38
+ if (!element) return;
39
+ return lightbox.register({
40
+ element,
41
+ image: {
42
+ alt: props.alt,
43
+ ...zoomImg
44
+ },
45
+ caption: caption ?? props.title
46
+ });
47
+ },
48
+ onClick: (e) => {
49
+ if (e.target !== e.currentTarget) lightbox.open(e.currentTarget);
50
+ },
51
+ onKeyDown: (e) => {
52
+ if (e.key !== "Enter" && e.key !== " ") return;
53
+ e.preventDefault();
54
+ lightbox.open(e.currentTarget);
55
+ },
56
+ className: "block outline-none [&_img]:cursor-zoom-in [&:focus-visible_img]:ring-2 [&:focus-visible_img]:ring-fd-ring",
57
+ children: image
58
+ });
16
59
  return /* @__PURE__ */ jsx(Uncontrolled, {
17
60
  zoomMargin: 20,
18
61
  wrapElement: "span",
19
62
  ...rmiz,
20
- zoomImg: {
21
- src: getImageSrc(props.src),
22
- sizes: void 0,
23
- ...zoomInProps
24
- },
25
- children: children ?? /* @__PURE__ */ jsx(Image, {
26
- sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px",
27
- ...props
28
- })
63
+ zoomImg,
64
+ children: image
65
+ });
66
+ }
67
+ /**
68
+ * Browse the zoomable images inside in one viewer
69
+ */
70
+ function Lightbox({ children }) {
71
+ const t = useTranslations({ note: "image zoom" });
72
+ const [slides, setSlides] = useState(null);
73
+ const scrollerRef = useRef(null);
74
+ const [context] = useState(() => {
75
+ const items = /* @__PURE__ */ new Set();
76
+ return {
77
+ register(item) {
78
+ items.add(item);
79
+ return () => void items.delete(item);
80
+ },
81
+ open(element) {
82
+ const list = [];
83
+ for (const item of items) {
84
+ if (!item.element.checkVisibility()) continue;
85
+ const img = item.element.querySelector("img");
86
+ list.push({
87
+ ...item,
88
+ style: img ? getSlideStyle(img) : void 0
89
+ });
90
+ }
91
+ list.sort((a, b) => a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1);
92
+ const index = list.findIndex((slide) => slide.element === element);
93
+ transition(getImage(element), () => {
94
+ flushSync(() => setSlides(list));
95
+ const slide = scrollerRef.current.children[index];
96
+ slide.scrollIntoView({
97
+ block: "nearest",
98
+ inline: "start",
99
+ behavior: "instant"
100
+ });
101
+ return slide.querySelector("img");
102
+ });
103
+ }
104
+ };
105
+ });
106
+ function close() {
107
+ const scroller = scrollerRef.current;
108
+ if (!scroller || !slides) return;
109
+ const index = getIndex(scroller);
110
+ const { element } = slides[index];
111
+ transition(scroller.children[index].querySelector("img"), () => {
112
+ flushSync(() => setSlides(null));
113
+ element.focus({ preventScroll: true });
114
+ const image = getImage(element);
115
+ image.scrollIntoView({
116
+ block: "nearest",
117
+ behavior: "instant"
118
+ });
119
+ return image;
120
+ });
121
+ }
122
+ function navigate(step) {
123
+ const scroller = scrollerRef.current;
124
+ scroller.children[getIndex(scroller) + step]?.scrollIntoView({
125
+ block: "nearest",
126
+ inline: "start",
127
+ behavior: "smooth"
128
+ });
129
+ }
130
+ return /* @__PURE__ */ jsxs(LightboxContext, {
131
+ value: context,
132
+ children: [children, slides && createPortal(/* @__PURE__ */ jsxs("dialog", {
133
+ ref: initDialog,
134
+ tabIndex: -1,
135
+ "aria-label": t("Image Viewer", { note: "aria-label" }),
136
+ onCancel: (e) => {
137
+ e.preventDefault();
138
+ close();
139
+ },
140
+ onClose: () => setSlides(null),
141
+ onKeyDown: (e) => {
142
+ if (e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
143
+ e.preventDefault();
144
+ const rtl = getComputedStyle(e.currentTarget).direction === "rtl";
145
+ navigate(e.key === "ArrowRight" !== rtl ? 1 : -1);
146
+ },
147
+ className: "m-0 size-full max-h-none max-w-none overflow-hidden border-none bg-fd-background p-0 text-fd-foreground outline-none",
148
+ children: [
149
+ /* @__PURE__ */ jsx("button", {
150
+ type: "button",
151
+ "aria-label": t("Close", { note: "aria-label" }),
152
+ onClick: close,
153
+ className: cn(buttonVariants({
154
+ variant: "ghost",
155
+ size: "icon-sm",
156
+ className: "absolute top-3.25 inset-e-2.5"
157
+ })),
158
+ children: /* @__PURE__ */ jsx(X, {})
159
+ }),
160
+ /* @__PURE__ */ jsx("div", {
161
+ ref: scrollerRef,
162
+ onClick: (e) => {
163
+ if (!e.target.closest("figcaption")) close();
164
+ },
165
+ className: "flex size-full snap-x snap-mandatory overflow-x-auto overscroll-x-contain [scrollbar-width:none]",
166
+ children: slides.map((slide, i) => /* @__PURE__ */ jsxs("figure", {
167
+ className: "flex w-full shrink-0 snap-start snap-always flex-col items-center pb-6",
168
+ children: [
169
+ /* @__PURE__ */ jsx("p", {
170
+ className: "flex h-14 w-full items-center px-4 text-sm text-fd-muted-foreground tabular-nums",
171
+ children: slides.length > 1 && `${i + 1} / ${slides.length}`
172
+ }),
173
+ /* @__PURE__ */ jsx("div", {
174
+ className: "flex min-h-0 w-full flex-1 items-center justify-center px-4 [container-type:size] md:px-16",
175
+ children: /* @__PURE__ */ jsx("img", {
176
+ loading: "lazy",
177
+ ...slide.image,
178
+ style: slide.style,
179
+ className: cn("max-h-full cursor-zoom-out bg-cover", slide.image.className)
180
+ })
181
+ }),
182
+ slide.caption && /* @__PURE__ */ jsx("figcaption", {
183
+ className: "prose prose-sm mt-4 px-4 text-center text-fd-muted-foreground md:px-16",
184
+ children: slide.caption
185
+ })
186
+ ]
187
+ }, i))
188
+ }),
189
+ slides.length > 1 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("button", {
190
+ type: "button",
191
+ "aria-label": t("Previous Image", { note: "aria-label" }),
192
+ onClick: () => navigate(-1),
193
+ className: cn(buttonVariants({
194
+ variant: "ghost",
195
+ size: "icon",
196
+ className: "absolute top-1/2 inset-s-2.5 -translate-y-1/2 max-md:hidden"
197
+ })),
198
+ children: /* @__PURE__ */ jsx(ChevronLeft, { className: "rtl:-scale-x-100" })
199
+ }), /* @__PURE__ */ jsx("button", {
200
+ type: "button",
201
+ "aria-label": t("Next Image", { note: "aria-label" }),
202
+ onClick: () => navigate(1),
203
+ className: cn(buttonVariants({
204
+ variant: "ghost",
205
+ size: "icon",
206
+ className: "absolute top-1/2 inset-e-2.5 -translate-y-1/2 max-md:hidden"
207
+ })),
208
+ children: /* @__PURE__ */ jsx(ChevronRight, { className: "rtl:-scale-x-100" })
209
+ })] })
210
+ ]
211
+ }), document.body)]
212
+ });
213
+ }
214
+ function initDialog(element) {
215
+ if (!element.open) element.showModal();
216
+ element.focus();
217
+ const { style } = document.documentElement;
218
+ const overflow = style.overflow;
219
+ style.overflow = "hidden";
220
+ return () => {
221
+ style.overflow = overflow;
222
+ };
223
+ }
224
+ function getIndex(scroller) {
225
+ return Math.round(Math.abs(scroller.scrollLeft) / scroller.clientWidth);
226
+ }
227
+ function getImage(element) {
228
+ return element.querySelector("img") ?? element;
229
+ }
230
+ function getSlideStyle(img) {
231
+ const ratio = (img.naturalWidth || img.width) / (img.naturalHeight || img.height);
232
+ return {
233
+ width: ratio ? `min(100cqw, ${ratio} * 100cqh)` : void 0,
234
+ aspectRatio: ratio ? `auto ${ratio}` : void 0,
235
+ backgroundImage: img.currentSrc ? `url(${JSON.stringify(img.currentSrc)})` : void 0
236
+ };
237
+ }
238
+ /**
239
+ * morph `from` into the element returned by `update`
240
+ */
241
+ function transition(from, update) {
242
+ if (!("startViewTransition" in document) || matchMedia("(prefers-reduced-motion: reduce)").matches) {
243
+ update();
244
+ return;
245
+ }
246
+ let to;
247
+ from.style.viewTransitionName = "fd-lightbox";
248
+ document.startViewTransition(() => {
249
+ from.style.viewTransitionName = "";
250
+ to = update();
251
+ to.style.viewTransitionName = "fd-lightbox";
252
+ }).finished.finally(() => {
253
+ if (to) to.style.viewTransitionName = "";
29
254
  });
30
255
  }
31
256
  //#endregion
32
- export { ImageZoom };
257
+ export { ImageZoom, Lightbox };
@@ -69,3 +69,8 @@
69
69
  transition-duration: .01ms !important;
70
70
  }
71
71
  }
72
+
73
+ ::view-transition-old(fd-lightbox), ::view-transition-new(fd-lightbox) {
74
+ object-fit: cover;
75
+ height: 100%;
76
+ }
package/dist/style.css CHANGED
@@ -243,6 +243,9 @@
243
243
  .\@container {
244
244
  container-type: inline-size;
245
245
  }
246
+ .\[container-type\:size\] {
247
+ container-type: size;
248
+ }
246
249
  .pointer-events-none {
247
250
  pointer-events: none;
248
251
  }
@@ -329,6 +332,9 @@
329
332
  .inset-s-0 {
330
333
  inset-inline-start: 0px;
331
334
  }
335
+ .inset-s-2\.5 {
336
+ inset-inline-start: calc(var(--spacing) * 2.5);
337
+ }
332
338
  .inset-s-3 {
333
339
  inset-inline-start: calc(var(--spacing) * 3);
334
340
  }
@@ -347,6 +353,9 @@
347
353
  .inset-e-2 {
348
354
  inset-inline-end: calc(var(--spacing) * 2);
349
355
  }
356
+ .inset-e-2\.5 {
357
+ inset-inline-end: calc(var(--spacing) * 2.5);
358
+ }
350
359
  .-top-1\.5 {
351
360
  top: calc(var(--spacing) * -1.5);
352
361
  }
@@ -374,6 +383,9 @@
374
383
  .top-3 {
375
384
  top: calc(var(--spacing) * 3);
376
385
  }
386
+ .top-3\.25 {
387
+ top: calc(var(--spacing) * 3.25);
388
+ }
377
389
  .top-4 {
378
390
  top: calc(var(--spacing) * 4);
379
391
  }
@@ -440,6 +452,9 @@
440
452
  max-width: 96rem;
441
453
  }
442
454
  }
455
+ .m-0 {
456
+ margin: 0px;
457
+ }
443
458
  .-mx-1 {
444
459
  margin-inline: calc(var(--spacing) * -1);
445
460
  }
@@ -1105,6 +1120,12 @@
1105
1120
  .max-h-\[600px\] {
1106
1121
  max-height: 600px;
1107
1122
  }
1123
+ .max-h-full {
1124
+ max-height: 100%;
1125
+ }
1126
+ .max-h-none {
1127
+ max-height: none;
1128
+ }
1108
1129
  .min-h-\(--fd-docs-height\) {
1109
1130
  min-height: var(--fd-docs-height);
1110
1131
  }
@@ -1204,6 +1225,9 @@
1204
1225
  .max-w-md {
1205
1226
  max-width: var(--container-md);
1206
1227
  }
1228
+ .max-w-none {
1229
+ max-width: none;
1230
+ }
1207
1231
  .max-w-screen-sm {
1208
1232
  max-width: var(--breakpoint-sm);
1209
1233
  }
@@ -1293,9 +1317,24 @@
1293
1317
  .cursor-default {
1294
1318
  cursor: default;
1295
1319
  }
1320
+ .cursor-zoom-out {
1321
+ cursor: zoom-out;
1322
+ }
1296
1323
  .resize {
1297
1324
  resize: both;
1298
1325
  }
1326
+ .snap-x {
1327
+ scroll-snap-type: x var(--tw-scroll-snap-strictness);
1328
+ }
1329
+ .snap-mandatory {
1330
+ --tw-scroll-snap-strictness: mandatory;
1331
+ }
1332
+ .snap-start {
1333
+ scroll-snap-align: start;
1334
+ }
1335
+ .snap-always {
1336
+ scroll-snap-stop: always;
1337
+ }
1299
1338
  .scroll-m-4 {
1300
1339
  scroll-margin: calc(var(--spacing) * 4);
1301
1340
  }
@@ -1452,6 +1491,9 @@
1452
1491
  .overscroll-contain {
1453
1492
  overscroll-behavior: contain;
1454
1493
  }
1494
+ .overscroll-x-contain {
1495
+ overscroll-behavior-x: contain;
1496
+ }
1455
1497
  .rounded-2xl {
1456
1498
  border-radius: var(--radius-2xl);
1457
1499
  }
@@ -1622,6 +1664,9 @@
1622
1664
  .mask-\[linear-gradient\(to_bottom\,transparent\,white_16px\,white_calc\(100\%-16px\)\,transparent\)\] {
1623
1665
  mask-image: linear-gradient(to bottom,transparent,white 16px,white calc(100% - 16px),transparent);
1624
1666
  }
1667
+ .bg-cover {
1668
+ background-size: cover;
1669
+ }
1625
1670
  .fill-\(--callout-color\) {
1626
1671
  fill: var(--callout-color);
1627
1672
  }
@@ -1814,6 +1859,9 @@
1814
1859
  .pb-4 {
1815
1860
  padding-bottom: calc(var(--spacing) * 4);
1816
1861
  }
1862
+ .pb-6 {
1863
+ padding-bottom: calc(var(--spacing) * 6);
1864
+ }
1817
1865
  .pb-16 {
1818
1866
  padding-bottom: calc(var(--spacing) * 16);
1819
1867
  }
@@ -1832,6 +1880,9 @@
1832
1880
  .align-text-bottom {
1833
1881
  vertical-align: text-bottom;
1834
1882
  }
1883
+ .align-top {
1884
+ vertical-align: top;
1885
+ }
1835
1886
  .font-mono {
1836
1887
  font-family: var(--font-mono);
1837
1888
  }
@@ -1922,6 +1973,9 @@
1922
1973
  .text-fd-card-foreground {
1923
1974
  color: var(--color-fd-card-foreground);
1924
1975
  }
1976
+ .text-fd-error {
1977
+ color: var(--color-fd-error);
1978
+ }
1925
1979
  .text-fd-foreground {
1926
1980
  color: var(--color-fd-foreground);
1927
1981
  }
@@ -1973,6 +2027,10 @@
1973
2027
  .text-inherit {
1974
2028
  color: inherit;
1975
2029
  }
2030
+ .tabular-nums {
2031
+ --tw-numeric-spacing: tabular-nums;
2032
+ font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
2033
+ }
1976
2034
  .line-through {
1977
2035
  text-decoration-line: line-through;
1978
2036
  }
@@ -2330,6 +2388,13 @@
2330
2388
  text-overflow: ellipsis;
2331
2389
  white-space: nowrap;
2332
2390
  }
2391
+ .not-empty\:border-b:not(:empty) {
2392
+ border-bottom-style: var(--tw-border-style);
2393
+ border-bottom-width: 1px;
2394
+ }
2395
+ .not-empty\:p-3:not(:empty) {
2396
+ padding: calc(var(--spacing) * 3);
2397
+ }
2333
2398
  @media (hover: hover) {
2334
2399
  .group-hover\/heading\:opacity-100:is(:where(.group\/heading):hover *) {
2335
2400
  opacity: 100%;
@@ -2912,6 +2977,9 @@
2912
2977
  .md\:px-6 {
2913
2978
  padding-inline: calc(var(--spacing) * 6);
2914
2979
  }
2980
+ .md\:px-16 {
2981
+ padding-inline: calc(var(--spacing) * 16);
2982
+ }
2915
2983
  .md\:py-1\.5 {
2916
2984
  padding-block: calc(var(--spacing) * 1.5);
2917
2985
  }
@@ -3129,6 +3197,9 @@
3129
3197
  .\[\&_\:\:highlight\(fd-search\)\]\:underline ::highlight(fd-search) {
3130
3198
  text-decoration-line: underline;
3131
3199
  }
3200
+ .\[\&_img\]\:cursor-zoom-in img {
3201
+ cursor: zoom-in;
3202
+ }
3132
3203
  .\[\&_svg\]\:size-3\.5 svg {
3133
3204
  width: calc(var(--spacing) * 3.5);
3134
3205
  height: calc(var(--spacing) * 3.5);
@@ -3159,6 +3230,13 @@
3159
3230
  .\[\&_svg\]\:text-fd-muted-foreground svg {
3160
3231
  color: var(--color-fd-muted-foreground);
3161
3232
  }
3233
+ .\[\&\:focus-visible_img\]\:ring-2:focus-visible img {
3234
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3235
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3236
+ }
3237
+ .\[\&\:focus-visible_img\]\:ring-fd-ring:focus-visible img {
3238
+ --tw-ring-color: var(--color-fd-ring);
3239
+ }
3162
3240
  .\[\&\>figure\:only-child\]\:-m-4 > figure:only-child {
3163
3241
  margin: calc(var(--spacing) * -4);
3164
3242
  }
@@ -3407,6 +3485,11 @@ code.shiki:not(.not-fumadocs-code *) span {
3407
3485
  syntax: "*";
3408
3486
  inherits: false;
3409
3487
  }
3488
+ @property --tw-scroll-snap-strictness {
3489
+ syntax: "*";
3490
+ inherits: false;
3491
+ initial-value: proximity;
3492
+ }
3410
3493
  @property --tw-divide-x-reverse {
3411
3494
  syntax: "*";
3412
3495
  inherits: false;
@@ -3425,6 +3508,26 @@ code.shiki:not(.not-fumadocs-code *) span {
3425
3508
  syntax: "*";
3426
3509
  inherits: false;
3427
3510
  }
3511
+ @property --tw-ordinal {
3512
+ syntax: "*";
3513
+ inherits: false;
3514
+ }
3515
+ @property --tw-slashed-zero {
3516
+ syntax: "*";
3517
+ inherits: false;
3518
+ }
3519
+ @property --tw-numeric-figure {
3520
+ syntax: "*";
3521
+ inherits: false;
3522
+ }
3523
+ @property --tw-numeric-spacing {
3524
+ syntax: "*";
3525
+ inherits: false;
3526
+ }
3527
+ @property --tw-numeric-fraction {
3528
+ syntax: "*";
3529
+ inherits: false;
3530
+ }
3428
3531
  @property --tw-shadow {
3429
3532
  syntax: "*";
3430
3533
  inherits: false;
@@ -3827,10 +3930,16 @@ code.shiki:not(.not-fumadocs-code *) span {
3827
3930
  --tw-rotate-z: initial;
3828
3931
  --tw-skew-x: initial;
3829
3932
  --tw-skew-y: initial;
3933
+ --tw-scroll-snap-strictness: proximity;
3830
3934
  --tw-divide-x-reverse: 0;
3831
3935
  --tw-divide-y-reverse: 0;
3832
3936
  --tw-leading: initial;
3833
3937
  --tw-font-weight: initial;
3938
+ --tw-ordinal: initial;
3939
+ --tw-slashed-zero: initial;
3940
+ --tw-numeric-figure: initial;
3941
+ --tw-numeric-spacing: initial;
3942
+ --tw-numeric-fraction: initial;
3834
3943
  --tw-shadow: 0 0 #0000;
3835
3944
  --tw-shadow-color: initial;
3836
3945
  --tw-shadow-alpha: 100%;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "16.17.2",
3
+ "version": "16.17.3",
4
4
  "description": "The Radix UI version of Fumadocs UI",
5
5
  "keywords": [
6
6
  "Docs",
@@ -161,7 +161,7 @@
161
161
  "shiki": "^4.5.0"
162
162
  },
163
163
  "devDependencies": {
164
- "@fumadocs/base-ui": "16.17.2",
164
+ "@fumadocs/base-ui": "16.17.3",
165
165
  "@fumadocs/cli": "1.7.5",
166
166
  "@tailwindcss/cli": "^4.3.3",
167
167
  "@tailwindcss/oxide": "^4.3.3",
@@ -171,7 +171,7 @@
171
171
  "@types/react": "^19.3.0",
172
172
  "@types/react-dom": "^19.3.0",
173
173
  "fuma-cli": "^0.3.1",
174
- "fumadocs-core": "16.17.2",
174
+ "fumadocs-core": "16.17.3",
175
175
  "react-medium-image-zoom": "^5.4.9",
176
176
  "tailwindcss": "^4.3.3",
177
177
  "tsconfig": "0.0.0",
@@ -180,7 +180,7 @@
180
180
  "peerDependencies": {
181
181
  "@types/mdx": "*",
182
182
  "@types/react": "*",
183
- "fumadocs-core": "16.17.2",
183
+ "fumadocs-core": "16.17.3",
184
184
  "next": "16.x.x",
185
185
  "react": "^19.2.0",
186
186
  "react-dom": "^19.2.0",