fromsrc 0.0.2 → 0.0.21

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 (408) hide show
  1. package/dist/access.d.ts +7 -7
  2. package/dist/access.js +12 -5
  3. package/dist/adapter.js +8 -16
  4. package/dist/adapterbrowser.js +6 -10
  5. package/dist/adapternext.js +7 -18
  6. package/dist/adapterreactrouter.js +5 -9
  7. package/dist/adapterremix.js +8 -17
  8. package/dist/adaptertanstack.js +6 -10
  9. package/dist/algolia.js +43 -21
  10. package/dist/analytics.d.ts +1 -1
  11. package/dist/analytics.js +16 -10
  12. package/dist/ansi.js +76 -37
  13. package/dist/api.d.ts +10 -10
  14. package/dist/api.js +14 -11
  15. package/dist/audit.d.ts +6 -6
  16. package/dist/audit.js +29 -10
  17. package/dist/autotype.js +20 -10
  18. package/dist/batch.d.ts +6 -6
  19. package/dist/batch.js +16 -9
  20. package/dist/changelog.js +28 -14
  21. package/dist/changelogutil.d.ts +4 -4
  22. package/dist/changelogutil.js +33 -13
  23. package/dist/cli.d.ts +6 -6
  24. package/dist/cli.js +7 -3
  25. package/dist/client.d.ts +1 -1
  26. package/dist/codesample.d.ts +4 -4
  27. package/dist/codesample.js +63 -24
  28. package/dist/collapse.js +31 -13
  29. package/dist/collections.js +36 -16
  30. package/dist/components/accordion.d.ts +1 -1
  31. package/dist/components/accordion.js +5 -1
  32. package/dist/components/alert.d.ts +1 -1
  33. package/dist/components/alert.js +24 -13
  34. package/dist/components/announce.js +40 -17
  35. package/dist/components/autofill.js +17 -7
  36. package/dist/components/avatar.js +4 -4
  37. package/dist/components/avatarstack.js +2 -2
  38. package/dist/components/backtotop.d.ts +1 -1
  39. package/dist/components/backtotop.js +17 -4
  40. package/dist/components/badge.js +9 -4
  41. package/dist/components/banner.js +22 -5
  42. package/dist/components/breadcrumb.js +11 -4
  43. package/dist/components/breadcrumbnav.js +37 -21
  44. package/dist/components/button.js +23 -8
  45. package/dist/components/callout.d.ts +1 -1
  46. package/dist/components/callout.js +33 -29
  47. package/dist/components/changelog.js +21 -8
  48. package/dist/components/checkbox.js +32 -19
  49. package/dist/components/code.d.ts +1 -1
  50. package/dist/components/code.js +6 -3
  51. package/dist/components/codeblock.js +157 -39
  52. package/dist/components/codecopy.d.ts +1 -1
  53. package/dist/components/codecopy.js +36 -13
  54. package/dist/components/codegroup.js +87 -25
  55. package/dist/components/collapsible.d.ts +1 -1
  56. package/dist/components/collapsible.js +5 -1
  57. package/dist/components/command.d.ts +1 -1
  58. package/dist/components/command.js +42 -15
  59. package/dist/components/compare.js +20 -8
  60. package/dist/components/content.js +121 -79
  61. package/dist/components/copybutton.d.ts +1 -1
  62. package/dist/components/copybutton.js +14 -7
  63. package/dist/components/countdown.js +9 -3
  64. package/dist/components/create.js +34 -24
  65. package/dist/components/definition.js +11 -4
  66. package/dist/components/diffview.js +63 -29
  67. package/dist/components/divider.js +5 -1
  68. package/dist/components/docheader.js +8 -1
  69. package/dist/components/doclinkcard.js +27 -3
  70. package/dist/components/dropdown.d.ts +1 -1
  71. package/dist/components/dropdown.js +32 -11
  72. package/dist/components/dynamiccode.js +5 -3
  73. package/dist/components/editlink.js +35 -23
  74. package/dist/components/embed.js +15 -7
  75. package/dist/components/endpoint.d.ts +3 -3
  76. package/dist/components/endpoint.js +24 -9
  77. package/dist/components/errormessage.d.ts +1 -1
  78. package/dist/components/errormessage.js +4 -1
  79. package/dist/components/expandcode.d.ts +1 -1
  80. package/dist/components/expandcode.js +6 -2
  81. package/dist/components/feature.js +8 -1
  82. package/dist/components/featuregrid.d.ts +4 -4
  83. package/dist/components/featuregrid.js +7 -1
  84. package/dist/components/feedback.js +6 -2
  85. package/dist/components/feedbackwidget.js +10 -4
  86. package/dist/components/files.d.ts +1 -1
  87. package/dist/components/files.js +52 -18
  88. package/dist/components/folder.d.ts +1 -1
  89. package/dist/components/folder.js +21 -4
  90. package/dist/components/footer.js +5 -1
  91. package/dist/components/formlabel.d.ts +1 -1
  92. package/dist/components/formlabel.js +31 -18
  93. package/dist/components/github.js +43 -14
  94. package/dist/components/graph.js +38 -14
  95. package/dist/components/heading.js +36 -29
  96. package/dist/components/headingcopy.js +13 -5
  97. package/dist/components/hero.js +20 -14
  98. package/dist/components/highlight.d.ts +2 -2
  99. package/dist/components/highlight.js +14 -8
  100. package/dist/components/hover.d.ts +2 -2
  101. package/dist/components/hover.js +11 -4
  102. package/dist/components/icons.js +4 -1
  103. package/dist/components/inlinetoc.js +3 -1
  104. package/dist/components/input.js +13 -3
  105. package/dist/components/install.js +34 -24
  106. package/dist/components/kbd.js +19 -11
  107. package/dist/components/langicon.d.ts +1 -1
  108. package/dist/components/langicon.js +22 -17
  109. package/dist/components/language.d.ts +1 -1
  110. package/dist/components/language.js +12 -4
  111. package/dist/components/lastupdated.d.ts +2 -2
  112. package/dist/components/lastupdated.js +36 -12
  113. package/dist/components/link.d.ts +1 -1
  114. package/dist/components/linkcard.js +3 -1
  115. package/dist/components/list.d.ts +1 -1
  116. package/dist/components/list.js +4 -1
  117. package/dist/components/math.js +33 -8
  118. package/dist/components/mermaid.js +3 -3
  119. package/dist/components/mobilenav.d.ts +2 -1
  120. package/dist/components/mobilenav.js +116 -47
  121. package/dist/components/modal.d.ts +1 -1
  122. package/dist/components/modal.js +9 -2
  123. package/dist/components/navlink.js +17 -3
  124. package/dist/components/openapi.d.ts +1 -1
  125. package/dist/components/openapi.js +102 -32
  126. package/dist/components/openapischema.d.ts +1 -1
  127. package/dist/components/openapischema.js +29 -9
  128. package/dist/components/openapitags.js +6 -2
  129. package/dist/components/pagetransition.js +5 -3
  130. package/dist/components/pagination.js +3 -2
  131. package/dist/components/panel.js +91 -15
  132. package/dist/components/playground.d.ts +1 -1
  133. package/dist/components/playground.js +153 -50
  134. package/dist/components/popover.js +9 -7
  135. package/dist/components/prelink.js +40 -9
  136. package/dist/components/prevnext.d.ts +1 -1
  137. package/dist/components/prevnext.js +36 -16
  138. package/dist/components/progress.js +2 -2
  139. package/dist/components/property.js +3 -1
  140. package/dist/components/quote.d.ts +2 -2
  141. package/dist/components/quote.js +32 -4
  142. package/dist/components/radio.js +36 -18
  143. package/dist/components/rating.js +14 -3
  144. package/dist/components/recent.d.ts +1 -1
  145. package/dist/components/recent.js +26 -10
  146. package/dist/components/responsive.js +21 -13
  147. package/dist/components/results.js +8 -4
  148. package/dist/components/screenshot.js +61 -21
  149. package/dist/components/scrollprogress.js +9 -5
  150. package/dist/components/scrollspy.d.ts +2 -2
  151. package/dist/components/scrollspy.js +9 -3
  152. package/dist/components/search.js +47 -18
  153. package/dist/components/searchbutton.js +3 -1
  154. package/dist/components/searchdialog.js +35 -22
  155. package/dist/components/searcher.d.ts +1 -1
  156. package/dist/components/searcher.js +51 -26
  157. package/dist/components/select.js +27 -13
  158. package/dist/components/shortcuts.d.ts +1 -1
  159. package/dist/components/shortcuts.js +57 -38
  160. package/dist/components/sidebar.d.ts +2 -1
  161. package/dist/components/sidebar.js +221 -56
  162. package/dist/components/sidebarfilter.d.ts +1 -1
  163. package/dist/components/sidebarfilter.js +30 -6
  164. package/dist/components/sidebarscript.d.ts +5 -0
  165. package/dist/components/sidebarscript.js +18 -0
  166. package/dist/components/skeleton.js +15 -3
  167. package/dist/components/spinner.js +13 -3
  168. package/dist/components/status.js +20 -8
  169. package/dist/components/steps.js +3 -1
  170. package/dist/components/switch.js +4 -4
  171. package/dist/components/table.js +37 -12
  172. package/dist/components/tabnav.d.ts +1 -1
  173. package/dist/components/tabnav.js +48 -36
  174. package/dist/components/tabs.d.ts +1 -1
  175. package/dist/components/tabs.js +56 -40
  176. package/dist/components/tag.js +8 -3
  177. package/dist/components/terminal.js +14 -4
  178. package/dist/components/textarea.js +96 -82
  179. package/dist/components/theme.d.ts +1 -1
  180. package/dist/components/theme.js +25 -3
  181. package/dist/components/themeprovider.d.ts +4 -4
  182. package/dist/components/themeprovider.js +16 -5
  183. package/dist/components/toast.d.ts +1 -1
  184. package/dist/components/toast.js +23 -14
  185. package/dist/components/toc/default.d.ts +1 -1
  186. package/dist/components/toc/default.js +28 -13
  187. package/dist/components/toc/hook.js +28 -14
  188. package/dist/components/toc/index.js +8 -4
  189. package/dist/components/toc/inline.js +12 -2
  190. package/dist/components/toc/minimal.js +11 -5
  191. package/dist/components/toc/zigzag.d.ts +1 -1
  192. package/dist/components/toc/zigzag.js +37 -17
  193. package/dist/components/tocprogress.d.ts +1 -1
  194. package/dist/components/tocprogress.js +66 -34
  195. package/dist/components/tooltip.d.ts +1 -1
  196. package/dist/components/tooltip.js +20 -8
  197. package/dist/components/trigger.js +13 -5
  198. package/dist/components/twoslash.js +49 -26
  199. package/dist/components/typetable.js +23 -4
  200. package/dist/components/typewriter.js +6 -2
  201. package/dist/components/version.js +40 -14
  202. package/dist/components/video.js +25 -15
  203. package/dist/components/zoom.js +6 -2
  204. package/dist/config.d.ts +2 -2
  205. package/dist/config.js +56 -30
  206. package/dist/content.d.ts +5 -5
  207. package/dist/content.js +121 -57
  208. package/dist/contentcache.d.ts +10 -10
  209. package/dist/contentcache.js +9 -5
  210. package/dist/contentdiff.d.ts +4 -4
  211. package/dist/contentdiff.js +16 -8
  212. package/dist/contributors.d.ts +4 -4
  213. package/dist/contributors.js +49 -19
  214. package/dist/diff.d.ts +6 -6
  215. package/dist/diff.js +37 -16
  216. package/dist/draft.d.ts +11 -11
  217. package/dist/draft.js +9 -5
  218. package/dist/env.js +21 -7
  219. package/dist/export.js +4 -4
  220. package/dist/frontmatter.js +11 -9
  221. package/dist/github.js +60 -30
  222. package/dist/gitsource.d.ts +1 -1
  223. package/dist/gitsource.js +16 -9
  224. package/dist/hash.d.ts +6 -6
  225. package/dist/hash.js +19 -7
  226. package/dist/highlight.d.ts +4 -4
  227. package/dist/highlight.js +34 -14
  228. package/dist/hooks/anchor.js +26 -14
  229. package/dist/hooks/arrownav.js +25 -7
  230. package/dist/hooks/async.js +3 -3
  231. package/dist/hooks/battery.js +11 -3
  232. package/dist/hooks/breakpoint.js +10 -2
  233. package/dist/hooks/clickoutside.js +10 -3
  234. package/dist/hooks/clipboard-paste.js +7 -3
  235. package/dist/hooks/clipboard.d.ts +2 -2
  236. package/dist/hooks/clipboard.js +21 -15
  237. package/dist/hooks/copy.js +11 -6
  238. package/dist/hooks/countdown.js +1 -1
  239. package/dist/hooks/counter.js +1 -1
  240. package/dist/hooks/escapekey.js +6 -1
  241. package/dist/hooks/eventlistener.js +3 -1
  242. package/dist/hooks/eventsource.js +4 -2
  243. package/dist/hooks/eyedropper.js +7 -3
  244. package/dist/hooks/favicon.js +1 -1
  245. package/dist/hooks/fetch.js +12 -4
  246. package/dist/hooks/focustrap.js +20 -8
  247. package/dist/hooks/focuswithin.js +6 -2
  248. package/dist/hooks/form.d.ts +2 -2
  249. package/dist/hooks/form.js +15 -2
  250. package/dist/hooks/fullscreen.js +1 -1
  251. package/dist/hooks/geolocation.js +8 -8
  252. package/dist/hooks/hotkeys.js +19 -7
  253. package/dist/hooks/hover.d.ts +4 -1
  254. package/dist/hooks/hover.js +3 -1
  255. package/dist/hooks/idle.js +13 -3
  256. package/dist/hooks/infinitescroll.js +4 -2
  257. package/dist/hooks/interval.js +3 -1
  258. package/dist/hooks/inview.js +7 -3
  259. package/dist/hooks/keyboard.js +36 -12
  260. package/dist/hooks/keypress.js +6 -2
  261. package/dist/hooks/list.js +11 -1
  262. package/dist/hooks/longpress.js +3 -3
  263. package/dist/hooks/map.js +1 -1
  264. package/dist/hooks/measure.js +16 -7
  265. package/dist/hooks/mediarecorder.js +7 -3
  266. package/dist/hooks/networkstate.js +4 -2
  267. package/dist/hooks/os.js +12 -4
  268. package/dist/hooks/pagination.js +6 -4
  269. package/dist/hooks/permission.js +6 -2
  270. package/dist/hooks/queue.js +4 -2
  271. package/dist/hooks/readprogress.js +6 -2
  272. package/dist/hooks/resizeobserver.js +6 -4
  273. package/dist/hooks/script.js +1 -1
  274. package/dist/hooks/scrolllock.js +6 -2
  275. package/dist/hooks/scrollspy.js +4 -2
  276. package/dist/hooks/selection.js +6 -3
  277. package/dist/hooks/share.js +18 -9
  278. package/dist/hooks/speechrecognition.js +7 -3
  279. package/dist/hooks/stepper.js +4 -4
  280. package/dist/hooks/storage.js +9 -3
  281. package/dist/hooks/stylesheet.js +4 -2
  282. package/dist/hooks/textselection.js +6 -3
  283. package/dist/hooks/throttle.js +6 -2
  284. package/dist/hooks/undoredo.js +19 -11
  285. package/dist/hooks/vibrate.js +3 -1
  286. package/dist/hooks/viewtransition.js +8 -4
  287. package/dist/hooks/wakelock.js +12 -7
  288. package/dist/hooks/websocket.js +4 -2
  289. package/dist/hooks/windowsize.js +2 -2
  290. package/dist/i18n.d.ts +2 -2
  291. package/dist/i18n.js +27 -14
  292. package/dist/index.d.ts +1 -0
  293. package/dist/index.js +1 -0
  294. package/dist/lastmodified.js +11 -5
  295. package/dist/linkcheck.d.ts +6 -6
  296. package/dist/linkcheck.js +55 -14
  297. package/dist/llms.js +20 -4
  298. package/dist/manifest.js +7 -7
  299. package/dist/mcp.js +28 -22
  300. package/dist/mdtoc.d.ts +4 -4
  301. package/dist/mdtoc.js +11 -5
  302. package/dist/mdxscope.d.ts +2 -2
  303. package/dist/mdxscope.js +3 -1
  304. package/dist/meta.js +19 -7
  305. package/dist/migrate.js +35 -25
  306. package/dist/navgen.d.ts +8 -8
  307. package/dist/navgen.js +73 -30
  308. package/dist/navtree.d.ts +1 -1
  309. package/dist/navtree.js +39 -19
  310. package/dist/oembed.d.ts +4 -4
  311. package/dist/oembed.js +24 -18
  312. package/dist/ogimage.d.ts +11 -11
  313. package/dist/ogimage.js +24 -24
  314. package/dist/openapi.js +60 -33
  315. package/dist/openapiguard.js +21 -11
  316. package/dist/openapiutil.js +66 -20
  317. package/dist/orama.js +52 -34
  318. package/dist/pipeline.d.ts +4 -4
  319. package/dist/pipeline.js +4 -4
  320. package/dist/preload.d.ts +2 -2
  321. package/dist/preload.js +4 -4
  322. package/dist/ranking.d.ts +6 -6
  323. package/dist/ranking.js +39 -13
  324. package/dist/readtime.js +3 -1
  325. package/dist/redirects.d.ts +2 -2
  326. package/dist/redirects.js +20 -12
  327. package/dist/rehype.js +16 -9
  328. package/dist/rehypeautolink.d.ts +2 -2
  329. package/dist/rehypeautolink.js +25 -23
  330. package/dist/rehypecode.js +38 -28
  331. package/dist/rehypecopy.js +17 -13
  332. package/dist/rehypeinline.js +33 -27
  333. package/dist/rehypelinks.js +28 -20
  334. package/dist/rehyperaw.js +9 -3
  335. package/dist/rehypeslug.d.ts +1 -1
  336. package/dist/rehypeslug.js +23 -19
  337. package/dist/rehypetablewrap.d.ts +2 -2
  338. package/dist/rehypetablewrap.js +9 -5
  339. package/dist/rehypetoc.d.ts +1 -1
  340. package/dist/rehypetoc.js +15 -7
  341. package/dist/remark.js +28 -13
  342. package/dist/remarkadmonition.js +40 -14
  343. package/dist/remarkannotation.d.ts +2 -2
  344. package/dist/remarkannotation.js +26 -10
  345. package/dist/remarkbadge.js +43 -31
  346. package/dist/remarkblockmath.js +29 -15
  347. package/dist/remarkcallout.js +32 -14
  348. package/dist/remarkcaption.js +28 -16
  349. package/dist/remarkcodetitle.js +29 -13
  350. package/dist/remarkcolumns.js +22 -10
  351. package/dist/remarkdetails.js +34 -14
  352. package/dist/remarkdirective.js +47 -20
  353. package/dist/remarkembed.js +38 -22
  354. package/dist/remarkfiletree.js +29 -19
  355. package/dist/remarkfootnote.js +46 -18
  356. package/dist/remarkgfm.js +13 -8
  357. package/dist/remarkheadingid.js +16 -6
  358. package/dist/remarkimage.js +54 -34
  359. package/dist/remarkinclude.js +20 -8
  360. package/dist/remarkinstall.js +20 -12
  361. package/dist/remarklinkcard.js +33 -14
  362. package/dist/remarkmath.js +34 -15
  363. package/dist/remarkmermaid.js +10 -6
  364. package/dist/remarkmeta.d.ts +2 -2
  365. package/dist/remarkmeta.js +15 -5
  366. package/dist/remarkreadingtime.d.ts +2 -2
  367. package/dist/remarkreadingtime.js +3 -1
  368. package/dist/remarksteps.js +26 -14
  369. package/dist/remarkstructure.js +16 -10
  370. package/dist/remarktabs.js +31 -14
  371. package/dist/remarktoc.js +40 -24
  372. package/dist/remarkts2js.js +51 -40
  373. package/dist/remarktwoslash.d.ts +4 -4
  374. package/dist/remarktwoslash.js +24 -14
  375. package/dist/remarkvideo.d.ts +4 -4
  376. package/dist/remarkvideo.js +42 -16
  377. package/dist/schema.d.ts +14 -14
  378. package/dist/schema.js +2 -2
  379. package/dist/search.js +106 -48
  380. package/dist/searchindex.js +86 -34
  381. package/dist/searchpolicy.js +1 -1
  382. package/dist/searchscore.js +5 -5
  383. package/dist/searchtypo.js +30 -10
  384. package/dist/seo.d.ts +2 -2
  385. package/dist/seo.js +14 -14
  386. package/dist/shortcodes.d.ts +4 -4
  387. package/dist/shortcodes.js +25 -20
  388. package/dist/sitemap.js +18 -8
  389. package/dist/snippets.js +26 -18
  390. package/dist/source.js +75 -41
  391. package/dist/stats.d.ts +4 -4
  392. package/dist/stats.js +18 -12
  393. package/dist/testing.d.ts +7 -7
  394. package/dist/testing.js +74 -29
  395. package/dist/themeutil.d.ts +6 -6
  396. package/dist/themeutil.js +145 -27
  397. package/dist/typegen.js +31 -12
  398. package/dist/validate.js +19 -7
  399. package/dist/validator.d.ts +11 -11
  400. package/dist/validator.js +68 -19
  401. package/dist/versioning.d.ts +7 -7
  402. package/dist/versioning.js +27 -11
  403. package/dist/watcher.js +39 -15
  404. package/dist/webhook.d.ts +6 -6
  405. package/dist/webhook.js +34 -12
  406. package/dist/workspace.js +26 -12
  407. package/package.json +137 -137
  408. package/styles/reset.css +1 -1
@@ -2,17 +2,17 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  type ThemeMode = "light" | "dark" | "system";
5
- type ThemeContextValue = {
5
+ interface ThemeContextValue {
6
6
  theme: ThemeMode;
7
7
  resolved: "light" | "dark";
8
8
  setTheme: (theme: ThemeMode) => void;
9
- };
10
- type ThemeProviderProps = {
9
+ }
10
+ interface ThemeProviderProps {
11
11
  children: ReactNode;
12
12
  defaultTheme?: ThemeMode;
13
13
  storageKey?: string;
14
14
  attribute?: string;
15
- };
15
+ }
16
16
  declare function ThemeProvider({ children, defaultTheme, storageKey, attribute, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
17
17
  declare function useTheme(): ThemeContextValue;
18
18
 
@@ -19,12 +19,16 @@ function ThemeProvider({
19
19
  attribute = "data-theme"
20
20
  }) {
21
21
  const [theme, setTheme] = useState(() => {
22
- if (typeof window === "undefined") return defaultTheme;
22
+ if (typeof window === "undefined") {
23
+ return defaultTheme;
24
+ }
23
25
  const stored = localStorage.getItem(storageKey);
24
26
  return istheme(stored) ? stored : defaultTheme;
25
27
  });
26
28
  const [resolved, setResolved] = useState(() => {
27
- if (typeof window === "undefined") return "light";
29
+ if (typeof window === "undefined") {
30
+ return "light";
31
+ }
28
32
  return resolve(theme);
29
33
  });
30
34
  useEffect(() => {
@@ -35,7 +39,9 @@ function ThemeProvider({
35
39
  localStorage.setItem(storageKey, theme);
36
40
  }, [theme, attribute, storageKey]);
37
41
  useEffect(() => {
38
- if (theme !== "system") return;
42
+ if (theme !== "system") {
43
+ return;
44
+ }
39
45
  const media = window.matchMedia("(prefers-color-scheme: dark)");
40
46
  const handler = () => {
41
47
  const r = resolve(theme);
@@ -46,12 +52,17 @@ function ThemeProvider({
46
52
  media.addEventListener("change", handler);
47
53
  return () => media.removeEventListener("change", handler);
48
54
  }, [theme, attribute]);
49
- const value = useMemo(() => ({ theme, resolved, setTheme }), [theme, resolved]);
55
+ const value = useMemo(
56
+ () => ({ resolved, setTheme, theme }),
57
+ [theme, resolved]
58
+ );
50
59
  return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
51
60
  }
52
61
  function useTheme() {
53
62
  const context = useContext(ThemeContext);
54
- if (!context) throw new Error("useTheme must be used within ThemeProvider");
63
+ if (!context) {
64
+ throw new Error("useTheme must be used within ThemeProvider");
65
+ }
55
66
  return context;
56
67
  }
57
68
 
@@ -20,7 +20,7 @@ interface ToastContextValue {
20
20
  /**
21
21
  * Provider component for toast notifications.
22
22
  */
23
- declare function ToastProvider({ children }: {
23
+ declare function ToastProvider({ children, }: {
24
24
  children: ReactNode;
25
25
  }): JSX.Element;
26
26
  /**
@@ -1,10 +1,12 @@
1
1
  "use client";
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { createContext, useState, useRef, useCallback, useEffect, useContext } from 'react';
4
- import { IconXCircle, IconAlertCircle, IconCheckCircle, IconInfo, IconX } from './icons';
4
+ import { IconAlertCircle, IconCheckCircle, IconInfo, IconXCircle, IconX } from './icons';
5
5
 
6
6
  const ToastContext = createContext(null);
7
- function ToastProvider({ children }) {
7
+ function ToastProvider({
8
+ children
9
+ }) {
8
10
  const [toasts, setToasts] = useState([]);
9
11
  const timers = useRef(/* @__PURE__ */ new Map());
10
12
  const counter = useRef(0);
@@ -27,33 +29,38 @@ function ToastProvider({ children }) {
27
29
  }, duration);
28
30
  timers.current.set(id, timer);
29
31
  }, []);
30
- useEffect(() => {
31
- return () => {
32
- for (const timer of timers.current.values()) clearTimeout(timer);
32
+ useEffect(
33
+ () => () => {
34
+ for (const timer of timers.current.values()) {
35
+ clearTimeout(timer);
36
+ }
33
37
  timers.current.clear();
34
- };
35
- }, []);
36
- return /* @__PURE__ */ jsxs(ToastContext.Provider, { value: { toasts, add, remove }, children: [
38
+ },
39
+ []
40
+ );
41
+ return /* @__PURE__ */ jsxs(ToastContext.Provider, { value: { add, remove, toasts }, children: [
37
42
  children,
38
43
  /* @__PURE__ */ jsx(ToastContainer, {})
39
44
  ] });
40
45
  }
41
46
  function useToast() {
42
47
  const ctx = useContext(ToastContext);
43
- if (!ctx) throw new Error("useToast must be used within ToastProvider");
48
+ if (!ctx) {
49
+ throw new Error("useToast must be used within ToastProvider");
50
+ }
44
51
  return ctx;
45
52
  }
46
53
  const icons = {
54
+ error: IconXCircle,
47
55
  info: IconInfo,
48
56
  success: IconCheckCircle,
49
- warning: IconAlertCircle,
50
- error: IconXCircle
57
+ warning: IconAlertCircle
51
58
  };
52
59
  const styles = {
60
+ error: "border-red-500/30 bg-red-500/10",
53
61
  info: "border-blue-500/30 bg-blue-500/10",
54
62
  success: "border-green-500/30 bg-green-500/10",
55
- warning: "border-yellow-500/30 bg-yellow-500/10",
56
- error: "border-red-500/30 bg-red-500/10"
63
+ warning: "border-yellow-500/30 bg-yellow-500/10"
57
64
  };
58
65
  function ToastContainer() {
59
66
  const { toasts, remove } = useToast();
@@ -63,7 +70,9 @@ function ToastContainer() {
63
70
  },
64
71
  [remove]
65
72
  );
66
- if (toasts.length === 0) return null;
73
+ if (toasts.length === 0) {
74
+ return null;
75
+ }
67
76
  return /* @__PURE__ */ jsx(
68
77
  "div",
69
78
  {
@@ -15,7 +15,7 @@ interface Props {
15
15
  /** Enable zigzag line decoration */
16
16
  zigzag?: boolean;
17
17
  }
18
- declare function TocDefaultBase({ headings, active, activeRange, zigzag }: Props): JSX.Element;
18
+ declare function TocDefaultBase({ headings, active, activeRange, zigzag, }: Props): JSX.Element;
19
19
  declare const TocDefault: react.MemoExoticComponent<typeof TocDefaultBase>;
20
20
 
21
21
  export { TocDefault };
@@ -3,18 +3,27 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { memo, useRef, useState, useEffect } from 'react';
4
4
  import { ZigzagLine, getItemOffset, buildZigzagPath } from './zigzag';
5
5
 
6
- function TocDefaultBase({ headings, active, activeRange, zigzag }) {
6
+ function TocDefaultBase({
7
+ headings,
8
+ active,
9
+ activeRange,
10
+ zigzag
11
+ }) {
7
12
  const containerRef = useRef(null);
8
13
  const [svg, setSvg] = useState(null);
9
- const [thumb, setThumb] = useState({ top: 0, height: 0 });
14
+ const [thumb, setThumb] = useState({ height: 0, top: 0 });
10
15
  const range = activeRange.length > 0 ? activeRange : active ? [active] : [];
11
16
  const isActive = (id) => range.includes(id);
12
17
  useEffect(() => {
13
- if (!zigzag || !containerRef.current || headings.length === 0) return;
18
+ if (!zigzag || !containerRef.current || headings.length === 0) {
19
+ return;
20
+ }
14
21
  const container = containerRef.current;
15
22
  function update() {
16
23
  const result = buildZigzagPath(headings, container);
17
- if (result) setSvg(result);
24
+ if (result) {
25
+ setSvg(result);
26
+ }
18
27
  }
19
28
  const observer = new ResizeObserver(update);
20
29
  update();
@@ -22,21 +31,27 @@ function TocDefaultBase({ headings, active, activeRange, zigzag }) {
22
31
  return () => observer.disconnect();
23
32
  }, [headings, zigzag]);
24
33
  useEffect(() => {
25
- if (!zigzag || !containerRef.current || range.length === 0) return;
34
+ if (!zigzag || !containerRef.current || range.length === 0) {
35
+ return;
36
+ }
26
37
  const container = containerRef.current;
27
38
  let upper = Infinity;
28
39
  let lower = 0;
29
40
  for (const id of range) {
30
- const element = container.querySelector(`a[href="#${id}"]`);
31
- if (!element) continue;
41
+ const element = container.querySelector(
42
+ `a[href="#${id}"]`
43
+ );
44
+ if (!element) {
45
+ continue;
46
+ }
32
47
  const styles = getComputedStyle(element);
33
- const top = element.offsetTop + parseFloat(styles.paddingTop);
34
- const bottom = element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom);
48
+ const top = element.offsetTop + Number.parseFloat(styles.paddingTop);
49
+ const bottom = element.offsetTop + element.clientHeight - Number.parseFloat(styles.paddingBottom);
35
50
  upper = Math.min(upper, top);
36
51
  lower = Math.max(lower, bottom);
37
52
  }
38
53
  if (upper !== Infinity) {
39
- setThumb({ top: upper, height: lower - upper });
54
+ setThumb({ height: lower - upper, top: upper });
40
55
  }
41
56
  }, [range, zigzag]);
42
57
  if (zigzag) {
@@ -47,17 +62,17 @@ function TocDefaultBase({ headings, active, activeRange, zigzag }) {
47
62
  "aria-hidden": "true",
48
63
  className: "absolute left-0 top-0 pointer-events-none z-10",
49
64
  style: {
50
- width: svg.width,
51
65
  height: svg.height,
52
66
  maskImage: `url("data:image/svg+xml,${encodeURIComponent(
53
67
  `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${svg.width} ${svg.height}"><path d="${svg.path}" stroke="black" stroke-width="1" fill="none" /></svg>`
54
- )}")`
68
+ )}")`,
69
+ width: svg.width
55
70
  },
56
71
  children: /* @__PURE__ */ jsx(
57
72
  "div",
58
73
  {
59
74
  className: "absolute w-full bg-fg transition-[top,height] duration-150",
60
- style: { top: thumb.top, height: thumb.height }
75
+ style: { height: thumb.height, top: thumb.top }
61
76
  }
62
77
  )
63
78
  }
@@ -10,15 +10,17 @@ function useToc(multi = false) {
10
10
  const [activeRange, setActiveRange] = useState([]);
11
11
  useEffect(() => {
12
12
  function scan() {
13
- const elements = document.querySelectorAll("article h2, article h3, article h4, article h5, article h6");
13
+ const elements = document.querySelectorAll(
14
+ "article h2, article h3, article h4, article h5, article h6"
15
+ );
14
16
  const items = [];
15
17
  elements.forEach((el) => {
16
18
  if (el.id) {
17
19
  const level = Number(el.tagName.replace("H", ""));
18
20
  items.push({
19
21
  id: el.id,
20
- text: cleanheading(el.textContent || ""),
21
- level: Number.isFinite(level) ? level : 2
22
+ level: Number.isFinite(level) ? level : 2,
23
+ text: cleanheading(el.textContent || "")
22
24
  });
23
25
  }
24
26
  });
@@ -37,13 +39,17 @@ function useToc(multi = false) {
37
39
  return () => observer.disconnect();
38
40
  }, []);
39
41
  useEffect(() => {
40
- if (headings.length === 0) return;
42
+ if (headings.length === 0) {
43
+ return;
44
+ }
41
45
  function findClosest() {
42
46
  let closest = headings[0]?.id || "";
43
47
  let minDistance = Infinity;
44
48
  for (const { id } of headings) {
45
- const el = document.getElementById(id);
46
- if (!el) continue;
49
+ const el = document.querySelector(`#${id}`);
50
+ if (!el) {
51
+ continue;
52
+ }
47
53
  const rect = el.getBoundingClientRect();
48
54
  const distance = Math.abs(rect.top);
49
55
  if (distance < minDistance) {
@@ -77,8 +83,10 @@ function useToc(multi = false) {
77
83
  { rootMargin: "0px", threshold: 0.9 }
78
84
  );
79
85
  for (const { id } of headings) {
80
- const el = document.getElementById(id);
81
- if (el) observer.observe(el);
86
+ const el = document.querySelector(`#${id}`);
87
+ if (el) {
88
+ observer.observe(el);
89
+ }
82
90
  }
83
91
  return () => observer.disconnect();
84
92
  }
@@ -86,23 +94,29 @@ function useToc(multi = false) {
86
94
  function update() {
87
95
  const atBottom = window.innerHeight + Math.ceil(window.scrollY) >= document.documentElement.scrollHeight;
88
96
  if (atBottom && headings.length > 0) {
89
- const last = headings[headings.length - 1];
90
- if (last) setActive(last.id);
97
+ const last = headings.at(-1);
98
+ if (last) {
99
+ setActive(last.id);
100
+ }
91
101
  return;
92
102
  }
93
103
  const offset = 100;
94
104
  let current = "";
95
105
  const items = headings.slice(0, -1);
96
106
  for (const { id } of items) {
97
- const el = document.getElementById(id);
98
- if (!el) continue;
107
+ const el = document.querySelector(`#${id}`);
108
+ if (!el) {
109
+ continue;
110
+ }
99
111
  if (el.getBoundingClientRect().top <= offset) {
100
112
  current = id;
101
113
  }
102
114
  }
103
115
  if (!current && headings.length > 0) {
104
116
  const first = headings[0];
105
- if (first) current = first.id;
117
+ if (first) {
118
+ current = first.id;
119
+ }
106
120
  }
107
121
  setActive(current);
108
122
  }
@@ -119,7 +133,7 @@ function useToc(multi = false) {
119
133
  window.addEventListener("scroll", onScroll, { passive: true });
120
134
  return () => window.removeEventListener("scroll", onScroll);
121
135
  }, [headings, multi]);
122
- return { headings, active, activeRange };
136
+ return { active, activeRange, headings };
123
137
  }
124
138
 
125
139
  export { useToc };
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { TocDefault } from './default';
3
4
  import { useToc } from './hook';
4
5
  export { useToc } from './hook';
5
- import { TocDefault } from './default';
6
- import { TocMinimal } from './minimal';
7
6
  import { TocInline } from './inline';
7
+ import { TocMinimal } from './minimal';
8
8
 
9
9
  function Toc({
10
10
  variant = "default",
@@ -14,8 +14,12 @@ function Toc({
14
14
  collapsible = true,
15
15
  defaultOpen = false
16
16
  }) {
17
- const { headings, active, activeRange } = useToc(variant !== "minimal" && multi);
18
- if (headings.length === 0) return null;
17
+ const { headings, active, activeRange } = useToc(
18
+ variant !== "minimal" && multi
19
+ );
20
+ if (headings.length === 0) {
21
+ return null;
22
+ }
19
23
  if (variant === "inline") {
20
24
  return /* @__PURE__ */ jsx(
21
25
  TocInline,
@@ -12,7 +12,9 @@ function TocInlineBase({
12
12
  const toggle = useCallback(() => {
13
13
  setOpen((prev) => !prev);
14
14
  }, []);
15
- if (headings.length === 0) return null;
15
+ if (headings.length === 0) {
16
+ return null;
17
+ }
16
18
  const content = /* @__PURE__ */ jsx("div", { className: "flex flex-col text-sm text-muted", children: headings.map((heading) => /* @__PURE__ */ jsx(
17
19
  "a",
18
20
  {
@@ -59,7 +61,15 @@ function TocInlineBase({
59
61
  viewBox: "0 0 24 24",
60
62
  stroke: "currentColor",
61
63
  "aria-hidden": "true",
62
- children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
64
+ children: /* @__PURE__ */ jsx(
65
+ "path",
66
+ {
67
+ strokeLinecap: "round",
68
+ strokeLinejoin: "round",
69
+ strokeWidth: 2,
70
+ d: "M19 9l-7 7-7-7"
71
+ }
72
+ )
63
73
  }
64
74
  )
65
75
  ]
@@ -9,11 +9,15 @@ function TocMinimalBase({ headings, active, zigzag }) {
9
9
  const progressRef = useRef(null);
10
10
  const [svg, setSvg] = useState(null);
11
11
  useEffect(() => {
12
- if (!zigzag || !containerRef.current || headings.length === 0) return;
12
+ if (!zigzag || !containerRef.current || headings.length === 0) {
13
+ return;
14
+ }
13
15
  const container = containerRef.current;
14
16
  function update() {
15
17
  const result = buildZigzagPath(headings, container);
16
- if (result) setSvg(result);
18
+ if (result) {
19
+ setSvg(result);
20
+ }
17
21
  }
18
22
  const observer = new ResizeObserver(update);
19
23
  update();
@@ -24,7 +28,9 @@ function TocMinimalBase({ headings, active, zigzag }) {
24
28
  const container = containerRef.current;
25
29
  const thumb = thumbRef.current;
26
30
  const progress = progressRef.current;
27
- if (!container) return;
31
+ if (!container) {
32
+ return;
33
+ }
28
34
  let ticking = false;
29
35
  function update() {
30
36
  const scrollTop = window.scrollY;
@@ -64,11 +70,11 @@ function TocMinimalBase({ headings, active, zigzag }) {
64
70
  {
65
71
  className: "absolute left-0 top-0 pointer-events-none z-10",
66
72
  style: {
67
- width: svg.width,
68
73
  height: svg.height,
69
74
  maskImage: `url("data:image/svg+xml,${encodeURIComponent(
70
75
  `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${svg.width} ${svg.height}"><path d="${svg.path}" stroke="black" stroke-width="1" fill="none" /></svg>`
71
- )}")`
76
+ )}")`,
77
+ width: svg.width
72
78
  },
73
79
  children: /* @__PURE__ */ jsx(
74
80
  "div",
@@ -6,7 +6,7 @@ interface Props {
6
6
  upper?: number;
7
7
  lower?: number;
8
8
  }
9
- declare function ZigzagLine({ heading, upper, lower }: Props): react_jsx_runtime.JSX.Element;
9
+ declare function ZigzagLine({ heading, upper, lower, }: Props): react_jsx_runtime.JSX.Element;
10
10
  declare function getItemOffset(level: number): number;
11
11
  interface ZigzagPath {
12
12
  path: string;
@@ -4,22 +4,34 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
4
4
  function getLineOffset(level) {
5
5
  return level >= 3 ? 10 : 0;
6
6
  }
7
- function ZigzagLine({ heading, upper = heading.level, lower = heading.level }) {
7
+ function ZigzagLine({
8
+ heading,
9
+ upper = heading.level,
10
+ lower = heading.level
11
+ }) {
8
12
  const offset = getLineOffset(heading.level);
9
13
  const upperOffset = getLineOffset(upper);
10
14
  const lowerOffset = getLineOffset(lower);
11
15
  return /* @__PURE__ */ jsxs(Fragment, { children: [
12
- offset !== upperOffset && /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", className: "absolute -top-1.5 left-0 size-4", "aria-hidden": "true", children: /* @__PURE__ */ jsx(
13
- "line",
16
+ offset !== upperOffset && /* @__PURE__ */ jsx(
17
+ "svg",
14
18
  {
15
- x1: upperOffset,
16
- y1: "0",
17
- x2: offset,
18
- y2: "12",
19
- className: "stroke-line",
20
- strokeWidth: "1"
19
+ viewBox: "0 0 16 16",
20
+ className: "absolute -top-1.5 left-0 size-4",
21
+ "aria-hidden": "true",
22
+ children: /* @__PURE__ */ jsx(
23
+ "line",
24
+ {
25
+ x1: upperOffset,
26
+ y1: "0",
27
+ x2: offset,
28
+ y2: "12",
29
+ className: "stroke-line",
30
+ strokeWidth: "1"
31
+ }
32
+ )
21
33
  }
22
- ) }),
34
+ ),
23
35
  /* @__PURE__ */ jsx(
24
36
  "div",
25
37
  {
@@ -33,25 +45,33 @@ function getItemOffset(level) {
33
45
  return level >= 3 ? 26 : 14;
34
46
  }
35
47
  function buildZigzagPath(headings, container) {
36
- if (container.clientHeight === 0) return null;
48
+ if (container.clientHeight === 0) {
49
+ return null;
50
+ }
37
51
  let w = 0;
38
52
  let h = 0;
39
53
  const d = [];
40
54
  for (let i = 0; i < headings.length; i++) {
41
55
  const item = headings[i];
42
- if (!item) continue;
43
- const element = container.querySelector(`a[href="#${item.id}"]`);
44
- if (!element) continue;
56
+ if (!item) {
57
+ continue;
58
+ }
59
+ const element = container.querySelector(
60
+ `a[href="#${item.id}"]`
61
+ );
62
+ if (!element) {
63
+ continue;
64
+ }
45
65
  const styles = getComputedStyle(element);
46
66
  const offset = item.level >= 3 ? 10.5 : 0.5;
47
- const top = element.offsetTop + parseFloat(styles.paddingTop);
48
- const bottom = element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom);
67
+ const top = element.offsetTop + Number.parseFloat(styles.paddingTop);
68
+ const bottom = element.offsetTop + element.clientHeight - Number.parseFloat(styles.paddingBottom);
49
69
  w = Math.max(offset, w);
50
70
  h = Math.max(h, bottom);
51
71
  d.push(`${i === 0 ? "M" : "L"}${offset} ${top}`);
52
72
  d.push(`L${offset} ${bottom}`);
53
73
  }
54
- return { path: d.join(" "), width: w + 1, height: h };
74
+ return { height: h, path: d.join(" "), width: w + 1 };
55
75
  }
56
76
 
57
77
  export { ZigzagLine, buildZigzagPath, getItemOffset };
@@ -11,7 +11,7 @@ interface TocProgressProps {
11
11
  activeClassName?: string;
12
12
  lineColor?: string;
13
13
  }
14
- declare function TocProgressBase({ headings, className, activeClassName, lineColor }: TocProgressProps): react_jsx_runtime.JSX.Element;
14
+ declare function TocProgressBase({ headings, className, activeClassName, lineColor, }: TocProgressProps): react_jsx_runtime.JSX.Element;
15
15
  declare const TocProgress: react.MemoExoticComponent<typeof TocProgressBase>;
16
16
 
17
17
  export { TocProgress, type TocProgressProps };