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,5 +1,4 @@
1
1
  // Initial import of openai npm package
2
- import { OpenAI } from 'openai';
3
2
  import * as fs from "node:fs";
4
3
  import dotenv from "dotenv";
5
4
  import { SupportedLanguage as TeraConverterSupportedLangauge } from '../../projects/tera-converter/supported-language';
@@ -7,6 +6,7 @@ import { SupportedLanguage as TeraToolsSupportedLangauge } from '../../projects/
7
6
  import { SupportedLanguage as TeraCalculatorSupportedLangauge } from '../../projects/tera-calculator/supported-language';
8
7
  import { SupportedLanguage as CvMakerSupportedLanguage } from '../../projects/cv-maker/supported-language';
9
8
  import { getLanguagesData } from "../../projects/common/all-language-data";
9
+ import { OpenAI } from "openai";
10
10
  dotenv.config({ override: true, path: './.env.local' });
11
11
  let openAiKey = process.env.OPENAI_API_KEY;
12
12
  if (!openAiKey) {
@@ -17,6 +17,76 @@ function getMonthNameByNumberAndLang(monthNumber, langCode) {
17
17
  const formatter = new Intl.DateTimeFormat(langCode, { month: 'long' });
18
18
  return formatter.format(date);
19
19
  }
20
+ /**
21
+ * Safely parse JSON from AI responses that might contain formatting issues
22
+ * Handles common cases like markdown code blocks, extra whitespace, etc.
23
+ */
24
+ function safeParseJSON(content) {
25
+ let cleaned = content.trim();
26
+ // Remove markdown code blocks (```json ... ``` or ``` ... ```)
27
+ cleaned = cleaned.replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/i, '');
28
+ // Remove leading/trailing whitespace again after removing code blocks
29
+ cleaned = cleaned.trim();
30
+ // Try to find JSON object or array if there's text before/after
31
+ const jsonMatch = cleaned.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);
32
+ if (jsonMatch) {
33
+ cleaned = jsonMatch[1];
34
+ }
35
+ // Try parsing
36
+ try {
37
+ return JSON.parse(cleaned);
38
+ }
39
+ catch (firstError) {
40
+ // Try removing trailing commas (common AI mistake)
41
+ try {
42
+ const noTrailingCommas = cleaned
43
+ .replace(/,(\s*[}\]])/g, '$1') // Remove trailing commas before } or ]
44
+ .replace(/,(\s*,)/g, '$1'); // Remove duplicate commas
45
+ return JSON.parse(noTrailingCommas);
46
+ }
47
+ catch (secondError) {
48
+ // Try fixing common quote issues
49
+ try {
50
+ const fixedQuotes = cleaned
51
+ .replace(/'/g, '"') // Replace single quotes with double quotes
52
+ .replace(/,(\s*[}\]])/g, '$1'); // Remove trailing commas
53
+ return JSON.parse(fixedQuotes);
54
+ }
55
+ catch (thirdError) {
56
+ // Last resort: try to extract JSON more aggressively
57
+ try {
58
+ // Look for the first { or [ and last } or ]
59
+ const firstBrace = cleaned.indexOf('{');
60
+ const firstBracket = cleaned.indexOf('[');
61
+ const lastBrace = cleaned.lastIndexOf('}');
62
+ const lastBracket = cleaned.lastIndexOf(']');
63
+ let start = -1;
64
+ let end = -1;
65
+ if (firstBrace !== -1 && (firstBracket === -1 || firstBrace < firstBracket)) {
66
+ start = firstBrace;
67
+ end = lastBrace;
68
+ }
69
+ else if (firstBracket !== -1) {
70
+ start = firstBracket;
71
+ end = lastBracket;
72
+ }
73
+ if (start !== -1 && end !== -1 && end > start) {
74
+ const extracted = cleaned.substring(start, end + 1);
75
+ return JSON.parse(extracted);
76
+ }
77
+ }
78
+ catch (fourthError) {
79
+ // All attempts failed
80
+ }
81
+ // If all parsing attempts fail, throw a detailed error
82
+ console.error('Original content:', content);
83
+ console.error('Cleaned content:', cleaned);
84
+ const errorMessage = firstError instanceof Error ? firstError.message : String(firstError);
85
+ throw new Error(`Failed to parse JSON after multiple attempts. First error: ${errorMessage}`);
86
+ }
87
+ }
88
+ }
89
+ }
20
90
  // Directory
21
91
  // - en
22
92
  // - content.md
@@ -46,6 +116,8 @@ async function translateContentDirectory(directory, sourceLanguage, outputLangua
46
116
  if (fs.existsSync(promptPath)) {
47
117
  userPrompt = userPrompt.replaceAll("{language}", language.name);
48
118
  userPrompt = userPrompt.replaceAll("{languageCode}", language.code);
119
+ userPrompt = userPrompt.replaceAll("{countryOrRegion}", language.flag);
120
+ userPrompt = userPrompt.replaceAll("[TARGET LANGUAGE]", language.name);
49
121
  }
50
122
  else {
51
123
  throw new Error(`Prompt file not found: ${promptPath}`);
@@ -71,12 +143,11 @@ async function translateContentDirectory(directory, sourceLanguage, outputLangua
71
143
  content: userPrompt,
72
144
  },
73
145
  ],
74
- model: "gpt-4.1",
75
- max_tokens: 16384,
146
+ model: "gpt-5.5",
76
147
  });
77
148
  let message = response.choices[0].message;
78
149
  let translated = message.content;
79
- let newTranslatedJson = JSON.parse(translated);
150
+ let newTranslatedJson = safeParseJSON(translated);
80
151
  let orderedJson = {};
81
152
  // merge old message with new message
82
153
  for (let key of Object.keys(oldMessageJson)) {
@@ -132,18 +203,68 @@ async function translateCalculatorMessages() {
132
203
  .map(language => {
133
204
  let directory = "../../projects/tera-calculator/messages";
134
205
  console.log('Translate', language, directory);
135
- return translateContentDirectory(directory, "en", [language], []);
206
+ return translateContentDirectory(directory, "en", [language], [
207
+ "text_about_us",
208
+ ], { promptPath: "./prompt/i18n-message-translate-prompt-calculator.md" });
136
209
  });
137
210
  await Promise.all(tasks);
138
211
  }
139
212
  async function translateCvMakerMessage() {
140
213
  // generate translated message for cv-maker project
141
- let tasks = getLanguagesData(CvMakerSupportedLanguage)
142
- // .slice(0, 1)
143
- .map(language => {
214
+ let tasks = getLanguagesData(CvMakerSupportedLanguage
215
+ // ["vi"]
216
+ // .filter(l => l === "en-US"))
217
+ // .filter(l => l === "vi")
218
+ // .slice(0, 1)
219
+ ).map(language => {
144
220
  let directory = "../../projects/cv-maker/messages";
145
221
  console.log('Translate', language, directory);
146
- return translateContentDirectory(directory, "en", [language], [], { promptPath: "./prompt/i18n-message-translate-prompt-cv-maker.txt" });
222
+ return translateContentDirectory(directory, "en", [language], [
223
+ "text_cv_viewer_download_pdf",
224
+ "text_cv_viewer_pdf",
225
+ "text_cv_viewer_contact",
226
+ "text_cv_viewer_owners_cv",
227
+ "text_cv_viewer_view_cv",
228
+ "text_cv_viewer_professional_cv",
229
+ "text_cv_viewer_unable_to_load",
230
+ "text_cv_viewer_try_again",
231
+ "text_cv_viewer_tap_to_zoom",
232
+ "text_cv_viewer_made_with",
233
+ "text_cv_viewer_build_free",
234
+ "text_error_link_expired",
235
+ "text_error_expired_message",
236
+ "text_error_cv_unavailable",
237
+ "text_error_cv_removed_message",
238
+ "text_error_not_found",
239
+ "text_error_not_found_message",
240
+ "text_error_create_free_cv",
241
+ "text_password_protected",
242
+ "text_password_enter_to_view",
243
+ "text_password_enter",
244
+ "text_password_incorrect",
245
+ "text_password_something_wrong",
246
+ "text_password_verifying",
247
+ "text_password_view_cv",
248
+ "text_password_hide",
249
+ "text_password_show",
250
+ "text_password_made_with",
251
+ "text_lightbox_viewer",
252
+ "text_lightbox_close",
253
+ "text_lightbox_zoom_out",
254
+ "text_lightbox_zoom_in",
255
+ "text_lightbox_pinch_zoom",
256
+ "text_contact_get_in_touch",
257
+ "text_contact_connect_with",
258
+ "text_contact_reach_out",
259
+ "text_contact_send_email",
260
+ "text_contact_call_now",
261
+ "text_contact_copy_email",
262
+ "text_contact_copy_phone",
263
+ "text_contact_email_copied",
264
+ "text_contact_phone_copied",
265
+ ],
266
+ // undefined,
267
+ { promptPath: "./prompt/i18n-message-translate-prompt-cv-maker.md" });
147
268
  });
148
269
  await Promise.all(tasks);
149
270
  }
@@ -9,7 +9,7 @@
9
9
  "version": "1.0.0",
10
10
  "dependencies": {
11
11
  "dotenv": "^16.4.5",
12
- "openai": "^4.73.0"
12
+ "openai": "^6.34.0"
13
13
  },
14
14
  "devDependencies": {
15
15
  "ts-node": "^10.9.2",
@@ -498,33 +498,13 @@
498
498
  "version": "18.19.65",
499
499
  "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.65.tgz",
500
500
  "integrity": "sha512-Ay5BZuO1UkTmVHzZJNvZKw/E+iB3GQABb6kijEz89w2JrfhNA+M/ebp18pfz9Gqe9ywhMC8AA8yC01lZq48J+Q==",
501
+ "dev": true,
501
502
  "license": "MIT",
503
+ "peer": true,
502
504
  "dependencies": {
503
505
  "undici-types": "~5.26.4"
504
506
  }
505
507
  },
506
- "node_modules/@types/node-fetch": {
507
- "version": "2.6.12",
508
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz",
509
- "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==",
510
- "license": "MIT",
511
- "dependencies": {
512
- "@types/node": "*",
513
- "form-data": "^4.0.0"
514
- }
515
- },
516
- "node_modules/abort-controller": {
517
- "version": "3.0.0",
518
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
519
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
520
- "license": "MIT",
521
- "dependencies": {
522
- "event-target-shim": "^5.0.0"
523
- },
524
- "engines": {
525
- "node": ">=6.5"
526
- }
527
- },
528
508
  "node_modules/acorn": {
529
509
  "version": "8.14.0",
530
510
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
@@ -551,18 +531,6 @@
551
531
  "node": ">=0.4.0"
552
532
  }
553
533
  },
554
- "node_modules/agentkeepalive": {
555
- "version": "4.5.0",
556
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
557
- "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
558
- "license": "MIT",
559
- "dependencies": {
560
- "humanize-ms": "^1.2.1"
561
- },
562
- "engines": {
563
- "node": ">= 8.0.0"
564
- }
565
- },
566
534
  "node_modules/arg": {
567
535
  "version": "4.1.3",
568
536
  "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -570,24 +538,6 @@
570
538
  "dev": true,
571
539
  "license": "MIT"
572
540
  },
573
- "node_modules/asynckit": {
574
- "version": "0.4.0",
575
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
576
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
577
- "license": "MIT"
578
- },
579
- "node_modules/combined-stream": {
580
- "version": "1.0.8",
581
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
582
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
583
- "license": "MIT",
584
- "dependencies": {
585
- "delayed-stream": "~1.0.0"
586
- },
587
- "engines": {
588
- "node": ">= 0.8"
589
- }
590
- },
591
541
  "node_modules/create-require": {
592
542
  "version": "1.1.1",
593
543
  "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
@@ -595,15 +545,6 @@
595
545
  "dev": true,
596
546
  "license": "MIT"
597
547
  },
598
- "node_modules/delayed-stream": {
599
- "version": "1.0.0",
600
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
601
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
602
- "license": "MIT",
603
- "engines": {
604
- "node": ">=0.4.0"
605
- }
606
- },
607
548
  "node_modules/diff": {
608
549
  "version": "4.0.2",
609
550
  "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
@@ -666,48 +607,6 @@
666
607
  "@esbuild/win32-x64": "0.23.1"
667
608
  }
668
609
  },
669
- "node_modules/event-target-shim": {
670
- "version": "5.0.1",
671
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
672
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
673
- "license": "MIT",
674
- "engines": {
675
- "node": ">=6"
676
- }
677
- },
678
- "node_modules/form-data": {
679
- "version": "4.0.1",
680
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
681
- "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
682
- "license": "MIT",
683
- "dependencies": {
684
- "asynckit": "^0.4.0",
685
- "combined-stream": "^1.0.8",
686
- "mime-types": "^2.1.12"
687
- },
688
- "engines": {
689
- "node": ">= 6"
690
- }
691
- },
692
- "node_modules/form-data-encoder": {
693
- "version": "1.7.2",
694
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
695
- "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==",
696
- "license": "MIT"
697
- },
698
- "node_modules/formdata-node": {
699
- "version": "4.4.1",
700
- "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
701
- "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
702
- "license": "MIT",
703
- "dependencies": {
704
- "node-domexception": "1.0.0",
705
- "web-streams-polyfill": "4.0.0-beta.3"
706
- },
707
- "engines": {
708
- "node": ">= 12.20"
709
- }
710
- },
711
610
  "node_modules/fsevents": {
712
611
  "version": "2.3.3",
713
612
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -736,15 +635,6 @@
736
635
  "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
737
636
  }
738
637
  },
739
- "node_modules/humanize-ms": {
740
- "version": "1.2.1",
741
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
742
- "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
743
- "license": "MIT",
744
- "dependencies": {
745
- "ms": "^2.0.0"
746
- }
747
- },
748
638
  "node_modules/make-error": {
749
639
  "version": "1.3.6",
750
640
  "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -752,93 +642,22 @@
752
642
  "dev": true,
753
643
  "license": "ISC"
754
644
  },
755
- "node_modules/mime-db": {
756
- "version": "1.52.0",
757
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
758
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
759
- "license": "MIT",
760
- "engines": {
761
- "node": ">= 0.6"
762
- }
763
- },
764
- "node_modules/mime-types": {
765
- "version": "2.1.35",
766
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
767
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
768
- "license": "MIT",
769
- "dependencies": {
770
- "mime-db": "1.52.0"
771
- },
772
- "engines": {
773
- "node": ">= 0.6"
774
- }
775
- },
776
- "node_modules/ms": {
777
- "version": "2.1.3",
778
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
779
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
780
- "license": "MIT"
781
- },
782
- "node_modules/node-domexception": {
783
- "version": "1.0.0",
784
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
785
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
786
- "funding": [
787
- {
788
- "type": "github",
789
- "url": "https://github.com/sponsors/jimmywarting"
790
- },
791
- {
792
- "type": "github",
793
- "url": "https://paypal.me/jimmywarting"
794
- }
795
- ],
796
- "license": "MIT",
797
- "engines": {
798
- "node": ">=10.5.0"
799
- }
800
- },
801
- "node_modules/node-fetch": {
802
- "version": "2.7.0",
803
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
804
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
805
- "license": "MIT",
806
- "dependencies": {
807
- "whatwg-url": "^5.0.0"
808
- },
809
- "engines": {
810
- "node": "4.x || >=6.0.0"
811
- },
812
- "peerDependencies": {
813
- "encoding": "^0.1.0"
814
- },
815
- "peerDependenciesMeta": {
816
- "encoding": {
817
- "optional": true
818
- }
819
- }
820
- },
821
645
  "node_modules/openai": {
822
- "version": "4.73.0",
823
- "resolved": "https://registry.npmjs.org/openai/-/openai-4.73.0.tgz",
824
- "integrity": "sha512-NZstV77w3CEol9KQTRBRQ15+Sw6nxVTicAULSjYO4wn9E5gw72Mtp3fAVaBFXyyVPws4241YmFG6ya4L8v03tA==",
646
+ "version": "6.34.0",
647
+ "resolved": "https://registry.npmjs.org/openai/-/openai-6.34.0.tgz",
648
+ "integrity": "sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw==",
825
649
  "license": "Apache-2.0",
826
- "dependencies": {
827
- "@types/node": "^18.11.18",
828
- "@types/node-fetch": "^2.6.4",
829
- "abort-controller": "^3.0.0",
830
- "agentkeepalive": "^4.2.1",
831
- "form-data-encoder": "1.7.2",
832
- "formdata-node": "^4.3.2",
833
- "node-fetch": "^2.6.7"
834
- },
835
650
  "bin": {
836
651
  "openai": "bin/cli"
837
652
  },
838
653
  "peerDependencies": {
839
- "zod": "^3.23.8"
654
+ "ws": "^8.18.0",
655
+ "zod": "^3.25 || ^4.0"
840
656
  },
841
657
  "peerDependenciesMeta": {
658
+ "ws": {
659
+ "optional": true
660
+ },
842
661
  "zod": {
843
662
  "optional": true
844
663
  }
@@ -854,12 +673,6 @@
854
673
  "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
855
674
  }
856
675
  },
857
- "node_modules/tr46": {
858
- "version": "0.0.3",
859
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
860
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
861
- "license": "MIT"
862
- },
863
676
  "node_modules/ts-node": {
864
677
  "version": "10.9.2",
865
678
  "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
@@ -942,7 +755,9 @@
942
755
  "version": "5.26.5",
943
756
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
944
757
  "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
945
- "license": "MIT"
758
+ "dev": true,
759
+ "license": "MIT",
760
+ "peer": true
946
761
  },
947
762
  "node_modules/v8-compile-cache-lib": {
948
763
  "version": "3.0.1",
@@ -951,31 +766,6 @@
951
766
  "dev": true,
952
767
  "license": "MIT"
953
768
  },
954
- "node_modules/web-streams-polyfill": {
955
- "version": "4.0.0-beta.3",
956
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
957
- "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
958
- "license": "MIT",
959
- "engines": {
960
- "node": ">= 14"
961
- }
962
- },
963
- "node_modules/webidl-conversions": {
964
- "version": "3.0.1",
965
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
966
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
967
- "license": "BSD-2-Clause"
968
- },
969
- "node_modules/whatwg-url": {
970
- "version": "5.0.0",
971
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
972
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
973
- "license": "MIT",
974
- "dependencies": {
975
- "tr46": "~0.0.3",
976
- "webidl-conversions": "^3.0.0"
977
- }
978
- },
979
769
  "node_modules/yn": {
980
770
  "version": "3.1.1",
981
771
  "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
@@ -10,7 +10,7 @@
10
10
  "private": true,
11
11
  "dependencies": {
12
12
  "dotenv": "^16.4.5",
13
- "openai": "^4.73.0"
13
+ "openai": "^6.34.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "ts-node": "^10.9.2",
@@ -0,0 +1,34 @@
1
+ ### 1. APP CONTEXT
2
+ This is a professional-grade, cross-platform Scientific Calculator used by students, engineers, and mathematicians. It features advanced mathematical computations, matrix operations, unit conversions, variable tracking, and an "AI Scanner" (OCR) that allows users to take photos of math problems to solve them.
3
+
4
+ The tone of the translation should be professional, concise, and UI-friendly (keep strings short so they fit on mobile screens).
5
+
6
+ ### 2. STRICT FORMATTING RULES
7
+
8
+ - Translate only JSON values — do not modify or translate JSON keys.
9
+
10
+ - Preserve JSON structure, punctuation, and casing.
11
+
12
+ - DO NOT translate, modify, or remove any placeholder variables wrapped in curly braces (e.g., `{size}`, `{keyName}`, `{symbol}`, `{text}`, `{key}`). These must remain exactly as they are in the translated string.
13
+
14
+ - Maintain the original capitalization and punctuation where appropriate for UI elements (e.g., Title Case for buttons, Sentence case for descriptions).
15
+
16
+ - Output valid JSON only, without any markdown, explanations, or extra text.
17
+
18
+ ### 3. GLOSSARY & DOMAIN KNOWLEDGE (CRITICAL)
19
+
20
+ Please use standard, widely accepted mathematical terminology in [TARGET LANGUAGE] for the following concepts:
21
+ - "Matrix" / "Matrix dimensions": Refers to mathematical matrices (arrays of numbers arranged in rows and columns), NOT the movie or a general mold.
22
+ - "Implied multiplication": Refers to algebraic conventions where the multiplication sign is omitted (e.g., evaluating $2x$ or $2(3+4)$).
23
+ - "Prime Factor": The prime numbers that divide an integer exactly.
24
+ - "Repeated Decimal": A decimal number that has digits that repeat infinitely (e.g., $0.333...$).
25
+ - "Mixed Fraction": A whole number and a proper fraction combined (e.g., $1 \frac{1}{2}$).
26
+ - "Scientific Notation": A way of writing very large or very small numbers (e.g., $1.23 \times 10^4$).
27
+ - "Indian Style Digit Grouping": Refers to the South Asian numbering system (Lakhs and Crores) where commas are placed like this: $12,34,567$.
28
+ - "Decimal separator" / "Thousands separator": Refers to the punctuation marks used to format numbers (like a period `.` or comma `,`).
29
+ - "AI Scanner": A feature using the device camera or image upload to scan and read mathematical expressions.
30
+
31
+ ### 4. JSON PAYLOAD TO TRANSLATE
32
+ Please translate the following JSON into [TARGET LANGUAGE]:
33
+
34
+ {content}