@catalystsoftware/ui 1.0.11 → 1.0.14

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 (1840) hide show
  1. package/README.md +309 -0
  2. package/dist/components/catalyst-ui/background/animated-beam.tsx +189 -0
  3. package/dist/components/catalyst-ui/background/background-gradient.tsx +77 -0
  4. package/dist/components/catalyst-ui/background/background-paths.tsx +132 -0
  5. package/dist/components/catalyst-ui/background/canvas-fractal-grid.tsx +1862 -0
  6. package/dist/components/catalyst-ui/background/distorted-glass.tsx +0 -0
  7. package/dist/components/catalyst-ui/background/dot-pattern.tsx +169 -0
  8. package/dist/components/catalyst-ui/background/dotted-glow-background.tsx +342 -0
  9. package/dist/components/catalyst-ui/background/dotted-map.tsx +193 -0
  10. package/dist/components/catalyst-ui/background/dynamic-rain.tsx +216 -0
  11. package/dist/components/catalyst-ui/background/flickering-grid.tsx +211 -0
  12. package/dist/components/catalyst-ui/background/fractal-grid.tsx +666 -0
  13. package/dist/components/catalyst-ui/background/hexagon-background.tsx +102 -0
  14. package/dist/components/catalyst-ui/background/index.ts +25 -0
  15. package/dist/components/catalyst-ui/background/interactive-grid-pattern.tsx +90 -0
  16. package/dist/components/catalyst-ui/background/lamp.tsx +105 -0
  17. package/dist/components/catalyst-ui/background/orbiting-circles.tsx +76 -0
  18. package/dist/components/catalyst-ui/background/particles.tsx +286 -0
  19. package/dist/components/catalyst-ui/background/progressive-blur.tsx +113 -0
  20. package/dist/components/catalyst-ui/background/retro-grid-background.tsx +104 -0
  21. package/dist/components/catalyst-ui/background/smoke.tsx +117 -0
  22. package/dist/components/catalyst-ui/background/sparkles.tsx +435 -0
  23. package/dist/components/catalyst-ui/background/stripe-bg-guides.tsx +260 -0
  24. package/dist/components/catalyst-ui/background/texture-overlay.tsx +207 -0
  25. package/dist/components/catalyst-ui/background/vortex.tsx +257 -0
  26. package/dist/components/catalyst-ui/buttons/animated-theme-toggler.tsx +90 -0
  27. package/dist/components/catalyst-ui/buttons/attract-button.tsx +167 -0
  28. package/dist/components/catalyst-ui/buttons/bg-animate-button.tsx +249 -0
  29. package/dist/components/catalyst-ui/buttons/button-group.tsx +203 -0
  30. package/dist/components/catalyst-ui/buttons/command-button.tsx +109 -0
  31. package/dist/components/catalyst-ui/buttons/copy-button.tsx +117 -0
  32. package/dist/components/catalyst-ui/buttons/copy-text.tsx +347 -0
  33. package/dist/components/catalyst-ui/buttons/export-file.tsx +262 -0
  34. package/dist/components/catalyst-ui/buttons/flip-button.tsx +106 -0
  35. package/dist/components/catalyst-ui/buttons/float-button.tsx +197 -0
  36. package/dist/components/catalyst-ui/buttons/form-button.tsx +90 -0
  37. package/dist/components/catalyst-ui/buttons/hold-button.tsx +208 -0
  38. package/dist/components/catalyst-ui/buttons/index.ts +35 -0
  39. package/dist/components/catalyst-ui/buttons/input-button.tsx +192 -0
  40. package/dist/components/catalyst-ui/buttons/liquid-button.tsx +53 -0
  41. package/dist/components/catalyst-ui/buttons/particle-button.tsx +193 -0
  42. package/dist/components/catalyst-ui/buttons/rating-button-1.tsx +243 -0
  43. package/dist/components/catalyst-ui/buttons/rating-button.tsx +226 -0
  44. package/dist/components/catalyst-ui/buttons/ripple-button.tsx +146 -0
  45. package/dist/components/catalyst-ui/buttons/scroll-to-top.tsx +47 -0
  46. package/dist/components/catalyst-ui/buttons/shimmer-button.tsx +84 -0
  47. package/dist/components/catalyst-ui/buttons/slide-button.tsx +90 -0
  48. package/dist/components/catalyst-ui/buttons/social-button.tsx +194 -0
  49. package/dist/components/catalyst-ui/buttons/split-button.tsx +121 -0
  50. package/dist/components/catalyst-ui/buttons/switch-button.tsx +316 -0
  51. package/dist/components/catalyst-ui/buttons/text-reveal-button.tsx +65 -0
  52. package/dist/components/catalyst-ui/buttons/theme-switcher.tsx +102 -0
  53. package/dist/components/catalyst-ui/buttons/theme-toggle-button.tsx +312 -0
  54. package/dist/components/catalyst-ui/buttons/toggle-button.tsx +125 -0
  55. package/dist/components/catalyst-ui/buttons/tooltip-button.tsx +24 -0
  56. package/dist/components/catalyst-ui/charts/area-chart.tsx +989 -0
  57. package/dist/components/catalyst-ui/charts/bar-chart.tsx +887 -0
  58. package/dist/components/catalyst-ui/charts/bar-list.tsx +171 -0
  59. package/dist/components/catalyst-ui/charts/category-bar.tsx +221 -0
  60. package/dist/components/catalyst-ui/charts/chart-utils.ts +168 -0
  61. package/dist/components/catalyst-ui/charts/combo-chart.tsx +1179 -0
  62. package/dist/components/catalyst-ui/charts/donut-chart.tsx +337 -0
  63. package/dist/components/catalyst-ui/charts/index.ts +14 -0
  64. package/dist/components/catalyst-ui/charts/line-chart.tsx +907 -0
  65. package/dist/components/catalyst-ui/charts/spark-chart.tsx +328 -0
  66. package/dist/components/catalyst-ui/chat/chat.tsx +491 -0
  67. package/dist/components/catalyst-ui/code/code-block-section.tsx +939 -0
  68. package/dist/components/catalyst-ui/code/code-comparison.tsx +221 -0
  69. package/dist/components/catalyst-ui/code/code-comparison1.tsx +203 -0
  70. package/dist/components/catalyst-ui/code/code-editor.tsx +318 -0
  71. package/dist/components/catalyst-ui/code/code-section.tsx +62 -0
  72. package/dist/components/catalyst-ui/code/css-section.tsx +142 -0
  73. package/dist/components/catalyst-ui/code/html-section.tsx +102 -0
  74. package/dist/components/catalyst-ui/code/index.ts +22 -0
  75. package/dist/components/catalyst-ui/code/installCode-section.tsx +181 -0
  76. package/dist/components/catalyst-ui/code/installCodeArray-section.tsx +186 -0
  77. package/dist/components/catalyst-ui/code/installGithub-section.tsx +119 -0
  78. package/dist/components/catalyst-ui/code/json-section.tsx +253 -0
  79. package/dist/components/catalyst-ui/code/props-section.tsx +605 -0
  80. package/dist/components/catalyst-ui/code/sandbox.tsx +398 -0
  81. package/dist/components/catalyst-ui/code/sandbox2.tsx +3194 -0
  82. package/dist/components/catalyst-ui/code/terminal-1.tsx +119 -0
  83. package/dist/components/catalyst-ui/code/terminal-code-section.tsx +395 -0
  84. package/dist/components/catalyst-ui/code/terminal.tsx +315 -0
  85. package/dist/components/catalyst-ui/code/tsx-section.tsx +176 -0
  86. package/dist/components/catalyst-ui/comboboxes/choicebox.tsx +203 -0
  87. package/dist/components/catalyst-ui/comboboxes/combobox-0.tsx +556 -0
  88. package/dist/components/catalyst-ui/comboboxes/combobox-1.tsx +146 -0
  89. package/dist/components/catalyst-ui/comboboxes/combobox2.tsx +255 -0
  90. package/dist/components/catalyst-ui/comboboxes/emoji-picker.tsx +486 -0
  91. package/dist/components/catalyst-ui/comboboxes/filter-combobox.tsx +46 -0
  92. package/dist/components/catalyst-ui/comboboxes/index.ts +9 -0
  93. package/dist/components/catalyst-ui/comboboxes/multi-combobox.tsx +169 -0
  94. package/dist/components/catalyst-ui/comboboxes/nested-combobox.tsx +211 -0
  95. package/dist/components/catalyst-ui/commands/command-2.tsx +126 -0
  96. package/dist/components/catalyst-ui/commands/command-w-combobox.tsx +108 -0
  97. package/dist/components/catalyst-ui/commands/index.ts +6 -0
  98. package/dist/components/catalyst-ui/commands/nested-command-dialog.tsx +429 -0
  99. package/dist/components/catalyst-ui/commands/nested-command.tsx +133 -0
  100. package/dist/components/catalyst-ui/core/components/3d-card.tsx +144 -0
  101. package/dist/components/catalyst-ui/core/components/3d-card1.tsx +196 -0
  102. package/dist/components/catalyst-ui/core/components/android.tsx +105 -0
  103. package/dist/components/catalyst-ui/core/components/apple-cards-carousel.tsx +376 -0
  104. package/dist/components/catalyst-ui/core/components/apple-dock.tsx +280 -0
  105. package/dist/components/catalyst-ui/core/components/badge-1.tsx +117 -0
  106. package/dist/components/catalyst-ui/core/components/card-flip.tsx +204 -0
  107. package/dist/components/catalyst-ui/core/components/card-stack.tsx +224 -0
  108. package/dist/components/catalyst-ui/core/components/chat-bubble.tsx +198 -0
  109. package/dist/components/catalyst-ui/core/components/collapsible-section.tsx +92 -0
  110. package/dist/components/catalyst-ui/core/components/comment.tsx +812 -0
  111. package/dist/components/catalyst-ui/core/components/counter.tsx +77 -0
  112. package/dist/components/catalyst-ui/core/components/credit-card.tsx +406 -0
  113. package/dist/components/catalyst-ui/core/components/device-mockup.tsx +436 -0
  114. package/dist/components/catalyst-ui/core/components/embed.tsx +0 -0
  115. package/dist/components/catalyst-ui/core/components/faq.tsx +166 -0
  116. package/dist/components/catalyst-ui/core/components/feed.tsx +741 -0
  117. package/dist/components/catalyst-ui/core/components/fixed-marker.tsx +232 -0
  118. package/dist/components/catalyst-ui/core/components/for.tsx +138 -0
  119. package/dist/components/catalyst-ui/core/components/glowing-effect-card.tsx +273 -0
  120. package/dist/components/catalyst-ui/core/components/iframe.tsx +175 -0
  121. package/dist/components/catalyst-ui/core/components/in-place.tsx +285 -0
  122. package/dist/components/catalyst-ui/core/components/iphone-15-pro.tsx +129 -0
  123. package/dist/components/catalyst-ui/core/components/macbook-scroll.tsx +702 -0
  124. package/dist/components/catalyst-ui/core/components/magic-card.tsx +102 -0
  125. package/dist/components/catalyst-ui/core/components/message-dock.tsx +61 -0
  126. package/dist/components/catalyst-ui/core/components/meter.tsx +123 -0
  127. package/dist/components/catalyst-ui/core/components/number-ticker.tsx +67 -0
  128. package/dist/components/catalyst-ui/core/components/panel.tsx +286 -0
  129. package/dist/components/catalyst-ui/core/components/pill-1.tsx +166 -0
  130. package/dist/components/catalyst-ui/core/components/qrcode.tsx +1153 -0
  131. package/dist/components/catalyst-ui/core/components/safari-device.tsx +197 -0
  132. package/dist/components/catalyst-ui/core/components/sliding-number.tsx +235 -0
  133. package/dist/components/catalyst-ui/core/components/spoiler.tsx +161 -0
  134. package/dist/components/catalyst-ui/core/components/stat.tsx +572 -0
  135. package/dist/components/catalyst-ui/core/components/sticky.tsx +214 -0
  136. package/dist/components/catalyst-ui/core/components/tag.tsx +551 -0
  137. package/dist/components/catalyst-ui/core/components/tweet-card-1.tsx +164 -0
  138. package/dist/components/catalyst-ui/core/components/tweet-card.tsx +229 -0
  139. package/dist/components/catalyst-ui/core/data-display/barcode.tsx +1007 -0
  140. package/dist/components/catalyst-ui/core/data-display/data-list.tsx +344 -0
  141. package/dist/components/catalyst-ui/core/data-display/descriptionLists.tsx +205 -0
  142. package/dist/components/catalyst-ui/core/data-display/diff.tsx +186 -0
  143. package/dist/components/catalyst-ui/core/data-display/heat-map-calendar.tsx +361 -0
  144. package/dist/components/catalyst-ui/core/data-display/order-list.tsx +0 -0
  145. package/dist/components/catalyst-ui/core/data-display/stats-1.tsx +129 -0
  146. package/dist/components/catalyst-ui/core/data-display/stats.tsx +139 -0
  147. package/dist/components/catalyst-ui/core/data-display/ticker.tsx +179 -0
  148. package/dist/components/catalyst-ui/core/data-display/timeline-1.tsx +452 -0
  149. package/dist/components/catalyst-ui/core/data-display/timeline2.tsx +240 -0
  150. package/dist/components/catalyst-ui/core/data-display/tracker.tsx +209 -0
  151. package/dist/components/catalyst-ui/core/data-display/transfer-list.tsx +278 -0
  152. package/dist/components/catalyst-ui/core/data-display/tremor-tracker.tsx +103 -0
  153. package/dist/components/catalyst-ui/core/demos/FAQ-demo.tsx +41 -0
  154. package/dist/components/catalyst-ui/core/demos/action-panels-demo.tsx +64 -0
  155. package/dist/components/catalyst-ui/core/demos/banner-demo.tsx +100 -0
  156. package/dist/components/catalyst-ui/core/demos/bentoGrid-demo.tsx +191 -0
  157. package/dist/components/catalyst-ui/core/demos/blog-demo.tsx +68 -0
  158. package/dist/components/catalyst-ui/core/demos/blogEditor-demo.tsx +10 -0
  159. package/dist/components/catalyst-ui/core/demos/blogPost-demo.tsx +41 -0
  160. package/dist/components/catalyst-ui/core/demos/button-groups-demo.tsx +111 -0
  161. package/dist/components/catalyst-ui/core/demos/cardHeadings-demo.tsx +65 -0
  162. package/dist/components/catalyst-ui/core/demos/catch-all.tsx +414 -0
  163. package/dist/components/catalyst-ui/core/demos/contact-demo.tsx +87 -0
  164. package/dist/components/catalyst-ui/core/demos/content-demo.tsx +52 -0
  165. package/dist/components/catalyst-ui/core/demos/cta-demo.tsx +64 -0
  166. package/dist/components/catalyst-ui/core/demos/descriptionLists-demo.tsx +109 -0
  167. package/dist/components/catalyst-ui/core/demos/edit-product-page-demo.tsx +11 -0
  168. package/dist/components/catalyst-ui/core/demos/empty-state-demo.tsx +37 -0
  169. package/dist/components/catalyst-ui/core/demos/feature-demo.tsx +104 -0
  170. package/dist/components/catalyst-ui/core/demos/feeds-demo.tsx +26 -0
  171. package/dist/components/catalyst-ui/core/demos/flyoutMenu-demo.tsx +156 -0
  172. package/dist/components/catalyst-ui/core/demos/footer-demo.tsx +62 -0
  173. package/dist/components/catalyst-ui/core/demos/form-layouts-demo.tsx +378 -0
  174. package/dist/components/catalyst-ui/core/demos/gridLists-demo.tsx +47 -0
  175. package/dist/components/catalyst-ui/core/demos/header-demo.tsx +0 -0
  176. package/dist/components/catalyst-ui/core/demos/header2-demo.tsx +77 -0
  177. package/dist/components/catalyst-ui/core/demos/headers-demo.tsx +659 -0
  178. package/dist/components/catalyst-ui/core/demos/hero-demo.tsx +75 -0
  179. package/dist/components/catalyst-ui/core/demos/input-groups-demo.tsx +75 -0
  180. package/dist/components/catalyst-ui/core/demos/landingPage-demo.tsx +222 -0
  181. package/dist/components/catalyst-ui/core/demos/list-demo.tsx +442 -0
  182. package/dist/components/catalyst-ui/core/demos/logoClouds-demo.tsx +36 -0
  183. package/dist/components/catalyst-ui/core/demos/mediaObject-demo.tsx +219 -0
  184. package/dist/components/catalyst-ui/core/demos/multiColumnLayouts-demo.tsx +42 -0
  185. package/dist/components/catalyst-ui/core/demos/newsLetter-demo.tsx +51 -0
  186. package/dist/components/catalyst-ui/core/demos/pageHeading-demo.tsx +55 -0
  187. package/dist/components/catalyst-ui/core/demos/pricing-demo.tsx +114 -0
  188. package/dist/components/catalyst-ui/core/demos/radio-group-demo.tsx +315 -0
  189. package/dist/components/catalyst-ui/core/demos/settingsScreen-demo.tsx +95 -0
  190. package/dist/components/catalyst-ui/core/demos/sidebar-demo.tsx +40 -0
  191. package/dist/components/catalyst-ui/core/demos/stackedLayout-demo.tsx +17 -0
  192. package/dist/components/catalyst-ui/core/demos/stackedLists-demo.tsx +60 -0
  193. package/dist/components/catalyst-ui/core/demos/stats-demo.tsx +99 -0
  194. package/dist/components/catalyst-ui/core/demos/team-demo.tsx +35 -0
  195. package/dist/components/catalyst-ui/core/demos/testimonial-demo.tsx +33 -0
  196. package/dist/components/catalyst-ui/core/demos/toggle-demo-demo.tsx +414 -0
  197. package/dist/components/catalyst-ui/core/feedback/alert-variant.tsx +101 -0
  198. package/dist/components/catalyst-ui/core/feedback/announcement.tsx +53 -0
  199. package/dist/components/catalyst-ui/core/feedback/banner-2.tsx +143 -0
  200. package/dist/components/catalyst-ui/core/feedback/banner.tsx +50 -0
  201. package/dist/components/catalyst-ui/core/feedback/banner1.tsx +64 -0
  202. package/dist/components/catalyst-ui/core/feedback/callout.tsx +18 -0
  203. package/dist/components/catalyst-ui/core/feedback/chat-bubble.tsx +770 -0
  204. package/dist/components/catalyst-ui/core/feedback/dimmer.tsx +518 -0
  205. package/dist/components/catalyst-ui/core/feedback/dot-loader.tsx +116 -0
  206. package/dist/components/catalyst-ui/core/feedback/empty-states.tsx +154 -0
  207. package/dist/components/catalyst-ui/core/feedback/hero-badge.tsx +90 -0
  208. package/dist/components/catalyst-ui/core/feedback/indicator.tsx +315 -0
  209. package/dist/components/catalyst-ui/core/feedback/loading.tsx +11 -0
  210. package/dist/components/catalyst-ui/core/feedback/spinner-2.tsx +10 -0
  211. package/dist/components/catalyst-ui/core/feedback/spinner-3.tsx +163 -0
  212. package/dist/components/catalyst-ui/core/feedback/spinner-4.tsx +276 -0
  213. package/dist/components/catalyst-ui/core/feedback/spinner.tsx +287 -0
  214. package/dist/components/catalyst-ui/core/feedback/status.tsx +54 -0
  215. package/dist/components/catalyst-ui/core/headings/cardHeadings.tsx +215 -0
  216. package/dist/components/catalyst-ui/core/headings/pageHeading.tsx +300 -0
  217. package/dist/components/catalyst-ui/core/headings/sectionHeadings.tsx +240 -0
  218. package/dist/components/catalyst-ui/core/heros/animated-hero.tsx +116 -0
  219. package/dist/components/catalyst-ui/core/heros/animated-hero1.tsx +108 -0
  220. package/dist/components/catalyst-ui/core/heros/hero-video-dialog.tsx +150 -0
  221. package/dist/components/catalyst-ui/core/index.ts +248 -0
  222. package/dist/components/catalyst-ui/core/layout/absolute-center.tsx +45 -0
  223. package/dist/components/catalyst-ui/core/layout/bento-grid.tsx +251 -0
  224. package/dist/components/catalyst-ui/core/layout/bento-grid1.tsx +58 -0
  225. package/dist/components/catalyst-ui/core/layout/bento-grid2.tsx +107 -0
  226. package/dist/components/catalyst-ui/core/layout/bento-system.tsx +101 -0
  227. package/dist/components/catalyst-ui/core/layout/box.tsx +231 -0
  228. package/dist/components/catalyst-ui/core/layout/card-layout.tsx +312 -0
  229. package/dist/components/catalyst-ui/core/layout/center.tsx +76 -0
  230. package/dist/components/catalyst-ui/core/layout/container-demo.tsx +340 -0
  231. package/dist/components/catalyst-ui/core/layout/container.tsx +280 -0
  232. package/dist/components/catalyst-ui/core/layout/flexbox-grid.tsx +469 -0
  233. package/dist/components/catalyst-ui/core/layout/grid.tsx +656 -0
  234. package/dist/components/catalyst-ui/core/layout/group.tsx +49 -0
  235. package/dist/components/catalyst-ui/core/layout/list.tsx +665 -0
  236. package/dist/components/catalyst-ui/core/layout/mediaObject.tsx +254 -0
  237. package/dist/components/catalyst-ui/core/layout/rail.tsx +175 -0
  238. package/dist/components/catalyst-ui/core/layout/section.tsx +86 -0
  239. package/dist/components/catalyst-ui/core/layout/stack.tsx +182 -0
  240. package/dist/components/catalyst-ui/core/lists/animated-list.tsx +98 -0
  241. package/dist/components/catalyst-ui/core/lists/feeds.tsx +190 -0
  242. package/dist/components/catalyst-ui/core/lists/file-tree.tsx +379 -0
  243. package/dist/components/catalyst-ui/core/lists/gridLists.tsx +212 -0
  244. package/dist/components/catalyst-ui/core/lists/index.ts +14 -0
  245. package/dist/components/catalyst-ui/core/lists/list-1.tsx +152 -0
  246. package/dist/components/catalyst-ui/core/lists/list.tsx +217 -0
  247. package/dist/components/catalyst-ui/core/lists/list1.tsx +138 -0
  248. package/dist/components/catalyst-ui/core/lists/pin-list.tsx +191 -0
  249. package/dist/components/catalyst-ui/core/lists/stackedLists.tsx +149 -0
  250. package/dist/components/catalyst-ui/core/lists/tables.tsx +615 -0
  251. package/dist/components/catalyst-ui/core/lists/tree.tsx +194 -0
  252. package/dist/components/catalyst-ui/core/modules/createEditSchedule.tsx +389 -0
  253. package/dist/components/catalyst-ui/core/modules/punchClock.tsx +304 -0
  254. package/dist/components/catalyst-ui/core/modules/schedule.tsx +188 -0
  255. package/dist/components/catalyst-ui/core/modules/viewPunchClockEntries.tsx +629 -0
  256. package/dist/components/catalyst-ui/core/navbars/navbar-01.tsx +264 -0
  257. package/dist/components/catalyst-ui/core/navbars/navbar-02.tsx +498 -0
  258. package/dist/components/catalyst-ui/core/navbars/navbar-03.tsx +263 -0
  259. package/dist/components/catalyst-ui/core/navbars/navbar-04.tsx +331 -0
  260. package/dist/components/catalyst-ui/core/navbars/navbar-05.tsx +400 -0
  261. package/dist/components/catalyst-ui/core/navbars/navbar-06.tsx +436 -0
  262. package/dist/components/catalyst-ui/core/navbars/navbar-07.tsx +331 -0
  263. package/dist/components/catalyst-ui/core/navbars/navbar-08.tsx +418 -0
  264. package/dist/components/catalyst-ui/core/navbars/navbar-09.tsx +440 -0
  265. package/dist/components/catalyst-ui/core/navbars/navbar-10.tsx +351 -0
  266. package/dist/components/catalyst-ui/core/navbars/navbar-11.tsx +444 -0
  267. package/dist/components/catalyst-ui/core/navbars/navbar-12/NotificationMenu.tsx +120 -0
  268. package/dist/components/catalyst-ui/core/navbars/navbar-12/TeamSwitcher.tsx +87 -0
  269. package/dist/components/catalyst-ui/core/navbars/navbar-12/UserMenu.tsx +80 -0
  270. package/dist/components/catalyst-ui/core/navbars/navbar-12/navbar-12.tsx +230 -0
  271. package/dist/components/catalyst-ui/core/navbars/navbar-13/UserMenu.tsx +80 -0
  272. package/dist/components/catalyst-ui/core/navbars/navbar-13/navbar-13.tsx +144 -0
  273. package/dist/components/catalyst-ui/core/navbars/navbar-14/InfoMenu.tsx +62 -0
  274. package/dist/components/catalyst-ui/core/navbars/navbar-14/NotificationMenu.tsx +122 -0
  275. package/dist/components/catalyst-ui/core/navbars/navbar-14/SettingsMenu.tsx +66 -0
  276. package/dist/components/catalyst-ui/core/navbars/navbar-14/navbar-14.tsx +156 -0
  277. package/dist/components/catalyst-ui/core/navbars/navbar-15/DatePicker.tsx +66 -0
  278. package/dist/components/catalyst-ui/core/navbars/navbar-15/Filters.tsx +160 -0
  279. package/dist/components/catalyst-ui/core/navbars/navbar-15/navbar-15.tsx +151 -0
  280. package/dist/components/catalyst-ui/core/navbars/navbar-16/AppToggle.tsx +125 -0
  281. package/dist/components/catalyst-ui/core/navbars/navbar-16/TeamSwitcher.tsx +87 -0
  282. package/dist/components/catalyst-ui/core/navbars/navbar-16/navbar-16.tsx +113 -0
  283. package/dist/components/catalyst-ui/core/navbars/navbar-17.tsx +209 -0
  284. package/dist/components/catalyst-ui/core/navbars/navbar-18.tsx +243 -0
  285. package/dist/components/catalyst-ui/core/navbars/navbar-19.tsx +333 -0
  286. package/dist/components/catalyst-ui/core/navigation/affix.tsx +123 -0
  287. package/dist/components/catalyst-ui/core/navigation/anchor.tsx +41 -0
  288. package/dist/components/catalyst-ui/core/navigation/dock-1.tsx +0 -0
  289. package/dist/components/catalyst-ui/core/navigation/dock-2.tsx +289 -0
  290. package/dist/components/catalyst-ui/core/navigation/dock.tsx +376 -0
  291. package/dist/components/catalyst-ui/core/navigation/efab.tsx +245 -0
  292. package/dist/components/catalyst-ui/core/navigation/fab-menu-component.tsx +299 -0
  293. package/dist/components/catalyst-ui/core/navigation/fab-menu.tsx +220 -0
  294. package/dist/components/catalyst-ui/core/navigation/fab.tsx +236 -0
  295. package/dist/components/catalyst-ui/core/navigation/index.ts +32 -0
  296. package/dist/components/catalyst-ui/core/navigation/limelight-nav.tsx +110 -0
  297. package/dist/components/catalyst-ui/core/navigation/mega-menu.tsx +354 -0
  298. package/dist/components/catalyst-ui/core/navigation/menu-dock.tsx +204 -0
  299. package/dist/components/catalyst-ui/core/navigation/message-dock.tsx +511 -0
  300. package/dist/components/catalyst-ui/core/navigation/page-nav.tsx +29 -0
  301. package/dist/components/catalyst-ui/core/navigation/page-sidebar-nav.tsx +39 -0
  302. package/dist/components/catalyst-ui/core/navigation/pagination-button.tsx +56 -0
  303. package/dist/components/catalyst-ui/core/navigation/pagination-wrapper.tsx +152 -0
  304. package/dist/components/catalyst-ui/core/navigation/panel-menu.tsx +201 -0
  305. package/dist/components/catalyst-ui/core/navigation/remix-link.tsx +40 -0
  306. package/dist/components/catalyst-ui/core/navigation/smooth-tab.tsx +412 -0
  307. package/dist/components/catalyst-ui/core/navigation/speed-dial.tsx +175 -0
  308. package/dist/components/catalyst-ui/core/navigation/stepper.tsx +290 -0
  309. package/dist/components/catalyst-ui/core/navigation/steps.tsx +578 -0
  310. package/dist/components/catalyst-ui/core/navigation/tab-menu.tsx +227 -0
  311. package/dist/components/catalyst-ui/core/navigation/tab-view.tsx +742 -0
  312. package/dist/components/catalyst-ui/core/navigation/toolbar-1.tsx +412 -0
  313. package/dist/components/catalyst-ui/core/navigation/toolbar.tsx +245 -0
  314. package/dist/components/catalyst-ui/core/sections/changelog-section.tsx +135 -0
  315. package/dist/components/catalyst-ui/core/sections/config-section.tsx +82 -0
  316. package/dist/components/catalyst-ui/core/sections/contact.tsx +600 -0
  317. package/dist/components/catalyst-ui/core/sections/content.tsx +386 -0
  318. package/dist/components/catalyst-ui/core/sections/layout.tsx +310 -0
  319. package/dist/components/catalyst-ui/core/sections/note-section.tsx +85 -0
  320. package/dist/components/catalyst-ui/core/sections/placeholder-code-section.tsx +14 -0
  321. package/dist/components/catalyst-ui/core/sections/step-number-section.tsx +16 -0
  322. package/dist/components/catalyst-ui/core/sections/team.tsx +372 -0
  323. package/dist/components/catalyst-ui/core/sections/useage-no-dash-section.tsx +79 -0
  324. package/dist/components/catalyst-ui/core/sections/useage-section.tsx +79 -0
  325. package/dist/components/catalyst-ui/core/shell/app-shell.tsx +321 -0
  326. package/dist/components/catalyst-ui/core/shell/content-shell.tsx +70 -0
  327. package/dist/components/catalyst-ui/core/shell/documentation/example.tsx +106 -0
  328. package/dist/components/catalyst-ui/core/shell/documentation/layout.config.tsx +200 -0
  329. package/dist/components/catalyst-ui/core/shell/documentation/layout.example.tsx +127 -0
  330. package/dist/components/catalyst-ui/core/shell/documentation/layout.tsx +280 -0
  331. package/dist/components/catalyst-ui/core/shell/multiColumnLayouts.tsx +364 -0
  332. package/dist/components/catalyst-ui/core/shell/sidebarLayout.tsx +459 -0
  333. package/dist/components/catalyst-ui/core/shell/stackedLayout.tsx +323 -0
  334. package/dist/components/catalyst-ui/core/shell/three-col/app.tsx +193 -0
  335. package/dist/components/catalyst-ui/core/shell/three-col/content.tsx +358 -0
  336. package/dist/components/catalyst-ui/core/shell/three-col/header.tsx +222 -0
  337. package/dist/components/catalyst-ui/core/shell/three-col/layout.tsx +120 -0
  338. package/dist/components/catalyst-ui/core/shell/three-col/side-navbar.tsx +305 -0
  339. package/dist/components/catalyst-ui/core/shell/three-col/sidebar.tsx +41 -0
  340. package/dist/components/catalyst-ui/crm/comp-297.tsx +24 -0
  341. package/dist/components/catalyst-ui/crm/comp-298.tsx +188 -0
  342. package/dist/components/catalyst-ui/crm/comp-299.tsx +24 -0
  343. package/dist/components/catalyst-ui/crm/comp-300.tsx +62 -0
  344. package/dist/components/catalyst-ui/crm/index.ts +5 -0
  345. package/dist/components/catalyst-ui/crm/tools/scripts-editor.tsx +3109 -0
  346. package/dist/components/catalyst-ui/crm/tools/scripts-viewer.tsx +215 -0
  347. package/dist/components/catalyst-ui/data/bg-data.tsx +901 -0
  348. package/dist/components/catalyst-ui/data/buttons-data.tsx +2327 -0
  349. package/dist/components/catalyst-ui/data/charts-data.tsx +102 -0
  350. package/dist/components/catalyst-ui/data/chat-data.tsx +83 -0
  351. package/dist/components/catalyst-ui/data/code-data.tsx +1040 -0
  352. package/dist/components/catalyst-ui/data/comboboxes-data.tsx +1843 -0
  353. package/dist/components/catalyst-ui/data/command-data.tsx +1381 -0
  354. package/dist/components/catalyst-ui/data/core-data.tsx +15953 -0
  355. package/dist/components/catalyst-ui/data/crm-data.tsx +47 -0
  356. package/dist/components/catalyst-ui/data/data.tsx +159 -0
  357. package/dist/components/catalyst-ui/data/date-and-time-data.tsx +554 -0
  358. package/dist/components/catalyst-ui/data/dependencies.tsx +7 -0
  359. package/dist/components/catalyst-ui/data/ecommerce-data.tsx +1387 -0
  360. package/dist/components/catalyst-ui/data/forms-data.tsx +7890 -0
  361. package/dist/components/catalyst-ui/data/hooks-data.tsx +5487 -0
  362. package/dist/components/catalyst-ui/data/index.ts +34 -0
  363. package/dist/components/catalyst-ui/data/inputs-data.tsx +557 -0
  364. package/dist/components/catalyst-ui/data/interactive-data.tsx +5394 -0
  365. package/dist/components/catalyst-ui/data/lofi-data.tsx +18295 -0
  366. package/dist/components/catalyst-ui/data/marketing-data.tsx +2546 -0
  367. package/dist/components/catalyst-ui/data/media-data.tsx +1510 -0
  368. package/dist/components/catalyst-ui/data/motion-data.tsx +5801 -0
  369. package/dist/components/catalyst-ui/data/overlay-data.tsx +4136 -0
  370. package/dist/components/catalyst-ui/data/pdf-data.tsx +124 -0
  371. package/dist/components/catalyst-ui/data/pos-data.tsx +213 -0
  372. package/dist/components/catalyst-ui/data/primitive-data.tsx +5170 -0
  373. package/dist/components/catalyst-ui/data/prompt-data.tsx +1226 -0
  374. package/dist/components/catalyst-ui/data/requiredLibs.ts +4 -0
  375. package/dist/components/catalyst-ui/data/sandbox-data.tsx +1 -0
  376. package/dist/components/catalyst-ui/data/sidebars-data.tsx +5421 -0
  377. package/dist/components/catalyst-ui/data/stacks-data.tsx +32 -0
  378. package/dist/components/catalyst-ui/data/table-data.tsx +706 -0
  379. package/dist/components/catalyst-ui/data/tools-data.tsx +6910 -0
  380. package/dist/components/catalyst-ui/data/typography-data.tsx +2050 -0
  381. package/dist/components/catalyst-ui/data/utils-data.tsx +6500 -0
  382. package/dist/components/catalyst-ui/data/x-data.tsx +1171 -0
  383. package/dist/components/catalyst-ui/data2.tsx +158 -0
  384. package/dist/components/catalyst-ui/date-and-time/appointment-scheduler.tsx +381 -0
  385. package/dist/components/catalyst-ui/date-and-time/calendar-2.tsx +498 -0
  386. package/dist/components/catalyst-ui/date-and-time/calendar-for-sidebar.tsx +68 -0
  387. package/dist/components/catalyst-ui/date-and-time/calendar-rac.tsx +112 -0
  388. package/dist/components/catalyst-ui/date-and-time/date-picker-input.tsx +76 -0
  389. package/dist/components/catalyst-ui/date-and-time/date-picker.tsx +64 -0
  390. package/dist/components/catalyst-ui/date-and-time/date-range-picker-input.tsx +84 -0
  391. package/dist/components/catalyst-ui/date-and-time/date-range-picker.tsx +125 -0
  392. package/dist/components/catalyst-ui/date-and-time/datefield-rac.tsx +88 -0
  393. package/dist/components/catalyst-ui/date-and-time/docked-date-picker.tsx +267 -0
  394. package/dist/components/catalyst-ui/date-and-time/drawerDatePicker.tsx +50 -0
  395. package/dist/components/catalyst-ui/date-and-time/event-calendar/agenda-view.tsx +90 -0
  396. package/dist/components/catalyst-ui/date-and-time/event-calendar/calendar-dnd-context.tsx +373 -0
  397. package/dist/components/catalyst-ui/date-and-time/event-calendar/constants.ts +18 -0
  398. package/dist/components/catalyst-ui/date-and-time/event-calendar/day-view.tsx +322 -0
  399. package/dist/components/catalyst-ui/date-and-time/event-calendar/demo.tsx +162 -0
  400. package/dist/components/catalyst-ui/date-and-time/event-calendar/draggable-event.tsx +141 -0
  401. package/dist/components/catalyst-ui/date-and-time/event-calendar/droppable-cell.tsx +57 -0
  402. package/dist/components/catalyst-ui/date-and-time/event-calendar/event-calendar.tsx +400 -0
  403. package/dist/components/catalyst-ui/date-and-time/event-calendar/event-dialog.tsx +467 -0
  404. package/dist/components/catalyst-ui/date-and-time/event-calendar/event-item.tsx +262 -0
  405. package/dist/components/catalyst-ui/date-and-time/event-calendar/events-popup.tsx +135 -0
  406. package/dist/components/catalyst-ui/date-and-time/event-calendar/hooks/use-current-time-indicator.ts +57 -0
  407. package/dist/components/catalyst-ui/date-and-time/event-calendar/hooks/use-event-visibility.ts +86 -0
  408. package/dist/components/catalyst-ui/date-and-time/event-calendar/index.ts +23 -0
  409. package/dist/components/catalyst-ui/date-and-time/event-calendar/month-view.tsx +276 -0
  410. package/dist/components/catalyst-ui/date-and-time/event-calendar/types.ts +20 -0
  411. package/dist/components/catalyst-ui/date-and-time/event-calendar/utils.ts +153 -0
  412. package/dist/components/catalyst-ui/date-and-time/event-calendar/week-view.tsx +406 -0
  413. package/dist/components/catalyst-ui/date-and-time/index.ts +74 -0
  414. package/dist/components/catalyst-ui/date-and-time/mini-calendar.tsx +230 -0
  415. package/dist/components/catalyst-ui/date-and-time/modal-date-input.tsx +229 -0
  416. package/dist/components/catalyst-ui/date-and-time/popover-date-input.tsx +233 -0
  417. package/dist/components/catalyst-ui/date-and-time/relative-time.tsx +181 -0
  418. package/dist/components/catalyst-ui/date-and-time/time-picker-dial.tsx +368 -0
  419. package/dist/components/catalyst-ui/date-and-time/time-picker-input.tsx +385 -0
  420. package/dist/components/catalyst-ui/date-and-time/time-picker.tsx +514 -0
  421. package/dist/components/catalyst-ui/demo/examples.tsx +10069 -0
  422. package/dist/components/catalyst-ui/demo/examples2.tsx +10954 -0
  423. package/dist/components/catalyst-ui/demo/index.ts +5 -0
  424. package/dist/components/catalyst-ui/ecommerce/components/categoryFilters.tsx +302 -0
  425. package/dist/components/catalyst-ui/ecommerce/components/categoryPreviews.tsx +464 -0
  426. package/dist/components/catalyst-ui/ecommerce/components/checkoutForms.tsx +991 -0
  427. package/dist/components/catalyst-ui/ecommerce/components/incentives.tsx +529 -0
  428. package/dist/components/catalyst-ui/ecommerce/components/orderHistory.tsx +380 -0
  429. package/dist/components/catalyst-ui/ecommerce/components/orderSummaries.tsx +482 -0
  430. package/dist/components/catalyst-ui/ecommerce/components/productCard.tsx +84 -0
  431. package/dist/components/catalyst-ui/ecommerce/components/productCard2.tsx +82 -0
  432. package/dist/components/catalyst-ui/ecommerce/components/productFeatures.tsx +764 -0
  433. package/dist/components/catalyst-ui/ecommerce/components/productLists.tsx +472 -0
  434. package/dist/components/catalyst-ui/ecommerce/components/productOverview.tsx +856 -0
  435. package/dist/components/catalyst-ui/ecommerce/components/productQuickViews.tsx +378 -0
  436. package/dist/components/catalyst-ui/ecommerce/components/promoSectionts.tsx +414 -0
  437. package/dist/components/catalyst-ui/ecommerce/components/reviews.tsx +274 -0
  438. package/dist/components/catalyst-ui/ecommerce/components/shoppingCarts.tsx +508 -0
  439. package/dist/components/catalyst-ui/ecommerce/components/storeNavigation.tsx +255 -0
  440. package/dist/components/catalyst-ui/ecommerce/demo/categoryFilters-demo.tsx +140 -0
  441. package/dist/components/catalyst-ui/ecommerce/demo/categoryPreviews-demo.tsx +252 -0
  442. package/dist/components/catalyst-ui/ecommerce/demo/checkoutForms-demo.tsx +76 -0
  443. package/dist/components/catalyst-ui/ecommerce/demo/editProductPage-data2.tsx +34 -0
  444. package/dist/components/catalyst-ui/ecommerce/demo/editProductPage-demo.tsx +10 -0
  445. package/dist/components/catalyst-ui/ecommerce/demo/incentives-demo.tsx +172 -0
  446. package/dist/components/catalyst-ui/ecommerce/demo/orderHistory-demo.tsx +81 -0
  447. package/dist/components/catalyst-ui/ecommerce/demo/orderSummaries-demo.tsx +98 -0
  448. package/dist/components/catalyst-ui/ecommerce/demo/pricingPage-demo.tsx +105 -0
  449. package/dist/components/catalyst-ui/ecommerce/demo/product.$id-demo.tsx +98 -0
  450. package/dist/components/catalyst-ui/ecommerce/demo/productCard-demo.tsx +308 -0
  451. package/dist/components/catalyst-ui/ecommerce/demo/productFeatures-demo.tsx +57 -0
  452. package/dist/components/catalyst-ui/ecommerce/demo/productLists-demo.tsx +130 -0
  453. package/dist/components/catalyst-ui/ecommerce/demo/productOverview-demo.tsx +328 -0
  454. package/dist/components/catalyst-ui/ecommerce/demo/productQuickViews-demo.tsx +242 -0
  455. package/dist/components/catalyst-ui/ecommerce/demo/promoSectionts-demo.tsx +169 -0
  456. package/dist/components/catalyst-ui/ecommerce/demo/reviews-demo.tsx +45 -0
  457. package/dist/components/catalyst-ui/ecommerce/demo/shoppingCarts-demo.tsx +73 -0
  458. package/dist/components/catalyst-ui/ecommerce/demo/store-demo.tsx +88 -0
  459. package/dist/components/catalyst-ui/ecommerce/demo/storeNavigation-demo.tsx +171 -0
  460. package/dist/components/catalyst-ui/ecommerce/index.ts +55 -0
  461. package/dist/components/catalyst-ui/ecommerce/modules/cash-drawer-wizard.tsx +1400 -0
  462. package/dist/components/catalyst-ui/ecommerce/modules/cash-till-manager.tsx +639 -0
  463. package/dist/components/catalyst-ui/ecommerce/modules/promotionEngine.ts +341 -0
  464. package/dist/components/catalyst-ui/ecommerce/modules/promotionsManager.tsx +840 -0
  465. package/dist/components/catalyst-ui/forms/action-bar-1.tsx +192 -0
  466. package/dist/components/catalyst-ui/forms/action-bar.tsx +154 -0
  467. package/dist/components/catalyst-ui/forms/action-panels.tsx +153 -0
  468. package/dist/components/catalyst-ui/forms/action-search-bar.tsx +268 -0
  469. package/dist/components/catalyst-ui/forms/auto-resizing-textarea.tsx +36 -0
  470. package/dist/components/catalyst-ui/forms/cascade-tree.tsx +224 -0
  471. package/dist/components/catalyst-ui/forms/cascader.tsx +219 -0
  472. package/dist/components/catalyst-ui/forms/check-tree-picker.tsx +330 -0
  473. package/dist/components/catalyst-ui/forms/check-tree.tsx +348 -0
  474. package/dist/components/catalyst-ui/forms/checkbox-1.tsx +48 -0
  475. package/dist/components/catalyst-ui/forms/checkbox-card-1.tsx +64 -0
  476. package/dist/components/catalyst-ui/forms/checkbox-card.tsx +145 -0
  477. package/dist/components/catalyst-ui/forms/checkbox-multistate.tsx +97 -0
  478. package/dist/components/catalyst-ui/forms/checkbox-tristate.tsx +158 -0
  479. package/dist/components/catalyst-ui/forms/color-picker-1.tsx +299 -0
  480. package/dist/components/catalyst-ui/forms/color-picker-3.tsx +487 -0
  481. package/dist/components/catalyst-ui/forms/color-picker.tsx +251 -0
  482. package/dist/components/catalyst-ui/forms/credit-card-input.tsx +284 -0
  483. package/dist/components/catalyst-ui/forms/debounced-input.tsx +21 -0
  484. package/dist/components/catalyst-ui/forms/fancy-area.tsx +571 -0
  485. package/dist/components/catalyst-ui/forms/fieldset.tsx +107 -0
  486. package/dist/components/catalyst-ui/forms/float-label.tsx +66 -0
  487. package/dist/components/catalyst-ui/forms/floating-label.tsx +138 -0
  488. package/dist/components/catalyst-ui/forms/form-wizard.tsx +787 -0
  489. package/dist/components/catalyst-ui/forms/fuse-search-input.tsx +293 -0
  490. package/dist/components/catalyst-ui/forms/fuzzy-filter.tsx +17 -0
  491. package/dist/components/catalyst-ui/forms/fuzzy-sort.tsx +17 -0
  492. package/dist/components/catalyst-ui/forms/icon-field.tsx +51 -0
  493. package/dist/components/catalyst-ui/forms/index.ts +58 -0
  494. package/dist/components/catalyst-ui/forms/inline-edit.tsx +108 -0
  495. package/dist/components/catalyst-ui/forms/inplace.tsx +174 -0
  496. package/dist/components/catalyst-ui/forms/input-icon.tsx +39 -0
  497. package/dist/components/catalyst-ui/forms/input-mask.tsx +216 -0
  498. package/dist/components/catalyst-ui/forms/input-text.tsx +52 -0
  499. package/dist/components/catalyst-ui/forms/json-input.tsx +261 -0
  500. package/dist/components/catalyst-ui/forms/key-filter.tsx +238 -0
  501. package/dist/components/catalyst-ui/forms/label-variant.tsx +53 -0
  502. package/dist/components/catalyst-ui/forms/listbox.tsx +118 -0
  503. package/dist/components/catalyst-ui/forms/multi-cascade-tree.tsx +586 -0
  504. package/dist/components/catalyst-ui/forms/multi-cascader.tsx +429 -0
  505. package/dist/components/catalyst-ui/forms/multi-select.tsx +161 -0
  506. package/dist/components/catalyst-ui/forms/password-input.tsx +54 -0
  507. package/dist/components/catalyst-ui/forms/pills-input.tsx +133 -0
  508. package/dist/components/catalyst-ui/forms/pin-input.tsx +354 -0
  509. package/dist/components/catalyst-ui/forms/profile-dropdown.tsx +219 -0
  510. package/dist/components/catalyst-ui/forms/radio-tile.tsx +245 -0
  511. package/dist/components/catalyst-ui/forms/rating-2.tsx +140 -0
  512. package/dist/components/catalyst-ui/forms/search-input.tsx +49 -0
  513. package/dist/components/catalyst-ui/forms/select-button.tsx +155 -0
  514. package/dist/components/catalyst-ui/forms/step-form-wizard.tsx +877 -0
  515. package/dist/components/catalyst-ui/forms/tags-input-1.tsx +457 -0
  516. package/dist/components/catalyst-ui/forms/textarea-2.tsx +36 -0
  517. package/dist/components/catalyst-ui/forms/tree-picker.tsx +295 -0
  518. package/dist/components/catalyst-ui/hooks/demo.tsx +2757 -0
  519. package/dist/components/catalyst-ui/hooks/index.ts +106 -0
  520. package/dist/components/catalyst-ui/hooks/react-hook-docs.tsx +608 -0
  521. package/dist/components/catalyst-ui/hooks/use-api-key.tsx +151 -0
  522. package/dist/components/catalyst-ui/hooks/use-async.tsx +36 -0
  523. package/dist/components/catalyst-ui/hooks/use-auto-scroll.tsx +139 -0
  524. package/dist/components/catalyst-ui/hooks/use-breakpoint.tsx +21 -0
  525. package/dist/components/catalyst-ui/hooks/use-character-limit.tsx +37 -0
  526. package/dist/components/catalyst-ui/hooks/use-click-outside.tsx +27 -0
  527. package/dist/components/catalyst-ui/hooks/use-client.tsx +30 -0
  528. package/dist/components/catalyst-ui/hooks/use-color-theme.tsx +4933 -0
  529. package/dist/components/catalyst-ui/hooks/use-color-wheel.tsx +905 -0
  530. package/dist/components/catalyst-ui/hooks/use-current-time-indicator.tsx +65 -0
  531. package/dist/components/catalyst-ui/hooks/use-debounce-fetcher.tsx +56 -0
  532. package/dist/components/catalyst-ui/hooks/use-debounce-submit.tsx +45 -0
  533. package/dist/components/catalyst-ui/hooks/use-debounce.tsx +18 -0
  534. package/dist/components/catalyst-ui/hooks/use-debounced-fuse-search.tsx +168 -0
  535. package/dist/components/catalyst-ui/hooks/use-delegated-anchors.tsx +87 -0
  536. package/dist/components/catalyst-ui/hooks/use-document-title.tsx +14 -0
  537. package/dist/components/catalyst-ui/hooks/use-event-callback.tsx +24 -0
  538. package/dist/components/catalyst-ui/hooks/use-event-source.tsx +69 -0
  539. package/dist/components/catalyst-ui/hooks/use-event-visibility.tsx +72 -0
  540. package/dist/components/catalyst-ui/hooks/use-expandable.tsx +18 -0
  541. package/dist/components/catalyst-ui/hooks/use-export-markdown-usage.tsx +92 -0
  542. package/dist/components/catalyst-ui/hooks/use-export-tsx.tsx +50 -0
  543. package/dist/components/catalyst-ui/hooks/use-external-scripts.tsx +44 -0
  544. package/dist/components/catalyst-ui/hooks/use-favicon.tsx +16 -0
  545. package/dist/components/catalyst-ui/hooks/use-fetch.tsx +64 -0
  546. package/dist/components/catalyst-ui/hooks/use-file-upload.tsx +405 -0
  547. package/dist/components/catalyst-ui/hooks/use-focus-within.tsx +16 -0
  548. package/dist/components/catalyst-ui/hooks/use-form.tsx +86 -0
  549. package/dist/components/catalyst-ui/hooks/use-fuse-search.tsx +155 -0
  550. package/dist/components/catalyst-ui/hooks/use-fuzzy-search.tsx +17 -0
  551. package/dist/components/catalyst-ui/hooks/use-global-loading-state.tsx +7 -0
  552. package/dist/components/catalyst-ui/hooks/use-global-navigation-state.tsx +23 -0
  553. package/dist/components/catalyst-ui/hooks/use-global-pending-state.tsx +10 -0
  554. package/dist/components/catalyst-ui/hooks/use-global-submitting-state.tsx +7 -0
  555. package/dist/components/catalyst-ui/hooks/use-google-font.tsx +39 -0
  556. package/dist/components/catalyst-ui/hooks/use-hover.tsx +24 -0
  557. package/dist/components/catalyst-ui/hooks/use-hydrated.tsx +31 -0
  558. package/dist/components/catalyst-ui/hooks/use-intersection-observer.tsx +28 -0
  559. package/dist/components/catalyst-ui/hooks/use-isomorphic-layout-effect.tsx +9 -0
  560. package/dist/components/catalyst-ui/hooks/use-key-press.tsx +30 -0
  561. package/dist/components/catalyst-ui/hooks/use-keyboard-shortcut.tsx +69 -0
  562. package/dist/components/catalyst-ui/hooks/use-keyboard.tsx +16 -0
  563. package/dist/components/catalyst-ui/hooks/use-local-storage-auto-save.tsx +24 -0
  564. package/dist/components/catalyst-ui/hooks/use-local-storage.tsx +32 -0
  565. package/dist/components/catalyst-ui/hooks/use-locales.tsx +40 -0
  566. package/dist/components/catalyst-ui/hooks/use-long-press.tsx +16 -0
  567. package/dist/components/catalyst-ui/hooks/use-markdown-batches.tsx +120 -0
  568. package/dist/components/catalyst-ui/hooks/use-markdown-to-html.tsx +42 -0
  569. package/dist/components/catalyst-ui/hooks/use-mount-effect.tsx +5 -0
  570. package/dist/components/catalyst-ui/hooks/use-mounted.tsx +11 -0
  571. package/dist/components/catalyst-ui/hooks/use-mouse-enter.tsx +13 -0
  572. package/dist/components/catalyst-ui/hooks/use-move.tsx +16 -0
  573. package/dist/components/catalyst-ui/hooks/use-mutation-observer-useage.tsx +96 -0
  574. package/dist/components/catalyst-ui/hooks/use-mutation-observer.tsx +117 -0
  575. package/dist/components/catalyst-ui/hooks/use-on-click-outside.tsx +38 -0
  576. package/dist/components/catalyst-ui/hooks/use-online-status.tsx +23 -0
  577. package/dist/components/catalyst-ui/hooks/use-outside-click.tsx +25 -0
  578. package/dist/components/catalyst-ui/hooks/use-overlay-listener.tsx +31 -0
  579. package/dist/components/catalyst-ui/hooks/use-overlay-scroll-listener.tsx +128 -0
  580. package/dist/components/catalyst-ui/hooks/use-pagination.tsx +68 -0
  581. package/dist/components/catalyst-ui/hooks/use-press.tsx +17 -0
  582. package/dist/components/catalyst-ui/hooks/use-previous.tsx +13 -0
  583. package/dist/components/catalyst-ui/hooks/use-read-local-storage.tsx +73 -0
  584. package/dist/components/catalyst-ui/hooks/use-reducer.tsx +0 -0
  585. package/dist/components/catalyst-ui/hooks/use-resize-listener.tsx +18 -0
  586. package/dist/components/catalyst-ui/hooks/use-screen.tsx +100 -0
  587. package/dist/components/catalyst-ui/hooks/use-script.tsx +102 -0
  588. package/dist/components/catalyst-ui/hooks/use-scroll-lock.tsx +91 -0
  589. package/dist/components/catalyst-ui/hooks/use-scroll-position.tsx +23 -0
  590. package/dist/components/catalyst-ui/hooks/use-sec-fetch-parser.tsx +52 -0
  591. package/dist/components/catalyst-ui/hooks/use-session-storage.tsx +31 -0
  592. package/dist/components/catalyst-ui/hooks/use-should-hydrate.tsx +27 -0
  593. package/dist/components/catalyst-ui/hooks/use-slide-in-1.tsx +96 -0
  594. package/dist/components/catalyst-ui/hooks/use-slide-in.tsx +368 -0
  595. package/dist/components/catalyst-ui/hooks/use-slider-with-input.tsx +106 -0
  596. package/dist/components/catalyst-ui/hooks/use-smooth-scroll.tsx +35 -0
  597. package/dist/components/catalyst-ui/hooks/use-stream.tsx +576 -0
  598. package/dist/components/catalyst-ui/hooks/use-tailwind-converter.tsx +465 -0
  599. package/dist/components/catalyst-ui/hooks/use-throttle.tsx +22 -0
  600. package/dist/components/catalyst-ui/hooks/use-transition.tsx +0 -0
  601. package/dist/components/catalyst-ui/hooks/use-unmount-effect.tsx +15 -0
  602. package/dist/components/catalyst-ui/hooks/use-update-effect.tsx +13 -0
  603. package/dist/components/catalyst-ui/hooks/use-validate-credit-card.tsx +112 -0
  604. package/dist/components/catalyst-ui/hooks/use-window-size.tsx +23 -0
  605. package/dist/components/catalyst-ui/hooks/useDevList.tsx +185 -0
  606. package/dist/components/catalyst-ui/hooks/useOnWindowResize.tsx +15 -0
  607. package/dist/components/catalyst-ui/index.ts +38 -0
  608. package/dist/components/catalyst-ui/inputs/autocomplete.tsx +569 -0
  609. package/dist/components/catalyst-ui/inputs/autocomplete1.tsx +323 -0
  610. package/dist/components/catalyst-ui/inputs/cc-input.tsx +44 -0
  611. package/dist/components/catalyst-ui/inputs/email-address-input.tsx +17 -0
  612. package/dist/components/catalyst-ui/inputs/index.ts +30 -0
  613. package/dist/components/catalyst-ui/inputs/input-with-characters-left.tsx +41 -0
  614. package/dist/components/catalyst-ui/inputs/input-with-end-add-on.tsx +25 -0
  615. package/dist/components/catalyst-ui/inputs/input-with-end-button.tsx +27 -0
  616. package/dist/components/catalyst-ui/inputs/input-with-end-icon-button.tsx +29 -0
  617. package/dist/components/catalyst-ui/inputs/input-with-end-inline-add-on.tsx +24 -0
  618. package/dist/components/catalyst-ui/inputs/input-with-end-inline-button.tsx +24 -0
  619. package/dist/components/catalyst-ui/inputs/input-with-end-select.tsx +27 -0
  620. package/dist/components/catalyst-ui/inputs/input-with-inline-add-ons.tsx +27 -0
  621. package/dist/components/catalyst-ui/inputs/input-with-inline-start-and-end-add-on.tsx +27 -0
  622. package/dist/components/catalyst-ui/inputs/input-with-inner-tags.tsx +60 -0
  623. package/dist/components/catalyst-ui/inputs/input-with-inset-label.tsx +23 -0
  624. package/dist/components/catalyst-ui/inputs/input-with-mask.tsx +44 -0
  625. package/dist/components/catalyst-ui/inputs/input-with-password-strength-indicator.tsx +137 -0
  626. package/dist/components/catalyst-ui/inputs/input-with-start-add-on.tsx +24 -0
  627. package/dist/components/catalyst-ui/inputs/input-with-start-inline-add-on.tsx +24 -0
  628. package/dist/components/catalyst-ui/inputs/input-with-start-select.tsx +30 -0
  629. package/dist/components/catalyst-ui/inputs/input-with-tags.tsx +72 -0
  630. package/dist/components/catalyst-ui/inputs/number-input-with-chevrons.tsx +61 -0
  631. package/dist/components/catalyst-ui/inputs/number-input-with-plus-minus-buttons.tsx +52 -0
  632. package/dist/components/catalyst-ui/inputs/search-input-with-icon-and-button.tsx +32 -0
  633. package/dist/components/catalyst-ui/inputs/search-input-with-kbd.tsx +26 -0
  634. package/dist/components/catalyst-ui/inputs/search-input-with-loader.tsx +59 -0
  635. package/dist/components/catalyst-ui/interactive/3d-pin.tsx +175 -0
  636. package/dist/components/catalyst-ui/interactive/action-sheet.tsx +240 -0
  637. package/dist/components/catalyst-ui/interactive/activity-card.tsx +196 -0
  638. package/dist/components/catalyst-ui/interactive/ai-prompt.tsx +441 -0
  639. package/dist/components/catalyst-ui/interactive/animated-cursor.tsx +254 -0
  640. package/dist/components/catalyst-ui/interactive/background-paths.tsx +172 -0
  641. package/dist/components/catalyst-ui/interactive/can-edit.tsx +100 -0
  642. package/dist/components/catalyst-ui/interactive/color-swatch.tsx +441 -0
  643. package/dist/components/catalyst-ui/interactive/currency-transfer.tsx +228 -0
  644. package/dist/components/catalyst-ui/interactive/cursor.tsx +109 -0
  645. package/dist/components/catalyst-ui/interactive/drag-and-drop.tsx +374 -0
  646. package/dist/components/catalyst-ui/interactive/drawing-2.tsx +1147 -0
  647. package/dist/components/catalyst-ui/interactive/drawing.tsx +576 -0
  648. package/dist/components/catalyst-ui/interactive/drop-zone-external.tsx +377 -0
  649. package/dist/components/catalyst-ui/interactive/drop-zone.tsx +399 -0
  650. package/dist/components/catalyst-ui/interactive/dropzone-1.tsx +259 -0
  651. package/dist/components/catalyst-ui/interactive/export-excel.tsx +201 -0
  652. package/dist/components/catalyst-ui/interactive/file-upload.tsx +403 -0
  653. package/dist/components/catalyst-ui/interactive/file_upload-1.tsx +422 -0
  654. package/dist/components/catalyst-ui/interactive/filesaver.tsx +51 -0
  655. package/dist/components/catalyst-ui/interactive/gantt-1.tsx +1464 -0
  656. package/dist/components/catalyst-ui/interactive/highlight.tsx +84 -0
  657. package/dist/components/catalyst-ui/interactive/index.ts +49 -0
  658. package/dist/components/catalyst-ui/interactive/kanban-1.tsx +338 -0
  659. package/dist/components/catalyst-ui/interactive/lens.tsx +121 -0
  660. package/dist/components/catalyst-ui/interactive/magnetic.tsx +105 -0
  661. package/dist/components/catalyst-ui/interactive/mouse-effect-card.tsx +158 -0
  662. package/dist/components/catalyst-ui/interactive/pdf-generator.tsx +414 -0
  663. package/dist/components/catalyst-ui/interactive/pdf-signature.tsx +623 -0
  664. package/dist/components/catalyst-ui/interactive/pdf-viewer.tsx +931 -0
  665. package/dist/components/catalyst-ui/interactive/pointer.tsx +108 -0
  666. package/dist/components/catalyst-ui/interactive/ripple.tsx +103 -0
  667. package/dist/components/catalyst-ui/interactive/scroll-based-velocity.tsx +205 -0
  668. package/dist/components/catalyst-ui/interactive/signature.tsx +606 -0
  669. package/dist/components/catalyst-ui/interactive/smooth-cursor.tsx +236 -0
  670. package/dist/components/catalyst-ui/interactive/sortable.tsx +420 -0
  671. package/dist/components/catalyst-ui/interactive/spreadsheet.tsx +601 -0
  672. package/dist/components/catalyst-ui/interactive/task-board.tsx +902 -0
  673. package/dist/components/catalyst-ui/interactive/terminal.tsx +587 -0
  674. package/dist/components/catalyst-ui/interactive/tour-1.tsx +426 -0
  675. package/dist/components/catalyst-ui/interactive/tour.tsx +830 -0
  676. package/dist/components/catalyst-ui/interactive/transition.tsx +913 -0
  677. package/dist/components/catalyst-ui/interactive/transitionable-portal.tsx +0 -0
  678. package/dist/components/catalyst-ui/interactive/tree-view.tsx +427 -0
  679. package/dist/components/catalyst-ui/interactive/virtualizer.tsx +233 -0
  680. package/dist/components/catalyst-ui/interactive/watermark.tsx +211 -0
  681. package/dist/components/catalyst-ui/lo-fi/components/AboutPageLoFi.tsx +19 -0
  682. package/dist/components/catalyst-ui/lo-fi/components/ActionPanelLoFi.tsx +22 -0
  683. package/dist/components/catalyst-ui/lo-fi/components/AnchorLoFi-lofi.tsx +11 -0
  684. package/dist/components/catalyst-ui/lo-fi/components/ButtonGroupLoFi.tsx +11 -0
  685. package/dist/components/catalyst-ui/lo-fi/components/ButtonIconLoFi.tsx +10 -0
  686. package/dist/components/catalyst-ui/lo-fi/components/ButtonLinkLoFi.tsx +5 -0
  687. package/dist/components/catalyst-ui/lo-fi/components/ButtonLoadingLoFi.tsx +9 -0
  688. package/dist/components/catalyst-ui/lo-fi/components/CalendarForSidebarLoFi.tsx +21 -0
  689. package/dist/components/catalyst-ui/lo-fi/components/CalendarMultiDayLoFi.tsx +23 -0
  690. package/dist/components/catalyst-ui/lo-fi/components/CalloutLoFi.tsx +23 -0
  691. package/dist/components/catalyst-ui/lo-fi/components/Chart.tsx +239 -0
  692. package/dist/components/catalyst-ui/lo-fi/components/ContainerLoFi.tsx +13 -0
  693. package/dist/components/catalyst-ui/lo-fi/components/CopyTextLoFi.tsx +10 -0
  694. package/dist/components/catalyst-ui/lo-fi/components/DebouncedInputLoFi.tsx +10 -0
  695. package/dist/components/catalyst-ui/lo-fi/components/DescriptionListLoFi.tsx +14 -0
  696. package/dist/components/catalyst-ui/lo-fi/components/EditorLoFi.tsx +14 -0
  697. package/dist/components/catalyst-ui/lo-fi/components/EmptyStateLoFi.tsx +12 -0
  698. package/dist/components/catalyst-ui/lo-fi/components/ErrorPageLoFi.tsx +12 -0
  699. package/dist/components/catalyst-ui/lo-fi/components/ExportFileLoFi.tsx +16 -0
  700. package/dist/components/catalyst-ui/lo-fi/components/FlyoutMenuLoFi.tsx +14 -0
  701. package/dist/components/catalyst-ui/lo-fi/components/FormLayoutLoFi.tsx +15 -0
  702. package/dist/components/catalyst-ui/lo-fi/components/HeroCalendar.tsx +115 -0
  703. package/dist/components/catalyst-ui/lo-fi/components/HeroLoFi.tsx +17 -0
  704. package/dist/components/catalyst-ui/lo-fi/components/ListLoFi.tsx +11 -0
  705. package/dist/components/catalyst-ui/lo-fi/components/LoadingLoFi.tsx +10 -0
  706. package/dist/components/catalyst-ui/lo-fi/components/LogoCloudLoFi.tsx +11 -0
  707. package/dist/components/catalyst-ui/lo-fi/components/MediaObjectLoFi.tsx +14 -0
  708. package/dist/components/catalyst-ui/lo-fi/components/MultiColumnLayoutLoFi.tsx +11 -0
  709. package/dist/components/catalyst-ui/lo-fi/components/NavButtonLoFi.tsx +6 -0
  710. package/dist/components/catalyst-ui/lo-fi/components/NavButtonStyledLoFi.tsx +11 -0
  711. package/dist/components/catalyst-ui/lo-fi/components/ScaffoldingLoFi.tsx +13 -0
  712. package/dist/components/catalyst-ui/lo-fi/components/SectionHeadingLoFi.tsx +11 -0
  713. package/dist/components/catalyst-ui/lo-fi/components/VerticalNavigationLoFi.tsx +11 -0
  714. package/dist/components/catalyst-ui/lo-fi/components/accordion-lofi.tsx +76 -0
  715. package/dist/components/catalyst-ui/lo-fi/components/accountForm-lofi.tsx +21 -0
  716. package/dist/components/catalyst-ui/lo-fi/components/alert-lofi.tsx +18 -0
  717. package/dist/components/catalyst-ui/lo-fi/components/alertDialog-lofi.tsx +14 -0
  718. package/dist/components/catalyst-ui/lo-fi/components/announcement-lofi.tsx +20 -0
  719. package/dist/components/catalyst-ui/lo-fi/components/aspectRatio-lofi.tsx +9 -0
  720. package/dist/components/catalyst-ui/lo-fi/components/authenticator-lofi.tsx +24 -0
  721. package/dist/components/catalyst-ui/lo-fi/components/avatar-lofi.tsx +6 -0
  722. package/dist/components/catalyst-ui/lo-fi/components/badge-lofi.tsx +5 -0
  723. package/dist/components/catalyst-ui/lo-fi/components/banner.tsx +31 -0
  724. package/dist/components/catalyst-ui/lo-fi/components/bento-grid.tsx +31 -0
  725. package/dist/components/catalyst-ui/lo-fi/components/blog.tsx +37 -0
  726. package/dist/components/catalyst-ui/lo-fi/components/breadcrumb.tsx +13 -0
  727. package/dist/components/catalyst-ui/lo-fi/components/button.tsx +11 -0
  728. package/dist/components/catalyst-ui/lo-fi/components/card-header.tsx +16 -0
  729. package/dist/components/catalyst-ui/lo-fi/components/card-heading.tsx +30 -0
  730. package/dist/components/catalyst-ui/lo-fi/components/card.tsx +16 -0
  731. package/dist/components/catalyst-ui/lo-fi/components/carousel.tsx +14 -0
  732. package/dist/components/catalyst-ui/lo-fi/components/cart.tsx +21 -0
  733. package/dist/components/catalyst-ui/lo-fi/components/catchAll.tsx +660 -0
  734. package/dist/components/catalyst-ui/lo-fi/components/categoryFilter.tsx +19 -0
  735. package/dist/components/catalyst-ui/lo-fi/components/categoryPage.tsx +31 -0
  736. package/dist/components/catalyst-ui/lo-fi/components/categoryPreviews.tsx +20 -0
  737. package/dist/components/catalyst-ui/lo-fi/components/checkbox.tsx +10 -0
  738. package/dist/components/catalyst-ui/lo-fi/components/checkout-form.tsx +27 -0
  739. package/dist/components/catalyst-ui/lo-fi/components/checkout.tsx +34 -0
  740. package/dist/components/catalyst-ui/lo-fi/components/checkoutPage.tsx +67 -0
  741. package/dist/components/catalyst-ui/lo-fi/components/clientOnly.tsx +34 -0
  742. package/dist/components/catalyst-ui/lo-fi/components/collapsible.tsx +13 -0
  743. package/dist/components/catalyst-ui/lo-fi/components/columns.tsx +23 -0
  744. package/dist/components/catalyst-ui/lo-fi/components/combobox.tsx +13 -0
  745. package/dist/components/catalyst-ui/lo-fi/components/contact-section.tsx +28 -0
  746. package/dist/components/catalyst-ui/lo-fi/components/content-section.tsx +20 -0
  747. package/dist/components/catalyst-ui/lo-fi/components/cookieSettings.tsx +34 -0
  748. package/dist/components/catalyst-ui/lo-fi/components/cta-section.tsx +17 -0
  749. package/dist/components/catalyst-ui/lo-fi/components/data.tsx +19 -0
  750. package/dist/components/catalyst-ui/lo-fi/components/dataTable.tsx +36 -0
  751. package/dist/components/catalyst-ui/lo-fi/components/datePicker.tsx +10 -0
  752. package/dist/components/catalyst-ui/lo-fi/components/details.tsx +36 -0
  753. package/dist/components/catalyst-ui/lo-fi/components/dialog.tsx +16 -0
  754. package/dist/components/catalyst-ui/lo-fi/components/display-code.tsx +19 -0
  755. package/dist/components/catalyst-ui/lo-fi/components/dropdown.tsx +15 -0
  756. package/dist/components/catalyst-ui/lo-fi/components/dropdownMenu.tsx +13 -0
  757. package/dist/components/catalyst-ui/lo-fi/components/faq-section.tsx +28 -0
  758. package/dist/components/catalyst-ui/lo-fi/components/feature-section.tsx +20 -0
  759. package/dist/components/catalyst-ui/lo-fi/components/feature.tsx +26 -0
  760. package/dist/components/catalyst-ui/lo-fi/components/feedList.tsx +26 -0
  761. package/dist/components/catalyst-ui/lo-fi/components/footer.tsx +40 -0
  762. package/dist/components/catalyst-ui/lo-fi/components/form.tsx +17 -0
  763. package/dist/components/catalyst-ui/lo-fi/components/fourofour.tsx +42 -0
  764. package/dist/components/catalyst-ui/lo-fi/components/gridLists.tsx +36 -0
  765. package/dist/components/catalyst-ui/lo-fi/components/header.tsx +23 -0
  766. package/dist/components/catalyst-ui/lo-fi/components/hero.tsx +21 -0
  767. package/dist/components/catalyst-ui/lo-fi/components/homeScreen.tsx +31 -0
  768. package/dist/components/catalyst-ui/lo-fi/components/hooks.tsx +31 -0
  769. package/dist/components/catalyst-ui/lo-fi/components/hoverCard.tsx +13 -0
  770. package/dist/components/catalyst-ui/lo-fi/components/icons.tsx +18 -0
  771. package/dist/components/catalyst-ui/lo-fi/components/image.tsx +24 -0
  772. package/dist/components/catalyst-ui/lo-fi/components/incentives.tsx +26 -0
  773. package/dist/components/catalyst-ui/lo-fi/components/index.ts +152 -0
  774. package/dist/components/catalyst-ui/lo-fi/components/input.tsx +10 -0
  775. package/dist/components/catalyst-ui/lo-fi/components/label.tsx +5 -0
  776. package/dist/components/catalyst-ui/lo-fi/components/landingPage.tsx +35 -0
  777. package/dist/components/catalyst-ui/lo-fi/components/loadingPage.tsx +23 -0
  778. package/dist/components/catalyst-ui/lo-fi/components/menubar.tsx +14 -0
  779. package/dist/components/catalyst-ui/lo-fi/components/motherboard-blog.tsx +178 -0
  780. package/dist/components/catalyst-ui/lo-fi/components/motherboard.tsx +91 -0
  781. package/dist/components/catalyst-ui/lo-fi/components/newsletter.tsx +25 -0
  782. package/dist/components/catalyst-ui/lo-fi/components/notifications.tsx +21 -0
  783. package/dist/components/catalyst-ui/lo-fi/components/orderDetails.tsx +51 -0
  784. package/dist/components/catalyst-ui/lo-fi/components/orderHistory.tsx +35 -0
  785. package/dist/components/catalyst-ui/lo-fi/components/orderSumaries.tsx +34 -0
  786. package/dist/components/catalyst-ui/lo-fi/components/pageHeading.tsx +26 -0
  787. package/dist/components/catalyst-ui/lo-fi/components/pageNav.tsx +17 -0
  788. package/dist/components/catalyst-ui/lo-fi/components/pagination.tsx +13 -0
  789. package/dist/components/catalyst-ui/lo-fi/components/paymentMethod.tsx +32 -0
  790. package/dist/components/catalyst-ui/lo-fi/components/pricing.tsx +34 -0
  791. package/dist/components/catalyst-ui/lo-fi/components/pricingPage.tsx +47 -0
  792. package/dist/components/catalyst-ui/lo-fi/components/prisma.tsx +23 -0
  793. package/dist/components/catalyst-ui/lo-fi/components/product-card.tsx +12 -0
  794. package/dist/components/catalyst-ui/lo-fi/components/product-gallery.tsx +10 -0
  795. package/dist/components/catalyst-ui/lo-fi/components/productList.tsx +41 -0
  796. package/dist/components/catalyst-ui/lo-fi/components/productOverview.tsx +62 -0
  797. package/dist/components/catalyst-ui/lo-fi/components/productsFeatured.tsx +43 -0
  798. package/dist/components/catalyst-ui/lo-fi/components/progress.tsx +15 -0
  799. package/dist/components/catalyst-ui/lo-fi/components/promo.tsx +33 -0
  800. package/dist/components/catalyst-ui/lo-fi/components/radioGroup.tsx +14 -0
  801. package/dist/components/catalyst-ui/lo-fi/components/reportIssue.tsx +22 -0
  802. package/dist/components/catalyst-ui/lo-fi/components/review.tsx +14 -0
  803. package/dist/components/catalyst-ui/lo-fi/components/reviews.tsx +60 -0
  804. package/dist/components/catalyst-ui/lo-fi/components/sales-lofi.tsx +257 -0
  805. package/dist/components/catalyst-ui/lo-fi/components/scaffolding.tsx +46 -0
  806. package/dist/components/catalyst-ui/lo-fi/components/scrollBar.tsx +24 -0
  807. package/dist/components/catalyst-ui/lo-fi/components/select.tsx +13 -0
  808. package/dist/components/catalyst-ui/lo-fi/components/settings.tsx +32 -0
  809. package/dist/components/catalyst-ui/lo-fi/components/shoppingCart.tsx +52 -0
  810. package/dist/components/catalyst-ui/lo-fi/components/sidebar.tsx +38 -0
  811. package/dist/components/catalyst-ui/lo-fi/components/skeleton.tsx +11 -0
  812. package/dist/components/catalyst-ui/lo-fi/components/slider.tsx +16 -0
  813. package/dist/components/catalyst-ui/lo-fi/components/stacked-lofi.tsx +43 -0
  814. package/dist/components/catalyst-ui/lo-fi/components/stacked.tsx +52 -0
  815. package/dist/components/catalyst-ui/lo-fi/components/stats.tsx +25 -0
  816. package/dist/components/catalyst-ui/lo-fi/components/storeFront.tsx +65 -0
  817. package/dist/components/catalyst-ui/lo-fi/components/storeNav.tsx +37 -0
  818. package/dist/components/catalyst-ui/lo-fi/components/switch.tsx +9 -0
  819. package/dist/components/catalyst-ui/lo-fi/components/tabs.tsx +29 -0
  820. package/dist/components/catalyst-ui/lo-fi/components/tailwind.tsx +22 -0
  821. package/dist/components/catalyst-ui/lo-fi/components/team.tsx +27 -0
  822. package/dist/components/catalyst-ui/lo-fi/components/team2.tsx +27 -0
  823. package/dist/components/catalyst-ui/lo-fi/components/templatePage.tsx +19 -0
  824. package/dist/components/catalyst-ui/lo-fi/components/testimonial.tsx +36 -0
  825. package/dist/components/catalyst-ui/lo-fi/components/testtimonial.tsx +35 -0
  826. package/dist/components/catalyst-ui/lo-fi/components/textarea.tsx +10 -0
  827. package/dist/components/catalyst-ui/lo-fi/components/toast.tsx +13 -0
  828. package/dist/components/catalyst-ui/lo-fi/components/toggle.tsx +12 -0
  829. package/dist/components/catalyst-ui/lo-fi/components/tooltip.tsx +12 -0
  830. package/dist/components/catalyst-ui/lo-fi/components/useHydrated.tsx +38 -0
  831. package/dist/components/catalyst-ui/lo-fi/index.ts +528 -0
  832. package/dist/components/catalyst-ui/lo-fi/utils/atom.tsx +30 -0
  833. package/dist/components/catalyst-ui/lo-fi/utils/component.tsx +28 -0
  834. package/dist/components/catalyst-ui/lo-fi/v2/AIPromptLoFi.tsx +17 -0
  835. package/dist/components/catalyst-ui/lo-fi/v2/AboutLoFi.tsx +19 -0
  836. package/dist/components/catalyst-ui/lo-fi/v2/AccessLoFi.tsx +14 -0
  837. package/dist/components/catalyst-ui/lo-fi/v2/AccountLoFi.tsx +19 -0
  838. package/dist/components/catalyst-ui/lo-fi/v2/ActivityGoalLoFi.tsx +20 -0
  839. package/dist/components/catalyst-ui/lo-fi/v2/AiChatLoFi.tsx +29 -0
  840. package/dist/components/catalyst-ui/lo-fi/v2/AlertV1LoFi.tsx +13 -0
  841. package/dist/components/catalyst-ui/lo-fi/v2/AspectRatioLoFi.tsx +11 -0
  842. package/dist/components/catalyst-ui/lo-fi/v2/AuthProviderLoFi.tsx +18 -0
  843. package/dist/components/catalyst-ui/lo-fi/v2/AuthSystemLoFi.tsx +23 -0
  844. package/dist/components/catalyst-ui/lo-fi/v2/AutoCompleteV2LoFi.tsx +17 -0
  845. package/dist/components/catalyst-ui/lo-fi/v2/BLoFi.tsx +9 -0
  846. package/dist/components/catalyst-ui/lo-fi/v2/BankLoFi.tsx +26 -0
  847. package/dist/components/catalyst-ui/lo-fi/v2/BarcodeLoFi.tsx +24 -0
  848. package/dist/components/catalyst-ui/lo-fi/v2/BasicAuthMiddlewareLoFi.tsx +16 -0
  849. package/dist/components/catalyst-ui/lo-fi/v2/BatcherMiddlewareLoFi.tsx +17 -0
  850. package/dist/components/catalyst-ui/lo-fi/v2/BlocksLoFi.tsx +15 -0
  851. package/dist/components/catalyst-ui/lo-fi/v2/BlogEditorLoFi.tsx +25 -0
  852. package/dist/components/catalyst-ui/lo-fi/v2/BlogListLoFi.tsx +17 -0
  853. package/dist/components/catalyst-ui/lo-fi/v2/BlogSidebarLoFi.tsx +20 -0
  854. package/dist/components/catalyst-ui/lo-fi/v2/BoxLoFi.tsx +10 -0
  855. package/dist/components/catalyst-ui/lo-fi/v2/CORSMiddlewareLoFi.tsx +17 -0
  856. package/dist/components/catalyst-ui/lo-fi/v2/CSSLoFi.tsx +17 -0
  857. package/dist/components/catalyst-ui/lo-fi/v2/CalendarLoFi.tsx +25 -0
  858. package/dist/components/catalyst-ui/lo-fi/v2/CallOutLoFi.tsx +16 -0
  859. package/dist/components/catalyst-ui/lo-fi/v2/CarServiceLoFi.tsx +18 -0
  860. package/dist/components/catalyst-ui/lo-fi/v2/CardsLoFi.tsx +16 -0
  861. package/dist/components/catalyst-ui/lo-fi/v2/CarouselHeroLoFi.tsx +15 -0
  862. package/dist/components/catalyst-ui/lo-fi/v2/CategoriesNavigationLoFi.tsx +13 -0
  863. package/dist/components/catalyst-ui/lo-fi/v2/CategoryFiltersSectionCenteredLoFi.tsx +13 -0
  864. package/dist/components/catalyst-ui/lo-fi/v2/CategoryFiltersSectionLoFi.tsx +15 -0
  865. package/dist/components/catalyst-ui/lo-fi/v2/CategoryFiltersSidebarLoFi.tsx +22 -0
  866. package/dist/components/catalyst-ui/lo-fi/v2/ChatBubbleLoFi.tsx +14 -0
  867. package/dist/components/catalyst-ui/lo-fi/v2/ChatLoFi.tsx +22 -0
  868. package/dist/components/catalyst-ui/lo-fi/v2/CheckListLoFi.tsx +14 -0
  869. package/dist/components/catalyst-ui/lo-fi/v2/CheckboxMultistateLoFi.tsx +11 -0
  870. package/dist/components/catalyst-ui/lo-fi/v2/CheckboxTristateLoFi.tsx +11 -0
  871. package/dist/components/catalyst-ui/lo-fi/v2/CheckoutCancelLoFi.tsx +12 -0
  872. package/dist/components/catalyst-ui/lo-fi/v2/CheckoutSuccessLoFi.tsx +12 -0
  873. package/dist/components/catalyst-ui/lo-fi/v2/CheckoutVariousLoFi.tsx +16 -0
  874. package/dist/components/catalyst-ui/lo-fi/v2/ClientOnlyLoFi.tsx +13 -0
  875. package/dist/components/catalyst-ui/lo-fi/v2/CnLoFi.tsx +13 -0
  876. package/dist/components/catalyst-ui/lo-fi/v2/CodeSectionLoFi.tsx +21 -0
  877. package/dist/components/catalyst-ui/lo-fi/v2/CollapsesToIconsLoFi.tsx +11 -0
  878. package/dist/components/catalyst-ui/lo-fi/v2/CollapsibleFileTreeLoFi.tsx +26 -0
  879. package/dist/components/catalyst-ui/lo-fi/v2/ConfigSectionLoFi.tsx +26 -0
  880. package/dist/components/catalyst-ui/lo-fi/v2/ConfirmPopupLoFi.tsx +15 -0
  881. package/dist/components/catalyst-ui/lo-fi/v2/ContactLoFi.tsx +13 -0
  882. package/dist/components/catalyst-ui/lo-fi/v2/ContainerLoFi.tsx +11 -0
  883. package/dist/components/catalyst-ui/lo-fi/v2/ContextStorageMiddlewareLoFi.tsx +18 -0
  884. package/dist/components/catalyst-ui/lo-fi/v2/CookieSettingsLoFi.tsx +22 -0
  885. package/dist/components/catalyst-ui/lo-fi/v2/CoreLoFi.tsx +13 -0
  886. package/dist/components/catalyst-ui/lo-fi/v2/CreateAccountLoFi.tsx +16 -0
  887. package/dist/components/catalyst-ui/lo-fi/v2/DashboardLoFi.tsx +13 -0
  888. package/dist/components/catalyst-ui/lo-fi/v2/DashboardSidebarLoFi.tsx +17 -0
  889. package/dist/components/catalyst-ui/lo-fi/v2/DebouncedFetcherAndSubmitLoFi.tsx +11 -0
  890. package/dist/components/catalyst-ui/lo-fi/v2/DebouncedInputLoFi.tsx +10 -0
  891. package/dist/components/catalyst-ui/lo-fi/v2/DefaultStyledLoFi.tsx +11 -0
  892. package/dist/components/catalyst-ui/lo-fi/v2/DeferredContentLoFi.tsx +14 -0
  893. package/dist/components/catalyst-ui/lo-fi/v2/DelegateAnchorsToRemixLoFi.tsx +11 -0
  894. package/dist/components/catalyst-ui/lo-fi/v2/DetailLoFi.tsx +12 -0
  895. package/dist/components/catalyst-ui/lo-fi/v2/DeviceMockupLoFi.tsx +15 -0
  896. package/dist/components/catalyst-ui/lo-fi/v2/DiffLoFi.tsx +15 -0
  897. package/dist/components/catalyst-ui/lo-fi/v2/DisplayCodeLoFi.tsx +20 -0
  898. package/dist/components/catalyst-ui/lo-fi/v2/DockLoFi.tsx +13 -0
  899. package/dist/components/catalyst-ui/lo-fi/v2/DragAndDropLoFi.tsx +15 -0
  900. package/dist/components/catalyst-ui/lo-fi/v2/DrawerLoFi.tsx +16 -0
  901. package/dist/components/catalyst-ui/lo-fi/v2/DrawingLoFi.tsx +18 -0
  902. package/dist/components/catalyst-ui/lo-fi/v2/DrawingV2LoFi.tsx +21 -0
  903. package/dist/components/catalyst-ui/lo-fi/v2/DropZoneLoFi.tsx +12 -0
  904. package/dist/components/catalyst-ui/lo-fi/v2/ECommerceLoFi.tsx +14 -0
  905. package/dist/components/catalyst-ui/lo-fi/v2/EmbedLoFi.tsx +13 -0
  906. package/dist/components/catalyst-ui/lo-fi/v2/EmblaCarouselLoFi.tsx +18 -0
  907. package/dist/components/catalyst-ui/lo-fi/v2/EmblaCarouselSnapLoFi.tsx +12 -0
  908. package/dist/components/catalyst-ui/lo-fi/v2/EnhancedChartLoFi.tsx +29 -0
  909. package/dist/components/catalyst-ui/lo-fi/v2/ErrorLoFi.tsx +12 -0
  910. package/dist/components/catalyst-ui/lo-fi/v2/ExerciseMinutesLoFi.tsx +16 -0
  911. package/dist/components/catalyst-ui/lo-fi/v2/FABLoFi.tsx +10 -0
  912. package/dist/components/catalyst-ui/lo-fi/v2/FaqLoFi.tsx +12 -0
  913. package/dist/components/catalyst-ui/lo-fi/v2/FeatureSectionLoFi.tsx +29 -0
  914. package/dist/components/catalyst-ui/lo-fi/v2/FeedLoFi.tsx +28 -0
  915. package/dist/components/catalyst-ui/lo-fi/v2/FileManagerLoFi.tsx +18 -0
  916. package/dist/components/catalyst-ui/lo-fi/v2/FilterComboboxLoFi.tsx +11 -0
  917. package/dist/components/catalyst-ui/lo-fi/v2/FilterDrawerLoFi.tsx +17 -0
  918. package/dist/components/catalyst-ui/lo-fi/v2/FilterTanStackTableLoFi.tsx +11 -0
  919. package/dist/components/catalyst-ui/lo-fi/v2/FixedMarkerLoFi.tsx +10 -0
  920. package/dist/components/catalyst-ui/lo-fi/v2/FlexboxGridLoFi.tsx +13 -0
  921. package/dist/components/catalyst-ui/lo-fi/v2/FloatingSidebarWithSubmenusLoFi.tsx +18 -0
  922. package/dist/components/catalyst-ui/lo-fi/v2/ForLoFi.tsx +11 -0
  923. package/dist/components/catalyst-ui/lo-fi/v2/ForgotPasswordLoFi.tsx +12 -0
  924. package/dist/components/catalyst-ui/lo-fi/v2/FormsLoFi.tsx +13 -0
  925. package/dist/components/catalyst-ui/lo-fi/v2/Four04LoFi.tsx +12 -0
  926. package/dist/components/catalyst-ui/lo-fi/v2/FunctionalLeftRightSidebarLoFi.tsx +21 -0
  927. package/dist/components/catalyst-ui/lo-fi/v2/FuseSearchInputLoFi.tsx +11 -0
  928. package/dist/components/catalyst-ui/lo-fi/v2/FuzzyFilterLoFi.tsx +11 -0
  929. package/dist/components/catalyst-ui/lo-fi/v2/FuzzySortLoFi.tsx +14 -0
  930. package/dist/components/catalyst-ui/lo-fi/v2/GalleriaLoFi.tsx +14 -0
  931. package/dist/components/catalyst-ui/lo-fi/v2/GnattChartLoFi.tsx +20 -0
  932. package/dist/components/catalyst-ui/lo-fi/v2/GridLoFi.tsx +14 -0
  933. package/dist/components/catalyst-ui/lo-fi/v2/H3LoFi.tsx +9 -0
  934. package/dist/components/catalyst-ui/lo-fi/v2/H4LoFi.tsx +9 -0
  935. package/dist/components/catalyst-ui/lo-fi/v2/H5LoFi.tsx +9 -0
  936. package/dist/components/catalyst-ui/lo-fi/v2/HeaderNavLoFi.tsx +15 -0
  937. package/dist/components/catalyst-ui/lo-fi/v2/HelpLoFi.tsx +12 -0
  938. package/dist/components/catalyst-ui/lo-fi/v2/HighlightLoFi.tsx +13 -0
  939. package/dist/components/catalyst-ui/lo-fi/v2/HighlightV1LoFi.tsx +10 -0
  940. package/dist/components/catalyst-ui/lo-fi/v2/HomeLoFi.tsx +14 -0
  941. package/dist/components/catalyst-ui/lo-fi/v2/HoneypotMiddlewareLoFi.tsx +16 -0
  942. package/dist/components/catalyst-ui/lo-fi/v2/IBLoFi.tsx +9 -0
  943. package/dist/components/catalyst-ui/lo-fi/v2/ILoFi.tsx +9 -0
  944. package/dist/components/catalyst-ui/lo-fi/v2/ImageLoFi.tsx +9 -0
  945. package/dist/components/catalyst-ui/lo-fi/v2/ImageSectionLoFi.tsx +18 -0
  946. package/dist/components/catalyst-ui/lo-fi/v2/InADialogLoFi.tsx +17 -0
  947. package/dist/components/catalyst-ui/lo-fi/v2/IncIdLoFi.tsx +11 -0
  948. package/dist/components/catalyst-ui/lo-fi/v2/IncentivesCardLoFi.tsx +11 -0
  949. package/dist/components/catalyst-ui/lo-fi/v2/IndicatorLoFi.tsx +11 -0
  950. package/dist/components/catalyst-ui/lo-fi/v2/InsetSidebarSecondaryNavLoFi.tsx +20 -0
  951. package/dist/components/catalyst-ui/lo-fi/v2/InsufficientPermissionsLoFi.tsx +12 -0
  952. package/dist/components/catalyst-ui/lo-fi/v2/InvoiceLoFi.tsx +17 -0
  953. package/dist/components/catalyst-ui/lo-fi/v2/JWKAuthMiddlewareLoFi.tsx +17 -0
  954. package/dist/components/catalyst-ui/lo-fi/v2/LandingLoFi.tsx +12 -0
  955. package/dist/components/catalyst-ui/lo-fi/v2/LayoutLoFi.tsx +24 -0
  956. package/dist/components/catalyst-ui/lo-fi/v2/LoadErrorPageLoFi.tsx +15 -0
  957. package/dist/components/catalyst-ui/lo-fi/v2/LoadingLoFi.tsx +15 -0
  958. package/dist/components/catalyst-ui/lo-fi/v2/LoadingOverlayLoFi.tsx +13 -0
  959. package/dist/components/catalyst-ui/lo-fi/v2/LoadingPageLoFi.tsx +18 -0
  960. package/dist/components/catalyst-ui/lo-fi/v2/LoginLoFi.tsx +13 -0
  961. package/dist/components/catalyst-ui/lo-fi/v2/MailLoFi.tsx +18 -0
  962. package/dist/components/catalyst-ui/lo-fi/v2/MarketingLoFi.tsx +15 -0
  963. package/dist/components/catalyst-ui/lo-fi/v2/MegaMenuLoFi.tsx +26 -0
  964. package/dist/components/catalyst-ui/lo-fi/v2/MenuLoFi.tsx +14 -0
  965. package/dist/components/catalyst-ui/lo-fi/v2/MessageLoFi.tsx +14 -0
  966. package/dist/components/catalyst-ui/lo-fi/v2/MeterLoFi.tsx +16 -0
  967. package/dist/components/catalyst-ui/lo-fi/v2/MobileNavLoFi.tsx +12 -0
  968. package/dist/components/catalyst-ui/lo-fi/v2/ModalIntegrationsLoFi.tsx +24 -0
  969. package/dist/components/catalyst-ui/lo-fi/v2/ModalV1LoFi.tsx +20 -0
  970. package/dist/components/catalyst-ui/lo-fi/v2/MusicLoFi.tsx +17 -0
  971. package/dist/components/catalyst-ui/lo-fi/v2/NavMainLoFi.tsx +13 -0
  972. package/dist/components/catalyst-ui/lo-fi/v2/NavProjectsLoFi.tsx +20 -0
  973. package/dist/components/catalyst-ui/lo-fi/v2/NavTreeViewLoFi.tsx +17 -0
  974. package/dist/components/catalyst-ui/lo-fi/v2/NavUserLoFi.tsx +14 -0
  975. package/dist/components/catalyst-ui/lo-fi/v2/NestedComboboxLoFi.tsx +14 -0
  976. package/dist/components/catalyst-ui/lo-fi/v2/NestedCommandDialogLoFi.tsx +15 -0
  977. package/dist/components/catalyst-ui/lo-fi/v2/NestedCommandLoFi.tsx +16 -0
  978. package/dist/components/catalyst-ui/lo-fi/v2/NotFoundLoFi.tsx +12 -0
  979. package/dist/components/catalyst-ui/lo-fi/v2/NoteSectionLoFi.tsx +17 -0
  980. package/dist/components/catalyst-ui/lo-fi/v2/NotificationLoFi.tsx +14 -0
  981. package/dist/components/catalyst-ui/lo-fi/v2/OnTheRightLoFi.tsx +14 -0
  982. package/dist/components/catalyst-ui/lo-fi/v2/OrderListLoFi.tsx +17 -0
  983. package/dist/components/catalyst-ui/lo-fi/v2/OrderSummaryLoFi.tsx +17 -0
  984. package/dist/components/catalyst-ui/lo-fi/v2/OrderedListLoFi.tsx +14 -0
  985. package/dist/components/catalyst-ui/lo-fi/v2/OtpLoFi.tsx +16 -0
  986. package/dist/components/catalyst-ui/lo-fi/v2/OverlayPanelLoFi.tsx +12 -0
  987. package/dist/components/catalyst-ui/lo-fi/v2/PDFGeneratorLoFi.tsx +19 -0
  988. package/dist/components/catalyst-ui/lo-fi/v2/PMLoFi.tsx +14 -0
  989. package/dist/components/catalyst-ui/lo-fi/v2/PageHeaderLoFi.tsx +14 -0
  990. package/dist/components/catalyst-ui/lo-fi/v2/PageHeadingsSectionLoFi.tsx +11 -0
  991. package/dist/components/catalyst-ui/lo-fi/v2/PaginationButtonLoFi.tsx +8 -0
  992. package/dist/components/catalyst-ui/lo-fi/v2/PaginationWrapperLoFi.tsx +14 -0
  993. package/dist/components/catalyst-ui/lo-fi/v2/PanelLoFi.tsx +17 -0
  994. package/dist/components/catalyst-ui/lo-fi/v2/PanelMenuLoFi.tsx +17 -0
  995. package/dist/components/catalyst-ui/lo-fi/v2/PasswordInputLoFi.tsx +15 -0
  996. package/dist/components/catalyst-ui/lo-fi/v2/PaymentFormLoFi.tsx +15 -0
  997. package/dist/components/catalyst-ui/lo-fi/v2/PaymentMethodLoFi.tsx +18 -0
  998. package/dist/components/catalyst-ui/lo-fi/v2/PaymentsLoFi.tsx +22 -0
  999. package/dist/components/catalyst-ui/lo-fi/v2/PdfSignatureLoFi.tsx +14 -0
  1000. package/dist/components/catalyst-ui/lo-fi/v2/PdfViewerLoFi.tsx +23 -0
  1001. package/dist/components/catalyst-ui/lo-fi/v2/PlaceholderCodeLoFi.tsx +15 -0
  1002. package/dist/components/catalyst-ui/lo-fi/v2/PlaygroundLoFi.tsx +15 -0
  1003. package/dist/components/catalyst-ui/lo-fi/v2/PopconfirmLoFi.tsx +17 -0
  1004. package/dist/components/catalyst-ui/lo-fi/v2/PrefetchAnchorsLoFi.tsx +10 -0
  1005. package/dist/components/catalyst-ui/lo-fi/v2/PrismaClientExtensionLoFi.tsx +16 -0
  1006. package/dist/components/catalyst-ui/lo-fi/v2/ProductCategoryLoFi.tsx +13 -0
  1007. package/dist/components/catalyst-ui/lo-fi/v2/ProductComparisonLoFi.tsx +14 -0
  1008. package/dist/components/catalyst-ui/lo-fi/v2/ProductDetailsLoFi.tsx +14 -0
  1009. package/dist/components/catalyst-ui/lo-fi/v2/ProductEditLoFi.tsx +12 -0
  1010. package/dist/components/catalyst-ui/lo-fi/v2/ProductPricingLoFi.tsx +12 -0
  1011. package/dist/components/catalyst-ui/lo-fi/v2/ProductsLoFi.tsx +14 -0
  1012. package/dist/components/catalyst-ui/lo-fi/v2/ProfileCreateLoFi.tsx +12 -0
  1013. package/dist/components/catalyst-ui/lo-fi/v2/ProfileListLoFi.tsx +16 -0
  1014. package/dist/components/catalyst-ui/lo-fi/v2/ProfileLoFi.tsx +12 -0
  1015. package/dist/components/catalyst-ui/lo-fi/v2/ProgressLoFi.tsx +15 -0
  1016. package/dist/components/catalyst-ui/lo-fi/v2/ProseLoFi.tsx +16 -0
  1017. package/dist/components/catalyst-ui/lo-fi/v2/QRCodeLoFi.tsx +43 -0
  1018. package/dist/components/catalyst-ui/lo-fi/v2/QaDiscussionLoFi.tsx +14 -0
  1019. package/dist/components/catalyst-ui/lo-fi/v2/QaForumLoFi.tsx +11 -0
  1020. package/dist/components/catalyst-ui/lo-fi/v2/RailLoFi.tsx +16 -0
  1021. package/dist/components/catalyst-ui/lo-fi/v2/RatingLoFi.tsx +14 -0
  1022. package/dist/components/catalyst-ui/lo-fi/v2/ReactHooksDocsLoFi.tsx +11 -0
  1023. package/dist/components/catalyst-ui/lo-fi/v2/ReceiptLoFi.tsx +17 -0
  1024. package/dist/components/catalyst-ui/lo-fi/v2/RedirectBadRequestsLoFi.tsx +11 -0
  1025. package/dist/components/catalyst-ui/lo-fi/v2/RegisterLoFi.tsx +13 -0
  1026. package/dist/components/catalyst-ui/lo-fi/v2/RemixAuthLoFi.tsx +12 -0
  1027. package/dist/components/catalyst-ui/lo-fi/v2/RemixLinkLoFi.tsx +11 -0
  1028. package/dist/components/catalyst-ui/lo-fi/v2/ReportIssueLoFi.tsx +24 -0
  1029. package/dist/components/catalyst-ui/lo-fi/v2/RequestIDMiddlewareLoFi.tsx +11 -0
  1030. package/dist/components/catalyst-ui/lo-fi/v2/ResetPasswordLoFi.tsx +12 -0
  1031. package/dist/components/catalyst-ui/lo-fi/v2/ResponsiveLinkLoFi.tsx +11 -0
  1032. package/dist/components/catalyst-ui/lo-fi/v2/RightSidebarLoFi.tsx +17 -0
  1033. package/dist/components/catalyst-ui/lo-fi/v2/SaasLoFi.tsx +15 -0
  1034. package/dist/components/catalyst-ui/lo-fi/v2/SchedulerLoFi.tsx +14 -0
  1035. package/dist/components/catalyst-ui/lo-fi/v2/ScrolltopLoFi.tsx +11 -0
  1036. package/dist/components/catalyst-ui/lo-fi/v2/SecFetchParserLoFi.tsx +20 -0
  1037. package/dist/components/catalyst-ui/lo-fi/v2/SecureHeadersMiddlewareLoFi.tsx +17 -0
  1038. package/dist/components/catalyst-ui/lo-fi/v2/ServerTimingMiddlewareLoFi.tsx +16 -0
  1039. package/dist/components/catalyst-ui/lo-fi/v2/ServiceRepairFormLoFi.tsx +13 -0
  1040. package/dist/components/catalyst-ui/lo-fi/v2/SessionLoFi.tsx +11 -0
  1041. package/dist/components/catalyst-ui/lo-fi/v2/SettingsLoFi.tsx +13 -0
  1042. package/dist/components/catalyst-ui/lo-fi/v2/ShareLoFi.tsx +21 -0
  1043. package/dist/components/catalyst-ui/lo-fi/v2/Sidebar24LoFi.tsx +17 -0
  1044. package/dist/components/catalyst-ui/lo-fi/v2/SidebarAgnosticLoFi.tsx +22 -0
  1045. package/dist/components/catalyst-ui/lo-fi/v2/SidebarDetailsLoFi.tsx +17 -0
  1046. package/dist/components/catalyst-ui/lo-fi/v2/SidebarInAPopoverLoFi.tsx +16 -0
  1047. package/dist/components/catalyst-ui/lo-fi/v2/SidebarNavLoFi.tsx +14 -0
  1048. package/dist/components/catalyst-ui/lo-fi/v2/SidebarReactRouterLoFi.tsx +24 -0
  1049. package/dist/components/catalyst-ui/lo-fi/v2/SidebarStylisticDefaultLoFi.tsx +18 -0
  1050. package/dist/components/catalyst-ui/lo-fi/v2/SidebarStylisticDefaultWRightLoFi.tsx +23 -0
  1051. package/dist/components/catalyst-ui/lo-fi/v2/SidebarWithSubmenusLoFi.tsx +25 -0
  1052. package/dist/components/catalyst-ui/lo-fi/v2/SignUpLoFi.tsx +14 -0
  1053. package/dist/components/catalyst-ui/lo-fi/v2/SignatureLoFi.tsx +12 -0
  1054. package/dist/components/catalyst-ui/lo-fi/v2/SingletonMiddlewareLoFi.tsx +11 -0
  1055. package/dist/components/catalyst-ui/lo-fi/v2/SiteHeaderLoFi.tsx +18 -0
  1056. package/dist/components/catalyst-ui/lo-fi/v2/SmallTableLoFi.tsx +18 -0
  1057. package/dist/components/catalyst-ui/lo-fi/v2/SpeedDialLoFi.tsx +14 -0
  1058. package/dist/components/catalyst-ui/lo-fi/v2/SpinLoFi.tsx +7 -0
  1059. package/dist/components/catalyst-ui/lo-fi/v2/SpinnerLoFi.tsx +9 -0
  1060. package/dist/components/catalyst-ui/lo-fi/v2/StackLoFi.tsx +14 -0
  1061. package/dist/components/catalyst-ui/lo-fi/v2/StackedListsLoFi.tsx +50 -0
  1062. package/dist/components/catalyst-ui/lo-fi/v2/StackedLoFi.tsx +11 -0
  1063. package/dist/components/catalyst-ui/lo-fi/v2/StateChangeLoFi.tsx +11 -0
  1064. package/dist/components/catalyst-ui/lo-fi/v2/StatsLoFi.tsx +15 -0
  1065. package/dist/components/catalyst-ui/lo-fi/v2/StatusLoFi.tsx +11 -0
  1066. package/dist/components/catalyst-ui/lo-fi/v2/StepsLoFi.tsx +18 -0
  1067. package/dist/components/catalyst-ui/lo-fi/v2/StoreFrontLoFi.tsx +15 -0
  1068. package/dist/components/catalyst-ui/lo-fi/v2/StoreNavSectionLoFi.tsx +14 -0
  1069. package/dist/components/catalyst-ui/lo-fi/v2/StripeLoFi.tsx +15 -0
  1070. package/dist/components/catalyst-ui/lo-fi/v2/StyleProviderLoFi.tsx +16 -0
  1071. package/dist/components/catalyst-ui/lo-fi/v2/TSTableLoFi.tsx +24 -0
  1072. package/dist/components/catalyst-ui/lo-fi/v2/TSTableV1LoFi.tsx +20 -0
  1073. package/dist/components/catalyst-ui/lo-fi/v2/TSTableV2LoFi.tsx +20 -0
  1074. package/dist/components/catalyst-ui/lo-fi/v2/TabViewLoFi.tsx +17 -0
  1075. package/dist/components/catalyst-ui/lo-fi/v2/TableLoFi.tsx +18 -0
  1076. package/dist/components/catalyst-ui/lo-fi/v2/TagLoFi.tsx +11 -0
  1077. package/dist/components/catalyst-ui/lo-fi/v2/TailwindcssTxtLoFi.tsx +20 -0
  1078. package/dist/components/catalyst-ui/lo-fi/v2/TaskListLoFi.tsx +16 -0
  1079. package/dist/components/catalyst-ui/lo-fi/v2/TaskboardLoFi.tsx +20 -0
  1080. package/dist/components/catalyst-ui/lo-fi/v2/TasksLoFi.tsx +19 -0
  1081. package/dist/components/catalyst-ui/lo-fi/v2/TeamMembersLoFi.tsx +20 -0
  1082. package/dist/components/catalyst-ui/lo-fi/v2/TerminalLoFi.tsx +20 -0
  1083. package/dist/components/catalyst-ui/lo-fi/v2/TextEditorLoFi.tsx +14 -0
  1084. package/dist/components/catalyst-ui/lo-fi/v2/ThemeSelectorLoFi.tsx +14 -0
  1085. package/dist/components/catalyst-ui/lo-fi/v2/TicketsLoFi.tsx +16 -0
  1086. package/dist/components/catalyst-ui/lo-fi/v2/TimelineLoFi.tsx +33 -0
  1087. package/dist/components/catalyst-ui/lo-fi/v2/TimelineV1LoFi.tsx +36 -0
  1088. package/dist/components/catalyst-ui/lo-fi/v2/TitleSectionLoFi.tsx +15 -0
  1089. package/dist/components/catalyst-ui/lo-fi/v2/ToDoLoFi.tsx +17 -0
  1090. package/dist/components/catalyst-ui/lo-fi/v2/ToggleClassLoFi.tsx +12 -0
  1091. package/dist/components/catalyst-ui/lo-fi/v2/ToolbarLoFi.tsx +14 -0
  1092. package/dist/components/catalyst-ui/lo-fi/v2/TourLoFi.tsx +21 -0
  1093. package/dist/components/catalyst-ui/lo-fi/v2/TransitionLoFi.tsx +10 -0
  1094. package/dist/components/catalyst-ui/lo-fi/v2/TransitionablePortalLoFi.tsx +12 -0
  1095. package/dist/components/catalyst-ui/lo-fi/v2/TravelLoFi.tsx +12 -0
  1096. package/dist/components/catalyst-ui/lo-fi/v2/TreeViewLoFi.tsx +24 -0
  1097. package/dist/components/catalyst-ui/lo-fi/v2/UnderConstructionLoFi.tsx +11 -0
  1098. package/dist/components/catalyst-ui/lo-fi/v2/UsageSectionLoFi.tsx +19 -0
  1099. package/dist/components/catalyst-ui/lo-fi/v2/UsageSectionNoDashLoFi.tsx +15 -0
  1100. package/dist/components/catalyst-ui/lo-fi/v2/UseAsyncLoFi.tsx +10 -0
  1101. package/dist/components/catalyst-ui/lo-fi/v2/UseClickOutsideLoFi.tsx +10 -0
  1102. package/dist/components/catalyst-ui/lo-fi/v2/UseCopyToClipboardLoFi.tsx +10 -0
  1103. package/dist/components/catalyst-ui/lo-fi/v2/UseCounterLoFi.tsx +11 -0
  1104. package/dist/components/catalyst-ui/lo-fi/v2/UseDebounceLoFi.tsx +10 -0
  1105. package/dist/components/catalyst-ui/lo-fi/v2/UseDebouncedFuseSearchLoFi.tsx +10 -0
  1106. package/dist/components/catalyst-ui/lo-fi/v2/UseEventListenerLoFi.tsx +10 -0
  1107. package/dist/components/catalyst-ui/lo-fi/v2/UseExportMarkdownLoFi.tsx +10 -0
  1108. package/dist/components/catalyst-ui/lo-fi/v2/UseExportTsxLoFi.tsx +10 -0
  1109. package/dist/components/catalyst-ui/lo-fi/v2/UseExternalScriptsLoFi.tsx +11 -0
  1110. package/dist/components/catalyst-ui/lo-fi/v2/UseFaviconLoFi.tsx +10 -0
  1111. package/dist/components/catalyst-ui/lo-fi/v2/UseFetchLoFi.tsx +11 -0
  1112. package/dist/components/catalyst-ui/lo-fi/v2/UseFocusLoFi.tsx +10 -0
  1113. package/dist/components/catalyst-ui/lo-fi/v2/UseFocusWithinLoFi.tsx +10 -0
  1114. package/dist/components/catalyst-ui/lo-fi/v2/UseFormLoFi.tsx +11 -0
  1115. package/dist/components/catalyst-ui/lo-fi/v2/UseFuseSearchLoFi.tsx +10 -0
  1116. package/dist/components/catalyst-ui/lo-fi/v2/UseFuzzySearchLoFi.tsx +11 -0
  1117. package/dist/components/catalyst-ui/lo-fi/v2/UseGlobalLoadingStateLoFi.tsx +10 -0
  1118. package/dist/components/catalyst-ui/lo-fi/v2/UseGlobalNavigationStateLoFi.tsx +11 -0
  1119. package/dist/components/catalyst-ui/lo-fi/v2/UseGlobalPendingStateLoFi.tsx +10 -0
  1120. package/dist/components/catalyst-ui/lo-fi/v2/UseGlobalSubmittingStateLoFi.tsx +10 -0
  1121. package/dist/components/catalyst-ui/lo-fi/v2/UseHoverLoFi.tsx +10 -0
  1122. package/dist/components/catalyst-ui/lo-fi/v2/UseIntersectionObserverLoFi.tsx +10 -0
  1123. package/dist/components/catalyst-ui/lo-fi/v2/UseIntervalLoFi.tsx +10 -0
  1124. package/dist/components/catalyst-ui/lo-fi/v2/UseKeyPressLoFi.tsx +11 -0
  1125. package/dist/components/catalyst-ui/lo-fi/v2/UseKeyboardLoFi.tsx +11 -0
  1126. package/dist/components/catalyst-ui/lo-fi/v2/UseLocalStorageLoFi.tsx +10 -0
  1127. package/dist/components/catalyst-ui/lo-fi/v2/UseLocalesLoFi.tsx +11 -0
  1128. package/dist/components/catalyst-ui/lo-fi/v2/UseLongPressLoFi.tsx +10 -0
  1129. package/dist/components/catalyst-ui/lo-fi/v2/UseMediaQueryLoFi.tsx +10 -0
  1130. package/dist/components/catalyst-ui/lo-fi/v2/UseMobileLoFi.tsx +10 -0
  1131. package/dist/components/catalyst-ui/lo-fi/v2/UseMountEffectLoFi.tsx +10 -0
  1132. package/dist/components/catalyst-ui/lo-fi/v2/UseMountedLoFi.tsx +10 -0
  1133. package/dist/components/catalyst-ui/lo-fi/v2/UseMoveLoFi.tsx +11 -0
  1134. package/dist/components/catalyst-ui/lo-fi/v2/UseMutationObserverLoFi.tsx +10 -0
  1135. package/dist/components/catalyst-ui/lo-fi/v2/UseOnlineStatusLoFi.tsx +10 -0
  1136. package/dist/components/catalyst-ui/lo-fi/v2/UseOverlayListenerLoFi.tsx +10 -0
  1137. package/dist/components/catalyst-ui/lo-fi/v2/UseOverlayScrollListenerLoFi.tsx +10 -0
  1138. package/dist/components/catalyst-ui/lo-fi/v2/UsePressLoFi.tsx +10 -0
  1139. package/dist/components/catalyst-ui/lo-fi/v2/UsePreviousLoFi.tsx +11 -0
  1140. package/dist/components/catalyst-ui/lo-fi/v2/UseResizeListenerLoFi.tsx +10 -0
  1141. package/dist/components/catalyst-ui/lo-fi/v2/UseScrollPositionLoFi.tsx +11 -0
  1142. package/dist/components/catalyst-ui/lo-fi/v2/UseSessionStorageLoFi.tsx +10 -0
  1143. package/dist/components/catalyst-ui/lo-fi/v2/UseShouldHydrateLoFi.tsx +10 -0
  1144. package/dist/components/catalyst-ui/lo-fi/v2/UseSlideInLoFi.tsx +10 -0
  1145. package/dist/components/catalyst-ui/lo-fi/v2/UseStreamLoFi.tsx +11 -0
  1146. package/dist/components/catalyst-ui/lo-fi/v2/UseThrottleLoFi.tsx +10 -0
  1147. package/dist/components/catalyst-ui/lo-fi/v2/UseTimeoutLoFi.tsx +10 -0
  1148. package/dist/components/catalyst-ui/lo-fi/v2/UseToggleLoFi.tsx +10 -0
  1149. package/dist/components/catalyst-ui/lo-fi/v2/UseUnmountEffectLoFi.tsx +10 -0
  1150. package/dist/components/catalyst-ui/lo-fi/v2/UseUpdateEffectLoFi.tsx +10 -0
  1151. package/dist/components/catalyst-ui/lo-fi/v2/UseWindowSizeLoFi.tsx +11 -0
  1152. package/dist/components/catalyst-ui/lo-fi/v2/UserBasedAccessRulesLoFi.tsx +20 -0
  1153. package/dist/components/catalyst-ui/lo-fi/v2/UserLoFi.tsx +10 -0
  1154. package/dist/components/catalyst-ui/lo-fi/v2/UserOnboardingLoFi.tsx +12 -0
  1155. package/dist/components/catalyst-ui/lo-fi/v2/VerificationLoFi.tsx +17 -0
  1156. package/dist/components/catalyst-ui/lo-fi/v2/VirtualizerLoFi.tsx +16 -0
  1157. package/dist/components/catalyst-ui/lo-fi/v2/WatermarkLoFi.tsx +13 -0
  1158. package/dist/components/catalyst-ui/lo-fi/v2/WithACalendarLoFi.tsx +23 -0
  1159. package/dist/components/catalyst-ui/lo-fi/v2/WithAShoppingCartLoFi.tsx +20 -0
  1160. package/dist/components/catalyst-ui/lo-fi/v2/WithATreeViewLoFi.tsx +20 -0
  1161. package/dist/components/catalyst-ui/lo-fi/v2/WithCollapsibleNestedSidebarsLoFi.tsx +22 -0
  1162. package/dist/components/catalyst-ui/lo-fi/v2/WithCollapsibleSectionsLoFi.tsx +20 -0
  1163. package/dist/components/catalyst-ui/lo-fi/v2/WithCollapsibleSubmenusLoFi.tsx +26 -0
  1164. package/dist/components/catalyst-ui/lo-fi/v2/WithCookieMiddlewareLoFi.tsx +17 -0
  1165. package/dist/components/catalyst-ui/lo-fi/v2/WithInitialLoadingStateLoFi.tsx +13 -0
  1166. package/dist/components/catalyst-ui/lo-fi/v2/WithLoadingNavStateChangesLoFi.tsx +17 -0
  1167. package/dist/components/catalyst-ui/lo-fi/v2/WithNavigationGroupedBySectionLoFi.tsx +24 -0
  1168. package/dist/components/catalyst-ui/lo-fi/v2/WithSubmenusAsDropdownsLoFi.tsx +25 -0
  1169. package/dist/components/catalyst-ui/lo-fi/v2/action-bar-lofi.tsx +20 -0
  1170. package/dist/components/catalyst-ui/lo-fi/v2/block-quote-lofi.tsx +10 -0
  1171. package/dist/components/catalyst-ui/lo-fi/v2/calendar-lofi.tsx +19 -0
  1172. package/dist/components/catalyst-ui/lo-fi/v2/cascade-tree-lofi.tsx +34 -0
  1173. package/dist/components/catalyst-ui/lo-fi/v2/cascader-lofi.tsx +27 -0
  1174. package/dist/components/catalyst-ui/lo-fi/v2/changelog-lofi.tsx +14 -0
  1175. package/dist/components/catalyst-ui/lo-fi/v2/check-tree-lofi.tsx +27 -0
  1176. package/dist/components/catalyst-ui/lo-fi/v2/check-tree-picker-lofi.tsx +28 -0
  1177. package/dist/components/catalyst-ui/lo-fi/v2/checkbox-card-v1-lofi.tsx +29 -0
  1178. package/dist/components/catalyst-ui/lo-fi/v2/checkbox-v1-lofi.tsx +24 -0
  1179. package/dist/components/catalyst-ui/lo-fi/v2/client-only-mermaid-lofi.tsx +21 -0
  1180. package/dist/components/catalyst-ui/lo-fi/v2/color-picker-lofi.tsx +24 -0
  1181. package/dist/components/catalyst-ui/lo-fi/v2/combobox-v1-lofi.tsx +25 -0
  1182. package/dist/components/catalyst-ui/lo-fi/v2/credit-card-input-lofi.tsx +32 -0
  1183. package/dist/components/catalyst-ui/lo-fi/v2/floating-label-lofi.tsx +26 -0
  1184. package/dist/components/catalyst-ui/lo-fi/v2/form-wizard-lofi.tsx +26 -0
  1185. package/dist/components/catalyst-ui/lo-fi/v2/hero-lofi.tsx +15 -0
  1186. package/dist/components/catalyst-ui/lo-fi/v2/heroV2-lofi.tsx +17 -0
  1187. package/dist/components/catalyst-ui/lo-fi/v2/inline-edit-lofi.tsx +19 -0
  1188. package/dist/components/catalyst-ui/lo-fi/v2/inplaceLoFi.tsx +10 -0
  1189. package/dist/components/catalyst-ui/lo-fi/v2/input-mask-lofi.tsx +33 -0
  1190. package/dist/components/catalyst-ui/lo-fi/v2/install-code-array-section-lofi.tsx +20 -0
  1191. package/dist/components/catalyst-ui/lo-fi/v2/install-code-section-lofi.tsx +16 -0
  1192. package/dist/components/catalyst-ui/lo-fi/v2/install-github-section-lofi.tsx +11 -0
  1193. package/dist/components/catalyst-ui/lo-fi/v2/json-input-lofi.tsx +29 -0
  1194. package/dist/components/catalyst-ui/lo-fi/v2/multi-cascade-tree-lofi.tsx +40 -0
  1195. package/dist/components/catalyst-ui/lo-fi/v2/multi-cascader-lofi.tsx +28 -0
  1196. package/dist/components/catalyst-ui/lo-fi/v2/multi-combobox-lofi.tsx +31 -0
  1197. package/dist/components/catalyst-ui/lo-fi/v2/nav-shopping-cart-lofi.tsx +13 -0
  1198. package/dist/components/catalyst-ui/lo-fi/v2/pin-input-lofi.tsx +23 -0
  1199. package/dist/components/catalyst-ui/lo-fi/v2/select-button-lofi.tsx +20 -0
  1200. package/dist/components/catalyst-ui/lo-fi/v2/sidebar28-lofi.tsx +15 -0
  1201. package/dist/components/catalyst-ui/lo-fi/v2/step-form-wizard-lofi.tsx +34 -0
  1202. package/dist/components/catalyst-ui/lo-fi/v2/tags-input-lofi.tsx +21 -0
  1203. package/dist/components/catalyst-ui/lo-fi/v2/textarea-lofi.tsx +18 -0
  1204. package/dist/components/catalyst-ui/lo-fi/v2/textarea-v2-lofi.tsx +19 -0
  1205. package/dist/components/catalyst-ui/lo-fi/v2/transfer-list-lofi.tsx +40 -0
  1206. package/dist/components/catalyst-ui/lo-fi/v2/tri-state-checkbox-lofi.tsx +25 -0
  1207. package/dist/components/catalyst-ui/lo-fi/v2/tsxSection-lofi.tsx +20 -0
  1208. package/dist/components/catalyst-ui/marketing/demo/demos.tsx +0 -0
  1209. package/dist/components/catalyst-ui/marketing/demo/sectionHeadings-demo.tsx +103 -0
  1210. package/dist/components/catalyst-ui/marketing/elements/banner-with-effect.tsx +0 -0
  1211. package/dist/components/catalyst-ui/marketing/elements/flyoutMenu.tsx +318 -0
  1212. package/dist/components/catalyst-ui/marketing/index.ts +41 -0
  1213. package/dist/components/catalyst-ui/marketing/sections/animated-testimonials.tsx +169 -0
  1214. package/dist/components/catalyst-ui/marketing/sections/bentoGrid.tsx +300 -0
  1215. package/dist/components/catalyst-ui/marketing/sections/blog.tsx +469 -0
  1216. package/dist/components/catalyst-ui/marketing/sections/blogEditor.tsx +358 -0
  1217. package/dist/components/catalyst-ui/marketing/sections/blogPost.tsx +208 -0
  1218. package/dist/components/catalyst-ui/marketing/sections/carousel.tsx +928 -0
  1219. package/dist/components/catalyst-ui/marketing/sections/cta.tsx +379 -0
  1220. package/dist/components/catalyst-ui/marketing/sections/faq.tsx +147 -0
  1221. package/dist/components/catalyst-ui/marketing/sections/feature-carousel.tsx +505 -0
  1222. package/dist/components/catalyst-ui/marketing/sections/feature-section.tsx +83 -0
  1223. package/dist/components/catalyst-ui/marketing/sections/feature-showcase.tsx +250 -0
  1224. package/dist/components/catalyst-ui/marketing/sections/feature.tsx +279 -0
  1225. package/dist/components/catalyst-ui/marketing/sections/footer.tsx +390 -0
  1226. package/dist/components/catalyst-ui/marketing/sections/header-1.tsx +450 -0
  1227. package/dist/components/catalyst-ui/marketing/sections/header.tsx +414 -0
  1228. package/dist/components/catalyst-ui/marketing/sections/hero-2.tsx +55 -0
  1229. package/dist/components/catalyst-ui/marketing/sections/hero-3.tsx +12 -0
  1230. package/dist/components/catalyst-ui/marketing/sections/hero-section.tsx +17 -0
  1231. package/dist/components/catalyst-ui/marketing/sections/hero.tsx +169 -0
  1232. package/dist/components/catalyst-ui/marketing/sections/image-section.tsx +36 -0
  1233. package/dist/components/catalyst-ui/marketing/sections/index.ts +33 -0
  1234. package/dist/components/catalyst-ui/marketing/sections/logoClouds.tsx +295 -0
  1235. package/dist/components/catalyst-ui/marketing/sections/newsLetter.tsx +137 -0
  1236. package/dist/components/catalyst-ui/marketing/sections/page-header-section.tsx +127 -0
  1237. package/dist/components/catalyst-ui/marketing/sections/pricing-carousel-2.tsx +282 -0
  1238. package/dist/components/catalyst-ui/marketing/sections/pricing-carousel.tsx +555 -0
  1239. package/dist/components/catalyst-ui/marketing/sections/pricing-single-card.tsx +154 -0
  1240. package/dist/components/catalyst-ui/marketing/sections/pricing.tsx +790 -0
  1241. package/dist/components/catalyst-ui/marketing/sections/testimonial-carousel.tsx +499 -0
  1242. package/dist/components/catalyst-ui/marketing/sections/testimonial.tsx +204 -0
  1243. package/dist/components/catalyst-ui/marketing/sections/title-section.tsx +57 -0
  1244. package/dist/components/catalyst-ui/media/3d-marquee.tsx +144 -0
  1245. package/dist/components/catalyst-ui/media/avatar-circles.tsx +78 -0
  1246. package/dist/components/catalyst-ui/media/blur-fade.tsx +106 -0
  1247. package/dist/components/catalyst-ui/media/carousel-1.tsx +926 -0
  1248. package/dist/components/catalyst-ui/media/carousel-2.tsx +198 -0
  1249. package/dist/components/catalyst-ui/media/carousel-hero.tsx +286 -0
  1250. package/dist/components/catalyst-ui/media/carousel-simple.tsx +244 -0
  1251. package/dist/components/catalyst-ui/media/color-palette-card.tsx +85 -0
  1252. package/dist/components/catalyst-ui/media/cropper.tsx +68 -0
  1253. package/dist/components/catalyst-ui/media/embla-carousel-arrow-buttons.tsx +117 -0
  1254. package/dist/components/catalyst-ui/media/embla-carousel-snap.tsx +103 -0
  1255. package/dist/components/catalyst-ui/media/galleria.tsx +316 -0
  1256. package/dist/components/catalyst-ui/media/globe.tsx +138 -0
  1257. package/dist/components/catalyst-ui/media/google-maps-component.tsx +540 -0
  1258. package/dist/components/catalyst-ui/media/icon-cloud.tsx +312 -0
  1259. package/dist/components/catalyst-ui/media/image-comparison.tsx +251 -0
  1260. package/dist/components/catalyst-ui/media/image-crop.tsx +366 -0
  1261. package/dist/components/catalyst-ui/media/image-zoom.tsx +51 -0
  1262. package/dist/components/catalyst-ui/media/index.ts +32 -0
  1263. package/dist/components/catalyst-ui/media/infinite-scroll.tsx +303 -0
  1264. package/dist/components/catalyst-ui/media/infinite-slider.tsx +108 -0
  1265. package/dist/components/catalyst-ui/media/interactive-icon-cloud.tsx +100 -0
  1266. package/dist/components/catalyst-ui/media/logo.tsx +100 -0
  1267. package/dist/components/catalyst-ui/media/marquee.tsx +199 -0
  1268. package/dist/components/catalyst-ui/media/marquee1.tsx +114 -0
  1269. package/dist/components/catalyst-ui/media/parallax-scroll.tsx +119 -0
  1270. package/dist/components/catalyst-ui/media/pixel-image.tsx +153 -0
  1271. package/dist/components/catalyst-ui/media/video-player.tsx +94 -0
  1272. package/dist/components/catalyst-ui/motions/animated-number.tsx +252 -0
  1273. package/dist/components/catalyst-ui/motions/bg-media.tsx +122 -0
  1274. package/dist/components/catalyst-ui/motions/border-beam.tsx +40 -0
  1275. package/dist/components/catalyst-ui/motions/circle-menu.tsx +320 -0
  1276. package/dist/components/catalyst-ui/motions/color-picker.tsx +490 -0
  1277. package/dist/components/catalyst-ui/motions/color-wheel.tsx +81 -0
  1278. package/dist/components/catalyst-ui/motions/direction-aware-tabs.tsx +568 -0
  1279. package/dist/components/catalyst-ui/motions/dynamic-island.tsx +733 -0
  1280. package/dist/components/catalyst-ui/motions/expandable-card.tsx +941 -0
  1281. package/dist/components/catalyst-ui/motions/expandable-screen.tsx +455 -0
  1282. package/dist/components/catalyst-ui/motions/floating-panel.tsx +1115 -0
  1283. package/dist/components/catalyst-ui/motions/gradient-heading.tsx +116 -0
  1284. package/dist/components/catalyst-ui/motions/index.ts +93 -0
  1285. package/dist/components/catalyst-ui/motions/intro-disclosure.tsx +1345 -0
  1286. package/dist/components/catalyst-ui/motions/light-board.tsx +888 -0
  1287. package/dist/components/catalyst-ui/motions/loading-carousel.tsx +517 -0
  1288. package/dist/components/catalyst-ui/motions/logo-carousel.tsx +586 -0
  1289. package/dist/components/catalyst-ui/motions/morph-surface.tsx +779 -0
  1290. package/dist/components/catalyst-ui/motions/motion-accordian.tsx +206 -0
  1291. package/dist/components/catalyst-ui/motions/motion-alert-dialog.tsx +356 -0
  1292. package/dist/components/catalyst-ui/motions/motion-avatar.tsx +384 -0
  1293. package/dist/components/catalyst-ui/motions/motion-beam.tsx +674 -0
  1294. package/dist/components/catalyst-ui/motions/motion-bento.tsx +262 -0
  1295. package/dist/components/catalyst-ui/motions/motion-bento1.tsx +307 -0
  1296. package/dist/components/catalyst-ui/motions/motion-button.tsx +107 -0
  1297. package/dist/components/catalyst-ui/motions/motion-calendar.tsx +213 -0
  1298. package/dist/components/catalyst-ui/motions/motion-card.tsx +1609 -0
  1299. package/dist/components/catalyst-ui/motions/motion-card1.tsx +825 -0
  1300. package/dist/components/catalyst-ui/motions/motion-card2.tsx +289 -0
  1301. package/dist/components/catalyst-ui/motions/motion-card3.tsx +190 -0
  1302. package/dist/components/catalyst-ui/motions/motion-carousel.tsx +517 -0
  1303. package/dist/components/catalyst-ui/motions/motion-checkbox.tsx +77 -0
  1304. package/dist/components/catalyst-ui/motions/motion-choicebox.tsx +360 -0
  1305. package/dist/components/catalyst-ui/motions/motion-combobox.tsx +242 -0
  1306. package/dist/components/catalyst-ui/motions/motion-command.tsx +328 -0
  1307. package/dist/components/catalyst-ui/motions/motion-context-menu.tsx +391 -0
  1308. package/dist/components/catalyst-ui/motions/motion-date-picker.tsx +162 -0
  1309. package/dist/components/catalyst-ui/motions/motion-dialog.tsx +350 -0
  1310. package/dist/components/catalyst-ui/motions/motion-drawer.tsx +1778 -0
  1311. package/dist/components/catalyst-ui/motions/motion-drawer1.tsx +209 -0
  1312. package/dist/components/catalyst-ui/motions/motion-dropdown-menu.tsx +429 -0
  1313. package/dist/components/catalyst-ui/motions/motion-dropdown1.tsx +572 -0
  1314. package/dist/components/catalyst-ui/motions/motion-feature-carousel.tsx +771 -0
  1315. package/dist/components/catalyst-ui/motions/motion-file-upload.tsx +596 -0
  1316. package/dist/components/catalyst-ui/motions/motion-group.tsx +194 -0
  1317. package/dist/components/catalyst-ui/motions/motion-highlight.tsx +550 -0
  1318. package/dist/components/catalyst-ui/motions/motion-highlight2.tsx +590 -0
  1319. package/dist/components/catalyst-ui/motions/motion-hover-card.tsx +207 -0
  1320. package/dist/components/catalyst-ui/motions/motion-images.tsx +53 -0
  1321. package/dist/components/catalyst-ui/motions/motion-input.tsx +51 -0
  1322. package/dist/components/catalyst-ui/motions/motion-list.tsx +170 -0
  1323. package/dist/components/catalyst-ui/motions/motion-logo-carosel.tsx +668 -0
  1324. package/dist/components/catalyst-ui/motions/motion-map.tsx +372 -0
  1325. package/dist/components/catalyst-ui/motions/motion-navbar.tsx +69 -0
  1326. package/dist/components/catalyst-ui/motions/motion-navigation-menu.tsx +302 -0
  1327. package/dist/components/catalyst-ui/motions/motion-panel.tsx +338 -0
  1328. package/dist/components/catalyst-ui/motions/motion-popover.tsx +281 -0
  1329. package/dist/components/catalyst-ui/motions/motion-radio-card.tsx +77 -0
  1330. package/dist/components/catalyst-ui/motions/motion-radio-group.tsx +54 -0
  1331. package/dist/components/catalyst-ui/motions/motion-rating.tsx +182 -0
  1332. package/dist/components/catalyst-ui/motions/motion-screen.tsx +441 -0
  1333. package/dist/components/catalyst-ui/motions/motion-search-bar.tsx +1013 -0
  1334. package/dist/components/catalyst-ui/motions/motion-section.tsx +270 -0
  1335. package/dist/components/catalyst-ui/motions/motion-select.tsx +306 -0
  1336. package/dist/components/catalyst-ui/motions/motion-spotlight.tsx +217 -0
  1337. package/dist/components/catalyst-ui/motions/motion-switch.tsx +83 -0
  1338. package/dist/components/catalyst-ui/motions/motion-tabs.tsx +554 -0
  1339. package/dist/components/catalyst-ui/motions/motion-tabs2.tsx +257 -0
  1340. package/dist/components/catalyst-ui/motions/motion-testimonials.tsx +282 -0
  1341. package/dist/components/catalyst-ui/motions/motion-toast.tsx +398 -0
  1342. package/dist/components/catalyst-ui/motions/motion-toolbar-tabs.tsx +519 -0
  1343. package/dist/components/catalyst-ui/motions/motion-toolbar.tsx +1113 -0
  1344. package/dist/components/catalyst-ui/motions/motion-tooltip.tsx +162 -0
  1345. package/dist/components/catalyst-ui/motions/motion-tooltip2.tsx +82 -0
  1346. package/dist/components/catalyst-ui/motions/motion-video-player.tsx +1056 -0
  1347. package/dist/components/catalyst-ui/motions/motions-input.tsx +51 -0
  1348. package/dist/components/catalyst-ui/motions/popover-form.tsx +469 -0
  1349. package/dist/components/catalyst-ui/motions/profile-dropdown.tsx +237 -0
  1350. package/dist/components/catalyst-ui/motions/radial-menu.tsx +303 -0
  1351. package/dist/components/catalyst-ui/motions/roladex.tsx +194 -0
  1352. package/dist/components/catalyst-ui/motions/roladex1.tsx +166 -0
  1353. package/dist/components/catalyst-ui/motions/shift-card.tsx +302 -0
  1354. package/dist/components/catalyst-ui/motions/side-panel.tsx +352 -0
  1355. package/dist/components/catalyst-ui/motions/smooth-drawer.tsx +213 -0
  1356. package/dist/components/catalyst-ui/motions/smooth-popover.tsx +491 -0
  1357. package/dist/components/catalyst-ui/motions/sortable-list.tsx +712 -0
  1358. package/dist/components/catalyst-ui/motions/stripe.tsx +261 -0
  1359. package/dist/components/catalyst-ui/motions/texture-button.tsx +217 -0
  1360. package/dist/components/catalyst-ui/motions/timer.tsx +286 -0
  1361. package/dist/components/catalyst-ui/motions/toolbar-expandable.tsx +1138 -0
  1362. package/dist/components/catalyst-ui/motions/youtube-player.tsx +614 -0
  1363. package/dist/components/catalyst-ui/overlays/animated-modal.tsx +212 -0
  1364. package/dist/components/catalyst-ui/overlays/animated-tooltip.tsx +99 -0
  1365. package/dist/components/catalyst-ui/overlays/confirm-popup.tsx +219 -0
  1366. package/dist/components/catalyst-ui/overlays/dialog-stack.tsx +558 -0
  1367. package/dist/components/catalyst-ui/overlays/index.ts +19 -0
  1368. package/dist/components/catalyst-ui/overlays/loading-overlay.tsx +324 -0
  1369. package/dist/components/catalyst-ui/overlays/modal-integrations-1.tsx +300 -0
  1370. package/dist/components/catalyst-ui/overlays/modal-integrations.tsx +301 -0
  1371. package/dist/components/catalyst-ui/overlays/overlay-panel.tsx +233 -0
  1372. package/dist/components/catalyst-ui/overlays/popconfirm.tsx +721 -0
  1373. package/dist/components/catalyst-ui/overlays/sidebar-props.tsx +492 -0
  1374. package/dist/components/catalyst-ui/overlays/sidebar.tsx +2208 -0
  1375. package/dist/components/catalyst-ui/overlays/sidebarMenuItemLoading.tsx +124 -0
  1376. package/dist/components/catalyst-ui/overlays/texture-card.tsx +309 -0
  1377. package/dist/components/catalyst-ui/overlays/transitionable-portal.tsx +230 -0
  1378. package/dist/components/catalyst-ui/pdf/generate_custom_pdf.tsx +40 -0
  1379. package/dist/components/catalyst-ui/pdf/generate_pdf.tsx +196 -0
  1380. package/dist/components/catalyst-ui/pdf/index.ts +12 -0
  1381. package/dist/components/catalyst-ui/pdf/pdf.tsx +32 -0
  1382. package/dist/components/catalyst-ui/pdf/pdf_generator.ts +141 -0
  1383. package/dist/components/catalyst-ui/pdf/pdf_sender.$dealerId.$documentId.$dept.tsx +1260 -0
  1384. package/dist/components/catalyst-ui/pdf/pdf_signer.$id.tsx +1438 -0
  1385. package/dist/components/catalyst-ui/pdf/print_pdf.tsx +15905 -0
  1386. package/dist/components/catalyst-ui/pdf/templateBuilder.tsx +1590 -0
  1387. package/dist/components/catalyst-ui/pdf/test.tsx +53 -0
  1388. package/dist/components/catalyst-ui/pos/index.ts +5 -0
  1389. package/dist/components/catalyst-ui/pos/tools/barcodeScanner.tsx +160 -0
  1390. package/dist/components/catalyst-ui/pos/tools/cashDrawerWizard.tsx +1403 -0
  1391. package/dist/components/catalyst-ui/pos/tools/scan.mp4 +0 -0
  1392. package/dist/components/catalyst-ui/primitives/alert.tsx +103 -0
  1393. package/dist/components/catalyst-ui/primitives/annotated.tsx +133 -0
  1394. package/dist/components/catalyst-ui/primitives/button-group.tsx +89 -0
  1395. package/dist/components/catalyst-ui/primitives/checkbox-tree.tsx +175 -0
  1396. package/dist/components/catalyst-ui/primitives/combobox.tsx +93 -0
  1397. package/dist/components/catalyst-ui/primitives/description-list.tsx +88 -0
  1398. package/dist/components/catalyst-ui/primitives/index.ts +59 -0
  1399. package/dist/components/catalyst-ui/primitives/input-group.tsx +186 -0
  1400. package/dist/components/catalyst-ui/primitives/menubar.tsx +273 -0
  1401. package/dist/components/catalyst-ui/primitives/progress-bar.tsx +114 -0
  1402. package/dist/components/catalyst-ui/primitives/radio-card.tsx +167 -0
  1403. package/dist/components/catalyst-ui/primitives/scroll-area.tsx +56 -0
  1404. package/dist/components/catalyst-ui/primitives/table.tsx +329 -0
  1405. package/dist/components/catalyst-ui/prompt/ai-input-search.tsx +288 -0
  1406. package/dist/components/catalyst-ui/prompt/ai-loading-state.tsx +313 -0
  1407. package/dist/components/catalyst-ui/prompt/ai-prompt-input.tsx +305 -0
  1408. package/dist/components/catalyst-ui/prompt/ai-voice.tsx +241 -0
  1409. package/dist/components/catalyst-ui/prompt/chain-of-thought.tsx +146 -0
  1410. package/dist/components/catalyst-ui/prompt/chatbot.tsx +201 -0
  1411. package/dist/components/catalyst-ui/prompt/code-block-examples.tsx +227 -0
  1412. package/dist/components/catalyst-ui/prompt/code-block.tsx +92 -0
  1413. package/dist/components/catalyst-ui/prompt/conversation-actions.tsx +150 -0
  1414. package/dist/components/catalyst-ui/prompt/conversation-avatars.tsx +92 -0
  1415. package/dist/components/catalyst-ui/prompt/conversation-prompt-input.tsx +256 -0
  1416. package/dist/components/catalyst-ui/prompt/conversation-scroll-bottom.tsx +121 -0
  1417. package/dist/components/catalyst-ui/prompt/file-upload.tsx +310 -0
  1418. package/dist/components/catalyst-ui/prompt/full-chat-app.tsx +759 -0
  1419. package/dist/components/catalyst-ui/prompt/full-conversation.tsx +76 -0
  1420. package/dist/components/catalyst-ui/prompt/image.tsx +94 -0
  1421. package/dist/components/catalyst-ui/prompt/index.ts +46 -0
  1422. package/dist/components/catalyst-ui/prompt/input-byok.tsx +70 -0
  1423. package/dist/components/catalyst-ui/prompt/jsx-preview.tsx +81 -0
  1424. package/dist/components/catalyst-ui/prompt/loader.tsx +497 -0
  1425. package/dist/components/catalyst-ui/prompt/markdown.tsx +117 -0
  1426. package/dist/components/catalyst-ui/prompt/pre-prompts.tsx +59 -0
  1427. package/dist/components/catalyst-ui/prompt/prompt-autocomplete-highlight.tsx +81 -0
  1428. package/dist/components/catalyst-ui/prompt/prompt-chat-container-basic.tsx +98 -0
  1429. package/dist/components/catalyst-ui/prompt/prompt-chat-container-streaming.tsx +132 -0
  1430. package/dist/components/catalyst-ui/prompt/prompt-chat-container.tsx +65 -0
  1431. package/dist/components/catalyst-ui/prompt/prompt-feedback-bar.tsx +79 -0
  1432. package/dist/components/catalyst-ui/prompt/prompt-input-actions.tsx +100 -0
  1433. package/dist/components/catalyst-ui/prompt/prompt-input-suggestions.tsx +150 -0
  1434. package/dist/components/catalyst-ui/prompt/prompt-input.tsx +187 -0
  1435. package/dist/components/catalyst-ui/prompt/prompt-message.tsx +109 -0
  1436. package/dist/components/catalyst-ui/prompt/prompt-suggestion.tsx +116 -0
  1437. package/dist/components/catalyst-ui/prompt/providers.tsx +540 -0
  1438. package/dist/components/catalyst-ui/prompt/reasoning.tsx +168 -0
  1439. package/dist/components/catalyst-ui/prompt/response-stream.tsx +392 -0
  1440. package/dist/components/catalyst-ui/prompt/scroll-button.tsx +39 -0
  1441. package/dist/components/catalyst-ui/prompt/sidebar-chat-history.tsx +242 -0
  1442. package/dist/components/catalyst-ui/prompt/snippets.tsx +1378 -0
  1443. package/dist/components/catalyst-ui/prompt/source.tsx +127 -0
  1444. package/dist/components/catalyst-ui/prompt/steps.tsx +111 -0
  1445. package/dist/components/catalyst-ui/prompt/system-message.tsx +131 -0
  1446. package/dist/components/catalyst-ui/prompt/tool-calling.tsx +236 -0
  1447. package/dist/components/catalyst-ui/prompt/tool.tsx +204 -0
  1448. package/dist/components/catalyst-ui/sidebars/nav-components/NotificationMenu.tsx +120 -0
  1449. package/dist/components/catalyst-ui/sidebars/nav-components/Tree.tsx +53 -0
  1450. package/dist/components/catalyst-ui/sidebars/nav-components/active-toc.tsx +213 -0
  1451. package/dist/components/catalyst-ui/sidebars/nav-components/analog-clock.tsx +211 -0
  1452. package/dist/components/catalyst-ui/sidebars/nav-components/app-sidebar.tsx +339 -0
  1453. package/dist/components/catalyst-ui/sidebars/nav-components/blog-sidebar.tsx +39 -0
  1454. package/dist/components/catalyst-ui/sidebars/nav-components/calendars.tsx +58 -0
  1455. package/dist/components/catalyst-ui/sidebars/nav-components/date-picker.tsx +12 -0
  1456. package/dist/components/catalyst-ui/sidebars/nav-components/dev-list-sidebar.tsx +195 -0
  1457. package/dist/components/catalyst-ui/sidebars/nav-components/digital-clock.tsx +343 -0
  1458. package/dist/components/catalyst-ui/sidebars/nav-components/index.ts +41 -0
  1459. package/dist/components/catalyst-ui/sidebars/nav-components/loading-sidebar.tsx +42 -0
  1460. package/dist/components/catalyst-ui/sidebars/nav-components/nav-actions.tsx +122 -0
  1461. package/dist/components/catalyst-ui/sidebars/nav-components/nav-appointments.tsx +429 -0
  1462. package/dist/components/catalyst-ui/sidebars/nav-components/nav-auto-search.tsx +314 -0
  1463. package/dist/components/catalyst-ui/sidebars/nav-components/nav-favorites.tsx +71 -0
  1464. package/dist/components/catalyst-ui/sidebars/nav-components/nav-header.tsx +409 -0
  1465. package/dist/components/catalyst-ui/sidebars/nav-components/nav-main.tsx +1583 -0
  1466. package/dist/components/catalyst-ui/sidebars/nav-components/nav-messenger.tsx +440 -0
  1467. package/dist/components/catalyst-ui/sidebars/nav-components/nav-projects.tsx +66 -0
  1468. package/dist/components/catalyst-ui/sidebars/nav-components/nav-quick-actions.tsx +366 -0
  1469. package/dist/components/catalyst-ui/sidebars/nav-components/nav-secondary.tsx +33 -0
  1470. package/dist/components/catalyst-ui/sidebars/nav-components/nav-shopping-cart.tsx +231 -0
  1471. package/dist/components/catalyst-ui/sidebars/nav-components/nav-shopping-cartCatlstui.tsx +196 -0
  1472. package/dist/components/catalyst-ui/sidebars/nav-components/nav-tree-view.tsx +18 -0
  1473. package/dist/components/catalyst-ui/sidebars/nav-components/nav-user.tsx +87 -0
  1474. package/dist/components/catalyst-ui/sidebars/nav-components/nav-workspaces.tsx +69 -0
  1475. package/dist/components/catalyst-ui/sidebars/nav-components/navigation-theme-selector.tsx +143 -0
  1476. package/dist/components/catalyst-ui/sidebars/nav-components/opt-in-form.tsx +29 -0
  1477. package/dist/components/catalyst-ui/sidebars/nav-components/search-command.tsx +32 -0
  1478. package/dist/components/catalyst-ui/sidebars/nav-components/search-form.tsx +21 -0
  1479. package/dist/components/catalyst-ui/sidebars/nav-components/settings-menu.tsx +35 -0
  1480. package/dist/components/catalyst-ui/sidebars/nav-components/sidebar-dialog.tsx +82 -0
  1481. package/dist/components/catalyst-ui/sidebars/nav-components/site-header.tsx +40 -0
  1482. package/dist/components/catalyst-ui/sidebars/nav-components/team-switcher.tsx +68 -0
  1483. package/dist/components/catalyst-ui/sidebars/nav-components/toc.tsx +301 -0
  1484. package/dist/components/catalyst-ui/sidebars/nav-components/user-menu.tsx +77 -0
  1485. package/dist/components/catalyst-ui/sidebars/nav-components/version-switcher.tsx +49 -0
  1486. package/dist/components/catalyst-ui/sidebars/nav-components/wishlist.tsx +292 -0
  1487. package/dist/components/catalyst-ui/sidebars/sidebar-01/AppSidebar.tsx +36 -0
  1488. package/dist/components/catalyst-ui/sidebars/sidebar-01/SearchForm.tsx +24 -0
  1489. package/dist/components/catalyst-ui/sidebars/sidebar-01/VersionSwitcher.tsx +49 -0
  1490. package/dist/components/catalyst-ui/sidebars/sidebar-01/index.tsx +270 -0
  1491. package/dist/components/catalyst-ui/sidebars/sidebar-01/sidebar-01.tsx +178 -0
  1492. package/dist/components/catalyst-ui/sidebars/sidebar-02/AppSidebar.tsx +56 -0
  1493. package/dist/components/catalyst-ui/sidebars/sidebar-02/SearchForm.tsx +24 -0
  1494. package/dist/components/catalyst-ui/sidebars/sidebar-02/VersionSwitcher.tsx +44 -0
  1495. package/dist/components/catalyst-ui/sidebars/sidebar-02/index.tsx +301 -0
  1496. package/dist/components/catalyst-ui/sidebars/sidebar-02/sidebar-02.tsx +193 -0
  1497. package/dist/components/catalyst-ui/sidebars/sidebar-03/AppSidebar.tsx +54 -0
  1498. package/dist/components/catalyst-ui/sidebars/sidebar-03/index.tsx +238 -0
  1499. package/dist/components/catalyst-ui/sidebars/sidebar-03/sidebar-03.tsx +189 -0
  1500. package/dist/components/catalyst-ui/sidebars/sidebar-04/AppSidebar.tsx +58 -0
  1501. package/dist/components/catalyst-ui/sidebars/sidebar-04/index.tsx +249 -0
  1502. package/dist/components/catalyst-ui/sidebars/sidebar-04/sidebar-04.tsx +201 -0
  1503. package/dist/components/catalyst-ui/sidebars/sidebar-05/AppSidebar.tsx +70 -0
  1504. package/dist/components/catalyst-ui/sidebars/sidebar-05/SearchForm.tsx +25 -0
  1505. package/dist/components/catalyst-ui/sidebars/sidebar-05/index.tsx +275 -0
  1506. package/dist/components/catalyst-ui/sidebars/sidebar-05/sidebar-05.tsx +191 -0
  1507. package/dist/components/catalyst-ui/sidebars/sidebar-06/AppSidebar.tsx +43 -0
  1508. package/dist/components/catalyst-ui/sidebars/sidebar-06/NavMain.tsx +56 -0
  1509. package/dist/components/catalyst-ui/sidebars/sidebar-06/SidebarOptInForm.tsx +34 -0
  1510. package/dist/components/catalyst-ui/sidebars/sidebar-06/index.tsx +290 -0
  1511. package/dist/components/catalyst-ui/sidebars/sidebar-06/sidebar-06.tsx +183 -0
  1512. package/dist/components/catalyst-ui/sidebars/sidebar-07/AppSidebar.tsx +28 -0
  1513. package/dist/components/catalyst-ui/sidebars/sidebar-07/NavMain.tsx +57 -0
  1514. package/dist/components/catalyst-ui/sidebars/sidebar-07/NavProjects.tsx +67 -0
  1515. package/dist/components/catalyst-ui/sidebars/sidebar-07/NavUser.tsx +86 -0
  1516. package/dist/components/catalyst-ui/sidebars/sidebar-07/TeamSwitcher.tsx +74 -0
  1517. package/dist/components/catalyst-ui/sidebars/sidebar-07/index.tsx +474 -0
  1518. package/dist/components/catalyst-ui/sidebars/sidebar-07/sidebar-07.tsx +189 -0
  1519. package/dist/components/catalyst-ui/sidebars/sidebar-08/AppSidebar.tsx +41 -0
  1520. package/dist/components/catalyst-ui/sidebars/sidebar-08/NavMain.tsx +62 -0
  1521. package/dist/components/catalyst-ui/sidebars/sidebar-08/NavProjects.tsx +68 -0
  1522. package/dist/components/catalyst-ui/sidebars/sidebar-08/NavSecondary.tsx +35 -0
  1523. package/dist/components/catalyst-ui/sidebars/sidebar-08/NavUser.tsx +87 -0
  1524. package/dist/components/catalyst-ui/sidebars/sidebar-08/index.tsx +446 -0
  1525. package/dist/components/catalyst-ui/sidebars/sidebar-08/sidebar-08.tsx +181 -0
  1526. package/dist/components/catalyst-ui/sidebars/sidebar-09/AppSidebar.tsx +213 -0
  1527. package/dist/components/catalyst-ui/sidebars/sidebar-09/NavUser.tsx +88 -0
  1528. package/dist/components/catalyst-ui/sidebars/sidebar-09/index.tsx +468 -0
  1529. package/dist/components/catalyst-ui/sidebars/sidebar-09/sidebar-09.tsx +177 -0
  1530. package/dist/components/catalyst-ui/sidebars/sidebar-10/AppSidebar.tsx +28 -0
  1531. package/dist/components/catalyst-ui/sidebars/sidebar-10/NavActions.tsx +59 -0
  1532. package/dist/components/catalyst-ui/sidebars/sidebar-10/NavFavorites.tsx +74 -0
  1533. package/dist/components/catalyst-ui/sidebars/sidebar-10/NavMain.tsx +31 -0
  1534. package/dist/components/catalyst-ui/sidebars/sidebar-10/NavSecondary.tsx +37 -0
  1535. package/dist/components/catalyst-ui/sidebars/sidebar-10/NavWorkspaces.tsx +70 -0
  1536. package/dist/components/catalyst-ui/sidebars/sidebar-10/TeamSwitcher.tsx +70 -0
  1537. package/dist/components/catalyst-ui/sidebars/sidebar-10/index.tsx +675 -0
  1538. package/dist/components/catalyst-ui/sidebars/sidebar-10/sidebar-10.tsx +348 -0
  1539. package/dist/components/catalyst-ui/sidebars/sidebar-11/AppSidebar.tsx +46 -0
  1540. package/dist/components/catalyst-ui/sidebars/sidebar-11/Tree.tsx +49 -0
  1541. package/dist/components/catalyst-ui/sidebars/sidebar-11/index.tsx +175 -0
  1542. package/dist/components/catalyst-ui/sidebars/sidebar-11/sidebar-11.tsx +102 -0
  1543. package/dist/components/catalyst-ui/sidebars/sidebar-12/AppSidebar.tsx +32 -0
  1544. package/dist/components/catalyst-ui/sidebars/sidebar-12/Calendars.tsx +57 -0
  1545. package/dist/components/catalyst-ui/sidebars/sidebar-12/DatePicker.tsx +13 -0
  1546. package/dist/components/catalyst-ui/sidebars/sidebar-12/NavUser.tsx +85 -0
  1547. package/dist/components/catalyst-ui/sidebars/sidebar-12/index.tsx +237 -0
  1548. package/dist/components/catalyst-ui/sidebars/sidebar-12/sidebar-12.tsx +68 -0
  1549. package/dist/components/catalyst-ui/sidebars/sidebar-13/SettingsDialog.tsx +82 -0
  1550. package/dist/components/catalyst-ui/sidebars/sidebar-13/index.tsx +105 -0
  1551. package/dist/components/catalyst-ui/sidebars/sidebar-13/sidebar-13.tsx +24 -0
  1552. package/dist/components/catalyst-ui/sidebars/sidebar-14/AppSidebar.tsx +45 -0
  1553. package/dist/components/catalyst-ui/sidebars/sidebar-14/index.tsx +225 -0
  1554. package/dist/components/catalyst-ui/sidebars/sidebar-14/sidebar-14.tsx +186 -0
  1555. package/dist/components/catalyst-ui/sidebars/sidebar-15/Calendars.tsx +83 -0
  1556. package/dist/components/catalyst-ui/sidebars/sidebar-15/DatePicker.tsx +39 -0
  1557. package/dist/components/catalyst-ui/sidebars/sidebar-15/NavFavorites.tsx +98 -0
  1558. package/dist/components/catalyst-ui/sidebars/sidebar-15/NavMain.tsx +29 -0
  1559. package/dist/components/catalyst-ui/sidebars/sidebar-15/NavSecondary.tsx +36 -0
  1560. package/dist/components/catalyst-ui/sidebars/sidebar-15/NavUser.tsx +89 -0
  1561. package/dist/components/catalyst-ui/sidebars/sidebar-15/NavWorkspaces.tsx +95 -0
  1562. package/dist/components/catalyst-ui/sidebars/sidebar-15/SidebarLeft.tsx +28 -0
  1563. package/dist/components/catalyst-ui/sidebars/sidebar-15/SidebarRight.tsx +38 -0
  1564. package/dist/components/catalyst-ui/sidebars/sidebar-15/TeamSwitcher.tsx +89 -0
  1565. package/dist/components/catalyst-ui/sidebars/sidebar-15/index.tsx +776 -0
  1566. package/dist/components/catalyst-ui/sidebars/sidebar-15/sidebar-15.tsx +324 -0
  1567. package/dist/components/catalyst-ui/sidebars/sidebar-16/AppSidebar.tsx +50 -0
  1568. package/dist/components/catalyst-ui/sidebars/sidebar-16/NavUser.tsx +100 -0
  1569. package/dist/components/catalyst-ui/sidebars/sidebar-16/SearchForm.tsx +35 -0
  1570. package/dist/components/catalyst-ui/sidebars/sidebar-16/SiteHeader.tsx +51 -0
  1571. package/dist/components/catalyst-ui/sidebars/sidebar-16/index.tsx +424 -0
  1572. package/dist/components/catalyst-ui/sidebars/sidebar-16/sidebar-16.tsx +188 -0
  1573. package/dist/components/catalyst-ui/sidebars/sidebar-17/AppSidebar.tsx +154 -0
  1574. package/dist/components/catalyst-ui/sidebars/sidebar-17/ShoppingCartSidebar.tsx +163 -0
  1575. package/dist/components/catalyst-ui/sidebars/sidebar-17/index.tsx +557 -0
  1576. package/dist/components/catalyst-ui/sidebars/sidebar-17/sidebar-17.tsx +183 -0
  1577. package/dist/components/catalyst-ui/sidebars/sidebar-18/AppSidebar.tsx +32 -0
  1578. package/dist/components/catalyst-ui/sidebars/sidebar-18/NavTreeView.tsx +18 -0
  1579. package/dist/components/catalyst-ui/sidebars/sidebar-18/index.tsx +120 -0
  1580. package/dist/components/catalyst-ui/sidebars/sidebar-18/sidebar-18.tsx +92 -0
  1581. package/dist/components/catalyst-ui/sidebars/sidebar-19/AppSidebar.tsx +230 -0
  1582. package/dist/components/catalyst-ui/sidebars/sidebar-19/index.tsx +264 -0
  1583. package/dist/components/catalyst-ui/sidebars/sidebar-19/sidebar-19.tsx +59 -0
  1584. package/dist/components/catalyst-ui/sidebars/sidebar-20/AppSidebar.tsx +215 -0
  1585. package/dist/components/catalyst-ui/sidebars/sidebar-20/index.tsx +250 -0
  1586. package/dist/components/catalyst-ui/sidebars/sidebar-20/sidebar-20.tsx +44 -0
  1587. package/dist/components/catalyst-ui/sidebars/sidebar-21/AppSidebar.tsx +303 -0
  1588. package/dist/components/catalyst-ui/sidebars/sidebar-21/LoadingSidebar.tsx +41 -0
  1589. package/dist/components/catalyst-ui/sidebars/sidebar-21/index.tsx +412 -0
  1590. package/dist/components/catalyst-ui/sidebars/sidebar-21/sidebar-21.tsx +75 -0
  1591. package/dist/components/catalyst-ui/sidebars/sidebar-22/AppSidebar.tsx +184 -0
  1592. package/dist/components/catalyst-ui/sidebars/sidebar-22/LoadingSidebar.tsx +45 -0
  1593. package/dist/components/catalyst-ui/sidebars/sidebar-22/index.tsx +251 -0
  1594. package/dist/components/catalyst-ui/sidebars/sidebar-22/sidebar-22.tsx +44 -0
  1595. package/dist/components/catalyst-ui/sidebars/sidebar-24/NavUser.tsx +87 -0
  1596. package/dist/components/catalyst-ui/sidebars/sidebar-24/calendars-24.tsx +58 -0
  1597. package/dist/components/catalyst-ui/sidebars/sidebar-24/date-picker-24.tsx +12 -0
  1598. package/dist/components/catalyst-ui/sidebars/sidebar-24/sidebar-24.tsx +39 -0
  1599. package/dist/components/catalyst-ui/sidebars/sidebar-25/AppSidebar.tsx +24 -0
  1600. package/dist/components/catalyst-ui/sidebars/sidebar-25/NavMain.tsx +57 -0
  1601. package/dist/components/catalyst-ui/sidebars/sidebar-25/NavSecondary.tsx +35 -0
  1602. package/dist/components/catalyst-ui/sidebars/sidebar-25/NavUser.tsx +87 -0
  1603. package/dist/components/catalyst-ui/sidebars/sidebar-25/SearchForm.tsx +35 -0
  1604. package/dist/components/catalyst-ui/sidebars/sidebar-25/SiteHeader.tsx +19 -0
  1605. package/dist/components/catalyst-ui/sidebars/sidebar-25/index.tsx +172 -0
  1606. package/dist/components/catalyst-ui/sidebars/sidebar-25/sidebar-25.tsx +153 -0
  1607. package/dist/components/catalyst-ui/sidebars/sidebar-26/app-sidebar-26.tsx +344 -0
  1608. package/dist/components/catalyst-ui/sidebars/sidebar-26/index.tsx +78 -0
  1609. package/dist/components/catalyst-ui/sidebars/sidebar-26/sidebar-26.tsx +78 -0
  1610. package/dist/components/catalyst-ui/sidebars/sidebar-26/use-mobile-26.ts +19 -0
  1611. package/dist/components/catalyst-ui/sidebars/sidebar-27/sidebar-27.tsx +5 -0
  1612. package/dist/components/catalyst-ui/sidebars/sidebar-28/app-sidebar-28.tsx +285 -0
  1613. package/dist/components/catalyst-ui/sidebars/sidebar-28/index.tsx +31 -0
  1614. package/dist/components/catalyst-ui/sidebars/sidebar-28/nav-user-28.tsx +88 -0
  1615. package/dist/components/catalyst-ui/sidebars/sidebar-28/search-form-28.tsx +23 -0
  1616. package/dist/components/catalyst-ui/sidebars/sidebar-28/sidebar-28.tsx +32 -0
  1617. package/dist/components/catalyst-ui/sidebars/sidebar-28/site-header-28.tsx +29 -0
  1618. package/dist/components/catalyst-ui/sidebars/sidebar-28/use-mobile-28.ts +19 -0
  1619. package/dist/components/catalyst-ui/sidebars/sidebar-29/ds-left-icon.tsx +101 -0
  1620. package/dist/components/catalyst-ui/sidebars/sidebar-29/ds-left.tsx +88 -0
  1621. package/dist/components/catalyst-ui/sidebars/sidebar-29/ds-right-icon.tsx +106 -0
  1622. package/dist/components/catalyst-ui/sidebars/sidebar-29/ds-right.tsx +87 -0
  1623. package/dist/components/catalyst-ui/sidebars/sidebar-29/nav-user.tsx +74 -0
  1624. package/dist/components/catalyst-ui/sidebars/sidebar-29/settings-dialog.tsx +91 -0
  1625. package/dist/components/catalyst-ui/sidebars/sidebar-29/sidebar-29.tsx +204 -0
  1626. package/dist/components/catalyst-ui/sidebars/sidebar-29/version-switcher.tsx +52 -0
  1627. package/dist/components/catalyst-ui/sidebars/sidebar-30/ds-left.tsx +678 -0
  1628. package/dist/components/catalyst-ui/sidebars/sidebar-30/ds-right.tsx +87 -0
  1629. package/dist/components/catalyst-ui/sidebars/sidebar-30/settings-dialog.tsx +91 -0
  1630. package/dist/components/catalyst-ui/sidebars/sidebar-30/sidebar-30.tsx +604 -0
  1631. package/dist/components/catalyst-ui/sidebars/sidebar-31/ds-left.tsx +431 -0
  1632. package/dist/components/catalyst-ui/sidebars/sidebar-31/message.tsx +28 -0
  1633. package/dist/components/catalyst-ui/sidebars/sidebar-31/nav-auto-search.tsx +310 -0
  1634. package/dist/components/catalyst-ui/sidebars/sidebar-31/nav-search-command.tsx +0 -0
  1635. package/dist/components/catalyst-ui/sidebars/sidebar-31/nav-user.tsx +74 -0
  1636. package/dist/components/catalyst-ui/sidebars/sidebar-31/sidebar-31.tsx +369 -0
  1637. package/dist/components/catalyst-ui/sidebars/sidebar-31/typing-message.tsx +12 -0
  1638. package/dist/components/catalyst-ui/sidebars/sidebar-32/ds-left.tsx +119 -0
  1639. package/dist/components/catalyst-ui/sidebars/sidebar-32/ds-right.tsx +87 -0
  1640. package/dist/components/catalyst-ui/sidebars/sidebar-32/settings-dialog.tsx +91 -0
  1641. package/dist/components/catalyst-ui/sidebars/sidebar-32/sidebar-32.tsx +119 -0
  1642. package/dist/components/catalyst-ui/sidebars/variants/dual-sidebar-agnostic.tsx +3473 -0
  1643. package/dist/components/catalyst-ui/sidebars/variants/sidebar-original.tsx +714 -0
  1644. package/dist/components/catalyst-ui/sidebars/variants/sidebar-right.tsx +823 -0
  1645. package/dist/components/catalyst-ui/sidebars/variants/sidebar-stylistic-default.tsx +591 -0
  1646. package/dist/components/catalyst-ui/table/catalyst-table/column-header-simple.tsx +60 -0
  1647. package/dist/components/catalyst-ui/table/catalyst-table/column-header.tsx +223 -0
  1648. package/dist/components/catalyst-ui/table/catalyst-table/draggable-header.tsx +58 -0
  1649. package/dist/components/catalyst-ui/table/catalyst-table/faceted-filter.tsx +131 -0
  1650. package/dist/components/catalyst-ui/table/catalyst-table/global-search.tsx +0 -0
  1651. package/dist/components/catalyst-ui/table/catalyst-table/row-actions.tsx +49 -0
  1652. package/dist/components/catalyst-ui/table/catalyst-table/table.tsx +421 -0
  1653. package/dist/components/catalyst-ui/table/index.ts +14 -0
  1654. package/dist/components/catalyst-ui/table/props-table.tsx +170 -0
  1655. package/dist/components/catalyst-ui/table/small-table.tsx +719 -0
  1656. package/dist/components/catalyst-ui/table/table-1.tsx +246 -0
  1657. package/dist/components/catalyst-ui/themeStudio/config.tsx +83 -0
  1658. package/dist/components/catalyst-ui/themeStudio/dual-sidebar.tsx +3256 -0
  1659. package/dist/components/catalyst-ui/themeStudio/theme-provider.tsx +269 -0
  1660. package/dist/components/catalyst-ui/themeStudio/use-color-theme.tsx +1614 -0
  1661. package/dist/components/catalyst-ui/themeStudio/use-color-wheel.tsx +904 -0
  1662. package/dist/components/catalyst-ui/tools/Demo/md-render-genie.tsx +273 -0
  1663. package/dist/components/catalyst-ui/tools/GandalfBot.tsx +144 -0
  1664. package/dist/components/catalyst-ui/tools/MdFileTreeExplorer.tsx +287 -0
  1665. package/dist/components/catalyst-ui/tools/accessibility-checker.tsx +370 -0
  1666. package/dist/components/catalyst-ui/tools/animation-builder.tsx +350 -0
  1667. package/dist/components/catalyst-ui/tools/api-response.tsx +318 -0
  1668. package/dist/components/catalyst-ui/tools/chart-playground.tsx +480 -0
  1669. package/dist/components/catalyst-ui/tools/code-carousel.tsx +246 -0
  1670. package/dist/components/catalyst-ui/tools/code-diff.tsx +274 -0
  1671. package/dist/components/catalyst-ui/tools/code-editor.tsx +35 -0
  1672. package/dist/components/catalyst-ui/tools/code-highlight-plugin.tsx +25 -0
  1673. package/dist/components/catalyst-ui/tools/color-converter.tsx +413 -0
  1674. package/dist/components/catalyst-ui/tools/color-wheel.tsx +1012 -0
  1675. package/dist/components/catalyst-ui/tools/components-reel.tsx +135 -0
  1676. package/dist/components/catalyst-ui/tools/convert/converter.tsx +969 -0
  1677. package/dist/components/catalyst-ui/tools/convert/sidebar-converter.tsx +132 -0
  1678. package/dist/components/catalyst-ui/tools/cron-expression-builder.tsx +346 -0
  1679. package/dist/components/catalyst-ui/tools/dual-editor.tsx +240 -0
  1680. package/dist/components/catalyst-ui/tools/editor.tsx +1744 -0
  1681. package/dist/components/catalyst-ui/tools/examples.tsx +1206 -0
  1682. package/dist/components/catalyst-ui/tools/flexbox-sandbox.tsx +327 -0
  1683. package/dist/components/catalyst-ui/tools/function-theater.tsx +93 -0
  1684. package/dist/components/catalyst-ui/tools/grid-sandbox.tsx +464 -0
  1685. package/dist/components/catalyst-ui/tools/icons.tsx +249 -0
  1686. package/dist/components/catalyst-ui/tools/index.ts +59 -0
  1687. package/dist/components/catalyst-ui/tools/json-Formatter.tsx +258 -0
  1688. package/dist/components/catalyst-ui/tools/layout-generator.tsx +237 -0
  1689. package/dist/components/catalyst-ui/tools/lexical-editor.tsx +218 -0
  1690. package/dist/components/catalyst-ui/tools/live-playground.tsx +1458 -0
  1691. package/dist/components/catalyst-ui/tools/lorem-ipsum-generator.tsx +314 -0
  1692. package/dist/components/catalyst-ui/tools/md-badge-builder.tsx +179 -0
  1693. package/dist/components/catalyst-ui/tools/md-cheat-sheet.tsx +5557 -0
  1694. package/dist/components/catalyst-ui/tools/md-editor.tsx +632 -0
  1695. package/dist/components/catalyst-ui/tools/md-render-genie.tsx +1233 -0
  1696. package/dist/components/catalyst-ui/tools/md-renderer.tsx +61 -0
  1697. package/dist/components/catalyst-ui/tools/monaco-sidebar.tsx +7791 -0
  1698. package/dist/components/catalyst-ui/tools/monaco.tsx +492 -0
  1699. package/dist/components/catalyst-ui/tools/motion-sandbox.tsx +0 -0
  1700. package/dist/components/catalyst-ui/tools/qr-code-generator.tsx +432 -0
  1701. package/dist/components/catalyst-ui/tools/regex-tester.tsx +508 -0
  1702. package/dist/components/catalyst-ui/tools/responsive-preview.tsx +286 -0
  1703. package/dist/components/catalyst-ui/tools/rich-text-editor copy.tsx +1058 -0
  1704. package/dist/components/catalyst-ui/tools/rich-text-editor.tsx +1994 -0
  1705. package/dist/components/catalyst-ui/tools/rte.md +119 -0
  1706. package/dist/components/catalyst-ui/tools/sandbox.tsx +52 -0
  1707. package/dist/components/catalyst-ui/tools/scripts-viewer.tsx +215 -0
  1708. package/dist/components/catalyst-ui/tools/scripts.edit.tsx +3102 -0
  1709. package/dist/components/catalyst-ui/tools/table-plugin.tsx +149 -0
  1710. package/dist/components/catalyst-ui/tools/tailwind-converter.tsx +502 -0
  1711. package/dist/components/catalyst-ui/tools/terminal.tsx +60 -0
  1712. package/dist/components/catalyst-ui/tools/theme-builder.tsx +5071 -0
  1713. package/dist/components/catalyst-ui/tools/toolbar-plugin.tsx +383 -0
  1714. package/dist/components/catalyst-ui/tools/toolbar-plugin1.tsx +861 -0
  1715. package/dist/components/catalyst-ui/tools/typography-tester.tsx +310 -0
  1716. package/dist/components/catalyst-ui/tools/uuid-hash-generator.tsx +534 -0
  1717. package/dist/components/catalyst-ui/tools/vscode-cmds.tsx +3813 -0
  1718. package/dist/components/catalyst-ui/tools/x-viewer.tsx +135 -0
  1719. package/dist/components/catalyst-ui/typography/animated-glitch-text.tsx +188 -0
  1720. package/dist/components/catalyst-ui/typography/b.tsx +23 -0
  1721. package/dist/components/catalyst-ui/typography/blockquote.tsx +35 -0
  1722. package/dist/components/catalyst-ui/typography/check-list.tsx +130 -0
  1723. package/dist/components/catalyst-ui/typography/code.tsx +26 -0
  1724. package/dist/components/catalyst-ui/typography/comic-text.tsx +68 -0
  1725. package/dist/components/catalyst-ui/typography/display-code.tsx +148 -0
  1726. package/dist/components/catalyst-ui/typography/div.tsx +20 -0
  1727. package/dist/components/catalyst-ui/typography/dynamic-text.tsx +149 -0
  1728. package/dist/components/catalyst-ui/typography/encrypted-text.tsx +168 -0
  1729. package/dist/components/catalyst-ui/typography/glitch-text.tsx +174 -0
  1730. package/dist/components/catalyst-ui/typography/h1.tsx +19 -0
  1731. package/dist/components/catalyst-ui/typography/h2.tsx +19 -0
  1732. package/dist/components/catalyst-ui/typography/h3.tsx +19 -0
  1733. package/dist/components/catalyst-ui/typography/h4.tsx +19 -0
  1734. package/dist/components/catalyst-ui/typography/h5.tsx +19 -0
  1735. package/dist/components/catalyst-ui/typography/highlight-1.tsx +133 -0
  1736. package/dist/components/catalyst-ui/typography/highlight.tsx +133 -0
  1737. package/dist/components/catalyst-ui/typography/hyper-text.tsx +135 -0
  1738. package/dist/components/catalyst-ui/typography/i.tsx +23 -0
  1739. package/dist/components/catalyst-ui/typography/ib.tsx +24 -0
  1740. package/dist/components/catalyst-ui/typography/index.ts +49 -0
  1741. package/dist/components/catalyst-ui/typography/line-shadow-text.tsx +44 -0
  1742. package/dist/components/catalyst-ui/typography/matrix-text.tsx +186 -0
  1743. package/dist/components/catalyst-ui/typography/ordered-list.tsx +39 -0
  1744. package/dist/components/catalyst-ui/typography/p.tsx +19 -0
  1745. package/dist/components/catalyst-ui/typography/paragraph-scramble.tsx +122 -0
  1746. package/dist/components/catalyst-ui/typography/pm.tsx +20 -0
  1747. package/dist/components/catalyst-ui/typography/prose.tsx +90 -0
  1748. package/dist/components/catalyst-ui/typography/scroll-text.tsx +181 -0
  1749. package/dist/components/catalyst-ui/typography/shimmer-text.tsx +105 -0
  1750. package/dist/components/catalyst-ui/typography/sliced-text.tsx +131 -0
  1751. package/dist/components/catalyst-ui/typography/swoosh-text.tsx +111 -0
  1752. package/dist/components/catalyst-ui/typography/text-animate.tsx +380 -0
  1753. package/dist/components/catalyst-ui/typography/text-highlighter.tsx +101 -0
  1754. package/dist/components/catalyst-ui/typography/text-morph.tsx +272 -0
  1755. package/dist/components/catalyst-ui/typography/text-reveal.tsx +71 -0
  1756. package/dist/components/catalyst-ui/typography/text-rewind.tsx +90 -0
  1757. package/dist/components/catalyst-ui/typography/text-scramble.tsx +111 -0
  1758. package/dist/components/catalyst-ui/typography/text.tsx +134 -0
  1759. package/dist/components/catalyst-ui/typography/typewriter.tsx +153 -0
  1760. package/dist/components/catalyst-ui/typography/typing-animation.tsx +172 -0
  1761. package/dist/components/catalyst-ui/typography/typography.tsx +67 -0
  1762. package/dist/components/catalyst-ui/typography/unordered-list.tsx +78 -0
  1763. package/dist/components/catalyst-ui/typography/video-text.tsx +86 -0
  1764. package/dist/components/catalyst-ui/typography/word-rotate.tsx +48 -0
  1765. package/dist/components/catalyst-ui/utils/auth-provider.tsx +419 -0
  1766. package/dist/components/catalyst-ui/utils/auth.github.callback.tsx +135 -0
  1767. package/dist/components/catalyst-ui/utils/auth.github.tsx +17 -0
  1768. package/dist/components/catalyst-ui/utils/auth.ts +34 -0
  1769. package/dist/components/catalyst-ui/utils/auth_github.ts +48 -0
  1770. package/dist/components/catalyst-ui/utils/auth_session.ts +70 -0
  1771. package/dist/components/catalyst-ui/utils/batcher.tsx +50 -0
  1772. package/dist/components/catalyst-ui/utils/build-package-json.js +89 -0
  1773. package/dist/components/catalyst-ui/utils/cache-assets.ts +72 -0
  1774. package/dist/components/catalyst-ui/utils/client-only-mermaid.tsx +82 -0
  1775. package/dist/components/catalyst-ui/utils/client-only.tsx +27 -0
  1776. package/dist/components/catalyst-ui/utils/cors.ts +178 -0
  1777. package/dist/components/catalyst-ui/utils/crypto.ts +96 -0
  1778. package/dist/components/catalyst-ui/utils/dbLocal.js +74 -0
  1779. package/dist/components/catalyst-ui/utils/dbRemote.js +74 -0
  1780. package/dist/components/catalyst-ui/utils/demo.tsx +499 -0
  1781. package/dist/components/catalyst-ui/utils/dynamic-links.tsx +324 -0
  1782. package/dist/components/catalyst-ui/utils/event-stream.ts +82 -0
  1783. package/dist/components/catalyst-ui/utils/existing-search-params.tsx +78 -0
  1784. package/dist/components/catalyst-ui/utils/external-scripts.tsx +144 -0
  1785. package/dist/components/catalyst-ui/utils/fetcher-context.tsx +45 -0
  1786. package/dist/components/catalyst-ui/utils/fetcher-type.tsx +82 -0
  1787. package/dist/components/catalyst-ui/utils/filename-icon-map.tsx +176 -0
  1788. package/dist/components/catalyst-ui/utils/flickering-grid.tsx +188 -0
  1789. package/dist/components/catalyst-ui/utils/get-client-ip-address.ts +52 -0
  1790. package/dist/components/catalyst-ui/utils/get-client-locales.ts +25 -0
  1791. package/dist/components/catalyst-ui/utils/get-headers.ts +7 -0
  1792. package/dist/components/catalyst-ui/utils/honeypot-react.tsx +480 -0
  1793. package/dist/components/catalyst-ui/utils/honeypot.ts +138 -0
  1794. package/dist/components/catalyst-ui/utils/index.ts +82 -0
  1795. package/dist/components/catalyst-ui/utils/is-prefetch.ts +19 -0
  1796. package/dist/components/catalyst-ui/utils/json-hash.ts +33 -0
  1797. package/dist/components/catalyst-ui/utils/keyboard-shortcut.tsx +124 -0
  1798. package/dist/components/catalyst-ui/utils/named-action.ts +50 -0
  1799. package/dist/components/catalyst-ui/utils/navigation-context.tsx +71 -0
  1800. package/dist/components/catalyst-ui/utils/options.ts +20 -0
  1801. package/dist/components/catalyst-ui/utils/otp-auth-session.ts +14 -0
  1802. package/dist/components/catalyst-ui/utils/otp-client-auth.tsx +30 -0
  1803. package/dist/components/catalyst-ui/utils/otp-email.tsx +104 -0
  1804. package/dist/components/catalyst-ui/utils/parse-accept-header.ts +21 -0
  1805. package/dist/components/catalyst-ui/utils/preload-route-assets.ts +60 -0
  1806. package/dist/components/catalyst-ui/utils/prisma.ts +93 -0
  1807. package/dist/components/catalyst-ui/utils/promise.ts +55 -0
  1808. package/dist/components/catalyst-ui/utils/qr-code-1-server.tsx +42 -0
  1809. package/dist/components/catalyst-ui/utils/qr-code-1.tsx +87 -0
  1810. package/dist/components/catalyst-ui/utils/redirect-back.ts +35 -0
  1811. package/dist/components/catalyst-ui/utils/redirect-bad-requests.tsx +5 -0
  1812. package/dist/components/catalyst-ui/utils/remix-auth.ts +35 -0
  1813. package/dist/components/catalyst-ui/utils/remix_auth_session.ts +71 -0
  1814. package/dist/components/catalyst-ui/utils/respond-to.ts +40 -0
  1815. package/dist/components/catalyst-ui/utils/responses.ts +130 -0
  1816. package/dist/components/catalyst-ui/utils/rolling-cookie.tsx +39 -0
  1817. package/dist/components/catalyst-ui/utils/safe-redirect.ts +21 -0
  1818. package/dist/components/catalyst-ui/utils/scaffolding.tsx +14 -0
  1819. package/dist/components/catalyst-ui/utils/scroll-top.tsx +382 -0
  1820. package/dist/components/catalyst-ui/utils/scroll-x.tsx +22 -0
  1821. package/dist/components/catalyst-ui/utils/scroll-xy.tsx +22 -0
  1822. package/dist/components/catalyst-ui/utils/scroll-y.tsx +14 -0
  1823. package/dist/components/catalyst-ui/utils/scroll.tsx +32 -0
  1824. package/dist/components/catalyst-ui/utils/sec-fetch-parser.tsx +119 -0
  1825. package/dist/components/catalyst-ui/utils/sec-fetch-parsers.tsx +42 -0
  1826. package/dist/components/catalyst-ui/utils/server-only.tsx +12 -0
  1827. package/dist/components/catalyst-ui/utils/singleton.tsx +22 -0
  1828. package/dist/components/catalyst-ui/utils/style-provider.tsx +292 -0
  1829. package/dist/components/catalyst-ui/utils/tailwindcss.css.txt +134 -0
  1830. package/dist/components/catalyst-ui/utils/typed-cookie.ts +90 -0
  1831. package/dist/components/catalyst-ui/utils/typed-session.ts +115 -0
  1832. package/dist/components/catalyst-ui/utils/user-based-access-rules.tsx +118 -0
  1833. package/dist/components/catalyst-ui/x/index.ts +38 -0
  1834. package/dist/components/catalyst-ui/x/input-x.tsx +2263 -0
  1835. package/dist/components/catalyst-ui/x/nav-x.tsx +3213 -0
  1836. package/dist/components/catalyst-ui/x/tracker-x.tsx +2 -12
  1837. package/dist/index.js +40623 -40650
  1838. package/package.json +1 -1
  1839. /package/dist/{data.tsx → components/catalyst-ui/data.tsx} +0 -0
  1840. /package/dist/components/catalyst-ui/x/{button-X.tsx → button-x.tsx} +0 -0
@@ -0,0 +1,2757 @@
1
+ import React, { useState, useRef } from 'react';
2
+ import { Button, cn, } from "~/components/catalyst-ui";
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/catalyst-ui";
4
+ import { useFocusWithin, useFocus, usePress, useLongPress, useKeyboard, useHover, useMove, useMountEffect, useUpdateEffect, useUnmountEffect, useEventListener, useOverlayListener, useFavicon, usePrevious, useForm, useFetch, useAsync, useIntersectionObserver, useScrollPosition, useWindowSize, useOnlineStatus, useKeyPress, useClickOutside, useTimeout, useInterval, useCounter, useToggle, useThrottle, useDebounce, useSessionStorage, useLocalStorage, useMediaQuery, useDebouncedFuseSearch, useFuseSearch, useFuzzySearch, useExport, useMounted, useIsMobile, useCopyToClipboard, useResizeListener, useHydrated, useSlideInV1, } from './index';
5
+ import { useBreakpoint, } from './use-breakpoint';
6
+ import { useTimer, } from './use-timer';
7
+ import { useSecFetchParser, } from './use-sec-fetch-parser';
8
+ import { useOnClickOutside, } from './use-on-click-outside';
9
+ import { useScrollLock, } from './use-scroll-lock';
10
+ import { useScreen, } from './use-screen';
11
+ import { useScript, } from './use-script';
12
+ import { useReadLocalStorage, } from './use-read-local-storage';
13
+ import { useResizeObserver, } from './use-resize-observer';
14
+ import { useEventCallback, } from './use-event-callback';
15
+ import { useIsClient, } from './use-is-client';
16
+ import { useIsomorphicLayoutEffect, } from './use-isomorphic-layout-effect';
17
+ import { useDocumentTitle, } from './use-document-title';
18
+ import { useGoogleFont, } from './use-google-font';
19
+ import { useExpandable } from './use-expandable'
20
+ import { useColorTheme } from './use-color-theme'
21
+
22
+
23
+
24
+ export function GetColorThemeDemo() {
25
+ const neutralV4Root = useColorTheme('neutral', 'v4', 'root')
26
+ const neutralV4Dark = useColorTheme('neutral', 'v4', 'dark')
27
+
28
+ const applyTheme = (theme: Record<string, string>) => {
29
+ Object.entries(theme).forEach(([property, value]) => {
30
+ document.documentElement.style.setProperty(property, value)
31
+ })
32
+ }
33
+
34
+ return (
35
+ <div className="space-y-8 p-6 max-w-6xl mx-auto">
36
+ <div>
37
+ <h2 className="text-2xl font-bold mb-4">Color Theme Hook Demo</h2>
38
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
39
+ <div className="border border-border rounded-lg p-4 bg-card">
40
+ <h3 className="text-lg font-semibold mb-3">Neutral V4 Root</h3>
41
+ <pre className="text-xs bg-background-secondary p-3 rounded overflow-auto">
42
+ {JSON.stringify(neutralV4Root, null, 2)}
43
+ </pre>
44
+ <button
45
+ className="mt-4 bg-primary text-primary-foreground px-4 py-2 rounded text-sm hover:bg-primary/90"
46
+ onClick={() => applyTheme(neutralV4Root)}
47
+ >
48
+ Apply Root Theme
49
+ </button>
50
+ </div>
51
+ <div className="border border-border rounded-lg p-4 bg-card">
52
+ <h3 className="text-lg font-semibold mb-3">Neutral V4 Dark</h3>
53
+ <pre className="text-xs bg-background-secondary p-3 rounded overflow-auto">
54
+ {JSON.stringify(neutralV4Dark, null, 2)}
55
+ </pre>
56
+ <button
57
+ className="mt-4 bg-primary text-primary-foreground px-4 py-2 rounded text-sm hover:bg-primary/90"
58
+ onClick={() => applyTheme(neutralV4Dark)}
59
+ >
60
+ Apply Dark Theme
61
+ </button>
62
+ </div>
63
+ </div>
64
+ <div className="mt-6 p-4 border border-border rounded-lg">
65
+ <h3 className="text-lg font-semibold mb-3">Usage Examples</h3>
66
+ <div className="space-y-4">
67
+ <pre className="text-xs bg-background-secondary p-3 rounded overflow-auto">
68
+ {`// Get neutral v4 root theme
69
+ const theme = useColorTheme('neutral', 'v4', 'root')
70
+
71
+ // Apply to document
72
+ Object.entries(theme).forEach(([property, value]) => {
73
+ document.documentElement.style.setProperty(property, value)
74
+ })
75
+
76
+ // Use with defaults (neutral, v4, root)
77
+ const defaultTheme = useColorTheme()`}
78
+ </pre>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ )
84
+ }
85
+
86
+ export function UseAutoScrollDemo() {
87
+ const [messages, setMessages] = useState<string[]>([
88
+ "Welcome to the chat!",
89
+ "This is a demo of the useAutoScroll hook.",
90
+ ]);
91
+
92
+ const { scrollRef, isAtBottom, scrollToBottom } = useAutoScroll({
93
+ content: messages,
94
+ smooth: true,
95
+ offset: 20,
96
+ });
97
+
98
+ const addMessage = () => {
99
+ setMessages((prev) => [
100
+ ...prev,
101
+ `Message ${prev.length + 1} - ${new Date().toLocaleTimeString()}`,
102
+ ]);
103
+ };
104
+
105
+ return (
106
+ <div className="space-y-8 p-6 max-w-4xl mx-auto">
107
+ <div>
108
+ <h2 className="text-2xl font-bold mb-4">Auto Scroll Chat Demo</h2>
109
+ <div className="space-y-4">
110
+ <div className="relative">
111
+ <div
112
+ ref={scrollRef}
113
+ className="h-96 overflow-y-auto border border-border rounded-lg p-4 bg-background space-y-2"
114
+ >
115
+ {messages.map((message, index) => (
116
+ <div
117
+ key={index}
118
+ className="p-3 bg-muted rounded-md text-foreground"
119
+ >
120
+ {message}
121
+ </div>
122
+ ))}
123
+ </div>
124
+ {!isAtBottom && (
125
+ <Button
126
+ onClick={scrollToBottom}
127
+ variant="filled"
128
+ size="icon"
129
+ className="absolute bottom-4 right-4 shadow-lg"
130
+ >
131
+ <ArrowDown />
132
+ </Button>
133
+ )}
134
+ </div>
135
+ <Button onClick={addMessage} variant="default">
136
+ Add Message
137
+ </Button>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ );
142
+ }
143
+ export function UseClientDemo() {
144
+ const client1 = useClient()
145
+ const client2 = useClient()
146
+
147
+ return (
148
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
149
+ <div className="space-y-4">
150
+ <div>
151
+ <h3 className="text-lg font-semibold mb-2">Basic Loading Button</h3>
152
+ <Button
153
+ className="group relative disabled:opacity-100"
154
+ data-loading={client1.isLoading || undefined}
155
+ disabled={client1.isLoading}
156
+ onClick={() => client1.handleClick()}
157
+ >
158
+ <span className="group-data-[loading]:text-transparent">Click me</span>
159
+ {client1.isLoading && (
160
+ <div className="absolute inset-0 flex items-center justify-center">
161
+ <LoaderCircle
162
+ aria-hidden="true"
163
+ className="animate-spin"
164
+ size={16}
165
+ />
166
+ </div>
167
+ )}
168
+ </Button>
169
+ </div>
170
+
171
+ <div>
172
+ <h3 className="text-lg font-semibold mb-2">With Async Callback</h3>
173
+ <Button
174
+ className="group relative disabled:opacity-100"
175
+ data-loading={client2.isLoading || undefined}
176
+ disabled={client2.isLoading}
177
+ onClick={() => client2.handleClick(async () => {
178
+ await new Promise(resolve => setTimeout(resolve, 2000))
179
+ })}
180
+ >
181
+ <span className="group-data-[loading]:text-transparent">Async Action</span>
182
+ {client2.isLoading && (
183
+ <div className="absolute inset-0 flex items-center justify-center">
184
+ <LoaderCircle
185
+ aria-hidden="true"
186
+ className="animate-spin"
187
+ size={16}
188
+ />
189
+ </div>
190
+ )}
191
+ </Button>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ )
196
+ }
197
+
198
+ export function UseCurrentTimeIndicatorDemo() {
199
+ const today = new Date()
200
+ const dayView = useCurrentTimeIndicator({ currentDate: today, view: "day" })
201
+ const weekView = useCurrentTimeIndicator({ currentDate: today, view: "week" })
202
+
203
+ return (
204
+ <div className="space-y-8 p-6 max-w-4xl mx-auto">
205
+ <div className="space-y-6">
206
+ <div className="space-y-2">
207
+ <h3 className="text-lg font-semibold">Day View</h3>
208
+ <div className="relative h-96 bg-muted rounded-lg border border-border overflow-hidden">
209
+ <div className="absolute inset-0 flex flex-col">
210
+ {Array.from({ length: 24 }).map((_, i) => (
211
+ <div
212
+ key={i}
213
+ className="flex-1 border-b border-border/50 flex items-center px-4 text-xs text-muted-foreground"
214
+ >
215
+ {i.toString().padStart(2, "0")}:00
216
+ </div>
217
+ ))}
218
+ </div>
219
+ {dayView.currentTimeVisible && (
220
+ <div
221
+ className="absolute left-0 right-0 h-0.5 bg-destructive z-10"
222
+ style={{ top: `${dayView.currentTimePosition}%` }}
223
+ >
224
+ <div className="absolute -left-1 -top-1.5 w-3 h-3 bg-destructive rounded-full" />
225
+ </div>
226
+ )}
227
+ </div>
228
+ <p className="text-sm text-muted-foreground">
229
+ Visible: {dayView.currentTimeVisible ? "Yes" : "No"} | Position: {dayView.currentTimePosition.toFixed(2)}%
230
+ </p>
231
+ </div>
232
+
233
+ <div className="space-y-2">
234
+ <h3 className="text-lg font-semibold">Week View</h3>
235
+ <div className="relative h-96 bg-muted rounded-lg border border-border overflow-hidden">
236
+ <div className="absolute inset-0 flex flex-col">
237
+ {Array.from({ length: 24 }).map((_, i) => (
238
+ <div
239
+ key={i}
240
+ className="flex-1 border-b border-border/50 flex items-center px-4 text-xs text-muted-foreground"
241
+ >
242
+ {i.toString().padStart(2, "0")}:00
243
+ </div>
244
+ ))}
245
+ </div>
246
+ {weekView.currentTimeVisible && (
247
+ <div
248
+ className="absolute left-0 right-0 h-0.5 bg-destructive z-10"
249
+ style={{ top: `${weekView.currentTimePosition}%` }}
250
+ >
251
+ <div className="absolute -left-1 -top-1.5 w-3 h-3 bg-destructive rounded-full" />
252
+ </div>
253
+ )}
254
+ </div>
255
+ <p className="text-sm text-muted-foreground">
256
+ Visible: {weekView.currentTimeVisible ? "Yes" : "No"} | Position: {weekView.currentTimePosition.toFixed(2)}%
257
+ </p>
258
+ </div>
259
+ </div>
260
+ </div>
261
+ )
262
+ }
263
+
264
+ export function UsePaginationDemo() {
265
+ const [currentPage1, setCurrentPage1] = useState(1)
266
+ const [currentPage2, setCurrentPage2] = useState(5)
267
+
268
+ const pagination1 = usePagination({
269
+ currentPage: currentPage1,
270
+ totalPages: 10,
271
+ paginationItemsToDisplay: 5,
272
+ })
273
+
274
+ const pagination2 = usePagination({
275
+ currentPage: currentPage2,
276
+ totalPages: 50,
277
+ paginationItemsToDisplay: 7,
278
+ })
279
+
280
+ return (
281
+ <div className="space-y-8 p-6 max-w-4xl mx-auto">
282
+ <div className="space-y-4">
283
+ <h3 className="text-lg font-semibold">Basic Pagination (10 pages, show 5)</h3>
284
+ <div className="flex items-center gap-2">
285
+ <Button
286
+ variant="outline"
287
+ size="icon"
288
+ onClick={() => setCurrentPage1(Math.max(1, currentPage1 - 1))}
289
+ disabled={currentPage1 === 1}
290
+ >
291
+ <ChevronLeft className="h-4 w-4" />
292
+ </Button>
293
+
294
+ {pagination1.showLeftEllipsis && (
295
+ <>
296
+ <Button
297
+ variant={currentPage1 === 1 ? "default" : "outline"}
298
+ onClick={() => setCurrentPage1(1)}
299
+ >
300
+ 1
301
+ </Button>
302
+ <span className="px-2 text-muted-foreground">...</span>
303
+ </>
304
+ )}
305
+
306
+ {pagination1.pages.map((page) => (
307
+ <Button
308
+ key={page}
309
+ variant={currentPage1 === page ? "default" : "outline"}
310
+ onClick={() => setCurrentPage1(page)}
311
+ >
312
+ {page}
313
+ </Button>
314
+ ))}
315
+
316
+ {pagination1.showRightEllipsis && (
317
+ <>
318
+ <span className="px-2 text-muted-foreground">...</span>
319
+ <Button
320
+ variant={currentPage1 === 10 ? "default" : "outline"}
321
+ onClick={() => setCurrentPage1(10)}
322
+ >
323
+ 10
324
+ </Button>
325
+ </>
326
+ )}
327
+
328
+ <Button
329
+ variant="outline"
330
+ size="icon"
331
+ onClick={() => setCurrentPage1(Math.min(10, currentPage1 + 1))}
332
+ disabled={currentPage1 === 10}
333
+ >
334
+ <ChevronRight className="h-4 w-4" />
335
+ </Button>
336
+ </div>
337
+ <p className="text-sm text-muted-foreground">
338
+ Current Page: {currentPage1} | Pages: {pagination1.pages.join(", ")}
339
+ </p>
340
+ </div>
341
+
342
+ <div className="space-y-4">
343
+ <h3 className="text-lg font-semibold">Large Pagination (50 pages, show 7)</h3>
344
+ <div className="flex items-center gap-2">
345
+ <Button
346
+ variant="outline"
347
+ size="icon"
348
+ onClick={() => setCurrentPage2(Math.max(1, currentPage2 - 1))}
349
+ disabled={currentPage2 === 1}
350
+ >
351
+ <ChevronLeft className="h-4 w-4" />
352
+ </Button>
353
+
354
+ {pagination2.showLeftEllipsis && (
355
+ <>
356
+ <Button
357
+ variant={currentPage2 === 1 ? "default" : "outline"}
358
+ onClick={() => setCurrentPage2(1)}
359
+ >
360
+ 1
361
+ </Button>
362
+ <span className="px-2 text-muted-foreground">...</span>
363
+ </>
364
+ )}
365
+
366
+ {pagination2.pages.map((page) => (
367
+ <Button
368
+ key={page}
369
+ variant={currentPage2 === page ? "default" : "outline"}
370
+ onClick={() => setCurrentPage2(page)}
371
+ >
372
+ {page}
373
+ </Button>
374
+ ))}
375
+
376
+ {pagination2.showRightEllipsis && (
377
+ <>
378
+ <span className="px-2 text-muted-foreground">...</span>
379
+ <Button
380
+ variant={currentPage2 === 50 ? "default" : "outline"}
381
+ onClick={() => setCurrentPage2(50)}
382
+ >
383
+ 50
384
+ </Button>
385
+ </>
386
+ )}
387
+
388
+ <Button
389
+ variant="outline"
390
+ size="icon"
391
+ onClick={() => setCurrentPage2(Math.min(50, currentPage2 + 1))}
392
+ disabled={currentPage2 === 50}
393
+ >
394
+ <ChevronRight className="h-4 w-4" />
395
+ </Button>
396
+ </div>
397
+ <p className="text-sm text-muted-foreground">
398
+ Current Page: {currentPage2} | Pages: {pagination2.pages.join(", ")}
399
+ </p>
400
+ </div>
401
+ </div>
402
+ )
403
+ }
404
+
405
+ export function UseFileUploadDemo() {
406
+ const [singleState, singleActions] = useFileUpload({
407
+ maxSize: 5 * 1024 * 1024,
408
+ accept: "image/*",
409
+ multiple: false,
410
+ })
411
+
412
+ const [multipleState, multipleActions] = useFileUpload({
413
+ maxFiles: 3,
414
+ maxSize: 10 * 1024 * 1024,
415
+ accept: "*",
416
+ multiple: true,
417
+ })
418
+
419
+ return (
420
+ <div className="space-y-8 p-6 max-w-4xl mx-auto">
421
+ <div className="space-y-4">
422
+ <h3 className="text-lg font-semibold">Single File Upload</h3>
423
+ <div
424
+ onDragEnter={singleActions.handleDragEnter}
425
+ onDragLeave={singleActions.handleDragLeave}
426
+ onDragOver={singleActions.handleDragOver}
427
+ onDrop={singleActions.handleDrop}
428
+ className={`border-2 border-dashed rounded-lg p-8 text-center transition-colors ${singleState.isDragging
429
+ ? "border-primary bg-primary/5"
430
+ : "border-border"
431
+ }`}
432
+ >
433
+ <input {...singleActions.getInputProps()} className="hidden" />
434
+ <Upload className="mx-auto h-12 w-12 text-muted-foreground mb-4" />
435
+ <p className="text-sm text-muted-foreground mb-2">
436
+ Drag and drop an image here, or click to select
437
+ </p>
438
+ <Button onClick={singleActions.openFileDialog} variant="outline">
439
+ Select File
440
+ </Button>
441
+ </div>
442
+
443
+ {singleState.errors.length > 0 && (
444
+ <div className="bg-destructive/10 border border-destructive/20 rounded-lg p-4">
445
+ {singleState.errors.map((error, i) => (
446
+ <p key={i} className="text-sm text-destructive">
447
+ {error}
448
+ </p>
449
+ ))}
450
+ </div>
451
+ )}
452
+
453
+ {singleState.files.length > 0 && (
454
+ <div className="space-y-2">
455
+ {singleState.files.map((file) => (
456
+ <div
457
+ key={file.id}
458
+ className="flex items-center gap-3 p-3 bg-muted rounded-lg"
459
+ >
460
+ {file.preview && (
461
+ <img
462
+ src={file.preview}
463
+ alt={file.file.name}
464
+ className="w-12 h-12 object-cover rounded"
465
+ />
466
+ )}
467
+ <div className="flex-1 min-w-0">
468
+ <p className="text-sm font-medium truncate">
469
+ {file.file.name}
470
+ </p>
471
+ <p className="text-xs text-muted-foreground">
472
+ {formatBytes(file.file.size)}
473
+ </p>
474
+ </div>
475
+ <Button
476
+ size="icon"
477
+ variant="ghost"
478
+ onClick={() => singleActions.removeFile(file.id)}
479
+ >
480
+ <X className="h-4 w-4" />
481
+ </Button>
482
+ </div>
483
+ ))}
484
+ </div>
485
+ )}
486
+ </div>
487
+
488
+ <div className="space-y-4">
489
+ <h3 className="text-lg font-semibold">Multiple File Upload (Max 3)</h3>
490
+ <div
491
+ onDragEnter={multipleActions.handleDragEnter}
492
+ onDragLeave={multipleActions.handleDragLeave}
493
+ onDragOver={multipleActions.handleDragOver}
494
+ onDrop={multipleActions.handleDrop}
495
+ className={`border-2 border-dashed rounded-lg p-8 text-center transition-colors ${multipleState.isDragging
496
+ ? "border-primary bg-primary/5"
497
+ : "border-border"
498
+ }`}
499
+ >
500
+ <input {...multipleActions.getInputProps()} className="hidden" />
501
+ <Upload className="mx-auto h-12 w-12 text-muted-foreground mb-4" />
502
+ <p className="text-sm text-muted-foreground mb-2">
503
+ Drag and drop files here, or click to select
504
+ </p>
505
+ <Button onClick={multipleActions.openFileDialog} variant="outline">
506
+ Select Files
507
+ </Button>
508
+ </div>
509
+
510
+ {multipleState.errors.length > 0 && (
511
+ <div className="bg-destructive/10 border border-destructive/20 rounded-lg p-4">
512
+ {multipleState.errors.map((error, i) => (
513
+ <p key={i} className="text-sm text-destructive">
514
+ {error}
515
+ </p>
516
+ ))}
517
+ </div>
518
+ )}
519
+
520
+ {multipleState.files.length > 0 && (
521
+ <div className="space-y-2">
522
+ {multipleState.files.map((file) => (
523
+ <div
524
+ key={file.id}
525
+ className="flex items-center gap-3 p-3 bg-muted rounded-lg"
526
+ >
527
+ <div className="flex-1 min-w-0">
528
+ <p className="text-sm font-medium truncate">
529
+ {file.file.name}
530
+ </p>
531
+ <p className="text-xs text-muted-foreground">
532
+ {formatBytes(file.file.size)}
533
+ </p>
534
+ </div>
535
+ <Button
536
+ size="icon"
537
+ variant="ghost"
538
+ onClick={() => multipleActions.removeFile(file.id)}
539
+ >
540
+ <X className="h-4 w-4" />
541
+ </Button>
542
+ </div>
543
+ ))}
544
+ </div>
545
+ )}
546
+ </div>
547
+ </div>
548
+ )
549
+ }
550
+
551
+
552
+ export function UseEventVisibilityDemo() {
553
+ const visibility1 = useEventVisibility({ eventHeight: 32, eventGap: 4 })
554
+ const visibility2 = useEventVisibility({ eventHeight: 48, eventGap: 8 })
555
+
556
+ const events1 = Array.from({ length: 10 }, (_, i) => `Event ${i + 1}`)
557
+ const events2 = Array.from({ length: 15 }, (_, i) => `Event ${i + 1}`)
558
+
559
+ const visibleCount1 = visibility1.getVisibleEventCount(events1.length)
560
+ const visibleCount2 = visibility2.getVisibleEventCount(events2.length)
561
+
562
+ return (
563
+ <div className="space-y-8 p-6 max-w-4xl mx-auto">
564
+ <div className="grid gap-6 md:grid-cols-2">
565
+ <div className="space-y-2">
566
+ <h3 className="text-lg font-semibold">Small Events (32px height, 4px gap)</h3>
567
+ <div
568
+ ref={visibility1.contentRef}
569
+ className="h-64 bg-muted rounded-lg border border-border p-4 overflow-hidden"
570
+ >
571
+ <div className="space-y-1">
572
+ {events1.slice(0, visibleCount1).map((event, i) => (
573
+ <div
574
+ key={i}
575
+ className="h-8 bg-primary text-primary-foreground rounded px-3 flex items-center text-sm"
576
+ >
577
+ {event}
578
+ </div>
579
+ ))}
580
+ {visibleCount1 < events1.length && (
581
+ <button className="h-8 w-full bg-secondary text-secondary-foreground rounded px-3 flex items-center justify-center text-sm hover:bg-secondary/80">
582
+ +{events1.length - visibleCount1} more
583
+ </button>
584
+ )}
585
+ </div>
586
+ </div>
587
+ <p className="text-sm text-muted-foreground">
588
+ Showing {visibleCount1} of {events1.length} events (Height: {visibility1.contentHeight}px)
589
+ </p>
590
+ </div>
591
+
592
+ <div className="space-y-2">
593
+ <h3 className="text-lg font-semibold">Large Events (48px height, 8px gap)</h3>
594
+ <div
595
+ ref={visibility2.contentRef}
596
+ className="h-64 bg-muted rounded-lg border border-border p-4 overflow-hidden"
597
+ >
598
+ <div className="space-y-2">
599
+ {events2.slice(0, visibleCount2).map((event, i) => (
600
+ <div
601
+ key={i}
602
+ className="h-12 bg-accent text-accent-foreground rounded px-4 flex items-center text-sm font-medium"
603
+ >
604
+ {event}
605
+ </div>
606
+ ))}
607
+ {visibleCount2 < events2.length && (
608
+ <button className="h-12 w-full bg-secondary text-secondary-foreground rounded px-4 flex items-center justify-center text-sm font-medium hover:bg-secondary/80">
609
+ +{events2.length - visibleCount2} more
610
+ </button>
611
+ )}
612
+ </div>
613
+ </div>
614
+ <p className="text-sm text-muted-foreground">
615
+ Showing {visibleCount2} of {events2.length} events (Height: {visibility2.contentHeight}px)
616
+ </p>
617
+ </div>
618
+ </div>
619
+ </div>
620
+ )
621
+ }
622
+ export function UseSliderWithInputDemo() {
623
+ const singleSlider = useSliderWithInput({
624
+ minValue: 0,
625
+ maxValue: 100,
626
+ initialValue: [50],
627
+ defaultValue: [50],
628
+ })
629
+
630
+ const rangeSlider = useSliderWithInput({
631
+ minValue: 0,
632
+ maxValue: 1000,
633
+ initialValue: [200, 800],
634
+ defaultValue: [200, 800],
635
+ })
636
+
637
+ return (
638
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
639
+ <div className="space-y-4">
640
+ <div className="flex items-center justify-between">
641
+ <Label>Single Value Slider</Label>
642
+ {singleSlider.showReset && (
643
+ <Button
644
+ variant="ghost"
645
+ size="sm"
646
+ onClick={singleSlider.resetToDefault}
647
+ >
648
+ <RotateCcw className="h-4 w-4 mr-2" />
649
+ Reset
650
+ </Button>
651
+ )}
652
+ </div>
653
+ <div className="flex items-center gap-4">
654
+ <Slider
655
+ value={singleSlider.sliderValue}
656
+ onValueChange={singleSlider.handleSliderChange}
657
+ min={0}
658
+ max={100}
659
+ step={1}
660
+ className="flex-1"
661
+ />
662
+ <Input
663
+ type="text"
664
+ value={singleSlider.inputValues[0]}
665
+ onChange={(e) => singleSlider.handleInputChange(e, 0)}
666
+ onBlur={(e) =>
667
+ singleSlider.validateAndUpdateValue(e.target.value, 0)
668
+ }
669
+ className="w-20"
670
+ />
671
+ </div>
672
+ <p className="text-sm text-muted-foreground">
673
+ Current Value: {singleSlider.sliderValue[0]}
674
+ </p>
675
+ </div>
676
+
677
+ <div className="space-y-4">
678
+ <div className="flex items-center justify-between">
679
+ <Label>Range Slider</Label>
680
+ {rangeSlider.showReset && (
681
+ <Button
682
+ variant="ghost"
683
+ size="sm"
684
+ onClick={rangeSlider.resetToDefault}
685
+ >
686
+ <RotateCcw className="h-4 w-4 mr-2" />
687
+ Reset
688
+ </Button>
689
+ )}
690
+ </div>
691
+ <div className="space-y-3">
692
+ <Slider
693
+ value={rangeSlider.sliderValue}
694
+ onValueChange={rangeSlider.handleSliderChange}
695
+ min={0}
696
+ max={1000}
697
+ step={10}
698
+ />
699
+ <div className="flex items-center gap-4">
700
+ <div className="flex-1">
701
+ <Label className="text-xs text-muted-foreground">Min</Label>
702
+ <Input
703
+ type="text"
704
+ value={rangeSlider.inputValues[0]}
705
+ onChange={(e) => rangeSlider.handleInputChange(e, 0)}
706
+ onBlur={(e) =>
707
+ rangeSlider.validateAndUpdateValue(e.target.value, 0)
708
+ }
709
+ />
710
+ </div>
711
+ <div className="flex-1">
712
+ <Label className="text-xs text-muted-foreground">Max</Label>
713
+ <Input
714
+ type="text"
715
+ value={rangeSlider.inputValues[1]}
716
+ onChange={(e) => rangeSlider.handleInputChange(e, 1)}
717
+ onBlur={(e) =>
718
+ rangeSlider.validateAndUpdateValue(e.target.value, 1)
719
+ }
720
+ />
721
+ </div>
722
+ </div>
723
+ </div>
724
+ <p className="text-sm text-muted-foreground">
725
+ Range: {rangeSlider.sliderValue[0]} - {rangeSlider.sliderValue[1]}
726
+ </p>
727
+ </div>
728
+ </div>
729
+ )
730
+ }
731
+
732
+ export function UseCharacterLimitDemo() {
733
+ const inputLimit = useCharacterLimit({ maxLength: 50 })
734
+ const textareaLimit = useCharacterLimit({ maxLength: 200 })
735
+
736
+ return (
737
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
738
+ <div className="space-y-4">
739
+ <div>
740
+ <Label htmlFor="input-demo">Input with Character Limit</Label>
741
+ <Input
742
+ id="input-demo"
743
+ value={inputLimit.value}
744
+ onChange={inputLimit.handleChange}
745
+ placeholder="Type something..."
746
+ />
747
+ <p className="text-sm text-muted-foreground mt-2">
748
+ {inputLimit.characterCount}/{inputLimit.maxLength} characters
749
+ </p>
750
+ </div>
751
+
752
+ <div>
753
+ <Label htmlFor="textarea-demo">Textarea with Character Limit</Label>
754
+ <Textarea
755
+ id="textarea-demo"
756
+ value={textareaLimit.value}
757
+ onChange={textareaLimit.handleChange}
758
+ placeholder="Type a longer message..."
759
+ rows={4}
760
+ />
761
+ <p className="text-sm text-muted-foreground mt-2">
762
+ {textareaLimit.characterCount}/{textareaLimit.maxLength} characters
763
+ </p>
764
+ </div>
765
+ </div>
766
+ </div>
767
+ )
768
+ }
769
+ export function UseExpandableDemo() {
770
+ const demo1 = useExpandable(false);
771
+ const demo2 = useExpandable(true);
772
+
773
+ return (
774
+ <div className="space-y-6 p-6 max-w-2xl mx-auto">
775
+ <div className="space-y-2">
776
+ <button
777
+ onClick={demo1.toggleExpand}
778
+ className="px-4 py-2 rounded-md bg-primary text-primary-foreground"
779
+ >
780
+ Toggle First (Currently: {demo1.isExpanded ? 'Expanded' : 'Collapsed'})
781
+ </button>
782
+ {demo1.isExpanded && (
783
+ <div className="p-4 border rounded-lg bg-background">
784
+ First expandable content
785
+ </div>
786
+ )}
787
+ </div>
788
+
789
+ <div className="space-y-2">
790
+ <button
791
+ onClick={demo2.toggleExpand}
792
+ className="px-4 py-2 rounded-md bg-secondary text-secondary-foreground"
793
+ >
794
+ Toggle Second (Currently: {demo2.isExpanded ? 'Expanded' : 'Collapsed'})
795
+ </button>
796
+ {demo2.isExpanded && (
797
+ <div className="p-4 border rounded-lg bg-background">
798
+ Second expandable content (starts expanded)
799
+ </div>
800
+ )}
801
+ </div>
802
+ </div>
803
+ );
804
+ }
805
+
806
+ export function UseGoogleFontDemo() {
807
+ useGoogleFont('Roboto')
808
+ useGoogleFont('Playfair Display', { weights: ['400', '700'] })
809
+
810
+ return (
811
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
812
+ <div>
813
+ <h2 className="text-2xl font-bold mb-4">Default Font (Roboto)</h2>
814
+ <p style={{ fontFamily: 'Roboto' }} className="text-lg">
815
+ This text uses the Roboto font loaded via Google Fonts.
816
+ </p>
817
+ </div>
818
+
819
+ <div>
820
+ <h2 className="text-2xl font-bold mb-4">Custom Weights (Playfair Display)</h2>
821
+ <p style={{ fontFamily: 'Playfair Display' }} className="text-lg">
822
+ This text uses Playfair Display with custom weights (400, 700).
823
+ </p>
824
+ </div>
825
+ </div>
826
+ )
827
+ }
828
+
829
+ export function UseDocumentTitleDemo() {
830
+ const [count, setCount] = useState(0)
831
+ const [status, setStatus] = useState<'idle' | 'active' | 'completed'>('idle')
832
+ const [customTitle, setCustomTitle] = useState('Demo Page')
833
+
834
+ const getTitle = () => {
835
+ if (status === 'active') {
836
+ return `(${count}) ${customTitle} - Active`
837
+ } else if (status === 'completed') {
838
+ return `✓ ${customTitle} - Completed`
839
+ }
840
+ return customTitle
841
+ }
842
+
843
+ useDocumentTitle(getTitle())
844
+
845
+ return (
846
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
847
+ <div>
848
+ <h2 className="text-2xl font-bold mb-4">Dynamic Document Title</h2>
849
+ <p className="text-muted-foreground mb-4">
850
+ The browser tab title updates automatically based on the state below. Check your browser
851
+ tab to see the changes!
852
+ </p>
853
+ </div>
854
+
855
+ <div>
856
+ <h3 className="text-lg font-semibold mb-3">Custom Title Input</h3>
857
+ <input
858
+ type="text"
859
+ value={customTitle}
860
+ onChange={(e) => setCustomTitle(e.target.value)}
861
+ placeholder="Enter page title"
862
+ className="flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-all placeholder:text-muted-foreground focus-visible:outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]"
863
+ />
864
+ </div>
865
+
866
+ <div>
867
+ <h3 className="text-lg font-semibold mb-3">Status Control</h3>
868
+ <div className="flex gap-2 flex-wrap">
869
+ <button
870
+ onClick={() => setStatus('idle')}
871
+ className={cn(
872
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2',
873
+ status === 'idle'
874
+ ? 'bg-primary text-primary-foreground shadow-xs'
875
+ : 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground'
876
+ )}
877
+ >
878
+ Idle
879
+ </button>
880
+ <button
881
+ onClick={() => setStatus('active')}
882
+ className={cn(
883
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2',
884
+ status === 'active'
885
+ ? 'bg-primary text-primary-foreground shadow-xs'
886
+ : 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground'
887
+ )}
888
+ >
889
+ Active
890
+ </button>
891
+ <button
892
+ onClick={() => setStatus('completed')}
893
+ className={cn(
894
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2',
895
+ status === 'completed'
896
+ ? 'bg-primary text-primary-foreground shadow-xs'
897
+ : 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground'
898
+ )}
899
+ >
900
+ Completed
901
+ </button>
902
+ </div>
903
+ </div>
904
+
905
+ <div>
906
+ <h3 className="text-lg font-semibold mb-3">Notification Counter</h3>
907
+ <div className="space-y-4">
908
+ <div className="p-4 border rounded-md bg-muted/50">
909
+ <p className="text-sm font-medium mb-2">Unread Count:</p>
910
+ <p className="text-3xl font-mono font-bold">{count}</p>
911
+ </div>
912
+ <div className="flex gap-2">
913
+ <button
914
+ onClick={() => setCount((c) => c + 1)}
915
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
916
+ >
917
+ Add Notification
918
+ </button>
919
+ <button
920
+ onClick={() => setCount(0)}
921
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground"
922
+ >
923
+ Clear
924
+ </button>
925
+ </div>
926
+ </div>
927
+ </div>
928
+
929
+ <div className="p-4 border rounded-md bg-blue-500/10 border-blue-500/20">
930
+ <p className="text-sm font-medium mb-2">Current Document Title:</p>
931
+ <p className="text-lg font-mono font-bold">{getTitle()}</p>
932
+ </div>
933
+ </div>
934
+ )
935
+ }
936
+
937
+ export function UseEventCallbackDemo() {
938
+ const [count, setCount] = useState(0)
939
+ const [log, setLog] = useState<string[]>([])
940
+
941
+ const handleClick = useEventCallback(() => {
942
+ const message = `Clicked with count: ${count}`
943
+ setLog((prev) => [...prev, message])
944
+ })
945
+
946
+ const handleReset = () => {
947
+ setCount(0)
948
+ setLog([])
949
+ }
950
+
951
+ return (
952
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
953
+ <div>
954
+ <h2 className="text-2xl font-bold mb-4">Stable Callback with Fresh Values</h2>
955
+ <p className="text-muted-foreground mb-4">
956
+ The callback always accesses the latest count value without recreating the function
957
+ reference.
958
+ </p>
959
+ <div className="space-y-4">
960
+ <div className="p-4 border rounded-md bg-muted/50">
961
+ <p className="text-sm font-medium mb-2">Current Count:</p>
962
+ <p className="text-3xl font-mono font-bold">{count}</p>
963
+ </div>
964
+
965
+ <div className="flex gap-2">
966
+ <button
967
+ onClick={() => setCount((c) => c + 1)}
968
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
969
+ >
970
+ Increment Count
971
+ </button>
972
+ <button
973
+ onClick={handleClick}
974
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground"
975
+ >
976
+ Log Current Count
977
+ </button>
978
+ <button
979
+ onClick={handleReset}
980
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-destructive text-white shadow-xs hover:bg-destructive/90"
981
+ >
982
+ Reset
983
+ </button>
984
+ </div>
985
+ </div>
986
+ </div>
987
+
988
+ <div>
989
+ <h2 className="text-2xl font-bold mb-4">Event Log</h2>
990
+ <div className="p-4 border rounded-md bg-muted/50 min-h-[200px] max-h-[300px] overflow-y-auto">
991
+ {log.length === 0 ? (
992
+ <p className="text-sm text-muted-foreground">
993
+ No events logged yet. Click "Log Current Count" to see the stable callback in action.
994
+ </p>
995
+ ) : (
996
+ <div className="space-y-2">
997
+ {log.map((entry, index) => (
998
+ <div key={index} className="text-sm font-mono">
999
+ <span className="text-muted-foreground">{index + 1}.</span> {entry}
1000
+ </div>
1001
+ ))}
1002
+ </div>
1003
+ )}
1004
+ </div>
1005
+ </div>
1006
+ </div>
1007
+ )
1008
+ }
1009
+ export function UseIsClientDemo() {
1010
+ const isClient = useIsClient()
1011
+ const [randomValue, setRandomValue] = useState<number | null>(null)
1012
+
1013
+ useEffect(() => {
1014
+ if (isClient) {
1015
+ setRandomValue(Math.random())
1016
+ }
1017
+ }, [isClient])
1018
+
1019
+ return (
1020
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1021
+ <div>
1022
+ <h2 className="text-2xl font-bold mb-4">Client Detection Status</h2>
1023
+ <div className="p-4 border rounded-md bg-muted/50">
1024
+ <div className="flex items-center gap-2 mb-4">
1025
+ <div
1026
+ className={cn(
1027
+ 'size-3 rounded-full',
1028
+ isClient ? 'bg-green-500' : 'bg-gray-400'
1029
+ )}
1030
+ />
1031
+ <span className="text-lg font-mono font-bold">
1032
+ {isClient ? 'Client-Side' : 'Server-Side / Hydrating'}
1033
+ </span>
1034
+ </div>
1035
+ <p className="text-sm text-muted-foreground">
1036
+ This boolean is false during SSR and becomes true after hydration completes.
1037
+ </p>
1038
+ </div>
1039
+ </div>
1040
+
1041
+ <div>
1042
+ <h2 className="text-2xl font-bold mb-4">Browser API Access</h2>
1043
+ <div className="space-y-4">
1044
+ {isClient ? (
1045
+ <div className="p-4 border rounded-md bg-muted/50 space-y-2">
1046
+ <div>
1047
+ <p className="text-sm text-muted-foreground">User Agent:</p>
1048
+ <p className="text-sm font-mono break-all">{navigator.userAgent}</p>
1049
+ </div>
1050
+ <div>
1051
+ <p className="text-sm text-muted-foreground">Window Width:</p>
1052
+ <p className="text-sm font-mono">{window.innerWidth}px</p>
1053
+ </div>
1054
+ <div>
1055
+ <p className="text-sm text-muted-foreground">Random Value:</p>
1056
+ <p className="text-sm font-mono">{randomValue?.toFixed(4)}</p>
1057
+ </div>
1058
+ </div>
1059
+ ) : (
1060
+ <div className="p-4 border rounded-md bg-muted/50">
1061
+ <p className="text-sm text-muted-foreground">Loading browser information...</p>
1062
+ </div>
1063
+ )}
1064
+ </div>
1065
+ </div>
1066
+ </div>
1067
+ )
1068
+ }
1069
+ export function UseIsomorphicLayoutEffectDemo() {
1070
+ const [dimensions, setDimensions] = useState({ width: 0, height: 0 })
1071
+ const [color, setColor] = useState('blue')
1072
+ const boxRef = React.useRef<HTMLDivElement>(null)
1073
+
1074
+ useIsomorphicLayoutEffect(() => {
1075
+ if (boxRef.current) {
1076
+ const { width, height } = boxRef.current.getBoundingClientRect()
1077
+ setDimensions({ width, height })
1078
+ }
1079
+ }, [color])
1080
+
1081
+ return (
1082
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1083
+ <div>
1084
+ <h2 className="text-2xl font-bold mb-4">Synchronous DOM Measurement</h2>
1085
+ <p className="text-muted-foreground mb-4">
1086
+ This hook uses useLayoutEffect in the browser and useEffect on the server to prevent SSR
1087
+ warnings while maintaining synchronous DOM access.
1088
+ </p>
1089
+ <div className="space-y-4">
1090
+ <div
1091
+ ref={boxRef}
1092
+ className={cn(
1093
+ 'p-8 rounded-md transition-colors',
1094
+ color === 'blue' && 'bg-blue-500',
1095
+ color === 'green' && 'bg-green-500',
1096
+ color === 'red' && 'bg-red-500'
1097
+ )}
1098
+ >
1099
+ <p className="text-white font-medium">Resizable Box</p>
1100
+ </div>
1101
+
1102
+ <div className="p-4 border rounded-md bg-muted/50">
1103
+ <p className="text-sm font-medium mb-2">Box Dimensions (measured synchronously):</p>
1104
+ <div className="space-y-1 text-sm">
1105
+ <p>
1106
+ Width: <span className="font-mono font-bold">{dimensions.width.toFixed(2)}px</span>
1107
+ </p>
1108
+ <p>
1109
+ Height:{' '}
1110
+ <span className="font-mono font-bold">{dimensions.height.toFixed(2)}px</span>
1111
+ </p>
1112
+ </div>
1113
+ </div>
1114
+
1115
+ <div className="flex gap-2">
1116
+ <button
1117
+ onClick={() => setColor('blue')}
1118
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-blue-500 text-white shadow-xs hover:bg-blue-600"
1119
+ >
1120
+ Blue
1121
+ </button>
1122
+ <button
1123
+ onClick={() => setColor('green')}
1124
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-green-500 text-white shadow-xs hover:bg-green-600"
1125
+ >
1126
+ Green
1127
+ </button>
1128
+ <button
1129
+ onClick={() => setColor('red')}
1130
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-red-500 text-white shadow-xs hover:bg-red-600"
1131
+ >
1132
+ Red
1133
+ </button>
1134
+ </div>
1135
+ </div>
1136
+ </div>
1137
+ </div>
1138
+ )
1139
+ }
1140
+
1141
+ export function UseReadLocalStorageDemo() {
1142
+ const [writeValue, setWriteValue] = useState('Hello World')
1143
+ const storedValue = useReadLocalStorage<string>('demo-key')
1144
+ const storedObject = useReadLocalStorage<{ count: number }>('demo-object')
1145
+
1146
+ const handleWrite = () => {
1147
+ window.localStorage.setItem('demo-key', JSON.stringify(writeValue))
1148
+ window.dispatchEvent(
1149
+ new StorageEvent('storage', {
1150
+ key: 'demo-key',
1151
+ newValue: JSON.stringify(writeValue),
1152
+ storageArea: window.localStorage,
1153
+ })
1154
+ )
1155
+ }
1156
+
1157
+ const handleWriteObject = () => {
1158
+ const newCount = (storedObject?.count || 0) + 1
1159
+ window.localStorage.setItem('demo-object', JSON.stringify({ count: newCount }))
1160
+ window.dispatchEvent(
1161
+ new StorageEvent('storage', {
1162
+ key: 'demo-object',
1163
+ newValue: JSON.stringify({ count: newCount }),
1164
+ storageArea: window.localStorage,
1165
+ })
1166
+ )
1167
+ }
1168
+
1169
+ return (
1170
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1171
+ <div>
1172
+ <h2 className="text-2xl font-bold mb-4">Basic String Reading</h2>
1173
+ <div className="space-y-4">
1174
+ <div className="p-4 border rounded-md bg-muted/50">
1175
+ <p className="text-sm font-medium mb-2">Stored Value:</p>
1176
+ <p className="text-lg font-mono">{storedValue || 'null'}</p>
1177
+ </div>
1178
+ <div className="flex gap-2">
1179
+ <input
1180
+ type="text"
1181
+ value={writeValue}
1182
+ onChange={(e) => setWriteValue(e.target.value)}
1183
+ className="flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-all placeholder:text-muted-foreground focus-visible:outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]"
1184
+ placeholder="Enter value"
1185
+ />
1186
+ <button
1187
+ onClick={handleWrite}
1188
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
1189
+ >
1190
+ Write
1191
+ </button>
1192
+ </div>
1193
+ </div>
1194
+ </div>
1195
+
1196
+ <div>
1197
+ <h2 className="text-2xl font-bold mb-4">Object Reading</h2>
1198
+ <div className="space-y-4">
1199
+ <div className="p-4 border rounded-md bg-muted/50">
1200
+ <p className="text-sm font-medium mb-2">Counter Value:</p>
1201
+ <p className="text-lg font-mono">{storedObject?.count || 0}</p>
1202
+ </div>
1203
+ <button
1204
+ onClick={handleWriteObject}
1205
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
1206
+ >
1207
+ Increment Counter
1208
+ </button>
1209
+ </div>
1210
+ </div>
1211
+ </div>
1212
+ )
1213
+ }
1214
+ export function UseResizeObserverDemo() {
1215
+ const contentBoxRef = useRef<HTMLDivElement>(null)
1216
+ const borderBoxRef = useRef<HTMLDivElement>(null)
1217
+
1218
+ const contentBoxSize = useResizeObserver({
1219
+ ref: contentBoxRef,
1220
+ box: 'content-box',
1221
+ })
1222
+
1223
+ const borderBoxSize = useResizeObserver({
1224
+ ref: borderBoxRef,
1225
+ box: 'border-box',
1226
+ })
1227
+
1228
+ return (
1229
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1230
+ <div>
1231
+ <h2 className="text-2xl font-bold mb-4">Content Box Measurement</h2>
1232
+ <div
1233
+ ref={contentBoxRef}
1234
+ className="resize overflow-auto border-4 border-primary p-8 rounded-md bg-muted min-h-[150px] min-w-[200px]"
1235
+ >
1236
+ <p className="text-sm font-medium mb-2">Resize this container (drag bottom-right corner)</p>
1237
+ <div className="space-y-1 text-sm">
1238
+ <p>Width: <span className="font-mono font-bold">{contentBoxSize.width?.toFixed(0) ?? '—'}px</span></p>
1239
+ <p>Height: <span className="font-mono font-bold">{contentBoxSize.height?.toFixed(0) ?? '—'}px</span></p>
1240
+ <p className="text-muted-foreground text-xs mt-2">Measures content area (excludes padding/border)</p>
1241
+ </div>
1242
+ </div>
1243
+ </div>
1244
+
1245
+ <div>
1246
+ <h2 className="text-2xl font-bold mb-4">Border Box Measurement</h2>
1247
+ <div
1248
+ ref={borderBoxRef}
1249
+ className="resize overflow-auto border-4 border-secondary p-8 rounded-md bg-muted min-h-[150px] min-w-[200px]"
1250
+ >
1251
+ <p className="text-sm font-medium mb-2">Resize this container (drag bottom-right corner)</p>
1252
+ <div className="space-y-1 text-sm">
1253
+ <p>Width: <span className="font-mono font-bold">{borderBoxSize.width?.toFixed(0) ?? '—'}px</span></p>
1254
+ <p>Height: <span className="font-mono font-bold">{borderBoxSize.height?.toFixed(0) ?? '—'}px</span></p>
1255
+ <p className="text-muted-foreground text-xs mt-2">Measures total size (includes padding/border)</p>
1256
+ </div>
1257
+ </div>
1258
+ </div>
1259
+ </div>
1260
+ )
1261
+ }
1262
+
1263
+ export function UseScriptDemo() {
1264
+ const [loadScript, setLoadScript] = useState(false)
1265
+ const scriptStatus = useScript(
1266
+ loadScript ? 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js' : null
1267
+ )
1268
+
1269
+ const [loadErrorScript, setLoadErrorScript] = useState(false)
1270
+ const errorScriptStatus = useScript(
1271
+ loadErrorScript ? 'https://invalid-url-that-will-fail.com/script.js' : null
1272
+ )
1273
+
1274
+ return (
1275
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1276
+ <div>
1277
+ <h2 className="text-2xl font-bold mb-4">Successful Script Load</h2>
1278
+ <div className="space-y-4">
1279
+ <div className="p-4 border rounded-md bg-muted/50">
1280
+ <p className="text-sm font-medium mb-2">Script Status:</p>
1281
+ <div className="flex items-center gap-2">
1282
+ <div
1283
+ className={cn(
1284
+ 'size-3 rounded-full',
1285
+ scriptStatus === 'idle' && 'bg-gray-400',
1286
+ scriptStatus === 'loading' && 'bg-blue-500 animate-pulse',
1287
+ scriptStatus === 'ready' && 'bg-green-500',
1288
+ scriptStatus === 'error' && 'bg-red-500'
1289
+ )}
1290
+ />
1291
+ <span className="text-lg font-mono font-bold capitalize">{scriptStatus}</span>
1292
+ </div>
1293
+ </div>
1294
+ <button
1295
+ onClick={() => setLoadScript(!loadScript)}
1296
+ disabled={scriptStatus === 'loading'}
1297
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 disabled:opacity-50 disabled:pointer-events-none"
1298
+ >
1299
+ {loadScript ? 'Script Loaded' : 'Load Lodash Script'}
1300
+ </button>
1301
+ </div>
1302
+ </div>
1303
+
1304
+ <div>
1305
+ <h2 className="text-2xl font-bold mb-4">Failed Script Load</h2>
1306
+ <div className="space-y-4">
1307
+ <div className="p-4 border rounded-md bg-muted/50">
1308
+ <p className="text-sm font-medium mb-2">Script Status:</p>
1309
+ <div className="flex items-center gap-2">
1310
+ <div
1311
+ className={cn(
1312
+ 'size-3 rounded-full',
1313
+ errorScriptStatus === 'idle' && 'bg-gray-400',
1314
+ errorScriptStatus === 'loading' && 'bg-blue-500 animate-pulse',
1315
+ errorScriptStatus === 'ready' && 'bg-green-500',
1316
+ errorScriptStatus === 'error' && 'bg-red-500'
1317
+ )}
1318
+ />
1319
+ <span className="text-lg font-mono font-bold capitalize">{errorScriptStatus}</span>
1320
+ </div>
1321
+ </div>
1322
+ <button
1323
+ onClick={() => setLoadErrorScript(!loadErrorScript)}
1324
+ disabled={errorScriptStatus === 'loading'}
1325
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 disabled:opacity-50 disabled:pointer-events-none"
1326
+ >
1327
+ {loadErrorScript ? 'Script Failed' : 'Load Invalid Script'}
1328
+ </button>
1329
+ </div>
1330
+ </div>
1331
+ </div>
1332
+ )
1333
+ }
1334
+
1335
+
1336
+ export function UseScreenDemo() {
1337
+ const screen = useScreen()
1338
+ const debouncedScreen = useScreen({ debounceDelay: 300 })
1339
+
1340
+ return (
1341
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1342
+ <div>
1343
+ <h2 className="text-2xl font-bold mb-4">Screen Properties (Immediate)</h2>
1344
+ <div className="grid grid-cols-2 gap-4 p-4 border rounded-md bg-muted/50">
1345
+ <div>
1346
+ <p className="text-sm text-muted-foreground">Width</p>
1347
+ <p className="text-lg font-mono font-bold">{screen?.width}px</p>
1348
+ </div>
1349
+ <div>
1350
+ <p className="text-sm text-muted-foreground">Height</p>
1351
+ <p className="text-lg font-mono font-bold">{screen?.height}px</p>
1352
+ </div>
1353
+ <div>
1354
+ <p className="text-sm text-muted-foreground">Available Width</p>
1355
+ <p className="text-lg font-mono font-bold">{screen?.availWidth}px</p>
1356
+ </div>
1357
+ <div>
1358
+ <p className="text-sm text-muted-foreground">Available Height</p>
1359
+ <p className="text-lg font-mono font-bold">{screen?.availHeight}px</p>
1360
+ </div>
1361
+ <div>
1362
+ <p className="text-sm text-muted-foreground">Color Depth</p>
1363
+ <p className="text-lg font-mono font-bold">{screen?.colorDepth} bits</p>
1364
+ </div>
1365
+ <div>
1366
+ <p className="text-sm text-muted-foreground">Pixel Depth</p>
1367
+ <p className="text-lg font-mono font-bold">{screen?.pixelDepth} bits</p>
1368
+ </div>
1369
+ </div>
1370
+ </div>
1371
+
1372
+ <div>
1373
+ <h2 className="text-2xl font-bold mb-4">Orientation (Debounced 300ms)</h2>
1374
+ <div className="p-4 border rounded-md bg-muted/50">
1375
+ {debouncedScreen?.orientation ? (
1376
+ <div className="space-y-2">
1377
+ <div>
1378
+ <p className="text-sm text-muted-foreground">Type</p>
1379
+ <p className="text-lg font-mono font-bold">{debouncedScreen.orientation.type}</p>
1380
+ </div>
1381
+ <div>
1382
+ <p className="text-sm text-muted-foreground">Angle</p>
1383
+ <p className="text-lg font-mono font-bold">{debouncedScreen.orientation.angle}°</p>
1384
+ </div>
1385
+ </div>
1386
+ ) : (
1387
+ <p className="text-muted-foreground">Orientation API not supported</p>
1388
+ )}
1389
+ </div>
1390
+ </div>
1391
+ </div>
1392
+ )
1393
+ }
1394
+
1395
+ export function UseScrollLockDemo() {
1396
+ const [showModal, setShowModal] = useState(false)
1397
+ const { isLocked: manualLocked, lock, unlock } = useScrollLock({ autoLock: false })
1398
+
1399
+ return (
1400
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1401
+ <div>
1402
+ <h2 className="text-2xl font-bold mb-4">Manual Scroll Lock</h2>
1403
+ <div className="space-y-4">
1404
+ <div className="p-4 border rounded-md bg-muted/50">
1405
+ <p className="text-sm font-medium mb-2">Scroll Status:</p>
1406
+ <div className="flex items-center gap-2">
1407
+ <div
1408
+ className={cn(
1409
+ 'size-3 rounded-full',
1410
+ manualLocked ? 'bg-red-500' : 'bg-green-500'
1411
+ )}
1412
+ />
1413
+ <span className="text-lg font-mono font-bold">
1414
+ {manualLocked ? 'Locked' : 'Unlocked'}
1415
+ </span>
1416
+ </div>
1417
+ </div>
1418
+ <div className="flex gap-2">
1419
+ <button
1420
+ onClick={lock}
1421
+ disabled={manualLocked}
1422
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 disabled:opacity-50 disabled:pointer-events-none"
1423
+ >
1424
+ Lock Scroll
1425
+ </button>
1426
+ <button
1427
+ onClick={unlock}
1428
+ disabled={!manualLocked}
1429
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground disabled:opacity-50 disabled:pointer-events-none"
1430
+ >
1431
+ Unlock Scroll
1432
+ </button>
1433
+ </div>
1434
+ </div>
1435
+ </div>
1436
+
1437
+ <div>
1438
+ <h2 className="text-2xl font-bold mb-4">Auto Lock with Modal</h2>
1439
+ <button
1440
+ onClick={() => setShowModal(true)}
1441
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
1442
+ >
1443
+ Open Modal
1444
+ </button>
1445
+
1446
+ {showModal && <ModalWithAutoLock onClose={() => setShowModal(false)} />}
1447
+ </div>
1448
+
1449
+ <div className="mt-12 space-y-4">
1450
+ <p className="text-muted-foreground">
1451
+ Scroll down to see more content. Try locking scroll manually or opening the modal to see
1452
+ the effect.
1453
+ </p>
1454
+ {Array.from({ length: 10 }).map((_, i) => (
1455
+ <div key={i} className="p-4 border rounded-md bg-muted/30">
1456
+ <p className="text-sm">Content block {i + 1}</p>
1457
+ </div>
1458
+ ))}
1459
+ </div>
1460
+ </div>
1461
+ )
1462
+ }
1463
+
1464
+ function ModalWithAutoLock({ onClose }: { onClose: () => void }) {
1465
+ useScrollLock({ autoLock: true })
1466
+
1467
+ return (
1468
+ <div className="fixed inset-0 bg-black/50 flex items-center justify-center z-50">
1469
+ <div className="bg-background border rounded-lg p-6 max-w-md w-full shadow-lg">
1470
+ <h3 className="text-lg font-semibold mb-2">Modal with Auto Lock</h3>
1471
+ <p className="text-muted-foreground mb-4">
1472
+ This modal automatically locks scroll when mounted and unlocks when closed. The background
1473
+ should not be scrollable.
1474
+ </p>
1475
+ <button
1476
+ onClick={onClose}
1477
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
1478
+ >
1479
+ Close Modal
1480
+ </button>
1481
+ </div>
1482
+ </div>
1483
+ )
1484
+ }
1485
+
1486
+ export function UseOnClickOutsideDemo() {
1487
+ const [isOpen, setIsOpen] = useState(false)
1488
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false)
1489
+ const modalRef = useRef<HTMLDivElement>(null)
1490
+ const dropdownRef = useRef<HTMLDivElement>(null)
1491
+ const dropdownButtonRef = useRef<HTMLButtonElement>(null)
1492
+
1493
+ useOnClickOutside(modalRef, () => {
1494
+ if (isOpen) {
1495
+ setIsOpen(false)
1496
+ }
1497
+ })
1498
+
1499
+ useOnClickOutside([dropdownRef, dropdownButtonRef], () => {
1500
+ if (isDropdownOpen) {
1501
+ setIsDropdownOpen(false)
1502
+ }
1503
+ })
1504
+
1505
+ return (
1506
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1507
+ <div>
1508
+ <h2 className="text-2xl font-bold mb-4">Modal Dialog</h2>
1509
+ <button
1510
+ onClick={() => setIsOpen(true)}
1511
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
1512
+ >
1513
+ Open Modal
1514
+ </button>
1515
+
1516
+ {isOpen && (
1517
+ <div className="fixed inset-0 bg-black/50 flex items-center justify-center z-50">
1518
+ <div
1519
+ ref={modalRef}
1520
+ className="bg-background border rounded-lg p-6 max-w-md w-full shadow-lg"
1521
+ >
1522
+ <h3 className="text-lg font-semibold mb-2">Modal Title</h3>
1523
+ <p className="text-muted-foreground mb-4">
1524
+ Click outside this modal to close it. The hook detects clicks outside the modal container.
1525
+ </p>
1526
+ <button
1527
+ onClick={() => setIsOpen(false)}
1528
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 bg-primary text-primary-foreground shadow-xs hover:bg-primary/90"
1529
+ >
1530
+ Close
1531
+ </button>
1532
+ </div>
1533
+ </div>
1534
+ )}
1535
+ </div>
1536
+
1537
+ <div>
1538
+ <h2 className="text-2xl font-bold mb-4">Dropdown Menu (Multiple Refs)</h2>
1539
+ <div className="relative inline-block">
1540
+ <button
1541
+ ref={dropdownButtonRef}
1542
+ onClick={() => setIsDropdownOpen(!isDropdownOpen)}
1543
+ className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 px-4 py-2 border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground"
1544
+ >
1545
+ Toggle Dropdown
1546
+ </button>
1547
+
1548
+ {isDropdownOpen && (
1549
+ <div
1550
+ ref={dropdownRef}
1551
+ className="absolute top-full left-0 mt-2 w-48 bg-background border rounded-md shadow-lg z-10"
1552
+ >
1553
+ <div className="p-1">
1554
+ <button className="w-full text-left px-3 py-2 text-sm rounded hover:bg-accent hover:text-accent-foreground">
1555
+ Option 1
1556
+ </button>
1557
+ <button className="w-full text-left px-3 py-2 text-sm rounded hover:bg-accent hover:text-accent-foreground">
1558
+ Option 2
1559
+ </button>
1560
+ <button className="w-full text-left px-3 py-2 text-sm rounded hover:bg-accent hover:text-accent-foreground">
1561
+ Option 3
1562
+ </button>
1563
+ </div>
1564
+ </div>
1565
+ )}
1566
+ </div>
1567
+ </div>
1568
+ </div>
1569
+ )
1570
+ }
1571
+
1572
+
1573
+ // Sample components for demo
1574
+ function FeatureCard({ title, description, icon, direction = 'top', delay = 0 }) {
1575
+ const [ref, isVisible, animationClasses] = useSlideInV1(direction, 0.15, '0px 0px -50px 0px', 500, delay);
1576
+
1577
+ return (
1578
+ <div
1579
+ ref={ref}
1580
+ className={`bg-white dark:bg-gray-800 rounded-lg p-6 shadow-lg ${animationClasses}`}
1581
+ >
1582
+ <div className="text-3xl mb-4">{icon}</div>
1583
+ <h3 className="text-xl font-semibold mb-2 text-gray-900 dark:text-white">{title}</h3>
1584
+ <p className="text-gray-600 dark:text-gray-300">{description}</p>
1585
+ </div>
1586
+ );
1587
+ }
1588
+
1589
+ function DirectionalGrid({ items, title, directions = ['top', 'top', 'top'] }) {
1590
+ return (
1591
+ <div className="text-center mb-16">
1592
+ <h2 className="text-3xl font-bold mb-4 text-gray-900 dark:text-white">{title}</h2>
1593
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-6 mt-8">
1594
+ {items.map((item, index) => (
1595
+ <FeatureCard
1596
+ key={index}
1597
+ {...item}
1598
+ direction={directions[index]}
1599
+ delay={index * 100}
1600
+ />
1601
+ ))}
1602
+ </div>
1603
+ </div>
1604
+ );
1605
+ }
1606
+
1607
+ export default function DirectionalAnimationsDemo() {
1608
+ // Different sections with various animation directions
1609
+ const [heroRef, heroVisible, heroClasses] = useSlideInV1('scale', 0.1);
1610
+ const [section1Ref, section1Visible, section1Classes] = useSlideInV1('bottom', 0.15);
1611
+ const [section2Ref, section2Visible, section2Classes] = useSlideInV1('left', 0.15);
1612
+ const [section3Ref, section3Visible, section3Classes] = useSlideInV1('right', 0.15);
1613
+ const [ctaRef, ctaVisible, ctaClasses] = useSlideInV1('fade', 0.15, '0px 0px -100px 0px', 800);
1614
+
1615
+ const features = [
1616
+ { title: "Fast Performance", description: "Lightning-fast loading and smooth interactions", icon: "⚡" },
1617
+ { title: "Secure by Default", description: "Enterprise-grade security built-in", icon: "🔒" },
1618
+ { title: "Easy Integration", description: "Simple APIs and documentation", icon: "🔧" }
1619
+ ];
1620
+
1621
+ const services = [
1622
+ { title: "Cloud Storage", description: "Scalable storage solutions", icon: "☁️" },
1623
+ { title: "Analytics", description: "Deep insights and reporting", icon: "📊" },
1624
+ { title: "Support", description: "24/7 customer support", icon: "💬" }
1625
+ ];
1626
+
1627
+ const benefits = [
1628
+ { title: "Cost Effective", description: "Reduce operational costs", icon: "💰" },
1629
+ { title: "Reliable", description: "99.9% uptime guaranteed", icon: "✅" },
1630
+ { title: "Scalable", description: "Grow with your business", icon: "📈" }
1631
+ ];
1632
+
1633
+ return (
1634
+ <div className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800">
1635
+
1636
+ {/* Hero Section - Scale Animation */}
1637
+ <section className="py-20 px-6">
1638
+ <div ref={heroRef} className={`max-w-4xl mx-auto text-center ${heroClasses}`}>
1639
+ <h1 className="text-5xl font-bold mb-6 text-gray-900 dark:text-white">
1640
+ Directional Slide Animations
1641
+ </h1>
1642
+ <p className="text-xl text-gray-600 dark:text-gray-300 mb-8">
1643
+ Scroll down to see animations from different directions
1644
+ </p>
1645
+ <div className="flex justify-center gap-4 flex-wrap text-sm">
1646
+ <span className="bg-blue-100 dark:bg-blue-900 px-3 py-1 rounded-full">↑ From Top</span>
1647
+ <span className="bg-green-100 dark:bg-green-900 px-3 py-1 rounded-full">↓ From Bottom</span>
1648
+ <span className="bg-purple-100 dark:bg-purple-900 px-3 py-1 rounded-full">← From Left</span>
1649
+ <span className="bg-orange-100 dark:bg-orange-900 px-3 py-1 rounded-full">→ From Right</span>
1650
+ <span className="bg-pink-100 dark:bg-pink-900 px-3 py-1 rounded-full">⚡ Scale & Fade</span>
1651
+ </div>
1652
+ </div>
1653
+ </section>
1654
+
1655
+ <div className="max-w-6xl mx-auto px-6">
1656
+
1657
+ {/* Section 1 - Slides from Bottom */}
1658
+ <section ref={section1Ref} className={section1Classes}>
1659
+ <DirectionalGrid
1660
+ items={features}
1661
+ title="Features (From Bottom ↓)"
1662
+ directions={['bottom', 'bottom', 'bottom']}
1663
+ />
1664
+ </section>
1665
+
1666
+ {/* Section 2 - Slides from Left */}
1667
+ <section ref={section2Ref} className={section2Classes}>
1668
+ <DirectionalGrid
1669
+ items={services}
1670
+ title="Services (From Left ←)"
1671
+ directions={['left', 'left', 'left']}
1672
+ />
1673
+ </section>
1674
+
1675
+ {/* Section 3 - Slides from Right */}
1676
+ <section ref={section3Ref} className={section3Classes}>
1677
+ <DirectionalGrid
1678
+ items={benefits}
1679
+ title="Benefits (From Right →)"
1680
+ directions={['right', 'right', 'right']}
1681
+ />
1682
+ </section>
1683
+
1684
+ {/* Mixed Directions Demo */}
1685
+ <section className="mb-16">
1686
+ <h2 className="text-3xl font-bold mb-4 text-center text-gray-900 dark:text-white">
1687
+ Mixed Directions Demo
1688
+ </h2>
1689
+ <DirectionalGrid
1690
+ items={[
1691
+ { title: "Top-Left", description: "Slides from top-left corner", icon: "↖️" },
1692
+ { title: "Scale Up", description: "Scales from center", icon: "🎯" },
1693
+ { title: "Top-Right", description: "Slides from top-right corner", icon: "↗️" }
1694
+ ]}
1695
+ directions={['top-left', 'scale', 'top-right']}
1696
+ />
1697
+ </section>
1698
+
1699
+ </div>
1700
+
1701
+ {/* CTA Section - Fade Animation */}
1702
+ <section className="py-20 px-6">
1703
+ <div ref={ctaRef} className={`max-w-4xl mx-auto text-center ${ctaClasses}`}>
1704
+ <h2 className="text-4xl font-bold mb-6 text-gray-900 dark:text-white">
1705
+ Ready to Get Started?
1706
+ </h2>
1707
+ <p className="text-xl text-gray-600 dark:text-gray-300 mb-8">
1708
+ This section fades in smoothly
1709
+ </p>
1710
+ <button className="bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 px-8 rounded-lg transition-colors duration-200 transform hover:scale-105">
1711
+ Start Free Trial
1712
+ </button>
1713
+ </div>
1714
+ </section>
1715
+
1716
+ {/* Usage Examples */}
1717
+ <section className="py-16 px-6 bg-white/50 dark:bg-gray-800/50">
1718
+ <div className="max-w-4xl mx-auto">
1719
+ <h3 className="text-2xl font-bold mb-6 text-center text-gray-900 dark:text-white">
1720
+ Usage Examples
1721
+ </h3>
1722
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-6 text-sm">
1723
+ <div className="bg-gray-100 dark:bg-gray-900 p-4 rounded-lg">
1724
+ <h4 className="font-semibold mb-2">Basic Usage:</h4>
1725
+ <code className="text-blue-600">
1726
+ {`const [ref, isVisible, classes] = useSlideInV1('top');`}
1727
+ </code>
1728
+ </div>
1729
+ <div className="bg-gray-100 dark:bg-gray-900 p-4 rounded-lg">
1730
+ <h4 className="font-semibold mb-2">With Custom Settings:</h4>
1731
+ <code className="text-blue-600">
1732
+ {`useSlideInV1('left', 0.2, '0px', 800, 200);`}
1733
+ </code>
1734
+ </div>
1735
+ <div className="bg-gray-100 dark:bg-gray-900 p-4 rounded-lg">
1736
+ <h4 className="font-semibold mb-2">Available Directions:</h4>
1737
+ <code className="text-green-600">
1738
+ 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'scale', 'fade'
1739
+ </code>
1740
+ </div>
1741
+ <div className="bg-gray-100 dark:bg-gray-900 p-4 rounded-lg">
1742
+ <h4 className="font-semibold mb-2">In Component:</h4>
1743
+ <code className="text-purple-600">
1744
+ {`<div ref={ref} className={classes}>Content</div>`}
1745
+ </code>
1746
+ </div>
1747
+ </div>
1748
+ </div>
1749
+ </section>
1750
+
1751
+ <div className="h-32"></div>
1752
+ </div>
1753
+ );
1754
+ }
1755
+
1756
+ export function UseSecFetchParserDemo() {
1757
+ const { parseFromHeadersObject, validateSecFetch } = useSecFetchParser()
1758
+ const [validationResult, setValidationResult] = useState<string>("")
1759
+
1760
+ const mockHeaders = {
1761
+ "sec-fetch-dest": "document",
1762
+ "sec-fetch-mode": "navigate",
1763
+ "sec-fetch-site": "same-origin",
1764
+ "sec-fetch-user": "?1"
1765
+ }
1766
+
1767
+ const handleValidate = () => {
1768
+ const secFetchData = parseFromHeadersObject(mockHeaders)
1769
+ if (secFetchData) {
1770
+ const isValid = validateSecFetch(secFetchData)
1771
+ setValidationResult(isValid ? "Valid Sec-Fetch headers" : "Invalid Sec-Fetch headers")
1772
+ } else {
1773
+ setValidationResult("No Sec-Fetch headers found")
1774
+ }
1775
+ }
1776
+
1777
+ return (
1778
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1779
+ <div>
1780
+ <h2 className="text-2xl font-bold mb-4">Sec-Fetch Parser Hook</h2>
1781
+ <div className="space-y-4">
1782
+ <div className="p-4 border rounded-lg bg-background">
1783
+ <p className="font-medium mb-2">Mock Headers:</p>
1784
+ <pre className="text-sm bg-muted p-2 rounded">
1785
+ {JSON.stringify(mockHeaders, null, 2)}
1786
+ </pre>
1787
+ </div>
1788
+
1789
+ <button
1790
+ onClick={handleValidate}
1791
+ className="px-4 py-2 bg-primary text-primary-foreground rounded-md"
1792
+ >
1793
+ Validate Sec-Fetch Headers
1794
+ </button>
1795
+
1796
+ {validationResult && (
1797
+ <div className="p-4 border rounded-lg bg-background">
1798
+ <p className="font-medium">Validation Result:</p>
1799
+ <p className={validationResult.includes("Valid") ? "text-green-600" : "text-red-600"}>
1800
+ {validationResult}
1801
+ </p>
1802
+ </div>
1803
+ )}
1804
+
1805
+ <div className="p-4 border rounded-lg bg-background">
1806
+ <p className="font-medium mb-2">Usage Information:</p>
1807
+ <p className="text-sm text-muted-foreground">
1808
+ This hook parses and validates Sec-Fetch headers for security purposes.
1809
+ Use it in your Remix loaders and actions to verify request origins.
1810
+ </p>
1811
+ </div>
1812
+ </div>
1813
+ </div>
1814
+ </div>
1815
+ )
1816
+ }
1817
+
1818
+ export function UseTimerDemo() {
1819
+ const [count, setCount] = useState(0)
1820
+ const [log, setLog] = useState<string[]>([])
1821
+
1822
+ const { start, stop, reset, isRunning } = useTimer({
1823
+ interval: 1000,
1824
+ callback: () => {
1825
+ setCount(prev => prev + 1)
1826
+ setLog(prev => [...prev, `Tick at ${new Date().toLocaleTimeString()}`])
1827
+ },
1828
+ immediate: true
1829
+ })
1830
+
1831
+ const handleReset = () => {
1832
+ setCount(0)
1833
+ setLog([])
1834
+ reset()
1835
+ }
1836
+
1837
+ return (
1838
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1839
+ <div>
1840
+ <h2 className="text-2xl font-bold mb-4">Timer Hook</h2>
1841
+ <div className="space-y-4">
1842
+ <div className="p-4 border rounded-lg bg-background">
1843
+ <p className="font-medium">Count: {count}</p>
1844
+ <p className={isRunning ? "text-green-600" : "text-red-600"}>
1845
+ Status: {isRunning ? "Running" : "Stopped"}
1846
+ </p>
1847
+ </div>
1848
+
1849
+ <div className="flex gap-2 flex-wrap">
1850
+ <button
1851
+ onClick={start}
1852
+ disabled={isRunning}
1853
+ className="px-4 py-2 bg-primary text-primary-foreground rounded-md disabled:opacity-50"
1854
+ >
1855
+ Start
1856
+ </button>
1857
+ <button
1858
+ onClick={stop}
1859
+ disabled={!isRunning}
1860
+ className="px-4 py-2 bg-secondary text-secondary-foreground rounded-md disabled:opacity-50"
1861
+ >
1862
+ Stop
1863
+ </button>
1864
+ <button
1865
+ onClick={handleReset}
1866
+ className="px-4 py-2 bg-destructive text-destructive-foreground rounded-md"
1867
+ >
1868
+ Reset
1869
+ </button>
1870
+ </div>
1871
+
1872
+ <div className="p-4 border rounded-lg bg-background">
1873
+ <p className="font-medium mb-2">Activity Log:</p>
1874
+ <div className="max-h-32 overflow-y-auto text-sm">
1875
+ {log.length > 0 ? (
1876
+ log.map((entry, index) => (
1877
+ <div key={index} className="py-1 border-b last:border-b-0">
1878
+ {entry}
1879
+ </div>
1880
+ ))
1881
+ ) : (
1882
+ <p className="text-muted-foreground">No activity yet</p>
1883
+ )}
1884
+ </div>
1885
+ </div>
1886
+ </div>
1887
+ </div>
1888
+ </div>
1889
+ )
1890
+ }
1891
+
1892
+ export function UseBreakpointDemo() {
1893
+ const isMobile = useBreakpoint(768)
1894
+ const isTablet = useBreakpoint(1024)
1895
+
1896
+ return (
1897
+ <div className="space-y-8 p-6 max-w-2xl mx-auto">
1898
+ <div>
1899
+ <h2 className="text-2xl font-bold mb-4">Breakpoint Detection</h2>
1900
+ <div className="grid gap-4">
1901
+ <div className="p-4 border rounded-lg bg-background">
1902
+ <p className="font-medium">Mobile (below 768px):</p>
1903
+ <p className={isMobile ? "text-green-600" : "text-red-600"}>
1904
+ {isMobile ? "Active" : "Inactive"}
1905
+ </p>
1906
+ </div>
1907
+ <div className="p-4 border rounded-lg bg-background">
1908
+ <p className="font-medium">Tablet (below 1024px):</p>
1909
+ <p className={isTablet ? "text-green-600" : "text-red-600"}>
1910
+ {isTablet ? "Active" : "Inactive"}
1911
+ </p>
1912
+ </div>
1913
+ </div>
1914
+ </div>
1915
+ </div>
1916
+ )
1917
+ }
1918
+
1919
+
1920
+ export function UseFocusWithinDemo() {
1921
+ const { focusWithinProps, ref } = useFocusWithin({
1922
+ onFocusWithin: () => console.log('Focus within container'),
1923
+ onBlurWithin: () => console.log('Blur within container')
1924
+ });
1925
+
1926
+ return (
1927
+ <Card ref={ref} {...focusWithinProps} className="p-4">
1928
+ <h3 className="font-semibold mb-2">useFocusWithin</h3>
1929
+ <p>Focus on any element inside this card</p>
1930
+ <Button className="mt-2">Button 1</Button>
1931
+ <Button className="mt-2 ml-2">Button 2</Button>
1932
+ </Card>
1933
+ );
1934
+ }
1935
+ export function UseFocusDemo() {
1936
+ const { focusProps, isFocused, ref } = useFocus({
1937
+ onFocus: () => console.log('Focused'),
1938
+ onBlur: () => console.log('Blurred')
1939
+ });
1940
+
1941
+ return (
1942
+ <Card className="p-4">
1943
+ <h3 className="font-semibold mb-2">useFocus</h3>
1944
+ <Button
1945
+ ref={ref}
1946
+ {...focusProps}
1947
+ variant={isFocused ? 'default' : 'outline'}
1948
+ >
1949
+ {isFocused ? 'Focused' : 'Focus me'}
1950
+ </Button>
1951
+ </Card>
1952
+ );
1953
+ }
1954
+ export function UsePressDemo() {
1955
+ const [counter, setCounter] = useState(0);
1956
+ const { pressProps, isPressed, ref } = usePress({
1957
+ onPress: () => setCounter(c => c + 1)
1958
+ });
1959
+
1960
+ return (
1961
+ <Card className="p-4">
1962
+ <h3 className="font-semibold mb-2">usePress</h3>
1963
+ <Button
1964
+ ref={ref}
1965
+ {...pressProps}
1966
+ variant={isPressed ? 'default' : 'outline'}
1967
+ >
1968
+ Press me: {counter}
1969
+ </Button>
1970
+ </Card>
1971
+ );
1972
+ }
1973
+ export function UseLongPressDemo() {
1974
+ const { longPressProps, ref } = useLongPress({
1975
+ onLongPress: () => console.log('Long pressed!')
1976
+ });
1977
+
1978
+ return (
1979
+ <Card className="p-4">
1980
+ <h3 className="font-semibold mb-2">useLongPress</h3>
1981
+ <Button
1982
+ ref={ref}
1983
+ {...longPressProps}
1984
+ variant="outline"
1985
+ >
1986
+ Long press me
1987
+ </Button>
1988
+ </Card>
1989
+ );
1990
+ }
1991
+ export function UseKeyboardDemo() {
1992
+ const { keyboardProps, ref } = useKeyboard({
1993
+ onKeyDown: (e) => console.log(`Key pressed: ${e.key}`)
1994
+ });
1995
+
1996
+ return (
1997
+ <Card className="p-4">
1998
+ <h3 className="font-semibold mb-2">useKeyboard</h3>
1999
+ <div
2000
+ ref={ref}
2001
+ {...keyboardProps}
2002
+ tabIndex={0}
2003
+ className="p-4 border rounded-md focus:outline-none focus:ring-2 focus:ring-primary"
2004
+ >
2005
+ Press any key while focused
2006
+ </div>
2007
+ </Card>
2008
+ );
2009
+ }
2010
+ export function UseHoverDemo() {
2011
+ const { hoverProps, isHovered, ref } = useHover({});
2012
+
2013
+ return (
2014
+ <Card className="p-4">
2015
+ <h3 className="font-semibold mb-2">useHover</h3>
2016
+ <div
2017
+ ref={ref}
2018
+ {...hoverProps}
2019
+ className={`p-4 border rounded-md transition-colors ${isHovered ? 'bg-primary text-primary-foreground' : 'bg-muted'}`}
2020
+ >
2021
+ Hover over me
2022
+ </div>
2023
+ </Card>
2024
+ );
2025
+ }
2026
+ export function UseMoveDemo() {
2027
+ const { moveProps, ref } = useMove({
2028
+ onMove: (e) => console.log(`Moved: ${e.deltaX}, ${e.deltaY}`)
2029
+ });
2030
+
2031
+ return (
2032
+ <Card className="p-4">
2033
+ <h3 className="font-semibold mb-2">useMove</h3>
2034
+ <div
2035
+ ref={ref}
2036
+ {...moveProps}
2037
+ className="p-4 border rounded-md bg-muted h-24 flex items-center justify-center"
2038
+ >
2039
+ Click and drag inside this area
2040
+ </div>
2041
+ </Card>
2042
+ );
2043
+ }
2044
+ export function UseOverlayListenerDemo() {
2045
+ const [isOpen, setIsOpen] = useState(false);
2046
+ const overlayRef = useRef<HTMLDivElement>(null);
2047
+
2048
+ useOverlayListener(overlayRef, (e) => {
2049
+ console.log(`Overlay event: ${e.type}`);
2050
+ if (e.type === 'outsidePress') setIsOpen(false);
2051
+ }, isOpen);
2052
+
2053
+ return (
2054
+ <Card className="p-4">
2055
+ <h3 className="font-semibold mb-2">useOverlayListener</h3>
2056
+ <Button onClick={() => setIsOpen(true)}>
2057
+ Open overlay
2058
+ </Button>
2059
+ {isOpen && (
2060
+ <div ref={overlayRef} className="fixed inset-0 bg-black/50 flex items-center justify-center">
2061
+ <Card className="p-6">
2062
+ <h3 className="font-semibold mb-4">Overlay Content</h3>
2063
+ <p className="mb-4">Click outside or press Escape to close</p>
2064
+ <Button onClick={() => setIsOpen(false)}>
2065
+ Close
2066
+ </Button>
2067
+ </Card>
2068
+ </div>
2069
+ )}
2070
+ </Card>
2071
+ );
2072
+ }
2073
+ export function UsePreviousDemo() {
2074
+ const [counter, setCounter] = useState(0);
2075
+ const prevCounter = usePrevious(counter);
2076
+
2077
+ return (
2078
+ <Card className="p-4">
2079
+ <h3 className="font-semibold mb-2">usePrevious</h3>
2080
+ <p>Previous value: {prevCounter}</p>
2081
+ <p>Current value: {counter}</p>
2082
+ <Button onClick={() => setCounter(c => c + 1)} className="mt-2">
2083
+ Increment
2084
+ </Button>
2085
+ </Card>
2086
+ );
2087
+ }
2088
+ export function UseFaviconDemo() {
2089
+ const [favicon, setFavicon] = useState('/favicon.ico');
2090
+ useFavicon(favicon);
2091
+
2092
+ return (
2093
+ <Card className="p-4">
2094
+ <h3 className="font-semibold mb-2">useFavicon</h3>
2095
+ <div className="flex gap-2">
2096
+ <Button onClick={() => setFavicon('/favicon.ico')}>
2097
+ Default Favicon
2098
+ </Button>
2099
+ <Button onClick={() => setFavicon('/favicon-alt.ico')}>
2100
+ Alternate Favicon
2101
+ </Button>
2102
+ </div>
2103
+ </Card>
2104
+ );
2105
+ }
2106
+ export function UseMountEffectDemo() {
2107
+ useMountEffect(() => {
2108
+ console.log('Component mounted');
2109
+ });
2110
+
2111
+ return (
2112
+ <Card className="p-4">
2113
+ <h3 className="font-semibold mb-2">useMountEffect</h3>
2114
+ <p>Check console for mount message</p>
2115
+ </Card>
2116
+ );
2117
+ }
2118
+ export function UseUpdateEffectDemo() {
2119
+ const [counter, setCounter] = useState(0);
2120
+ const prevCounter = usePrevious(counter);
2121
+
2122
+ useUpdateEffect(() => {
2123
+ console.log(`Counter updated from ${prevCounter} to ${counter}`);
2124
+ }, [counter]);
2125
+
2126
+ return (
2127
+ <Card className="p-4">
2128
+ <h3 className="font-semibold mb-2">useUpdateEffect</h3>
2129
+ <p>Counter: {counter}</p>
2130
+ <Button onClick={() => setCounter(c => c + 1)} className="mt-2">
2131
+ Increment
2132
+ </Button>
2133
+ </Card>
2134
+ );
2135
+ }
2136
+ export function UseUnmountEffectDemo() {
2137
+ useUnmountEffect(() => {
2138
+ console.log('Component will unmount');
2139
+ });
2140
+
2141
+ return (
2142
+ <Card className="p-4">
2143
+ <h3 className="font-semibold mb-2">useUnmountEffect</h3>
2144
+ <p>Check console for unmount message when component is removed</p>
2145
+ </Card>
2146
+ );
2147
+ }
2148
+ export function UseEventListenerDemo() {
2149
+ useEventListener('resize', () => {
2150
+ console.log('Window resized');
2151
+ });
2152
+
2153
+ return (
2154
+ <Card className="p-4">
2155
+ <h3 className="font-semibold mb-2">useEventListener</h3>
2156
+ <p>Check console for resize events</p>
2157
+ </Card>
2158
+ );
2159
+ }
2160
+
2161
+ export function HooksDemo() {
2162
+ return (
2163
+ <div className="p-6 space-y-6 bg-background text-foreground">
2164
+ <Card>
2165
+ <CardHeader>
2166
+ <CardTitle>React Aria Hooks Demo</CardTitle>
2167
+ <CardDescription>
2168
+ Demonstration of various React Aria hooks with proper TypeScript support
2169
+ </CardDescription>
2170
+ </CardHeader>
2171
+ <CardContent className="space-y-4">
2172
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
2173
+ <UseFocusWithinDemo />
2174
+ <UseFocusDemo />
2175
+ <UsePressDemo />
2176
+ <UseLongPressDemo />
2177
+ <UseKeyboardDemo />
2178
+ <UseHoverDemo />
2179
+ <UseMoveDemo />
2180
+ <UseOverlayListenerDemo />
2181
+ <UsePreviousDemo />
2182
+ <UseFaviconDemo />
2183
+ <UseMountEffectDemo />
2184
+ <UseUpdateEffectDemo />
2185
+ <UseUnmountEffectDemo />
2186
+ <UseEventListenerDemo />
2187
+ </div>
2188
+ </CardContent>
2189
+ </Card>
2190
+ </div>
2191
+ );
2192
+ }
2193
+ export function UseHydratedDemo() {
2194
+ const hydrated = useHydrated();
2195
+
2196
+ return (
2197
+ <div className="p-4 border rounded-lg">
2198
+ <h3 className="font-semibold mb-2">useHydrated</h3>
2199
+ <button
2200
+ type="button"
2201
+ disabled={!hydrated}
2202
+ className="bg-blue-500 text-white px-4 py-2 rounded disabled:bg-gray-300"
2203
+ >
2204
+ {hydrated ? "JS Loaded - Click me" : "Loading JS..."}
2205
+ </button>
2206
+ <p className="text-sm text-gray-600 mt-2">
2207
+ Hydration status: {hydrated ? "Hydrated" : "Not hydrated"}
2208
+ </p>
2209
+ </div>
2210
+ );
2211
+ }
2212
+ export function UseResizeListenerDemo() {
2213
+ const ref = useRef<HTMLDivElement>(null);
2214
+ const [size, setSize] = useState({ width: 0, height: 0 });
2215
+
2216
+ useResizeListener(ref, (entries) => {
2217
+ const entry = entries[0];
2218
+ setSize({
2219
+ width: Math.round(entry.contentRect.width),
2220
+ height: Math.round(entry.contentRect.height)
2221
+ });
2222
+ });
2223
+
2224
+ return (
2225
+ <div className="p-4 border rounded-lg">
2226
+ <h3 className="font-semibold mb-2">useResizeListener</h3>
2227
+ <div
2228
+ ref={ref}
2229
+ className="border-2 border-dashed border-gray-300 p-4 resize overflow-auto max-w-full"
2230
+ style={{ width: '300px', height: '200px' }}
2231
+ >
2232
+ <p>Resize this element</p>
2233
+ <p className="text-sm mt-2">
2234
+ Width: {size.width}px<br />
2235
+ Height: {size.height}px
2236
+ </p>
2237
+ </div>
2238
+ </div>
2239
+ );
2240
+ }
2241
+ export function UseCopyToClipboardDemo() {
2242
+ const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 });
2243
+ const [text, setText] = useState('Copy this text!');
2244
+
2245
+ return (
2246
+ <div className="p-4 border rounded-lg">
2247
+ <h3 className="font-semibold mb-2">useCopyToClipboard</h3>
2248
+ <input
2249
+ type="text"
2250
+ value={text}
2251
+ onChange={(e) => setText(e.target.value)}
2252
+ className="border p-2 rounded mb-2 w-full"
2253
+ />
2254
+ <button
2255
+ onClick={() => copyToClipboard(text)}
2256
+ className={`px-4 py-2 rounded ${isCopied ? 'bg-green-500 text-white' : 'bg-blue-500 text-white'
2257
+ }`}
2258
+ >
2259
+ {isCopied ? 'Copied!' : 'Copy to Clipboard'}
2260
+ </button>
2261
+ </div>
2262
+ );
2263
+ }
2264
+ export function UseIsMobileDemo() {
2265
+ const isMobile = useIsMobile();
2266
+
2267
+ return (
2268
+ <div className="p-4 border rounded-lg">
2269
+ <h3 className="font-semibold mb-2">useIsMobile</h3>
2270
+ <div className={isMobile ? "bg-blue-100 p-4 rounded" : "bg-green-100 p-6 rounded"}>
2271
+ <h4 className="text-lg font-semibold mb-2">
2272
+ {isMobile ? "Mobile View" : "Desktop View"}
2273
+ </h4>
2274
+ <p className="text-sm">
2275
+ {isMobile
2276
+ ? "This layout is optimized for mobile devices."
2277
+ : "This layout is optimized for desktop screens."
2278
+ }
2279
+ </p>
2280
+ <div className={`mt-3 ${isMobile ? 'block' : 'flex gap-2'}`}>
2281
+ <button className={`${isMobile ? 'w-full' : ''} bg-blue-500 text-white px-4 py-2 rounded`}>
2282
+ Primary Action
2283
+ </button>
2284
+ {!isMobile && (
2285
+ <button className="border border-blue-500 text-blue-500 px-4 py-2 rounded">
2286
+ Secondary Action
2287
+ </button>
2288
+ )}
2289
+ </div>
2290
+ </div>
2291
+ </div>
2292
+ );
2293
+ }
2294
+ export function UseMountedDemo() {
2295
+ const mounted = useMounted();
2296
+
2297
+ if (!mounted) {
2298
+ return (
2299
+ <div className="p-4 border rounded-lg bg-gray-100 animate-pulse">
2300
+ <div className="h-6 bg-gray-300 rounded w-1/2 mb-4"></div>
2301
+ <div className="h-4 bg-gray-300 rounded w-3/4 mb-2"></div>
2302
+ <div className="h-4 bg-gray-300 rounded w-2/3"></div>
2303
+ </div>
2304
+ );
2305
+ }
2306
+
2307
+ return (
2308
+ <div className="p-4 border rounded-lg bg-white">
2309
+ <h3 className="font-semibold mb-2">useMounted</h3>
2310
+ <p className="text-sm mb-2">Viewport width: {window.innerWidth}px</p>
2311
+ <p className="text-sm">User agent detected</p>
2312
+ </div>
2313
+ );
2314
+ }
2315
+ // new
2316
+ export function UseExportDemo() {
2317
+ const exportFile = useExport();
2318
+ const [content, setContent] = useState('// Your code here\nexport function demo() {\n return "Hello World!";\n}');
2319
+
2320
+ return (
2321
+ <div className="p-4 border rounded-lg">
2322
+ <h3 className="font-semibold mb-2">useExport</h3>
2323
+ <textarea
2324
+ value={content}
2325
+ onChange={(e) => setContent(e.target.value)}
2326
+ className="w-full h-32 p-2 border rounded mb-2 font-mono text-sm"
2327
+ />
2328
+ <button
2329
+ onClick={() => exportFile(content, 'demo.tsx')}
2330
+ className="bg-blue-500 text-white px-4 py-2 rounded"
2331
+ >
2332
+ Export as TSX
2333
+ </button>
2334
+ </div>
2335
+ );
2336
+ }
2337
+ export function UseFuzzySearchDemo() {
2338
+ const items = [
2339
+ { id: 1, name: 'Apple', category: 'Fruit' },
2340
+ { id: 2, name: 'Banana', category: 'Fruit' },
2341
+ { id: 3, name: 'Carrot', category: 'Vegetable' },
2342
+ { id: 4, name: 'Broccoli', category: 'Vegetable' },
2343
+ ];
2344
+
2345
+ const [searchTerm, setSearchTerm] = useState('');
2346
+ const results = useFuzzySearch(items, searchTerm, {
2347
+ keys: ['name', 'category'],
2348
+ threshold: 0.3,
2349
+ });
2350
+
2351
+ return (
2352
+ <div className="p-4 border rounded-lg">
2353
+ <h3 className="font-semibold mb-2">useFuzzySearch</h3>
2354
+ <input
2355
+ type="text"
2356
+ placeholder="Search items..."
2357
+ value={searchTerm}
2358
+ onChange={(e) => setSearchTerm(e.target.value)}
2359
+ className="w-full p-2 border rounded mb-2"
2360
+ />
2361
+ <div className="space-y-1">
2362
+ {results.map(item => (
2363
+ <div key={item.id} className="p-2 bg-gray-100 rounded">
2364
+ {item.name} - {item.category}
2365
+ </div>
2366
+ ))}
2367
+ </div>
2368
+ </div>
2369
+ );
2370
+ }
2371
+ export function UseFuseSearchDemo() {
2372
+ const books = [
2373
+ { title: 'The Great Gatsby', author: 'F. Scott Fitzgerald', year: 1925 },
2374
+ { title: 'To Kill a Mockingbird', author: 'Harper Lee', year: 1960 },
2375
+ { title: '1984', author: 'George Orwell', year: 1949 },
2376
+ { title: 'Pride and Prejudice', author: 'Jane Austen', year: 1813 },
2377
+ ];
2378
+
2379
+ const { query, results, search, isSearching } = useFuseSearch(books, {
2380
+ keys: ['title', 'author'],
2381
+ threshold: 0.3,
2382
+ });
2383
+
2384
+ return (
2385
+ <div className="p-4 border rounded-lg">
2386
+ <h3 className="font-semibold mb-2">useFuseSearch</h3>
2387
+ <input
2388
+ type="text"
2389
+ placeholder="Search books..."
2390
+ value={query}
2391
+ onChange={(e) => search(e.target.value)}
2392
+ className="w-full p-2 border rounded mb-2"
2393
+ />
2394
+ <div className="space-y-1">
2395
+ {results.map((result, index) => (
2396
+ <div key={index} className="p-2 bg-gray-100 rounded">
2397
+ {result.item.title} by {result.item.author} ({result.item.year})
2398
+ </div>
2399
+ ))}
2400
+ {isSearching && results.length === 0 && (
2401
+ <p className="text-gray-500">No results found</p>
2402
+ )}
2403
+ </div>
2404
+ </div>
2405
+ );
2406
+ }
2407
+ export function UseDebouncedFuseSearchDemo() {
2408
+ const movies = [
2409
+ { title: 'The Shawshank Redemption', year: 1994, genre: 'Drama' },
2410
+ { title: 'The Godfather', year: 1972, genre: 'Crime' },
2411
+ { title: 'The Dark Knight', year: 2008, genre: 'Action' },
2412
+ { title: 'Pulp Fiction', year: 1994, genre: 'Crime' },
2413
+ ];
2414
+
2415
+ const { query, results, search, isSearching } = useDebouncedFuseSearch(movies, {
2416
+ keys: ['title', 'genre'],
2417
+ threshold: 0.3,
2418
+ }, 500);
2419
+
2420
+ return (
2421
+ <div className="p-4 border rounded-lg">
2422
+ <h3 className="font-semibold mb-2">useDebouncedFuseSearch</h3>
2423
+ <input
2424
+ type="text"
2425
+ placeholder="Search movies (debounced 500ms)..."
2426
+ value={query}
2427
+ onChange={(e) => search(e.target.value)}
2428
+ className="w-full p-2 border rounded mb-2"
2429
+ />
2430
+ {isSearching && <p className="text-gray-500">Searching...</p>}
2431
+ <div className="space-y-1">
2432
+ {results.map((result, index) => (
2433
+ <div key={index} className="p-2 bg-gray-100 rounded">
2434
+ {result.item.title} ({result.item.year}) - {result.item.genre}
2435
+ </div>
2436
+ ))}
2437
+ </div>
2438
+ </div>
2439
+ );
2440
+ }
2441
+ export function UseMediaQueryDemo() {
2442
+ const isLargeScreen = useMediaQuery('(min-width: 1024px)');
2443
+ const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
2444
+
2445
+ return (
2446
+ <div className="p-4 border rounded-lg">
2447
+ <h3 className="font-semibold mb-2">useMediaQuery</h3>
2448
+ <div className="space-y-2">
2449
+ <p>Large screen (≥1024px): {isLargeScreen ? 'Yes' : 'No'}</p>
2450
+ <p>Dark mode preferred: {isDarkMode ? 'Yes' : 'No'}</p>
2451
+ </div>
2452
+ </div>
2453
+ );
2454
+ }
2455
+ export function UseLocalStorageDemo() {
2456
+ const [value, setValue] = useLocalStorage('demo-key', 'default value');
2457
+
2458
+ return (
2459
+ <div className="p-4 border rounded-lg">
2460
+ <h3 className="font-semibold mb-2">useLocalStorage</h3>
2461
+ <input
2462
+ type="text"
2463
+ value={value}
2464
+ onChange={(e) => setValue(e.target.value)}
2465
+ className="w-full p-2 border rounded mb-2"
2466
+ />
2467
+ <p className="text-sm text-gray-600">Value persists across page refreshes</p>
2468
+ </div>
2469
+ );
2470
+ }
2471
+ export function UseSessionStorageDemo() {
2472
+ const [value, setValue] = useSessionStorage('session-demo', 'session value');
2473
+
2474
+ return (
2475
+ <div className="p-4 border rounded-lg">
2476
+ <h3 className="font-semibold mb-2">useSessionStorage</h3>
2477
+ <input
2478
+ type="text"
2479
+ value={value}
2480
+ onChange={(e) => setValue(e.target.value)}
2481
+ className="w-full p-2 border rounded mb-2"
2482
+ />
2483
+ <p className="text-sm text-gray-600">Value persists for this browser session</p>
2484
+ </div>
2485
+ );
2486
+ }
2487
+ export function UseDebounceDemo() {
2488
+ const [value, setValue] = useState('');
2489
+ const debouncedValue = useDebounce(value, 500);
2490
+
2491
+ return (
2492
+ <div className="p-4 border rounded-lg">
2493
+ <h3 className="font-semibold mb-2">useDebounce</h3>
2494
+ <input
2495
+ type="text"
2496
+ placeholder="Type quickly..."
2497
+ value={value}
2498
+ onChange={(e) => setValue(e.target.value)}
2499
+ className="w-full p-2 border rounded mb-2"
2500
+ />
2501
+ <p>Real-time: {value}</p>
2502
+ <p>Debounced (500ms): {debouncedValue}</p>
2503
+ </div>
2504
+ );
2505
+ }
2506
+ export function UseThrottleDemo() {
2507
+ const [value, setValue] = useState(0);
2508
+ const throttledValue = useThrottle(value, 1000);
2509
+
2510
+ return (
2511
+ <div className="p-4 border rounded-lg">
2512
+ <h3 className="font-semibold mb-2">useThrottle</h3>
2513
+ <button
2514
+ onClick={() => setValue(v => v + 1)}
2515
+ className="bg-blue-500 text-white px-4 py-2 rounded mb-2"
2516
+ >
2517
+ Increment (throttled 1s)
2518
+ </button>
2519
+ <p>Clicks: {value}</p>
2520
+ <p>Throttled: {throttledValue}</p>
2521
+ </div>
2522
+ );
2523
+ }
2524
+ export function UseToggleDemo() {
2525
+ const [isOn, toggle, turnOn, turnOff] = useToggle(false);
2526
+
2527
+ return (
2528
+ <div className="p-4 border rounded-lg">
2529
+ <h3 className="font-semibold mb-2">useToggle</h3>
2530
+ <div className="space-x-2 mb-2">
2531
+ <button onClick={toggle} className="bg-blue-500 text-white px-3 py-1 rounded">
2532
+ Toggle
2533
+ </button>
2534
+ <button onClick={turnOn} className="bg-green-500 text-white px-3 py-1 rounded">
2535
+ Turn On
2536
+ </button>
2537
+ <button onClick={turnOff} className="bg-red-500 text-white px-3 py-1 rounded">
2538
+ Turn Off
2539
+ </button>
2540
+ </div>
2541
+ <p>Status: {isOn ? 'ON' : 'OFF'}</p>
2542
+ </div>
2543
+ );
2544
+ }
2545
+ export function UseCounterDemo() {
2546
+ const { count, increment, decrement, reset } = useCounter(0, 1);
2547
+
2548
+ return (
2549
+ <div className="p-4 border rounded-lg">
2550
+ <h3 className="font-semibold mb-2">useCounter</h3>
2551
+ <div className="space-x-2 mb-2">
2552
+ <button onClick={decrement} className="bg-red-500 text-white px-3 py-1 rounded">
2553
+ -
2554
+ </button>
2555
+ <span className="text-xl font-bold">{count}</span>
2556
+ <button onClick={increment} className="bg-green-500 text-white px-3 py-1 rounded">
2557
+ +
2558
+ </button>
2559
+ <button onClick={reset} className="bg-gray-500 text-white px-3 py-1 rounded">
2560
+ Reset
2561
+ </button>
2562
+ </div>
2563
+ </div>
2564
+ );
2565
+ }
2566
+ export function UseIntervalDemo() {
2567
+ const [count, setCount] = useState(0);
2568
+
2569
+ useInterval(() => {
2570
+ setCount(c => c + 1);
2571
+ }, 1000);
2572
+
2573
+ return (
2574
+ <div className="p-4 border rounded-lg">
2575
+ <h3 className="font-semibold mb-2">useInterval</h3>
2576
+ <p>Counting every second: {count}</p>
2577
+ </div>
2578
+ );
2579
+ }
2580
+ export function UseTimeoutDemo() {
2581
+ const [message, setMessage] = useState('Waiting...');
2582
+
2583
+ useTimeout(() => {
2584
+ setMessage('Timeout completed after 3 seconds!');
2585
+ }, 3000);
2586
+
2587
+ return (
2588
+ <div className="p-4 border rounded-lg">
2589
+ <h3 className="font-semibold mb-2">useTimeout</h3>
2590
+ <p>{message}</p>
2591
+ </div>
2592
+ );
2593
+ }
2594
+ export function UseClickOutsideDemo() {
2595
+ const [isOpen, setIsOpen] = useState(false);
2596
+ const ref = useClickOutside<HTMLDivElement>(() => {
2597
+ setIsOpen(false);
2598
+ });
2599
+
2600
+ return (
2601
+ <div className="p-4 border rounded-lg">
2602
+ <h3 className="font-semibold mb-2">useClickOutside</h3>
2603
+ <button
2604
+ onClick={() => setIsOpen(true)}
2605
+ className="bg-blue-500 text-white px-4 py-2 rounded mb-2"
2606
+ >
2607
+ Open Menu
2608
+ </button>
2609
+ {isOpen && (
2610
+ <div ref={ref} className="absolute bg-white border p-4 rounded shadow-lg">
2611
+ <p>Click outside to close</p>
2612
+ <p>Menu content here</p>
2613
+ </div>
2614
+ )}
2615
+ </div>
2616
+ );
2617
+ }
2618
+ export function UseKeyPressDemo() {
2619
+ const isEnterPressed = useKeyPress('Enter');
2620
+
2621
+ return (
2622
+ <div className="p-4 border rounded-lg">
2623
+ <h3 className="font-semibold mb-2">useKeyPress</h3>
2624
+ <p>Press Enter key: {isEnterPressed ? 'Pressed' : 'Not pressed'}</p>
2625
+ </div>
2626
+ );
2627
+ }
2628
+ export function UseOnlineStatusDemo() {
2629
+ const isOnline = useOnlineStatus();
2630
+
2631
+ return (
2632
+ <div className="p-4 border rounded-lg">
2633
+ <h3 className="font-semibold mb-2">useOnlineStatus</h3>
2634
+ <div className="flex items-center gap-2">
2635
+ <div className={`w-3 h-3 rounded-full ${isOnline ? 'bg-green-500' : 'bg-red-500'}`} />
2636
+ <p>{isOnline ? 'Online' : 'Offline'}</p>
2637
+ </div>
2638
+ </div>
2639
+ );
2640
+ }
2641
+ export function UseWindowSizeDemo() {
2642
+ const { width, height } = useWindowSize();
2643
+
2644
+ return (
2645
+ <div className="p-4 border rounded-lg">
2646
+ <h3 className="font-semibold mb-2">useWindowSize</h3>
2647
+ <p>Width: {width}px</p>
2648
+ <p>Height: {height}px</p>
2649
+ </div>
2650
+ );
2651
+ }
2652
+ export function UseScrollPositionDemo() {
2653
+ const { x, y } = useScrollPosition();
2654
+
2655
+ return (
2656
+ <div className="p-4 border rounded-lg">
2657
+ <h3 className="font-semibold mb-2">useScrollPosition</h3>
2658
+ <p>Scroll X: {x}px</p>
2659
+ <p>Scroll Y: {y}px</p>
2660
+ </div>
2661
+ );
2662
+ }
2663
+ export function UseIntersectionObserverDemo() {
2664
+ const [ref, isIntersecting] = useIntersectionObserver({
2665
+ threshold: 0.5,
2666
+ });
2667
+
2668
+ return (
2669
+ <div className="p-4 border rounded-lg">
2670
+ <h3 className="font-semibold mb-2">useIntersectionObserver</h3>
2671
+ <div className="h-96 overflow-y-scroll border">
2672
+ <div className="h-48"></div>
2673
+ <div
2674
+ ref={ref}
2675
+ className={`p-4 border-2 rounded ${isIntersecting ? 'bg-green-100 border-green-500' : 'bg-red-100 border-red-500'
2676
+ }`}
2677
+ >
2678
+ {isIntersecting ? 'Visible (50% in viewport)' : 'Not visible'}
2679
+ </div>
2680
+ <div className="h-48"></div>
2681
+ </div>
2682
+ </div>
2683
+ );
2684
+ }
2685
+ export function UseAsyncDemo() {
2686
+ const fetchData = async () => {
2687
+ await new Promise(resolve => setTimeout(resolve, 1000));
2688
+ return { message: 'Data loaded successfully!' };
2689
+ };
2690
+
2691
+ const { execute, status, data, error } = useAsync(fetchData, false);
2692
+
2693
+ return (
2694
+ <div className="p-4 border rounded-lg">
2695
+ <h3 className="font-semibold mb-2">useAsync</h3>
2696
+ <button
2697
+ onClick={execute}
2698
+ disabled={status === 'pending'}
2699
+ className="bg-blue-500 text-white px-4 py-2 rounded disabled:bg-gray-300"
2700
+ >
2701
+ {status === 'pending' ? 'Loading...' : 'Load Data'}
2702
+ </button>
2703
+ {status === 'success' && <p className="text-green-600 mt-2">{data?.message}</p>}
2704
+ {status === 'error' && <p className="text-red-600 mt-2">Error: {error}</p>}
2705
+ </div>
2706
+ );
2707
+ }
2708
+ export function UseFetchDemo() {
2709
+ const { data, loading, error } = useFetch('https://jsonplaceholder.typicode.com/todos/1');
2710
+
2711
+ return (
2712
+ <div className="p-4 border rounded-lg">
2713
+ <h3 className="font-semibold mb-2">useFetch</h3>
2714
+ {loading && <p>Loading...</p>}
2715
+ {error && <p className="text-red-600">Error: {error.message}</p>}
2716
+ {data && (
2717
+ <pre className="text-sm bg-gray-100 p-2 rounded">
2718
+ {JSON.stringify(data, null, 2)}
2719
+ </pre>
2720
+ )}
2721
+ </div>
2722
+ );
2723
+ }
2724
+ export function UseFormDemo() {
2725
+ const { values, errors, handleChange, handleSubmit } = useForm({
2726
+ name: '',
2727
+ email: '',
2728
+ }, (values) => {
2729
+ alert(`Form submitted: ${JSON.stringify(values)}`);
2730
+ });
2731
+
2732
+ return (
2733
+ <div className="p-4 border rounded-lg">
2734
+ <h3 className="font-semibold mb-2">useForm</h3>
2735
+ <form onSubmit={handleSubmit} className="space-y-2">
2736
+ <input
2737
+ name="name"
2738
+ value={values.name}
2739
+ onChange={handleChange}
2740
+ placeholder="Name"
2741
+ className="w-full p-2 border rounded"
2742
+ />
2743
+ <input
2744
+ name="email"
2745
+ type="email"
2746
+ value={values.email}
2747
+ onChange={handleChange}
2748
+ placeholder="Email"
2749
+ className="w-full p-2 border rounded"
2750
+ />
2751
+ <button type="submit" className="bg-blue-500 text-white px-4 py-2 rounded">
2752
+ Submit
2753
+ </button>
2754
+ </form>
2755
+ </div>
2756
+ );
2757
+ }