fromsrc 0.0.2 → 0.0.22

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 +18 -8
  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 +18 -5
  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 +35 -31
  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 +11 -7
  85. package/dist/components/feedbackwidget.js +18 -12
  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 +32 -24
  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 +5 -4
  131. package/dist/components/panel.js +92 -16
  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 +4 -2
  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 +36 -23
  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 +209 -64
  162. package/dist/components/sidebarfilter.d.ts +1 -1
  163. package/dist/components/sidebarfilter.js +33 -9
  164. package/dist/components/sidebarscript.d.ts +5 -0
  165. package/dist/components/sidebarscript.js +5 -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 +26 -4
  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
@@ -14,7 +14,7 @@ interface QuoteProps {
14
14
  /** Avatar image URL */
15
15
  avatar?: string;
16
16
  }
17
- declare function QuoteBase({ children, author, role, avatar }: QuoteProps): React.JSX.Element;
17
+ declare function QuoteBase({ children, author, role, avatar, }: QuoteProps): React.JSX.Element;
18
18
  declare const Quote: react.MemoExoticComponent<typeof QuoteBase>;
19
19
  /**
20
20
  * Props for the Testimonials grid container
@@ -38,7 +38,7 @@ interface TestimonialProps {
38
38
  /** Avatar image URL */
39
39
  avatar?: string;
40
40
  }
41
- declare function TestimonialBase({ children, author, role, avatar }: TestimonialProps): React.JSX.Element;
41
+ declare function TestimonialBase({ children, author, role, avatar, }: TestimonialProps): React.JSX.Element;
42
42
  declare const Testimonial: react.MemoExoticComponent<typeof TestimonialBase>;
43
43
 
44
44
  export { Quote, type QuoteProps, Testimonial, type TestimonialProps, Testimonials, type TestimonialsProps };
@@ -3,7 +3,12 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import Image from 'next/image';
4
4
  import { memo } from 'react';
5
5
 
6
- function QuoteBase({ children, author, role, avatar }) {
6
+ function QuoteBase({
7
+ children,
8
+ author,
9
+ role,
10
+ avatar
11
+ }) {
7
12
  return /* @__PURE__ */ jsxs("figure", { className: "my-6 p-6 rounded-xl border border-line bg-surface/30", children: [
8
13
  /* @__PURE__ */ jsxs("blockquote", { className: "text-lg text-fg italic leading-relaxed", children: [
9
14
  '"',
@@ -11,7 +16,16 @@ function QuoteBase({ children, author, role, avatar }) {
11
16
  '"'
12
17
  ] }),
13
18
  author && /* @__PURE__ */ jsxs("figcaption", { className: "mt-4 flex items-center gap-3", children: [
14
- avatar && /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-full overflow-hidden relative", children: /* @__PURE__ */ jsx(Image, { src: avatar, alt: "", fill: true, className: "object-cover", "aria-hidden": "true" }) }),
19
+ avatar && /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-full overflow-hidden relative", children: /* @__PURE__ */ jsx(
20
+ Image,
21
+ {
22
+ src: avatar,
23
+ alt: "",
24
+ fill: true,
25
+ className: "object-cover",
26
+ "aria-hidden": "true"
27
+ }
28
+ ) }),
15
29
  /* @__PURE__ */ jsxs("div", { children: [
16
30
  /* @__PURE__ */ jsx("cite", { className: "text-sm font-medium text-fg not-italic", children: author }),
17
31
  role && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted", children: role })
@@ -24,11 +38,25 @@ function TestimonialsBase({ children }) {
24
38
  return /* @__PURE__ */ jsx("div", { className: "grid gap-4 md:grid-cols-2 my-6", children });
25
39
  }
26
40
  const Testimonials = memo(TestimonialsBase);
27
- function TestimonialBase({ children, author, role, avatar }) {
41
+ function TestimonialBase({
42
+ children,
43
+ author,
44
+ role,
45
+ avatar
46
+ }) {
28
47
  return /* @__PURE__ */ jsxs("figure", { className: "p-5 rounded-xl border border-line bg-surface/30", children: [
29
48
  /* @__PURE__ */ jsx("blockquote", { className: "text-sm text-muted leading-relaxed", children }),
30
49
  /* @__PURE__ */ jsxs("figcaption", { className: "mt-4 flex items-center gap-3", children: [
31
- avatar && /* @__PURE__ */ jsx("div", { className: "w-8 h-8 rounded-full overflow-hidden relative", children: /* @__PURE__ */ jsx(Image, { src: avatar, alt: "", fill: true, className: "object-cover", "aria-hidden": "true" }) }),
50
+ avatar && /* @__PURE__ */ jsx("div", { className: "w-8 h-8 rounded-full overflow-hidden relative", children: /* @__PURE__ */ jsx(
51
+ Image,
52
+ {
53
+ src: avatar,
54
+ alt: "",
55
+ fill: true,
56
+ className: "object-cover",
57
+ "aria-hidden": "true"
58
+ }
59
+ ) }),
32
60
  /* @__PURE__ */ jsxs("div", { children: [
33
61
  /* @__PURE__ */ jsx("cite", { className: "text-sm font-medium text-fg not-italic", children: author }),
34
62
  role && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted", children: role })
@@ -5,14 +5,14 @@ import { getNextIndex } from '../hooks/arrownav';
5
5
 
6
6
  const RadioContext = createContext(null);
7
7
  const sizes = {
8
- sm: { radio: "h-3.5 w-3.5", label: "text-xs" },
9
- md: { radio: "h-4 w-4", label: "text-sm" },
10
- lg: { radio: "h-5 w-5", label: "text-base" }
8
+ lg: { label: "text-base", radio: "h-5 w-5" },
9
+ md: { label: "text-sm", radio: "h-4 w-4" },
10
+ sm: { label: "text-xs", radio: "h-3.5 w-3.5" }
11
11
  };
12
12
  const dotSizes = {
13
- sm: "h-1.5 w-1.5",
13
+ lg: "h-2.5 w-2.5",
14
14
  md: "h-2 w-2",
15
- lg: "h-2.5 w-2.5"
15
+ sm: "h-1.5 w-1.5"
16
16
  };
17
17
  function RadioBase({
18
18
  value,
@@ -21,17 +21,23 @@ function RadioBase({
21
21
  className = ""
22
22
  }) {
23
23
  const ctx = useContext(RadioContext);
24
- if (!ctx) throw new Error("Radio must be used within RadioGroup");
24
+ if (!ctx) {
25
+ throw new Error("Radio must be used within RadioGroup");
26
+ }
25
27
  const id = useId();
26
28
  const checked = ctx.value === value;
27
29
  const disabled = localDisabled || ctx.disabled;
28
30
  const handleClick = () => {
29
- if (!disabled) ctx.onChange(value);
31
+ if (!disabled) {
32
+ ctx.onChange(value);
33
+ }
30
34
  };
31
35
  const handleKeyDown = (e) => {
32
36
  if (e.key === " " || e.key === "Enter") {
33
37
  e.preventDefault();
34
- if (!disabled) ctx.onChange(value);
38
+ if (!disabled) {
39
+ ctx.onChange(value);
40
+ }
35
41
  }
36
42
  };
37
43
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", "data-radio-value": value, children: [
@@ -57,7 +63,13 @@ function RadioBase({
57
63
  ${sizes[ctx.size].radio}
58
64
  ${className}
59
65
  `.trim(),
60
- children: checked && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: `rounded-full bg-accent ${dotSizes[ctx.size]}` })
66
+ children: checked && /* @__PURE__ */ jsx(
67
+ "span",
68
+ {
69
+ "aria-hidden": "true",
70
+ className: `rounded-full bg-accent ${dotSizes[ctx.size]}`
71
+ }
72
+ )
61
73
  }
62
74
  ),
63
75
  label && /* @__PURE__ */ jsx(
@@ -92,34 +104,40 @@ function RadioGroupBase({
92
104
  const isControlled = controlledValue !== void 0;
93
105
  const value = isControlled ? controlledValue : internalValue;
94
106
  const handleChange = (newValue) => {
95
- if (!isControlled) setInternalValue(newValue);
107
+ if (!isControlled) {
108
+ setInternalValue(newValue);
109
+ }
96
110
  onChange?.(newValue);
97
111
  };
98
112
  const handleKeyDown = (e) => {
99
- const radios = Array.from(
100
- e.currentTarget.querySelectorAll('[role="radio"]:not([disabled])')
101
- );
113
+ const radios = [
114
+ ...e.currentTarget.querySelectorAll('[role="radio"]:not([disabled])')
115
+ ];
102
116
  const currentIndex = radios.findIndex((r) => r === document.activeElement);
103
117
  const nextIndex = getNextIndex(e.key, {
104
118
  count: radios.length,
105
- current: currentIndex >= 0 ? currentIndex : 0,
119
+ current: Math.max(currentIndex, 0),
106
120
  direction: "both",
107
121
  wrap: true
108
122
  });
109
- if (nextIndex === currentIndex) return;
123
+ if (nextIndex === currentIndex) {
124
+ return;
125
+ }
110
126
  e.preventDefault();
111
127
  const nextRadio = radios[nextIndex];
112
128
  if (nextRadio) {
113
129
  nextRadio.focus();
114
130
  const wrapper = nextRadio.closest("[data-radio-value]");
115
- const radioValue = wrapper?.getAttribute("data-radio-value");
116
- if (radioValue) handleChange(radioValue);
131
+ const radioValue = wrapper?.dataset.radioValue;
132
+ if (radioValue) {
133
+ handleChange(radioValue);
134
+ }
117
135
  }
118
136
  };
119
137
  return /* @__PURE__ */ jsx(
120
138
  RadioContext.Provider,
121
139
  {
122
- value: { name: groupName, value, size, disabled, onChange: handleChange },
140
+ value: { disabled, name: groupName, onChange: handleChange, size, value },
123
141
  children: /* @__PURE__ */ jsx(
124
142
  "div",
125
143
  {
@@ -37,7 +37,9 @@ function RatingBase({
37
37
  }, []);
38
38
  const handleKeyDown = useCallback(
39
39
  (e, index) => {
40
- if (readonly) return;
40
+ if (readonly) {
41
+ return;
42
+ }
41
43
  if (e.key === " " || e.key === "Enter") {
42
44
  e.preventDefault();
43
45
  onChange?.(index + 1);
@@ -49,7 +51,9 @@ function RatingBase({
49
51
  direction: "both",
50
52
  wrap: true
51
53
  });
52
- if (next === index) return;
54
+ if (next === index) {
55
+ return;
56
+ }
53
57
  e.preventDefault();
54
58
  setFocus(next);
55
59
  refs.current[next]?.focus();
@@ -87,7 +91,14 @@ function RatingBase({
87
91
  onMouseEnter: () => handleMouseEnter(index),
88
92
  onMouseLeave: handleMouseLeave,
89
93
  className: `transition-colors ${readonly ? "cursor-default" : "cursor-pointer hover:text-yellow-400"} ${filled ? "text-yellow-400" : "text-muted/30"}`,
90
- children: /* @__PURE__ */ jsx(IconStar, { "aria-hidden": "true", size: 20, fill: filled ? "currentColor" : "none" })
94
+ children: /* @__PURE__ */ jsx(
95
+ IconStar,
96
+ {
97
+ "aria-hidden": "true",
98
+ size: 20,
99
+ fill: filled ? "currentColor" : "none"
100
+ }
101
+ )
91
102
  },
92
103
  i
93
104
  );
@@ -7,6 +7,6 @@ interface RecentProps {
7
7
  onSelect: (query: string) => void;
8
8
  }
9
9
  declare function getRecentOptionId(index: number): string;
10
- declare function Recent({ listId, items, selected, onSelect }: RecentProps): JSX.Element | null;
10
+ declare function Recent({ listId, items, selected, onSelect, }: RecentProps): JSX.Element | null;
11
11
 
12
12
  export { Recent, type RecentProps, getRecentOptionId };
@@ -4,19 +4,35 @@ import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  function getRecentOptionId(index) {
5
5
  return `search-recent-option-${index}`;
6
6
  }
7
- function Recent({ listId, items, selected, onSelect }) {
8
- if (items.length === 0) return null;
7
+ function Recent({
8
+ listId,
9
+ items,
10
+ selected,
11
+ onSelect
12
+ }) {
13
+ if (items.length === 0) {
14
+ return null;
15
+ }
9
16
  return /* @__PURE__ */ jsxs("div", { className: "p-2", children: [
10
17
  /* @__PURE__ */ jsx("div", { className: "px-3 py-1.5 text-[10px] uppercase tracking-wider text-dim", children: "recent" }),
11
- /* @__PURE__ */ jsx("ul", { id: listId, role: "listbox", children: items.map((item, index) => /* @__PURE__ */ jsx("li", { id: getRecentOptionId(index), role: "option", "aria-selected": index === selected, children: /* @__PURE__ */ jsx(
12
- "button",
18
+ /* @__PURE__ */ jsx("ul", { id: listId, role: "listbox", children: items.map((item, index) => /* @__PURE__ */ jsx(
19
+ "li",
13
20
  {
14
- type: "button",
15
- onClick: () => onSelect(item),
16
- className: `w-full text-left px-3 py-2 rounded-lg text-sm transition-colors focus:outline-none focus:ring-1 focus:ring-line ${index === selected ? "bg-bg border border-line text-fg" : "text-muted hover:bg-bg/50"}`,
17
- children: item
18
- }
19
- ) }, item)) })
21
+ id: getRecentOptionId(index),
22
+ role: "option",
23
+ "aria-selected": index === selected,
24
+ children: /* @__PURE__ */ jsx(
25
+ "button",
26
+ {
27
+ type: "button",
28
+ onClick: () => onSelect(item),
29
+ className: `w-full text-left px-3 py-2 rounded-lg text-sm transition-colors focus:outline-none focus:ring-1 focus:ring-line ${index === selected ? "bg-bg border border-line text-fg" : "text-muted hover:bg-bg/50"}`,
30
+ children: item
31
+ }
32
+ )
33
+ },
34
+ item
35
+ )) })
20
36
  ] });
21
37
  }
22
38
 
@@ -3,18 +3,22 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { memo } from 'react';
4
4
 
5
5
  const aboveClasses = {
6
- sm: "hidden sm:block",
7
- md: "hidden md:block",
8
6
  lg: "hidden lg:block",
7
+ md: "hidden md:block",
8
+ sm: "hidden sm:block",
9
9
  xl: "hidden xl:block"
10
10
  };
11
11
  const belowClasses = {
12
- sm: "sm:hidden",
13
- md: "md:hidden",
14
12
  lg: "lg:hidden",
13
+ md: "md:hidden",
14
+ sm: "sm:hidden",
15
15
  xl: "xl:hidden"
16
16
  };
17
- const Show = memo(function Show2({ above, below, children }) {
17
+ const Show = memo(function Show2({
18
+ above,
19
+ below,
20
+ children
21
+ }) {
18
22
  let className = "";
19
23
  if (above) {
20
24
  className = aboveClasses[above];
@@ -30,28 +34,32 @@ const colClasses = {
30
34
  4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
31
35
  };
32
36
  const gapClasses = {
33
- sm: "gap-2",
37
+ lg: "gap-6",
34
38
  md: "gap-4",
35
- lg: "gap-6"
39
+ sm: "gap-2"
36
40
  };
37
- const Grid = memo(function Grid2({ cols = 2, gap = "md", children }) {
41
+ const Grid = memo(function Grid2({
42
+ cols = 2,
43
+ gap = "md",
44
+ children
45
+ }) {
38
46
  return /* @__PURE__ */ jsx("div", { className: `grid ${colClasses[cols]} ${gapClasses[gap]} my-6`, children });
39
47
  });
40
48
  const directionClasses = {
41
- row: "flex-row",
42
- col: "flex-col"
49
+ col: "flex-col",
50
+ row: "flex-row"
43
51
  };
44
52
  const alignClasses = {
45
- start: "items-start",
46
53
  center: "items-center",
47
54
  end: "items-end",
55
+ start: "items-start",
48
56
  stretch: "items-stretch"
49
57
  };
50
58
  const justifyClasses = {
51
- start: "justify-start",
59
+ between: "justify-between",
52
60
  center: "justify-center",
53
61
  end: "justify-end",
54
- between: "justify-between"
62
+ start: "justify-start"
55
63
  };
56
64
  const Flex = memo(function Flex2({
57
65
  direction = "row",
@@ -3,12 +3,16 @@ import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { useMemo } from 'react';
4
4
 
5
5
  function highlightMatch(text, query) {
6
- if (!query.trim()) return text;
6
+ if (!query.trim()) {
7
+ return text;
8
+ }
7
9
  const words = query.trim().split(/\s+/).filter(Boolean);
8
- const escaped = words.map((w) => w.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|");
10
+ const escaped = words.map((w) => w.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|");
9
11
  const pattern = new RegExp(`(${escaped})`, "gi");
10
12
  const parts = text.split(pattern);
11
- if (parts.length === 1) return text;
13
+ if (parts.length === 1) {
14
+ return text;
15
+ }
12
16
  const matcher = new RegExp(`^(?:${escaped})$`, "i");
13
17
  return parts.map(
14
18
  (part, i) => matcher.test(part) ? /* @__PURE__ */ jsx("mark", { className: "bg-transparent text-fg font-medium", children: part }, i) : part
@@ -43,7 +47,7 @@ function Results({
43
47
  }) {
44
48
  const grouped = useMemo(() => groupResults(results), [results]);
45
49
  let idx = 0;
46
- return /* @__PURE__ */ jsx("ul", { ref: listRef, id: listId, role: "listbox", className: "p-2", children: Array.from(grouped.entries()).map(([category, items]) => /* @__PURE__ */ jsxs("li", { role: "presentation", children: [
50
+ return /* @__PURE__ */ jsx("ul", { ref: listRef, id: listId, role: "listbox", className: "p-2", children: [...grouped.entries()].map(([category, items]) => /* @__PURE__ */ jsxs("li", { role: "presentation", children: [
47
51
  /* @__PURE__ */ jsx("div", { className: "px-3 pt-2 pb-1 text-[10px] font-medium text-dim uppercase tracking-wider", children: category }),
48
52
  /* @__PURE__ */ jsx("ul", { role: "group", children: items.map((result) => {
49
53
  const i = idx++;
@@ -9,27 +9,67 @@ const Screenshot = memo(function Screenshot2({
9
9
  browser = true,
10
10
  className = ""
11
11
  }) {
12
- return /* @__PURE__ */ jsxs("figure", { className: `my-6 ${className}`, role: "figure", "aria-label": caption || alt, children: [
13
- browser ? /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-line overflow-hidden bg-surface", children: [
14
- /* @__PURE__ */ jsxs(
15
- "div",
16
- {
17
- className: "flex items-center gap-2 px-4 py-2.5 border-b border-line bg-bg",
18
- "aria-hidden": "true",
19
- children: [
20
- /* @__PURE__ */ jsxs("div", { className: "flex gap-1.5", children: [
21
- /* @__PURE__ */ jsx("span", { className: "w-3 h-3 rounded-full bg-red-500/80", "aria-hidden": "true" }),
22
- /* @__PURE__ */ jsx("span", { className: "w-3 h-3 rounded-full bg-yellow-500/80", "aria-hidden": "true" }),
23
- /* @__PURE__ */ jsx("span", { className: "w-3 h-3 rounded-full bg-green-500/80", "aria-hidden": "true" })
24
- ] }),
25
- /* @__PURE__ */ jsx("div", { className: "flex-1 mx-8", children: /* @__PURE__ */ jsx("div", { className: "h-6 rounded bg-surface/80 border border-line", "aria-hidden": "true" }) })
26
- ]
27
- }
28
- ),
29
- /* @__PURE__ */ jsx("div", { className: "relative w-full aspect-video", children: /* @__PURE__ */ jsx(Image, { src, alt, fill: true, className: "object-cover object-top" }) })
30
- ] }) : /* @__PURE__ */ jsx("div", { className: "relative w-full aspect-video rounded-lg border border-line overflow-hidden", children: /* @__PURE__ */ jsx(Image, { src, alt, fill: true, className: "object-cover object-top" }) }),
31
- caption && /* @__PURE__ */ jsx("figcaption", { className: "mt-2 text-center text-sm text-muted", children: caption })
32
- ] });
12
+ return /* @__PURE__ */ jsxs(
13
+ "figure",
14
+ {
15
+ className: `my-6 ${className}`,
16
+ role: "figure",
17
+ "aria-label": caption || alt,
18
+ children: [
19
+ browser ? /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-line overflow-hidden bg-surface", children: [
20
+ /* @__PURE__ */ jsxs(
21
+ "div",
22
+ {
23
+ className: "flex items-center gap-2 px-4 py-2.5 border-b border-line bg-bg",
24
+ "aria-hidden": "true",
25
+ children: [
26
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-1.5", children: [
27
+ /* @__PURE__ */ jsx(
28
+ "span",
29
+ {
30
+ className: "w-3 h-3 rounded-full bg-red-500/80",
31
+ "aria-hidden": "true"
32
+ }
33
+ ),
34
+ /* @__PURE__ */ jsx(
35
+ "span",
36
+ {
37
+ className: "w-3 h-3 rounded-full bg-yellow-500/80",
38
+ "aria-hidden": "true"
39
+ }
40
+ ),
41
+ /* @__PURE__ */ jsx(
42
+ "span",
43
+ {
44
+ className: "w-3 h-3 rounded-full bg-green-500/80",
45
+ "aria-hidden": "true"
46
+ }
47
+ )
48
+ ] }),
49
+ /* @__PURE__ */ jsx("div", { className: "flex-1 mx-8", children: /* @__PURE__ */ jsx(
50
+ "div",
51
+ {
52
+ className: "h-6 rounded bg-surface/80 border border-line",
53
+ "aria-hidden": "true"
54
+ }
55
+ ) })
56
+ ]
57
+ }
58
+ ),
59
+ /* @__PURE__ */ jsx("div", { className: "relative w-full aspect-video", children: /* @__PURE__ */ jsx(
60
+ Image,
61
+ {
62
+ src,
63
+ alt,
64
+ fill: true,
65
+ className: "object-cover object-top"
66
+ }
67
+ ) })
68
+ ] }) : /* @__PURE__ */ jsx("div", { className: "relative w-full aspect-video rounded-lg border border-line overflow-hidden", children: /* @__PURE__ */ jsx(Image, { src, alt, fill: true, className: "object-cover object-top" }) }),
69
+ caption && /* @__PURE__ */ jsx("figcaption", { className: "mt-2 text-center text-sm text-muted", children: caption })
70
+ ]
71
+ }
72
+ );
33
73
  });
34
74
  const Frame = memo(function Frame2({
35
75
  children,
@@ -10,9 +10,11 @@ function ScrollProgressBase({
10
10
  const [progress, setProgress] = useState(0);
11
11
  const rafRef = useRef(0);
12
12
  const handleScroll = useCallback(() => {
13
- if (rafRef.current) return;
13
+ if (rafRef.current) {
14
+ return;
15
+ }
14
16
  rafRef.current = requestAnimationFrame(() => {
15
- const scrollTop = document.documentElement.scrollTop;
17
+ const { scrollTop } = document.documentElement;
16
18
  const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
17
19
  const newProgress = scrollHeight > 0 ? scrollTop / scrollHeight * 100 : 0;
18
20
  setProgress(newProgress);
@@ -24,7 +26,9 @@ function ScrollProgressBase({
24
26
  window.addEventListener("scroll", handleScroll, { passive: true });
25
27
  return () => {
26
28
  window.removeEventListener("scroll", handleScroll);
27
- if (rafRef.current) cancelAnimationFrame(rafRef.current);
29
+ if (rafRef.current) {
30
+ cancelAnimationFrame(rafRef.current);
31
+ }
28
32
  };
29
33
  }, [handleScroll]);
30
34
  const rounded = Math.round(progress);
@@ -43,8 +47,8 @@ function ScrollProgressBase({
43
47
  {
44
48
  className: "h-full transition-[width] duration-100",
45
49
  style: {
46
- width: `${progress}%`,
47
- backgroundColor: color
50
+ backgroundColor: color,
51
+ width: `${progress}%`
48
52
  }
49
53
  }
50
54
  )
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
 
4
- type ScrollSpyProps = {
4
+ interface ScrollSpyProps {
5
5
  items: {
6
6
  id: string;
7
7
  label: string;
@@ -11,7 +11,7 @@ type ScrollSpyProps = {
11
11
  activeClassName?: string;
12
12
  offset?: number;
13
13
  as?: React.ElementType;
14
- };
14
+ }
15
15
  declare function ScrollSpy({ items, className, activeClassName, offset, as: Tag, }: ScrollSpyProps): react_jsx_runtime.JSX.Element;
16
16
  declare const ScrollSpyComponent: react.MemoExoticComponent<typeof ScrollSpy>;
17
17
 
@@ -12,10 +12,14 @@ function ScrollSpy({
12
12
  const [activeId, setActiveId] = useState("");
13
13
  useEffect(() => {
14
14
  const elements = items.map((item) => document.getElementById(item.id)).filter((item) => item instanceof HTMLElement);
15
- if (elements.length === 0) return;
15
+ if (elements.length === 0) {
16
+ return;
17
+ }
16
18
  const observer = new IntersectionObserver(
17
19
  (entries) => {
18
- const visible = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
20
+ const visible = entries.filter((e) => e.isIntersecting).sort(
21
+ (a, b) => a.boundingClientRect.top - b.boundingClientRect.top
22
+ );
19
23
  const first = visible[0];
20
24
  if (first?.target instanceof HTMLElement) {
21
25
  setActiveId(first.target.id);
@@ -33,7 +37,9 @@ function ScrollSpy({
33
37
  return /* @__PURE__ */ jsx(Tag, { className, children: /* @__PURE__ */ jsx("ul", { children: items.map((item) => /* @__PURE__ */ jsx(
34
38
  "li",
35
39
  {
36
- style: { paddingLeft: item.depth ? `${item.depth * 0.75}rem` : void 0 },
40
+ style: {
41
+ paddingLeft: item.depth ? `${item.depth * 0.75}rem` : void 0
42
+ },
37
43
  children: /* @__PURE__ */ jsx(
38
44
  "a",
39
45
  {