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
@@ -0,0 +1,2 @@
1
+ Read file in /llms/index.md for installation instructions, setup, and basic usage of the Tera System UI component
2
+ library. Each component has its own guide linked in the Component Guides section.
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @component Accordion - Collapsible content panels with single or multi-open support.
3
+ * Built on BitsUI Accordion primitive with full keyboard navigation.
4
+ */
1
5
  import { type VariantProps } from "tailwind-variants";
2
6
  import type { Snippet } from "svelte";
3
7
  import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
@@ -5,15 +9,30 @@ export declare const styles: import("tailwind-variants").TVReturnType<{}, undefi
5
9
  type AccordionVariants = VariantProps<typeof styles>;
6
10
  export interface AccordionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onchange'>, AccordionVariants {
7
11
  children?: Snippet;
12
+ /** Additional CSS classes for the root element. */
8
13
  class?: string;
14
+ /** Whether only one item can be open at a time ('single') or many ('multiple'). */
9
15
  type: 'multiple' | 'single';
16
+ /** The currently open item value(s). Bindable. */
10
17
  value: string | string[];
18
+ /** Called when the open item(s) change. */
11
19
  onchange?: (value: string | string[]) => void;
20
+ /** Use controlled mode — manage value externally and pass it back via onchange. */
12
21
  controlledValue?: boolean;
22
+ /** Whether the entire accordion is disabled. */
23
+ disabled?: boolean;
24
+ /** Whether keyboard navigation wraps around at the first/last item. */
25
+ loop?: boolean;
26
+ /** Layout orientation — affects arrow-key navigation direction. */
27
+ orientation?: 'horizontal' | 'vertical';
28
+ /** Bindable reference to the root element. */
13
29
  ref?: HTMLDivElement | null;
14
30
  }
15
31
  export interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {
32
+ /** Unique identifier for this item — matched against the root `value`. */
16
33
  value: string;
34
+ /** Prevents the user from interacting with this specific item. */
35
+ disabled?: boolean;
17
36
  ref?: HTMLDivElement | null;
18
37
  children?: Snippet;
19
38
  }
@@ -23,6 +42,11 @@ export interface AccordionTriggerProps extends HTMLButtonAttributes {
23
42
  }
24
43
  export interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {
25
44
  children?: Snippet;
45
+ /**
46
+ * Keep the content mounted in the DOM even when the item is collapsed.
47
+ * Useful for Svelte transitions or preserving internal component state.
48
+ */
49
+ forceMount?: boolean;
26
50
  ref?: HTMLDivElement | null;
27
51
  }
28
52
  export {};
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @component Accordion - Collapsible content panels with single or multi-open support.
3
+ * Built on BitsUI Accordion primitive with full keyboard navigation.
4
+ */
1
5
  import { tv } from "tailwind-variants";
2
6
  export const styles = tv({
3
7
  base: '',
@@ -1,11 +1,5 @@
1
- <script lang="ts">
2
- import {Accordion as AccordionPrimitive} from "bits-ui";
3
-
4
- let {
5
- ref = $bindable(null),
6
- value = $bindable(),
7
- ...restProps
8
- }: AccordionPrimitive.RootProps = $props();
1
+ <script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
2
+ let { ref = $bindable(null), value = $bindable(), ...restProps } = $props();
9
3
  </script>
10
4
 
11
5
  <AccordionPrimitive.Root
@@ -1,22 +1,15 @@
1
- <script lang="ts">
2
- import { Accordion as AccordionPrimitive, type WithoutChild } from "bits-ui";
3
- import {cn} from "../../../utils";
4
-
5
- let {
6
- ref = $bindable(null),
7
- class: className,
8
- children,
9
- ...restProps
10
- }: WithoutChild<AccordionPrimitive.ContentProps> = $props();
1
+ <script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
2
+ import { cn } from "../../../utils";
3
+ let { ref = $bindable(null), class: className, children, ...restProps } = $props();
11
4
  </script>
12
5
 
13
6
  <AccordionPrimitive.Content
14
7
  bind:ref
15
8
  class={cn(
16
- "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm transition-all pb-4",
9
+ "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
17
10
  className
18
11
  )}
19
12
  {...restProps}
20
13
  >
21
- {@render children?.()}
14
+ <div class="pb-4">{@render children?.()}</div>
22
15
  </AccordionPrimitive.Content>
@@ -1,12 +1,6 @@
1
- <script lang="ts">
2
- import { Accordion as AccordionPrimitive } from "bits-ui";
3
- import {cn} from "../../../utils";
4
-
5
- let {
6
- ref = $bindable(null),
7
- class: className,
8
- ...restProps
9
- }: AccordionPrimitive.ItemProps = $props();
1
+ <script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
2
+ import { cn } from "../../../utils";
3
+ let { ref = $bindable(null), class: className, ...restProps } = $props();
10
4
  </script>
11
5
 
12
6
  <AccordionPrimitive.Item bind:ref class={cn("border-b", className)} {...restProps} />
@@ -1,17 +1,7 @@
1
- <script lang="ts">
2
- import { Accordion as AccordionPrimitive, type WithoutChild } from "bits-ui";
3
- import { cn } from "../../../utils";
4
- import {IconChevronDown} from "../../icons";
5
-
6
- let {
7
- ref = $bindable(null),
8
- class: className,
9
- level = 3,
10
- children,
11
- ...restProps
12
- }: WithoutChild<AccordionPrimitive.TriggerProps> & {
13
- level?: AccordionPrimitive.HeaderProps["level"];
14
- } = $props();
1
+ <script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
2
+ import { cn } from "../../../utils";
3
+ import { IconChevronDown } from "../../icons";
4
+ let { ref = $bindable(null), class: className, level = 3, children, ...restProps } = $props();
15
5
  </script>
16
6
 
17
7
  <AccordionPrimitive.Header {level} class="flex">
@@ -24,6 +14,6 @@
24
14
  {...restProps}
25
15
  >
26
16
  {@render children?.()}
27
- <IconChevronDown class="size-4 shrink-0 transition-transform duration-200" />
17
+ <IconChevronDown class="size-4 shrink-0 transition-transform ease-ui duration-150" />
28
18
  </AccordionPrimitive.Trigger>
29
19
  </AccordionPrimitive.Header>
@@ -0,0 +1,35 @@
1
+ <script lang="ts">let { role, content, avatar, timestamp, status = 'sent', class: className = '', } = $props();
2
+ const isUser = $derived(role === 'user');
3
+ export {};
4
+ </script>
5
+
6
+ <div
7
+ class="flex gap-2 animate-in slide-in-from-bottom-2 fade-in duration-300 ease-spring {isUser ? 'flex-row-reverse' : 'flex-row'} {className}"
8
+ >
9
+ {#if avatar}
10
+ <div class="shrink-0 size-8">{@render avatar()}</div>
11
+ {/if}
12
+
13
+ <div class="flex flex-col gap-1 max-w-[75%] {isUser ? 'items-end' : 'items-start'}">
14
+ <div
15
+ class="px-4 py-2.5 text-sm leading-relaxed {isUser
16
+ ? 'bg-interactive-subtle text-text-primary rounded-2xl rounded-br-sm'
17
+ : 'bg-surface-raised text-text-primary rounded-2xl rounded-bl-sm border border-border-default'}"
18
+ >
19
+ {#if typeof content === 'string'}
20
+ {content}
21
+ {:else}
22
+ {@render content()}
23
+ {/if}
24
+ </div>
25
+
26
+ <div class="flex items-center gap-1.5 text-[10px] text-text-tertiary">
27
+ {#if timestamp}<span>{timestamp}</span>{/if}
28
+ {#if isUser && status === 'sending'}
29
+ <span class="italic">Sending…</span>
30
+ {:else if isUser && status === 'error'}
31
+ <span class="text-error-500">Failed to send</span>
32
+ {/if}
33
+ </div>
34
+ </div>
35
+ </div>
@@ -0,0 +1,12 @@
1
+ import type { Snippet } from 'svelte';
2
+ type $$ComponentProps = {
3
+ role: 'user' | 'assistant';
4
+ content: string | Snippet;
5
+ avatar?: Snippet;
6
+ timestamp?: string;
7
+ status?: 'sending' | 'sent' | 'error';
8
+ class?: string;
9
+ };
10
+ declare const ChatBubble: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type ChatBubble = ReturnType<typeof ChatBubble>;
12
+ export default ChatBubble;
@@ -0,0 +1,58 @@
1
+ <script lang="ts">import ThinkingLoader from './ThinkingLoader.svelte';
2
+ import SuggestionChips from './SuggestionChips.svelte';
3
+ let { value = $bindable(''), onsubmit, placeholder = 'Ask me anything…', maxLength, loading, disabled, suggestions = [], class: className = '', } = $props();
4
+ function handleKeydown(e) {
5
+ if (e.key === 'Enter' && !e.shiftKey && !loading && value.trim()) {
6
+ e.preventDefault();
7
+ submit();
8
+ }
9
+ }
10
+ function submit() {
11
+ if (!value.trim() || loading)
12
+ return;
13
+ onsubmit?.(value);
14
+ }
15
+ function handleSuggestion(s) {
16
+ value = Array.isArray(s) ? s[0] : s;
17
+ }
18
+ </script>
19
+
20
+ <div class="flex flex-col gap-2 {className}">
21
+ {#if suggestions.length > 0}
22
+ <SuggestionChips {suggestions} onSelect={handleSuggestion} />
23
+ {/if}
24
+
25
+ <div
26
+ class="relative flex items-end gap-2 border rounded bg-surface transition-[border-color,box-shadow] ease-ui duration-150
27
+ {loading ? 'border-interactive shadow-glow' : 'border-border-default focus-within:border-interactive focus-within:shadow-focus'}"
28
+ >
29
+ <textarea
30
+ class="flex-1 resize-none bg-transparent outline-none px-3 py-2.5 text-sm text-text-primary placeholder:text-text-tertiary min-h-[42px] max-h-40"
31
+ {placeholder}
32
+ maxlength={maxLength}
33
+ {disabled}
34
+ bind:value
35
+ onkeydown={handleKeydown}
36
+ rows={1}
37
+ ></textarea>
38
+
39
+ <div class="shrink-0 pb-2 pr-2">
40
+ {#if loading}
41
+ <ThinkingLoader size="sm" />
42
+ {:else}
43
+ <button
44
+ type="button"
45
+ class="size-7 rounded-full flex items-center justify-center transition-colors ease-ui duration-150
46
+ {value.trim() ? 'bg-interactive text-interactive-on' : 'bg-surface-hover text-text-tertiary cursor-not-allowed'}"
47
+ onclick={submit}
48
+ disabled={!value.trim() || disabled}
49
+ aria-label="Send"
50
+ >
51
+ <svg class="size-3.5" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
52
+ <path d="M7 12V2M2 7l5-5 5 5"/>
53
+ </svg>
54
+ </button>
55
+ {/if}
56
+ </div>
57
+ </div>
58
+ </div>
@@ -0,0 +1,13 @@
1
+ type $$ComponentProps = {
2
+ value?: string;
3
+ onsubmit?: (value: string) => void;
4
+ placeholder?: string;
5
+ maxLength?: number;
6
+ loading?: boolean;
7
+ disabled?: boolean;
8
+ suggestions?: string[];
9
+ class?: string;
10
+ };
11
+ declare const PromptInput: import("svelte").Component<$$ComponentProps, {}, "value">;
12
+ type PromptInput = ReturnType<typeof PromptInput>;
13
+ export default PromptInput;
@@ -0,0 +1,41 @@
1
+ <script lang="ts">"use strict";
2
+ let { text, speed = 'normal', onComplete, cursor = true, class: className = '', } = $props();
3
+ const msPerChar = { slow: 30, normal: 15, fast: 5 };
4
+ let displayed = $state('');
5
+ let done = $state(false);
6
+ let timer;
7
+ $effect(() => {
8
+ displayed = '';
9
+ done = false;
10
+ let i = 0;
11
+ clearInterval(timer);
12
+ timer = setInterval(() => {
13
+ if (i < text.length) {
14
+ displayed += text[i];
15
+ i++;
16
+ }
17
+ else {
18
+ clearInterval(timer);
19
+ done = true;
20
+ onComplete?.();
21
+ }
22
+ }, msPerChar[speed]);
23
+ return () => clearInterval(timer);
24
+ });
25
+ </script>
26
+
27
+ <span aria-live="polite" class={className}>
28
+ {displayed}{#if cursor && !done}<span class="cursor-blink">|</span>{/if}
29
+ </span>
30
+
31
+ <style>
32
+ .cursor-blink {
33
+ animation: blink 530ms step-end infinite;
34
+ margin-left: 1px;
35
+ }
36
+
37
+ @keyframes blink {
38
+ 0%, 100% { opacity: 1; }
39
+ 50% { opacity: 0; }
40
+ }
41
+ </style>
@@ -0,0 +1,11 @@
1
+ type StreamSpeed = 'slow' | 'normal' | 'fast';
2
+ type $$ComponentProps = {
3
+ text: string;
4
+ speed?: StreamSpeed;
5
+ onComplete?: () => void;
6
+ cursor?: boolean;
7
+ class?: string;
8
+ };
9
+ declare const StreamText: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type StreamText = ReturnType<typeof StreamText>;
11
+ export default StreamText;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">"use strict";
2
+ let { suggestions, onSelect, label, multiple, class: className = '', } = $props();
3
+ let selected = $state([]);
4
+ function toggle(s) {
5
+ if (multiple) {
6
+ selected = selected.includes(s) ? selected.filter(x => x !== s) : [...selected, s];
7
+ onSelect?.(selected);
8
+ }
9
+ else {
10
+ selected = [s];
11
+ onSelect?.(s);
12
+ }
13
+ }
14
+ </script>
15
+
16
+ <div class="flex flex-col gap-2 {className}">
17
+ {#if label}
18
+ <p class="text-xs text-text-tertiary">{label}</p>
19
+ {/if}
20
+ <div class="flex flex-wrap gap-2 overflow-x-auto">
21
+ {#each suggestions as s (s)}
22
+ <button
23
+ type="button"
24
+ class="inline-flex items-center px-3 py-1.5 rounded-full text-xs font-medium border transition-[background-color,border-color,color] ease-ui duration-150 whitespace-nowrap
25
+ {selected.includes(s)
26
+ ? 'bg-interactive-subtle border-interactive text-primary-700'
27
+ : 'bg-surface-raised border-border-default text-text-secondary hover:bg-surface-hover hover:border-border-strong'}"
28
+ onclick={() => toggle(s)}
29
+ >
30
+ {s}
31
+ </button>
32
+ {/each}
33
+ </div>
34
+ </div>
@@ -0,0 +1,10 @@
1
+ type $$ComponentProps = {
2
+ suggestions: string[];
3
+ onSelect?: (value: string | string[]) => void;
4
+ label?: string;
5
+ multiple?: boolean;
6
+ class?: string;
7
+ };
8
+ declare const SuggestionChips: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type SuggestionChips = ReturnType<typeof SuggestionChips>;
10
+ export default SuggestionChips;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">"use strict";
2
+ let { variant = 'dots', size = 'md', label, class: className = '', } = $props();
3
+ const dotSize = { sm: 'size-1.5', md: 'size-2' };
4
+ </script>
5
+
6
+ <div
7
+ class="inline-flex items-center gap-2 {className}"
8
+ aria-label="AI is thinking"
9
+ role="status"
10
+ >
11
+ <div class="flex items-center gap-1">
12
+ {#each [0, 1, 2] as i (i)}
13
+ <span
14
+ class="rounded-full bg-interactive {dotSize[size]}"
15
+ style="animation: {variant === 'pulse' ? `pulse-dot 800ms ${i * 160}ms ease-in-out infinite` : `wave-dot 1.2s ${i * 150}ms ease-[var(--ease-spring)] infinite`}"
16
+ ></span>
17
+ {/each}
18
+ </div>
19
+ {#if label}
20
+ <span class="text-xs text-text-tertiary">{label}</span>
21
+ {/if}
22
+ </div>
23
+
24
+ <style>
25
+ @keyframes wave-dot {
26
+ 0%, 100% { transform: translateY(0); }
27
+ 40% { transform: translateY(-6px); }
28
+ }
29
+
30
+ @keyframes pulse-dot {
31
+ 0%, 100% { opacity: 0.3; }
32
+ 50% { opacity: 1; }
33
+ }
34
+ </style>
@@ -0,0 +1,11 @@
1
+ type ThinkingVariant = 'dots' | 'wave' | 'pulse';
2
+ type ThinkingSize = 'sm' | 'md';
3
+ type $$ComponentProps = {
4
+ variant?: ThinkingVariant;
5
+ size?: ThinkingSize;
6
+ label?: string;
7
+ class?: string;
8
+ };
9
+ declare const ThinkingLoader: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type ThinkingLoader = ReturnType<typeof ThinkingLoader>;
11
+ export default ThinkingLoader;
@@ -0,0 +1,5 @@
1
+ export { default as ChatBubble } from './ChatBubble.svelte';
2
+ export { default as StreamText } from './StreamText.svelte';
3
+ export { default as ThinkingLoader } from './ThinkingLoader.svelte';
4
+ export { default as SuggestionChips } from './SuggestionChips.svelte';
5
+ export { default as PromptInput } from './PromptInput.svelte';
@@ -0,0 +1,5 @@
1
+ export { default as ChatBubble } from './ChatBubble.svelte';
2
+ export { default as StreamText } from './StreamText.svelte';
3
+ export { default as ThinkingLoader } from './ThinkingLoader.svelte';
4
+ export { default as SuggestionChips } from './SuggestionChips.svelte';
5
+ export { default as PromptInput } from './PromptInput.svelte';
@@ -0,0 +1,47 @@
1
+ <script lang="ts">let { variant = 'info', title, description, closable, icon = true, children, class: className = '', ...props } = $props();
2
+ let visible = $state(true);
3
+ const config = {
4
+ info: { bg: 'bg-information-50', border: 'border-l-4 border-information-500', icon: 'ℹ', iconColor: 'text-information-600', textColor: 'text-information-900' },
5
+ success: { bg: 'bg-success-50', border: 'border-l-4 border-success-500', icon: '✓', iconColor: 'text-success-600', textColor: 'text-success-900' },
6
+ warning: { bg: 'bg-warning-50', border: 'border-l-4 border-warning-500', icon: '⚠', iconColor: 'text-warning-600', textColor: 'text-warning-900' },
7
+ error: { bg: 'bg-error-50', border: 'border-l-4 border-error-500', icon: '✕', iconColor: 'text-error-600', textColor: 'text-error-900' },
8
+ };
9
+ const c = $derived(config[variant]);
10
+ export {};
11
+ </script>
12
+
13
+ {#if visible}
14
+ <div
15
+ role="alert"
16
+ class="{c.bg} {c.border} rounded p-4 flex gap-3 {className}"
17
+ {...props}
18
+ >
19
+ {#if icon}
20
+ <span class="shrink-0 font-bold text-base leading-none mt-0.5 {c.iconColor}">{c.icon}</span>
21
+ {/if}
22
+ <div class="flex-1 min-w-0">
23
+ {#if title}
24
+ <p class="font-medium text-sm {c.textColor} mb-0.5">{title}</p>
25
+ {/if}
26
+ {#if typeof description === 'string'}
27
+ <p class="text-sm {c.textColor} opacity-85">{description}</p>
28
+ {:else if description}
29
+ {@render description()}
30
+ {:else if children}
31
+ <div class="text-sm {c.textColor} opacity-85">{@render children()}</div>
32
+ {/if}
33
+ </div>
34
+ {#if closable}
35
+ <button
36
+ type="button"
37
+ class="shrink-0 hover:opacity-60 transition-opacity {c.iconColor}"
38
+ onclick={() => visible = false}
39
+ aria-label="Close"
40
+ >
41
+ <svg class="size-4" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5">
42
+ <path d="M4 4l8 8M12 4l-8 8"/>
43
+ </svg>
44
+ </button>
45
+ {/if}
46
+ </div>
47
+ {/if}
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ type AlertVariant = 'info' | 'success' | 'warning' | 'error';
3
+ type $$ComponentProps = {
4
+ variant?: AlertVariant;
5
+ title?: string;
6
+ description?: string | Snippet;
7
+ closable?: boolean;
8
+ icon?: boolean;
9
+ children?: Snippet;
10
+ class?: string;
11
+ [key: string]: unknown;
12
+ };
13
+ declare const Alert: import("svelte").Component<$$ComponentProps, {}, "">;
14
+ type Alert = ReturnType<typeof Alert>;
15
+ export default Alert;
@@ -0,0 +1 @@
1
+ export { default as Alert } from './Alert.svelte';
@@ -0,0 +1 @@
1
+ export { default as Alert } from './Alert.svelte';
@@ -1,28 +1,12 @@
1
- <script lang="ts">
2
- import {type AvatarProps, styles} from "./Avatar";
3
- import {getUserAvatarUrl} from "../../internal/service/user.service";
4
- import {cn} from "../../utils/utils";
5
-
6
- let {
7
- children,
8
- alt = 'Avatar',
9
- size = 'md',
10
- src,
11
- class: className,
12
- border = true,
13
- ref = $bindable(),
14
- userUid,
15
- apiUrl,
16
- ...props
17
- }: AvatarProps = $props();
18
-
19
- let isError = $state()
20
-
21
- function handleErrorImage() {
22
- isError = true
23
- }
24
-
25
- let imgUrl = $derived(src ? src : userUid ? getUserAvatarUrl(userUid, apiUrl) : undefined)
1
+ <script lang="ts">import { styles } from "./Avatar";
2
+ import { getUserAvatarUrl } from "../../internal/service/user.service";
3
+ import { cn } from "../../utils/utils";
4
+ let { children, alt = 'Avatar', size = 'md', src, class: className, border = true, ref = $bindable(), userUid, apiUrl, ...props } = $props();
5
+ let isError = $state();
6
+ function handleErrorImage() {
7
+ isError = true;
8
+ }
9
+ let imgUrl = $derived(src ? src : userUid ? getUserAvatarUrl(userUid, apiUrl) : undefined);
26
10
  </script>
27
11
 
28
12
  <div bind:this={ref}
@@ -0,0 +1,52 @@
1
+ import { type VariantProps } from "tailwind-variants";
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ export declare const styles: import("tailwind-variants").TVReturnType<{
5
+ variant: {
6
+ default: string;
7
+ primary: string;
8
+ success: string;
9
+ error: string;
10
+ warning: string;
11
+ info: string;
12
+ };
13
+ size: {
14
+ sm: string;
15
+ md: string;
16
+ };
17
+ }, undefined, "inline-flex items-center gap-1 rounded-full font-medium select-none", {
18
+ variant: {
19
+ default: string;
20
+ primary: string;
21
+ success: string;
22
+ error: string;
23
+ warning: string;
24
+ info: string;
25
+ };
26
+ size: {
27
+ sm: string;
28
+ md: string;
29
+ };
30
+ }, undefined, import("tailwind-variants").TVReturnType<{
31
+ variant: {
32
+ default: string;
33
+ primary: string;
34
+ success: string;
35
+ error: string;
36
+ warning: string;
37
+ info: string;
38
+ };
39
+ size: {
40
+ sm: string;
41
+ md: string;
42
+ };
43
+ }, undefined, "inline-flex items-center gap-1 rounded-full font-medium select-none", unknown, unknown, undefined>>;
44
+ type BadgeVariants = VariantProps<typeof styles>;
45
+ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, BadgeVariants {
46
+ children?: Snippet;
47
+ class?: string;
48
+ dot?: boolean;
49
+ closable?: boolean;
50
+ onclose?: () => void;
51
+ }
52
+ export {};
@@ -0,0 +1,22 @@
1
+ import { tv } from "tailwind-variants";
2
+ export const styles = tv({
3
+ base: 'inline-flex items-center gap-1 rounded-full font-medium select-none',
4
+ variants: {
5
+ variant: {
6
+ default: 'bg-surface-sunken text-text-secondary border border-border-default',
7
+ primary: 'bg-interactive-subtle text-interactive-text border border-interactive-border',
8
+ success: 'bg-success-subtle text-success-text border border-success-border',
9
+ error: 'bg-error-subtle text-error-text border border-error-border',
10
+ warning: 'bg-warning-subtle text-warning-text border border-warning-border',
11
+ info: 'bg-information-subtle text-information-text border border-information-border',
12
+ },
13
+ size: {
14
+ sm: 'px-2 py-0.5 text-[10px] leading-none',
15
+ md: 'px-2.5 py-1 text-[11px] leading-none uppercase tracking-wider',
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ variant: 'default',
20
+ size: 'md',
21
+ },
22
+ });
@@ -0,0 +1,22 @@
1
+ <script lang="ts">import { styles } from './Badge.js';
2
+ let { children, class: className, variant, size, dot, closable, onclose, ...props } = $props();
3
+ </script>
4
+
5
+ <span class={styles({ variant, size, className })} {...props}>
6
+ {#if dot}
7
+ <span class="size-1.5 rounded-full bg-current opacity-70"></span>
8
+ {/if}
9
+ {@render children?.()}
10
+ {#if closable}
11
+ <button
12
+ type="button"
13
+ class="ml-0.5 hover:opacity-70 transition-opacity leading-none"
14
+ onclick={onclose}
15
+ aria-label="Remove"
16
+ >
17
+ <svg class="size-2.5" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5">
18
+ <path d="M2 2l6 6M8 2l-6 6"/>
19
+ </svg>
20
+ </button>
21
+ {/if}
22
+ </span>
@@ -0,0 +1,4 @@
1
+ import { type BadgeProps } from './Badge.js';
2
+ declare const Badge: import("svelte").Component<BadgeProps, {}, "">;
3
+ type Badge = ReturnType<typeof Badge>;
4
+ export default Badge;