@stacksjs/components 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/README.md +477 -0
  2. package/dist/Accordion-x2gjedap.stx +108 -0
  3. package/dist/Audio-0fk6p9tn.stx +50 -0
  4. package/dist/Avatar-5m0v0s4x.stx +88 -0
  5. package/dist/Badge-ynes82vv.stx +70 -0
  6. package/dist/Breadcrumb-h9n427sk.stx +79 -0
  7. package/dist/Button-7xtrzn14.stx +89 -0
  8. package/dist/Calendar-egvx1pma.stx +232 -0
  9. package/dist/Card-r9w7vy1a.stx +74 -0
  10. package/dist/Checkbox-m8v46pmx.stx +92 -0
  11. package/dist/Checkout-vcnnr176.stx +39 -0
  12. package/dist/CodeBlock-mwex82cm.stx +57 -0
  13. package/dist/Combobox-npb08vkp.stx +13 -0
  14. package/dist/ComboboxButton-vcdyq4zw.stx +13 -0
  15. package/dist/ComboboxInput-c9d2p02m.stx +25 -0
  16. package/dist/ComboboxOption-7d0h9ash.stx +52 -0
  17. package/dist/ComboboxOptions-4dtqc0qa.stx +12 -0
  18. package/dist/CommandPalette-ah00bf8v.stx +39 -0
  19. package/dist/CommandPaletteItem-2yx0gvtj.stx +32 -0
  20. package/dist/DefaultPaymentMethod-emw5fg8s.stx +62 -0
  21. package/dist/Dialog-1w4rz7x0.stx +19 -0
  22. package/dist/DialogBackdrop-qbm3y5ab.stx +9 -0
  23. package/dist/DialogDescription-01w5j74b.stx +11 -0
  24. package/dist/DialogPanel-brsszrrs.stx +16 -0
  25. package/dist/DialogTitle-3rxhwg21.stx +11 -0
  26. package/dist/Drawer-yfaz8q7f.stx +137 -0
  27. package/dist/Dropdown-ng7nx556.stx +24 -0
  28. package/dist/DropdownButton-vc4zpyrb.stx +23 -0
  29. package/dist/DropdownItem-z491y23c.stx +43 -0
  30. package/dist/DropdownItems-7ykf29sj.stx +18 -0
  31. package/dist/EmailInput-bfshpj92.stx +41 -0
  32. package/dist/Footer-xdaf02nr.stx +66 -0
  33. package/dist/Form-z4f7w6r1.stx +209 -0
  34. package/dist/Hero-9vvp7pxf.stx +25 -0
  35. package/dist/Image-ktk0451c.stx +197 -0
  36. package/dist/Installation-33bj4rm7.stx +39 -0
  37. package/dist/Listbox-xcejcmyc.stx +14 -0
  38. package/dist/ListboxButton-nx5kmw19.stx +17 -0
  39. package/dist/ListboxLabel-aky8a73n.stx +11 -0
  40. package/dist/ListboxOption-6h4hsdz5.stx +57 -0
  41. package/dist/ListboxOptions-2sacdtm5.stx +16 -0
  42. package/dist/Login-s2jkvd9y.stx +163 -0
  43. package/dist/Navigator-tqqdgdkw.stx +138 -0
  44. package/dist/Notification-sry8egea.stx +71 -0
  45. package/dist/NumberInput-zm93ddfw.stx +138 -0
  46. package/dist/Pagination-yza9v4qw.stx +183 -0
  47. package/dist/PasswordInput-4xnndp5y.stx +155 -0
  48. package/dist/PaymentMethods-jxba6kek.stx +113 -0
  49. package/dist/Popover-scbqatjq.stx +24 -0
  50. package/dist/PopoverButton-rbxhzj4k.stx +23 -0
  51. package/dist/PopoverPanel-9ng1rm6e.stx +23 -0
  52. package/dist/Portal-j111yvqp.stx +74 -0
  53. package/dist/Progress-gbmw3akr.stx +142 -0
  54. package/dist/Radio-1n9qamv1.stx +81 -0
  55. package/dist/RadioGroup-12dw2vhk.stx +13 -0
  56. package/dist/RadioGroupDescription-bjm3mdht.stx +11 -0
  57. package/dist/RadioGroupLabel-aky8a73n.stx +11 -0
  58. package/dist/RadioGroupOption-9pcxgwmd.stx +51 -0
  59. package/dist/SearchInput-g240e2nq.stx +63 -0
  60. package/dist/Select-p9f94b20.stx +89 -0
  61. package/dist/Sidebar-gwxw8q38.stx +288 -0
  62. package/dist/SidebarFooter-887kxret.stx +95 -0
  63. package/dist/SidebarHeader-qjeyx0hv.stx +100 -0
  64. package/dist/SidebarItem-4dpwtmb4.stx +118 -0
  65. package/dist/SidebarSection-kh92fk4m.stx +108 -0
  66. package/dist/Signup-3nxq5zag.stx +161 -0
  67. package/dist/Skeleton-g0nx1njm.stx +48 -0
  68. package/dist/Spinner-w4zj58xp.stx +109 -0
  69. package/dist/Stepper-rwc5actp.stx +17 -0
  70. package/dist/StepperStep-h0k657nm.stx +53 -0
  71. package/dist/SubscriptionCheckout-4cbxdg7w.stx +353 -0
  72. package/dist/Switch-kjq8qd2p.stx +74 -0
  73. package/dist/Table-59j9qwp0.stx +14 -0
  74. package/dist/TableBody-reka2gwv.stx +10 -0
  75. package/dist/TableCell-j7nh4sgr.stx +10 -0
  76. package/dist/TableHead-ecbrwpqm.stx +10 -0
  77. package/dist/TableHeader-jn2shwsv.stx +13 -0
  78. package/dist/TableRow-xz8rrxhc.stx +11 -0
  79. package/dist/Tabs-kb6ex6m7.stx +145 -0
  80. package/dist/Teleport-819cg9zm.stx +101 -0
  81. package/dist/TextInput-zx9kgr79.stx +146 -0
  82. package/dist/Textarea-5xvmrb0z.stx +119 -0
  83. package/dist/Tooltip-5ehqsy49.stx +76 -0
  84. package/dist/Transition-2j39s044.stx +174 -0
  85. package/dist/TwoFactorChallenge-2q4gg89m.stx +125 -0
  86. package/dist/Video-6aq4shh4.stx +45 -0
  87. package/dist/VirtualList-weh5qtm1.stx +83 -0
  88. package/dist/VirtualTable-59a1eskc.stx +113 -0
  89. package/dist/components/index.d.ts +4 -0
  90. package/dist/composables/index.d.ts +4 -0
  91. package/dist/composables/index.js +3 -0
  92. package/dist/composables/useCopyCode.d.ts +19 -0
  93. package/dist/composables/useDarkMode.d.ts +25 -0
  94. package/dist/composables/useSEO.d.ts +36 -0
  95. package/dist/composables/utilities/index.d.ts +5 -0
  96. package/dist/composables/utilities/useClickOutside.d.ts +28 -0
  97. package/dist/composables/utilities/useFocusTrap.d.ts +34 -0
  98. package/dist/composables/utilities/useKeyboard.d.ts +55 -0
  99. package/dist/composables/utilities/useLocalStorage.d.ts +33 -0
  100. package/dist/composables/utilities/useMediaQuery.d.ts +64 -0
  101. package/dist/index.d.ts +86 -0
  102. package/dist/index.js +19 -0
  103. package/dist/ui/accordion/index.d.ts +12 -0
  104. package/dist/ui/audio/index.d.ts +12 -0
  105. package/dist/ui/auth/index.d.ts +29 -0
  106. package/dist/ui/avatar/index.d.ts +11 -0
  107. package/dist/ui/badge/index.d.ts +9 -0
  108. package/dist/ui/breadcrumb/index.d.ts +13 -0
  109. package/dist/ui/button/index.d.ts +45 -0
  110. package/dist/ui/calendar/index.d.ts +13 -0
  111. package/dist/ui/card/index.d.ts +12 -0
  112. package/dist/ui/checkbox/index.d.ts +15 -0
  113. package/dist/ui/combobox/index.d.ts +35 -0
  114. package/dist/ui/command-palette/index.d.ts +13 -0
  115. package/dist/ui/dialog/index.d.ts +27 -0
  116. package/dist/ui/drawer/index.d.ts +8 -0
  117. package/dist/ui/dropdown/index.d.ts +25 -0
  118. package/dist/ui/form/index.d.ts +48 -0
  119. package/dist/ui/image/index.d.ts +21 -0
  120. package/dist/ui/input/index.d.ts +73 -0
  121. package/dist/ui/listbox/index.d.ts +34 -0
  122. package/dist/ui/navigator/index.d.ts +18 -0
  123. package/dist/ui/notification/index.d.ts +11 -0
  124. package/dist/ui/pagination/index.d.ts +10 -0
  125. package/dist/ui/payment/index.d.ts +53 -0
  126. package/dist/ui/popover/index.d.ts +19 -0
  127. package/dist/ui/portal/index.d.ts +5 -0
  128. package/dist/ui/progress/index.d.ts +11 -0
  129. package/dist/ui/radio/index.d.ts +14 -0
  130. package/dist/ui/radio-group/index.d.ts +26 -0
  131. package/dist/ui/select/index.d.ts +19 -0
  132. package/dist/ui/sidebar/index.d.ts +129 -0
  133. package/dist/ui/skeleton/index.d.ts +10 -0
  134. package/dist/ui/spinner/index.d.ts +8 -0
  135. package/dist/ui/stepper/index.d.ts +17 -0
  136. package/dist/ui/storage/index.d.ts +40 -0
  137. package/dist/ui/switch/index.d.ts +9 -0
  138. package/dist/ui/table/index.d.ts +29 -0
  139. package/dist/ui/tabs/index.d.ts +14 -0
  140. package/dist/ui/teleport/index.d.ts +6 -0
  141. package/dist/ui/textarea/index.d.ts +19 -0
  142. package/dist/ui/tooltip/index.d.ts +9 -0
  143. package/dist/ui/transition/index.d.ts +24 -0
  144. package/dist/ui/video/index.d.ts +15 -0
  145. package/dist/ui/virtual-list/index.d.ts +9 -0
  146. package/dist/ui/virtual-table/index.d.ts +19 -0
  147. package/dist/utils/accessibility.d.ts +285 -0
  148. package/dist/utils/animation/easing.d.ts +112 -0
  149. package/dist/utils/animation/helpers.d.ts +119 -0
  150. package/dist/utils/animation/index.d.ts +3 -0
  151. package/dist/utils/animation/keyframes.d.ts +334 -0
  152. package/dist/utils/error-handling.d.ts +182 -0
  153. package/dist/utils/highlighter.d.ts +27 -0
  154. package/dist/utils/highlighter.js +2 -0
  155. package/dist/utils/i18n.d.ts +245 -0
  156. package/dist/utils/keep-alive.d.ts +171 -0
  157. package/dist/utils/lazy-loading.d.ts +174 -0
  158. package/dist/utils/prop-validation.d.ts +106 -0
  159. package/dist/utils/theme.d.ts +234 -0
  160. package/package.json +69 -0
  161. package/src/components/CodeBlock.stx +57 -0
  162. package/src/components/Footer.stx +66 -0
  163. package/src/components/Hero.stx +25 -0
  164. package/src/components/Installation.stx +39 -0
  165. package/src/components/index.ts +4 -0
  166. package/src/composables/index.ts +4 -0
  167. package/src/composables/useCopyCode.ts +73 -0
  168. package/src/composables/useDarkMode.ts +100 -0
  169. package/src/composables/useSEO.ts +229 -0
  170. package/src/composables/utilities/index.ts +7 -0
  171. package/src/composables/utilities/useClickOutside.ts +72 -0
  172. package/src/composables/utilities/useFocusTrap.ts +159 -0
  173. package/src/composables/utilities/useKeyboard.ts +124 -0
  174. package/src/composables/utilities/useLocalStorage.ts +132 -0
  175. package/src/composables/utilities/useMediaQuery.ts +118 -0
  176. package/src/index.ts +99 -0
  177. package/src/stx.d.ts +4 -0
  178. package/src/ui/accordion/Accordion.stx +108 -0
  179. package/src/ui/accordion/index.ts +14 -0
  180. package/src/ui/audio/Audio.stx +50 -0
  181. package/src/ui/audio/README.md +42 -0
  182. package/src/ui/audio/index.ts +13 -0
  183. package/src/ui/auth/Login.stx +163 -0
  184. package/src/ui/auth/README.md +145 -0
  185. package/src/ui/auth/Signup.stx +161 -0
  186. package/src/ui/auth/TwoFactorChallenge.stx +125 -0
  187. package/src/ui/auth/index.ts +32 -0
  188. package/src/ui/avatar/Avatar.stx +88 -0
  189. package/src/ui/avatar/index.ts +12 -0
  190. package/src/ui/badge/Badge.stx +70 -0
  191. package/src/ui/badge/index.ts +10 -0
  192. package/src/ui/breadcrumb/Breadcrumb.stx +79 -0
  193. package/src/ui/breadcrumb/index.ts +15 -0
  194. package/src/ui/button/Button.stx +89 -0
  195. package/src/ui/button/README.md +100 -0
  196. package/src/ui/button/index.ts +85 -0
  197. package/src/ui/calendar/Calendar.stx +232 -0
  198. package/src/ui/calendar/README.md +254 -0
  199. package/src/ui/calendar/index.ts +14 -0
  200. package/src/ui/card/Card.stx +74 -0
  201. package/src/ui/card/index.ts +13 -0
  202. package/src/ui/checkbox/Checkbox.stx +92 -0
  203. package/src/ui/checkbox/index.ts +16 -0
  204. package/src/ui/combobox/Combobox.stx +13 -0
  205. package/src/ui/combobox/ComboboxButton.stx +13 -0
  206. package/src/ui/combobox/ComboboxInput.stx +25 -0
  207. package/src/ui/combobox/ComboboxOption.stx +52 -0
  208. package/src/ui/combobox/ComboboxOptions.stx +12 -0
  209. package/src/ui/combobox/README.md +154 -0
  210. package/src/ui/combobox/index.ts +40 -0
  211. package/src/ui/command-palette/CommandPalette.stx +39 -0
  212. package/src/ui/command-palette/CommandPaletteItem.stx +32 -0
  213. package/src/ui/command-palette/README.md +42 -0
  214. package/src/ui/command-palette/index.ts +15 -0
  215. package/src/ui/dialog/Dialog.stx +19 -0
  216. package/src/ui/dialog/DialogBackdrop.stx +9 -0
  217. package/src/ui/dialog/DialogDescription.stx +11 -0
  218. package/src/ui/dialog/DialogPanel.stx +16 -0
  219. package/src/ui/dialog/DialogTitle.stx +11 -0
  220. package/src/ui/dialog/README.md +133 -0
  221. package/src/ui/dialog/index.ts +32 -0
  222. package/src/ui/drawer/Drawer.stx +137 -0
  223. package/src/ui/drawer/README.md +110 -0
  224. package/src/ui/drawer/index.ts +9 -0
  225. package/src/ui/dropdown/Dropdown.stx +24 -0
  226. package/src/ui/dropdown/DropdownButton.stx +23 -0
  227. package/src/ui/dropdown/DropdownItem.stx +43 -0
  228. package/src/ui/dropdown/DropdownItems.stx +18 -0
  229. package/src/ui/dropdown/README.md +142 -0
  230. package/src/ui/dropdown/index.ts +29 -0
  231. package/src/ui/form/Form.stx +209 -0
  232. package/src/ui/form/index.ts +67 -0
  233. package/src/ui/heatmap/Heatmap.stx +315 -0
  234. package/src/ui/image/Image.stx +197 -0
  235. package/src/ui/image/README.md +171 -0
  236. package/src/ui/image/index.ts +22 -0
  237. package/src/ui/input/EmailInput.stx +41 -0
  238. package/src/ui/input/NumberInput.stx +138 -0
  239. package/src/ui/input/PasswordInput.stx +155 -0
  240. package/src/ui/input/SearchInput.stx +63 -0
  241. package/src/ui/input/TextInput.stx +146 -0
  242. package/src/ui/input/index.ts +180 -0
  243. package/src/ui/listbox/Listbox.stx +14 -0
  244. package/src/ui/listbox/ListboxButton.stx +17 -0
  245. package/src/ui/listbox/ListboxLabel.stx +11 -0
  246. package/src/ui/listbox/ListboxOption.stx +57 -0
  247. package/src/ui/listbox/ListboxOptions.stx +16 -0
  248. package/src/ui/listbox/README.md +143 -0
  249. package/src/ui/listbox/index.ts +39 -0
  250. package/src/ui/navigator/Navigator.stx +138 -0
  251. package/src/ui/navigator/README.md +352 -0
  252. package/src/ui/navigator/index.ts +20 -0
  253. package/src/ui/notification/Notification.stx +71 -0
  254. package/src/ui/notification/README.md +118 -0
  255. package/src/ui/notification/index.ts +12 -0
  256. package/src/ui/pagination/Pagination.stx +183 -0
  257. package/src/ui/pagination/index.ts +11 -0
  258. package/src/ui/payment/Checkout.stx +39 -0
  259. package/src/ui/payment/DefaultPaymentMethod.stx +62 -0
  260. package/src/ui/payment/PaymentMethods.stx +113 -0
  261. package/src/ui/payment/README.md +427 -0
  262. package/src/ui/payment/SubscriptionCheckout.stx +353 -0
  263. package/src/ui/payment/index.ts +59 -0
  264. package/src/ui/popover/Popover.stx +24 -0
  265. package/src/ui/popover/PopoverButton.stx +23 -0
  266. package/src/ui/popover/PopoverPanel.stx +23 -0
  267. package/src/ui/popover/README.md +95 -0
  268. package/src/ui/popover/index.ts +22 -0
  269. package/src/ui/portal/Portal.stx +74 -0
  270. package/src/ui/portal/index.ts +6 -0
  271. package/src/ui/progress/Progress.stx +142 -0
  272. package/src/ui/progress/index.ts +12 -0
  273. package/src/ui/radio/Radio.stx +81 -0
  274. package/src/ui/radio/index.ts +15 -0
  275. package/src/ui/radio-group/README.md +145 -0
  276. package/src/ui/radio-group/RadioGroup.stx +13 -0
  277. package/src/ui/radio-group/RadioGroupDescription.stx +11 -0
  278. package/src/ui/radio-group/RadioGroupLabel.stx +11 -0
  279. package/src/ui/radio-group/RadioGroupOption.stx +51 -0
  280. package/src/ui/radio-group/index.ts +30 -0
  281. package/src/ui/select/README.md +204 -0
  282. package/src/ui/select/Select.stx +89 -0
  283. package/src/ui/select/index.ts +21 -0
  284. package/src/ui/sidebar/Sidebar.stx +288 -0
  285. package/src/ui/sidebar/SidebarFooter.stx +95 -0
  286. package/src/ui/sidebar/SidebarHeader.stx +100 -0
  287. package/src/ui/sidebar/SidebarItem.stx +118 -0
  288. package/src/ui/sidebar/SidebarSection.stx +108 -0
  289. package/src/ui/sidebar/index.ts +175 -0
  290. package/src/ui/skeleton/Skeleton.stx +48 -0
  291. package/src/ui/skeleton/index.ts +11 -0
  292. package/src/ui/spinner/Spinner.stx +109 -0
  293. package/src/ui/spinner/index.ts +9 -0
  294. package/src/ui/stepper/README.md +36 -0
  295. package/src/ui/stepper/Stepper.stx +17 -0
  296. package/src/ui/stepper/StepperStep.stx +53 -0
  297. package/src/ui/stepper/index.ts +19 -0
  298. package/src/ui/storage/README.md +193 -0
  299. package/src/ui/storage/index.ts +347 -0
  300. package/src/ui/switch/README.md +133 -0
  301. package/src/ui/switch/Switch.stx +74 -0
  302. package/src/ui/switch/index.ts +10 -0
  303. package/src/ui/table/README.md +39 -0
  304. package/src/ui/table/Table.stx +14 -0
  305. package/src/ui/table/TableBody.stx +10 -0
  306. package/src/ui/table/TableCell.stx +10 -0
  307. package/src/ui/table/TableHead.stx +10 -0
  308. package/src/ui/table/TableHeader.stx +13 -0
  309. package/src/ui/table/TableRow.stx +11 -0
  310. package/src/ui/table/index.ts +35 -0
  311. package/src/ui/tabs/Tabs.stx +145 -0
  312. package/src/ui/tabs/index.ts +16 -0
  313. package/src/ui/teleport/Teleport.stx +101 -0
  314. package/src/ui/teleport/index.ts +7 -0
  315. package/src/ui/textarea/Textarea.stx +119 -0
  316. package/src/ui/textarea/index.ts +20 -0
  317. package/src/ui/tooltip/Tooltip.stx +76 -0
  318. package/src/ui/tooltip/index.ts +10 -0
  319. package/src/ui/transition/README.md +30 -0
  320. package/src/ui/transition/Transition.stx +174 -0
  321. package/src/ui/transition/index.ts +25 -0
  322. package/src/ui/video/README.md +48 -0
  323. package/src/ui/video/Video.stx +45 -0
  324. package/src/ui/video/index.ts +16 -0
  325. package/src/ui/virtual-list/VirtualList.stx +83 -0
  326. package/src/ui/virtual-list/index.ts +10 -0
  327. package/src/ui/virtual-table/VirtualTable.stx +113 -0
  328. package/src/ui/virtual-table/index.ts +21 -0
  329. package/src/utils/PROP_VALIDATION.md +458 -0
  330. package/src/utils/THEME_SYSTEM.md +702 -0
  331. package/src/utils/accessibility.ts +841 -0
  332. package/src/utils/animation/easing.ts +368 -0
  333. package/src/utils/animation/helpers.ts +223 -0
  334. package/src/utils/animation/index.ts +5 -0
  335. package/src/utils/animation/keyframes.ts +230 -0
  336. package/src/utils/error-handling.ts +473 -0
  337. package/src/utils/highlighter.ts +93 -0
  338. package/src/utils/i18n.ts +634 -0
  339. package/src/utils/keep-alive.ts +818 -0
  340. package/src/utils/lazy-loading.ts +530 -0
  341. package/src/utils/prop-validation.ts +478 -0
  342. package/src/utils/theme.ts +626 -0
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Create a keyframe animation using Web Animations API
3
+ *
4
+ * @param element - Target HTML element
5
+ * @param keyframes - Array of keyframe definitions
6
+ * @param options - Animation options
7
+ * @returns Animation instance or null if not supported
8
+ */
9
+ export declare function createKeyframeAnimation(element: HTMLElement, keyframes: readonly Keyframe[] | Keyframe[], options?: AnimationOptions): Animation | null;
10
+ /**
11
+ * Animate an element with a predefined animation
12
+ *
13
+ * @param element - Target HTML element
14
+ * @param animationName - Name of predefined animation
15
+ * @param options - Animation options
16
+ * @returns Animation instance or null if not supported
17
+ */
18
+ export declare function animate(element: HTMLElement, animationName: KeyframeAnimationName, options?: AnimationOptions): Animation | null;
19
+ /**
20
+ * Predefined keyframe animation presets
21
+ *
22
+ * Available animations:
23
+ * - fadeIn/fadeOut
24
+ * - slideInUp/Down/Left/Right, slideOutUp/Down/Left/Right
25
+ * - zoomIn/Out
26
+ * - rotate, bounce, pulse, shake, swing
27
+ * - flip, rubberBand, heartbeat
28
+ */
29
+ export declare const KeyframeAnimations: {
30
+ fadeIn: readonly [{
31
+ offset: 0;
32
+ opacity: 0
33
+ }, {
34
+ offset: 1;
35
+ opacity: 1
36
+ }];
37
+ fadeOut: readonly [{
38
+ offset: 0;
39
+ opacity: 1
40
+ }, {
41
+ offset: 1;
42
+ opacity: 0
43
+ }];
44
+ slideInUp: readonly [{
45
+ offset: 0;
46
+ transform: 'translateY(100%)';
47
+ opacity: 0
48
+ }, {
49
+ offset: 1;
50
+ transform: 'translateY(0)';
51
+ opacity: 1
52
+ }];
53
+ slideInDown: readonly [{
54
+ offset: 0;
55
+ transform: 'translateY(-100%)';
56
+ opacity: 0
57
+ }, {
58
+ offset: 1;
59
+ transform: 'translateY(0)';
60
+ opacity: 1
61
+ }];
62
+ slideInLeft: readonly [{
63
+ offset: 0;
64
+ transform: 'translateX(-100%)';
65
+ opacity: 0
66
+ }, {
67
+ offset: 1;
68
+ transform: 'translateX(0)';
69
+ opacity: 1
70
+ }];
71
+ slideInRight: readonly [{
72
+ offset: 0;
73
+ transform: 'translateX(100%)';
74
+ opacity: 0
75
+ }, {
76
+ offset: 1;
77
+ transform: 'translateX(0)';
78
+ opacity: 1
79
+ }];
80
+ slideOutUp: readonly [{
81
+ offset: 0;
82
+ transform: 'translateY(0)';
83
+ opacity: 1
84
+ }, {
85
+ offset: 1;
86
+ transform: 'translateY(-100%)';
87
+ opacity: 0
88
+ }];
89
+ slideOutDown: readonly [{
90
+ offset: 0;
91
+ transform: 'translateY(0)';
92
+ opacity: 1
93
+ }, {
94
+ offset: 1;
95
+ transform: 'translateY(100%)';
96
+ opacity: 0
97
+ }];
98
+ slideOutLeft: readonly [{
99
+ offset: 0;
100
+ transform: 'translateX(0)';
101
+ opacity: 1
102
+ }, {
103
+ offset: 1;
104
+ transform: 'translateX(-100%)';
105
+ opacity: 0
106
+ }];
107
+ slideOutRight: readonly [{
108
+ offset: 0;
109
+ transform: 'translateX(0)';
110
+ opacity: 1
111
+ }, {
112
+ offset: 1;
113
+ transform: 'translateX(100%)';
114
+ opacity: 0
115
+ }];
116
+ zoomIn: readonly [{
117
+ offset: 0;
118
+ transform: 'scale(0)';
119
+ opacity: 0
120
+ }, {
121
+ offset: 0.5;
122
+ opacity: 1
123
+ }, {
124
+ offset: 1;
125
+ transform: 'scale(1)'
126
+ }];
127
+ zoomOut: readonly [{
128
+ offset: 0;
129
+ transform: 'scale(1)';
130
+ opacity: 1
131
+ }, {
132
+ offset: 0.5;
133
+ opacity: 1
134
+ }, {
135
+ offset: 1;
136
+ transform: 'scale(0)';
137
+ opacity: 0
138
+ }];
139
+ rotate: readonly [{
140
+ offset: 0;
141
+ transform: 'rotate(0deg)'
142
+ }, {
143
+ offset: 1;
144
+ transform: 'rotate(360deg)'
145
+ }];
146
+ bounce: readonly [{
147
+ offset: 0;
148
+ transform: 'translateY(0)'
149
+ }, {
150
+ offset: 0.2;
151
+ transform: 'translateY(0)'
152
+ }, {
153
+ offset: 0.4;
154
+ transform: 'translateY(-30px)'
155
+ }, {
156
+ offset: 0.43;
157
+ transform: 'translateY(-30px)'
158
+ }, {
159
+ offset: 0.53;
160
+ transform: 'translateY(0)'
161
+ }, {
162
+ offset: 0.7;
163
+ transform: 'translateY(-15px)'
164
+ }, {
165
+ offset: 0.8;
166
+ transform: 'translateY(0)'
167
+ }, {
168
+ offset: 0.9;
169
+ transform: 'translateY(-4px)'
170
+ }, {
171
+ offset: 1;
172
+ transform: 'translateY(0)'
173
+ }];
174
+ pulse: readonly [{
175
+ offset: 0;
176
+ transform: 'scale(1)'
177
+ }, {
178
+ offset: 0.5;
179
+ transform: 'scale(1.05)'
180
+ }, {
181
+ offset: 1;
182
+ transform: 'scale(1)'
183
+ }];
184
+ shake: readonly [{
185
+ offset: 0;
186
+ transform: 'translateX(0)'
187
+ }, {
188
+ offset: 0.1;
189
+ transform: 'translateX(-10px)'
190
+ }, {
191
+ offset: 0.2;
192
+ transform: 'translateX(10px)'
193
+ }, {
194
+ offset: 0.3;
195
+ transform: 'translateX(-10px)'
196
+ }, {
197
+ offset: 0.4;
198
+ transform: 'translateX(10px)'
199
+ }, {
200
+ offset: 0.5;
201
+ transform: 'translateX(-10px)'
202
+ }, {
203
+ offset: 0.6;
204
+ transform: 'translateX(10px)'
205
+ }, {
206
+ offset: 0.7;
207
+ transform: 'translateX(-10px)'
208
+ }, {
209
+ offset: 0.8;
210
+ transform: 'translateX(10px)'
211
+ }, {
212
+ offset: 0.9;
213
+ transform: 'translateX(-10px)'
214
+ }, {
215
+ offset: 1;
216
+ transform: 'translateX(0)'
217
+ }];
218
+ swing: readonly [{
219
+ offset: 0;
220
+ transform: 'rotate(0deg)'
221
+ }, {
222
+ offset: 0.2;
223
+ transform: 'rotate(15deg)'
224
+ }, {
225
+ offset: 0.4;
226
+ transform: 'rotate(-10deg)'
227
+ }, {
228
+ offset: 0.6;
229
+ transform: 'rotate(5deg)'
230
+ }, {
231
+ offset: 0.8;
232
+ transform: 'rotate(-5deg)'
233
+ }, {
234
+ offset: 1;
235
+ transform: 'rotate(0deg)'
236
+ }];
237
+ flip: readonly [{
238
+ offset: 0;
239
+ transform: 'perspective(400px) rotateY(0)';
240
+ animationTimingFunction: 'ease-out'
241
+ }, {
242
+ offset: 0.4;
243
+ transform: 'perspective(400px) translateZ(150px) rotateY(170deg)';
244
+ animationTimingFunction: 'ease-out'
245
+ }, {
246
+ offset: 0.5;
247
+ transform: 'perspective(400px) translateZ(150px) rotateY(190deg)';
248
+ animationTimingFunction: 'ease-in'
249
+ }, {
250
+ offset: 0.8;
251
+ transform: 'perspective(400px) rotateY(360deg)';
252
+ animationTimingFunction: 'ease-in'
253
+ }, {
254
+ offset: 1;
255
+ transform: 'perspective(400px)';
256
+ animationTimingFunction: 'ease-in'
257
+ }];
258
+ rubberBand: readonly [{
259
+ offset: 0;
260
+ transform: 'scale(1)'
261
+ }, {
262
+ offset: 0.3;
263
+ transform: 'scaleX(1.25) scaleY(0.75)'
264
+ }, {
265
+ offset: 0.4;
266
+ transform: 'scaleX(0.75) scaleY(1.25)'
267
+ }, {
268
+ offset: 0.5;
269
+ transform: 'scaleX(1.15) scaleY(0.85)'
270
+ }, {
271
+ offset: 0.65;
272
+ transform: 'scaleX(0.95) scaleY(1.05)'
273
+ }, {
274
+ offset: 0.75;
275
+ transform: 'scaleX(1.05) scaleY(0.95)'
276
+ }, {
277
+ offset: 1;
278
+ transform: 'scale(1)'
279
+ }];
280
+ heartbeat: readonly [{
281
+ offset: 0;
282
+ transform: 'scale(1)'
283
+ }, {
284
+ offset: 0.14;
285
+ transform: 'scale(1.3)'
286
+ }, {
287
+ offset: 0.28;
288
+ transform: 'scale(1)'
289
+ }, {
290
+ offset: 0.42;
291
+ transform: 'scale(1.3)'
292
+ }, {
293
+ offset: 0.7;
294
+ transform: 'scale(1)'
295
+ }]
296
+ };
297
+ /**
298
+ * Keyframe animation utilities using Web Animations API
299
+ *
300
+ * @example
301
+ * ```ts
302
+ * import { animate, KeyframeAnimations } from '@stacksjs/components'
303
+ *
304
+ * // Use predefined animation
305
+ * animate(element, 'fadeIn', { duration: 500 })
306
+ *
307
+ * // Custom keyframes
308
+ * createKeyframeAnimation(element, [
309
+ * { offset: 0, opacity: 0, transform: 'scale(0.5)' },
310
+ * { offset: 1, opacity: 1, transform: 'scale(1)' }
311
+ * ], { duration: 300 })
312
+ * ```
313
+ */
314
+ /**
315
+ * Single keyframe definition
316
+ */
317
+ export declare interface Keyframe {
318
+ offset: number
319
+ }
320
+ /**
321
+ * Animation configuration options
322
+ */
323
+ export declare interface AnimationOptions {
324
+ duration?: number
325
+ easing?: string
326
+ delay?: number
327
+ iterations?: number
328
+ direction?: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse'
329
+ fill?: 'none' | 'forwards' | 'backwards' | 'both'
330
+ }
331
+ /**
332
+ * Type for predefined animation names
333
+ */
334
+ export type KeyframeAnimationName = keyof typeof KeyframeAnimations
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Set global error handler
3
+ *
4
+ * @param handler - Error handler function
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * setErrorHandler((error) => {
9
+ * console.error('Component error:', error)
10
+ * // Send to error tracking service
11
+ * })
12
+ * ```
13
+ */
14
+ export declare function setErrorHandler(handler: (error: Error) => void): void;
15
+ /**
16
+ * Clear the global error handler (useful for testing)
17
+ */
18
+ export declare function clearErrorHandler(): void;
19
+ /**
20
+ * Handle an error
21
+ *
22
+ * @param error - Error to handle
23
+ * @param options - Handling options
24
+ * @param options.throwError - Whether to re-throw the error after handling
25
+ * @param options.logError - Whether to log the error to console
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * try {
30
+ * // Component code
31
+ * } catch (error) {
32
+ * handleError(error, { throwError: false })
33
+ * }
34
+ * ```
35
+ */
36
+ export declare function handleError(error: Error, options?: {
37
+ /** Whether to re-throw the error after handling */
38
+ throwError?: boolean
39
+ /** Whether to log the error to console */
40
+ logError?: boolean
41
+ }): void;
42
+ /**
43
+ * Create a wrapped function that catches and handles errors
44
+ *
45
+ * @param fn - Function to wrap
46
+ * @param component - Component name for error context
47
+ * @param eventName - Event name for error context
48
+ * @returns Wrapped function
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const safeHandler = wrapErrorHandler(
53
+ * () => { /* ... * / },
54
+ * 'Button',
55
+ * 'onClick'
56
+ * )
57
+ * ```
58
+ */
59
+ /* ... * / },
60
+ * 'Button',
61
+ * 'onClick'
62
+ * )
63
+ * ```
64
+ */
65
+ export declare function wrapErrorHandler<T extends (...args: any[]) => any>(fn: T, component: string, eventName: string): T;
66
+ /**
67
+ * Assert a condition with a custom error
68
+ *
69
+ * @param condition - Condition to check
70
+ * @param error - Error to throw if condition is false
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * assert(
75
+ * props.variant !== undefined,
76
+ * ErrorTypes.requiredProp('Button', 'variant')
77
+ * )
78
+ * ```
79
+ */
80
+ export declare function assert(condition: any, error: Error): asserts condition;
81
+ /**
82
+ * Warning message handler
83
+ */
84
+ export declare function warn(component: string, message: string, context?: Partial<ErrorContext>): void;
85
+ /**
86
+ * Development-only assertion
87
+ */
88
+ export declare function devAssert(condition: any, error: Error): asserts condition;
89
+ /**
90
+ * Create a debug logger for a component
91
+ *
92
+ * @param component - Component name
93
+ * @returns Debug logger functions
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * const debug = createDebugger('Button')
98
+ * debug.log('Button rendered')
99
+ * debug.error('Invalid prop')
100
+ * ```
101
+ */
102
+ export declare function createDebugger(component: string): {
103
+ log: (...args: any[]) => void
104
+ warn: (message: string, context?: Partial<ErrorContext>) => void
105
+ error: (message: string, context?: ErrorContext) => void
106
+ };
107
+ /**
108
+ * Error boundary helper for catching render errors
109
+ *
110
+ * @param component - Component name
111
+ * @param renderFn - Render function
112
+ * @param fallback - Fallback content on error
113
+ * @returns Rendered content or fallback
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * const content = errorBoundary(
118
+ * 'MyComponent',
119
+ * () => renderComponent(),
120
+ * '<div>Error loading component</div>'
121
+ * )
122
+ * ```
123
+ */
124
+ export declare function errorBoundary<T>(component: string, renderFn: () => T, fallback: T): T;
125
+ /**
126
+ * Error types for common scenarios
127
+ */
128
+ export declare const ErrorTypes: {
129
+ /**
130
+ * Invalid prop value error
131
+ */
132
+ invalidProp(component: string, prop: string, received: any, expected: any): unknown;
133
+ /**
134
+ * Required prop missing error
135
+ */
136
+ requiredProp(component: string, prop: string): unknown;
137
+ /**
138
+ * Invalid prop type error
139
+ */
140
+ invalidType(component: string, prop: string, received: any, expected: string): unknown;
141
+ /**
142
+ * Component not found error
143
+ */
144
+ componentNotFound(componentName: string): unknown;
145
+ /**
146
+ * Invalid children error
147
+ */
148
+ invalidChildren(component: string, received: any, expected: string): unknown;
149
+ /**
150
+ * State update error
151
+ */
152
+ stateUpdate(component: string, stateName: string, error: Error): unknown;
153
+ /**
154
+ * Event handler error
155
+ */
156
+ eventHandler(component: string, eventName: string, error: Error): unknown;
157
+ /**
158
+ * Render error
159
+ */
160
+ render(component: string, error: Error): unknown
161
+ };
162
+ /**
163
+ * Error context information
164
+ */
165
+ export declare interface ErrorContext {
166
+ component?: string
167
+ prop?: string
168
+ received?: any
169
+ expected?: any
170
+ details?: string
171
+ docsUrl?: string
172
+ }
173
+ /**
174
+ * Custom error class for component errors
175
+ */
176
+ export declare class ComponentError extends Error {
177
+ component: string;
178
+ context: ErrorContext;
179
+ constructor(component: string, message: string, context?: ErrorContext);
180
+ static formatMessage(component: string, message: string, context: ErrorContext): string;
181
+ toJSON(): { name: string, message: string, component: string, context: ErrorContext | undefined, stack: string | undefined };
182
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Initialize or get the syntax highlighter instance
3
+ */
4
+ export declare function getHighlighter(): Promise<TSHighlighter>;
5
+ /**
6
+ * Highlight code with syntax highlighting
7
+ */
8
+ export declare function highlight(code: string, options?: HighlighterOptions): Promise<HighlightResult>;
9
+ /**
10
+ * Detect language from code content
11
+ */
12
+ export declare function detectLanguage(code: string): string;
13
+ /**
14
+ * Apply headwind utility classes to highlighted code
15
+ */
16
+ export declare function applyHeadwindClasses(html: string, additionalClasses?: string): string;
17
+ export declare interface HighlighterOptions {
18
+ theme?: 'light' | 'dark' | 'auto'
19
+ language?: string
20
+ lineNumbers?: boolean
21
+ wrapLines?: boolean
22
+ }
23
+ export declare interface HighlightResult {
24
+ html: string
25
+ language: string
26
+ theme: string
27
+ }
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{createHighlighter as E}from"ts-syntax-highlighter";var A=null;async function F(){if(!A)A=await E({theme:"github-light"});return A}async function N(b,j={}){let{theme:k="auto",language:q="typescript",lineNumbers:G=!1,wrapLines:J=!0}=j,B=await F(),D=k==="auto"?globalThis.matchMedia?.("(prefers-color-scheme: dark)").matches?"github-dark":"github-light":k==="dark"?"github-dark":"github-light",z=await B.highlight(b,q);return{html:typeof z==="string"?z:String(z),language:q,theme:D}}function O(b){if(b.includes("<!DOCTYPE")||b.includes("<html"))return"html";if(b.includes("<?php"))return"php";if(b.includes("import")&&b.includes("from"))return"typescript";if(b.includes("function")||b.includes("const"))return"javascript";if(b.includes("{")&&b.includes("}"))return"json";if(b.includes("$")&&b.includes("|"))return"bash";if(b.includes("#")&&b.includes("##"))return"markdown";return"typescript"}function P(b,j){return`<div class="${j?`rounded-md overflow-auto text-sm leading-relaxed font-mono ${j}`:"rounded-md overflow-auto text-sm leading-relaxed font-mono"}">${b}</div>`}export{N as highlight,F as getHighlighter,O as detectLanguage,P as applyHeadwindClasses};