tera-system-ui 0.1.63 → 0.1.66

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 (497) hide show
  1. package/dist/COMPONENT_API.md +2 -0
  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 +71 -2
  242. package/dist/paraglide/messages/_index.d.ts +7 -21
  243. package/dist/paraglide/messages/_index.js +7 -485
  244. package/dist/paraglide/messages/text_account_settings.d.ts +16 -0
  245. package/dist/paraglide/messages/text_account_settings.js +234 -0
  246. package/dist/paraglide/messages/text_calces_documentation.d.ts +16 -0
  247. package/dist/paraglide/messages/text_calces_documentation.js +234 -0
  248. package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +16 -0
  249. package/dist/paraglide/messages/text_calces_scientific_calculator.js +234 -0
  250. package/dist/paraglide/messages/text_currency_converter.d.ts +16 -0
  251. package/dist/paraglide/messages/text_currency_converter.js +234 -0
  252. package/dist/paraglide/messages/text_logout.d.ts +16 -0
  253. package/dist/paraglide/messages/text_logout.js +234 -0
  254. package/dist/paraglide/messages/text_select_language.d.ts +16 -0
  255. package/dist/paraglide/messages/text_select_language.js +234 -0
  256. package/dist/paraglide/messages/text_unit_converter.d.ts +16 -0
  257. package/dist/paraglide/messages/text_unit_converter.js +234 -0
  258. package/dist/paraglide/registry.d.ts +13 -0
  259. package/dist/paraglide/registry.js +15 -0
  260. package/dist/paraglide/runtime.d.ts +242 -125
  261. package/dist/paraglide/runtime.js +467 -143
  262. package/dist/paraglide/server.d.ts +13 -20
  263. package/dist/paraglide/server.js +92 -40
  264. package/dist/stories/ComponentOverview.stories.svelte +533 -0
  265. package/dist/stories/ComponentOverview.stories.svelte.d.ts +6 -0
  266. package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +130 -9
  267. package/dist/tera-i18n/dev-tools/translator/package-lock.json +14 -224
  268. package/dist/tera-i18n/dev-tools/translator/package.json +1 -1
  269. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-calculator.md +34 -0
  270. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.md +149 -0
  271. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-system.txt +1 -1
  272. package/dist/tera-i18n/projects/common/all-language-data.js +70 -13
  273. package/dist/tera-i18n/projects/cv-maker/messages/ar-AE.json +94 -0
  274. package/dist/tera-i18n/projects/cv-maker/messages/ar-EG.json +94 -0
  275. package/dist/tera-i18n/projects/cv-maker/messages/ar-IQ.json +94 -0
  276. package/dist/tera-i18n/projects/cv-maker/messages/ar-SA.json +94 -0
  277. package/dist/tera-i18n/projects/cv-maker/messages/ar-SD.json +94 -0
  278. package/dist/tera-i18n/projects/cv-maker/messages/ar-YE.json +94 -0
  279. package/dist/tera-i18n/projects/cv-maker/messages/ar.json +58 -15
  280. package/dist/tera-i18n/projects/cv-maker/messages/bg.json +57 -14
  281. package/dist/tera-i18n/projects/cv-maker/messages/bn.json +65 -22
  282. package/dist/tera-i18n/projects/cv-maker/messages/ca.json +54 -11
  283. package/dist/tera-i18n/projects/cv-maker/messages/cs.json +59 -16
  284. package/dist/tera-i18n/projects/cv-maker/messages/da.json +51 -8
  285. package/dist/tera-i18n/projects/cv-maker/messages/de.json +58 -15
  286. package/dist/tera-i18n/projects/cv-maker/messages/el.json +71 -28
  287. package/dist/tera-i18n/projects/cv-maker/messages/en-AE.json +94 -0
  288. package/dist/tera-i18n/projects/cv-maker/messages/en-AU.json +94 -0
  289. package/dist/tera-i18n/projects/cv-maker/messages/en-CA.json +51 -8
  290. package/dist/tera-i18n/projects/cv-maker/messages/en-GB.json +50 -7
  291. package/dist/tera-i18n/projects/cv-maker/messages/en-ID.json +94 -0
  292. package/dist/tera-i18n/projects/cv-maker/messages/en-IN.json +54 -11
  293. package/dist/tera-i18n/projects/cv-maker/messages/en-NZ.json +94 -0
  294. package/dist/tera-i18n/projects/cv-maker/messages/en-PH.json +94 -0
  295. package/dist/tera-i18n/projects/cv-maker/messages/en-PK.json +58 -15
  296. package/dist/tera-i18n/projects/cv-maker/messages/en-SA.json +94 -0
  297. package/dist/tera-i18n/projects/cv-maker/messages/en-US.json +51 -8
  298. package/dist/tera-i18n/projects/cv-maker/messages/en-ZA.json +52 -9
  299. package/dist/tera-i18n/projects/cv-maker/messages/en.json +45 -16
  300. package/dist/tera-i18n/projects/cv-maker/messages/es-419.json +94 -0
  301. package/dist/tera-i18n/projects/cv-maker/messages/es-AR.json +94 -0
  302. package/dist/tera-i18n/projects/cv-maker/messages/es-ES.json +94 -0
  303. package/dist/tera-i18n/projects/cv-maker/messages/es-MX.json +94 -0
  304. package/dist/tera-i18n/projects/cv-maker/messages/es.json +53 -10
  305. package/dist/tera-i18n/projects/cv-maker/messages/fi.json +52 -9
  306. package/dist/tera-i18n/projects/cv-maker/messages/fr-MA.json +94 -0
  307. package/dist/tera-i18n/projects/cv-maker/messages/fr.json +54 -11
  308. package/dist/tera-i18n/projects/cv-maker/messages/he.json +55 -12
  309. package/dist/tera-i18n/projects/cv-maker/messages/hi.json +59 -16
  310. package/dist/tera-i18n/projects/cv-maker/messages/hr.json +94 -0
  311. package/dist/tera-i18n/projects/cv-maker/messages/hu.json +63 -20
  312. package/dist/tera-i18n/projects/cv-maker/messages/id.json +60 -17
  313. package/dist/tera-i18n/projects/cv-maker/messages/it.json +53 -10
  314. package/dist/tera-i18n/projects/cv-maker/messages/ja.json +62 -19
  315. package/dist/tera-i18n/projects/cv-maker/messages/ko.json +61 -18
  316. package/dist/tera-i18n/projects/cv-maker/messages/lt.json +61 -18
  317. package/dist/tera-i18n/projects/cv-maker/messages/lv.json +61 -18
  318. package/dist/tera-i18n/projects/cv-maker/messages/ms-MY.json +60 -17
  319. package/dist/tera-i18n/projects/cv-maker/messages/ms.json +61 -18
  320. package/dist/tera-i18n/projects/cv-maker/messages/nl.json +53 -10
  321. package/dist/tera-i18n/projects/cv-maker/messages/no.json +54 -11
  322. package/dist/tera-i18n/projects/cv-maker/messages/pl.json +59 -16
  323. package/dist/tera-i18n/projects/cv-maker/messages/pt-BR.json +58 -15
  324. package/dist/tera-i18n/projects/cv-maker/messages/pt-PT.json +59 -16
  325. package/dist/tera-i18n/projects/cv-maker/messages/pt.json +66 -23
  326. package/dist/tera-i18n/projects/cv-maker/messages/ro.json +52 -9
  327. package/dist/tera-i18n/projects/cv-maker/messages/ru.json +57 -14
  328. package/dist/tera-i18n/projects/cv-maker/messages/sk.json +62 -19
  329. package/dist/tera-i18n/projects/cv-maker/messages/sl.json +57 -14
  330. package/dist/tera-i18n/projects/cv-maker/messages/sq.json +59 -16
  331. package/dist/tera-i18n/projects/cv-maker/messages/sr.json +91 -48
  332. package/dist/tera-i18n/projects/cv-maker/messages/sv.json +56 -13
  333. package/dist/tera-i18n/projects/cv-maker/messages/sw.json +62 -19
  334. package/dist/tera-i18n/projects/cv-maker/messages/ta.json +72 -29
  335. package/dist/tera-i18n/projects/cv-maker/messages/te.json +75 -32
  336. package/dist/tera-i18n/projects/cv-maker/messages/th.json +62 -19
  337. package/dist/tera-i18n/projects/cv-maker/messages/tl.json +77 -34
  338. package/dist/tera-i18n/projects/cv-maker/messages/tr.json +63 -20
  339. package/dist/tera-i18n/projects/cv-maker/messages/uk.json +63 -20
  340. package/dist/tera-i18n/projects/cv-maker/messages/vi.json +64 -21
  341. package/dist/tera-i18n/projects/cv-maker/messages/zh-CN.json +63 -20
  342. package/dist/tera-i18n/projects/cv-maker/messages/zh-TW.json +58 -15
  343. package/dist/tera-i18n/projects/cv-maker/messages/zh.json +94 -0
  344. package/dist/tera-i18n/projects/cv-maker/project.inlang/settings.json +82 -68
  345. package/dist/tera-i18n/projects/cv-maker/supported-language.js +36 -9
  346. package/dist/tera-i18n/projects/mathda/messages/en.json +4 -0
  347. package/dist/tera-i18n/projects/mathda/messages/vi.json +4 -0
  348. package/dist/tera-i18n/projects/mathda/project.inlang/settings.json +15 -0
  349. package/dist/tera-i18n/projects/mathda/supported-language.d.ts +1 -0
  350. package/dist/tera-i18n/projects/mathda/supported-language.js +4 -0
  351. package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +149 -72
  352. package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +149 -72
  353. package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +139 -62
  354. package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +132 -55
  355. package/dist/tera-i18n/projects/tera-calculator/messages/da.json +132 -55
  356. package/dist/tera-i18n/projects/tera-calculator/messages/de.json +181 -104
  357. package/dist/tera-i18n/projects/tera-calculator/messages/el.json +145 -68
  358. package/dist/tera-i18n/projects/tera-calculator/messages/en-IN.json +183 -0
  359. package/dist/tera-i18n/projects/tera-calculator/messages/en-PH.json +183 -0
  360. package/dist/tera-i18n/projects/tera-calculator/messages/en-US.json +183 -0
  361. package/dist/tera-i18n/projects/tera-calculator/messages/en.json +187 -104
  362. package/dist/tera-i18n/projects/tera-calculator/messages/es.json +181 -104
  363. package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +137 -60
  364. package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +180 -103
  365. package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +136 -59
  366. package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +141 -64
  367. package/dist/tera-i18n/projects/tera-calculator/messages/id.json +132 -55
  368. package/dist/tera-i18n/projects/tera-calculator/messages/it.json +180 -103
  369. package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +136 -59
  370. package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +133 -56
  371. package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +140 -63
  372. package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +141 -64
  373. package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +139 -62
  374. package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +145 -68
  375. package/dist/tera-i18n/projects/tera-calculator/messages/no.json +131 -54
  376. package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +134 -57
  377. package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +180 -103
  378. package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +136 -59
  379. package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +180 -103
  380. package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +135 -58
  381. package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +139 -62
  382. package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +148 -71
  383. package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +141 -64
  384. package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +134 -57
  385. package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +152 -75
  386. package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +159 -82
  387. package/dist/tera-i18n/projects/tera-calculator/messages/te.json +165 -88
  388. package/dist/tera-i18n/projects/tera-calculator/messages/th.json +136 -59
  389. package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +146 -69
  390. package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +135 -58
  391. package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +142 -65
  392. package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +181 -104
  393. package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +129 -52
  394. package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +135 -58
  395. package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +51 -53
  396. package/dist/tera-i18n/projects/tera-calculator/supported-language.js +6 -3
  397. package/dist/themes/tera-ui-base.css +242 -77
  398. package/dist/themes/theme-ai.css +100 -0
  399. package/dist/themes/theme-marketing.css +91 -0
  400. package/dist/themes/theme-professional.css +41 -0
  401. package/package.json +36 -29
  402. package/dist/paraglide/messages/ar.d.ts +0 -9
  403. package/dist/paraglide/messages/ar.js +0 -31
  404. package/dist/paraglide/messages/bg.d.ts +0 -9
  405. package/dist/paraglide/messages/bg.js +0 -31
  406. package/dist/paraglide/messages/bn.d.ts +0 -9
  407. package/dist/paraglide/messages/bn.js +0 -31
  408. package/dist/paraglide/messages/ca.d.ts +0 -9
  409. package/dist/paraglide/messages/ca.js +0 -31
  410. package/dist/paraglide/messages/cs.d.ts +0 -9
  411. package/dist/paraglide/messages/cs.js +0 -31
  412. package/dist/paraglide/messages/da.d.ts +0 -9
  413. package/dist/paraglide/messages/da.js +0 -31
  414. package/dist/paraglide/messages/de.d.ts +0 -9
  415. package/dist/paraglide/messages/de.js +0 -31
  416. package/dist/paraglide/messages/el.d.ts +0 -9
  417. package/dist/paraglide/messages/el.js +0 -31
  418. package/dist/paraglide/messages/en.d.ts +0 -9
  419. package/dist/paraglide/messages/en.js +0 -31
  420. package/dist/paraglide/messages/es.d.ts +0 -9
  421. package/dist/paraglide/messages/es.js +0 -31
  422. package/dist/paraglide/messages/fi.d.ts +0 -9
  423. package/dist/paraglide/messages/fi.js +0 -31
  424. package/dist/paraglide/messages/fr.d.ts +0 -9
  425. package/dist/paraglide/messages/fr.js +0 -31
  426. package/dist/paraglide/messages/he.d.ts +0 -9
  427. package/dist/paraglide/messages/he.js +0 -31
  428. package/dist/paraglide/messages/hi.d.ts +0 -9
  429. package/dist/paraglide/messages/hi.js +0 -31
  430. package/dist/paraglide/messages/hu.d.ts +0 -9
  431. package/dist/paraglide/messages/hu.js +0 -31
  432. package/dist/paraglide/messages/id.d.ts +0 -9
  433. package/dist/paraglide/messages/id.js +0 -31
  434. package/dist/paraglide/messages/it.d.ts +0 -9
  435. package/dist/paraglide/messages/it.js +0 -31
  436. package/dist/paraglide/messages/ja.d.ts +0 -9
  437. package/dist/paraglide/messages/ja.js +0 -31
  438. package/dist/paraglide/messages/ko.d.ts +0 -9
  439. package/dist/paraglide/messages/ko.js +0 -31
  440. package/dist/paraglide/messages/lt.d.ts +0 -9
  441. package/dist/paraglide/messages/lt.js +0 -31
  442. package/dist/paraglide/messages/lv.d.ts +0 -9
  443. package/dist/paraglide/messages/lv.js +0 -31
  444. package/dist/paraglide/messages/ms.d.ts +0 -9
  445. package/dist/paraglide/messages/ms.js +0 -31
  446. package/dist/paraglide/messages/nl.d.ts +0 -9
  447. package/dist/paraglide/messages/nl.js +0 -31
  448. package/dist/paraglide/messages/no.d.ts +0 -9
  449. package/dist/paraglide/messages/no.js +0 -31
  450. package/dist/paraglide/messages/pl.d.ts +0 -9
  451. package/dist/paraglide/messages/pl.js +0 -31
  452. package/dist/paraglide/messages/pt.d.ts +0 -9
  453. package/dist/paraglide/messages/pt.js +0 -31
  454. package/dist/paraglide/messages/ro.d.ts +0 -9
  455. package/dist/paraglide/messages/ro.js +0 -31
  456. package/dist/paraglide/messages/ru.d.ts +0 -9
  457. package/dist/paraglide/messages/ru.js +0 -31
  458. package/dist/paraglide/messages/sk.d.ts +0 -9
  459. package/dist/paraglide/messages/sk.js +0 -31
  460. package/dist/paraglide/messages/sl.d.ts +0 -9
  461. package/dist/paraglide/messages/sl.js +0 -31
  462. package/dist/paraglide/messages/sq.d.ts +0 -9
  463. package/dist/paraglide/messages/sq.js +0 -31
  464. package/dist/paraglide/messages/sr.d.ts +0 -9
  465. package/dist/paraglide/messages/sr.js +0 -31
  466. package/dist/paraglide/messages/sv.d.ts +0 -9
  467. package/dist/paraglide/messages/sv.js +0 -31
  468. package/dist/paraglide/messages/sw.d.ts +0 -9
  469. package/dist/paraglide/messages/sw.js +0 -31
  470. package/dist/paraglide/messages/ta.d.ts +0 -9
  471. package/dist/paraglide/messages/ta.js +0 -31
  472. package/dist/paraglide/messages/te.d.ts +0 -9
  473. package/dist/paraglide/messages/te.js +0 -31
  474. package/dist/paraglide/messages/th.d.ts +0 -9
  475. package/dist/paraglide/messages/th.js +0 -31
  476. package/dist/paraglide/messages/tl.d.ts +0 -9
  477. package/dist/paraglide/messages/tl.js +0 -31
  478. package/dist/paraglide/messages/tr.d.ts +0 -9
  479. package/dist/paraglide/messages/tr.js +0 -31
  480. package/dist/paraglide/messages/uk.d.ts +0 -9
  481. package/dist/paraglide/messages/uk.js +0 -31
  482. package/dist/paraglide/messages/vi.d.ts +0 -9
  483. package/dist/paraglide/messages/vi.js +0 -31
  484. package/dist/paraglide/messages/zh-CN.d.ts +0 -9
  485. package/dist/paraglide/messages/zh-CN.js +0 -31
  486. package/dist/paraglide/messages/zh-TW.d.ts +0 -9
  487. package/dist/paraglide/messages/zh-TW.js +0 -31
  488. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.txt +0 -21
  489. package/dist/tera-i18n/projects/cv-maker/project.inlang/project_id +0 -1
  490. package/dist/tera-i18n/projects/tera-calculator/messages/ar.json +0 -106
  491. package/dist/tera-i18n/projects/tera-calculator/messages/he.json +0 -106
  492. package/dist/tera-i18n/projects/tera-calculator/project.inlang/project_id +0 -1
  493. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/.meta.json +0 -3
  494. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/README.md +0 -103
  495. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/project_id +0 -1
  496. package/dist/themes/tw-preset.cjs +0 -160
  497. package/dist/themes/tw-preset.d.cts +0 -157
@@ -1,19 +1,9 @@
1
+ /**
2
+ * @component Tabs - Tabbed content panels with line and iOS segmented variants.
3
+ * Parts: Tabs, TabsList, TabsItem, TabsContent.
4
+ * Built on BitsUI Tabs primitive.
5
+ */
1
6
  import { getContext, setContext } from "svelte";
2
- const CONTEXT_KEY = 'tabs-context';
3
- export function createContext(props) {
4
- let currentTab = $state(props.currentTab);
5
- setContext(CONTEXT_KEY, {
6
- get currentTab() {
7
- return currentTab;
8
- },
9
- set currentTab(value) {
10
- if (currentTab !== value) {
11
- currentTab = value;
12
- props.onchange?.(value);
13
- }
14
- }
15
- });
16
- }
17
- export function getCtx() {
18
- return getContext(CONTEXT_KEY);
19
- }
7
+ const TABS_CTX = 'tera-tabs-ctx';
8
+ export const setTabsContext = (ctx) => setContext(TABS_CTX, ctx);
9
+ export const getTabsContext = () => getContext(TABS_CTX) ?? { variant: 'line', orientation: 'horizontal' };
@@ -1,33 +1,27 @@
1
- <script lang="ts">
2
- import {createContext, getCtx, type TabsProps} from "../Tabs.svelte";
3
- import {cn} from "../../../utils/utils";
4
-
5
- let {
6
- children,
7
- value = $bindable(),
8
- class: className,
9
- onchange,
10
- ...props
11
- }: TabsProps = $props();
12
-
13
- function onTabChange(currentTab: string) {
14
- onchange?.(currentTab)
15
- value = currentTab
16
- }
17
-
18
- createContext({
19
- currentTab: value,
20
- onchange: onTabChange
21
- })
22
-
23
- const context = getCtx()
24
-
25
- $effect(() => {
26
- context.currentTab = value
27
- })
28
- </script>
29
-
30
- <div data-tabs-root
31
- class={cn("grid grid-rows-[auto_1fr] max-h-full gap-2", className)}>
32
- {@render children?.()}
33
- </div>
1
+ <script lang="ts">import { Tabs as TabsPrimitive } from 'bits-ui';
2
+ import { cn } from '../../../utils/utils.js';
3
+ import { setTabsContext } from '../Tabs.svelte.js';
4
+ let { children, value = $bindable(null), class: className, variant = 'line', onchange, activationMode, orientation = 'horizontal', loop, ...props } = $props();
5
+ // Pass getter objects so consumers read the current value reactively
6
+ setTabsContext({
7
+ get variant() { return variant; },
8
+ get orientation() { return orientation; }
9
+ });
10
+ const isVertical = $derived(orientation === 'vertical');
11
+ </script>
12
+
13
+ <TabsPrimitive.Root
14
+ bind:value
15
+ onValueChange={onchange}
16
+ {activationMode}
17
+ {orientation}
18
+ {loop}
19
+ class={cn(
20
+ isVertical ? 'grid grid-cols-[auto_1fr]' : 'grid grid-rows-[auto_1fr]',
21
+ 'max-h-full gap-2',
22
+ className
23
+ )}
24
+ {...props}
25
+ >
26
+ {@render children?.()}
27
+ </TabsPrimitive.Root>
@@ -1,4 +1,4 @@
1
- import { type TabsProps } from "../Tabs.svelte";
1
+ import { type TabsProps } from '../Tabs.svelte.js';
2
2
  declare const Tabs: import("svelte").Component<TabsProps, {}, "value">;
3
3
  type Tabs = ReturnType<typeof Tabs>;
4
4
  export default Tabs;
@@ -1,36 +1,13 @@
1
- <script lang="ts">
2
- import {getCtx} from "../Tabs.svelte";
3
- import {cn} from "../../../utils/utils";
4
-
5
- let {
6
- children,
7
- class: className,
8
- value,
9
- ...props
10
- } = $props();
11
-
12
- let context = getCtx()
13
-
14
- $effect(() => {
15
- // console.log(context.state.currentTab)
16
- })
17
- </script>
18
-
19
- <div
20
- role="tabpanel"
21
- data-value={value}
22
- data-state={context.currentTab === value ? 'active' : 'inactive'}
23
- class={cn("bg-neutral-token-1 overflow-auto", className)}>
24
- {@render children?.()}
25
- </div>
26
-
27
- <style>
28
- [data-state="active"] {
29
- display: block;
30
- }
31
- [data-state="inactive"] {
32
- display: none;
33
- }
34
-
35
- </style>
36
-
1
+ <script lang="ts">import { Tabs as TabsPrimitive } from 'bits-ui';
2
+ import { cn } from '../../../utils/utils.js';
3
+ let { children, class: className, value, ref = $bindable(null), ...props } = $props();
4
+ </script>
5
+
6
+ <TabsPrimitive.Content
7
+ bind:ref
8
+ {value}
9
+ class={cn('overflow-auto', className)}
10
+ {...props}
11
+ >
12
+ {@render children?.()}
13
+ </TabsPrimitive.Content>
@@ -1,7 +1,4 @@
1
- declare const TabsContent: import("svelte").Component<{
2
- children: any;
3
- class: any;
4
- value: any;
5
- } & Record<string, any>, {}, "">;
1
+ import type { TabsContentProps } from '../Tabs.svelte.js';
2
+ declare const TabsContent: import("svelte").Component<TabsContentProps, {}, "ref">;
6
3
  type TabsContent = ReturnType<typeof TabsContent>;
7
4
  export default TabsContent;
@@ -1,32 +1,43 @@
1
- <script lang="ts">
2
- import {cn} from "../../../utils/utils";
3
- import {getCtx} from "../Tabs.svelte";
4
-
5
- let {
6
- children,
7
- class: className,
8
- value,
9
- ...props
10
- } = $props();
11
-
12
- let context = getCtx()
13
-
14
- </script>
15
-
16
- <div>
17
- <button class={cn("tab-button font-semibold px-2.5 py-1.5 text-neutral-token-8 hover:text-primary-token-4")}
18
- data-value={value}
19
- data-state={value === context.currentTab ? 'active' : 'inactive'}
20
- onclick={() => {
21
- context.currentTab = value
22
- }}
23
- >
24
- {@render children?.()}
25
- </button>
26
- </div>
27
-
28
- <style>
29
- button[data-state="active"] {
30
- color: var(--color-primary-token-7);
31
- }
32
- </style>
1
+ <script lang="ts">import { Tabs as TabsPrimitive } from 'bits-ui';
2
+ import { cn } from '../../../utils/utils.js';
3
+ import { getTabsContext } from '../Tabs.svelte.js';
4
+ let { children, class: className, value, ref = $bindable(null), ...props } = $props();
5
+ const ctx = getTabsContext();
6
+ const variant = $derived(ctx.variant);
7
+ </script>
8
+
9
+ {#if variant === 'ios'}
10
+ <!-- iOS: flex-1 equal width, no bg hover (pill handles visual feedback) -->
11
+ <TabsPrimitive.Trigger
12
+ bind:ref
13
+ {value}
14
+ class={cn(
15
+ 'relative z-10 flex-1 px-4 py-1.5 text-sm font-semibold text-center rounded-full select-none',
16
+ 'text-text-secondary',
17
+ 'data-[state=active]:text-text-primary',
18
+ 'transition-colors ease-ui duration-150',
19
+ 'outline-none focus-visible:shadow-focus',
20
+ className
21
+ )}
22
+ {...props}
23
+ >
24
+ {@render children?.()}
25
+ </TabsPrimitive.Trigger>
26
+ {:else}
27
+ <!-- Default line style -->
28
+ <TabsPrimitive.Trigger
29
+ bind:ref
30
+ {value}
31
+ class={cn(
32
+ 'tab-button font-semibold px-2.5 py-1.5 rounded',
33
+ 'text-text-secondary hover:text-primary-token-4 hover:bg-surface-hover',
34
+ 'transition-[color,background-color] ease-ui duration-150',
35
+ 'data-[state=active]:text-primary-token-7',
36
+ 'outline-none focus-visible:shadow-focus',
37
+ className
38
+ )}
39
+ {...props}
40
+ >
41
+ {@render children?.()}
42
+ </TabsPrimitive.Trigger>
43
+ {/if}
@@ -1,7 +1,4 @@
1
- declare const TabsItem: import("svelte").Component<{
2
- children: any;
3
- class: any;
4
- value: any;
5
- } & Record<string, any>, {}, "">;
1
+ import { type TabsItemProps } from '../Tabs.svelte.js';
2
+ declare const TabsItem: import("svelte").Component<TabsItemProps, {}, "ref">;
6
3
  type TabsItem = ReturnType<typeof TabsItem>;
7
4
  export default TabsItem;
@@ -1,58 +1,90 @@
1
- <script lang="ts">
2
- import {cn, consoleLog, observeVisibility} from "../../../utils/utils";
3
- import {getCtx} from "../Tabs.svelte";
4
- import {onMount} from "svelte";
5
-
6
- let {
7
- children,
8
- class: className,
9
- ...props
10
- } = $props();
11
-
12
- let tabIndicator = $state()
13
- let tabsList = $state()
14
-
15
- function updateIndicator() {
16
- if (!tabsList) return;
17
-
18
- let button = tabsList.querySelector(`button[data-value="${context.currentTab}"]`)
19
-
20
- const rect = button.getBoundingClientRect();
21
- const containerRect = tabsList.getBoundingClientRect();
22
-
23
- const left = rect.left - containerRect.left;
24
- const width = rect.width;
25
-
26
- tabIndicator.style.left = `${left}px`;
27
- tabIndicator.style.width = `${width}px`;
28
-
29
- // consoleLog('TabList', 'tabIndicator', tabIndicator)
30
- }
31
-
32
-
33
- let context = getCtx()
34
-
35
- $effect(() => {
36
- updateIndicator();
37
- })
38
-
39
- onMount(() => {
40
- const stopObserving = observeVisibility(tabIndicator, (isVisible, entry) => {
41
- if (isVisible) {
42
- updateIndicator()
43
- }
44
- });
45
-
46
- return () => stopObserving()
47
- })
48
- </script>
49
-
50
- <div bind:this={tabsList}
51
- data-tabs-list
52
- role="tablist"
53
- data-orientation="horizontal"
54
- class={cn("relative flex gap-2 items-end border-b border-neutral-token-5")}>
55
-
56
- {@render children?.()}
57
- <div bind:this={tabIndicator} class="absolute bottom-0 h-0.5 bg-primary-token-5 transition-all duration-300"></div>
58
- </div>
1
+ <script lang="ts">import { Tabs as TabsPrimitive } from 'bits-ui';
2
+ import { cn } from '../../../utils/utils.js';
3
+ import { getTabsContext } from '../Tabs.svelte.js';
4
+ let { children, class: className, ref = $bindable(null), ...props } = $props();
5
+ const ctx = getTabsContext();
6
+ const variant = $derived(ctx.variant);
7
+ const orientation = $derived(ctx.orientation);
8
+ const isVertical = $derived(orientation === 'vertical');
9
+ let tabsList = $state(null);
10
+ let tabIndicator = $state(null);
11
+ function updateIndicator() {
12
+ if (!tabsList || !tabIndicator)
13
+ return;
14
+ const active = tabsList.querySelector('[data-state="active"]');
15
+ if (!active)
16
+ return;
17
+ const containerRect = tabsList.getBoundingClientRect();
18
+ const rect = active.getBoundingClientRect();
19
+ if (isVertical) {
20
+ tabIndicator.style.top = `${rect.top - containerRect.top}px`;
21
+ tabIndicator.style.height = `${rect.height}px`;
22
+ tabIndicator.style.left = '';
23
+ tabIndicator.style.width = '';
24
+ }
25
+ else {
26
+ tabIndicator.style.left = `${rect.left - containerRect.left}px`;
27
+ tabIndicator.style.width = `${rect.width}px`;
28
+ tabIndicator.style.top = '';
29
+ tabIndicator.style.height = '';
30
+ }
31
+ }
32
+ $effect(() => {
33
+ if (!tabsList)
34
+ return;
35
+ // Initial position (rAF lets the browser settle before measuring)
36
+ requestAnimationFrame(updateIndicator);
37
+ // React to BitsUI's data-state attribute changes on trigger buttons
38
+ const mo = new MutationObserver(() => requestAnimationFrame(updateIndicator));
39
+ mo.observe(tabsList, { attributes: true, attributeFilter: ['data-state'], subtree: true });
40
+ // Reposition on container resize (e.g. responsive layout shift)
41
+ const ro = new ResizeObserver(() => requestAnimationFrame(updateIndicator));
42
+ ro.observe(tabsList);
43
+ return () => {
44
+ mo.disconnect();
45
+ ro.disconnect();
46
+ };
47
+ });
48
+ </script>
49
+
50
+ {#if variant === 'ios'}
51
+ <!-- iOS segmented control: gray pill container, sliding white background — horizontal only -->
52
+ <TabsPrimitive.List
53
+ bind:ref={tabsList}
54
+ class={cn('relative flex bg-neutral-token-3 p-1 rounded-full', className)}
55
+ {...props}
56
+ >
57
+ {@render children?.()}
58
+ <!-- Sliding white pill (background layer) -->
59
+ <div
60
+ bind:this={tabIndicator}
61
+ class="absolute inset-y-1 rounded-full bg-surface shadow-sm transition-[left,width] duration-200 ease-spring pointer-events-none"
62
+ ></div>
63
+ </TabsPrimitive.List>
64
+ {:else if isVertical}
65
+ <!-- Vertical line style: right-side accent bar indicator -->
66
+ <TabsPrimitive.List
67
+ bind:ref={tabsList}
68
+ class={cn('relative flex flex-col gap-1 border-r border-border-default', className)}
69
+ {...props}
70
+ >
71
+ {@render children?.()}
72
+ <div
73
+ bind:this={tabIndicator}
74
+ class="absolute right-0 w-0.5 rounded-full bg-primary-token-5 transition-[top,height] duration-150 ease-ui pointer-events-none"
75
+ ></div>
76
+ </TabsPrimitive.List>
77
+ {:else}
78
+ <!-- Default horizontal line style: underline indicator -->
79
+ <TabsPrimitive.List
80
+ bind:ref={tabsList}
81
+ class={cn('relative flex gap-2 items-end border-b border-border-default', className)}
82
+ {...props}
83
+ >
84
+ {@render children?.()}
85
+ <div
86
+ bind:this={tabIndicator}
87
+ class="absolute bottom-0 h-0.5 rounded-full bg-primary-token-5 transition-[left,width] duration-150 ease-ui pointer-events-none"
88
+ ></div>
89
+ </TabsPrimitive.List>
90
+ {/if}
@@ -1,6 +1,4 @@
1
- declare const TabsList: import("svelte").Component<{
2
- children: any;
3
- class: any;
4
- } & Record<string, any>, {}, "">;
1
+ import { type TabsListProps } from '../Tabs.svelte.js';
2
+ declare const TabsList: import("svelte").Component<TabsListProps, {}, "ref">;
5
3
  type TabsList = ReturnType<typeof TabsList>;
6
4
  export default TabsList;
@@ -1,26 +1,13 @@
1
- <script lang="ts">
2
- import {type TeraUiContextProps} from "./TeraUiContext";
3
- import {setGlobalContext} from "./global-context";
4
-
5
- let {
6
- children,
7
- supportLanguages = ['en'],
8
- language = 'en',
9
- ...props
10
- }: TeraUiContextProps = $props();
11
-
12
- setGlobalContext({
13
- supportLanguages,
14
- language,
15
- ...props
16
- })
17
-
18
- // console.log('tera-system-ui', 'TeraUIContext props', {
19
- // supportLanguages,
20
- // language,
21
- // ...props
22
- // })
23
-
24
- </script>
25
-
26
- {@render children()}
1
+ <script lang="ts">import { untrack } from 'svelte';
2
+ import {} from "./TeraUiContext";
3
+ import { setGlobalContext } from "./global-context";
4
+ let { children, supportLanguages = ['en'], language = 'en', ...props } = $props();
5
+ // setContext must be called once during init — untrack signals this is intentional
6
+ setGlobalContext(untrack(() => ({
7
+ supportLanguages,
8
+ language,
9
+ ...props
10
+ })));
11
+ </script>
12
+
13
+ {@render children()}
@@ -23,7 +23,7 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
23
23
  error: string;
24
24
  warning: string;
25
25
  };
26
- }, undefined, "w-full inline-flex items-start rounded-md outline-none font-normal text-neutral-token-13 placeholder:text-neutral-token-7 resize-y", {
26
+ }, undefined, "w-full inline-flex items-start rounded-md outline-none font-normal text-text-primary placeholder:text-text-tertiary resize-y transition-[border-color,box-shadow,background-color,height] ease-ui duration-150", {
27
27
  variant: {
28
28
  outlined: string;
29
29
  filled: string;
@@ -67,7 +67,7 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
67
67
  error: string;
68
68
  warning: string;
69
69
  };
70
- }, undefined, "w-full inline-flex items-start rounded-md outline-none font-normal text-neutral-token-13 placeholder:text-neutral-token-7 resize-y", unknown, unknown, undefined>>;
70
+ }, undefined, "w-full inline-flex items-start rounded-md outline-none font-normal text-text-primary placeholder:text-text-tertiary resize-y transition-[border-color,box-shadow,background-color,height] ease-ui duration-150", unknown, unknown, undefined>>;
71
71
  type TextAreaVariants = VariantProps<typeof styles>;
72
72
  export type AutoSizeConfig = boolean | {
73
73
  minRows?: number;
@@ -1,14 +1,14 @@
1
1
  import { tv } from "tailwind-variants";
2
2
  export const styles = tv({
3
- base: 'w-full inline-flex items-start rounded-md outline-none font-normal text-neutral-token-13 placeholder:text-neutral-token-7 resize-y',
3
+ base: 'w-full inline-flex items-start rounded-md outline-none font-normal text-text-primary placeholder:text-text-tertiary resize-y transition-[border-color,box-shadow,background-color,height] ease-ui duration-150',
4
4
  variants: {
5
5
  variant: {
6
- outlined: 'border border-neutral-token-5 bg-neutral-token-1 hover:border-primary-500 focus:border-primary-600 focus:shadow-[0_0_0_2px_rgba(59,130,246,0.1)] transition-all duration-200',
7
- filled: 'bg-neutral-token-3 border border-transparent hover:bg-neutral-token-4 focus:bg-neutral-token-1 focus:border-primary-600 focus:shadow-[0_0_0_2px_rgba(59,130,246,0.1)] transition-all duration-200',
8
- borderless: 'bg-transparent border-0 hover:bg-neutral-token-2 focus:bg-neutral-token-2 transition-all duration-200',
6
+ outlined: 'border border-border-default bg-surface hover:border-interactive focus:border-interactive-hover focus:shadow-focus',
7
+ filled: 'bg-surface-sunken border border-transparent hover:bg-surface-hover focus:bg-surface focus:border-interactive-hover focus:shadow-focus',
8
+ borderless: 'bg-transparent border-0 hover:bg-surface-raised focus:bg-surface-raised',
9
9
  },
10
10
  disabled: {
11
- true: 'cursor-not-allowed bg-neutral-token-3 text-neutral-token-7 border-neutral-token-5 resize-none',
11
+ true: 'cursor-not-allowed bg-surface-sunken text-text-disabled border-border-default resize-none',
12
12
  false: 'cursor-text',
13
13
  },
14
14
  size: {
@@ -20,20 +20,20 @@ export const styles = tv({
20
20
  true: 'pr-9'
21
21
  },
22
22
  status: {
23
- error: 'border-error-500 hover:border-error-400 focus:border-error-500 focus:shadow-[0_0_0_2px_rgba(239,68,68,0.1)]',
24
- warning: 'border-warning-500 hover:border-warning-400 focus:border-warning-500 focus:shadow-[0_0_0_2px_rgba(249,115,22,0.1)]',
23
+ error: 'border-error-default hover:border-error-hover focus:border-error-default focus:shadow-focus-error',
24
+ warning: 'border-warning-default hover:border-warning-hover focus:border-warning-default focus:shadow-focus-warning',
25
25
  },
26
26
  },
27
27
  compoundVariants: [
28
28
  {
29
29
  variant: 'outlined',
30
30
  disabled: true,
31
- class: 'hover:border-neutral-token-5'
31
+ class: 'hover:border-border-default'
32
32
  },
33
33
  {
34
34
  variant: 'filled',
35
35
  disabled: true,
36
- class: 'hover:bg-neutral-token-3'
36
+ class: 'hover:bg-surface-sunken'
37
37
  },
38
38
  {
39
39
  variant: 'borderless',
@@ -1,80 +1,56 @@
1
- <script lang="ts">
2
- import {type AutoSizeConfig, type TextAreaProps} from "./TextArea";
3
- import {styles} from "./TextArea";
4
- import {IconX} from "../icons";
5
-
6
- let {
7
- children,
8
- class: className,
9
- value = $bindable(),
10
- ref = $bindable(),
11
- size = 'md',
12
- disabled,
13
- variant = 'outlined',
14
- autoSize,
15
- rows,
16
- allowClear,
17
- showCount,
18
- maxLength,
19
- status,
20
- ...props
21
- }: TextAreaProps = $props();
22
-
23
- let textLength = $derived(value?.length || 0);
24
-
25
- function createAutoSizeTextarea(node: HTMLTextAreaElement, autoSize?: AutoSizeConfig) {
26
- if (!autoSize) {
27
- return;
28
- }
29
- let minRows: number | null = null;
30
- let maxRows: number | null = null;
31
- if (autoSize === true) {
32
- minRows = 1;
33
- } else {
34
- minRows = Math.max(autoSize.minRows || 0, 1);
35
- maxRows = autoSize.maxRows || null;
36
- }
37
-
38
- const updateSize = () => {
39
- node.style.height = 'auto';
40
- const computedStyle = window.getComputedStyle(node);
41
- const borderTopWidth = parseFloat(computedStyle.borderTopWidth);
42
- const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);
43
- const offset = borderTopWidth + borderBottomWidth;
44
- const scrollHeight = node.scrollHeight + 4;
45
-
46
- const lineHeight = parseFloat(computedStyle.lineHeight);
47
- const minHeight = minRows! * lineHeight + offset;
48
- const maxHeight = maxRows ? maxRows * lineHeight : null;
49
-
50
- node.style.height = `${Math.max(minHeight, Math.min(scrollHeight, maxHeight ?? scrollHeight))}px`;
51
- };
52
-
53
- $effect(() => {
54
- value;
55
- updateSize();
56
- });
57
- }
58
-
59
- function clearText() {
60
- value = '';
61
- ref?.focus();
62
- }
1
+ <script lang="ts">import {} from "./TextArea";
2
+ import { styles } from "./TextArea";
3
+ import { IconX } from "../icons";
4
+ let { children, class: className, value = $bindable(), ref = $bindable(), size = 'md', disabled, variant = 'outlined', autoSize, rows, allowClear, showCount, maxLength, status, ...props } = $props();
5
+ let textLength = $derived(value?.length || 0);
6
+ function createAutoSizeTextarea(node, autoSize) {
7
+ if (!autoSize) {
8
+ return;
9
+ }
10
+ let minRows = null;
11
+ let maxRows = null;
12
+ if (autoSize === true) {
13
+ minRows = 1;
14
+ }
15
+ else {
16
+ minRows = Math.max(autoSize.minRows || 0, 1);
17
+ maxRows = autoSize.maxRows || null;
18
+ }
19
+ const updateSize = () => {
20
+ node.style.height = 'auto';
21
+ const computedStyle = window.getComputedStyle(node);
22
+ const borderTopWidth = parseFloat(computedStyle.borderTopWidth);
23
+ const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);
24
+ const offset = borderTopWidth + borderBottomWidth;
25
+ const scrollHeight = node.scrollHeight;
26
+ const lineHeight = parseFloat(computedStyle.lineHeight);
27
+ const minHeight = minRows * lineHeight + offset;
28
+ const maxHeight = maxRows ? maxRows * lineHeight : null;
29
+ node.style.height = `${Math.max(minHeight, Math.min(scrollHeight, maxHeight ?? scrollHeight))}px`;
30
+ };
31
+ $effect(() => {
32
+ value;
33
+ updateSize();
34
+ });
35
+ }
36
+ function clearText() {
37
+ value = '';
38
+ ref?.focus();
39
+ }
63
40
  </script>
64
41
 
65
42
  <div class="relative w-full">
66
43
  <textarea
67
44
  bind:this={ref}
68
45
  use:createAutoSizeTextarea={autoSize}
69
- style={autoSize ? "resize: none;" : ''}
46
+ style={autoSize ? "resize: none; transition-property: border-color, box-shadow, background-color;" : ''}
70
47
  class={styles({ variant, disabled , size, className, allowClear, status })}
71
48
  {disabled}
72
49
  rows={autoSize ? 1 : rows}
73
50
  maxlength={maxLength}
74
51
  {...props}
75
52
  bind:value
76
- >
77
- </textarea>
53
+ ></textarea>
78
54
 
79
55
  {#if allowClear && value && !disabled}
80
56
  <button