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,131 +1,53 @@
1
- import { type VariantProps } from "tailwind-variants";
1
+ /**
2
+ * @component Dialog - Modal dialog with header/footer snippet slots, size variants, and focus management.
3
+ * Built on BitsUI Dialog primitive.
4
+ */
2
5
  import type { Snippet } from "svelte";
3
- import type { HTMLDialogAttributes } from "svelte/elements";
4
- export declare const styles: import("tailwind-variants").TVReturnType<{
5
- size: {
6
- xs: {
7
- dialog: string;
8
- };
9
- sm: {
10
- dialog: string;
11
- };
12
- md: {
13
- dialog: string;
14
- };
15
- lg: {
16
- dialog: string;
17
- };
18
- full: {
19
- dialog: string;
20
- };
21
- auto: {
22
- dialog: string;
23
- };
24
- };
25
- padding: {
26
- none: {
27
- dialogContainer: string;
28
- body: string;
29
- };
30
- };
31
- }, {
32
- base: string;
33
- dialog: string;
34
- dialogContainer: string;
35
- header: string;
36
- body: string;
37
- footer: string;
38
- }, undefined, {
39
- size: {
40
- xs: {
41
- dialog: string;
42
- };
43
- sm: {
44
- dialog: string;
45
- };
46
- md: {
47
- dialog: string;
48
- };
49
- lg: {
50
- dialog: string;
51
- };
52
- full: {
53
- dialog: string;
54
- };
55
- auto: {
56
- dialog: string;
57
- };
58
- };
59
- padding: {
60
- none: {
61
- dialogContainer: string;
62
- body: string;
63
- };
64
- };
65
- }, {
66
- base: string;
67
- dialog: string;
68
- dialogContainer: string;
69
- header: string;
70
- body: string;
71
- footer: string;
72
- }, import("tailwind-variants").TVReturnType<{
73
- size: {
74
- xs: {
75
- dialog: string;
76
- };
77
- sm: {
78
- dialog: string;
79
- };
80
- md: {
81
- dialog: string;
82
- };
83
- lg: {
84
- dialog: string;
85
- };
86
- full: {
87
- dialog: string;
88
- };
89
- auto: {
90
- dialog: string;
91
- };
92
- };
93
- padding: {
94
- none: {
95
- dialogContainer: string;
96
- body: string;
97
- };
98
- };
99
- }, {
100
- base: string;
101
- dialog: string;
102
- dialogContainer: string;
103
- header: string;
104
- body: string;
105
- footer: string;
106
- }, undefined, unknown, unknown, undefined>>;
107
- type DialogVariants = VariantProps<typeof styles>;
108
- type DialogPropsCommon = {
6
+ export type DialogProps = {
7
+ children?: Snippet;
8
+ /** Snippet rendered in the dialog header area. */
9
+ header?: Snippet;
10
+ /** Snippet rendered in the dialog footer area. */
11
+ footer?: Snippet;
12
+ /** Whether the dialog is open. Bindable. */
13
+ open?: boolean;
14
+ /** Additional CSS classes for the dialog content panel. */
109
15
  class?: string;
110
- id?: string;
16
+ /** Controls the maximum width of the dialog panel. */
17
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'full' | 'auto';
18
+ /** Vertical alignment of the dialog on screen. */
19
+ position?: 'top' | 'center';
20
+ /** Set to 'none' to remove internal padding. */
21
+ padding?: 'none' | undefined;
22
+ /** Whether clicking the backdrop closes the dialog. */
111
23
  closeOnClickOutside?: boolean;
24
+ /** Whether to render a close (×) button in the header. */
112
25
  closeButton?: boolean;
113
- position?: 'top' | 'center';
26
+ /**
27
+ * When true the dialog DOM is kept alive after close — children preserve
28
+ * internal state between open/close cycles.
29
+ */
30
+ staticRender?: boolean;
31
+ /** Prevent the page from scrolling while the dialog is open. */
32
+ preventScroll?: boolean;
33
+ /** Called after the open or close animation has fully completed.
34
+ * Note: This callback only fires when the internal component mutates the open state, not when the state is changed by outside)
35
+ */
36
+ onOpenChangeComplete?: (open: boolean) => void;
37
+ /** Element to return focus to when the dialog closes. */
38
+ triggerRef?: HTMLElement | null;
39
+ /** Focus triggerRef after close (default true when triggerRef is provided). */
114
40
  focusTriggerAfterClose?: boolean;
115
- padding?: 'none' | undefined;
41
+ /** Additional classes applied to the outer container div. */
116
42
  containerClass?: string;
43
+ /** Additional classes applied to the header region. */
117
44
  headerClass?: string;
45
+ /** Additional classes applied to the body/content region. */
118
46
  bodyClass?: string;
47
+ /** Additional classes applied to the footer region. */
119
48
  footerClass?: string;
49
+ /** Bindable reference to the dialog content element. */
50
+ ref?: HTMLElement | null;
51
+ [key: string]: unknown;
120
52
  };
121
- export type DialogProps = Omit<HTMLDialogAttributes, 'open'> & DialogVariants & DialogPropsCommon & {
122
- children?: Snippet;
123
- header?: Snippet;
124
- footer?: Snippet;
125
- open?: boolean;
126
- staticRender?: boolean;
127
- triggerRef?: HTMLElement | null;
128
- ref?: HTMLDialogElement | null;
129
- };
130
- export type DialogPropsAstro = DialogVariants & DialogPropsCommon & {};
131
- export {};
53
+ export type DialogPropsAstro = Omit<DialogProps, 'children' | 'open' | 'ref'>;
@@ -1,39 +1 @@
1
- import { tv } from "tailwind-variants";
2
- export const styles = tv({
3
- slots: {
4
- base: '',
5
- dialog: 'bg-transparent text-inherit',
6
- dialogContainer: 'py-4 rounded-container',
7
- header: 'font-bold px-4 mb-2',
8
- body: 'px-4',
9
- footer: 'mt-3 px-4 flex items-center justify-end gap-2.5'
10
- },
11
- variants: {
12
- size: {
13
- xs: {
14
- dialog: ''
15
- },
16
- sm: {
17
- dialog: ''
18
- },
19
- md: {
20
- dialog: ''
21
- },
22
- lg: {
23
- dialog: ''
24
- },
25
- full: {
26
- dialog: ''
27
- },
28
- auto: {
29
- dialog: ''
30
- }
31
- },
32
- padding: {
33
- none: {
34
- dialogContainer: 'py-0',
35
- body: 'px-0',
36
- }
37
- }
38
- }
39
- });
1
+ export {};
@@ -1,113 +1,103 @@
1
- <script lang="ts">
2
- import {type DialogProps, styles} from "./Dialog";
3
- import IconX from "../icons/IconX.svelte";
4
- import {Button} from "../button";
5
- import './dialog.scss'
6
- import {sleep} from "../../internal/helpers/sleep";
7
- import {cn} from "../../utils";
8
-
9
- let {
10
- children, open = $bindable(),
11
- ref = $bindable(),
12
- closeOnClickOutside = true,
13
- closeButton = true,
14
- size = 'sm',
15
- header,
16
- footer,
17
- class: className,
18
- position = 'center',
19
- padding,
20
- staticRender = false,
21
- triggerRef,
22
- focusTriggerAfterClose,
23
- containerClass,
24
- headerClass,
25
- bodyClass,
26
- footerClass,
27
- ...props
28
- }: DialogProps = $props();
29
-
30
- let hasOpened = $state(false);
31
-
32
- // Watch for prop changes to open/close the dialog
33
- $effect(() => {
34
- if (open) {
35
- stillAnimating = open
36
- ref?.showModal();
37
-
38
- if (!hasOpened)
39
- hasOpened = true
40
- } else {
41
- ref?.close()
42
- sleep(200).then(() => {
43
- stillAnimating = open
44
- })
45
-
46
- if (focusTriggerAfterClose && hasOpened && triggerRef) {
47
- triggerRef.focus()
48
- }
49
- }
50
- })
51
-
52
- // Close dialog on clicking outside (optional)
53
- function handleClickOutside(e) {
54
- if (closeOnClickOutside && e.target === ref) {
55
- ref?.close();
56
- }
57
- }
58
-
59
- // Emit close event when dialog is closed
60
- function handleClose() {
61
- open = false;
62
- }
63
-
64
- // onmousedown={closeOnClickOutside ? 'event.target==this && this.close()' : ''}
65
-
66
- const {base, dialog: dialogStyle, dialogContainer, header: headerStyle, body, footer: footerStyle} = styles({
67
- size,
68
- padding
69
- })
70
-
71
- let stillAnimating = $state()
72
-
73
- </script>
74
-
75
- {#if staticRender || (!staticRender && (open || stillAnimating))}
76
- <dialog class={dialogStyle() + ` ${className}`}
77
- data-position={position}
78
- bind:this={ref}
79
- onclose={handleClose}
80
- onmousedown={handleClickOutside}
81
- size={size}
82
-
83
- {...props}
84
- >
85
- <button class=""></button>
86
- {#if (closeButton)}
87
- <form method="dialog">
88
- <Button class="!absolute right-1 top-1 [&>svg]:opacity-45 [&>svg]:hover:opacity-90 z-10" icon
89
- variant="ghost"
90
- size="md">
91
- <IconX/>
92
- </Button>
93
- </form>
94
- {/if}
95
-
96
- <div class={"dialog-box " + dialogContainer({className: containerClass})}>
97
- {#if header}
98
- <header class={cn(headerStyle(), headerClass)}>
99
- {@render header?.()}
100
- </header>
101
- {/if}
102
-
103
- <main class={cn(body(), bodyClass)}>
104
- {@render children?.()}
105
- </main>
106
- {#if footer}
107
- <footer class={cn(footerStyle(), footerClass)}>
108
- {@render footer?.()}
109
- </footer>
110
- {/if}
111
- </div>
112
- </dialog>
113
- {/if}
1
+ <script lang="ts">import { Dialog as DialogPrimitive } from 'bits-ui';
2
+ import IconX from '../icons/IconX.svelte';
3
+ import { cn } from '../../utils/index.js';
4
+ let { children, open = $bindable(false), ref = $bindable(null), closeOnClickOutside = true, closeButton = true, size = 'sm', header, footer, class: className, position = 'center', padding, staticRender = false, preventScroll, onOpenChangeComplete, triggerRef, focusTriggerAfterClose = true, containerClass, headerClass, bodyClass, footerClass, ...props } = $props();
5
+ const sizeClass = {
6
+ xs: 'max-w-[24rem]',
7
+ sm: 'max-w-[30rem]',
8
+ md: 'max-w-[40rem]',
9
+ lg: 'max-w-[50rem]',
10
+ full: 'max-w-full w-screen rounded-none',
11
+ auto: 'w-fit',
12
+ };
13
+ const isFull = $derived(size === 'full');
14
+ const paddingClass = $derived(padding === 'none'
15
+ ? { container: 'py-0', body: 'px-0' }
16
+ : { container: 'py-4', body: 'px-4' });
17
+ function handleCloseAutoFocus(e) {
18
+ if (triggerRef && focusTriggerAfterClose) {
19
+ e.preventDefault();
20
+ triggerRef.focus();
21
+ }
22
+ }
23
+ </script>
24
+
25
+ <DialogPrimitive.Root bind:open onOpenChangeComplete={onOpenChangeComplete}>
26
+ <DialogPrimitive.Portal>
27
+ <!-- Backdrop -->
28
+ <DialogPrimitive.Overlay
29
+ class="fixed inset-0 z-50 bg-overlay backdrop-blur-[4px]
30
+ animate-in fade-in duration-200
31
+ data-[state=closed]:animate-out data-[state=closed]:fade-out
32
+ data-[state=closed]:hidden"
33
+ />
34
+
35
+ <!--
36
+ We use the `child` snippet (bits-ui "asChild" pattern) so that bits-ui gates its
37
+ internal <ScrollLock> on `open.current`. Without this, the `children` branch renders
38
+ <ScrollLock> unconditionally — with forceMount the lock never releases, leaving
39
+ `document.body { pointer-events:none; overflow:hidden }` active even when closed.
40
+ -->
41
+ <DialogPrimitive.Content
42
+ bind:ref
43
+ forceMount={staticRender || undefined}
44
+ interactOutsideBehavior={closeOnClickOutside ? 'close' : 'ignore'}
45
+ preventScroll={preventScroll}
46
+ onCloseAutoFocus={handleCloseAutoFocus}
47
+ {...props}
48
+ >
49
+ {#snippet child({ props: contentProps })}
50
+ <div
51
+ {...contentProps}
52
+ inert={staticRender && !open ? true : undefined}
53
+ class={cn(
54
+ contentProps.class,
55
+ 'fixed z-50 w-full bg-surface shadow-lg border-border-default',
56
+ 'flex flex-col overflow-hidden',
57
+ isFull
58
+ ? 'inset-0 h-screen border-0'
59
+ : [
60
+ 'rounded-container',
61
+ 'max-h-[min(calc(100svh-2rem),55rem)]',
62
+ position === 'top'
63
+ ? 'top-4 left-1/2 -translate-x-1/2'
64
+ : 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',
65
+ ].join(' '),
66
+ sizeClass[size ?? 'sm'],
67
+ 'animate-in fade-in zoom-in-95 duration-[250ms] ease-spring',
68
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:zoom-out-95 data-[state=closed]:duration-200',
69
+ staticRender && 'data-[state=closed]:hidden',
70
+ className
71
+ )}
72
+ >
73
+ {#if closeButton}
74
+ <DialogPrimitive.Close
75
+ class="absolute right-2 top-2 z-10 size-8 flex items-center justify-center rounded hover:bg-surface-hover text-text-tertiary hover:text-text-primary transition-colors"
76
+ aria-label="Close"
77
+ >
78
+ <IconX class="size-4"/>
79
+ </DialogPrimitive.Close>
80
+ {/if}
81
+
82
+ <div class={cn(paddingClass.container, 'grid grid-rows-[auto_1fr_auto] h-full overflow-hidden', containerClass)}>
83
+ {#if header}
84
+ <header class={cn('font-bold px-4 mb-2', headerClass)}>
85
+ {@render header()}
86
+ </header>
87
+ {/if}
88
+
89
+ <main class={cn('overflow-auto', paddingClass.body, bodyClass)}>
90
+ {@render children?.()}
91
+ </main>
92
+
93
+ {#if footer}
94
+ <footer class={cn('mt-3 px-4 flex items-center justify-end gap-2.5', footerClass)}>
95
+ {@render footer()}
96
+ </footer>
97
+ {/if}
98
+ </div>
99
+ </div>
100
+ {/snippet}
101
+ </DialogPrimitive.Content>
102
+ </DialogPrimitive.Portal>
103
+ </DialogPrimitive.Root>
@@ -1,5 +1,4 @@
1
- import { type DialogProps } from "./Dialog";
2
- import './dialog.scss';
1
+ import type { DialogProps } from './Dialog.js';
3
2
  declare const Dialog: import("svelte").Component<DialogProps, {}, "ref" | "open">;
4
3
  type Dialog = ReturnType<typeof Dialog>;
5
4
  export default Dialog;
@@ -8,7 +8,8 @@
8
8
  display: grid;
9
9
  grid-template-rows: auto 1fr auto;
10
10
  width: 100%;
11
- background: var(--color-neutral-token-1);
11
+ background: var(--color-surface);
12
+ border-radius: var(--border-radius-container);
12
13
  position: relative;
13
14
  top: 0;
14
15
  left: 0;
@@ -62,10 +63,12 @@ dialog[open] {
62
63
  }
63
64
 
64
65
  dialog {
65
- --transition-duration: 0.2s;
66
+ --transition-duration: 0.25s;
67
+ --transition-easing: var(--ease-spring);
66
68
  transform: translateY(0px);
67
69
  margin: auto;
68
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
70
+ box-shadow: var(--shadow-lg);
71
+ border-radius: var(--border-radius-container);
69
72
 
70
73
  &[data-position="top"] {
71
74
  position: fixed;
@@ -76,11 +79,11 @@ dialog {
76
79
  }
77
80
 
78
81
  &, &::backdrop {
79
- transition: opacity var(--transition-duration) ease-out,
80
- transform var(--transition-duration) ease-out,
82
+ transition: opacity var(--transition-duration) var(--transition-easing),
83
+ transform var(--transition-duration) var(--transition-easing),
81
84
  display var(--transition-duration) allow-discrete,
82
85
  overlay var(--transition-duration) allow-discrete,
83
- box-shadow var(--transition-duration) ease-out;
86
+ box-shadow var(--transition-duration) var(--transition-easing);
84
87
 
85
88
  opacity: 0;
86
89
 
@@ -91,58 +94,52 @@ dialog {
91
94
 
92
95
 
93
96
  &[open] {
94
- animation: slide-in var(--transition-duration) ease-out;
97
+ animation: dialog-enter var(--transition-duration) var(--transition-easing);
95
98
  opacity: 1;
96
- box-shadow: 0 16px 48px rgba(0, 0, 0, 0.24), 0 8px 16px rgba(0, 0, 0, 0.12); /* Ant Design-inspired shadow */
99
+ box-shadow: var(--shadow-lg);
97
100
  &::backdrop {
98
101
  opacity: 1;
99
102
  }
100
103
 
101
104
  &[data-position="top"] {
102
- animation: slide-in-top var(--transition-duration) ease-out;
105
+ animation: slide-in-top var(--transition-duration) var(--transition-easing);
103
106
  }
104
107
  }
105
108
 
106
109
  &:not([open]) {
107
- animation: slide-out var(--transition-duration) ease-out;
110
+ animation: dialog-exit var(--transition-duration) var(--ease-ui);
108
111
  opacity: 0;
109
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); /* Subtle shadow for hidden state */
112
+ box-shadow: var(--shadow-sm);
110
113
  &::backdrop {
111
114
  opacity: 0;
112
115
  }
113
116
 
114
117
  &[data-position="top"] {
115
- animation: slide-out-top var(--transition-duration) ease-out;
118
+ animation: slide-out-top var(--transition-duration) var(--ease-ui);
116
119
  }
117
120
  }
118
121
 
119
122
  }
120
123
 
121
- @keyframes slide-in {
124
+ @keyframes dialog-enter {
122
125
  from {
123
- transform: translateY(-40px);
126
+ transform: scale(0.95);
124
127
  opacity: 0;
125
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
126
-
127
128
  }
128
129
  to {
129
- transform: translateY(0);
130
+ transform: scale(1);
130
131
  opacity: 1;
131
- box-shadow: 0 16px 48px rgba(0, 0, 0, 0.24), 0 8px 16px rgba(0, 0, 0, 0.12);
132
-
133
132
  }
134
133
  }
135
134
 
136
- @keyframes slide-out {
135
+ @keyframes dialog-exit {
137
136
  from {
138
- transform: translateY(0);
137
+ transform: scale(1);
139
138
  opacity: 1;
140
- box-shadow: 0 16px 48px rgba(0, 0, 0, 0.24), 0 8px 16px rgba(0, 0, 0, 0.12);
141
139
  }
142
140
  to {
143
- transform: translateY(-40px);
141
+ transform: scale(0.95);
144
142
  opacity: 0;
145
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
146
143
  }
147
144
  }
148
145
 
@@ -0,0 +1,63 @@
1
+ <script lang="ts">let { open = $bindable(false), side = 'right', size = 'md', closeOnClickOutside = true, header, footer, children, onclose, } = $props();
2
+ const sizeMap = {
3
+ sm: '320px', md: '480px', lg: '640px', full: '100%',
4
+ };
5
+ const slideFrom = {
6
+ left: 'translate-x-[-100%]',
7
+ right: 'translate-x-[100%]',
8
+ bottom: 'translate-y-[100%]',
9
+ };
10
+ const drawerClass = $derived(side === 'bottom'
11
+ ? `fixed bottom-0 left-0 right-0 max-h-[85vh] rounded-t-[20px]`
12
+ : side === 'left'
13
+ ? `fixed left-0 top-0 bottom-0 w-[${sizeMap[size]}] max-w-full`
14
+ : `fixed right-0 top-0 bottom-0 w-[${sizeMap[size]}] max-w-full`);
15
+ function close() {
16
+ open = false;
17
+ onclose?.();
18
+ }
19
+ export {};
20
+ </script>
21
+
22
+ {#if open}
23
+ <!-- Backdrop -->
24
+ <div
25
+ role="presentation"
26
+ class="fixed inset-0 z-40 bg-overlay backdrop-blur-[4px] animate-in fade-in duration-200"
27
+ onclick={() => closeOnClickOutside && close()}
28
+ onkeydown={(e) => e.key === 'Escape' && closeOnClickOutside && close()}
29
+ ></div>
30
+
31
+ <!-- Drawer panel -->
32
+ <div
33
+ class="{drawerClass} z-50 flex flex-col bg-surface shadow-lg border border-border-default animate-in duration-300 ease-spring {side === 'bottom' ? 'slide-in-from-bottom' : side === 'left' ? 'slide-in-from-left' : 'slide-in-from-right'}"
34
+ role="dialog"
35
+ aria-modal="true"
36
+ >
37
+ {#if header}
38
+ <header class="flex items-center justify-between px-5 py-4 border-b border-border-default shrink-0">
39
+ {@render header()}
40
+ <button
41
+ type="button"
42
+ onclick={close}
43
+ class="text-text-tertiary hover:text-text-primary transition-colors ml-auto"
44
+ aria-label="Close drawer"
45
+ >
46
+ <svg class="size-4" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5">
47
+ <path d="M4 4l8 8M12 4l-8 8"/>
48
+ </svg>
49
+ </button>
50
+ </header>
51
+ {/if}
52
+
53
+ <main class="flex-1 overflow-y-auto p-5">
54
+ {@render children?.()}
55
+ </main>
56
+
57
+ {#if footer}
58
+ <footer class="px-5 py-4 border-t border-border-default shrink-0">
59
+ {@render footer()}
60
+ </footer>
61
+ {/if}
62
+ </div>
63
+ {/if}
@@ -0,0 +1,16 @@
1
+ import type { Snippet } from 'svelte';
2
+ type DrawerSide = 'left' | 'right' | 'bottom';
3
+ type DrawerSize = 'sm' | 'md' | 'lg' | 'full';
4
+ type $$ComponentProps = {
5
+ open?: boolean;
6
+ side?: DrawerSide;
7
+ size?: DrawerSize;
8
+ closeOnClickOutside?: boolean;
9
+ header?: Snippet;
10
+ footer?: Snippet;
11
+ children?: Snippet;
12
+ onclose?: () => void;
13
+ };
14
+ declare const Drawer: import("svelte").Component<$$ComponentProps, {}, "open">;
15
+ type Drawer = ReturnType<typeof Drawer>;
16
+ export default Drawer;
@@ -0,0 +1 @@
1
+ export { default as Drawer } from './Drawer.svelte';
@@ -0,0 +1 @@
1
+ export { default as Drawer } from './Drawer.svelte';