fumadocs-ui 16.17.2 → 16.17.4
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/css/generated/docs.css +1 -1
- package/css/generated/flux.css +1 -1
- package/css/generated/glass.css +1 -1
- package/css/generated/home.css +1 -1
- package/css/generated/notebook.css +1 -1
- package/css/generated/shared.css +1 -1
- package/dist/.translations/index.d.ts +6 -0
- package/dist/.translations/keys.js +6 -0
- package/dist/components/dialog/search.d.ts +4 -1
- package/dist/components/dialog/search.js +34 -14
- package/dist/components/image-zoom.d.ts +15 -3
- package/dist/components/image-zoom.js +237 -12
- package/dist/components/image-zoom2.css +5 -0
- package/dist/components/toc/clerk.js +1 -1
- package/dist/components/toc/default.js +1 -1
- package/dist/components/type-table.js +3 -3
- package/dist/layouts/glass/page/slots/toc.js +1 -1
- package/dist/mdx.js +1 -0
- package/dist/style.css +122 -9
- package/package.json +5 -5
package/css/generated/docs.css
CHANGED
|
@@ -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
|
|
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");
|
package/css/generated/flux.css
CHANGED
|
@@ -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
|
|
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");
|
package/css/generated/glass.css
CHANGED
|
@@ -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
|
|
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 prose-xs 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");
|
package/css/generated/home.css
CHANGED
|
@@ -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
|
|
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
|
|
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");
|
package/css/generated/shared.css
CHANGED
|
@@ -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-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), [
|
|
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
|
-
|
|
253
|
-
element.
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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) {
|
|
@@ -347,7 +367,7 @@ function SearchDialogListItem({ item, table, className, children, renderMarkdown
|
|
|
347
367
|
item.type === "heading" && /* @__PURE__ */ jsx(Hash, { className: "absolute inset-s-6 top-2.5 size-4 text-fd-muted-foreground" }),
|
|
348
368
|
/* @__PURE__ */ jsx("div", {
|
|
349
369
|
ref: highlightRef,
|
|
350
|
-
className: cn("prose prose-sm
|
|
370
|
+
className: cn("prose prose-sm min-w-0", item.type === "text" && "ps-4", item.type === "heading" && "ps-8", item.type === "page" || item.type === "heading" ? "font-medium text-inherit" : "text-fd-popover-foreground/80"),
|
|
351
371
|
children: content
|
|
352
372
|
})
|
|
353
373
|
] });
|
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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 };
|
|
@@ -215,7 +215,7 @@ function TOCItem({ item, ...props }) {
|
|
|
215
215
|
return /* @__PURE__ */ jsxs(Primitive.TOCItem, {
|
|
216
216
|
href: item.url,
|
|
217
217
|
...props,
|
|
218
|
-
className: cn("prose relative py-1.5
|
|
218
|
+
className: cn("prose prose-sm relative py-1.5 scroll-m-4 text-fd-muted-foreground hover:text-fd-accent-foreground transition-colors wrap-anywhere data-[active=true]:text-fd-primary", isFirst && "pt-0", isLast && "pb-0", props.className),
|
|
219
219
|
style: {
|
|
220
220
|
paddingInlineStart: getItemOffset(item.depth),
|
|
221
221
|
...props.style
|
|
@@ -248,7 +248,7 @@ function TOCItem({ item, ...props }) {
|
|
|
248
248
|
return /* @__PURE__ */ jsxs(Primitive.TOCItem, {
|
|
249
249
|
href: item.url,
|
|
250
250
|
...props,
|
|
251
|
-
className: cn("prose relative py-1.5
|
|
251
|
+
className: cn("prose prose-sm relative py-1.5 scroll-m-4 text-fd-muted-foreground hover:text-fd-accent-foreground transition-colors wrap-anywhere data-[active=true]:text-fd-primary", isFirst && "pt-0", isLast && "pb-0", props.className),
|
|
252
252
|
style: {
|
|
253
253
|
paddingInlineStart: getItemOffset(item.depth),
|
|
254
254
|
...props.style
|
|
@@ -69,7 +69,7 @@ function Item({ parentId, name, item: { parameters = [], description, required =
|
|
|
69
69
|
className: "grid grid-cols-[1fr_3fr] gap-y-4 text-sm p-3 overflow-auto fd-scroll-container border-t",
|
|
70
70
|
children: [
|
|
71
71
|
/* @__PURE__ */ jsx("div", {
|
|
72
|
-
className: "
|
|
72
|
+
className: "prose prose-sm col-span-full prose-no-margin empty:hidden",
|
|
73
73
|
children: description
|
|
74
74
|
}),
|
|
75
75
|
typeDescription && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
|
|
@@ -97,7 +97,7 @@ function Item({ parentId, name, item: { parameters = [], description, required =
|
|
|
97
97
|
className: "font-medium not-prose text-nowrap",
|
|
98
98
|
children: [param.name, " -"]
|
|
99
99
|
}), /* @__PURE__ */ jsx("div", {
|
|
100
|
-
className: "
|
|
100
|
+
className: "prose prose-sm prose-no-margin",
|
|
101
101
|
children: param.description
|
|
102
102
|
})]
|
|
103
103
|
}, param.name))
|
|
@@ -106,7 +106,7 @@ function Item({ parentId, name, item: { parameters = [], description, required =
|
|
|
106
106
|
className: cn(fieldVariants()),
|
|
107
107
|
children: t("Returns")
|
|
108
108
|
}), /* @__PURE__ */ jsx("div", {
|
|
109
|
-
className: "my-auto
|
|
109
|
+
className: "my-auto prose prose-sm prose-no-margin",
|
|
110
110
|
children: returns
|
|
111
111
|
})] })
|
|
112
112
|
]
|
|
@@ -93,7 +93,7 @@ function TOCPanel({ className, style, ...props }) {
|
|
|
93
93
|
...props,
|
|
94
94
|
children: items.map((item) => /* @__PURE__ */ jsxs(TOCItem, {
|
|
95
95
|
href: item.url,
|
|
96
|
-
className: "group prose prose-
|
|
96
|
+
className: "group prose prose-xs flex items-center gap-2 text-fd-muted-foreground transition-colors data-[active=true]:text-fd-primary data-[active=false]:hover:text-fd-accent-foreground xl:flex-row-reverse",
|
|
97
97
|
onClick: () => setMobileOpen(false),
|
|
98
98
|
autoScroll: open && !inAnimation,
|
|
99
99
|
children: [/* @__PURE__ */ jsx("div", {
|
package/dist/mdx.js
CHANGED
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
|
}
|
|
@@ -1875,9 +1926,19 @@
|
|
|
1875
1926
|
.text-\[10px\] {
|
|
1876
1927
|
font-size: 10px;
|
|
1877
1928
|
}
|
|
1878
|
-
.
|
|
1879
|
-
--tw-
|
|
1880
|
-
line-height:
|
|
1929
|
+
.prose-sm {
|
|
1930
|
+
--tw-prose-size: 0.875;
|
|
1931
|
+
line-height: var(--tw-leading, 1.25rem);
|
|
1932
|
+
:where(dt, strong, blockquote, h1, h2, h3, h4, kbd, thead th, a:not([data-card])):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
|
|
1933
|
+
font-weight: 450;
|
|
1934
|
+
}
|
|
1935
|
+
}
|
|
1936
|
+
.prose-xs {
|
|
1937
|
+
--tw-prose-size: 0.75;
|
|
1938
|
+
line-height: var(--tw-leading, 1rem);
|
|
1939
|
+
:where(dt, strong, blockquote, h1, h2, h3, h4, kbd, thead th, a:not([data-card])):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
|
|
1940
|
+
font-weight: 450;
|
|
1941
|
+
}
|
|
1881
1942
|
}
|
|
1882
1943
|
.leading-none {
|
|
1883
1944
|
--tw-leading: 1;
|
|
@@ -1895,12 +1956,6 @@
|
|
|
1895
1956
|
--tw-font-weight: var(--font-weight-semibold);
|
|
1896
1957
|
font-weight: var(--font-weight-semibold);
|
|
1897
1958
|
}
|
|
1898
|
-
.prose-sm {
|
|
1899
|
-
--tw-prose-size: 0.875;
|
|
1900
|
-
:where(dt, strong, blockquote, h1, h2, h3, h4, kbd, thead th, a:not([data-card])):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
|
|
1901
|
-
font-weight: 450;
|
|
1902
|
-
}
|
|
1903
|
-
}
|
|
1904
1959
|
.text-nowrap {
|
|
1905
1960
|
text-wrap: nowrap;
|
|
1906
1961
|
}
|
|
@@ -1922,6 +1977,9 @@
|
|
|
1922
1977
|
.text-fd-card-foreground {
|
|
1923
1978
|
color: var(--color-fd-card-foreground);
|
|
1924
1979
|
}
|
|
1980
|
+
.text-fd-error {
|
|
1981
|
+
color: var(--color-fd-error);
|
|
1982
|
+
}
|
|
1925
1983
|
.text-fd-foreground {
|
|
1926
1984
|
color: var(--color-fd-foreground);
|
|
1927
1985
|
}
|
|
@@ -1973,6 +2031,10 @@
|
|
|
1973
2031
|
.text-inherit {
|
|
1974
2032
|
color: inherit;
|
|
1975
2033
|
}
|
|
2034
|
+
.tabular-nums {
|
|
2035
|
+
--tw-numeric-spacing: tabular-nums;
|
|
2036
|
+
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
2037
|
+
}
|
|
1976
2038
|
.line-through {
|
|
1977
2039
|
text-decoration-line: line-through;
|
|
1978
2040
|
}
|
|
@@ -2330,6 +2392,13 @@
|
|
|
2330
2392
|
text-overflow: ellipsis;
|
|
2331
2393
|
white-space: nowrap;
|
|
2332
2394
|
}
|
|
2395
|
+
.not-empty\:border-b:not(:empty) {
|
|
2396
|
+
border-bottom-style: var(--tw-border-style);
|
|
2397
|
+
border-bottom-width: 1px;
|
|
2398
|
+
}
|
|
2399
|
+
.not-empty\:p-3:not(:empty) {
|
|
2400
|
+
padding: calc(var(--spacing) * 3);
|
|
2401
|
+
}
|
|
2333
2402
|
@media (hover: hover) {
|
|
2334
2403
|
.group-hover\/heading\:opacity-100:is(:where(.group\/heading):hover *) {
|
|
2335
2404
|
opacity: 100%;
|
|
@@ -2912,6 +2981,9 @@
|
|
|
2912
2981
|
.md\:px-6 {
|
|
2913
2982
|
padding-inline: calc(var(--spacing) * 6);
|
|
2914
2983
|
}
|
|
2984
|
+
.md\:px-16 {
|
|
2985
|
+
padding-inline: calc(var(--spacing) * 16);
|
|
2986
|
+
}
|
|
2915
2987
|
.md\:py-1\.5 {
|
|
2916
2988
|
padding-block: calc(var(--spacing) * 1.5);
|
|
2917
2989
|
}
|
|
@@ -3129,6 +3201,9 @@
|
|
|
3129
3201
|
.\[\&_\:\:highlight\(fd-search\)\]\:underline ::highlight(fd-search) {
|
|
3130
3202
|
text-decoration-line: underline;
|
|
3131
3203
|
}
|
|
3204
|
+
.\[\&_img\]\:cursor-zoom-in img {
|
|
3205
|
+
cursor: zoom-in;
|
|
3206
|
+
}
|
|
3132
3207
|
.\[\&_svg\]\:size-3\.5 svg {
|
|
3133
3208
|
width: calc(var(--spacing) * 3.5);
|
|
3134
3209
|
height: calc(var(--spacing) * 3.5);
|
|
@@ -3159,6 +3234,13 @@
|
|
|
3159
3234
|
.\[\&_svg\]\:text-fd-muted-foreground svg {
|
|
3160
3235
|
color: var(--color-fd-muted-foreground);
|
|
3161
3236
|
}
|
|
3237
|
+
.\[\&\:focus-visible_img\]\:ring-2:focus-visible img {
|
|
3238
|
+
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
3239
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3240
|
+
}
|
|
3241
|
+
.\[\&\:focus-visible_img\]\:ring-fd-ring:focus-visible img {
|
|
3242
|
+
--tw-ring-color: var(--color-fd-ring);
|
|
3243
|
+
}
|
|
3162
3244
|
.\[\&\>figure\:only-child\]\:-m-4 > figure:only-child {
|
|
3163
3245
|
margin: calc(var(--spacing) * -4);
|
|
3164
3246
|
}
|
|
@@ -3407,6 +3489,11 @@ code.shiki:not(.not-fumadocs-code *) span {
|
|
|
3407
3489
|
syntax: "*";
|
|
3408
3490
|
inherits: false;
|
|
3409
3491
|
}
|
|
3492
|
+
@property --tw-scroll-snap-strictness {
|
|
3493
|
+
syntax: "*";
|
|
3494
|
+
inherits: false;
|
|
3495
|
+
initial-value: proximity;
|
|
3496
|
+
}
|
|
3410
3497
|
@property --tw-divide-x-reverse {
|
|
3411
3498
|
syntax: "*";
|
|
3412
3499
|
inherits: false;
|
|
@@ -3425,6 +3512,26 @@ code.shiki:not(.not-fumadocs-code *) span {
|
|
|
3425
3512
|
syntax: "*";
|
|
3426
3513
|
inherits: false;
|
|
3427
3514
|
}
|
|
3515
|
+
@property --tw-ordinal {
|
|
3516
|
+
syntax: "*";
|
|
3517
|
+
inherits: false;
|
|
3518
|
+
}
|
|
3519
|
+
@property --tw-slashed-zero {
|
|
3520
|
+
syntax: "*";
|
|
3521
|
+
inherits: false;
|
|
3522
|
+
}
|
|
3523
|
+
@property --tw-numeric-figure {
|
|
3524
|
+
syntax: "*";
|
|
3525
|
+
inherits: false;
|
|
3526
|
+
}
|
|
3527
|
+
@property --tw-numeric-spacing {
|
|
3528
|
+
syntax: "*";
|
|
3529
|
+
inherits: false;
|
|
3530
|
+
}
|
|
3531
|
+
@property --tw-numeric-fraction {
|
|
3532
|
+
syntax: "*";
|
|
3533
|
+
inherits: false;
|
|
3534
|
+
}
|
|
3428
3535
|
@property --tw-shadow {
|
|
3429
3536
|
syntax: "*";
|
|
3430
3537
|
inherits: false;
|
|
@@ -3827,10 +3934,16 @@ code.shiki:not(.not-fumadocs-code *) span {
|
|
|
3827
3934
|
--tw-rotate-z: initial;
|
|
3828
3935
|
--tw-skew-x: initial;
|
|
3829
3936
|
--tw-skew-y: initial;
|
|
3937
|
+
--tw-scroll-snap-strictness: proximity;
|
|
3830
3938
|
--tw-divide-x-reverse: 0;
|
|
3831
3939
|
--tw-divide-y-reverse: 0;
|
|
3832
3940
|
--tw-leading: initial;
|
|
3833
3941
|
--tw-font-weight: initial;
|
|
3942
|
+
--tw-ordinal: initial;
|
|
3943
|
+
--tw-slashed-zero: initial;
|
|
3944
|
+
--tw-numeric-figure: initial;
|
|
3945
|
+
--tw-numeric-spacing: initial;
|
|
3946
|
+
--tw-numeric-fraction: initial;
|
|
3834
3947
|
--tw-shadow: 0 0 #0000;
|
|
3835
3948
|
--tw-shadow-color: initial;
|
|
3836
3949
|
--tw-shadow-alpha: 100%;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fumadocs-ui",
|
|
3
|
-
"version": "16.17.
|
|
3
|
+
"version": "16.17.4",
|
|
4
4
|
"description": "The Radix UI version of Fumadocs UI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Docs",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
"dependencies": {
|
|
141
141
|
"@fuma-translate/react": "^1.0.2",
|
|
142
|
-
"@fumadocs/tailwind": "0.1.
|
|
142
|
+
"@fumadocs/tailwind": "0.1.4",
|
|
143
143
|
"@radix-ui/react-accordion": "^1.2.20",
|
|
144
144
|
"@radix-ui/react-collapsible": "^1.1.20",
|
|
145
145
|
"@radix-ui/react-dialog": "^1.1.23",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"shiki": "^4.5.0"
|
|
162
162
|
},
|
|
163
163
|
"devDependencies": {
|
|
164
|
-
"@fumadocs/base-ui": "16.17.
|
|
164
|
+
"@fumadocs/base-ui": "16.17.4",
|
|
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.
|
|
174
|
+
"fumadocs-core": "16.17.4",
|
|
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.
|
|
183
|
+
"fumadocs-core": "16.17.4",
|
|
184
184
|
"next": "16.x.x",
|
|
185
185
|
"react": "^19.2.0",
|
|
186
186
|
"react-dom": "^19.2.0",
|