tera-system-ui 0.1.64 → 0.1.67

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 (361) hide show
  1. package/dist/COMPONENT_API.md +2 -539
  2. package/dist/components/accordion/Accordion.d.ts +24 -0
  3. package/dist/components/accordion/Accordion.js +4 -0
  4. package/dist/components/accordion/components/Accordion.svelte +2 -8
  5. package/dist/components/accordion/components/AccordionContent.svelte +5 -12
  6. package/dist/components/accordion/components/AccordionItem.svelte +3 -9
  7. package/dist/components/accordion/components/AccordionTrigger.svelte +5 -15
  8. package/dist/components/ai/ChatBubble.svelte +35 -0
  9. package/dist/components/ai/ChatBubble.svelte.d.ts +12 -0
  10. package/dist/components/ai/PromptInput.svelte +58 -0
  11. package/dist/components/ai/PromptInput.svelte.d.ts +13 -0
  12. package/dist/components/ai/StreamText.svelte +41 -0
  13. package/dist/components/ai/StreamText.svelte.d.ts +11 -0
  14. package/dist/components/ai/SuggestionChips.svelte +34 -0
  15. package/dist/components/ai/SuggestionChips.svelte.d.ts +10 -0
  16. package/dist/components/ai/ThinkingLoader.svelte +34 -0
  17. package/dist/components/ai/ThinkingLoader.svelte.d.ts +11 -0
  18. package/dist/components/ai/index.d.ts +5 -0
  19. package/dist/components/ai/index.js +5 -0
  20. package/dist/components/alert/Alert.svelte +47 -0
  21. package/dist/components/alert/Alert.svelte.d.ts +15 -0
  22. package/dist/components/alert/index.d.ts +1 -0
  23. package/dist/components/alert/index.js +1 -0
  24. package/dist/components/avatar/Avatar.svelte +9 -25
  25. package/dist/components/badge/Badge.d.ts +52 -0
  26. package/dist/components/badge/Badge.js +22 -0
  27. package/dist/components/badge/Badge.svelte +22 -0
  28. package/dist/components/badge/Badge.svelte.d.ts +4 -0
  29. package/dist/components/badge/index.d.ts +2 -0
  30. package/dist/components/badge/index.js +1 -0
  31. package/dist/components/brand-logo/BrandLogo.svelte +12 -10
  32. package/dist/components/button/Button.d.ts +2 -2
  33. package/dist/components/button/Button.js +12 -12
  34. package/dist/components/button/Button.svelte +7 -34
  35. package/dist/components/card/Card.d.ts +68 -0
  36. package/dist/components/card/Card.js +28 -0
  37. package/dist/components/card/Card.svelte +33 -0
  38. package/dist/components/card/Card.svelte.d.ts +4 -0
  39. package/dist/components/card/index.d.ts +2 -0
  40. package/dist/components/card/index.js +1 -0
  41. package/dist/components/checkbox/Checkbox.d.ts +25 -4
  42. package/dist/components/checkbox/Checkbox.js +4 -0
  43. package/dist/components/checkbox/Checkbox.svelte +13 -16
  44. package/dist/components/checkbox/Checkbox.svelte.d.ts +2 -2
  45. package/dist/components/combobox/Combobox.d.ts +45 -9
  46. package/dist/components/combobox/Combobox.js +5 -7
  47. package/dist/components/combobox/Combobox.svelte +226 -8
  48. package/dist/components/combobox/Combobox.svelte.d.ts +2 -2
  49. package/dist/components/combobox/index.d.ts +1 -1
  50. package/dist/components/command/components/command-empty.svelte +3 -8
  51. package/dist/components/command/components/command-group.svelte +3 -13
  52. package/dist/components/command/components/command-input.svelte +5 -13
  53. package/dist/components/command/components/command-item.svelte +3 -9
  54. package/dist/components/command/components/command-link-item.svelte +3 -8
  55. package/dist/components/command/components/command-list.svelte +3 -8
  56. package/dist/components/command/components/command-separator.svelte +3 -8
  57. package/dist/components/command/components/command-shortcut.svelte +2 -10
  58. package/dist/components/command/components/command.svelte +29 -42
  59. package/dist/components/date-range-picker/DateRangePicker.svelte +490 -0
  60. package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +4 -0
  61. package/dist/components/date-range-picker/DateRangePicker.types.d.ts +38 -0
  62. package/dist/components/date-range-picker/DateRangePicker.types.js +1 -0
  63. package/dist/components/date-range-picker/index.d.ts +2 -0
  64. package/dist/components/date-range-picker/index.js +1 -0
  65. package/dist/components/dialog/Dialog.d.ts +43 -121
  66. package/dist/components/dialog/Dialog.js +1 -39
  67. package/dist/components/dialog/Dialog.svelte +103 -113
  68. package/dist/components/dialog/Dialog.svelte.d.ts +1 -2
  69. package/dist/components/dialog/dialog.scss +21 -24
  70. package/dist/components/drawer/Drawer.svelte +63 -0
  71. package/dist/components/drawer/Drawer.svelte.d.ts +16 -0
  72. package/dist/components/drawer/index.d.ts +1 -0
  73. package/dist/components/drawer/index.js +1 -0
  74. package/dist/components/dropdown-menu/DropdownMenu.d.ts +51 -24
  75. package/dist/components/dropdown-menu/DropdownMenu.js +1 -15
  76. package/dist/components/dropdown-menu/components/DropdownMenu.svelte +36 -34
  77. package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
  78. package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +8 -12
  79. package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +2 -4
  80. package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +11 -12
  81. package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +2 -4
  82. package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +27 -30
  83. package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
  84. package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +9 -11
  85. package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +2 -4
  86. package/dist/components/fonts/TeraFontMono.svelte +4 -4
  87. package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -0
  88. package/dist/components/fonts/TeraFontSansSerif.svelte +4 -4
  89. package/dist/components/fonts/TeraFontSansSerif.svelte.d.ts +1 -1
  90. package/dist/components/header/Header.svelte +6 -9
  91. package/dist/components/header/header.scss +1 -1
  92. package/dist/components/icons/IconArrowBigRightFilled.svelte +3 -7
  93. package/dist/components/icons/IconBook.svelte +3 -6
  94. package/dist/components/icons/IconBookmarkPlus.svelte +3 -6
  95. package/dist/components/icons/IconCalculator.svelte +3 -6
  96. package/dist/components/icons/IconCheck.svelte +3 -6
  97. package/dist/components/icons/IconChevronDown.svelte +3 -6
  98. package/dist/components/icons/IconCoin.svelte +3 -6
  99. package/dist/components/icons/IconCoinConvert.svelte +2 -5
  100. package/dist/components/icons/IconCopy.svelte +3 -6
  101. package/dist/components/icons/IconCopyCheckFilled.svelte +3 -6
  102. package/dist/components/icons/IconHamburger.svelte +3 -6
  103. package/dist/components/icons/IconLanguage.svelte +3 -6
  104. package/dist/components/icons/IconLoader2.svelte +3 -6
  105. package/dist/components/icons/IconLogout.svelte +3 -6
  106. package/dist/components/icons/IconMoon.svelte +3 -6
  107. package/dist/components/icons/IconPointFilled.svelte +3 -6
  108. package/dist/components/icons/IconSearch.svelte +3 -6
  109. package/dist/components/icons/IconSettings.svelte +3 -6
  110. package/dist/components/icons/IconSun.svelte +3 -6
  111. package/dist/components/icons/IconSwitchHorizontal.svelte +3 -6
  112. package/dist/components/icons/IconSwitchVertical.svelte +3 -6
  113. package/dist/components/icons/IconTransform.svelte +3 -6
  114. package/dist/components/icons/IconX.svelte +3 -6
  115. package/dist/components/input/Input.d.ts +2 -2
  116. package/dist/components/input/Input.js +10 -10
  117. package/dist/components/input/Input.svelte +10 -26
  118. package/dist/components/label/Label.d.ts +2 -2
  119. package/dist/components/label/Label.js +2 -2
  120. package/dist/components/label/Label.svelte +4 -12
  121. package/dist/components/language-picker-button/LanguagePickerButton.svelte +23 -42
  122. package/dist/components/light-dark-toggle/LightDarkToggle.svelte +21 -26
  123. package/dist/components/marketing/FeatureCard.svelte +37 -0
  124. package/dist/components/marketing/FeatureCard.svelte.d.ts +13 -0
  125. package/dist/components/marketing/PricingCard.svelte +48 -0
  126. package/dist/components/marketing/PricingCard.svelte.d.ts +15 -0
  127. package/dist/components/marketing/StatBlock.svelte +14 -0
  128. package/dist/components/marketing/StatBlock.svelte.d.ts +10 -0
  129. package/dist/components/marketing/TestimonialCard.svelte +24 -0
  130. package/dist/components/marketing/TestimonialCard.svelte.d.ts +12 -0
  131. package/dist/components/marketing/index.d.ts +4 -0
  132. package/dist/components/marketing/index.js +4 -0
  133. package/dist/components/popover/Popover.d.ts +32 -13
  134. package/dist/components/popover/Popover.js +1 -7
  135. package/dist/components/popover/Popover.svelte +40 -158
  136. package/dist/components/popover/Popover.svelte.d.ts +2 -2
  137. package/dist/components/popover-responsive/PopoverResponsive.d.ts +18 -7
  138. package/dist/components/popover-responsive/PopoverResponsive.js +1 -7
  139. package/dist/components/popover-responsive/PopoverResponsive.svelte +25 -87
  140. package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +2 -11
  141. package/dist/components/select/Select.d.ts +60 -23
  142. package/dist/components/select/Select.js +14 -35
  143. package/dist/components/select/Select.svelte +157 -28
  144. package/dist/components/select/Select.svelte.d.ts +2 -3
  145. package/dist/components/select/index.d.ts +1 -1
  146. package/dist/components/side-navigation/SideNavigation.svelte +73 -96
  147. package/dist/components/side-navigation/SideNavigationItem.svelte +2 -2
  148. package/dist/components/side-navigation/SideNavigationLayout.svelte +3 -5
  149. package/dist/components/side-navigation/sidenav.scss +17 -13
  150. package/dist/components/skeleton/Skeleton.svelte +48 -0
  151. package/dist/components/skeleton/Skeleton.svelte.d.ts +12 -0
  152. package/dist/components/skeleton/index.d.ts +1 -0
  153. package/dist/components/skeleton/index.js +1 -0
  154. package/dist/components/slider/Slider.d.ts +25 -15
  155. package/dist/components/slider/Slider.js +1 -7
  156. package/dist/components/slider/Slider.svelte +38 -164
  157. package/dist/components/slider/Slider.svelte.d.ts +1 -1
  158. package/dist/components/spinner/Spinner.svelte +39 -0
  159. package/dist/components/spinner/Spinner.svelte.d.ts +10 -0
  160. package/dist/components/spinner/index.d.ts +1 -0
  161. package/dist/components/spinner/index.js +1 -0
  162. package/dist/components/star-rating/StarRating.svelte +33 -49
  163. package/dist/components/switch/Switch.d.ts +19 -4
  164. package/dist/components/switch/Switch.js +4 -0
  165. package/dist/components/switch/Switch.svelte +13 -17
  166. package/dist/components/switch/Switch.svelte.d.ts +2 -2
  167. package/dist/components/table/Table.svelte +68 -0
  168. package/dist/components/table/Table.svelte.d.ts +40 -0
  169. package/dist/components/table/index.d.ts +1 -0
  170. package/dist/components/table/index.js +1 -0
  171. package/dist/components/tabs/Tabs.svelte.d.ts +45 -16
  172. package/dist/components/tabs/Tabs.svelte.js +8 -18
  173. package/dist/components/tabs/components/Tabs.svelte +27 -33
  174. package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
  175. package/dist/components/tabs/components/TabsContent.svelte +13 -36
  176. package/dist/components/tabs/components/TabsContent.svelte.d.ts +2 -5
  177. package/dist/components/tabs/components/TabsItem.svelte +43 -32
  178. package/dist/components/tabs/components/TabsItem.svelte.d.ts +2 -5
  179. package/dist/components/tabs/components/TabsList.svelte +90 -58
  180. package/dist/components/tabs/components/TabsList.svelte.d.ts +2 -4
  181. package/dist/components/tera-ui-context/TeraUiContext.svelte +13 -26
  182. package/dist/components/text-area/TextArea.d.ts +2 -2
  183. package/dist/components/text-area/TextArea.js +9 -9
  184. package/dist/components/text-area/TextArea.svelte +41 -65
  185. package/dist/components/toast/ToastContainer.svelte +50 -0
  186. package/dist/components/toast/ToastContainer.svelte.d.ts +18 -0
  187. package/dist/components/toast/index.d.ts +3 -0
  188. package/dist/components/toast/index.js +2 -0
  189. package/dist/components/toast/toast.svelte.d.ts +22 -0
  190. package/dist/components/toast/toast.svelte.js +18 -0
  191. package/dist/components/tooltip/Tooltip.d.ts +23 -0
  192. package/dist/components/tooltip/Tooltip.js +1 -0
  193. package/dist/components/tooltip/Tooltip.svelte +30 -0
  194. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  195. package/dist/components/tooltip/index.d.ts +2 -0
  196. package/dist/components/tooltip/index.js +1 -0
  197. package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +48 -69
  198. package/dist/index.d.ts +19 -2
  199. package/dist/index.js +12 -0
  200. package/dist/llms/accordion.md +90 -0
  201. package/dist/llms/ai.md +110 -0
  202. package/dist/llms/alert.md +29 -0
  203. package/dist/llms/avatar.md +34 -0
  204. package/dist/llms/badge.md +31 -0
  205. package/dist/llms/brand-logo.md +30 -0
  206. package/dist/llms/button.md +37 -0
  207. package/dist/llms/card.md +32 -0
  208. package/dist/llms/checkbox.md +35 -0
  209. package/dist/llms/colors.md +161 -0
  210. package/dist/llms/combobox.md +40 -0
  211. package/dist/llms/command.md +7 -0
  212. package/dist/llms/date-range-picker.md +36 -0
  213. package/dist/llms/dialog.md +45 -0
  214. package/dist/llms/drawer.md +30 -0
  215. package/dist/llms/dropdown-menu.md +112 -0
  216. package/dist/llms/fonts.md +7 -0
  217. package/dist/llms/header.md +26 -0
  218. package/dist/llms/icons.md +43 -0
  219. package/dist/llms/index.md +65 -0
  220. package/dist/llms/input.md +37 -0
  221. package/dist/llms/label.md +30 -0
  222. package/dist/llms/language-picker-button.md +30 -0
  223. package/dist/llms/light-dark-toggle.md +26 -0
  224. package/dist/llms/marketing.md +95 -0
  225. package/dist/llms/popover-responsive.md +32 -0
  226. package/dist/llms/popover.md +40 -0
  227. package/dist/llms/select.md +44 -0
  228. package/dist/llms/side-navigation.md +30 -0
  229. package/dist/llms/skeleton.md +28 -0
  230. package/dist/llms/slider.md +36 -0
  231. package/dist/llms/spinner.md +25 -0
  232. package/dist/llms/star-rating.md +31 -0
  233. package/dist/llms/switch.md +33 -0
  234. package/dist/llms/table.md +30 -0
  235. package/dist/llms/tabs.md +92 -0
  236. package/dist/llms/tera-ui-context.md +30 -0
  237. package/dist/llms/text-area.md +39 -0
  238. package/dist/llms/toast.md +7 -0
  239. package/dist/llms/tooltip.md +32 -0
  240. package/dist/llms/user-avatar-with-menu.md +28 -0
  241. package/dist/paraglide/README.md +72 -3
  242. package/dist/paraglide/messages/_index.d.ts +105 -7
  243. package/dist/paraglide/messages/_index.js +437 -7
  244. package/dist/paraglide/messages/ar.d.ts +23 -0
  245. package/dist/paraglide/messages/ar.js +38 -0
  246. package/dist/paraglide/messages/bg.d.ts +23 -0
  247. package/dist/paraglide/messages/bg.js +38 -0
  248. package/dist/paraglide/messages/bn.d.ts +23 -0
  249. package/dist/paraglide/messages/bn.js +38 -0
  250. package/dist/paraglide/messages/ca.d.ts +23 -0
  251. package/dist/paraglide/messages/ca.js +38 -0
  252. package/dist/paraglide/messages/cs.d.ts +23 -0
  253. package/dist/paraglide/messages/cs.js +38 -0
  254. package/dist/paraglide/messages/da.d.ts +23 -0
  255. package/dist/paraglide/messages/da.js +38 -0
  256. package/dist/paraglide/messages/de.d.ts +23 -0
  257. package/dist/paraglide/messages/de.js +38 -0
  258. package/dist/paraglide/messages/el.d.ts +23 -0
  259. package/dist/paraglide/messages/el.js +38 -0
  260. package/dist/paraglide/messages/en.d.ts +23 -0
  261. package/dist/paraglide/messages/en.js +38 -0
  262. package/dist/paraglide/messages/es.d.ts +23 -0
  263. package/dist/paraglide/messages/es.js +38 -0
  264. package/dist/paraglide/messages/fi.d.ts +23 -0
  265. package/dist/paraglide/messages/fi.js +38 -0
  266. package/dist/paraglide/messages/fr.d.ts +23 -0
  267. package/dist/paraglide/messages/fr.js +38 -0
  268. package/dist/paraglide/messages/he.d.ts +23 -0
  269. package/dist/paraglide/messages/he.js +38 -0
  270. package/dist/paraglide/messages/hi.d.ts +23 -0
  271. package/dist/paraglide/messages/hi.js +38 -0
  272. package/dist/paraglide/messages/hu.d.ts +23 -0
  273. package/dist/paraglide/messages/hu.js +38 -0
  274. package/dist/paraglide/messages/id.d.ts +23 -0
  275. package/dist/paraglide/messages/id.js +38 -0
  276. package/dist/paraglide/messages/it.d.ts +23 -0
  277. package/dist/paraglide/messages/it.js +38 -0
  278. package/dist/paraglide/messages/ja.d.ts +23 -0
  279. package/dist/paraglide/messages/ja.js +38 -0
  280. package/dist/paraglide/messages/ko.d.ts +23 -0
  281. package/dist/paraglide/messages/ko.js +38 -0
  282. package/dist/paraglide/messages/lt.d.ts +23 -0
  283. package/dist/paraglide/messages/lt.js +38 -0
  284. package/dist/paraglide/messages/lv.d.ts +23 -0
  285. package/dist/paraglide/messages/lv.js +38 -0
  286. package/dist/paraglide/messages/ms.d.ts +23 -0
  287. package/dist/paraglide/messages/ms.js +38 -0
  288. package/dist/paraglide/messages/nl.d.ts +23 -0
  289. package/dist/paraglide/messages/nl.js +38 -0
  290. package/dist/paraglide/messages/no.d.ts +23 -0
  291. package/dist/paraglide/messages/no.js +38 -0
  292. package/dist/paraglide/messages/pl.d.ts +23 -0
  293. package/dist/paraglide/messages/pl.js +38 -0
  294. package/dist/paraglide/messages/pt.d.ts +23 -0
  295. package/dist/paraglide/messages/pt.js +38 -0
  296. package/dist/paraglide/messages/ro.d.ts +23 -0
  297. package/dist/paraglide/messages/ro.js +38 -0
  298. package/dist/paraglide/messages/ru.d.ts +23 -0
  299. package/dist/paraglide/messages/ru.js +38 -0
  300. package/dist/paraglide/messages/sk.d.ts +23 -0
  301. package/dist/paraglide/messages/sk.js +38 -0
  302. package/dist/paraglide/messages/sl.d.ts +23 -0
  303. package/dist/paraglide/messages/sl.js +38 -0
  304. package/dist/paraglide/messages/sq.d.ts +23 -0
  305. package/dist/paraglide/messages/sq.js +38 -0
  306. package/dist/paraglide/messages/sr.d.ts +23 -0
  307. package/dist/paraglide/messages/sr.js +38 -0
  308. package/dist/paraglide/messages/sv.d.ts +23 -0
  309. package/dist/paraglide/messages/sv.js +38 -0
  310. package/dist/paraglide/messages/sw.d.ts +23 -0
  311. package/dist/paraglide/messages/sw.js +38 -0
  312. package/dist/paraglide/messages/ta.d.ts +23 -0
  313. package/dist/paraglide/messages/ta.js +38 -0
  314. package/dist/paraglide/messages/te.d.ts +23 -0
  315. package/dist/paraglide/messages/te.js +38 -0
  316. package/dist/paraglide/messages/th.d.ts +23 -0
  317. package/dist/paraglide/messages/th.js +38 -0
  318. package/dist/paraglide/messages/tl.d.ts +23 -0
  319. package/dist/paraglide/messages/tl.js +38 -0
  320. package/dist/paraglide/messages/tr.d.ts +23 -0
  321. package/dist/paraglide/messages/tr.js +38 -0
  322. package/dist/paraglide/messages/uk.d.ts +23 -0
  323. package/dist/paraglide/messages/uk.js +38 -0
  324. package/dist/paraglide/messages/vi.d.ts +23 -0
  325. package/dist/paraglide/messages/vi.js +38 -0
  326. package/dist/paraglide/messages/zh-CN.d.ts +23 -0
  327. package/dist/paraglide/messages/zh-CN.js +38 -0
  328. package/dist/paraglide/messages/zh-TW.d.ts +23 -0
  329. package/dist/paraglide/messages/zh-TW.js +38 -0
  330. package/dist/paraglide/registry.d.ts +13 -0
  331. package/dist/paraglide/registry.js +15 -0
  332. package/dist/paraglide/runtime.d.ts +243 -126
  333. package/dist/paraglide/runtime.js +473 -148
  334. package/dist/paraglide/server.d.ts +13 -20
  335. package/dist/paraglide/server.js +92 -40
  336. package/dist/stories/ComponentOverview.stories.svelte +533 -0
  337. package/dist/stories/ComponentOverview.stories.svelte.d.ts +6 -0
  338. package/dist/themes/tera-ui-base.css +664 -470
  339. package/dist/themes/theme-ai.css +100 -0
  340. package/dist/themes/theme-marketing.css +91 -0
  341. package/dist/themes/theme-professional.css +41 -0
  342. package/package.json +35 -29
  343. package/dist/paraglide/messages/text_account_settings.d.ts +0 -4
  344. package/dist/paraglide/messages/text_account_settings.js +0 -239
  345. package/dist/paraglide/messages/text_calces_documentation.d.ts +0 -4
  346. package/dist/paraglide/messages/text_calces_documentation.js +0 -239
  347. package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +0 -4
  348. package/dist/paraglide/messages/text_calces_scientific_calculator.js +0 -239
  349. package/dist/paraglide/messages/text_currency_converter.d.ts +0 -4
  350. package/dist/paraglide/messages/text_currency_converter.js +0 -239
  351. package/dist/paraglide/messages/text_logout.d.ts +0 -4
  352. package/dist/paraglide/messages/text_logout.js +0 -239
  353. package/dist/paraglide/messages/text_select_language.d.ts +0 -4
  354. package/dist/paraglide/messages/text_select_language.js +0 -239
  355. package/dist/paraglide/messages/text_unit_converter.d.ts +0 -4
  356. package/dist/paraglide/messages/text_unit_converter.js +0 -239
  357. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/.meta.json +0 -3
  358. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/README.md +0 -103
  359. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/project_id +0 -1
  360. package/dist/themes/tw-preset.cjs +0 -160
  361. package/dist/themes/tw-preset.d.cts +0 -157
@@ -1,164 +1,38 @@
1
- <script lang="ts">
2
- import {type SliderProps} from "./Slider";
3
-
4
- let {
5
- children,
6
- min = 0,
7
- max = 100,
8
- step = 1,
9
- value = $bindable(),
10
- showTicks = false,
11
- onchange,
12
- ...props
13
- }: SliderProps = $props();
14
-
15
-
16
- let slider = $state<HTMLElement>()
17
- let sliderHandle = $state<HTMLElement>()
18
- let sliderTrack = $state<HTMLElement>()
19
- let sliderRail = $state<HTMLElement>()
20
- let sliderTooltip = $state<HTMLElement>()
21
-
22
-
23
- $effect(() => {
24
- if (!slider || !sliderHandle || !sliderTrack || !sliderRail) return
25
-
26
- const stopDragging = () => {
27
- document.removeEventListener('pointermove', onDrag);
28
- document.removeEventListener('touchmove', onDrag);
29
- sliderHandle?.removeAttribute('data-state');
30
- toggleToolTip(false);
31
- };
32
-
33
- slider.addEventListener('pointerdown', (e) => {
34
- sliderHandle.setAttribute('data-state', 'dragging');
35
- onDrag(e);
36
- document.addEventListener('pointermove', onDrag);
37
- document.addEventListener('pointerup', stopDragging, {once: true});
38
-
39
- // Add mouseout listener to window
40
- window.addEventListener('mouseout', (e) => {
41
- if ((e.relatedTarget as HTMLElement)?.tagName === 'IFRAME') { // Mouse left the window
42
- stopDragging();
43
- }
44
- });
45
- });
46
-
47
- // For touch support
48
- slider.addEventListener('touchstart', (e) => {
49
- sliderHandle.setAttribute('data-state', 'dragging');
50
- onDrag(e);
51
- document.addEventListener('touchmove', onDrag, {passive: false});
52
- document.addEventListener('touchend', stopDragging, {once: true});
53
- }, {passive: false});
54
-
55
- sliderHandle.addEventListener('pointerenter', (e) => {
56
- toggleToolTip(true);
57
- sliderHandle.addEventListener('pointerleave', (e) => {
58
- toggleToolTip(false);
59
- }, {once: true});
60
- });
61
-
62
- })
63
-
64
- let tooltipInterval: ReturnType<typeof setTimeout> | undefined;
65
-
66
- function toggleToolTip(open: boolean) {
67
- if (tooltipInterval) clearInterval(tooltipInterval)
68
-
69
- if (open) {
70
- sliderTooltip?.classList.add('show');
71
- } else {
72
- tooltipInterval = setTimeout(() => {
73
- sliderTooltip?.classList.remove('show');
74
- }, 300)
75
-
76
- }
77
- }
78
-
79
- const calculateValue = (position: number) => {
80
- const sliderWidth = sliderRail?.offsetWidth || 0;
81
- const totalSteps = (max - min) / step;
82
- const stepSize = sliderWidth / totalSteps;
83
-
84
- // Clamp position within the slider width
85
- const clampedPosition = Math.max(0, Math.min(position, sliderWidth));
86
- // Calculate steps with decimal precision
87
- const stepCount = Math.round(clampedPosition / stepSize);
88
-
89
- // Calculate the value with proper decimal precision
90
- const value = min + (stepCount * step);
91
- // Round to avoid floating-point precision errors
92
- return Number(value.toFixed(10));
93
- };
94
-
95
- const onDrag = (event: PointerEvent | TouchEvent) => {
96
- event.preventDefault();
97
- event.stopPropagation();
98
- toggleToolTip(true)
99
-
100
- let position
101
-
102
- if (event.type.startsWith('touch')) {
103
- const touch = (event as TouchEvent).touches[0];
104
- position = touch.clientX - (slider?.getBoundingClientRect().left || 0);
105
- } else {
106
- position = (event as PointerEvent).clientX - (slider?.getBoundingClientRect().left || 0);
107
- }
108
- let newValue = calculateValue(position);
109
-
110
- if (newValue !== value) {
111
- value = newValue;
112
- onchange?.(value);
113
- }
114
-
115
- updateSliderByValue(newValue)
116
- };
117
-
118
-
119
- $effect(() => {
120
- if (value == undefined) {
121
- value = min
122
- }
123
- updateSliderByValue(value)
124
- })
125
-
126
- function updateSliderByValue(_v: number) {
127
- const percentage = ((value - min) / (max - min)) * 100
128
-
129
- // Update the position of the handle and track width
130
- if (sliderHandle) sliderHandle.style.left = `${percentage}%`;
131
- if (sliderTooltip) sliderTooltip.style.left = `${percentage}%`;
132
- if (sliderTrack) sliderTrack.style.width = `${percentage}%`;
133
- }
134
- </script>
135
-
136
-
137
- <div bind:this={slider} class="cursor-pointer w-full relative px-1 py-2.5">
138
- <div data-slider-rail bind:this={sliderRail} class="w-full h-1.5 bg-neutral-token-4 rounded-full overflow-hidden hover:bg-neutral-token-5 transition-colors duration-200">
139
- <div data-slider-track bind:this={sliderTrack} class="rounded-full w-full h-full bg-neutral-token-13"></div>
140
- </div>
141
-
142
- <div
143
- bind:this={sliderHandle}
144
- data-slider-handle
145
- tabindex="0"
146
- role="slider"
147
- aria-valuemin={`${(min ?? 0)}`}
148
- aria-valuemax={`${(max ?? 0)}`}
149
- aria-valuenow={`${(value ?? 0)}`}
150
- aria-orientation="horizontal"
151
- class="slider-handle -translate-x-1/2 absolute top-1/2 -translate-y-1/2 rounded-full bg-neutral-token-1 border-2 outline-1 outline-neutral-token-1 border-neutral-token-13 size-4 shadow-sm"
152
- >
153
-
154
- </div>
155
-
156
- <div bind:this={sliderTooltip} data-slider-tooltip class="">
157
- <span class="z-10 relative text-xs">
158
- {value}
159
- </span>
160
- </div>
161
- </div>
162
-
163
- <style>/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
164
- .slider-handle{transition:all .2s cubic-bezier(.645,.045,.355,1),left}:is(.slider-handle:global([data-state="dragging"]),.slider-handle:hover,.slider-handle:focus,.slider-handle:active,.slider-handle:focus-visible){border-width:2px;transform:scale(1.2);box-shadow:0 0 0 4px #3b82f61f}.slider-handle:focus-visible{outline:none}[data-slider-tooltip]{pointer-events:none;background-color:var(--color-neutral-token-12);width:fit-content;color:var(--color-neutral-token-1);z-index:10;border-radius:6px;padding:4px 8px;font-size:12px;line-height:1.5;position:absolute;left:50%}[data-slider-tooltip]:after{content:"";background-color:var(--color-neutral-token-12);border-radius:2px;width:8px;height:8px;position:absolute;bottom:-3px;left:50%;transform:translate(-50%)rotate(45deg)}[data-slider-tooltip]{opacity:0;transition:all .2s cubic-bezier(.645,.045,.355,1),left;transform:translateY(-2.5rem)translate(-50%)scale(.9)}[data-slider-tooltip]:global(.show){opacity:1;transform:translateY(-3rem)translate(-50%)scale(1)}</style>
1
+ <script lang="ts">import { Slider as SliderPrimitive } from 'bits-ui';
2
+ let { min = 0, max = 100, step = 1, value = $bindable(0), onchange, onValueCommit, disabled, orientation = 'horizontal', class: className = '', } = $props();
3
+ const isVertical = $derived(orientation === 'vertical');
4
+ </script>
5
+
6
+ <SliderPrimitive.Root
7
+ type="single"
8
+ bind:value
9
+ onValueChange={onchange}
10
+ {onValueCommit}
11
+ {min}
12
+ {max}
13
+ {step}
14
+ {disabled}
15
+ {orientation}
16
+ class="{isVertical
17
+ ? 'relative flex flex-col h-full touch-none select-none items-center px-2.5'
18
+ : 'relative flex w-full touch-none select-none items-center py-2.5'
19
+ } {disabled ? 'opacity-50 pointer-events-none' : ''} {className}"
20
+ >
21
+ {#snippet children({ thumbItems })}
22
+ <!-- Track wrapper -->
23
+ <div class="{isVertical ? 'relative w-1.5 h-full grow rounded-full' : 'relative h-1.5 w-full grow rounded-full'} bg-neutral-token-4">
24
+ <SliderPrimitive.Range class="{isVertical ? 'absolute w-full bottom-0' : 'absolute h-full'} bg-interactive rounded-full" />
25
+ </div>
26
+
27
+ {#each thumbItems as { index } (index)}
28
+ <SliderPrimitive.Thumb
29
+ {index}
30
+ class="block size-4 rounded-full border-2 border-interactive bg-surface-control shadow-sm outline-none
31
+ transition-[box-shadow,transform] ease-ui duration-150
32
+ hover:shadow-focus hover:scale-110
33
+ focus-visible:shadow-focus focus-visible:scale-110
34
+ data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
35
+ />
36
+ {/each}
37
+ {/snippet}
38
+ </SliderPrimitive.Root>
@@ -1,4 +1,4 @@
1
- import { type SliderProps } from "./Slider";
1
+ import type { SliderProps } from './Slider.js';
2
2
  declare const Slider: import("svelte").Component<SliderProps, {}, "value">;
3
3
  type Slider = ReturnType<typeof Slider>;
4
4
  export default Slider;
@@ -0,0 +1,39 @@
1
+ <script lang="ts">"use strict";
2
+ let { size = 'md', color = 'primary', class: className = '', } = $props();
3
+ const sizeMap = { xs: 12, sm: 16, md: 20, lg: 28 };
4
+ const colorMap = {
5
+ primary: 'var(--color-interactive)',
6
+ white: '#ffffff',
7
+ current: 'currentColor',
8
+ };
9
+ const px = $derived(sizeMap[size]);
10
+ const stroke = $derived(colorMap[color]);
11
+ const r = 8;
12
+ const circumference = 2 * Math.PI * r;
13
+ </script>
14
+
15
+ <svg
16
+ class="animate-spin {className}"
17
+ width={px}
18
+ height={px}
19
+ viewBox="0 0 20 20"
20
+ fill="none"
21
+ aria-label="Loading"
22
+ role="status"
23
+ >
24
+ <circle
25
+ cx="10" cy="10" r={r}
26
+ stroke={stroke}
27
+ stroke-width="2"
28
+ stroke-opacity="0.25"
29
+ />
30
+ <circle
31
+ cx="10" cy="10" r={r}
32
+ stroke={stroke}
33
+ stroke-width="2"
34
+ stroke-linecap="round"
35
+ stroke-dasharray={circumference}
36
+ stroke-dashoffset={circumference * 0.75}
37
+ transform="rotate(-90 10 10)"
38
+ />
39
+ </svg>
@@ -0,0 +1,10 @@
1
+ type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg';
2
+ type SpinnerColor = 'primary' | 'white' | 'current';
3
+ type $$ComponentProps = {
4
+ size?: SpinnerSize;
5
+ color?: SpinnerColor;
6
+ class?: string;
7
+ };
8
+ declare const Spinner: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type Spinner = ReturnType<typeof Spinner>;
10
+ export default Spinner;
@@ -0,0 +1 @@
1
+ export { default as Spinner } from './Spinner.svelte';
@@ -0,0 +1 @@
1
+ export { default as Spinner } from './Spinner.svelte';
@@ -1,51 +1,35 @@
1
- <script lang="ts">
2
- import {type StarRatingProps, styles} from "./StarRating";
3
-
4
- let {
5
- children,
6
- value = $bindable(),
7
- onchange,
8
- size = 'md',
9
- ...props
10
- }: StarRatingProps = $props();
11
-
12
- let hoverRating = $state(0);
13
-
14
- // Descriptive texts for each star rating
15
- const descriptions = [
16
- 'Very Bad',
17
- 'Bad',
18
- 'Okay',
19
- 'Good',
20
- 'Excellent'
21
- ];
22
-
23
- // Sets the rating when a star is clicked
24
- function setRating(v, e) {
25
- if (value != v) {
26
- value = v;
27
- } else {
28
- value = undefined
29
- }
30
-
31
- onchange?.(v)
32
- // console.log('setRating', e.type)
33
-
34
- }
35
-
36
- // Updates hover state when hovering over a star
37
- function setHover(v, e) {
38
- hoverRating = v;
39
- // console.log('setHover', v, e.type)
40
- }
41
-
42
- // Resets hover state when leaving the star area
43
- function resetHover(e) {
44
-
45
- hoverRating = 0;
46
- // console.log('resetHover', e.type)
47
- }
48
-
1
+ <script lang="ts">import { styles } from "./StarRating";
2
+ let { children, value = $bindable(), onchange, size = 'md', ...props } = $props();
3
+ let hoverRating = $state(0);
4
+ // Descriptive texts for each star rating
5
+ const descriptions = [
6
+ 'Very Bad',
7
+ 'Bad',
8
+ 'Okay',
9
+ 'Good',
10
+ 'Excellent'
11
+ ];
12
+ // Sets the rating when a star is clicked
13
+ function setRating(v, e) {
14
+ if (value != v) {
15
+ value = v;
16
+ }
17
+ else {
18
+ value = undefined;
19
+ }
20
+ onchange?.(v);
21
+ // console.log('setRating', e.type)
22
+ }
23
+ // Updates hover state when hovering over a star
24
+ function setHover(v, e) {
25
+ hoverRating = v;
26
+ // console.log('setHover', v, e.type)
27
+ }
28
+ // Resets hover state when leaving the star area
29
+ function resetHover(e) {
30
+ hoverRating = 0;
31
+ // console.log('resetHover', e.type)
32
+ }
49
33
  </script>
50
34
 
51
35
  <div
@@ -60,7 +44,7 @@
60
44
  aria-setsize="5"
61
45
  data-rating-icon
62
46
  data-hovering={hoverRating === (index + 1)}
63
- aria-label=""
47
+ aria-label={`Rate ${index + 1} out of 5 stars`}
64
48
  onpointerenter={(e) => setHover(index + 1, e)}
65
49
  onpointerleave={resetHover}
66
50
  ontouchendcapture={resetHover}
@@ -1,12 +1,27 @@
1
+ /**
2
+ * @component Switch - Toggle switch for boolean on/off state.
3
+ * Built on BitsUI Switch primitive with form integration support.
4
+ */
1
5
  import { type VariantProps } from "tailwind-variants";
2
- import type { Snippet } from "svelte";
3
- import type { HTMLButtonAttributes } from "svelte/elements";
4
6
  export declare const styles: import("tailwind-variants").TVReturnType<{}, undefined, "", {}, undefined, import("tailwind-variants").TVReturnType<{}, undefined, "", unknown, unknown, undefined>>;
5
7
  type SwitchVariants = VariantProps<typeof styles>;
6
- export interface SwitchProps extends HTMLButtonAttributes, SwitchVariants {
7
- children?: Snippet;
8
+ export interface SwitchProps extends SwitchVariants {
9
+ /** Additional CSS classes for the root element. */
8
10
  class?: string;
11
+ /** Whether the switch is on. Bindable. */
9
12
  checked?: boolean;
13
+ /** Prevents all interaction and dims the control. */
14
+ disabled?: boolean;
15
+ /** Whether the switch is required for form submission. */
16
+ required?: boolean;
17
+ /** Name attribute used when submitting within a form. */
18
+ name?: string;
19
+ /** Value sent with the form when the switch is checked. */
20
+ value?: string;
21
+ /** Called when the checked state changes. */
22
+ onCheckedChange?: (checked: boolean) => void;
23
+ /** Bindable reference to the root button element. */
10
24
  ref?: HTMLButtonElement | null;
25
+ [key: string]: unknown;
11
26
  }
12
27
  export {};
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @component Switch - Toggle switch for boolean on/off state.
3
+ * Built on BitsUI Switch primitive with form integration support.
4
+ */
1
5
  import { tv } from "tailwind-variants";
2
6
  export const styles = tv({
3
7
  base: '',
@@ -1,26 +1,22 @@
1
- <script lang="ts">
2
-
3
- import {Switch as SwitchPrimitive, type WithoutChildrenOrChild} from "bits-ui";
4
- import {cn} from "../../utils";
5
-
6
- let {
7
- ref = $bindable(null),
8
- class: className,
9
- checked = $bindable(false),
10
- ...restProps
11
- }: WithoutChildrenOrChild<SwitchPrimitive.RootProps> = $props();
12
-
1
+ <script lang="ts">import { Switch as SwitchPrimitive } from "bits-ui";
2
+ import { cn } from "../../utils/index.js";
3
+ let { ref = $bindable(null), class: className, checked = $bindable(false), disabled, required, name, value, onCheckedChange, ...restProps } = $props();
13
4
  </script>
14
5
 
15
6
  <SwitchPrimitive.Root
16
7
  {...restProps}
17
8
  bind:checked
18
9
  bind:ref
10
+ {disabled}
11
+ {required}
12
+ {name}
13
+ {value}
14
+ {onCheckedChange}
19
15
  class={cn(
20
- "relative group peer h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full transition-all duration-200",
21
- "focus-visible:outline-none focus-visible:shadow-[0_0_0_2px_rgba(59,130,246,0.1)]",
22
- "data-[state=checked]:bg-primary-600",
23
- "data-[state=unchecked]:bg-neutral-token-5",
16
+ "relative group peer h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full transition-[background-color,box-shadow] ease-ui duration-200",
17
+ "focus-visible:outline-none focus-visible:shadow-focus",
18
+ "data-[state=checked]:bg-interactive",
19
+ "data-[state=unchecked]:bg-border-default",
24
20
  "disabled:cursor-not-allowed disabled:opacity-50",
25
21
  "overflow-hidden",
26
22
  className
@@ -32,7 +28,7 @@
32
28
 
33
29
  <SwitchPrimitive.Thumb
34
30
  class={cn(
35
- "pointer-events-none block size-[18px] rounded-full bg-neutral-1 transition-transform duration-200",
31
+ "pointer-events-none block size-[18px] rounded-full bg-neutral-1 transition-transform ease-spring duration-[250ms]",
36
32
  "shadow-[0_2px_4px_rgba(0,0,0,0.2)]",
37
33
  "data-[state=checked]:translate-x-[23px] data-[state=unchecked]:translate-x-[2px]"
38
34
  )}
@@ -1,4 +1,4 @@
1
- import { Switch as SwitchPrimitive } from "bits-ui";
2
- declare const Switch: import("svelte").Component<Omit<Omit<SwitchPrimitive.RootProps, "child">, "children">, {}, "ref" | "checked">;
1
+ import type { SwitchProps } from './Switch.js';
2
+ declare const Switch: import("svelte").Component<SwitchProps, {}, "ref" | "checked">;
3
3
  type Switch = ReturnType<typeof Switch>;
4
4
  export default Switch;
@@ -0,0 +1,68 @@
1
+ <script lang="ts" generics="T extends Record<string, unknown>">import { Skeleton } from '../skeleton/index.js';
2
+ let { columns, data, loading, empty, striped, stickyHeader, onRowClick, class: className = '', } = $props();
3
+ </script>
4
+
5
+ <div class="w-full overflow-auto {className}">
6
+ <table class="w-full text-sm text-left border-collapse">
7
+ <thead class="bg-surface-sunken {stickyHeader ? 'sticky top-0 z-10' : ''}">
8
+ <tr>
9
+ {#each columns as col (col.key)}
10
+ <th
11
+ class="px-4 py-3 font-medium text-text-secondary whitespace-nowrap border-b border-border-default"
12
+ style={col.width ? `width:${col.width}` : ''}
13
+ class:text-center={col.align === 'center'}
14
+ class:text-right={col.align === 'right'}
15
+ >
16
+ {col.label}
17
+ </th>
18
+ {/each}
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ {#if loading}
23
+ {#each Array(4) as _, i (i)}
24
+ <tr>
25
+ {#each columns as col (col.key)}
26
+ <td class="px-4 py-3 border-b border-border-default">
27
+ <Skeleton variant="line" />
28
+ </td>
29
+ {/each}
30
+ </tr>
31
+ {/each}
32
+ {:else if data.length === 0}
33
+ <tr>
34
+ <td colspan={columns.length} class="px-4 py-10 text-center text-text-tertiary">
35
+ {#if empty}
36
+ {@render empty()}
37
+ {:else}
38
+ No data
39
+ {/if}
40
+ </td>
41
+ </tr>
42
+ {:else}
43
+ {#each data as row, i (i)}
44
+ <tr
45
+ class="border-b border-border-default transition-colors ease-ui duration-100
46
+ {striped && i % 2 === 1 ? 'bg-surface-sunken' : 'bg-transparent'}
47
+ {onRowClick ? 'cursor-pointer hover:bg-surface-hover' : 'hover:bg-surface-hover'}"
48
+ onclick={() => onRowClick?.(row)}
49
+ >
50
+ {#each columns as col (col.key)}
51
+ <td
52
+ class="px-4 py-3 text-text-primary"
53
+ class:text-center={col.align === 'center'}
54
+ class:text-right={col.align === 'right'}
55
+ >
56
+ {#if col.render}
57
+ {@render col.render(row)}
58
+ {:else}
59
+ {row[col.key] ?? ''}
60
+ {/if}
61
+ </td>
62
+ {/each}
63
+ </tr>
64
+ {/each}
65
+ {/if}
66
+ </tbody>
67
+ </table>
68
+ </div>
@@ -0,0 +1,40 @@
1
+ import type { Snippet } from 'svelte';
2
+ declare function $$render<T extends Record<string, unknown>>(): {
3
+ props: {
4
+ columns: {
5
+ key: string;
6
+ label: string;
7
+ width?: string;
8
+ align?: "left" | "center" | "right";
9
+ render?: Snippet<[T]> | undefined;
10
+ }[];
11
+ data: T[];
12
+ loading?: boolean;
13
+ empty?: Snippet;
14
+ striped?: boolean;
15
+ stickyHeader?: boolean;
16
+ onRowClick?: (row: T) => void;
17
+ class?: string;
18
+ };
19
+ exports: {};
20
+ bindings: "";
21
+ slots: {};
22
+ events: {};
23
+ };
24
+ declare class __sveltets_Render<T extends Record<string, unknown>> {
25
+ props(): ReturnType<typeof $$render<T>>['props'];
26
+ events(): ReturnType<typeof $$render<T>>['events'];
27
+ slots(): ReturnType<typeof $$render<T>>['slots'];
28
+ bindings(): "";
29
+ exports(): {};
30
+ }
31
+ interface $$IsomorphicComponent {
32
+ new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
33
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
34
+ } & ReturnType<__sveltets_Render<T>['exports']>;
35
+ <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
36
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
37
+ }
38
+ declare const Table: $$IsomorphicComponent;
39
+ type Table<T extends Record<string, unknown>> = InstanceType<typeof Table<T>>;
40
+ export default Table;
@@ -0,0 +1 @@
1
+ export { default as Table } from './Table.svelte';
@@ -0,0 +1 @@
1
+ export { default as Table } from './Table.svelte';
@@ -1,34 +1,63 @@
1
1
  import type { Snippet } from "svelte";
2
- import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
3
- export type TabsProps = HTMLAttributes<HTMLDivElement> & {
2
+ export type TabsVariant = 'line' | 'ios';
3
+ export type TabsContext = {
4
+ readonly variant: TabsVariant;
5
+ readonly orientation: 'horizontal' | 'vertical';
6
+ };
7
+ export declare const setTabsContext: (ctx: TabsContext) => TabsContext;
8
+ export declare const getTabsContext: () => TabsContext;
9
+ export type TabsProps = {
4
10
  children?: Snippet;
11
+ /** Currently active tab value. Bindable. */
5
12
  value?: string;
13
+ /** Called when the active tab changes. */
6
14
  onchange?: (newTab: string) => void;
15
+ /** Additional CSS classes for the root element. */
7
16
  class?: string;
17
+ /** Visual style of the tab list. */
18
+ variant?: TabsVariant;
19
+ /**
20
+ * How tabs activate on keyboard focus.
21
+ * - 'automatic': tab content switches immediately when a tab receives focus.
22
+ * - 'manual': the user must press Enter or Space to activate a focused tab.
23
+ */
24
+ activationMode?: 'automatic' | 'manual';
25
+ /**
26
+ * Orientation of the tab list.
27
+ * 'vertical' renders the list as a column alongside the content.
28
+ * Only supported with the 'line' variant.
29
+ */
30
+ orientation?: 'horizontal' | 'vertical';
31
+ /** Whether keyboard navigation wraps from the last tab back to the first. */
32
+ loop?: boolean;
33
+ /** Bindable reference to the root element. */
8
34
  ref?: HTMLDivElement | null;
35
+ [key: string]: unknown;
9
36
  };
10
- export type TabsListProps = HTMLAttributes<HTMLDivElement> & {
37
+ export type TabsListProps = {
11
38
  children?: Snippet;
39
+ /** Additional CSS classes for the tab list container. */
12
40
  class?: string;
13
- ref?: HTMLDivElement | null;
41
+ ref?: HTMLElement | null;
42
+ [key: string]: unknown;
14
43
  };
15
- export type TabsItemProps = HTMLButtonAttributes & {
44
+ export type TabsItemProps = {
16
45
  children?: Snippet;
46
+ /** The value this tab represents — must match a TabsContent value. */
17
47
  value: string;
48
+ /** Prevents the user from activating this tab. */
49
+ disabled?: boolean;
50
+ /** Additional CSS classes for the tab trigger. */
18
51
  class?: string;
19
- ref?: HTMLButtonElement | null;
52
+ ref?: HTMLElement | null;
53
+ [key: string]: unknown;
20
54
  };
21
- export type TabsContentProps = HTMLAttributes<HTMLDivElement> & {
55
+ export type TabsContentProps = {
22
56
  children?: Snippet;
57
+ /** The value this content panel corresponds to — must match a TabsItem value. */
23
58
  value: string;
59
+ /** Additional CSS classes for the content panel. */
24
60
  class?: string;
25
- ref?: HTMLDivElement | null;
61
+ ref?: HTMLElement | null;
62
+ [key: string]: unknown;
26
63
  };
27
- export type TabsContext = {
28
- currentTab: string | undefined;
29
- };
30
- export declare function createContext(props: {
31
- currentTab?: string;
32
- onchange?: (newTab: string) => void;
33
- }): void;
34
- export declare function getCtx(): TabsContext;