@fumadocs/base-ui 16.5.1 → 16.5.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.
Files changed (184) hide show
  1. package/css/lib/base.css +1 -1
  2. package/dist/_virtual/{rolldown_runtime.js → _rolldown/runtime.js} +3 -3
  3. package/dist/components/accordion.d.ts +3 -3
  4. package/dist/components/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion.js +2 -2
  6. package/dist/components/accordion.js.map +1 -1
  7. package/dist/components/banner.d.ts +2 -2
  8. package/dist/components/banner.d.ts.map +1 -1
  9. package/dist/components/callout.d.ts +5 -5
  10. package/dist/components/callout.d.ts.map +1 -1
  11. package/dist/components/card.d.ts +3 -3
  12. package/dist/components/card.d.ts.map +1 -1
  13. package/dist/components/codeblock.d.ts +7 -7
  14. package/dist/components/codeblock.d.ts.map +1 -1
  15. package/dist/components/codeblock.js +3 -3
  16. package/dist/components/codeblock.js.map +1 -1
  17. package/dist/components/dialog/search-algolia.d.ts +2 -2
  18. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  19. package/dist/components/dialog/search-algolia.js +4 -4
  20. package/dist/components/dialog/search-algolia.js.map +1 -1
  21. package/dist/components/dialog/search-default.d.ts +2 -2
  22. package/dist/components/dialog/search-default.d.ts.map +1 -1
  23. package/dist/components/dialog/search-default.js +4 -4
  24. package/dist/components/dialog/search-default.js.map +1 -1
  25. package/dist/components/dialog/search-orama.d.ts +2 -2
  26. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  27. package/dist/components/dialog/search-orama.js +4 -4
  28. package/dist/components/dialog/search-orama.js.map +1 -1
  29. package/dist/components/dialog/search.d.ts +13 -13
  30. package/dist/components/dialog/search.d.ts.map +1 -1
  31. package/dist/components/dialog/search.js +4 -4
  32. package/dist/components/dialog/search.js.map +1 -1
  33. package/dist/components/dynamic-codeblock.core.d.ts +2 -2
  34. package/dist/components/dynamic-codeblock.core.d.ts.map +1 -1
  35. package/dist/components/dynamic-codeblock.core.js +2 -2
  36. package/dist/components/dynamic-codeblock.core.js.map +1 -1
  37. package/dist/components/dynamic-codeblock.d.ts +2 -2
  38. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  39. package/dist/components/files.d.ts.map +1 -1
  40. package/dist/components/github-info.d.ts +2 -2
  41. package/dist/components/github-info.d.ts.map +1 -1
  42. package/dist/components/heading.d.ts.map +1 -1
  43. package/dist/components/image-zoom.d.ts +2 -2
  44. package/dist/components/image-zoom.d.ts.map +1 -1
  45. package/dist/components/inline-toc.d.ts +2 -2
  46. package/dist/components/inline-toc.d.ts.map +1 -1
  47. package/dist/components/sidebar/base.d.ts +15 -15
  48. package/dist/components/sidebar/base.d.ts.map +1 -1
  49. package/dist/components/sidebar/base.js +1 -1
  50. package/dist/components/sidebar/link-item.d.ts +2 -2
  51. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  52. package/dist/components/sidebar/page-tree.d.ts +2 -2
  53. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  54. package/dist/components/sidebar/tabs/dropdown.d.ts +2 -2
  55. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  56. package/dist/components/sidebar/tabs/dropdown.js +12 -12
  57. package/dist/components/sidebar/tabs/dropdown.js.map +1 -1
  58. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  59. package/dist/components/steps.d.ts +3 -3
  60. package/dist/components/steps.d.ts.map +1 -1
  61. package/dist/components/tabs.d.ts +7 -7
  62. package/dist/components/tabs.d.ts.map +1 -1
  63. package/dist/components/toc/clerk.d.ts +2 -2
  64. package/dist/components/toc/clerk.d.ts.map +1 -1
  65. package/dist/components/toc/default.d.ts +2 -2
  66. package/dist/components/toc/default.d.ts.map +1 -1
  67. package/dist/components/toc/index.d.ts +4 -4
  68. package/dist/components/toc/index.d.ts.map +1 -1
  69. package/dist/components/type-table.d.ts +2 -2
  70. package/dist/components/type-table.d.ts.map +1 -1
  71. package/dist/components/ui/accordion.d.ts +6 -6
  72. package/dist/components/ui/accordion.d.ts.map +1 -1
  73. package/dist/components/ui/button.d.ts.map +1 -1
  74. package/dist/components/ui/collapsible.d.ts +6 -6
  75. package/dist/components/ui/collapsible.d.ts.map +1 -1
  76. package/dist/components/ui/navigation-menu.d.ts +7 -7
  77. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  78. package/dist/components/ui/popover.d.ts +3 -3
  79. package/dist/components/ui/popover.d.ts.map +1 -1
  80. package/dist/components/ui/scroll-area.d.ts +4 -4
  81. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  82. package/dist/components/ui/tabs.d.ts +6 -6
  83. package/dist/components/ui/tabs.d.ts.map +1 -1
  84. package/dist/components/ui/tabs.js +2 -2
  85. package/dist/components/ui/tabs.js.map +1 -1
  86. package/dist/contexts/i18n.d.ts +2 -2
  87. package/dist/contexts/i18n.d.ts.map +1 -1
  88. package/dist/contexts/search.d.ts +2 -2
  89. package/dist/contexts/search.d.ts.map +1 -1
  90. package/dist/contexts/tree.d.ts +2 -2
  91. package/dist/contexts/tree.d.ts.map +1 -1
  92. package/dist/i18n.d.ts.map +1 -1
  93. package/dist/i18n.js +3 -3
  94. package/dist/i18n.js.map +1 -1
  95. package/dist/layouts/docs/client.d.ts +7 -7
  96. package/dist/layouts/docs/client.d.ts.map +1 -1
  97. package/dist/layouts/docs/index.d.ts +2 -2
  98. package/dist/layouts/docs/index.d.ts.map +1 -1
  99. package/dist/layouts/docs/index.js +3 -3
  100. package/dist/layouts/docs/page/client.d.ts +7 -7
  101. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  102. package/dist/layouts/docs/page/index.d.ts +5 -5
  103. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  104. package/dist/layouts/docs/page/index.js +4 -4
  105. package/dist/layouts/docs/page/index.js.map +1 -1
  106. package/dist/layouts/docs/sidebar.d.ts +17 -17
  107. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  108. package/dist/layouts/flux/index.d.ts +4 -4
  109. package/dist/layouts/flux/index.d.ts.map +1 -1
  110. package/dist/layouts/flux/index.js +6 -6
  111. package/dist/layouts/flux/index.js.map +1 -1
  112. package/dist/layouts/flux/page/client.d.ts +8 -8
  113. package/dist/layouts/flux/page/client.d.ts.map +1 -1
  114. package/dist/layouts/flux/page/index.d.ts +5 -5
  115. package/dist/layouts/flux/page/index.d.ts.map +1 -1
  116. package/dist/layouts/flux/page/index.js +3 -3
  117. package/dist/layouts/flux/page/index.js.map +1 -1
  118. package/dist/layouts/flux/sidebar.d.ts +16 -16
  119. package/dist/layouts/flux/sidebar.d.ts.map +1 -1
  120. package/dist/layouts/flux/tab-dropdown.d.ts +2 -2
  121. package/dist/layouts/flux/tab-dropdown.d.ts.map +1 -1
  122. package/dist/layouts/flux/tab-dropdown.js +12 -12
  123. package/dist/layouts/flux/tab-dropdown.js.map +1 -1
  124. package/dist/layouts/home/client.d.ts +2 -2
  125. package/dist/layouts/home/client.d.ts.map +1 -1
  126. package/dist/layouts/home/client.js +1 -1
  127. package/dist/layouts/home/index.d.ts +2 -2
  128. package/dist/layouts/home/index.d.ts.map +1 -1
  129. package/dist/layouts/home/navbar.d.ts +7 -7
  130. package/dist/layouts/home/navbar.d.ts.map +1 -1
  131. package/dist/layouts/notebook/client.d.ts +8 -8
  132. package/dist/layouts/notebook/client.d.ts.map +1 -1
  133. package/dist/layouts/notebook/client.js +2 -2
  134. package/dist/layouts/notebook/client.js.map +1 -1
  135. package/dist/layouts/notebook/index.d.ts +2 -2
  136. package/dist/layouts/notebook/index.d.ts.map +1 -1
  137. package/dist/layouts/notebook/index.js +8 -8
  138. package/dist/layouts/notebook/index.js.map +1 -1
  139. package/dist/layouts/notebook/page/client.d.ts +7 -7
  140. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  141. package/dist/layouts/notebook/page/index.d.ts +5 -5
  142. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  143. package/dist/layouts/notebook/page/index.js +4 -4
  144. package/dist/layouts/notebook/page/index.js.map +1 -1
  145. package/dist/layouts/notebook/sidebar.d.ts +12 -12
  146. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  147. package/dist/layouts/shared/index.d.ts +3 -3
  148. package/dist/layouts/shared/index.d.ts.map +1 -1
  149. package/dist/layouts/shared/language-toggle.d.ts +2 -2
  150. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  151. package/dist/layouts/shared/search-toggle.d.ts +3 -3
  152. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  153. package/dist/layouts/shared/theme-toggle.d.ts +2 -2
  154. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  155. package/dist/layouts/shared/theme-toggle.js +3 -3
  156. package/dist/layouts/shared/theme-toggle.js.map +1 -1
  157. package/dist/mdx.d.ts.map +1 -1
  158. package/dist/mdx.server.d.ts +0 -1
  159. package/dist/mdx.server.d.ts.map +1 -1
  160. package/dist/og.d.ts +2 -2
  161. package/dist/og.d.ts.map +1 -1
  162. package/dist/page.d.ts +3 -3
  163. package/dist/page.d.ts.map +1 -1
  164. package/dist/page.js +3 -3
  165. package/dist/page.js.map +1 -1
  166. package/dist/provider/base.d.ts +2 -2
  167. package/dist/provider/base.d.ts.map +1 -1
  168. package/dist/provider/next.d.ts +2 -2
  169. package/dist/provider/next.d.ts.map +1 -1
  170. package/dist/provider/react-router.d.ts +2 -2
  171. package/dist/provider/react-router.d.ts.map +1 -1
  172. package/dist/provider/tanstack.d.ts +2 -2
  173. package/dist/provider/tanstack.d.ts.map +1 -1
  174. package/dist/provider/waku.d.ts +2 -2
  175. package/dist/provider/waku.d.ts.map +1 -1
  176. package/dist/tailwind/typography.d.ts +2 -0
  177. package/dist/tailwind/typography.js +3 -0
  178. package/dist/utils/link-item.d.ts +2 -2
  179. package/dist/utils/link-item.d.ts.map +1 -1
  180. package/dist/utils/use-copy-button.d.ts.map +1 -1
  181. package/dist/utils/use-footer-items.d.ts +0 -1
  182. package/dist/utils/use-footer-items.d.ts.map +1 -1
  183. package/dist/utils/use-is-scroll-top.d.ts.map +1 -1
  184. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","names":[],"sources":["../../../src/components/dialog/search.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"search.d.ts","names":[],"sources":["../../../src/components/dialog/search.tsx"],"mappings":";;;;;;;KA2BY,cAAA,IACP,iBAAA;EACC,QAAA;AAAA;EAGA,EAAA;EACA,IAAA;EACA,IAAA,EAAM,SAAA;EACN,QAAA;AAAA;AAAA,UAMW,iBAAA,SAA0B,WAAA;EACzC,MAAA;EACA,cAAA,GAAiB,CAAA;EACjB,QAAA,IAAY,IAAA,EAAM,cAAA;EAClB,SAAA;EAEA,QAAA,EAAU,SAAA;AAAA;AAAA,iBAuBI,YAAA,CAAA;EACd,IAAA;EACA,YAAA;EACA,MAAA;EACA,cAAA;EACA,SAAA;EACA,QAAA,EAAU,YAAA;EACV;AAAA,GACC,iBAAA,GAAiB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAqCJ,kBAAA,CAAmB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI/C,iBAAA,CAAkB,KAAA,EAAO,cAAA,YAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAehD,iBAAA,CAAA;EACd,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAsBX,kBAAA,CAAmB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI/C,mBAAA,CAAA;EACd,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,MAAA,CAAO,QAAA,IAAS,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAczB,mBAAA,CAAA;EACd,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,MAAA,CAAO,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAuBtB,gBAAA,CAAA;EACd,KAAA;EACA,KAAA;EAKA,IAAA;EAAA,GACG;AAAA,GACF,IAAA,CAAK,cAAA;EACN,KAAA,EAAO,cAAA;EAhLP;;;EAoLA,KAAA,SAAc,SAAA;EAlLI;;;EAsLlB,IAAA,IAAQ,KAAA;IAAS,IAAA,EAAM,cAAA;IAAgB,OAAA;EAAA,MAA0B,SAAA;AAAA,IAClE,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAuFe,oBAAA,CAAA;EACd,IAAA;EACA,SAAA;EACA,QAAA;EACA,gBAAA,EAAkB,MAAA;EAAA,GACf;AAAA,GACF,cAAA;EACD,gBAAA,UAA0B,gBAAA;EAC1B,IAAA,EAAM,cAAA;AAAA,IACP,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAoEe,gBAAA,CAAiB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,UAe5C,aAAA,SAAsB,cAAA;EACrC,GAAA;EACA,WAAA,GAAc,GAAA;EACd,UAAA;AAAA;AAAA,iBAcc,QAAA,CAAA;EAAW,GAAA;EAAK,WAAA;EAAa,UAAA;EAAA,GAAuB;AAAA,GAAS,aAAA,GAAa,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAmB1E,YAAA,CAAA;EACd,KAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA;EACD,KAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAoBQ,gBAAA,CAAiB,UAAA,EAAY,eAAA,CAAgB,SAAA,MAAe,SAAA;AAAA,iBAcrD,SAAA,CAAA;;iBA9aC,IAAA;;mBAEE,CAAA;aACN,IAAA,EAAM,cAAA;;;iBAibH,WAAA,CAAA;;kBAtaE,KAAA;;;iBA4aF,aAAA,CAAA;;cAjbF,CAAA;AAAA"}
@@ -105,7 +105,7 @@ function SearchDialogContent({ children, className, ...props }) {
105
105
  function SearchDialogList({ items = null, Empty = () => /* @__PURE__ */ jsx("div", {
106
106
  className: "py-12 text-center text-sm text-fd-muted-foreground",
107
107
  children: /* @__PURE__ */ jsx(I18nLabel, { label: "searchNoResult" })
108
- }), Item = (props$1) => /* @__PURE__ */ jsx(SearchDialogListItem, { ...props$1 }), ...props }) {
108
+ }), Item = (props) => /* @__PURE__ */ jsx(SearchDialogListItem, { ...props }), ...props }) {
109
109
  const ref = useRef(null);
110
110
  const { onSelect } = useSearch();
111
111
  const [active, setActive] = useState(() => items && items.length > 0 ? items[0].id : null);
@@ -129,8 +129,8 @@ function SearchDialogList({ items = null, Empty = () => /* @__PURE__ */ jsx("div
129
129
  const element = ref.current;
130
130
  if (!element) return;
131
131
  const observer = new ResizeObserver(() => {
132
- const viewport$1 = element.firstElementChild;
133
- element.style.setProperty("--fd-animated-height", `${viewport$1.clientHeight}px`);
132
+ const viewport = element.firstElementChild;
133
+ element.style.setProperty("--fd-animated-height", `${viewport.clientHeight}px`);
134
134
  });
135
135
  const viewport = element.firstElementChild;
136
136
  if (viewport) observer.observe(viewport);
@@ -170,7 +170,7 @@ function SearchDialogListItem({ item, className, children, renderHighlights: ren
170
170
  else children ??= /* @__PURE__ */ jsxs(Fragment$1, { children: [
171
171
  /* @__PURE__ */ jsx("div", {
172
172
  className: "inline-flex items-center text-fd-muted-foreground text-xs empty:hidden",
173
- children: item.breadcrumbs?.map((item$1, i) => /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 rtl:rotate-180" }), item$1] }, i))
173
+ children: item.breadcrumbs?.map((item, i) => /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 rtl:rotate-180" }), item] }, i))
174
174
  }),
175
175
  item.type !== "page" && /* @__PURE__ */ jsx("div", {
176
176
  role: "none",
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","names":["props","viewport","item","SearchIcon"],"sources":["../../../src/components/dialog/search.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronRight, Hash, Search as SearchIcon } from 'lucide-react';\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n type ReactNode,\n use,\n useCallback,\n useEffect,\n useEffectEvent,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { I18nLabel, useI18n } from '@/contexts/i18n';\nimport { cn } from '@/utils/cn';\nimport { Dialog } from '@base-ui/react/dialog';\nimport type { HighlightedText, ReactSortedResult as BaseResultType } from 'fumadocs-core/search';\nimport { cva } from 'class-variance-authority';\nimport { useRouter } from 'fumadocs-core/framework';\nimport type { SharedProps } from '@/contexts/search';\nimport { useOnChange } from 'fumadocs-core/utils/use-on-change';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { buttonVariants } from '@/components/ui/button';\n\nexport type SearchItemType =\n | (BaseResultType & {\n external?: boolean;\n })\n | {\n id: string;\n type: 'action';\n node: ReactNode;\n onSelect: () => void;\n };\n\n// needed for backward compatible since some previous guides referenced it\nexport type { SharedProps };\n\nexport interface SearchDialogProps extends SharedProps {\n search: string;\n onSearchChange: (v: string) => void;\n onSelect?: (item: SearchItemType) => void;\n isLoading?: boolean;\n\n children: ReactNode;\n}\n\nconst Context = createContext<{\n open: boolean;\n onOpenChange: (open: boolean) => void;\n search: string;\n onSearchChange: (v: string) => void;\n onSelect: (item: SearchItemType) => void;\n isLoading: boolean;\n} | null>(null);\n\nconst ListContext = createContext<{\n active: string | null;\n setActive: (v: string | null) => void;\n} | null>(null);\n\nconst TagsListContext = createContext<{\n value?: string;\n onValueChange: (value: string | undefined) => void;\n allowClear: boolean;\n} | null>(null);\n\nexport function SearchDialog({\n open,\n onOpenChange,\n search,\n onSearchChange,\n isLoading = false,\n onSelect: onSelectProp,\n children,\n}: SearchDialogProps) {\n const router = useRouter();\n const onSelect = useEffectEvent((item: SearchItemType) => {\n if (item.type === 'action') {\n item.onSelect();\n } else if (item.external) {\n window.open(item.url, '_blank')?.focus();\n } else {\n router.push(item.url);\n }\n\n onOpenChange(false);\n onSelectProp?.(item);\n });\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Context.Provider\n value={useMemo(\n () => ({\n open,\n onOpenChange,\n search,\n onSearchChange,\n // eslint-disable-next-line react-hooks/rules-of-hooks -- used in child components\n onSelect,\n isLoading,\n }),\n [isLoading, onOpenChange, onSearchChange, open, search],\n )}\n >\n {children}\n </Context.Provider>\n </Dialog.Root>\n );\n}\n\nexport function SearchDialogHeader(props: ComponentProps<'div'>) {\n return <div {...props} className={cn('flex flex-row items-center gap-2 p-3', props.className)} />;\n}\n\nexport function SearchDialogInput(props: ComponentProps<'input'>) {\n const { text } = useI18n();\n const { search, onSearchChange } = useSearch();\n\n return (\n <input\n {...props}\n value={search}\n onChange={(e) => onSearchChange(e.target.value)}\n placeholder={text.search}\n className=\"w-0 flex-1 bg-transparent text-lg placeholder:text-fd-muted-foreground focus-visible:outline-none\"\n />\n );\n}\n\nexport function SearchDialogClose({\n children = 'ESC',\n className,\n ...props\n}: ComponentProps<'button'>) {\n const { onOpenChange } = useSearch();\n\n return (\n <button\n type=\"button\"\n onClick={() => onOpenChange(false)}\n className={cn(\n buttonVariants({\n color: 'outline',\n size: 'sm',\n className: 'font-mono text-fd-muted-foreground',\n }),\n className,\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function SearchDialogFooter(props: ComponentProps<'div'>) {\n return <div {...props} className={cn('bg-fd-secondary/50 p-3 empty:hidden', props.className)} />;\n}\n\nexport function SearchDialogOverlay({\n className,\n ...props\n}: ComponentProps<typeof Dialog.Backdrop>) {\n return (\n <Dialog.Backdrop\n {...props}\n className={(s) =>\n cn(\n 'fixed inset-0 z-50 backdrop-blur-xs bg-fd-overlay data-[open]:animate-fd-fade-in data-[closed]:animate-fd-fade-out',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n );\n}\n\nexport function SearchDialogContent({\n children,\n className,\n ...props\n}: ComponentProps<typeof Dialog.Popup>) {\n const { text } = useI18n();\n\n return (\n <Dialog.Portal>\n <Dialog.Popup\n aria-describedby={undefined}\n {...props}\n className={(s) =>\n cn(\n 'fixed left-1/2 top-4 md:top-[calc(50%-250px)] z-50 w-[calc(100%-1rem)] max-w-screen-sm -translate-x-1/2 rounded-xl border bg-fd-popover text-fd-popover-foreground shadow-2xl shadow-black/50 overflow-hidden data-[closed]:animate-fd-dialog-out data-[open]:animate-fd-dialog-in',\n '*:border-b *:has-[+:last-child[data-empty=true]]:border-b-0 *:data-[empty=true]:border-b-0 *:last:border-b-0',\n typeof className === 'function' ? className(s) : className,\n )\n }\n >\n <Dialog.Title className=\"hidden\">{text.search}</Dialog.Title>\n {children}\n </Dialog.Popup>\n </Dialog.Portal>\n );\n}\n\nexport function SearchDialogList({\n items = null,\n Empty = () => (\n <div className=\"py-12 text-center text-sm text-fd-muted-foreground\">\n <I18nLabel label=\"searchNoResult\" />\n </div>\n ),\n Item = (props) => <SearchDialogListItem {...props} />,\n ...props\n}: Omit<ComponentProps<'div'>, 'children'> & {\n items: SearchItemType[] | null | undefined;\n /**\n * Renderer for empty list UI\n */\n Empty?: () => ReactNode;\n /**\n * Renderer for items\n */\n Item?: (props: { item: SearchItemType; onClick: () => void }) => ReactNode;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const { onSelect } = useSearch();\n const [active, setActive] = useState<string | null>(() =>\n items && items.length > 0 ? items[0].id : null,\n );\n\n const onKey = useEffectEvent((e: KeyboardEvent) => {\n if (!items || e.isComposing) return;\n\n if (e.key === 'ArrowDown' || e.key == 'ArrowUp') {\n let idx = items.findIndex((item) => item.id === active);\n if (idx === -1) idx = 0;\n else if (e.key === 'ArrowDown') idx++;\n else idx--;\n\n setActive(items.at(idx % items.length)?.id ?? null);\n e.preventDefault();\n }\n\n if (e.key === 'Enter') {\n const selected = items.find((item) => item.id === active);\n\n if (selected) onSelect(selected);\n e.preventDefault();\n }\n });\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const observer = new ResizeObserver(() => {\n const viewport = element.firstElementChild!;\n\n element.style.setProperty('--fd-animated-height', `${viewport.clientHeight}px`);\n });\n\n const viewport = element.firstElementChild;\n if (viewport) observer.observe(viewport);\n\n window.addEventListener('keydown', onKey);\n return () => {\n observer.disconnect();\n window.removeEventListener('keydown', onKey);\n };\n }, []);\n\n useOnChange(items, () => {\n if (items && items.length > 0) {\n setActive(items[0].id);\n }\n });\n\n return (\n <div\n {...props}\n ref={ref}\n data-empty={items === null}\n className={cn(\n 'overflow-hidden h-(--fd-animated-height) transition-[height]',\n props.className,\n )}\n >\n <div\n className={cn('w-full flex flex-col overflow-y-auto max-h-[460px] p-1', !items && 'hidden')}\n >\n <ListContext.Provider\n value={useMemo(\n () => ({\n active,\n setActive,\n }),\n [active],\n )}\n >\n {items?.length === 0 && Empty()}\n\n {items?.map((item) => (\n <Fragment key={item.id}>{Item({ item, onClick: () => onSelect(item) })}</Fragment>\n ))}\n </ListContext.Provider>\n </div>\n </div>\n );\n}\n\nexport function SearchDialogListItem({\n item,\n className,\n children,\n renderHighlights: render = renderHighlights,\n ...props\n}: ComponentProps<'button'> & {\n renderHighlights?: typeof renderHighlights;\n item: SearchItemType;\n}) {\n const { active: activeId, setActive } = useSearchList();\n const active = item.id === activeId;\n\n if (item.type === 'action') {\n children ??= item.node;\n } else {\n children ??= (\n <>\n <div className=\"inline-flex items-center text-fd-muted-foreground text-xs empty:hidden\">\n {item.breadcrumbs?.map((item, i) => (\n <Fragment key={i}>\n {i > 0 && <ChevronRight className=\"size-4 rtl:rotate-180\" />}\n {item}\n </Fragment>\n ))}\n </div>\n\n {item.type !== 'page' && (\n <div role=\"none\" className=\"absolute start-3 inset-y-0 w-px bg-fd-border\" />\n )}\n <p\n className={cn(\n 'min-w-0 truncate',\n item.type !== 'page' && 'ps-4',\n item.type === 'page' || item.type === 'heading'\n ? 'font-medium'\n : 'text-fd-popover-foreground/80',\n )}\n >\n {item.type === 'heading' && (\n <Hash className=\"inline me-1 size-4 text-fd-muted-foreground\" />\n )}\n {item.contentWithHighlights ? render(item.contentWithHighlights) : item.content}\n </p>\n </>\n );\n }\n\n return (\n <button\n type=\"button\"\n ref={useCallback(\n (element: HTMLButtonElement | null) => {\n if (active && element) {\n scrollIntoView(element, {\n scrollMode: 'if-needed',\n block: 'nearest',\n boundary: element.parentElement,\n });\n }\n },\n [active],\n )}\n aria-selected={active}\n className={cn(\n 'relative select-none px-2.5 py-2 text-start text-sm rounded-lg',\n active && 'bg-fd-accent text-fd-accent-foreground',\n className,\n )}\n onPointerMove={() => setActive(item.id)}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function SearchDialogIcon(props: ComponentProps<'svg'>) {\n const { isLoading } = useSearch();\n\n return (\n <SearchIcon\n {...props}\n className={cn(\n 'size-5 text-fd-muted-foreground',\n isLoading && 'animate-pulse duration-400',\n props.className,\n )}\n />\n );\n}\n\nexport interface TagsListProps extends ComponentProps<'div'> {\n tag?: string;\n onTagChange: (tag: string | undefined) => void;\n allowClear?: boolean;\n}\n\nconst itemVariants = cva(\n 'rounded-md border px-2 py-0.5 text-xs font-medium text-fd-muted-foreground transition-colors',\n {\n variants: {\n active: {\n true: 'bg-fd-accent text-fd-accent-foreground',\n },\n },\n },\n);\n\nexport function TagsList({ tag, onTagChange, allowClear = false, ...props }: TagsListProps) {\n return (\n <div {...props} className={cn('flex items-center gap-1 flex-wrap', props.className)}>\n <TagsListContext.Provider\n value={useMemo(\n () => ({\n value: tag,\n onValueChange: onTagChange,\n allowClear,\n }),\n [allowClear, onTagChange, tag],\n )}\n >\n {props.children}\n </TagsListContext.Provider>\n </div>\n );\n}\n\nexport function TagsListItem({\n value,\n className,\n ...props\n}: ComponentProps<'button'> & {\n value: string;\n}) {\n const { onValueChange, value: selectedValue, allowClear } = useTagsList();\n const selected = value === selectedValue;\n\n return (\n <button\n type=\"button\"\n data-active={selected}\n className={cn(itemVariants({ active: selected, className }))}\n onClick={() => {\n onValueChange(selected && allowClear ? undefined : value);\n }}\n tabIndex={-1}\n {...props}\n >\n {props.children}\n </button>\n );\n}\n\nfunction renderHighlights(highlights: HighlightedText<ReactNode>[]): ReactNode {\n return highlights.map((node, i) => {\n if (node.styles?.highlight) {\n return (\n <span key={i} className=\"text-fd-primary underline\">\n {node.content}\n </span>\n );\n }\n\n return <Fragment key={i}>{node.content}</Fragment>;\n });\n}\n\nexport function useSearch() {\n const ctx = use(Context);\n if (!ctx) throw new Error('Missing <SearchDialog />');\n return ctx;\n}\n\nexport function useTagsList() {\n const ctx = use(TagsListContext);\n if (!ctx) throw new Error('Missing <TagsList />');\n return ctx;\n}\n\nexport function useSearchList() {\n const ctx = use(ListContext);\n if (!ctx) throw new Error('Missing <SearchDialogList />');\n return ctx;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkDA,MAAM,UAAU,cAON,KAAK;AAEf,MAAM,cAAc,cAGV,KAAK;AAEf,MAAM,kBAAkB,cAId,KAAK;AAEf,SAAgB,aAAa,EAC3B,MACA,cACA,QACA,gBACA,YAAY,OACZ,UAAU,cACV,YACoB;CACpB,MAAM,SAAS,WAAW;CAC1B,MAAM,WAAW,gBAAgB,SAAyB;AACxD,MAAI,KAAK,SAAS,SAChB,MAAK,UAAU;WACN,KAAK,SACd,QAAO,KAAK,KAAK,KAAK,SAAS,EAAE,OAAO;MAExC,QAAO,KAAK,KAAK,IAAI;AAGvB,eAAa,MAAM;AACnB,iBAAe,KAAK;GACpB;AAEF,QACE,oBAAC,OAAO;EAAW;EAAoB;YACrC,oBAAC,QAAQ;GACP,OAAO,eACE;IACL;IACA;IACA;IACA;IAEA;IACA;IACD,GACD;IAAC;IAAW;IAAc;IAAgB;IAAM;IAAO,CACxD;GAEA;IACgB;GACP;;AAIlB,SAAgB,mBAAmB,OAA8B;AAC/D,QAAO,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,wCAAwC,MAAM,UAAU;GAAI;;AAGnG,SAAgB,kBAAkB,OAAgC;CAChE,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,EAAE,QAAQ,mBAAmB,WAAW;AAE9C,QACE,oBAAC;EACC,GAAI;EACJ,OAAO;EACP,WAAW,MAAM,eAAe,EAAE,OAAO,MAAM;EAC/C,aAAa,KAAK;EAClB,WAAU;GACV;;AAIN,SAAgB,kBAAkB,EAChC,WAAW,OACX,WACA,GAAG,SACwB;CAC3B,MAAM,EAAE,iBAAiB,WAAW;AAEpC,QACE,oBAAC;EACC,MAAK;EACL,eAAe,aAAa,MAAM;EAClC,WAAW,GACT,eAAe;GACb,OAAO;GACP,MAAM;GACN,WAAW;GACZ,CAAC,EACF,UACD;EACD,GAAI;EAEH;GACM;;AAIb,SAAgB,mBAAmB,OAA8B;AAC/D,QAAO,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,uCAAuC,MAAM,UAAU;GAAI;;AAGlG,SAAgB,oBAAoB,EAClC,WACA,GAAG,SACsC;AACzC,QACE,oBAAC,OAAO;EACN,GAAI;EACJ,YAAY,MACV,GACE,sHACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;GAEH;;AAIN,SAAgB,oBAAoB,EAClC,UACA,WACA,GAAG,SACmC;CACtC,MAAM,EAAE,SAAS,SAAS;AAE1B,QACE,oBAAC,OAAO,oBACN,qBAAC,OAAO;EACN,oBAAkB;EAClB,GAAI;EACJ,YAAY,MACV,GACE,sRACA,gHACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;aAGH,oBAAC,OAAO;GAAM,WAAU;aAAU,KAAK;IAAsB,EAC5D;GACY,GACD;;AAIpB,SAAgB,iBAAiB,EAC/B,QAAQ,MACR,cACE,oBAAC;CAAI,WAAU;WACb,oBAAC,aAAU,OAAM,mBAAmB;EAChC,EAER,QAAQ,YAAU,oBAAC,wBAAqB,GAAIA,UAAS,EACrD,GAAG,SAWF;CACD,MAAM,MAAM,OAAuB,KAAK;CACxC,MAAM,EAAE,aAAa,WAAW;CAChC,MAAM,CAAC,QAAQ,aAAa,eAC1B,SAAS,MAAM,SAAS,IAAI,MAAM,GAAG,KAAK,KAC3C;CAED,MAAM,QAAQ,gBAAgB,MAAqB;AACjD,MAAI,CAAC,SAAS,EAAE,YAAa;AAE7B,MAAI,EAAE,QAAQ,eAAe,EAAE,OAAO,WAAW;GAC/C,IAAI,MAAM,MAAM,WAAW,SAAS,KAAK,OAAO,OAAO;AACvD,OAAI,QAAQ,GAAI,OAAM;YACb,EAAE,QAAQ,YAAa;OAC3B;AAEL,aAAU,MAAM,GAAG,MAAM,MAAM,OAAO,EAAE,MAAM,KAAK;AACnD,KAAE,gBAAgB;;AAGpB,MAAI,EAAE,QAAQ,SAAS;GACrB,MAAM,WAAW,MAAM,MAAM,SAAS,KAAK,OAAO,OAAO;AAEzD,OAAI,SAAU,UAAS,SAAS;AAChC,KAAE,gBAAgB;;GAEpB;AAEF,iBAAgB;EACd,MAAM,UAAU,IAAI;AACpB,MAAI,CAAC,QAAS;EAEd,MAAM,WAAW,IAAI,qBAAqB;GACxC,MAAMC,aAAW,QAAQ;AAEzB,WAAQ,MAAM,YAAY,wBAAwB,GAAGA,WAAS,aAAa,IAAI;IAC/E;EAEF,MAAM,WAAW,QAAQ;AACzB,MAAI,SAAU,UAAS,QAAQ,SAAS;AAExC,SAAO,iBAAiB,WAAW,MAAM;AACzC,eAAa;AACX,YAAS,YAAY;AACrB,UAAO,oBAAoB,WAAW,MAAM;;IAE7C,EAAE,CAAC;AAEN,aAAY,aAAa;AACvB,MAAI,SAAS,MAAM,SAAS,EAC1B,WAAU,MAAM,GAAG,GAAG;GAExB;AAEF,QACE,oBAAC;EACC,GAAI;EACC;EACL,cAAY,UAAU;EACtB,WAAW,GACT,gEACA,MAAM,UACP;YAED,oBAAC;GACC,WAAW,GAAG,0DAA0D,CAAC,SAAS,SAAS;aAE3F,qBAAC,YAAY;IACX,OAAO,eACE;KACL;KACA;KACD,GACD,CAAC,OAAO,CACT;eAEA,OAAO,WAAW,KAAK,OAAO,EAE9B,OAAO,KAAK,SACX,oBAAC,sBAAwB,KAAK;KAAE;KAAM,eAAe,SAAS,KAAK;KAAE,CAAC,IAAvD,KAAK,GAA8D,CAClF;KACmB;IACnB;GACF;;AAIV,SAAgB,qBAAqB,EACnC,MACA,WACA,UACA,kBAAkB,SAAS,kBAC3B,GAAG,SAIF;CACD,MAAM,EAAE,QAAQ,UAAU,cAAc,eAAe;CACvD,MAAM,SAAS,KAAK,OAAO;AAE3B,KAAI,KAAK,SAAS,SAChB,cAAa,KAAK;KAElB,cACE;EACE,oBAAC;GAAI,WAAU;aACZ,KAAK,aAAa,KAAK,QAAM,MAC5B,qBAAC,uBACE,IAAI,KAAK,oBAAC,gBAAa,WAAU,0BAA0B,EAC3DC,WAFY,EAGJ,CACX;IACE;EAEL,KAAK,SAAS,UACb,oBAAC;GAAI,MAAK;GAAO,WAAU;IAAiD;EAE9E,qBAAC;GACC,WAAW,GACT,oBACA,KAAK,SAAS,UAAU,QACxB,KAAK,SAAS,UAAU,KAAK,SAAS,YAClC,gBACA,gCACL;cAEA,KAAK,SAAS,aACb,oBAAC,QAAK,WAAU,gDAAgD,EAEjE,KAAK,wBAAwB,OAAO,KAAK,sBAAsB,GAAG,KAAK;IACtE;KACH;AAIP,QACE,oBAAC;EACC,MAAK;EACL,KAAK,aACF,YAAsC;AACrC,OAAI,UAAU,QACZ,gBAAe,SAAS;IACtB,YAAY;IACZ,OAAO;IACP,UAAU,QAAQ;IACnB,CAAC;KAGN,CAAC,OAAO,CACT;EACD,iBAAe;EACf,WAAW,GACT,kEACA,UAAU,0CACV,UACD;EACD,qBAAqB,UAAU,KAAK,GAAG;EACvC,GAAI;EAEH;GACM;;AAIb,SAAgB,iBAAiB,OAA8B;CAC7D,MAAM,EAAE,cAAc,WAAW;AAEjC,QACE,oBAACC;EACC,GAAI;EACJ,WAAW,GACT,mCACA,aAAa,8BACb,MAAM,UACP;GACD;;AAUN,MAAM,eAAe,IACnB,gGACA,EACE,UAAU,EACR,QAAQ,EACN,MAAM,0CACP,EACF,EACF,CACF;AAED,SAAgB,SAAS,EAAE,KAAK,aAAa,aAAa,OAAO,GAAG,SAAwB;AAC1F,QACE,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,qCAAqC,MAAM,UAAU;YACjF,oBAAC,gBAAgB;GACf,OAAO,eACE;IACL,OAAO;IACP,eAAe;IACf;IACD,GACD;IAAC;IAAY;IAAa;IAAI,CAC/B;aAEA,MAAM;IACkB;GACvB;;AAIV,SAAgB,aAAa,EAC3B,OACA,WACA,GAAG,SAGF;CACD,MAAM,EAAE,eAAe,OAAO,eAAe,eAAe,aAAa;CACzE,MAAM,WAAW,UAAU;AAE3B,QACE,oBAAC;EACC,MAAK;EACL,eAAa;EACb,WAAW,GAAG,aAAa;GAAE,QAAQ;GAAU;GAAW,CAAC,CAAC;EAC5D,eAAe;AACb,iBAAc,YAAY,aAAa,SAAY,MAAM;;EAE3D,UAAU;EACV,GAAI;YAEH,MAAM;GACA;;AAIb,SAAS,iBAAiB,YAAqD;AAC7E,QAAO,WAAW,KAAK,MAAM,MAAM;AACjC,MAAI,KAAK,QAAQ,UACf,QACE,oBAAC;GAAa,WAAU;aACrB,KAAK;KADG,EAEJ;AAIX,SAAO,oBAAC,sBAAkB,KAAK,WAAT,EAA4B;GAClD;;AAGJ,SAAgB,YAAY;CAC1B,MAAM,MAAM,IAAI,QAAQ;AACxB,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,2BAA2B;AACrD,QAAO;;AAGT,SAAgB,cAAc;CAC5B,MAAM,MAAM,IAAI,gBAAgB;AAChC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,uBAAuB;AACjD,QAAO;;AAGT,SAAgB,gBAAgB;CAC9B,MAAM,MAAM,IAAI,YAAY;AAC5B,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,+BAA+B;AACzD,QAAO"}
1
+ {"version":3,"file":"search.js","names":["SearchIcon"],"sources":["../../../src/components/dialog/search.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronRight, Hash, Search as SearchIcon } from 'lucide-react';\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n type ReactNode,\n use,\n useCallback,\n useEffect,\n useEffectEvent,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { I18nLabel, useI18n } from '@/contexts/i18n';\nimport { cn } from '@/utils/cn';\nimport { Dialog } from '@base-ui/react/dialog';\nimport type { HighlightedText, ReactSortedResult as BaseResultType } from 'fumadocs-core/search';\nimport { cva } from 'class-variance-authority';\nimport { useRouter } from 'fumadocs-core/framework';\nimport type { SharedProps } from '@/contexts/search';\nimport { useOnChange } from 'fumadocs-core/utils/use-on-change';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { buttonVariants } from '@/components/ui/button';\n\nexport type SearchItemType =\n | (BaseResultType & {\n external?: boolean;\n })\n | {\n id: string;\n type: 'action';\n node: ReactNode;\n onSelect: () => void;\n };\n\n// needed for backward compatible since some previous guides referenced it\nexport type { SharedProps };\n\nexport interface SearchDialogProps extends SharedProps {\n search: string;\n onSearchChange: (v: string) => void;\n onSelect?: (item: SearchItemType) => void;\n isLoading?: boolean;\n\n children: ReactNode;\n}\n\nconst Context = createContext<{\n open: boolean;\n onOpenChange: (open: boolean) => void;\n search: string;\n onSearchChange: (v: string) => void;\n onSelect: (item: SearchItemType) => void;\n isLoading: boolean;\n} | null>(null);\n\nconst ListContext = createContext<{\n active: string | null;\n setActive: (v: string | null) => void;\n} | null>(null);\n\nconst TagsListContext = createContext<{\n value?: string;\n onValueChange: (value: string | undefined) => void;\n allowClear: boolean;\n} | null>(null);\n\nexport function SearchDialog({\n open,\n onOpenChange,\n search,\n onSearchChange,\n isLoading = false,\n onSelect: onSelectProp,\n children,\n}: SearchDialogProps) {\n const router = useRouter();\n const onSelect = useEffectEvent((item: SearchItemType) => {\n if (item.type === 'action') {\n item.onSelect();\n } else if (item.external) {\n window.open(item.url, '_blank')?.focus();\n } else {\n router.push(item.url);\n }\n\n onOpenChange(false);\n onSelectProp?.(item);\n });\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Context.Provider\n value={useMemo(\n () => ({\n open,\n onOpenChange,\n search,\n onSearchChange,\n // eslint-disable-next-line react-hooks/rules-of-hooks -- used in child components\n onSelect,\n isLoading,\n }),\n [isLoading, onOpenChange, onSearchChange, open, search],\n )}\n >\n {children}\n </Context.Provider>\n </Dialog.Root>\n );\n}\n\nexport function SearchDialogHeader(props: ComponentProps<'div'>) {\n return <div {...props} className={cn('flex flex-row items-center gap-2 p-3', props.className)} />;\n}\n\nexport function SearchDialogInput(props: ComponentProps<'input'>) {\n const { text } = useI18n();\n const { search, onSearchChange } = useSearch();\n\n return (\n <input\n {...props}\n value={search}\n onChange={(e) => onSearchChange(e.target.value)}\n placeholder={text.search}\n className=\"w-0 flex-1 bg-transparent text-lg placeholder:text-fd-muted-foreground focus-visible:outline-none\"\n />\n );\n}\n\nexport function SearchDialogClose({\n children = 'ESC',\n className,\n ...props\n}: ComponentProps<'button'>) {\n const { onOpenChange } = useSearch();\n\n return (\n <button\n type=\"button\"\n onClick={() => onOpenChange(false)}\n className={cn(\n buttonVariants({\n color: 'outline',\n size: 'sm',\n className: 'font-mono text-fd-muted-foreground',\n }),\n className,\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function SearchDialogFooter(props: ComponentProps<'div'>) {\n return <div {...props} className={cn('bg-fd-secondary/50 p-3 empty:hidden', props.className)} />;\n}\n\nexport function SearchDialogOverlay({\n className,\n ...props\n}: ComponentProps<typeof Dialog.Backdrop>) {\n return (\n <Dialog.Backdrop\n {...props}\n className={(s) =>\n cn(\n 'fixed inset-0 z-50 backdrop-blur-xs bg-fd-overlay data-[open]:animate-fd-fade-in data-[closed]:animate-fd-fade-out',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n );\n}\n\nexport function SearchDialogContent({\n children,\n className,\n ...props\n}: ComponentProps<typeof Dialog.Popup>) {\n const { text } = useI18n();\n\n return (\n <Dialog.Portal>\n <Dialog.Popup\n aria-describedby={undefined}\n {...props}\n className={(s) =>\n cn(\n 'fixed left-1/2 top-4 md:top-[calc(50%-250px)] z-50 w-[calc(100%-1rem)] max-w-screen-sm -translate-x-1/2 rounded-xl border bg-fd-popover text-fd-popover-foreground shadow-2xl shadow-black/50 overflow-hidden data-[closed]:animate-fd-dialog-out data-[open]:animate-fd-dialog-in',\n '*:border-b *:has-[+:last-child[data-empty=true]]:border-b-0 *:data-[empty=true]:border-b-0 *:last:border-b-0',\n typeof className === 'function' ? className(s) : className,\n )\n }\n >\n <Dialog.Title className=\"hidden\">{text.search}</Dialog.Title>\n {children}\n </Dialog.Popup>\n </Dialog.Portal>\n );\n}\n\nexport function SearchDialogList({\n items = null,\n Empty = () => (\n <div className=\"py-12 text-center text-sm text-fd-muted-foreground\">\n <I18nLabel label=\"searchNoResult\" />\n </div>\n ),\n Item = (props) => <SearchDialogListItem {...props} />,\n ...props\n}: Omit<ComponentProps<'div'>, 'children'> & {\n items: SearchItemType[] | null | undefined;\n /**\n * Renderer for empty list UI\n */\n Empty?: () => ReactNode;\n /**\n * Renderer for items\n */\n Item?: (props: { item: SearchItemType; onClick: () => void }) => ReactNode;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const { onSelect } = useSearch();\n const [active, setActive] = useState<string | null>(() =>\n items && items.length > 0 ? items[0].id : null,\n );\n\n const onKey = useEffectEvent((e: KeyboardEvent) => {\n if (!items || e.isComposing) return;\n\n if (e.key === 'ArrowDown' || e.key == 'ArrowUp') {\n let idx = items.findIndex((item) => item.id === active);\n if (idx === -1) idx = 0;\n else if (e.key === 'ArrowDown') idx++;\n else idx--;\n\n setActive(items.at(idx % items.length)?.id ?? null);\n e.preventDefault();\n }\n\n if (e.key === 'Enter') {\n const selected = items.find((item) => item.id === active);\n\n if (selected) onSelect(selected);\n e.preventDefault();\n }\n });\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const observer = new ResizeObserver(() => {\n const viewport = element.firstElementChild!;\n\n element.style.setProperty('--fd-animated-height', `${viewport.clientHeight}px`);\n });\n\n const viewport = element.firstElementChild;\n if (viewport) observer.observe(viewport);\n\n window.addEventListener('keydown', onKey);\n return () => {\n observer.disconnect();\n window.removeEventListener('keydown', onKey);\n };\n }, []);\n\n useOnChange(items, () => {\n if (items && items.length > 0) {\n setActive(items[0].id);\n }\n });\n\n return (\n <div\n {...props}\n ref={ref}\n data-empty={items === null}\n className={cn(\n 'overflow-hidden h-(--fd-animated-height) transition-[height]',\n props.className,\n )}\n >\n <div\n className={cn('w-full flex flex-col overflow-y-auto max-h-[460px] p-1', !items && 'hidden')}\n >\n <ListContext.Provider\n value={useMemo(\n () => ({\n active,\n setActive,\n }),\n [active],\n )}\n >\n {items?.length === 0 && Empty()}\n\n {items?.map((item) => (\n <Fragment key={item.id}>{Item({ item, onClick: () => onSelect(item) })}</Fragment>\n ))}\n </ListContext.Provider>\n </div>\n </div>\n );\n}\n\nexport function SearchDialogListItem({\n item,\n className,\n children,\n renderHighlights: render = renderHighlights,\n ...props\n}: ComponentProps<'button'> & {\n renderHighlights?: typeof renderHighlights;\n item: SearchItemType;\n}) {\n const { active: activeId, setActive } = useSearchList();\n const active = item.id === activeId;\n\n if (item.type === 'action') {\n children ??= item.node;\n } else {\n children ??= (\n <>\n <div className=\"inline-flex items-center text-fd-muted-foreground text-xs empty:hidden\">\n {item.breadcrumbs?.map((item, i) => (\n <Fragment key={i}>\n {i > 0 && <ChevronRight className=\"size-4 rtl:rotate-180\" />}\n {item}\n </Fragment>\n ))}\n </div>\n\n {item.type !== 'page' && (\n <div role=\"none\" className=\"absolute start-3 inset-y-0 w-px bg-fd-border\" />\n )}\n <p\n className={cn(\n 'min-w-0 truncate',\n item.type !== 'page' && 'ps-4',\n item.type === 'page' || item.type === 'heading'\n ? 'font-medium'\n : 'text-fd-popover-foreground/80',\n )}\n >\n {item.type === 'heading' && (\n <Hash className=\"inline me-1 size-4 text-fd-muted-foreground\" />\n )}\n {item.contentWithHighlights ? render(item.contentWithHighlights) : item.content}\n </p>\n </>\n );\n }\n\n return (\n <button\n type=\"button\"\n ref={useCallback(\n (element: HTMLButtonElement | null) => {\n if (active && element) {\n scrollIntoView(element, {\n scrollMode: 'if-needed',\n block: 'nearest',\n boundary: element.parentElement,\n });\n }\n },\n [active],\n )}\n aria-selected={active}\n className={cn(\n 'relative select-none px-2.5 py-2 text-start text-sm rounded-lg',\n active && 'bg-fd-accent text-fd-accent-foreground',\n className,\n )}\n onPointerMove={() => setActive(item.id)}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function SearchDialogIcon(props: ComponentProps<'svg'>) {\n const { isLoading } = useSearch();\n\n return (\n <SearchIcon\n {...props}\n className={cn(\n 'size-5 text-fd-muted-foreground',\n isLoading && 'animate-pulse duration-400',\n props.className,\n )}\n />\n );\n}\n\nexport interface TagsListProps extends ComponentProps<'div'> {\n tag?: string;\n onTagChange: (tag: string | undefined) => void;\n allowClear?: boolean;\n}\n\nconst itemVariants = cva(\n 'rounded-md border px-2 py-0.5 text-xs font-medium text-fd-muted-foreground transition-colors',\n {\n variants: {\n active: {\n true: 'bg-fd-accent text-fd-accent-foreground',\n },\n },\n },\n);\n\nexport function TagsList({ tag, onTagChange, allowClear = false, ...props }: TagsListProps) {\n return (\n <div {...props} className={cn('flex items-center gap-1 flex-wrap', props.className)}>\n <TagsListContext.Provider\n value={useMemo(\n () => ({\n value: tag,\n onValueChange: onTagChange,\n allowClear,\n }),\n [allowClear, onTagChange, tag],\n )}\n >\n {props.children}\n </TagsListContext.Provider>\n </div>\n );\n}\n\nexport function TagsListItem({\n value,\n className,\n ...props\n}: ComponentProps<'button'> & {\n value: string;\n}) {\n const { onValueChange, value: selectedValue, allowClear } = useTagsList();\n const selected = value === selectedValue;\n\n return (\n <button\n type=\"button\"\n data-active={selected}\n className={cn(itemVariants({ active: selected, className }))}\n onClick={() => {\n onValueChange(selected && allowClear ? undefined : value);\n }}\n tabIndex={-1}\n {...props}\n >\n {props.children}\n </button>\n );\n}\n\nfunction renderHighlights(highlights: HighlightedText<ReactNode>[]): ReactNode {\n return highlights.map((node, i) => {\n if (node.styles?.highlight) {\n return (\n <span key={i} className=\"text-fd-primary underline\">\n {node.content}\n </span>\n );\n }\n\n return <Fragment key={i}>{node.content}</Fragment>;\n });\n}\n\nexport function useSearch() {\n const ctx = use(Context);\n if (!ctx) throw new Error('Missing <SearchDialog />');\n return ctx;\n}\n\nexport function useTagsList() {\n const ctx = use(TagsListContext);\n if (!ctx) throw new Error('Missing <TagsList />');\n return ctx;\n}\n\nexport function useSearchList() {\n const ctx = use(ListContext);\n if (!ctx) throw new Error('Missing <SearchDialogList />');\n return ctx;\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { CodeBlockProps } from "./codeblock.js";
2
- import * as react_jsx_runtime158 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import { UseShikiOptions } from "fumadocs-core/highlight/core/client";
4
4
 
5
5
  //#region src/components/dynamic-codeblock.core.d.ts
@@ -27,7 +27,7 @@ declare function DynamicCodeBlock({
27
27
  codeblock,
28
28
  options,
29
29
  wrapInSuspense
30
- }: DynamicCodeblockProps): react_jsx_runtime158.JSX.Element;
30
+ }: DynamicCodeblockProps): react_jsx_runtime0.JSX.Element;
31
31
  //#endregion
32
32
  export { DynamicCodeBlock, DynamicCodeblockProps };
33
33
  //# sourceMappingURL=dynamic-codeblock.core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-codeblock.core.d.ts","names":[],"sources":["../../src/components/dynamic-codeblock.core.tsx"],"sourcesContent":[],"mappings":";;;;;UAciB,qBAAA;;;EAAA;;;;;EAkBZ,SAAA,CAAA,EAVS,cAUO;EAAc;;;;;EAAuC,cAAA,CAAA,EAAA,OAAA;EAkB1D,OAAA,CAAA,EArBJ,gBAqBoB,CArBH,eAqBG,EAAA,MAAA,CAAA;;KAlB3B,gBAoBH,CAAA,CAAA,EAAA,UApBiC,WAoBjC,CAAA,GApBgD,CAoBhD,SAAA,OAAA,GApBoE,IAoBpE,CApByE,CAoBzE,EApB4E,CAoB5E,CAAA,GAAA,KAAA;AACA,iBAHc,gBAAA,CAGd;EAAA,IAAA;EAAA,IAAA;EAAA,SAAA;EAAA,OAAA;EAAA;AAAA,CAAA,EAGC,qBAHD,CAAA,EAGsB,oBAAA,CAAA,GAAA,CAAA,OAHtB"}
1
+ {"version":3,"file":"dynamic-codeblock.core.d.ts","names":[],"sources":["../../src/components/dynamic-codeblock.core.tsx"],"mappings":";;;;;UAciB,qBAAA;EACf,IAAA;EACA,IAAA;EAFe;;;;;EAQf,SAAA,GAAY,cAAA;EAOc;;;;;EAD1B,cAAA;EACA,OAAA,GAAU,gBAAA,CAAiB,eAAA;AAAA;AAAA,KAGxB,gBAAA,cAA8B,WAAA,IAAe,CAAA,mBAAoB,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA,iBAkB9D,gBAAA,CAAA;EACd,IAAA;EACA,IAAA;EACA,SAAA;EACA,OAAA;EACA;AAAA,GACC,qBAAA,GAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -47,8 +47,8 @@ function DynamicCodeBlock({ lang, code, codeblock, options, wrapInSuspense = tru
47
47
  return children;
48
48
  }
49
49
  function Placeholder({ code, components = {} }) {
50
- const { pre: Pre$1 = "pre", code: Code = "code" } = components;
51
- return /* @__PURE__ */ jsx(Pre$1, { children: /* @__PURE__ */ jsx(Code, { children: code.split("\n").map((line, i) => /* @__PURE__ */ jsx("span", {
50
+ const { pre: Pre = "pre", code: Code = "code" } = components;
51
+ return /* @__PURE__ */ jsx(Pre, { children: /* @__PURE__ */ jsx(Code, { children: code.split("\n").map((line, i) => /* @__PURE__ */ jsx("span", {
52
52
  className: "line",
53
53
  children: line
54
54
  }, i)) }) });
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-codeblock.core.js","names":["Pre"],"sources":["../../src/components/dynamic-codeblock.core.tsx"],"sourcesContent":["'use client';\nimport { CodeBlock, type CodeBlockProps, Pre } from '@/components/codeblock';\nimport { useShiki, type UseShikiOptions } from 'fumadocs-core/highlight/core/client';\nimport { cn } from '@/utils/cn';\nimport {\n type ComponentProps,\n createContext,\n type FC,\n Suspense,\n use,\n useDeferredValue,\n useId,\n} from 'react';\n\nexport interface DynamicCodeblockProps {\n lang: string;\n code: string;\n /**\n * Extra props for the underlying `<CodeBlock />` component.\n *\n * Ignored if you defined your own `pre` component in `options.components`.\n */\n codeblock?: CodeBlockProps;\n /**\n * Wrap in React `<Suspense />` and provide a fallback.\n *\n * @defaultValue true\n */\n wrapInSuspense?: boolean;\n options?: DistributiveOmit<UseShikiOptions, 'lang'>;\n}\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\nconst PropsContext = createContext<CodeBlockProps | undefined>(undefined);\n\nfunction DefaultPre(props: ComponentProps<'pre'>) {\n const extraProps = use(PropsContext);\n\n return (\n <CodeBlock\n {...props}\n {...extraProps}\n className={cn('my-0', props.className, extraProps?.className)}\n >\n <Pre>{props.children}</Pre>\n </CodeBlock>\n );\n}\n\nexport function DynamicCodeBlock({\n lang,\n code,\n codeblock,\n options,\n wrapInSuspense = true,\n}: DynamicCodeblockProps) {\n const id = useId();\n const shikiOptions: UseShikiOptions = {\n lang,\n ...options,\n components: {\n pre: DefaultPre,\n ...options?.components,\n },\n };\n\n const children = (\n <PropsContext value={codeblock}>\n <Internal id={id} {...useDeferredValue({ code, options: shikiOptions })} />\n </PropsContext>\n );\n\n if (wrapInSuspense)\n return (\n <Suspense fallback={<Placeholder code={code} components={shikiOptions.components} />}>\n {children}\n </Suspense>\n );\n\n return children;\n}\n\nfunction Placeholder({\n code,\n components = {},\n}: {\n code: string;\n components: UseShikiOptions['components'];\n}) {\n const { pre: Pre = 'pre', code: Code = 'code' } = components as Record<string, FC>;\n\n return (\n <Pre>\n <Code>\n {code.split('\\n').map((line, i) => (\n <span key={i} className=\"line\">\n {line}\n </span>\n ))}\n </Code>\n </Pre>\n );\n}\n\nfunction Internal({ id, code, options }: { id: string; code: string; options: UseShikiOptions }) {\n return useShiki(code, options, [id, options.lang, code]);\n}\n"],"mappings":";;;;;;;;;AAkCA,MAAM,eAAe,cAA0C,OAAU;AAEzE,SAAS,WAAW,OAA8B;CAChD,MAAM,aAAa,IAAI,aAAa;AAEpC,QACE,oBAAC;EACC,GAAI;EACJ,GAAI;EACJ,WAAW,GAAG,QAAQ,MAAM,WAAW,YAAY,UAAU;YAE7D,oBAAC,iBAAK,MAAM,WAAe;GACjB;;AAIhB,SAAgB,iBAAiB,EAC/B,MACA,MACA,WACA,SACA,iBAAiB,QACO;CACxB,MAAM,KAAK,OAAO;CAClB,MAAM,eAAgC;EACpC;EACA,GAAG;EACH,YAAY;GACV,KAAK;GACL,GAAG,SAAS;GACb;EACF;CAED,MAAM,WACJ,oBAAC;EAAa,OAAO;YACnB,oBAAC;GAAa;GAAI,GAAI,iBAAiB;IAAE;IAAM,SAAS;IAAc,CAAC;IAAI;GAC9D;AAGjB,KAAI,eACF,QACE,oBAAC;EAAS,UAAU,oBAAC;GAAkB;GAAM,YAAY,aAAa;IAAc;EACjF;GACQ;AAGf,QAAO;;AAGT,SAAS,YAAY,EACnB,MACA,aAAa,EAAE,IAId;CACD,MAAM,EAAE,KAAKA,QAAM,OAAO,MAAM,OAAO,WAAW;AAElD,QACE,oBAACA,mBACC,oBAAC,kBACE,KAAK,MAAM,KAAK,CAAC,KAAK,MAAM,MAC3B,oBAAC;EAAa,WAAU;YACrB;IADQ,EAEJ,CACP,GACG,GACH;;AAIV,SAAS,SAAS,EAAE,IAAI,MAAM,WAAmE;AAC/F,QAAO,SAAS,MAAM,SAAS;EAAC;EAAI,QAAQ;EAAM;EAAK,CAAC"}
1
+ {"version":3,"file":"dynamic-codeblock.core.js","names":[],"sources":["../../src/components/dynamic-codeblock.core.tsx"],"sourcesContent":["'use client';\nimport { CodeBlock, type CodeBlockProps, Pre } from '@/components/codeblock';\nimport { useShiki, type UseShikiOptions } from 'fumadocs-core/highlight/core/client';\nimport { cn } from '@/utils/cn';\nimport {\n type ComponentProps,\n createContext,\n type FC,\n Suspense,\n use,\n useDeferredValue,\n useId,\n} from 'react';\n\nexport interface DynamicCodeblockProps {\n lang: string;\n code: string;\n /**\n * Extra props for the underlying `<CodeBlock />` component.\n *\n * Ignored if you defined your own `pre` component in `options.components`.\n */\n codeblock?: CodeBlockProps;\n /**\n * Wrap in React `<Suspense />` and provide a fallback.\n *\n * @defaultValue true\n */\n wrapInSuspense?: boolean;\n options?: DistributiveOmit<UseShikiOptions, 'lang'>;\n}\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\nconst PropsContext = createContext<CodeBlockProps | undefined>(undefined);\n\nfunction DefaultPre(props: ComponentProps<'pre'>) {\n const extraProps = use(PropsContext);\n\n return (\n <CodeBlock\n {...props}\n {...extraProps}\n className={cn('my-0', props.className, extraProps?.className)}\n >\n <Pre>{props.children}</Pre>\n </CodeBlock>\n );\n}\n\nexport function DynamicCodeBlock({\n lang,\n code,\n codeblock,\n options,\n wrapInSuspense = true,\n}: DynamicCodeblockProps) {\n const id = useId();\n const shikiOptions: UseShikiOptions = {\n lang,\n ...options,\n components: {\n pre: DefaultPre,\n ...options?.components,\n },\n };\n\n const children = (\n <PropsContext value={codeblock}>\n <Internal id={id} {...useDeferredValue({ code, options: shikiOptions })} />\n </PropsContext>\n );\n\n if (wrapInSuspense)\n return (\n <Suspense fallback={<Placeholder code={code} components={shikiOptions.components} />}>\n {children}\n </Suspense>\n );\n\n return children;\n}\n\nfunction Placeholder({\n code,\n components = {},\n}: {\n code: string;\n components: UseShikiOptions['components'];\n}) {\n const { pre: Pre = 'pre', code: Code = 'code' } = components as Record<string, FC>;\n\n return (\n <Pre>\n <Code>\n {code.split('\\n').map((line, i) => (\n <span key={i} className=\"line\">\n {line}\n </span>\n ))}\n </Code>\n </Pre>\n );\n}\n\nfunction Internal({ id, code, options }: { id: string; code: string; options: UseShikiOptions }) {\n return useShiki(code, options, [id, options.lang, code]);\n}\n"],"mappings":";;;;;;;;;AAkCA,MAAM,eAAe,cAA0C,OAAU;AAEzE,SAAS,WAAW,OAA8B;CAChD,MAAM,aAAa,IAAI,aAAa;AAEpC,QACE,oBAAC;EACC,GAAI;EACJ,GAAI;EACJ,WAAW,GAAG,QAAQ,MAAM,WAAW,YAAY,UAAU;YAE7D,oBAAC,iBAAK,MAAM,WAAe;GACjB;;AAIhB,SAAgB,iBAAiB,EAC/B,MACA,MACA,WACA,SACA,iBAAiB,QACO;CACxB,MAAM,KAAK,OAAO;CAClB,MAAM,eAAgC;EACpC;EACA,GAAG;EACH,YAAY;GACV,KAAK;GACL,GAAG,SAAS;GACb;EACF;CAED,MAAM,WACJ,oBAAC;EAAa,OAAO;YACnB,oBAAC;GAAa;GAAI,GAAI,iBAAiB;IAAE;IAAM,SAAS;IAAc,CAAC;IAAI;GAC9D;AAGjB,KAAI,eACF,QACE,oBAAC;EAAS,UAAU,oBAAC;GAAkB;GAAM,YAAY,aAAa;IAAc;EACjF;GACQ;AAGf,QAAO;;AAGT,SAAS,YAAY,EACnB,MACA,aAAa,EAAE,IAId;CACD,MAAM,EAAE,KAAK,MAAM,OAAO,MAAM,OAAO,WAAW;AAElD,QACE,oBAAC,iBACC,oBAAC,kBACE,KAAK,MAAM,KAAK,CAAC,KAAK,MAAM,MAC3B,oBAAC;EAAa,WAAU;YACrB;IADQ,EAEJ,CACP,GACG,GACH;;AAIV,SAAS,SAAS,EAAE,IAAI,MAAM,WAAmE;AAC/F,QAAO,SAAS,MAAM,SAAS;EAAC;EAAI,QAAQ;EAAM;EAAK,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { DynamicCodeblockProps } from "./dynamic-codeblock.core.js";
2
- import * as react_jsx_runtime92 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/dynamic-codeblock.d.ts
5
- declare function DynamicCodeBlock(props: DynamicCodeblockProps): react_jsx_runtime92.JSX.Element;
5
+ declare function DynamicCodeBlock(props: DynamicCodeblockProps): react_jsx_runtime0.JSX.Element;
6
6
  //#endregion
7
7
  export { DynamicCodeBlock, type DynamicCodeblockProps };
8
8
  //# sourceMappingURL=dynamic-codeblock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-codeblock.d.ts","names":[],"sources":["../../src/components/dynamic-codeblock.tsx"],"sourcesContent":[],"mappings":";;;;iBAKgB,gBAAA,QAAwB,wBAA0B,mBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"dynamic-codeblock.d.ts","names":[],"sources":["../../src/components/dynamic-codeblock.tsx"],"mappings":";;;;iBAKgB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","names":[],"sources":["../../src/components/files.tsx"],"sourcesContent":[],"mappings":";;;iBAYgB,KAAA;;;GAA+B,eAAe,kBAAkB,KAAA,CAAM;UAQrE,SAAA,SAAkB,eAAe;EARlC,IAAA,EAAA,MAAK;EAAG,IAAA,CAAA,EAUf,SAVe;;AAAuB,UAa9B,WAAA,SAAoB,cAbU,CAaK,cAbL,CAAA,CAAA;EAAiC,IAAM,EAAA,MAAA;EAAY,QAAA,CAAA,EAAA,OAAA;EAQjF;;;;;EAKA,WAAA,CAAA,EAAY,OAAA;AAa7B;AACE,iBADc,IAAA,CACd;EAAA,IAAA;EAAA,IAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAIC,SAJD,CAAA,EAIa,KAAA,CAAM,YAJnB;AACA,iBAYc,MAAA,CAZd;EAAA,IAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EAY8D,WAZ9D,CAAA,EAY4E,KAAA,CAAM,YAZlF"}
1
+ {"version":3,"file":"files.d.ts","names":[],"sources":["../../src/components/files.tsx"],"mappings":";;;iBAYgB,KAAA,CAAA;EAAQ,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,CAAe,cAAA,IAAkB,KAAA,CAAM,YAAA;AAAA,UAQrE,SAAA,SAAkB,cAAA,CAAe,cAAA;EAChD,IAAA;EACA,IAAA,GAAO,SAAA;AAAA;AAAA,UAGQ,WAAA,SAAoB,cAAA,CAAe,cAAA;EAClD,IAAA;EAEA,QAAA;EAhB8E;;;;;EAuB9E,WAAA;AAAA;AAAA,iBAGc,IAAA,CAAA;EACd,IAAA;EACA,IAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,SAAA,GAAY,KAAA,CAAM,YAAA;AAAA,iBASL,MAAA,CAAA;EAAS,IAAA;EAAM,WAAA;EAAA,GAAwB;AAAA,GAAS,WAAA,GAAc,KAAA,CAAM,YAAA"}
@@ -1,5 +1,5 @@
1
1
  import { AnchorHTMLAttributes } from "react";
2
- import * as react_jsx_runtime76 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/github-info.d.ts
5
5
  declare function GithubInfo({
@@ -13,7 +13,7 @@ declare function GithubInfo({
13
13
  repo: string;
14
14
  token?: string;
15
15
  baseUrl?: string;
16
- }): Promise<react_jsx_runtime76.JSX.Element>;
16
+ }): Promise<react_jsx_runtime0.JSX.Element>;
17
17
  //#endregion
18
18
  export { GithubInfo };
19
19
  //# sourceMappingURL=github-info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github-info.d.ts","names":[],"sources":["../../src/components/github-info.tsx"],"sourcesContent":[],"mappings":";;;;iBAwCsB,UAAA;;;;;;GAMnB,qBAAqB;;;EANF,KAAA,CAAA,EAAA,MAAU;EAC9B,OAAA,CAAA,EAAA,MAAA;CACA,CAAA,EASD,OATC,CASD,mBAAA,CAAA,GAAA,CAAA,OAAA,CATC"}
1
+ {"version":3,"file":"github-info.d.ts","names":[],"sources":["../../src/components/github-info.tsx"],"mappings":";;;;iBAwCsB,UAAA,CAAA;EACpB,IAAA;EACA,KAAA;EACA,KAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,oBAAA,CAAqB,iBAAA;EACtB,KAAA;EACA,IAAA;EACA,KAAA;EACA,OAAA;AAAA,IACD,OAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"heading.d.ts","names":[],"sources":["../../src/components/heading.tsx"],"sourcesContent":[],"mappings":";;;KAIK,KAAA;KACA,uBAAuB,SAAS,KAAK,yBAAyB;EAD9D,EAAA,CAAA,EAEE,CAFF;AAAK,CAAA;AACkB,iBAIZ,OAJY,CAAA,UAIM,KAJN,GAAA,IAAA,CAAA,CAAA;EAAA,EAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAQzB,YARyB,CAQZ,CARY,CAAA,CAAA,EAQP,KAAA,CAAM,YARC"}
1
+ {"version":3,"file":"heading.d.ts","names":[],"sources":["../../src/components/heading.tsx"],"mappings":";;;KAIK,KAAA;AAAA,KACA,YAAA,WAAuB,KAAA,IAAS,IAAA,CAAK,wBAAA,CAAyB,CAAA;EACjE,EAAA,GAAK,CAAA;AAAA;AAAA,iBAGS,OAAA,WAAkB,KAAA,QAAA,CAAA;EAChC,EAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,YAAA,CAAa,CAAA,IAAK,KAAA,CAAM,YAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ComponentProps } from "react";
2
2
  import { ImageProps } from "fumadocs-core/framework";
3
- import * as react_jsx_runtime100 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import { UncontrolledProps } from "react-medium-image-zoom";
5
5
 
6
6
  //#region src/components/image-zoom.d.ts
@@ -19,7 +19,7 @@ declare function ImageZoom({
19
19
  children,
20
20
  rmiz,
21
21
  ...props
22
- }: ImageZoomProps): react_jsx_runtime100.JSX.Element;
22
+ }: ImageZoomProps): react_jsx_runtime0.JSX.Element;
23
23
  //#endregion
24
24
  export { ImageZoom, ImageZoomProps };
25
25
  //# sourceMappingURL=image-zoom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-zoom.d.ts","names":[],"sources":["../../src/components/image-zoom.tsx"],"sourcesContent":[],"mappings":";;;;;;KAOY,cAAA,GAAiB;;AAA7B;;EAIgB,WAAA,CAAA,EAAA,cAAA,CAAA,KAAA,CAAA;EAKP;;AAeT;EAA4B,IAAA,CAAA,EAfnB,iBAemB;CAAa;AAAU,iBAAnC,SAAA,CAAmC;EAAA,WAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAAkB,cAAlB,CAAA,EAAgC,oBAAA,CAAA,GAAA,CAAA,OAAhC"}
1
+ {"version":3,"file":"image-zoom.d.ts","names":[],"sources":["../../src/components/image-zoom.tsx"],"mappings":";;;;;;KAOY,cAAA,GAAiB,UAAA;;AAA7B;;EAIE,WAAA,GAAc,cAAA;EAJa;;;EAS3B,IAAA,GAAO,iBAAA;AAAA;AAAA,iBAeO,SAAA,CAAA;EAAY,WAAA;EAAa,QAAA;EAAU,IAAA;EAAA,GAAS;AAAA,GAAS,cAAA,GAAc,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Collapsible } from "./ui/collapsible.js";
2
2
  import { ComponentProps } from "react";
3
- import * as react_jsx_runtime99 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import { TOCItemType } from "fumadocs-core/toc";
5
5
 
6
6
  //#region src/components/inline-toc.d.ts
@@ -11,7 +11,7 @@ declare function InlineTOC({
11
11
  items,
12
12
  className,
13
13
  ...props
14
- }: InlineTocProps): react_jsx_runtime99.JSX.Element;
14
+ }: InlineTocProps): react_jsx_runtime0.JSX.Element;
15
15
  //#endregion
16
16
  export { InlineTOC, InlineTocProps };
17
17
  //# sourceMappingURL=inline-toc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inline-toc.d.ts","names":[],"sources":["../../src/components/inline-toc.tsx"],"sourcesContent":[],"mappings":";;;;;;UAQiB,cAAA,SAAuB,sBAAsB;SACrD;;AADQ,iBAID,SAAA,CAJgB;EAAA,KAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAI0B,cAJ1B,CAAA,EAIwC,mBAAA,CAAA,GAAA,CAAA,OAJxC"}
1
+ {"version":3,"file":"inline-toc.d.ts","names":[],"sources":["../../src/components/inline-toc.tsx"],"mappings":";;;;;;UAQiB,cAAA,SAAuB,cAAA,QAAsB,WAAA;EAC5D,KAAA,EAAO,WAAA;AAAA;AAAA,iBAGO,SAAA,CAAA;EAAY,KAAA;EAAO,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,GAAc,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,8 +1,8 @@
1
1
  import { CollapsibleContentProps, CollapsibleTriggerProps } from "../ui/collapsible.js";
2
2
  import { ScrollAreaProps } from "../ui/scroll-area.js";
3
- import * as react21 from "react";
3
+ import * as react from "react";
4
4
  import { ComponentProps, PointerEvent, ReactNode, RefObject } from "react";
5
- import * as react_jsx_runtime115 from "react/jsx-runtime";
5
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  import { LinkProps } from "fumadocs-core/link";
7
7
 
8
8
  //#region src/components/sidebar/base.d.ts
@@ -37,12 +37,12 @@ interface SidebarProviderProps {
37
37
  children?: ReactNode;
38
38
  }
39
39
  type Mode = 'drawer' | 'full';
40
- declare const SidebarContext: react21.Context<SidebarContext | null>;
40
+ declare const SidebarContext: react.Context<SidebarContext | null>;
41
41
  declare function SidebarProvider({
42
42
  defaultOpenLevel,
43
43
  prefetch,
44
44
  children
45
- }: SidebarProviderProps): react_jsx_runtime115.JSX.Element;
45
+ }: SidebarProviderProps): react_jsx_runtime0.JSX.Element;
46
46
  declare function useSidebar(): SidebarContext;
47
47
  declare function useFolder(): {
48
48
  open: boolean;
@@ -62,24 +62,24 @@ declare function SidebarContent({
62
62
  onPointerLeave: (event: PointerEvent) => void;
63
63
  }) => ReactNode;
64
64
  }): ReactNode;
65
- declare function SidebarDrawerOverlay(props: ComponentProps<'div'>): react_jsx_runtime115.JSX.Element | undefined;
65
+ declare function SidebarDrawerOverlay(props: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element | undefined;
66
66
  declare function SidebarDrawerContent({
67
67
  className,
68
68
  children,
69
69
  ...props
70
- }: ComponentProps<'aside'>): react_jsx_runtime115.JSX.Element | undefined;
70
+ }: ComponentProps<'aside'>): react_jsx_runtime0.JSX.Element | undefined;
71
71
  declare function SidebarViewport({
72
72
  className,
73
73
  ...props
74
- }: ScrollAreaProps): react_jsx_runtime115.JSX.Element;
75
- declare function SidebarSeparator(props: ComponentProps<'p'>): react_jsx_runtime115.JSX.Element;
74
+ }: ScrollAreaProps): react_jsx_runtime0.JSX.Element;
75
+ declare function SidebarSeparator(props: ComponentProps<'p'>): react_jsx_runtime0.JSX.Element;
76
76
  declare function SidebarItem({
77
77
  icon,
78
78
  children,
79
79
  ...props
80
80
  }: LinkProps & {
81
81
  icon?: ReactNode;
82
- }): react_jsx_runtime115.JSX.Element;
82
+ }): react_jsx_runtime0.JSX.Element;
83
83
  declare function SidebarFolder({
84
84
  defaultOpen: defaultOpenProp,
85
85
  collapsible,
@@ -90,21 +90,21 @@ declare function SidebarFolder({
90
90
  active?: boolean;
91
91
  defaultOpen?: boolean;
92
92
  collapsible?: boolean;
93
- }): react_jsx_runtime115.JSX.Element;
93
+ }): react_jsx_runtime0.JSX.Element;
94
94
  declare function SidebarFolderTrigger({
95
95
  children,
96
96
  ...props
97
- }: CollapsibleTriggerProps): react_jsx_runtime115.JSX.Element;
97
+ }: CollapsibleTriggerProps): react_jsx_runtime0.JSX.Element;
98
98
  declare function SidebarFolderLink({
99
99
  children,
100
100
  ...props
101
- }: LinkProps): react_jsx_runtime115.JSX.Element;
102
- declare function SidebarFolderContent(props: CollapsibleContentProps): react_jsx_runtime115.JSX.Element;
101
+ }: LinkProps): react_jsx_runtime0.JSX.Element;
102
+ declare function SidebarFolderContent(props: CollapsibleContentProps): react_jsx_runtime0.JSX.Element;
103
103
  declare function SidebarTrigger({
104
104
  children,
105
105
  ...props
106
- }: ComponentProps<'button'>): react_jsx_runtime115.JSX.Element;
107
- declare function SidebarCollapseTrigger(props: ComponentProps<'button'>): react_jsx_runtime115.JSX.Element;
106
+ }: ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
107
+ declare function SidebarCollapseTrigger(props: ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
108
108
  /**
109
109
  * scroll to the element if `active` is true
110
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","names":[],"sources":["../../../src/components/sidebar/base.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","names":[],"sources":["../../../src/components/sidebar/base.tsx"],"mappings":";;;;;;;;;;;UA+BU,cAAA;EACR,IAAA;EACA,OAAA,EAAS,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA;EAC9B,SAAA;EACA,YAAA,EAAc,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA;;;;EAKnC,eAAA,EAAiB,SAAA;EACjB,gBAAA;EACA,QAAA;EACA,IAAA,EAAM,IAAA;AAAA;AAAA,UAGS,oBAAA;;;;;;;EAOf,gBAAA;;;;EAKA,QAAA;EAEA,QAAA,GAAW,SAAA;AAAA;AAAA,KAGR,IAAA;AAAA,cAEC,cAAA,EAAc,KAAA,CAAA,OAAA,CAAA,cAAA;AAAA,iBASJ,eAAA,CAAA;EACd,gBAAA;EACA,QAAA;EACA;AAAA,GACC,oBAAA,GAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAmCP,UAAA,CAAA,GAAc,cAAA;AAAA,iBAUd,SAAA,CAAA;;WAtDL,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA;;;;iBA0DhB,cAAA,CAAA;AAAA,iBAIA,cAAA,CAAA;EACd;AAAA;EAEA,QAAA,GAAW,KAAA;IACT,GAAA,EAAK,SAAA,CAAU,WAAA;IACf,SAAA;IACA,OAAA;IACA,cAAA,GAAiB,KAAA,EAAO,YAAA;IACxB,cAAA,GAAiB,KAAA,EAAO,YAAA;EAAA,MACpB,SAAA;AAAA,IACP,SAAA;AAAA,iBAyCe,oBAAA,CAAqB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAkBjD,oBAAA,CAAA;EAAuB,SAAA;EAAW,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,YAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAqB/E,eAAA,CAAA;EAAkB,SAAA;EAAA,GAAc;AAAA,GAAS,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAuBxD,gBAAA,CAAiB,KAAA,EAAO,cAAA,QAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgB3C,WAAA,CAAA;EACd,IAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,SAAA;EACD,IAAA,GAAO,SAAA;AAAA,IACR,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgBe,aAAA,CAAA;EACd,WAAA,EAAa,eAAA;EACb,WAAA;EACA,MAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA;EACD,MAAA;EACA,WAAA;EACA,WAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAsBe,oBAAA,CAAA;EAAuB,QAAA;EAAA,GAAa;AAAA,GAAS,uBAAA,GAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAkBpE,iBAAA,CAAA;EAAoB,QAAA;EAAA,GAAa;AAAA,GAAS,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAqCnD,oBAAA,CAAqB,KAAA,EAAO,uBAAA,GAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAInD,cAAA,CAAA;EAAiB,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAU/D,sBAAA,CAAuB,KAAA,EAAO,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;AAlUrE;iBAuVe,aAAA,CAAc,MAAA,WAAiB,GAAA,EAAK,SAAA,CAAU,WAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { __exportAll } from "../../_virtual/rolldown_runtime.js";
3
+ import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
4
4
  import { cn } from "../../utils/cn.js";
5
5
  import { isActive } from "../../utils/urls.js";
6
6
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../ui/collapsible.js";
@@ -1,7 +1,7 @@
1
1
  import { base_d_exports } from "./base.js";
2
2
  import { LinkItemType } from "../../utils/link-item.js";
3
3
  import { HTMLAttributes } from "react";
4
- import * as react_jsx_runtime142 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
5
 
6
6
  //#region src/components/sidebar/link-item.d.ts
7
7
  type InternalComponents = Pick<typeof base_d_exports, 'SidebarFolder' | 'SidebarFolderLink' | 'SidebarFolderContent' | 'SidebarFolderTrigger' | 'SidebarItem'>;
@@ -18,7 +18,7 @@ declare function createLinkItemRenderer({
18
18
  item: Exclude<LinkItemType, {
19
19
  type: "icon";
20
20
  }>;
21
- }) => react_jsx_runtime142.JSX.Element;
21
+ }) => react_jsx_runtime0.JSX.Element;
22
22
  //#endregion
23
23
  export { createLinkItemRenderer };
24
24
  //# sourceMappingURL=link-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-item.d.ts","names":[],"sources":["../../../src/components/sidebar/link-item.tsx"],"sourcesContent":[],"mappings":";;;;;;KAIK,kBAAA,GAAqB,YACjB;iBAQO,sBAAA;;;;;;GAMb;;;GAOE,eAAe;QACV,QAAQ;IAvBb,IAAA,EAAA,MAAA;EASW,CAAA,CAAA;CACd,EAAA,GAcC,oBAAA,CAAA,GAAA,CAAA,OAdD"}
1
+ {"version":3,"file":"link-item.d.ts","names":[],"sources":["../../../src/components/sidebar/link-item.tsx"],"mappings":";;;;;;KAIK,kBAAA,GAAqB,IAAA,QACjB,cAAA;AAAA,iBAQO,sBAAA,CAAA;EACd,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,oBAAA;EACA;AAAA,GACC,kBAAA;EAI+B,IAAA;EAAA,GAAA;AAAA,GAG7B,cAAA,CAAe,WAAA;EAChB,IAAA,EAAM,OAAA,CAAQ,YAAA;IAAgB,IAAA;EAAA;AAAA,MAC/B,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import { base_d_exports } from "./base.js";
2
2
  import { FC, ReactNode } from "react";
3
- import * as react_jsx_runtime145 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import * as PageTree from "fumadocs-core/page-tree";
5
5
 
6
6
  //#region src/components/sidebar/page-tree.d.ts
@@ -24,7 +24,7 @@ declare function createPageTreeRenderer({
24
24
  SidebarFolderTrigger,
25
25
  SidebarSeparator,
26
26
  SidebarItem
27
- }: InternalComponents): (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime145.JSX.Element;
27
+ }: InternalComponents): (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime0.JSX.Element;
28
28
  //#endregion
29
29
  export { SidebarPageTreeComponents, createPageTreeRenderer };
30
30
  //# sourceMappingURL=page-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":[],"mappings":";;;;;;UAKiB,yBAAA;QACT;UAAW,QAAA,CAAS;EADX,CAAA,CAAA;EACE,MAAS,EAClB,EADkB,CAAA;IAApB,IAAA,EACa,QAAA,CAAS,MADtB;IACa,QAAS,EAAkB,SAAlB;EAAkB,CAAA,CAAA;EAAtC,SAAA,EACG,EADH,CAAA;IACc,IAAS,EAAT,QAAA,CAAS,SAAA;EAApB,CAAA,CAAA;;AACZ,KAEI,kBAAA,GAAqB,IAAH,CAAA,OACd,cAAA,EAAA,kBADqB,GAAA,eAAA,GAAA,mBAAA,GAAA,sBAAA,GAAA,sBAAA,GAAA,aAAA,CAAA;AAUd,iBAAA,sBAAA,CAAsB;EAAA,aAAA;EAAA,oBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EAOnC,kBAPmC,CAAA,EAAA,CAAA,UAAA,EAoCQ,OApCR,CAoCgB,yBApChB,CAAA,EAAA,GAoC0C,oBAAA,CAAA,GAAA,CAAA,OApC1C"}
1
+ {"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"mappings":";;;;;;UAKiB,yBAAA;EACf,IAAA,EAAM,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,IAAA;EAAA;EAC1B,MAAA,EAAQ,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,MAAA;IAAQ,QAAA,EAAU,SAAA;EAAA;EAC9C,SAAA,EAAW,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,SAAA;EAAA;AAAA;AAAA,KAG5B,kBAAA,GAAqB,IAAA,QACjB,cAAA;AAAA,iBASO,sBAAA,CAAA;EACd,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;EACA;AAAA,GACC,kBAAA,IA6B+B,UAAA,EAAY,OAAA,CAAQ,yBAAA,MAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import { SidebarTab } from "./index.js";
2
2
  import { ComponentProps, ReactNode } from "react";
3
- import * as react_jsx_runtime77 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/sidebar/tabs/dropdown.d.ts
6
6
  interface SidebarTabWithProps extends SidebarTab {
@@ -13,7 +13,7 @@ declare function SidebarTabsDropdown({
13
13
  }: {
14
14
  placeholder?: ReactNode;
15
15
  options: SidebarTabWithProps[];
16
- } & ComponentProps<'button'>): react_jsx_runtime77.JSX.Element;
16
+ } & ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
17
17
  declare function isTabActive(tab: SidebarTab, pathname: string): boolean;
18
18
  //#endregion
19
19
  export { SidebarTabWithProps, SidebarTabsDropdown, isTabActive };
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":[],"mappings":";;;;;UAWiB,mBAAA,SAA4B;UACnC;;AADO,iBAID,mBAAA,CAHN;EAAA,OAAA;EADmC,WAAU;EAAA,GAAA;AAMrD,CANqD,EAAA;EAIvC,WAAA,CAAA,EAKA,SALmB;EACjC,OAAA,EAKS,mBALT,EAAA;CACA,GAKE,cALF,CAAA,QAAA,CAAA,CAAA,EAK0B,mBAAA,CAAA,GAAA,CAAA,OAL1B;AAGc,iBAkFA,WAAA,CAlFA,GAAA,EAkFiB,UAlFjB,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"mappings":";;;;;UAWiB,mBAAA,SAA4B,UAAA;EAC3C,KAAA,GAAQ,cAAA;AAAA;AAAA,iBAGM,mBAAA,CAAA;EACd,OAAA;EACA,WAAA;EAAA,GACG;AAAA;EAEH,WAAA,GAAc,SAAA;EACd,OAAA,EAAS,mBAAA;AAAA,IACP,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgFZ,WAAA,CAAY,GAAA,EAAK,UAAA,EAAY,QAAA"}
@@ -16,7 +16,7 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
16
16
  const { closeOnRedirect } = useSidebar();
17
17
  const pathname = usePathname();
18
18
  const selected = useMemo(() => {
19
- return options.findLast((item$1) => isTabActive(item$1, pathname));
19
+ return options.findLast((item) => isTabActive(item, pathname));
20
20
  }, [options, pathname]);
21
21
  const onClick = () => {
22
22
  closeOnRedirect.current = false;
@@ -41,29 +41,29 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
41
41
  children: [item, /* @__PURE__ */ jsx(ChevronsUpDown, { className: "shrink-0 ms-auto size-4 text-fd-muted-foreground" })]
42
42
  }), /* @__PURE__ */ jsx(PopoverContent, {
43
43
  className: "flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container",
44
- children: options.map((item$1) => {
45
- const isActive$1 = selected && item$1.url === selected.url;
46
- if (!isActive$1 && item$1.unlisted) return;
44
+ children: options.map((item) => {
45
+ const isActive = selected && item.url === selected.url;
46
+ if (!isActive && item.unlisted) return;
47
47
  return /* @__PURE__ */ jsxs(Link, {
48
- href: item$1.url,
48
+ href: item.url,
49
49
  onClick,
50
- ...item$1.props,
51
- className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item$1.props?.className),
50
+ ...item.props,
51
+ className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item.props?.className),
52
52
  children: [
53
53
  /* @__PURE__ */ jsx("div", {
54
54
  className: "shrink-0 size-9 md:mb-auto md:size-5 empty:hidden",
55
- children: item$1.icon
55
+ children: item.icon
56
56
  }),
57
57
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
58
58
  className: "text-sm font-medium leading-none",
59
- children: item$1.title
59
+ children: item.title
60
60
  }), /* @__PURE__ */ jsx("p", {
61
61
  className: "text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden",
62
- children: item$1.description
62
+ children: item.description
63
63
  })] }),
64
- /* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive$1 && "invisible") })
64
+ /* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive && "invisible") })
65
65
  ]
66
- }, item$1.url);
66
+ }, item.url);
67
67
  })
68
68
  })]
69
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","names":["item","isActive"],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":["'use client';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { type ComponentProps, type ReactNode, useMemo, useState } from 'react';\nimport Link from 'fumadocs-core/link';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { cn } from '@/utils/cn';\nimport { normalize, isActive } from '@/utils/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '.';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\n ...props\n}: {\n placeholder?: ReactNode;\n options: SidebarTabWithProps[];\n} & ComponentProps<'button'>) {\n const [open, setOpen] = useState(false);\n const { closeOnRedirect } = useSidebar();\n const pathname = usePathname();\n\n const selected = useMemo(() => {\n return options.findLast((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-9 shrink-0 empty:hidden md:size-5\">{selected.icon}</div>\n <div>\n <p className=\"text-sm font-medium\">{selected.title}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden md:hidden\">\n {selected.description}\n </p>\n </div>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n {...props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-open:bg-fd-accent data-open:text-fd-accent-foreground',\n props.className,\n )}\n >\n {item}\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent className=\"flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container\">\n {options.map((item) => {\n const isActive = selected && item.url === selected.url;\n if (!isActive && item.unlisted) return;\n\n return (\n <Link\n key={item.url}\n href={item.url}\n onClick={onClick}\n {...item.props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground',\n item.props?.className,\n )}\n >\n <div className=\"shrink-0 size-9 md:mb-auto md:size-5 empty:hidden\">{item.icon}</div>\n <div>\n <p className=\"text-sm font-medium leading-none\">{item.title}</p>\n <p className=\"text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden\">\n {item.description}\n </p>\n </div>\n\n <Check\n className={cn(\n 'shrink-0 ms-auto size-3.5 text-fd-primary',\n !isActive && 'invisible',\n )}\n />\n </Link>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function isTabActive(tab: SidebarTab, pathname: string) {\n if (tab.urls) return tab.urls.has(normalize(pathname));\n\n return isActive(tab.url, pathname, true);\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,SACA,aACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAE9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,WAAS,YAAYA,QAAM,SAAS,CAAC;IAC7D,CAAC,SAAS,SAAS,CAAC;CAEvB,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,8CACE,oBAAC;EAAI,WAAU;YAA0C,SAAS;GAAW,EAC7E,qBAAC,oBACC,oBAAC;EAAE,WAAU;YAAuB,SAAS;GAAU,EACvD,oBAAC;EAAE,WAAU;YACV,SAAS;GACR,IACA,IACL,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,GAAI;GACJ,WAAW,GACT,4MACA,MAAM,UACP;cAEA,MACD,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GAAe,WAAU;aACvB,QAAQ,KAAK,WAAS;IACrB,MAAMC,aAAW,YAAYD,OAAK,QAAQ,SAAS;AACnD,QAAI,CAACC,cAAYD,OAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAMA,OAAK;KACF;KACT,GAAIA,OAAK;KACT,WAAW,GACT,+FACAA,OAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAAqDA,OAAK;QAAW;MACpF,qBAAC,oBACC,oBAAC;OAAE,WAAU;iBAAoCA,OAAK;QAAU,EAChE,oBAAC;OAAE,WAAU;iBACVA,OAAK;QACJ,IACA;MAEN,oBAAC,SACC,WAAW,GACT,6CACA,CAACC,cAAY,YACd,GACD;;OAtBGD,OAAK,IAuBL;KAET;IACa;GACT;;AAId,SAAgB,YAAY,KAAiB,UAAkB;AAC7D,KAAI,IAAI,KAAM,QAAO,IAAI,KAAK,IAAI,UAAU,SAAS,CAAC;AAEtD,QAAO,SAAS,IAAI,KAAK,UAAU,KAAK"}
1
+ {"version":3,"file":"dropdown.js","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":["'use client';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { type ComponentProps, type ReactNode, useMemo, useState } from 'react';\nimport Link from 'fumadocs-core/link';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { cn } from '@/utils/cn';\nimport { normalize, isActive } from '@/utils/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '.';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\n ...props\n}: {\n placeholder?: ReactNode;\n options: SidebarTabWithProps[];\n} & ComponentProps<'button'>) {\n const [open, setOpen] = useState(false);\n const { closeOnRedirect } = useSidebar();\n const pathname = usePathname();\n\n const selected = useMemo(() => {\n return options.findLast((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-9 shrink-0 empty:hidden md:size-5\">{selected.icon}</div>\n <div>\n <p className=\"text-sm font-medium\">{selected.title}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden md:hidden\">\n {selected.description}\n </p>\n </div>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n {...props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-open:bg-fd-accent data-open:text-fd-accent-foreground',\n props.className,\n )}\n >\n {item}\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent className=\"flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container\">\n {options.map((item) => {\n const isActive = selected && item.url === selected.url;\n if (!isActive && item.unlisted) return;\n\n return (\n <Link\n key={item.url}\n href={item.url}\n onClick={onClick}\n {...item.props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground',\n item.props?.className,\n )}\n >\n <div className=\"shrink-0 size-9 md:mb-auto md:size-5 empty:hidden\">{item.icon}</div>\n <div>\n <p className=\"text-sm font-medium leading-none\">{item.title}</p>\n <p className=\"text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden\">\n {item.description}\n </p>\n </div>\n\n <Check\n className={cn(\n 'shrink-0 ms-auto size-3.5 text-fd-primary',\n !isActive && 'invisible',\n )}\n />\n </Link>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function isTabActive(tab: SidebarTab, pathname: string) {\n if (tab.urls) return tab.urls.has(normalize(pathname));\n\n return isActive(tab.url, pathname, true);\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,SACA,aACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAE9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,SAAS,YAAY,MAAM,SAAS,CAAC;IAC7D,CAAC,SAAS,SAAS,CAAC;CAEvB,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,8CACE,oBAAC;EAAI,WAAU;YAA0C,SAAS;GAAW,EAC7E,qBAAC,oBACC,oBAAC;EAAE,WAAU;YAAuB,SAAS;GAAU,EACvD,oBAAC;EAAE,WAAU;YACV,SAAS;GACR,IACA,IACL,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,GAAI;GACJ,WAAW,GACT,4MACA,MAAM,UACP;cAEA,MACD,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GAAe,WAAU;aACvB,QAAQ,KAAK,SAAS;IACrB,MAAM,WAAW,YAAY,KAAK,QAAQ,SAAS;AACnD,QAAI,CAAC,YAAY,KAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAM,KAAK;KACF;KACT,GAAI,KAAK;KACT,WAAW,GACT,+FACA,KAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAAqD,KAAK;QAAW;MACpF,qBAAC,oBACC,oBAAC;OAAE,WAAU;iBAAoC,KAAK;QAAU,EAChE,oBAAC;OAAE,WAAU;iBACV,KAAK;QACJ,IACA;MAEN,oBAAC,SACC,WAAW,GACT,6CACA,CAAC,YAAY,YACd,GACD;;OAtBG,KAAK,IAuBL;KAET;IACa;GACT;;AAId,SAAgB,YAAY,KAAiB,UAAkB;AAC7D,KAAI,IAAI,KAAM,QAAO,IAAI,KAAK,IAAI,UAAU,SAAS,CAAC;AAEtD,QAAO,SAAS,IAAI,KAAK,UAAU,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"sourcesContent":[],"mappings":";;;;UAGiB,UAAA;;AAAjB;;EAOS,GAAA,EAAA,MAAA;EACO,IAAA,CAAA,EAFP,SAEO;EAKP,KAAA,EANA,SAMA;EAAG,WAAA,CAAA,EALI,SAKJ;EAIK;;;EAC4C,IAAA,CAAA,EALpD,GAKoD,CAAA,MAAA,CAAA;EAAU,QAAA,CAAA,EAAA,OAAA;AAgBvE;AACQ,UAlBS,qBAAA,CAkBA;EACb,SAAA,CAAA,EAAA,CAAA,MAAA,EAlBmB,UAkBnB,EAAA,IAAA,EAlBqC,QAAA,CAAS,MAkB9C,EAAA,GAlByD,UAkBzD,GAAA,IAAA;;AACD,iBAHa,cAAA,CAGb,IAAA,EAFK,QAAA,CAAS,IAEd,EAAA;EAAA;AAAA,CAAA,CAAA,EADiC,qBACjC,CAAA,EAAA,UAAA,EAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"mappings":";;;;UAGiB,UAAA;;AAAjB;;EAIE,GAAA;EAEA,IAAA,GAAO,SAAA;EACP,KAAA,EAAO,SAAA;EACP,WAAA,GAAc,SAAA;EAKP;;;EAAP,IAAA,GAAO,GAAA;EACP,QAAA;AAAA;AAAA,UAGe,qBAAA;EACf,SAAA,IAAa,MAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,QAAA,CAAS,MAAA,KAAW,UAAA;AAAA;AAAA,iBAgB7C,cAAA,CACd,IAAA,EAAM,QAAA,CAAS,IAAA;EACb;AAAA,IAAgC,qBAAA,GACjC,UAAA"}