tera-system-ui 0.1.75 → 0.2.1

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 (1085) hide show
  1. package/dist/components/accordion/Accordion.recipe.d.ts +125 -0
  2. package/dist/components/accordion/Accordion.recipe.js +28 -0
  3. package/dist/components/accordion/components/Accordion.svelte +4 -1
  4. package/dist/components/accordion/components/AccordionContent.svelte +4 -6
  5. package/dist/components/accordion/components/AccordionItem.svelte +3 -2
  6. package/dist/components/accordion/components/AccordionTrigger.svelte +11 -9
  7. package/dist/components/accordion/components/AccordionTrigger.svelte.d.ts +3 -0
  8. package/dist/components/accordion/index.d.ts +2 -1
  9. package/dist/components/accordion/index.js +1 -0
  10. package/dist/components/alert/Alert.recipe.d.ts +113 -0
  11. package/dist/components/alert/Alert.recipe.js +53 -0
  12. package/dist/components/alert/Alert.svelte +28 -18
  13. package/dist/components/alert/Alert.svelte.d.ts +2 -13
  14. package/dist/components/alert/index.d.ts +2 -0
  15. package/dist/components/alert/index.js +1 -0
  16. package/dist/components/avatar/Avatar.recipe.d.ts +113 -0
  17. package/dist/components/avatar/Avatar.recipe.js +37 -0
  18. package/dist/components/avatar/Avatar.svelte +19 -24
  19. package/dist/components/avatar/Avatar.svelte.d.ts +1 -1
  20. package/dist/components/avatar/index.d.ts +2 -1
  21. package/dist/components/avatar/index.js +1 -0
  22. package/dist/components/badge/Badge.recipe.d.ts +68 -0
  23. package/dist/components/badge/Badge.recipe.js +35 -0
  24. package/dist/components/badge/Badge.svelte +15 -7
  25. package/dist/components/badge/Badge.svelte.d.ts +1 -1
  26. package/dist/components/badge/index.d.ts +2 -1
  27. package/dist/components/badge/index.js +1 -0
  28. package/dist/components/bottom-sheet/BottomSheet.recipe.d.ts +121 -0
  29. package/dist/components/bottom-sheet/BottomSheet.recipe.js +47 -0
  30. package/dist/components/bottom-sheet/BottomSheet.svelte +847 -0
  31. package/dist/components/bottom-sheet/BottomSheet.svelte.d.ts +4 -0
  32. package/dist/components/bottom-sheet/bottomSheetStore.svelte.d.ts +39 -0
  33. package/dist/components/bottom-sheet/bottomSheetStore.svelte.js +158 -0
  34. package/dist/components/bottom-sheet/index.d.ts +5 -0
  35. package/dist/components/bottom-sheet/index.js +3 -0
  36. package/dist/components/button/Button.recipe.d.ts +131 -0
  37. package/dist/components/button/Button.recipe.js +120 -0
  38. package/dist/components/button/Button.svelte +37 -23
  39. package/dist/components/button/Button.svelte.d.ts +1 -1
  40. package/dist/components/button/index.d.ts +2 -1
  41. package/dist/components/button/index.js +1 -0
  42. package/dist/components/card/{Card.d.ts → Card.recipe.d.ts} +18 -6
  43. package/dist/components/card/Card.recipe.js +41 -0
  44. package/dist/components/card/Card.svelte +5 -5
  45. package/dist/components/card/Card.svelte.d.ts +1 -1
  46. package/dist/components/card/index.d.ts +2 -1
  47. package/dist/components/card/index.js +1 -0
  48. package/dist/components/checkbox/Checkbox.recipe.d.ts +80 -0
  49. package/dist/components/checkbox/Checkbox.recipe.js +39 -0
  50. package/dist/components/checkbox/Checkbox.svelte +29 -35
  51. package/dist/components/checkbox/Checkbox.svelte.d.ts +1 -1
  52. package/dist/components/checkbox/index.d.ts +2 -1
  53. package/dist/components/checkbox/index.js +1 -0
  54. package/dist/components/combobox/Combobox.recipe.d.ts +138 -0
  55. package/dist/components/combobox/Combobox.recipe.js +50 -0
  56. package/dist/components/combobox/Combobox.svelte +57 -37
  57. package/dist/components/combobox/Combobox.svelte.d.ts +1 -1
  58. package/dist/components/combobox/index.d.ts +2 -1
  59. package/dist/components/combobox/index.js +1 -0
  60. package/dist/components/command/Command.recipe.d.ts +92 -0
  61. package/dist/components/command/Command.recipe.js +31 -0
  62. package/dist/components/command/components/command-empty.svelte +2 -2
  63. package/dist/components/command/components/command-group.svelte +4 -3
  64. package/dist/components/command/components/command-input.svelte +3 -7
  65. package/dist/components/command/components/command-item.svelte +2 -5
  66. package/dist/components/command/components/command-link-item.svelte +2 -5
  67. package/dist/components/command/components/command-list.svelte +2 -2
  68. package/dist/components/command/components/command-separator.svelte +2 -2
  69. package/dist/components/command/components/command-shortcut.svelte +2 -2
  70. package/dist/components/command/components/command-shortcut.svelte.d.ts +1 -1
  71. package/dist/components/command/components/command.svelte +2 -5
  72. package/dist/components/command/index.d.ts +2 -0
  73. package/dist/components/command/index.js +1 -0
  74. package/dist/components/date-range-picker/DateRangePicker.recipe.d.ts +220 -0
  75. package/dist/components/date-range-picker/DateRangePicker.recipe.js +113 -0
  76. package/dist/components/date-range-picker/DateRangePicker.svelte +53 -72
  77. package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +1 -1
  78. package/dist/components/date-range-picker/index.d.ts +2 -1
  79. package/dist/components/date-range-picker/index.js +1 -0
  80. package/dist/components/dialog/Dialog.recipe.d.ts +229 -0
  81. package/dist/components/dialog/Dialog.recipe.js +68 -0
  82. package/dist/components/dialog/Dialog.svelte +21 -39
  83. package/dist/components/dialog/Dialog.svelte.d.ts +1 -1
  84. package/dist/components/dialog/index.d.ts +2 -1
  85. package/dist/components/dialog/index.js +1 -0
  86. package/dist/components/drawer/Drawer.recipe.d.ts +140 -0
  87. package/dist/components/drawer/Drawer.recipe.js +50 -0
  88. package/dist/components/drawer/Drawer.svelte +16 -24
  89. package/dist/components/drawer/Drawer.svelte.d.ts +2 -14
  90. package/dist/components/drawer/index.d.ts +1 -0
  91. package/dist/components/drawer/index.js +1 -0
  92. package/dist/components/dropdown-menu/{DropdownMenu.d.ts → DropdownMenu.recipe.d.ts} +63 -4
  93. package/dist/components/dropdown-menu/DropdownMenu.recipe.js +41 -0
  94. package/dist/components/dropdown-menu/components/DropdownMenu.svelte +3 -8
  95. package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
  96. package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +3 -2
  97. package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +1 -1
  98. package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +3 -2
  99. package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +1 -1
  100. package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +3 -9
  101. package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
  102. package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +3 -2
  103. package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +1 -1
  104. package/dist/components/dropdown-menu/index.d.ts +2 -1
  105. package/dist/components/dropdown-menu/index.js +1 -0
  106. package/dist/components/fonts/TeraFontMono.svelte +1 -1
  107. package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -1
  108. package/dist/components/input/Input.recipe.d.ts +166 -0
  109. package/dist/components/input/Input.recipe.js +86 -0
  110. package/dist/components/input/Input.svelte +43 -38
  111. package/dist/components/input/Input.svelte.d.ts +1 -1
  112. package/dist/components/input/index.d.ts +2 -1
  113. package/dist/components/input/index.js +1 -0
  114. package/dist/components/label/Label.recipe.d.ts +46 -0
  115. package/dist/components/label/Label.recipe.js +27 -0
  116. package/dist/components/label/Label.svelte +2 -2
  117. package/dist/components/label/Label.svelte.d.ts +1 -1
  118. package/dist/components/label/index.d.ts +2 -1
  119. package/dist/components/label/index.js +1 -0
  120. package/dist/components/popover/Popover.recipe.d.ts +80 -0
  121. package/dist/components/popover/Popover.recipe.js +23 -0
  122. package/dist/components/popover/Popover.svelte +4 -8
  123. package/dist/components/popover/Popover.svelte.d.ts +1 -1
  124. package/dist/components/popover/index.d.ts +2 -1
  125. package/dist/components/popover/index.js +1 -0
  126. package/dist/components/popover-responsive/PopoverResponsive.recipe.d.ts +85 -0
  127. package/dist/components/popover-responsive/PopoverResponsive.recipe.js +27 -0
  128. package/dist/components/popover-responsive/PopoverResponsive.svelte +38 -5
  129. package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +1 -1
  130. package/dist/components/popover-responsive/index.d.ts +2 -1
  131. package/dist/components/popover-responsive/index.js +1 -0
  132. package/dist/components/select/Select.recipe.d.ts +190 -0
  133. package/dist/components/select/Select.recipe.js +51 -0
  134. package/dist/components/select/Select.svelte +18 -24
  135. package/dist/components/select/Select.svelte.d.ts +1 -1
  136. package/dist/components/select/index.d.ts +2 -1
  137. package/dist/components/select/index.js +1 -0
  138. package/dist/components/skeleton/Skeleton.recipe.d.ts +89 -0
  139. package/dist/components/skeleton/Skeleton.recipe.js +41 -0
  140. package/dist/components/skeleton/Skeleton.svelte +7 -6
  141. package/dist/components/skeleton/Skeleton.svelte.d.ts +2 -10
  142. package/dist/components/skeleton/index.d.ts +2 -0
  143. package/dist/components/skeleton/index.js +1 -0
  144. package/dist/components/slider/Slider.recipe.d.ts +115 -0
  145. package/dist/components/slider/Slider.recipe.js +50 -0
  146. package/dist/components/slider/Slider.svelte +6 -12
  147. package/dist/components/slider/Slider.svelte.d.ts +1 -1
  148. package/dist/components/slider/index.d.ts +3 -1
  149. package/dist/components/slider/index.js +1 -0
  150. package/dist/components/spinner/Spinner.recipe.d.ts +60 -0
  151. package/dist/components/spinner/Spinner.recipe.js +38 -0
  152. package/dist/components/spinner/Spinner.svelte +2 -2
  153. package/dist/components/spinner/Spinner.svelte.d.ts +2 -8
  154. package/dist/components/spinner/index.d.ts +2 -0
  155. package/dist/components/spinner/index.js +1 -0
  156. package/dist/components/star-rating/StarRating.recipe.d.ts +49 -0
  157. package/dist/components/star-rating/StarRating.recipe.js +29 -0
  158. package/dist/components/star-rating/StarRating.svelte +39 -35
  159. package/dist/components/star-rating/StarRating.svelte.d.ts +1 -1
  160. package/dist/components/star-rating/index.d.ts +2 -1
  161. package/dist/components/star-rating/index.js +1 -0
  162. package/dist/components/switch/Switch.recipe.d.ts +81 -0
  163. package/dist/components/switch/Switch.recipe.js +38 -0
  164. package/dist/components/switch/Switch.svelte +27 -36
  165. package/dist/components/switch/Switch.svelte.d.ts +1 -1
  166. package/dist/components/switch/index.d.ts +2 -1
  167. package/dist/components/switch/index.js +1 -0
  168. package/dist/components/table/Table.recipe.d.ts +134 -0
  169. package/dist/components/table/Table.recipe.js +44 -0
  170. package/dist/components/table/Table.svelte +10 -10
  171. package/dist/components/table/Table.svelte.d.ts +2 -17
  172. package/dist/components/table/index.d.ts +2 -0
  173. package/dist/components/table/index.js +1 -0
  174. package/dist/components/tabs/Tabs.recipe.d.ts +161 -0
  175. package/dist/components/tabs/Tabs.recipe.js +76 -0
  176. package/dist/components/tabs/Tabs.svelte.d.ts +2 -57
  177. package/dist/components/tabs/Tabs.svelte.js +3 -0
  178. package/dist/components/tabs/components/Tabs.svelte +8 -8
  179. package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
  180. package/dist/components/tabs/components/TabsContent.svelte +3 -2
  181. package/dist/components/tabs/components/TabsContent.svelte.d.ts +1 -1
  182. package/dist/components/tabs/components/TabsItem.svelte +11 -36
  183. package/dist/components/tabs/components/TabsItem.svelte.d.ts +1 -1
  184. package/dist/components/tabs/components/TabsList.svelte +11 -40
  185. package/dist/components/tabs/components/TabsList.svelte.d.ts +1 -1
  186. package/dist/components/tabs/index.d.ts +2 -1
  187. package/dist/components/tabs/index.js +1 -0
  188. package/dist/components/text-area/TextArea.recipe.d.ts +181 -0
  189. package/dist/components/text-area/TextArea.recipe.js +81 -0
  190. package/dist/components/text-area/TextArea.svelte +68 -63
  191. package/dist/components/text-area/TextArea.svelte.d.ts +1 -1
  192. package/dist/components/text-area/index.d.ts +2 -1
  193. package/dist/components/text-area/index.js +1 -0
  194. package/dist/components/toast/ToastContainer.svelte +15 -16
  195. package/dist/components/tooltip/Tooltip.recipe.d.ts +79 -0
  196. package/dist/components/tooltip/Tooltip.recipe.js +26 -0
  197. package/dist/components/tooltip/Tooltip.svelte +10 -7
  198. package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
  199. package/dist/components/tooltip/index.d.ts +2 -1
  200. package/dist/components/tooltip/index.js +1 -0
  201. package/dist/index.d.ts +55 -65
  202. package/dist/index.js +28 -37
  203. package/dist/{components → internal}/icons/IconCheck.svelte +3 -4
  204. package/dist/{components → internal}/icons/IconChevronDown.svelte +3 -4
  205. package/dist/{components → internal}/icons/IconSearch.svelte +3 -4
  206. package/dist/{components → internal}/icons/IconX.svelte +3 -4
  207. package/dist/internal/icons/index.d.ts +4 -0
  208. package/dist/internal/icons/index.js +4 -0
  209. package/dist/llms/accordion.md +2 -1
  210. package/dist/llms/alert.md +7 -2
  211. package/dist/llms/avatar.md +2 -2
  212. package/dist/llms/badge.md +4 -0
  213. package/dist/llms/bottom-sheet.md +44 -0
  214. package/dist/llms/button.md +7 -1
  215. package/dist/llms/card.md +2 -0
  216. package/dist/llms/checkbox.md +2 -1
  217. package/dist/llms/colors.md +20 -20
  218. package/dist/llms/combobox.md +8 -2
  219. package/dist/llms/command.md +2 -0
  220. package/dist/llms/date-range-picker.md +12 -2
  221. package/dist/llms/dialog.md +9 -4
  222. package/dist/llms/drawer.md +13 -8
  223. package/dist/llms/dropdown-menu.md +11 -2
  224. package/dist/llms/index.md +1 -13
  225. package/dist/llms/input.md +3 -0
  226. package/dist/llms/label.md +2 -0
  227. package/dist/llms/popover-responsive.md +10 -2
  228. package/dist/llms/popover.md +1 -1
  229. package/dist/llms/select.md +2 -1
  230. package/dist/llms/skeleton.md +8 -5
  231. package/dist/llms/slider.md +5 -3
  232. package/dist/llms/spinner.md +6 -2
  233. package/dist/llms/star-rating.md +3 -0
  234. package/dist/llms/switch.md +2 -1
  235. package/dist/llms/table.md +14 -7
  236. package/dist/llms/tabs.md +18 -3
  237. package/dist/llms/text-area.md +3 -0
  238. package/dist/llms/tooltip.md +2 -1
  239. package/dist/recipes/index.d.ts +79 -0
  240. package/dist/recipes/index.js +52 -0
  241. package/dist/stories/ComponentOverview.stories.svelte +346 -350
  242. package/dist/themes/tera-ui-base.css +149 -62
  243. package/dist/themes/theme-cv-builder.css +146 -0
  244. package/dist/themes/theme-professional.css +8 -33
  245. package/dist/tokens/index.d.ts +168 -0
  246. package/dist/tokens/index.js +122 -0
  247. package/dist/types/index.d.ts +19 -24
  248. package/package.json +30 -50
  249. package/registry/accordion.json +65 -0
  250. package/registry/alert.json +43 -0
  251. package/registry/avatar.json +43 -0
  252. package/registry/badge.json +43 -0
  253. package/registry/bottom-sheet.json +50 -0
  254. package/registry/button.json +43 -0
  255. package/registry/card.json +43 -0
  256. package/registry/checkbox.json +45 -0
  257. package/registry/combobox.json +45 -0
  258. package/registry/command.json +109 -0
  259. package/registry/date-range-picker.json +48 -0
  260. package/registry/dialog.json +50 -0
  261. package/registry/drawer.json +45 -0
  262. package/registry/dropdown-menu.json +72 -0
  263. package/registry/fonts.json +41 -0
  264. package/registry/index.json +193 -0
  265. package/registry/input.json +43 -0
  266. package/registry/label.json +44 -0
  267. package/registry/popover-responsive.json +46 -0
  268. package/registry/popover.json +44 -0
  269. package/registry/select.json +51 -0
  270. package/registry/skeleton.json +43 -0
  271. package/registry/slider.json +44 -0
  272. package/registry/spinner.json +43 -0
  273. package/registry/star-rating.json +43 -0
  274. package/registry/switch.json +44 -0
  275. package/registry/table.json +45 -0
  276. package/registry/tabs.json +71 -0
  277. package/registry/text-area.json +43 -0
  278. package/registry/toast.json +41 -0
  279. package/registry/tooltip.json +44 -0
  280. package/scripts/generate-ts-index.js +1 -18
  281. package/scripts/tera-ui.mjs +171 -0
  282. package/dist/components/accordion/Accordion.d.ts +0 -52
  283. package/dist/components/accordion/Accordion.js +0 -11
  284. package/dist/components/ai/ChatBubble.svelte +0 -35
  285. package/dist/components/ai/ChatBubble.svelte.d.ts +0 -12
  286. package/dist/components/ai/PromptInput.svelte +0 -58
  287. package/dist/components/ai/PromptInput.svelte.d.ts +0 -13
  288. package/dist/components/ai/StreamText.svelte +0 -41
  289. package/dist/components/ai/StreamText.svelte.d.ts +0 -11
  290. package/dist/components/ai/SuggestionChips.svelte +0 -34
  291. package/dist/components/ai/SuggestionChips.svelte.d.ts +0 -10
  292. package/dist/components/ai/ThinkingLoader.svelte +0 -34
  293. package/dist/components/ai/ThinkingLoader.svelte.d.ts +0 -11
  294. package/dist/components/ai/index.d.ts +0 -5
  295. package/dist/components/ai/index.js +0 -5
  296. package/dist/components/avatar/Avatar.d.ts +0 -45
  297. package/dist/components/avatar/Avatar.js +0 -35
  298. package/dist/components/badge/Badge.d.ts +0 -52
  299. package/dist/components/badge/Badge.js +0 -22
  300. package/dist/components/brand-logo/BrandLogo.d.ts +0 -38
  301. package/dist/components/brand-logo/BrandLogo.js +0 -18
  302. package/dist/components/brand-logo/BrandLogo.svelte +0 -36
  303. package/dist/components/brand-logo/BrandLogo.svelte.d.ts +0 -4
  304. package/dist/components/brand-logo/index.d.ts +0 -2
  305. package/dist/components/brand-logo/index.js +0 -1
  306. package/dist/components/button/Button.d.ts +0 -113
  307. package/dist/components/button/Button.js +0 -135
  308. package/dist/components/card/Card.js +0 -28
  309. package/dist/components/checkbox/Checkbox.d.ts +0 -32
  310. package/dist/components/checkbox/Checkbox.js +0 -11
  311. package/dist/components/combobox/Combobox.d.ts +0 -47
  312. package/dist/components/combobox/Combobox.js +0 -5
  313. package/dist/components/date-range-picker/DateRangePicker.types.d.ts +0 -38
  314. package/dist/components/date-range-picker/DateRangePicker.types.js +0 -1
  315. package/dist/components/dialog/Dialog.d.ts +0 -55
  316. package/dist/components/dialog/Dialog.js +0 -1
  317. package/dist/components/dropdown-menu/DropdownMenu.js +0 -1
  318. package/dist/components/header/Header.d.ts +0 -11
  319. package/dist/components/header/Header.js +0 -7
  320. package/dist/components/header/Header.svelte +0 -33
  321. package/dist/components/header/Header.svelte.d.ts +0 -5
  322. package/dist/components/header/header.scss +0 -20
  323. package/dist/components/header/index.d.ts +0 -2
  324. package/dist/components/header/index.js +0 -1
  325. package/dist/components/header/package.json +0 -14
  326. package/dist/components/icons/IconArrowBigRightFilled.svelte +0 -7
  327. package/dist/components/icons/IconArrowBigRightFilled.svelte.d.ts +0 -5
  328. package/dist/components/icons/IconBook.svelte +0 -7
  329. package/dist/components/icons/IconBook.svelte.d.ts +0 -5
  330. package/dist/components/icons/IconBookmarkPlus.svelte +0 -7
  331. package/dist/components/icons/IconBookmarkPlus.svelte.d.ts +0 -5
  332. package/dist/components/icons/IconCalculator.svelte +0 -7
  333. package/dist/components/icons/IconCalculator.svelte.d.ts +0 -5
  334. package/dist/components/icons/IconCoin.svelte +0 -7
  335. package/dist/components/icons/IconCoin.svelte.d.ts +0 -5
  336. package/dist/components/icons/IconCoinConvert.svelte +0 -17
  337. package/dist/components/icons/IconCoinConvert.svelte.d.ts +0 -4
  338. package/dist/components/icons/IconCopy.svelte +0 -7
  339. package/dist/components/icons/IconCopy.svelte.d.ts +0 -5
  340. package/dist/components/icons/IconCopyCheckFilled.svelte +0 -7
  341. package/dist/components/icons/IconCopyCheckFilled.svelte.d.ts +0 -5
  342. package/dist/components/icons/IconHamburger.svelte +0 -7
  343. package/dist/components/icons/IconHamburger.svelte.d.ts +0 -4
  344. package/dist/components/icons/IconLanguage.svelte +0 -7
  345. package/dist/components/icons/IconLanguage.svelte.d.ts +0 -5
  346. package/dist/components/icons/IconLoader2.svelte +0 -7
  347. package/dist/components/icons/IconLoader2.svelte.d.ts +0 -5
  348. package/dist/components/icons/IconLogout.svelte +0 -7
  349. package/dist/components/icons/IconLogout.svelte.d.ts +0 -5
  350. package/dist/components/icons/IconMoon.svelte +0 -7
  351. package/dist/components/icons/IconMoon.svelte.d.ts +0 -4
  352. package/dist/components/icons/IconPointFilled.svelte +0 -7
  353. package/dist/components/icons/IconPointFilled.svelte.d.ts +0 -5
  354. package/dist/components/icons/IconSettings.svelte +0 -7
  355. package/dist/components/icons/IconSettings.svelte.d.ts +0 -5
  356. package/dist/components/icons/IconSun.svelte +0 -7
  357. package/dist/components/icons/IconSun.svelte.d.ts +0 -4
  358. package/dist/components/icons/IconSwitchHorizontal.svelte +0 -7
  359. package/dist/components/icons/IconSwitchHorizontal.svelte.d.ts +0 -5
  360. package/dist/components/icons/IconSwitchVertical.svelte +0 -7
  361. package/dist/components/icons/IconSwitchVertical.svelte.d.ts +0 -5
  362. package/dist/components/icons/IconTransform.svelte +0 -7
  363. package/dist/components/icons/IconTransform.svelte.d.ts +0 -5
  364. package/dist/components/icons/index.d.ts +0 -23
  365. package/dist/components/icons/index.js +0 -23
  366. package/dist/components/input/Input.d.ts +0 -72
  367. package/dist/components/input/Input.js +0 -45
  368. package/dist/components/label/Label.d.ts +0 -38
  369. package/dist/components/label/Label.js +0 -18
  370. package/dist/components/language-picker-button/LanguagePickerButton.d.ts +0 -15
  371. package/dist/components/language-picker-button/LanguagePickerButton.js +0 -7
  372. package/dist/components/language-picker-button/LanguagePickerButton.svelte +0 -78
  373. package/dist/components/language-picker-button/LanguagePickerButton.svelte.d.ts +0 -7
  374. package/dist/components/language-picker-button/index.d.ts +0 -2
  375. package/dist/components/language-picker-button/index.js +0 -1
  376. package/dist/components/light-dark-toggle/LightDarkToggle.d.ts +0 -11
  377. package/dist/components/light-dark-toggle/LightDarkToggle.js +0 -7
  378. package/dist/components/light-dark-toggle/LightDarkToggle.svelte +0 -33
  379. package/dist/components/light-dark-toggle/LightDarkToggle.svelte.d.ts +0 -4
  380. package/dist/components/light-dark-toggle/index.d.ts +0 -2
  381. package/dist/components/light-dark-toggle/index.js +0 -1
  382. package/dist/components/marketing/FeatureCard.svelte +0 -37
  383. package/dist/components/marketing/FeatureCard.svelte.d.ts +0 -13
  384. package/dist/components/marketing/PricingCard.svelte +0 -48
  385. package/dist/components/marketing/PricingCard.svelte.d.ts +0 -15
  386. package/dist/components/marketing/StatBlock.svelte +0 -14
  387. package/dist/components/marketing/StatBlock.svelte.d.ts +0 -10
  388. package/dist/components/marketing/TestimonialCard.svelte +0 -24
  389. package/dist/components/marketing/TestimonialCard.svelte.d.ts +0 -12
  390. package/dist/components/marketing/index.d.ts +0 -4
  391. package/dist/components/marketing/index.js +0 -4
  392. package/dist/components/popover/Popover.d.ts +0 -37
  393. package/dist/components/popover/Popover.js +0 -1
  394. package/dist/components/popover-responsive/PopoverResponsive.d.ts +0 -22
  395. package/dist/components/popover-responsive/PopoverResponsive.js +0 -1
  396. package/dist/components/select/Select.d.ts +0 -106
  397. package/dist/components/select/Select.js +0 -24
  398. package/dist/components/side-navigation/SideNavigation.d.ts +0 -72
  399. package/dist/components/side-navigation/SideNavigation.js +0 -91
  400. package/dist/components/side-navigation/SideNavigation.svelte +0 -143
  401. package/dist/components/side-navigation/SideNavigation.svelte.d.ts +0 -4
  402. package/dist/components/side-navigation/SideNavigationGroup.svelte +0 -40
  403. package/dist/components/side-navigation/SideNavigationGroup.svelte.d.ts +0 -10
  404. package/dist/components/side-navigation/SideNavigationItem.svelte +0 -18
  405. package/dist/components/side-navigation/SideNavigationItem.svelte.d.ts +0 -8
  406. package/dist/components/side-navigation/SideNavigationLayout.svelte +0 -19
  407. package/dist/components/side-navigation/SideNavigationLayout.svelte.d.ts +0 -9
  408. package/dist/components/side-navigation/index.d.ts +0 -5
  409. package/dist/components/side-navigation/index.js +0 -4
  410. package/dist/components/side-navigation/sidenav.scss +0 -226
  411. package/dist/components/slider/Slider.d.ts +0 -28
  412. package/dist/components/slider/Slider.js +0 -1
  413. package/dist/components/star-rating/StarRating.d.ts +0 -31
  414. package/dist/components/star-rating/StarRating.js +0 -15
  415. package/dist/components/switch/Switch.d.ts +0 -27
  416. package/dist/components/switch/Switch.js +0 -11
  417. package/dist/components/tera-ui-context/TeraUiContext.d.ts +0 -11
  418. package/dist/components/tera-ui-context/TeraUiContext.js +0 -1
  419. package/dist/components/tera-ui-context/TeraUiContext.svelte +0 -13
  420. package/dist/components/tera-ui-context/TeraUiContext.svelte.d.ts +0 -4
  421. package/dist/components/tera-ui-context/global-context-store.d.ts +0 -3
  422. package/dist/components/tera-ui-context/global-context-store.js +0 -2
  423. package/dist/components/tera-ui-context/global-context.d.ts +0 -3
  424. package/dist/components/tera-ui-context/global-context.js +0 -24
  425. package/dist/components/tera-ui-context/index.d.ts +0 -2
  426. package/dist/components/tera-ui-context/index.js +0 -1
  427. package/dist/components/text-area/TextArea.d.ts +0 -87
  428. package/dist/components/text-area/TextArea.js +0 -48
  429. package/dist/components/tooltip/Tooltip.d.ts +0 -23
  430. package/dist/components/tooltip/Tooltip.js +0 -1
  431. package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.d.ts +0 -14
  432. package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.js +0 -7
  433. package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +0 -48
  434. package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte.d.ts +0 -4
  435. package/dist/components/user-avatar-with-menu/index.d.ts +0 -2
  436. package/dist/components/user-avatar-with-menu/index.js +0 -1
  437. package/dist/i18n/index.d.ts +0 -1
  438. package/dist/i18n/index.js +0 -1
  439. package/dist/i18n/language.d.ts +0 -2
  440. package/dist/i18n/language.js +0 -45
  441. package/dist/internal/service/user.service.d.ts +0 -2
  442. package/dist/internal/service/user.service.js +0 -20
  443. package/dist/llms/ai.md +0 -110
  444. package/dist/llms/brand-logo.md +0 -30
  445. package/dist/llms/header.md +0 -26
  446. package/dist/llms/icons.md +0 -43
  447. package/dist/llms/language-picker-button.md +0 -30
  448. package/dist/llms/light-dark-toggle.md +0 -26
  449. package/dist/llms/marketing.md +0 -95
  450. package/dist/llms/side-navigation.md +0 -51
  451. package/dist/llms/tera-ui-context.md +0 -30
  452. package/dist/llms/user-avatar-with-menu.md +0 -28
  453. package/dist/paraglide/.prettierignore +0 -3
  454. package/dist/paraglide/README.md +0 -162
  455. package/dist/paraglide/messages/_index.d.ts +0 -106
  456. package/dist/paraglide/messages/_index.js +0 -439
  457. package/dist/paraglide/messages/ar.d.ts +0 -23
  458. package/dist/paraglide/messages/ar.js +0 -38
  459. package/dist/paraglide/messages/bg.d.ts +0 -23
  460. package/dist/paraglide/messages/bg.js +0 -38
  461. package/dist/paraglide/messages/bn.d.ts +0 -23
  462. package/dist/paraglide/messages/bn.js +0 -38
  463. package/dist/paraglide/messages/ca.d.ts +0 -23
  464. package/dist/paraglide/messages/ca.js +0 -38
  465. package/dist/paraglide/messages/cs.d.ts +0 -23
  466. package/dist/paraglide/messages/cs.js +0 -38
  467. package/dist/paraglide/messages/da.d.ts +0 -23
  468. package/dist/paraglide/messages/da.js +0 -38
  469. package/dist/paraglide/messages/de.d.ts +0 -23
  470. package/dist/paraglide/messages/de.js +0 -38
  471. package/dist/paraglide/messages/el.d.ts +0 -23
  472. package/dist/paraglide/messages/el.js +0 -38
  473. package/dist/paraglide/messages/en.d.ts +0 -23
  474. package/dist/paraglide/messages/en.js +0 -38
  475. package/dist/paraglide/messages/es.d.ts +0 -23
  476. package/dist/paraglide/messages/es.js +0 -38
  477. package/dist/paraglide/messages/fi.d.ts +0 -23
  478. package/dist/paraglide/messages/fi.js +0 -38
  479. package/dist/paraglide/messages/fr.d.ts +0 -23
  480. package/dist/paraglide/messages/fr.js +0 -38
  481. package/dist/paraglide/messages/he.d.ts +0 -23
  482. package/dist/paraglide/messages/he.js +0 -38
  483. package/dist/paraglide/messages/hi.d.ts +0 -23
  484. package/dist/paraglide/messages/hi.js +0 -38
  485. package/dist/paraglide/messages/hu.d.ts +0 -23
  486. package/dist/paraglide/messages/hu.js +0 -38
  487. package/dist/paraglide/messages/id.d.ts +0 -23
  488. package/dist/paraglide/messages/id.js +0 -38
  489. package/dist/paraglide/messages/it.d.ts +0 -23
  490. package/dist/paraglide/messages/it.js +0 -38
  491. package/dist/paraglide/messages/ja.d.ts +0 -23
  492. package/dist/paraglide/messages/ja.js +0 -38
  493. package/dist/paraglide/messages/ko.d.ts +0 -23
  494. package/dist/paraglide/messages/ko.js +0 -38
  495. package/dist/paraglide/messages/lt.d.ts +0 -23
  496. package/dist/paraglide/messages/lt.js +0 -38
  497. package/dist/paraglide/messages/lv.d.ts +0 -23
  498. package/dist/paraglide/messages/lv.js +0 -38
  499. package/dist/paraglide/messages/ms.d.ts +0 -23
  500. package/dist/paraglide/messages/ms.js +0 -38
  501. package/dist/paraglide/messages/nl.d.ts +0 -23
  502. package/dist/paraglide/messages/nl.js +0 -38
  503. package/dist/paraglide/messages/no.d.ts +0 -23
  504. package/dist/paraglide/messages/no.js +0 -38
  505. package/dist/paraglide/messages/pl.d.ts +0 -23
  506. package/dist/paraglide/messages/pl.js +0 -38
  507. package/dist/paraglide/messages/pt.d.ts +0 -23
  508. package/dist/paraglide/messages/pt.js +0 -38
  509. package/dist/paraglide/messages/ro.d.ts +0 -23
  510. package/dist/paraglide/messages/ro.js +0 -38
  511. package/dist/paraglide/messages/ru.d.ts +0 -23
  512. package/dist/paraglide/messages/ru.js +0 -38
  513. package/dist/paraglide/messages/sk.d.ts +0 -23
  514. package/dist/paraglide/messages/sk.js +0 -38
  515. package/dist/paraglide/messages/sl.d.ts +0 -23
  516. package/dist/paraglide/messages/sl.js +0 -38
  517. package/dist/paraglide/messages/sq.d.ts +0 -23
  518. package/dist/paraglide/messages/sq.js +0 -38
  519. package/dist/paraglide/messages/sr.d.ts +0 -23
  520. package/dist/paraglide/messages/sr.js +0 -38
  521. package/dist/paraglide/messages/sv.d.ts +0 -23
  522. package/dist/paraglide/messages/sv.js +0 -38
  523. package/dist/paraglide/messages/sw.d.ts +0 -23
  524. package/dist/paraglide/messages/sw.js +0 -38
  525. package/dist/paraglide/messages/ta.d.ts +0 -23
  526. package/dist/paraglide/messages/ta.js +0 -38
  527. package/dist/paraglide/messages/te.d.ts +0 -23
  528. package/dist/paraglide/messages/te.js +0 -38
  529. package/dist/paraglide/messages/th.d.ts +0 -23
  530. package/dist/paraglide/messages/th.js +0 -38
  531. package/dist/paraglide/messages/tl.d.ts +0 -23
  532. package/dist/paraglide/messages/tl.js +0 -38
  533. package/dist/paraglide/messages/tr.d.ts +0 -23
  534. package/dist/paraglide/messages/tr.js +0 -38
  535. package/dist/paraglide/messages/uk.d.ts +0 -23
  536. package/dist/paraglide/messages/uk.js +0 -38
  537. package/dist/paraglide/messages/vi.d.ts +0 -23
  538. package/dist/paraglide/messages/vi.js +0 -38
  539. package/dist/paraglide/messages/zh-CN.d.ts +0 -23
  540. package/dist/paraglide/messages/zh-CN.js +0 -38
  541. package/dist/paraglide/messages/zh-TW.d.ts +0 -23
  542. package/dist/paraglide/messages/zh-TW.js +0 -38
  543. package/dist/paraglide/messages.d.ts +0 -2
  544. package/dist/paraglide/messages.js +0 -4
  545. package/dist/paraglide/registry.d.ts +0 -34
  546. package/dist/paraglide/registry.js +0 -46
  547. package/dist/paraglide/runtime.d.ts +0 -758
  548. package/dist/paraglide/runtime.js +0 -1990
  549. package/dist/paraglide/server.d.ts +0 -96
  550. package/dist/paraglide/server.js +0 -277
  551. package/dist/tera-i18n/README.md +0 -105
  552. package/dist/tera-i18n/assets/world-flags/Algeria.svg +0 -13
  553. package/dist/tera-i18n/assets/world-flags/East Timor.svg +0 -13
  554. package/dist/tera-i18n/assets/world-flags/Rapa Nui.svg +0 -11
  555. package/dist/tera-i18n/assets/world-flags/abkhazia.svg +0 -23
  556. package/dist/tera-i18n/assets/world-flags/afghanistan.svg +0 -14
  557. package/dist/tera-i18n/assets/world-flags/aland islands.svg +0 -15
  558. package/dist/tera-i18n/assets/world-flags/albania.svg +0 -11
  559. package/dist/tera-i18n/assets/world-flags/american samoa.svg +0 -15
  560. package/dist/tera-i18n/assets/world-flags/andorra.svg +0 -15
  561. package/dist/tera-i18n/assets/world-flags/angola.svg +0 -14
  562. package/dist/tera-i18n/assets/world-flags/anguilla.svg +0 -19
  563. package/dist/tera-i18n/assets/world-flags/antigua and barbuda.svg +0 -15
  564. package/dist/tera-i18n/assets/world-flags/argentina.svg +0 -13
  565. package/dist/tera-i18n/assets/world-flags/armenia.svg +0 -12
  566. package/dist/tera-i18n/assets/world-flags/aruba.svg +0 -15
  567. package/dist/tera-i18n/assets/world-flags/australia.svg +0 -21
  568. package/dist/tera-i18n/assets/world-flags/austria.svg +0 -12
  569. package/dist/tera-i18n/assets/world-flags/azerbaijan.svg +0 -14
  570. package/dist/tera-i18n/assets/world-flags/azores islands.svg +0 -21
  571. package/dist/tera-i18n/assets/world-flags/bahamas.svg +0 -13
  572. package/dist/tera-i18n/assets/world-flags/bahrain.svg +0 -11
  573. package/dist/tera-i18n/assets/world-flags/balearic islands.svg +0 -16
  574. package/dist/tera-i18n/assets/world-flags/bangladesh.svg +0 -11
  575. package/dist/tera-i18n/assets/world-flags/barbados.svg +0 -13
  576. package/dist/tera-i18n/assets/world-flags/basque country.svg +0 -20
  577. package/dist/tera-i18n/assets/world-flags/belarus.svg +0 -18
  578. package/dist/tera-i18n/assets/world-flags/belgium.svg +0 -12
  579. package/dist/tera-i18n/assets/world-flags/belize.svg +0 -17
  580. package/dist/tera-i18n/assets/world-flags/benin.svg +0 -12
  581. package/dist/tera-i18n/assets/world-flags/bermuda.svg +0 -20
  582. package/dist/tera-i18n/assets/world-flags/bhutan.svg +0 -13
  583. package/dist/tera-i18n/assets/world-flags/bolivia.svg +0 -12
  584. package/dist/tera-i18n/assets/world-flags/bonaire.svg +0 -14
  585. package/dist/tera-i18n/assets/world-flags/bosnia and herzegovina.svg +0 -13
  586. package/dist/tera-i18n/assets/world-flags/botswana.svg +0 -13
  587. package/dist/tera-i18n/assets/world-flags/brazil.svg +0 -14
  588. package/dist/tera-i18n/assets/world-flags/british columbia.svg +0 -31
  589. package/dist/tera-i18n/assets/world-flags/british indian ocean territory.svg +0 -29
  590. package/dist/tera-i18n/assets/world-flags/british virgin islands.svg +0 -24
  591. package/dist/tera-i18n/assets/world-flags/brunei.svg +0 -19
  592. package/dist/tera-i18n/assets/world-flags/bulgaria.svg +0 -12
  593. package/dist/tera-i18n/assets/world-flags/burkina faso.svg +0 -12
  594. package/dist/tera-i18n/assets/world-flags/burundi.svg +0 -18
  595. package/dist/tera-i18n/assets/world-flags/cambodia.svg +0 -13
  596. package/dist/tera-i18n/assets/world-flags/cameroon.svg +0 -13
  597. package/dist/tera-i18n/assets/world-flags/canada.svg +0 -13
  598. package/dist/tera-i18n/assets/world-flags/canary islands.svg +0 -12
  599. package/dist/tera-i18n/assets/world-flags/cape verde.svg +0 -23
  600. package/dist/tera-i18n/assets/world-flags/catalonia.svg +0 -7
  601. package/dist/tera-i18n/assets/world-flags/cayman islands.svg +0 -20
  602. package/dist/tera-i18n/assets/world-flags/central african republic.svg +0 -20
  603. package/dist/tera-i18n/assets/world-flags/ceuta.svg +0 -29
  604. package/dist/tera-i18n/assets/world-flags/chad.svg +0 -12
  605. package/dist/tera-i18n/assets/world-flags/chile.svg +0 -13
  606. package/dist/tera-i18n/assets/world-flags/china.svg +0 -15
  607. package/dist/tera-i18n/assets/world-flags/cocos island.svg +0 -19
  608. package/dist/tera-i18n/assets/world-flags/colombia.svg +0 -12
  609. package/dist/tera-i18n/assets/world-flags/comoros.svg +0 -19
  610. package/dist/tera-i18n/assets/world-flags/cook islands.svg +0 -22
  611. package/dist/tera-i18n/assets/world-flags/corsica.svg +0 -12
  612. package/dist/tera-i18n/assets/world-flags/costa rica.svg +0 -13
  613. package/dist/tera-i18n/assets/world-flags/croatia.svg +0 -31
  614. package/dist/tera-i18n/assets/world-flags/cuba.svg +0 -16
  615. package/dist/tera-i18n/assets/world-flags/curacao.svg +0 -14
  616. package/dist/tera-i18n/assets/world-flags/cyprus.svg +0 -12
  617. package/dist/tera-i18n/assets/world-flags/czech republic.svg +0 -12
  618. package/dist/tera-i18n/assets/world-flags/democratic republic of congo.svg +0 -14
  619. package/dist/tera-i18n/assets/world-flags/denmark.svg +0 -14
  620. package/dist/tera-i18n/assets/world-flags/djibouti.svg +0 -13
  621. package/dist/tera-i18n/assets/world-flags/dominica.svg +0 -34
  622. package/dist/tera-i18n/assets/world-flags/dominican republic.svg +0 -17
  623. package/dist/tera-i18n/assets/world-flags/ecuador.svg +0 -15
  624. package/dist/tera-i18n/assets/world-flags/egypt.svg +0 -13
  625. package/dist/tera-i18n/assets/world-flags/el salvador.svg +0 -15
  626. package/dist/tera-i18n/assets/world-flags/england.svg +0 -11
  627. package/dist/tera-i18n/assets/world-flags/equatorial guinea.svg +0 -16
  628. package/dist/tera-i18n/assets/world-flags/eritrea.svg +0 -13
  629. package/dist/tera-i18n/assets/world-flags/estonia.svg +0 -12
  630. package/dist/tera-i18n/assets/world-flags/ethiopia.svg +0 -15
  631. package/dist/tera-i18n/assets/world-flags/european union.svg +0 -18
  632. package/dist/tera-i18n/assets/world-flags/falkland islands.svg +0 -18
  633. package/dist/tera-i18n/assets/world-flags/faroe islands.svg +0 -12
  634. package/dist/tera-i18n/assets/world-flags/fiji.svg +0 -18
  635. package/dist/tera-i18n/assets/world-flags/finland.svg +0 -11
  636. package/dist/tera-i18n/assets/world-flags/france.svg +0 -12
  637. package/dist/tera-i18n/assets/world-flags/french polynesia.svg +0 -17
  638. package/dist/tera-i18n/assets/world-flags/gabon.svg +0 -12
  639. package/dist/tera-i18n/assets/world-flags/galapagos islands.svg +0 -12
  640. package/dist/tera-i18n/assets/world-flags/gambia.svg +0 -13
  641. package/dist/tera-i18n/assets/world-flags/georgia.svg +0 -15
  642. package/dist/tera-i18n/assets/world-flags/germany.svg +0 -12
  643. package/dist/tera-i18n/assets/world-flags/ghana.svg +0 -13
  644. package/dist/tera-i18n/assets/world-flags/gibraltar.svg +0 -13
  645. package/dist/tera-i18n/assets/world-flags/greece.svg +0 -15
  646. package/dist/tera-i18n/assets/world-flags/greenland.svg +0 -13
  647. package/dist/tera-i18n/assets/world-flags/grenada.svg +0 -27
  648. package/dist/tera-i18n/assets/world-flags/guam.svg +0 -18
  649. package/dist/tera-i18n/assets/world-flags/guatemala.svg +0 -14
  650. package/dist/tera-i18n/assets/world-flags/guernsey.svg +0 -12
  651. package/dist/tera-i18n/assets/world-flags/guinea bissau.svg +0 -14
  652. package/dist/tera-i18n/assets/world-flags/guinea.svg +0 -12
  653. package/dist/tera-i18n/assets/world-flags/guyana.svg +0 -15
  654. package/dist/tera-i18n/assets/world-flags/haiti.svg +0 -17
  655. package/dist/tera-i18n/assets/world-flags/hawaii.svg +0 -15
  656. package/dist/tera-i18n/assets/world-flags/honduras.svg +0 -17
  657. package/dist/tera-i18n/assets/world-flags/hong kong.svg +0 -15
  658. package/dist/tera-i18n/assets/world-flags/hungary.svg +0 -12
  659. package/dist/tera-i18n/assets/world-flags/iceland.svg +0 -15
  660. package/dist/tera-i18n/assets/world-flags/india.svg +0 -15
  661. package/dist/tera-i18n/assets/world-flags/indonesia.svg +0 -11
  662. package/dist/tera-i18n/assets/world-flags/iran.svg +0 -13
  663. package/dist/tera-i18n/assets/world-flags/iraq.svg +0 -15
  664. package/dist/tera-i18n/assets/world-flags/ireland.svg +0 -12
  665. package/dist/tera-i18n/assets/world-flags/isle of man.svg +0 -11
  666. package/dist/tera-i18n/assets/world-flags/israel.svg +0 -13
  667. package/dist/tera-i18n/assets/world-flags/italy.svg +0 -12
  668. package/dist/tera-i18n/assets/world-flags/ivory coast.svg +0 -12
  669. package/dist/tera-i18n/assets/world-flags/jamaica.svg +0 -14
  670. package/dist/tera-i18n/assets/world-flags/japan.svg +0 -11
  671. package/dist/tera-i18n/assets/world-flags/jersey.svg +0 -13
  672. package/dist/tera-i18n/assets/world-flags/jordan.svg +0 -14
  673. package/dist/tera-i18n/assets/world-flags/kazakhstan.svg +0 -13
  674. package/dist/tera-i18n/assets/world-flags/kenya.svg +0 -19
  675. package/dist/tera-i18n/assets/world-flags/kiribati.svg +0 -17
  676. package/dist/tera-i18n/assets/world-flags/kosovo.svg +0 -17
  677. package/dist/tera-i18n/assets/world-flags/kuwait.svg +0 -13
  678. package/dist/tera-i18n/assets/world-flags/kyrgyzstan.svg +0 -16
  679. package/dist/tera-i18n/assets/world-flags/laos.svg +0 -13
  680. package/dist/tera-i18n/assets/world-flags/latvia.svg +0 -12
  681. package/dist/tera-i18n/assets/world-flags/lebanon.svg +0 -13
  682. package/dist/tera-i18n/assets/world-flags/lesotho.svg +0 -13
  683. package/dist/tera-i18n/assets/world-flags/liberia.svg +0 -23
  684. package/dist/tera-i18n/assets/world-flags/libya.svg +0 -14
  685. package/dist/tera-i18n/assets/world-flags/liechtenstein.svg +0 -12
  686. package/dist/tera-i18n/assets/world-flags/lithuania.svg +0 -12
  687. package/dist/tera-i18n/assets/world-flags/luxembourg.svg +0 -12
  688. package/dist/tera-i18n/assets/world-flags/macao.svg +0 -18
  689. package/dist/tera-i18n/assets/world-flags/madagascar.svg +0 -12
  690. package/dist/tera-i18n/assets/world-flags/madeira.svg +0 -14
  691. package/dist/tera-i18n/assets/world-flags/malawi.svg +0 -13
  692. package/dist/tera-i18n/assets/world-flags/malaysia.svg +0 -17
  693. package/dist/tera-i18n/assets/world-flags/maldives.svg +0 -12
  694. package/dist/tera-i18n/assets/world-flags/mali.svg +0 -12
  695. package/dist/tera-i18n/assets/world-flags/malta.svg +0 -12
  696. package/dist/tera-i18n/assets/world-flags/marshall island.svg +0 -13
  697. package/dist/tera-i18n/assets/world-flags/martinique.svg +0 -18
  698. package/dist/tera-i18n/assets/world-flags/mauritania.svg +0 -12
  699. package/dist/tera-i18n/assets/world-flags/mauritius.svg +0 -13
  700. package/dist/tera-i18n/assets/world-flags/melilla.svg +0 -25
  701. package/dist/tera-i18n/assets/world-flags/mexico.svg +0 -14
  702. package/dist/tera-i18n/assets/world-flags/micronesia.svg +0 -14
  703. package/dist/tera-i18n/assets/world-flags/moldova.svg +0 -15
  704. package/dist/tera-i18n/assets/world-flags/monaco.svg +0 -11
  705. package/dist/tera-i18n/assets/world-flags/mongolia.svg +0 -19
  706. package/dist/tera-i18n/assets/world-flags/montenegro.svg +0 -15
  707. package/dist/tera-i18n/assets/world-flags/montserrat.svg +0 -17
  708. package/dist/tera-i18n/assets/world-flags/morocco.svg +0 -11
  709. package/dist/tera-i18n/assets/world-flags/mozambique.svg +0 -17
  710. package/dist/tera-i18n/assets/world-flags/myanmar.svg +0 -13
  711. package/dist/tera-i18n/assets/world-flags/namibia.svg +0 -14
  712. package/dist/tera-i18n/assets/world-flags/nato.svg +0 -19
  713. package/dist/tera-i18n/assets/world-flags/nauru.svg +0 -14
  714. package/dist/tera-i18n/assets/world-flags/nepal.svg +0 -16
  715. package/dist/tera-i18n/assets/world-flags/netherlands.svg +0 -12
  716. package/dist/tera-i18n/assets/world-flags/new zealand.svg +0 -18
  717. package/dist/tera-i18n/assets/world-flags/nicaragua.svg +0 -16
  718. package/dist/tera-i18n/assets/world-flags/niger.svg +0 -13
  719. package/dist/tera-i18n/assets/world-flags/nigeria.svg +0 -12
  720. package/dist/tera-i18n/assets/world-flags/niue.svg +0 -20
  721. package/dist/tera-i18n/assets/world-flags/norfolk island.svg +0 -13
  722. package/dist/tera-i18n/assets/world-flags/north korea.svg +0 -15
  723. package/dist/tera-i18n/assets/world-flags/northern cyprus.svg +0 -14
  724. package/dist/tera-i18n/assets/world-flags/northern marianas islands.svg +0 -14
  725. package/dist/tera-i18n/assets/world-flags/norway.svg +0 -15
  726. package/dist/tera-i18n/assets/world-flags/oman.svg +0 -15
  727. package/dist/tera-i18n/assets/world-flags/orkney islands.svg +0 -15
  728. package/dist/tera-i18n/assets/world-flags/ossetia.svg +0 -12
  729. package/dist/tera-i18n/assets/world-flags/pakistan.svg +0 -14
  730. package/dist/tera-i18n/assets/world-flags/palau.svg +0 -11
  731. package/dist/tera-i18n/assets/world-flags/palestine.svg +0 -13
  732. package/dist/tera-i18n/assets/world-flags/panama.svg +0 -14
  733. package/dist/tera-i18n/assets/world-flags/papua new guinea.svg +0 -17
  734. package/dist/tera-i18n/assets/world-flags/paraguay.svg +0 -14
  735. package/dist/tera-i18n/assets/world-flags/peru.svg +0 -12
  736. package/dist/tera-i18n/assets/world-flags/philippines.svg +0 -16
  737. package/dist/tera-i18n/assets/world-flags/pitcairn islands.svg +0 -18
  738. package/dist/tera-i18n/assets/world-flags/poland.svg +0 -11
  739. package/dist/tera-i18n/assets/world-flags/portugal.svg +0 -14
  740. package/dist/tera-i18n/assets/world-flags/puerto rico.svg +0 -15
  741. package/dist/tera-i18n/assets/world-flags/qatar.svg +0 -11
  742. package/dist/tera-i18n/assets/world-flags/republic of macedonia.svg +0 -20
  743. package/dist/tera-i18n/assets/world-flags/republic of the congo.svg +0 -12
  744. package/dist/tera-i18n/assets/world-flags/romania.svg +0 -12
  745. package/dist/tera-i18n/assets/world-flags/russia.svg +0 -12
  746. package/dist/tera-i18n/assets/world-flags/rwanda.svg +0 -13
  747. package/dist/tera-i18n/assets/world-flags/saba island.svg +0 -15
  748. package/dist/tera-i18n/assets/world-flags/sahrawi arab democratic republic.svg +0 -15
  749. package/dist/tera-i18n/assets/world-flags/samoa.svg +0 -16
  750. package/dist/tera-i18n/assets/world-flags/san marino.svg +0 -16
  751. package/dist/tera-i18n/assets/world-flags/sao tome and prince.svg +0 -15
  752. package/dist/tera-i18n/assets/world-flags/sardinia.svg +0 -23
  753. package/dist/tera-i18n/assets/world-flags/saudi arabia.svg +0 -16
  754. package/dist/tera-i18n/assets/world-flags/scotland.svg +0 -14
  755. package/dist/tera-i18n/assets/world-flags/senegal.svg +0 -13
  756. package/dist/tera-i18n/assets/world-flags/serbia.svg +0 -16
  757. package/dist/tera-i18n/assets/world-flags/seychelles.svg +0 -14
  758. package/dist/tera-i18n/assets/world-flags/sierra leone.svg +0 -12
  759. package/dist/tera-i18n/assets/world-flags/singapore.svg +0 -17
  760. package/dist/tera-i18n/assets/world-flags/sint eustatius.svg +0 -20
  761. package/dist/tera-i18n/assets/world-flags/sint maarten.svg +0 -17
  762. package/dist/tera-i18n/assets/world-flags/slovakia.svg +0 -16
  763. package/dist/tera-i18n/assets/world-flags/slovenia.svg +0 -13
  764. package/dist/tera-i18n/assets/world-flags/solomon islands.svg +0 -17
  765. package/dist/tera-i18n/assets/world-flags/somalia.svg +0 -11
  766. package/dist/tera-i18n/assets/world-flags/somaliland.svg +0 -18
  767. package/dist/tera-i18n/assets/world-flags/south africa.svg +0 -15
  768. package/dist/tera-i18n/assets/world-flags/south korea.svg +0 -30
  769. package/dist/tera-i18n/assets/world-flags/south sudan.svg +0 -15
  770. package/dist/tera-i18n/assets/world-flags/spain.png +0 -0
  771. package/dist/tera-i18n/assets/world-flags/spain.svg +0 -676
  772. package/dist/tera-i18n/assets/world-flags/sri lanka.svg +0 -15
  773. package/dist/tera-i18n/assets/world-flags/st barts.svg +0 -16
  774. package/dist/tera-i18n/assets/world-flags/st lucia.svg +0 -13
  775. package/dist/tera-i18n/assets/world-flags/st vincent and the grenadines.svg +0 -15
  776. package/dist/tera-i18n/assets/world-flags/sudan.svg +0 -13
  777. package/dist/tera-i18n/assets/world-flags/suriname.svg +0 -14
  778. package/dist/tera-i18n/assets/world-flags/swaziland.svg +0 -21
  779. package/dist/tera-i18n/assets/world-flags/sweden.svg +0 -14
  780. package/dist/tera-i18n/assets/world-flags/switzerland.svg +0 -11
  781. package/dist/tera-i18n/assets/world-flags/syria.svg +0 -14
  782. package/dist/tera-i18n/assets/world-flags/taiwan.svg +0 -14
  783. package/dist/tera-i18n/assets/world-flags/tajikistan.svg +0 -20
  784. package/dist/tera-i18n/assets/world-flags/tanzania.svg +0 -13
  785. package/dist/tera-i18n/assets/world-flags/thailand.svg +0 -13
  786. package/dist/tera-i18n/assets/world-flags/tibet.svg +0 -22
  787. package/dist/tera-i18n/assets/world-flags/togo.svg +0 -15
  788. package/dist/tera-i18n/assets/world-flags/tokelau.svg +0 -15
  789. package/dist/tera-i18n/assets/world-flags/tonga.svg +0 -12
  790. package/dist/tera-i18n/assets/world-flags/transnistria.svg +0 -12
  791. package/dist/tera-i18n/assets/world-flags/trinidad and tobago.svg +0 -13
  792. package/dist/tera-i18n/assets/world-flags/tunisia.svg +0 -13
  793. package/dist/tera-i18n/assets/world-flags/turkey.svg +0 -12
  794. package/dist/tera-i18n/assets/world-flags/turkmenistan.svg +0 -30
  795. package/dist/tera-i18n/assets/world-flags/turks and caicos.svg +0 -19
  796. package/dist/tera-i18n/assets/world-flags/tuvalu.svg +0 -25
  797. package/dist/tera-i18n/assets/world-flags/uganda.svg +0 -16
  798. package/dist/tera-i18n/assets/world-flags/ukraine.svg +0 -11
  799. package/dist/tera-i18n/assets/world-flags/united arab emirates.svg +0 -13
  800. package/dist/tera-i18n/assets/world-flags/united kingdom.svg +0 -23
  801. package/dist/tera-i18n/assets/world-flags/united nations.svg +0 -12
  802. package/dist/tera-i18n/assets/world-flags/united states.svg +0 -15
  803. package/dist/tera-i18n/assets/world-flags/uruguay.svg +0 -16
  804. package/dist/tera-i18n/assets/world-flags/uzbekista/314/201n.svg +0 -27
  805. package/dist/tera-i18n/assets/world-flags/uzbekist/303/241n.svg +0 -27
  806. package/dist/tera-i18n/assets/world-flags/vanuatu.svg +0 -32
  807. package/dist/tera-i18n/assets/world-flags/vatican city.svg +0 -13
  808. package/dist/tera-i18n/assets/world-flags/venezuela.svg +0 -20
  809. package/dist/tera-i18n/assets/world-flags/vietnam.svg +0 -11
  810. package/dist/tera-i18n/assets/world-flags/virgin islands.svg +0 -18
  811. package/dist/tera-i18n/assets/world-flags/wales.svg +0 -12
  812. package/dist/tera-i18n/assets/world-flags/yemen.svg +0 -12
  813. package/dist/tera-i18n/assets/world-flags/zambia.svg +0 -14
  814. package/dist/tera-i18n/assets/world-flags/zimbabwe.svg +0 -20
  815. package/dist/tera-i18n/dev-tools/translator/.env +0 -2
  816. package/dist/tera-i18n/dev-tools/translator/gpt-translator-calculator-seo.js +0 -79
  817. package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +0 -274
  818. package/dist/tera-i18n/dev-tools/translator/gpt-translator.js +0 -128
  819. package/dist/tera-i18n/dev-tools/translator/index.js +0 -2
  820. package/dist/tera-i18n/dev-tools/translator/package-lock.json +0 -780
  821. package/dist/tera-i18n/dev-tools/translator/package.json +0 -20
  822. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-calculator.md +0 -34
  823. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.md +0 -149
  824. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-system.txt +0 -1
  825. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt.txt +0 -14
  826. package/dist/tera-i18n/dev-tools/translator/tsconfig.json +0 -17
  827. package/dist/tera-i18n/dev-tools/translator/types/supported-languages.js +0 -90
  828. package/dist/tera-i18n/projects/common/all-language-data.d.ts +0 -3
  829. package/dist/tera-i18n/projects/common/all-language-data.js +0 -141
  830. package/dist/tera-i18n/projects/common/messages/en.json +0 -0
  831. package/dist/tera-i18n/projects/common/types/language.d.ts +0 -6
  832. package/dist/tera-i18n/projects/common/types/language.js +0 -1
  833. package/dist/tera-i18n/projects/cv-maker/messages/ar-AE.json +0 -94
  834. package/dist/tera-i18n/projects/cv-maker/messages/ar-EG.json +0 -94
  835. package/dist/tera-i18n/projects/cv-maker/messages/ar-IQ.json +0 -94
  836. package/dist/tera-i18n/projects/cv-maker/messages/ar-SA.json +0 -94
  837. package/dist/tera-i18n/projects/cv-maker/messages/ar-SD.json +0 -94
  838. package/dist/tera-i18n/projects/cv-maker/messages/ar-YE.json +0 -94
  839. package/dist/tera-i18n/projects/cv-maker/messages/ar.json +0 -95
  840. package/dist/tera-i18n/projects/cv-maker/messages/bg.json +0 -95
  841. package/dist/tera-i18n/projects/cv-maker/messages/bn.json +0 -95
  842. package/dist/tera-i18n/projects/cv-maker/messages/ca.json +0 -95
  843. package/dist/tera-i18n/projects/cv-maker/messages/cs.json +0 -95
  844. package/dist/tera-i18n/projects/cv-maker/messages/da.json +0 -95
  845. package/dist/tera-i18n/projects/cv-maker/messages/de.json +0 -95
  846. package/dist/tera-i18n/projects/cv-maker/messages/el.json +0 -95
  847. package/dist/tera-i18n/projects/cv-maker/messages/en-AE.json +0 -94
  848. package/dist/tera-i18n/projects/cv-maker/messages/en-AU.json +0 -94
  849. package/dist/tera-i18n/projects/cv-maker/messages/en-CA.json +0 -94
  850. package/dist/tera-i18n/projects/cv-maker/messages/en-GB.json +0 -94
  851. package/dist/tera-i18n/projects/cv-maker/messages/en-ID.json +0 -94
  852. package/dist/tera-i18n/projects/cv-maker/messages/en-IN.json +0 -94
  853. package/dist/tera-i18n/projects/cv-maker/messages/en-NZ.json +0 -94
  854. package/dist/tera-i18n/projects/cv-maker/messages/en-PH.json +0 -94
  855. package/dist/tera-i18n/projects/cv-maker/messages/en-PK.json +0 -94
  856. package/dist/tera-i18n/projects/cv-maker/messages/en-SA.json +0 -94
  857. package/dist/tera-i18n/projects/cv-maker/messages/en-US.json +0 -94
  858. package/dist/tera-i18n/projects/cv-maker/messages/en-ZA.json +0 -94
  859. package/dist/tera-i18n/projects/cv-maker/messages/en.json +0 -92
  860. package/dist/tera-i18n/projects/cv-maker/messages/es-419.json +0 -94
  861. package/dist/tera-i18n/projects/cv-maker/messages/es-AR.json +0 -94
  862. package/dist/tera-i18n/projects/cv-maker/messages/es-ES.json +0 -94
  863. package/dist/tera-i18n/projects/cv-maker/messages/es-MX.json +0 -94
  864. package/dist/tera-i18n/projects/cv-maker/messages/es.json +0 -95
  865. package/dist/tera-i18n/projects/cv-maker/messages/fi.json +0 -95
  866. package/dist/tera-i18n/projects/cv-maker/messages/fr-MA.json +0 -94
  867. package/dist/tera-i18n/projects/cv-maker/messages/fr.json +0 -95
  868. package/dist/tera-i18n/projects/cv-maker/messages/he.json +0 -95
  869. package/dist/tera-i18n/projects/cv-maker/messages/hi.json +0 -95
  870. package/dist/tera-i18n/projects/cv-maker/messages/hr.json +0 -94
  871. package/dist/tera-i18n/projects/cv-maker/messages/hu.json +0 -95
  872. package/dist/tera-i18n/projects/cv-maker/messages/id.json +0 -95
  873. package/dist/tera-i18n/projects/cv-maker/messages/it.json +0 -95
  874. package/dist/tera-i18n/projects/cv-maker/messages/ja.json +0 -95
  875. package/dist/tera-i18n/projects/cv-maker/messages/ko.json +0 -95
  876. package/dist/tera-i18n/projects/cv-maker/messages/lt.json +0 -95
  877. package/dist/tera-i18n/projects/cv-maker/messages/lv.json +0 -95
  878. package/dist/tera-i18n/projects/cv-maker/messages/ms-MY.json +0 -94
  879. package/dist/tera-i18n/projects/cv-maker/messages/ms.json +0 -95
  880. package/dist/tera-i18n/projects/cv-maker/messages/nl.json +0 -95
  881. package/dist/tera-i18n/projects/cv-maker/messages/no.json +0 -95
  882. package/dist/tera-i18n/projects/cv-maker/messages/pl.json +0 -95
  883. package/dist/tera-i18n/projects/cv-maker/messages/pt-BR.json +0 -94
  884. package/dist/tera-i18n/projects/cv-maker/messages/pt-PT.json +0 -94
  885. package/dist/tera-i18n/projects/cv-maker/messages/pt.json +0 -95
  886. package/dist/tera-i18n/projects/cv-maker/messages/ro.json +0 -95
  887. package/dist/tera-i18n/projects/cv-maker/messages/ru.json +0 -95
  888. package/dist/tera-i18n/projects/cv-maker/messages/sk.json +0 -95
  889. package/dist/tera-i18n/projects/cv-maker/messages/sl.json +0 -95
  890. package/dist/tera-i18n/projects/cv-maker/messages/sq.json +0 -95
  891. package/dist/tera-i18n/projects/cv-maker/messages/sr.json +0 -95
  892. package/dist/tera-i18n/projects/cv-maker/messages/sv.json +0 -95
  893. package/dist/tera-i18n/projects/cv-maker/messages/sw.json +0 -95
  894. package/dist/tera-i18n/projects/cv-maker/messages/ta.json +0 -95
  895. package/dist/tera-i18n/projects/cv-maker/messages/te.json +0 -95
  896. package/dist/tera-i18n/projects/cv-maker/messages/th.json +0 -95
  897. package/dist/tera-i18n/projects/cv-maker/messages/tl.json +0 -95
  898. package/dist/tera-i18n/projects/cv-maker/messages/tr.json +0 -95
  899. package/dist/tera-i18n/projects/cv-maker/messages/uk.json +0 -95
  900. package/dist/tera-i18n/projects/cv-maker/messages/vi.json +0 -95
  901. package/dist/tera-i18n/projects/cv-maker/messages/zh-CN.json +0 -95
  902. package/dist/tera-i18n/projects/cv-maker/messages/zh-TW.json +0 -95
  903. package/dist/tera-i18n/projects/cv-maker/messages/zh.json +0 -94
  904. package/dist/tera-i18n/projects/cv-maker/project.inlang/settings.json +0 -84
  905. package/dist/tera-i18n/projects/cv-maker/supported-language.d.ts +0 -1
  906. package/dist/tera-i18n/projects/cv-maker/supported-language.js +0 -81
  907. package/dist/tera-i18n/projects/mathda/messages/en.json +0 -4
  908. package/dist/tera-i18n/projects/mathda/messages/vi.json +0 -4
  909. package/dist/tera-i18n/projects/mathda/project.inlang/settings.json +0 -15
  910. package/dist/tera-i18n/projects/mathda/supported-language.d.ts +0 -1
  911. package/dist/tera-i18n/projects/mathda/supported-language.js +0 -4
  912. package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +0 -183
  913. package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +0 -183
  914. package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +0 -183
  915. package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +0 -183
  916. package/dist/tera-i18n/projects/tera-calculator/messages/da.json +0 -183
  917. package/dist/tera-i18n/projects/tera-calculator/messages/de.json +0 -183
  918. package/dist/tera-i18n/projects/tera-calculator/messages/el.json +0 -183
  919. package/dist/tera-i18n/projects/tera-calculator/messages/en-IN.json +0 -183
  920. package/dist/tera-i18n/projects/tera-calculator/messages/en-PH.json +0 -183
  921. package/dist/tera-i18n/projects/tera-calculator/messages/en-US.json +0 -183
  922. package/dist/tera-i18n/projects/tera-calculator/messages/en.json +0 -189
  923. package/dist/tera-i18n/projects/tera-calculator/messages/es.json +0 -183
  924. package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +0 -183
  925. package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +0 -183
  926. package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +0 -183
  927. package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +0 -183
  928. package/dist/tera-i18n/projects/tera-calculator/messages/id.json +0 -183
  929. package/dist/tera-i18n/projects/tera-calculator/messages/it.json +0 -183
  930. package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +0 -183
  931. package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +0 -183
  932. package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +0 -183
  933. package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +0 -183
  934. package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +0 -183
  935. package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +0 -183
  936. package/dist/tera-i18n/projects/tera-calculator/messages/no.json +0 -183
  937. package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +0 -183
  938. package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +0 -183
  939. package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +0 -183
  940. package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +0 -183
  941. package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +0 -183
  942. package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +0 -183
  943. package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +0 -183
  944. package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +0 -183
  945. package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +0 -183
  946. package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +0 -183
  947. package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +0 -183
  948. package/dist/tera-i18n/projects/tera-calculator/messages/te.json +0 -183
  949. package/dist/tera-i18n/projects/tera-calculator/messages/th.json +0 -183
  950. package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +0 -183
  951. package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +0 -183
  952. package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +0 -183
  953. package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +0 -183
  954. package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +0 -183
  955. package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +0 -183
  956. package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +0 -57
  957. package/dist/tera-i18n/projects/tera-calculator/supported-language.d.ts +0 -1
  958. package/dist/tera-i18n/projects/tera-calculator/supported-language.js +0 -48
  959. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/de.json +0 -1876
  960. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/en.json +0 -1876
  961. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/es.json +0 -1876
  962. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/fr.json +0 -1876
  963. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/it.json +0 -1876
  964. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ja.json +0 -1876
  965. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ko.json +0 -1876
  966. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/pt.json +0 -1876
  967. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ru.json +0 -1876
  968. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/vi.json +0 -1876
  969. package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/zh-CN.json +0 -1876
  970. package/dist/tera-i18n/projects/tera-converter/messages/de.json +0 -41
  971. package/dist/tera-i18n/projects/tera-converter/messages/en.json +0 -42
  972. package/dist/tera-i18n/projects/tera-converter/messages/es.json +0 -41
  973. package/dist/tera-i18n/projects/tera-converter/messages/fr.json +0 -41
  974. package/dist/tera-i18n/projects/tera-converter/messages/it.json +0 -41
  975. package/dist/tera-i18n/projects/tera-converter/messages/ja.json +0 -41
  976. package/dist/tera-i18n/projects/tera-converter/messages/ko.json +0 -41
  977. package/dist/tera-i18n/projects/tera-converter/messages/pt.json +0 -41
  978. package/dist/tera-i18n/projects/tera-converter/messages/ru.json +0 -41
  979. package/dist/tera-i18n/projects/tera-converter/messages/vi.json +0 -41
  980. package/dist/tera-i18n/projects/tera-converter/messages/zh-CN.json +0 -41
  981. package/dist/tera-i18n/projects/tera-converter/project.inlang/project_id +0 -1
  982. package/dist/tera-i18n/projects/tera-converter/project.inlang/settings.json +0 -27
  983. package/dist/tera-i18n/projects/tera-converter/supported-language.d.ts +0 -1
  984. package/dist/tera-i18n/projects/tera-converter/supported-language.js +0 -13
  985. package/dist/tera-i18n/projects/tera-system-ui/messages/ar.json +0 -10
  986. package/dist/tera-i18n/projects/tera-system-ui/messages/bg.json +0 -10
  987. package/dist/tera-i18n/projects/tera-system-ui/messages/bn.json +0 -10
  988. package/dist/tera-i18n/projects/tera-system-ui/messages/ca.json +0 -10
  989. package/dist/tera-i18n/projects/tera-system-ui/messages/cs.json +0 -10
  990. package/dist/tera-i18n/projects/tera-system-ui/messages/da.json +0 -10
  991. package/dist/tera-i18n/projects/tera-system-ui/messages/de.json +0 -10
  992. package/dist/tera-i18n/projects/tera-system-ui/messages/el.json +0 -10
  993. package/dist/tera-i18n/projects/tera-system-ui/messages/en.json +0 -10
  994. package/dist/tera-i18n/projects/tera-system-ui/messages/es.json +0 -10
  995. package/dist/tera-i18n/projects/tera-system-ui/messages/fi.json +0 -10
  996. package/dist/tera-i18n/projects/tera-system-ui/messages/fr.json +0 -10
  997. package/dist/tera-i18n/projects/tera-system-ui/messages/he.json +0 -10
  998. package/dist/tera-i18n/projects/tera-system-ui/messages/hi.json +0 -10
  999. package/dist/tera-i18n/projects/tera-system-ui/messages/hu.json +0 -10
  1000. package/dist/tera-i18n/projects/tera-system-ui/messages/id.json +0 -10
  1001. package/dist/tera-i18n/projects/tera-system-ui/messages/it.json +0 -10
  1002. package/dist/tera-i18n/projects/tera-system-ui/messages/ja.json +0 -10
  1003. package/dist/tera-i18n/projects/tera-system-ui/messages/ko.json +0 -10
  1004. package/dist/tera-i18n/projects/tera-system-ui/messages/lt.json +0 -10
  1005. package/dist/tera-i18n/projects/tera-system-ui/messages/lv.json +0 -10
  1006. package/dist/tera-i18n/projects/tera-system-ui/messages/ms.json +0 -10
  1007. package/dist/tera-i18n/projects/tera-system-ui/messages/nl.json +0 -10
  1008. package/dist/tera-i18n/projects/tera-system-ui/messages/no.json +0 -10
  1009. package/dist/tera-i18n/projects/tera-system-ui/messages/pl.json +0 -10
  1010. package/dist/tera-i18n/projects/tera-system-ui/messages/pt.json +0 -10
  1011. package/dist/tera-i18n/projects/tera-system-ui/messages/ro.json +0 -10
  1012. package/dist/tera-i18n/projects/tera-system-ui/messages/ru.json +0 -10
  1013. package/dist/tera-i18n/projects/tera-system-ui/messages/sk.json +0 -10
  1014. package/dist/tera-i18n/projects/tera-system-ui/messages/sl.json +0 -10
  1015. package/dist/tera-i18n/projects/tera-system-ui/messages/sq.json +0 -10
  1016. package/dist/tera-i18n/projects/tera-system-ui/messages/sr.json +0 -10
  1017. package/dist/tera-i18n/projects/tera-system-ui/messages/sv.json +0 -10
  1018. package/dist/tera-i18n/projects/tera-system-ui/messages/sw.json +0 -10
  1019. package/dist/tera-i18n/projects/tera-system-ui/messages/ta.json +0 -10
  1020. package/dist/tera-i18n/projects/tera-system-ui/messages/te.json +0 -10
  1021. package/dist/tera-i18n/projects/tera-system-ui/messages/th.json +0 -10
  1022. package/dist/tera-i18n/projects/tera-system-ui/messages/tl.json +0 -10
  1023. package/dist/tera-i18n/projects/tera-system-ui/messages/tr.json +0 -10
  1024. package/dist/tera-i18n/projects/tera-system-ui/messages/uk.json +0 -10
  1025. package/dist/tera-i18n/projects/tera-system-ui/messages/vi.json +0 -10
  1026. package/dist/tera-i18n/projects/tera-system-ui/messages/zh-CN.json +0 -10
  1027. package/dist/tera-i18n/projects/tera-system-ui/messages/zh-TW.json +0 -10
  1028. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/settings.json +0 -59
  1029. package/dist/tera-i18n/projects/tera-system-ui/supported-language.d.ts +0 -1
  1030. package/dist/tera-i18n/projects/tera-system-ui/supported-language.js +0 -45
  1031. package/dist/tera-i18n/projects/tera-tools/messages/ar.json +0 -70
  1032. package/dist/tera-i18n/projects/tera-tools/messages/bg.json +0 -70
  1033. package/dist/tera-i18n/projects/tera-tools/messages/bn.json +0 -70
  1034. package/dist/tera-i18n/projects/tera-tools/messages/ca.json +0 -70
  1035. package/dist/tera-i18n/projects/tera-tools/messages/cs.json +0 -70
  1036. package/dist/tera-i18n/projects/tera-tools/messages/da.json +0 -70
  1037. package/dist/tera-i18n/projects/tera-tools/messages/de.json +0 -70
  1038. package/dist/tera-i18n/projects/tera-tools/messages/el.json +0 -70
  1039. package/dist/tera-i18n/projects/tera-tools/messages/en.json +0 -96
  1040. package/dist/tera-i18n/projects/tera-tools/messages/es.json +0 -70
  1041. package/dist/tera-i18n/projects/tera-tools/messages/fi.json +0 -70
  1042. package/dist/tera-i18n/projects/tera-tools/messages/fr.json +0 -70
  1043. package/dist/tera-i18n/projects/tera-tools/messages/he.json +0 -70
  1044. package/dist/tera-i18n/projects/tera-tools/messages/hi.json +0 -70
  1045. package/dist/tera-i18n/projects/tera-tools/messages/hu.json +0 -70
  1046. package/dist/tera-i18n/projects/tera-tools/messages/id.json +0 -70
  1047. package/dist/tera-i18n/projects/tera-tools/messages/it.json +0 -70
  1048. package/dist/tera-i18n/projects/tera-tools/messages/ja.json +0 -70
  1049. package/dist/tera-i18n/projects/tera-tools/messages/ko.json +0 -70
  1050. package/dist/tera-i18n/projects/tera-tools/messages/lt.json +0 -70
  1051. package/dist/tera-i18n/projects/tera-tools/messages/lv.json +0 -70
  1052. package/dist/tera-i18n/projects/tera-tools/messages/ms.json +0 -70
  1053. package/dist/tera-i18n/projects/tera-tools/messages/nl.json +0 -70
  1054. package/dist/tera-i18n/projects/tera-tools/messages/no.json +0 -70
  1055. package/dist/tera-i18n/projects/tera-tools/messages/pl.json +0 -70
  1056. package/dist/tera-i18n/projects/tera-tools/messages/pt.json +0 -70
  1057. package/dist/tera-i18n/projects/tera-tools/messages/ro.json +0 -70
  1058. package/dist/tera-i18n/projects/tera-tools/messages/ru.json +0 -70
  1059. package/dist/tera-i18n/projects/tera-tools/messages/sk.json +0 -70
  1060. package/dist/tera-i18n/projects/tera-tools/messages/sl.json +0 -70
  1061. package/dist/tera-i18n/projects/tera-tools/messages/sq.json +0 -70
  1062. package/dist/tera-i18n/projects/tera-tools/messages/sr.json +0 -70
  1063. package/dist/tera-i18n/projects/tera-tools/messages/sv.json +0 -70
  1064. package/dist/tera-i18n/projects/tera-tools/messages/sw.json +0 -70
  1065. package/dist/tera-i18n/projects/tera-tools/messages/ta.json +0 -70
  1066. package/dist/tera-i18n/projects/tera-tools/messages/te.json +0 -70
  1067. package/dist/tera-i18n/projects/tera-tools/messages/th.json +0 -70
  1068. package/dist/tera-i18n/projects/tera-tools/messages/tl.json +0 -70
  1069. package/dist/tera-i18n/projects/tera-tools/messages/tr.json +0 -70
  1070. package/dist/tera-i18n/projects/tera-tools/messages/uk.json +0 -70
  1071. package/dist/tera-i18n/projects/tera-tools/messages/vi.json +0 -70
  1072. package/dist/tera-i18n/projects/tera-tools/messages/zh-CN.json +0 -70
  1073. package/dist/tera-i18n/projects/tera-tools/messages/zh-TW.json +0 -70
  1074. package/dist/tera-i18n/projects/tera-tools/project.inlang/project_id +0 -1
  1075. package/dist/tera-i18n/projects/tera-tools/project.inlang/settings.json +0 -61
  1076. package/dist/tera-i18n/projects/tera-tools/supported-language.d.ts +0 -1
  1077. package/dist/tera-i18n/projects/tera-tools/supported-language.js +0 -45
  1078. package/dist/themes/theme-ai.css +0 -100
  1079. package/dist/themes/theme-marketing.css +0 -91
  1080. /package/dist/{components → internal}/icons/IconCheck.svelte.d.ts +0 -0
  1081. /package/dist/{components → internal}/icons/IconChevronDown.svelte.d.ts +0 -0
  1082. /package/dist/{components → internal}/icons/IconSearch.svelte.d.ts +0 -0
  1083. /package/dist/{components → internal}/icons/IconX.svelte.d.ts +0 -0
  1084. /package/dist/{components → internal}/icons/Icons.d.ts +0 -0
  1085. /package/dist/{components → internal}/icons/Icons.js +0 -0
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "label",
4
+ "type": "registry:component",
5
+ "description": "Accessible form label.",
6
+ "recipe": "src/lib/components/label/Label.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/label/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Label} from './Label.svelte'\nexport {labelRecipe} from './Label.recipe'\nexport type {LabelProps, LabelRecipeProps} from './Label.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/label/Label.recipe.ts",
16
+ "target": "Label.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\nimport type {HTMLLabelAttributes} from \"svelte/elements\";\n\n/**\n * Label recipe — the canonical styled layer for the base design language.\n *\n * Primary customization surface: an app owns its look by extending this recipe\n * with `tv({ extend: labelRecipe, ... })` in typed code — base sizing and the\n * required-asterisk treatment are inherited; only the design language changes.\n * See docs/ARCHITECTURE.md for the worked example (kept out of this JSDoc so the\n * llms doc generator doesn't grep its variant tokens).\n */\nexport const labelRecipe = tv({\n base: 'inline-flex items-center gap-1 select-none font-semibold tracking-tight text-text-primary leading-tight peer-disabled:cursor-not-allowed peer-disabled:text-text-disabled',\n variants: {\n size: {\n sm: 'text-xs tracking-normal text-text-secondary',\n md: 'text-sm',\n lg: 'text-base',\n },\n required: {\n true: \"after:content-['*'] after:font-mono after:font-semibold after:leading-none after:-translate-y-px after:text-error-default\",\n },\n },\n compoundVariants: [],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport type LabelRecipeProps = VariantProps<typeof labelRecipe>;\n\nexport interface LabelProps extends HTMLLabelAttributes, LabelRecipeProps {\n children?: Snippet;\n class?: string;\n ref?: HTMLLabelElement | null;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/label/Label.svelte",
22
+ "target": "Label.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\r\n import { Label as LabelPrimitive } from \"bits-ui\";\r\n import { cn } from \"$lib/utils\";\r\n import { type LabelProps, labelRecipe } from \"./Label.recipe\";\r\n\r\n let {\r\n ref = $bindable(null),\r\n class: className,\r\n size = 'md',\r\n required,\r\n ...restProps\r\n }: LabelProps = $props();\r\n</script>\r\n\r\n<LabelPrimitive.Root\r\n bind:ref\r\n class={cn(labelRecipe({ size, required }), className)}\r\n {...restProps}\r\n/>"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "bits-ui",
29
+ "tailwind-variants"
30
+ ],
31
+ "peerDependencies": [
32
+ "svelte"
33
+ ],
34
+ "registryDependencies": [],
35
+ "sharedModules": {
36
+ "utils": true,
37
+ "icons": false,
38
+ "hooks": false
39
+ },
40
+ "exports": [
41
+ "Label",
42
+ "labelRecipe"
43
+ ]
44
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "popover-responsive",
4
+ "type": "registry:component",
5
+ "description": "",
6
+ "recipe": "src/lib/components/popover-responsive/PopoverResponsive.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/popover-responsive/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as PopoverResponsive} from './PopoverResponsive.svelte'\nexport {popoverResponsiveRecipe} from './PopoverResponsive.recipe'\nexport type {PopoverResponsiveProps, PopoverResponsiveRecipeProps} from './PopoverResponsive.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/popover-responsive/PopoverResponsive.recipe.ts",
16
+ "target": "PopoverResponsive.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\nimport type {PopoverProps} from '../popover/Popover.recipe';\nimport type {DialogProps} from '../dialog/Dialog.recipe';\n\n/**\n * PopoverResponsive recipe — the canonical styled layer for the base design\n * language. Thin composite: renders the Popover on desktop (≥ breakpoint) and the\n * Dialog on mobile, switching at `desktopBreakpoint`. It owns almost no styling —\n * the desktop/mobile panels come fully styled from Popover and Dialog, which stay\n * composed as components (the stable seam). The single owned part is the mobile\n * wrapper button, an unstyled reset that turns the trigger snippet into a tap\n * target; it carries no variants.\n *\n * Customization surface — three layers, lightest first:\n * 1. `class` (both panels) / `triggerClass` (mobile button) for one-off classes.\n * 2. First-class common props (side/sideOffset/align for the popover,\n * dialogPosition/dialogPadding + header/footer for the dialog).\n * 3. `popoverProps` / `dialogProps` — typed escape hatches spread onto the\n * underlying component, exposing every child prop and overriding the\n * common props above. Any extra top-level prop is forwarded to BOTH.\n *\n * Or restyle the underlying look by extending the Popover/Dialog recipes. See\n * docs/ARCHITECTURE.md for worked examples (kept out of this JSDoc so the llms\n * doc generator doesn't grep its tokens).\n */\nexport const popoverResponsiveRecipe = tv({\n slots: {\n triggerButton: 'inline-flex appearance-none bg-transparent p-0 border-0 cursor-pointer',\n },\n});\n\nexport type PopoverResponsiveRecipeProps = VariantProps<typeof popoverResponsiveRecipe>;\n\nexport interface PopoverResponsiveProps {\n /** Content rendered inside the popover/dialog panel. */\n children?: Snippet;\n /** Snippet used as the clickable trigger. */\n trigger?: Snippet;\n /** Whether the panel is open. Bindable. */\n open?: boolean;\n\n // ── Styling ──────────────────────────────────────────────────────────────\n /** Additional classes applied to BOTH the desktop popover panel and the mobile dialog panel. */\n class?: string;\n /** Additional classes for the mobile trigger wrapper button. */\n triggerClass?: string;\n\n // ── Responsive switch ────────────────────────────────────────────────────\n /** Viewport width (px) at/above which the desktop popover is used. Defaults to 640. */\n desktopBreakpoint?: number;\n\n // ── Desktop popover positioning (common surface) ─────────────────────────\n /** Which side of the trigger the desktop popover appears on. */\n side?: 'top' | 'bottom' | 'left' | 'right';\n /** Distance in pixels between the trigger and popover (desktop only). */\n sideOffset?: number;\n /** Alignment of the popover relative to the trigger (desktop only). */\n align?: 'start' | 'center' | 'end';\n\n // ── Mobile dialog layout (common surface) ────────────────────────────────\n /** Vertical placement of the mobile dialog. Defaults to 'top'. */\n dialogPosition?: DialogProps['position'];\n /** Inner padding of the mobile dialog. Defaults to 'none'. */\n dialogPadding?: DialogProps['padding'];\n /** Snippet rendered in the mobile dialog header area (mobile only). */\n header?: Snippet;\n /** Snippet rendered in the mobile dialog footer area (mobile only). */\n footer?: Snippet;\n\n // ── Full per-child passthrough (typed escape hatches) ────────────────────\n /** Any additional prop forwarded to the desktop `<Popover>`. Overrides the common props above. */\n popoverProps?: Partial<PopoverProps>;\n /** Any additional prop forwarded to the mobile `<Dialog>`. Overrides the common props above. */\n dialogProps?: Partial<DialogProps>;\n\n /** Any remaining prop is forwarded to BOTH underlying components. */\n [key: string]: unknown;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/popover-responsive/PopoverResponsive.svelte",
22
+ "target": "PopoverResponsive.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n import {innerWidth} from 'svelte/reactivity/window';\n import {Dialog} from '$lib/components/dialog/index.js';\n import {Popover} from '$lib/components/popover/index.js';\n import {cn} from '$lib/utils/index.js';\n import {popoverResponsiveRecipe, type PopoverResponsiveProps} from './PopoverResponsive.recipe.js';\n\n let {\n children,\n trigger,\n open = $bindable(false),\n\n // Styling\n class: className,\n triggerClass,\n\n // Responsive switch\n desktopBreakpoint = 640,\n\n // Desktop popover positioning\n side = 'bottom',\n sideOffset = 4,\n align = 'start',\n\n // Mobile dialog layout\n dialogPosition = 'top',\n dialogPadding = 'none',\n header,\n footer,\n\n // Full per-child passthrough (override the common props above)\n popoverProps,\n dialogProps,\n\n // Anything else is forwarded to both underlying components\n ...restProps\n }: PopoverResponsiveProps = $props();\n\n const isDesktop = $derived((innerWidth.current ?? desktopBreakpoint) >= desktopBreakpoint);\n\n const {triggerButton} = popoverResponsiveRecipe();\n</script>\n\n{#if isDesktop}\n <!-- Desktop: bind open directly so both internal and external close work -->\n <Popover\n bind:open\n {side}\n {sideOffset}\n {align}\n {trigger}\n {...restProps}\n {...popoverProps}\n class={cn(className, popoverProps?.class)}\n >\n {@render children?.()}\n </Popover>\n{:else}\n <!-- Mobile: bind open directly to Dialog, toggle via wrapper button -->\n <button\n type=\"button\"\n class={triggerButton({class: triggerClass})}\n onclick={() => open = !open}\n >\n {@render trigger?.()}\n </button>\n <Dialog\n bind:open\n position={dialogPosition}\n padding={dialogPadding}\n {header}\n {footer}\n {...restProps}\n {...dialogProps}\n class={cn(className, dialogProps?.class)}\n >\n {@render children?.()}\n </Dialog>\n{/if}\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "tailwind-variants"
29
+ ],
30
+ "peerDependencies": [
31
+ "svelte"
32
+ ],
33
+ "registryDependencies": [
34
+ "dialog",
35
+ "popover"
36
+ ],
37
+ "sharedModules": {
38
+ "utils": true,
39
+ "icons": false,
40
+ "hooks": false
41
+ },
42
+ "exports": [
43
+ "PopoverResponsive",
44
+ "popoverResponsiveRecipe"
45
+ ]
46
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "popover",
4
+ "type": "registry:component",
5
+ "description": "Floating popover anchored to a trigger.",
6
+ "recipe": "src/lib/components/popover/Popover.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/popover/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Popover} from './Popover.svelte'\nexport {popoverRecipe} from './Popover.recipe'\nexport type {PopoverProps, PopoverRecipeProps} from './Popover.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/popover/Popover.recipe.ts",
16
+ "target": "Popover.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\n\n/**\n * Popover recipe — the canonical styled layer for the base design language.\n *\n * Multi-part component (built on bits-ui Popover): the recipe is slotted by role\n * — `trigger` (the inline wrapper around the clickable trigger) and `content`\n * (the floating panel with its open/close animations). An app owns its look by\n * extending this recipe with `tv({ extend: popoverRecipe, ... })` in typed code.\n *\n * Restyle-internals (the lighter rung): the per-component CSS var below\n * (--tera-popover-radius) lets a theme/app retune the panel's corner radius with\n * no code change; it defaults to the global container-radius token. See\n * docs/ARCHITECTURE.md for worked examples (kept out of this JSDoc so the llms\n * doc generator doesn't grep its tokens).\n */\nexport const popoverRecipe = tv({\n slots: {\n trigger: 'inline-flex',\n content: `z-50 overflow-hidden bg-surface rounded-[var(--tera-popover-radius,var(--border-radius-container))] border border-border-default shadow-lg\n animate-in fade-in zoom-in-95 duration-[var(--tera-duration-fast)]\n data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:zoom-out-95`,\n },\n});\n\nexport type PopoverRecipeProps = VariantProps<typeof popoverRecipe>;\n\nexport interface PopoverProps extends PopoverRecipeProps {\n children?: Snippet;\n /** Snippet used as the clickable trigger that opens the popover. */\n trigger?: Snippet;\n /** Additional CSS classes for the popover content panel. */\n class?: string;\n /** Whether the popover is open. Bindable. */\n open?: boolean;\n /** Which side of the trigger the popover appears on. */\n side?: 'top' | 'bottom' | 'left' | 'right';\n /** Distance in pixels between the trigger and popover panel. */\n sideOffset?: number;\n /** Alignment of the popover relative to the trigger. */\n align?: 'start' | 'center' | 'end';\n /** Additional offset in pixels along the alignment axis. */\n alignOffset?: number;\n /** Whether clicking outside the popover closes it. */\n closeOnClickOutside?: boolean;\n /** Whether pressing Escape closes the popover. Defaults to true. */\n closeOnEscape?: boolean;\n /** Whether focus is trapped inside the popover content while open. */\n trapFocus?: boolean;\n /** Prevent the page from scrolling while the popover is open. */\n preventScroll?: boolean;\n /** Called when the user interacts outside the popover boundaries. */\n onInteractOutside?: () => void;\n /** ARIA role for the popover content element. */\n role?: string;\n /** Bindable reference to the popover content element. */\n ref?: HTMLElement | null;\n [key: string]: unknown;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/popover/Popover.svelte",
22
+ "target": "Popover.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n import {Popover as PopoverPrimitive} from 'bits-ui';\n import {type PopoverProps, popoverRecipe} from './Popover.recipe';\n\n let {\n children,\n trigger,\n class: className,\n open = $bindable(false),\n side = 'bottom',\n sideOffset = 4,\n align = 'start',\n alignOffset,\n closeOnClickOutside = true,\n closeOnEscape = true,\n trapFocus,\n preventScroll,\n onInteractOutside,\n ref = $bindable(null),\n ...props\n }: PopoverProps = $props();\n\n const r = $derived(popoverRecipe());\n</script>\n\n<PopoverPrimitive.Root bind:open>\n {#if trigger}\n <PopoverPrimitive.Trigger>\n {#snippet child({ props: triggerProps })}\n <span {...triggerProps} class={r.trigger()}>\n {@render trigger()}\n </span>\n {/snippet}\n </PopoverPrimitive.Trigger>\n {/if}\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n bind:ref\n {side}\n {sideOffset}\n {align}\n {alignOffset}\n {trapFocus}\n {preventScroll}\n interactOutsideBehavior={closeOnClickOutside ? 'close' : 'ignore'}\n escapeKeydownBehavior={closeOnEscape ? 'close' : 'ignore'}\n onInteractOutside={() => onInteractOutside?.()}\n class={r.content({ class: className })}\n {...props}\n >\n {@render children?.()}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n</PopoverPrimitive.Root>\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "bits-ui",
29
+ "tailwind-variants"
30
+ ],
31
+ "peerDependencies": [
32
+ "svelte"
33
+ ],
34
+ "registryDependencies": [],
35
+ "sharedModules": {
36
+ "utils": false,
37
+ "icons": false,
38
+ "hooks": false
39
+ },
40
+ "exports": [
41
+ "Popover",
42
+ "popoverRecipe"
43
+ ]
44
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "select",
4
+ "type": "registry:component",
5
+ "description": "Select dropdown with options/groups and keyboard nav.",
6
+ "recipe": "src/lib/components/select/Select.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/select/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Select} from './Select.svelte'\nexport {selectRecipe} from './Select.recipe'\nexport type {SelectProps, SelectOption, SelectGroup, SelectRecipeProps} from './Select.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/select/Select.recipe.ts",
16
+ "target": "Select.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\n\n/**\n * Select recipe — the canonical styled layer for the base design language.\n *\n * Multi-part component (built on bits-ui Select): the recipe is slotted by role\n * — trigger / content / viewport / item / group — so an app can restyle any part\n * independently. The trigger carries the visual variants (look, size, status,\n * disabled); the dropdown parts are static base strings.\n *\n * Primary customization surface: extend with `tv({ extend: selectRecipe, ... })`\n * in typed code. Lighter rung: the per-component CSS vars (--tera-select-*) let a\n * theme retune corner radius with no code change; they default to global axis\n * tokens in tera-ui-base.css. See docs/ARCHITECTURE.md for worked examples (kept\n * out of this JSDoc so the llms doc generator doesn't grep its tokens).\n */\nexport const selectRecipe = tv({\n slots: {\n trigger: 'w-full inline-flex items-center justify-between gap-2 rounded-[var(--tera-select-radius,var(--tera-radius-base))] outline-none font-normal text-left transition-[border-color,box-shadow,background-color] ease-ui duration-[var(--tera-duration-fast)]',\n content: `z-50 min-w-[var(--bits-select-anchor-width)] flex flex-col overflow-hidden\n bg-surface rounded-[var(--tera-select-content-radius,var(--border-radius-container))] border border-border-default shadow-lg\n animate-in fade-in zoom-in-95 duration-[var(--tera-duration-fast)]\n data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:zoom-out-95`,\n viewport: 'p-2 flex-1 min-h-0 overflow-y-auto',\n group: 'px-2 py-1.5 text-xs font-semibold text-text-tertiary uppercase tracking-wide',\n item: `relative flex w-full cursor-pointer select-none items-center rounded px-2 py-2 text-sm text-text-primary outline-none\n transition-colors ease-ui duration-[var(--tera-duration-micro)]\n data-[highlighted]:bg-surface-hover\n data-[selected]:font-medium data-[selected]:text-interactive\n data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`,\n },\n variants: {\n variant: {\n outlined: {trigger: 'border border-border-default bg-surface-control shadow-xs hover:border-border-strong data-[state=open]:border-interactive data-[state=open]:shadow-focus'},\n filled: {trigger: 'bg-surface-sunken border border-transparent hover:bg-surface-hover data-[state=open]:bg-surface data-[state=open]:border-interactive data-[state=open]:shadow-focus'},\n borderless:{trigger: 'bg-transparent border-0 hover:bg-surface-raised'},\n },\n size: {\n sm: {trigger: 'h-[var(--tera-control-height-sm)] px-[var(--tera-control-px-md)] text-sm'},\n md: {trigger: 'h-[var(--tera-control-height-md)] px-[var(--tera-control-px-md)] text-sm'},\n lg: {trigger: 'h-[var(--tera-control-height-lg)] px-[var(--tera-control-px-md)] text-base'},\n },\n disabled: {\n true: {trigger: 'cursor-not-allowed bg-surface-sunken text-text-disabled border-border-default pointer-events-none'},\n },\n status: {\n error: {trigger: 'border-error-default hover:border-error-hover data-[state=open]:border-error-default data-[state=open]:shadow-focus-error'},\n warning: {trigger: 'border-warning-default hover:border-warning-hover data-[state=open]:border-warning-default data-[state=open]:shadow-focus-warning'},\n },\n },\n defaultVariants: {variant: 'outlined', size: 'md'},\n});\n\nexport type SelectRecipeProps = VariantProps<typeof selectRecipe>;\n\nexport interface SelectOption {\n /** Unique value submitted or passed to onchange. */\n value: string;\n /** Human-readable label shown in the list and trigger. */\n label: string;\n /** Prevents selecting this option. */\n disabled?: boolean;\n}\n\nexport interface SelectGroup {\n /** Heading label displayed above the group's options. */\n label: string;\n /** Options belonging to this group. */\n options: SelectOption[];\n}\n\nexport interface SelectProps extends SelectRecipeProps {\n /** Selection mode. Use 'multiple' to allow picking several options. */\n type?: 'single' | 'multiple';\n /** Flat list of options. Use `groups` instead for grouped options. */\n options?: SelectOption[];\n /** Grouped options — renders labeled sections. Takes precedence over `options`. */\n groups?: SelectGroup[];\n /**\n * Currently selected value(s). Bindable.\n * A string for type='single', a string[] for type='multiple'.\n */\n value?: string | string[];\n /** Text shown in the trigger when nothing is selected. */\n placeholder?: string;\n /** Prevents all interaction. */\n disabled?: boolean;\n /** Whether keyboard navigation wraps from the last item to the first. */\n loop?: boolean;\n /** Allow deselecting the current value by clicking it again (single mode only). */\n allowDeselect?: boolean;\n /** Whether the select is required for form submission. */\n required?: boolean;\n /** Name attribute used when submitting within a form. */\n name?: string;\n /** Additional CSS classes for the trigger button. */\n class?: string;\n /** Replace the default selected-item check mark with custom markup (structural seam). */\n checkIcon?: Snippet;\n /** Called when the selected value changes. */\n onchange?: (value: string | string[]) => void;\n [key: string]: unknown;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/select/select.scss",
22
+ "target": "select.scss",
23
+ "type": "style",
24
+ "content": ".tera-select {\r\n option {\r\n background: var(--color-neutral-token-2);\r\n color: var(--color-neutral-token-13);\r\n }\r\n}"
25
+ },
26
+ {
27
+ "path": "src/lib/components/select/Select.svelte",
28
+ "target": "Select.svelte",
29
+ "type": "svelte",
30
+ "content": "<script lang=\"ts\">\n import {Select as SelectPrimitive} from 'bits-ui';\n import {type SelectProps, selectRecipe} from './Select.recipe';\n import {IconCheck, IconChevronDown} from '$lib/internal/icons';\n import IconChevronsUp from '@tabler/icons-svelte/icons/chevrons-up';\n import IconChevronsDown from '@tabler/icons-svelte/icons/chevrons-down';\n\n let {\n type = 'single',\n options = [],\n groups,\n value = $bindable(),\n placeholder = 'Select…',\n variant,\n size,\n disabled,\n status,\n loop,\n allowDeselect,\n required,\n name,\n class: className,\n checkIcon,\n onchange,\n }: SelectProps = $props();\n\n // All options flat — used for label lookup in multiple mode\n const allOptions = $derived(\n groups ? groups.flatMap(g => g.options) : options\n );\n\n // Single mode: selected label\n const selectedLabel = $derived.by(() => {\n const v = value;\n if (typeof v !== 'string' || !v) return '';\n return allOptions.find(o => o.value === v)?.label ?? v;\n });\n\n // Multiple mode: selected chips\n const selectedChips = $derived(\n Array.isArray(value)\n ? (value as string[]).map(v => ({ value: v, label: allOptions.find(o => o.value === v)?.label ?? v }))\n : []\n );\n\n const r = $derived(selectRecipe({ variant, size, disabled, status }));\n\n const minHeight = \"21rem\"\n</script>\n\n{#snippet itemList()}\n <SelectPrimitive.Viewport class={r.viewport()}>\n {#if groups && groups.length > 0}\n {#each groups as group (group.label)}\n <SelectPrimitive.Group>\n <SelectPrimitive.GroupHeading\n class={r.group()}\n >\n {group.label}\n </SelectPrimitive.GroupHeading>\n {#each group.options as option (option.value)}\n {@render renderItem(option)}\n {/each}\n </SelectPrimitive.Group>\n {/each}\n {:else}\n {#each options as option (option.value)}\n {@render renderItem(option)}\n {/each}\n {/if}\n </SelectPrimitive.Viewport>\n{/snippet}\n\n{#if type === 'multiple'}\n <SelectPrimitive.Root\n type=\"multiple\"\n bind:value={value as string[] | undefined}\n onValueChange={(v) => onchange?.(v)}\n {disabled}\n {loop}\n {required}\n {name}\n >\n <!--\n Multiple-mode trigger: chip tags displayed in the button, individual × spans\n are non-interactive (no onclick) to avoid button-in-button nesting.\n Managing selection is done exclusively through the dropdown items.\n -->\n <SelectPrimitive.Trigger class={r.trigger({ class: `h-auto min-h-[var(--tera-control-height-md)] flex-wrap py-1.5 ${className ?? ''}` })}>\n {#if selectedChips.length > 0}\n {#each selectedChips as chip (chip.value)}\n <!-- Plain span tag — no interactive elements inside <button> -->\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs bg-interactive-subtle text-interactive-text border border-interactive-border\">\n {chip.label}\n <!-- Use span with role for the remove hint; actual removal happens via re-clicking in dropdown -->\n<!-- <span class=\"flex items-center opacity-60\" aria-hidden=\"true\"><IconX class=\"size-3\" /></span>-->\n </span>\n {/each}\n {:else}\n <span class=\"text-text-tertiary flex-1\">{placeholder}</span>\n {/if}\n <IconChevronDown class=\"size-4 shrink-0 text-text-tertiary ml-auto transition-transform ease-ui duration-[var(--tera-duration-fast)] data-[state=open]:rotate-180\" />\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n sideOffset={4}\n class={r.content()}\n style=\"max-height: min({minHeight}, var(--bits-select-content-available-height))\"\n >\n <SelectPrimitive.ScrollUpButton class=\"flex w-full items-center justify-center pt-1 text-text-tertiary cursor-default hover:text-text-primary transition-colors\">\n <IconChevronsUp class=\"size-3.5\" />\n </SelectPrimitive.ScrollUpButton>\n {@render itemList()}\n <SelectPrimitive.ScrollDownButton class=\"flex w-full items-center justify-center pb-1 text-text-tertiary cursor-default hover:text-text-primary transition-colors\">\n <IconChevronsDown class=\"size-3.5\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n\n{:else}\n <SelectPrimitive.Root\n type=\"single\"\n bind:value={value as string | undefined}\n onValueChange={(v) => onchange?.(v)}\n {disabled}\n {loop}\n {allowDeselect}\n {required}\n {name}\n >\n <SelectPrimitive.Trigger class={r.trigger({ class: className })}>\n <span class={!value ? 'text-text-tertiary' : 'text-text-primary'}>\n {value ? selectedLabel : placeholder}\n </span>\n <IconChevronDown\n class=\"size-4 shrink-0 text-text-tertiary transition-transform ease-ui duration-[var(--tera-duration-fast)] data-[state=open]:rotate-180\"\n />\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n sideOffset={6}\n class={r.content()}\n style=\"max-height: min({minHeight}, var(--bits-select-content-available-height))\"\n >\n <SelectPrimitive.ScrollUpButton class=\"flex w-full items-center justify-center pt-1 text-text-tertiary cursor-default hover:text-text-primary transition-colors\">\n <IconChevronsUp class=\"size-3.5\" />\n </SelectPrimitive.ScrollUpButton>\n {@render itemList()}\n <SelectPrimitive.ScrollDownButton class=\"flex w-full items-center justify-center pb-1 text-text-tertiary cursor-default hover:text-text-primary transition-colors\">\n <IconChevronsDown class=\"size-3.5\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n{/if}\n\n{#snippet renderItem(option: { value: string; label: string; disabled?: boolean })}\n <SelectPrimitive.Item\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n class={r.item()}\n >\n {#snippet children({selected})}\n <span class=\"flex-1\">{option.label}</span>\n {#if selected}\n {#if checkIcon}\n {@render checkIcon()}\n {:else}\n <IconCheck class=\"size-4 text-interactive shrink-0\"/>\n {/if}\n {/if}\n {/snippet}\n </SelectPrimitive.Item>\n{/snippet}\n"
31
+ }
32
+ ],
33
+ "dependencies": [
34
+ "bits-ui",
35
+ "@tabler/icons-svelte",
36
+ "tailwind-variants"
37
+ ],
38
+ "peerDependencies": [
39
+ "svelte"
40
+ ],
41
+ "registryDependencies": [],
42
+ "sharedModules": {
43
+ "utils": false,
44
+ "icons": true,
45
+ "hooks": false
46
+ },
47
+ "exports": [
48
+ "Select",
49
+ "selectRecipe"
50
+ ]
51
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "skeleton",
4
+ "type": "registry:component",
5
+ "description": "",
6
+ "recipe": "src/lib/components/skeleton/Skeleton.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/skeleton/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Skeleton} from './Skeleton.svelte'\nexport {skeletonRecipe} from './Skeleton.recipe'\nexport type {SkeletonProps, SkeletonRecipeProps, SkeletonVariant} from './Skeleton.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/skeleton/Skeleton.recipe.ts",
16
+ "target": "Skeleton.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\n\n/**\n * Skeleton recipe — the canonical styled layer for the base design language.\n *\n * Multi-part component: the recipe is slotted by role — root (the labelled\n * loading region) / shape (circle, rect, and each line bar) / lines (the\n * stacked-line wrapper). The `animate` variant swaps the shimmer animation for\n * a flat surface fill; the `variant`/`tone` slots carry the per-shape radius.\n *\n * Primary customization surface: extend with `tv({ extend: skeletonRecipe, ... })`\n * in typed code. Lighter rung: the per-component CSS var (--tera-skeleton-radius)\n * lets a theme retune the rect corner radius with no code change; it defaults to\n * the global base-radius token. See docs/ARCHITECTURE.md for worked examples\n * (kept out of this JSDoc so the llms doc generator doesn't grep its tokens).\n */\nexport const skeletonRecipe = tv({\n slots: {\n root: '',\n lines: 'flex flex-col gap-2',\n circle: 'rounded-full',\n rect: 'rounded-[var(--tera-skeleton-radius,var(--border-radius-base))]',\n line: 'h-3 rounded-full',\n },\n variants: {\n animate: {\n true: {\n circle: 'skeleton-shimmer',\n rect: 'skeleton-shimmer',\n line: 'skeleton-shimmer',\n },\n false: {\n circle: 'bg-surface-hover',\n rect: 'bg-surface-hover',\n line: 'bg-surface-hover',\n },\n },\n },\n defaultVariants: {\n animate: true,\n },\n});\n\nexport type SkeletonRecipeProps = VariantProps<typeof skeletonRecipe>;\n\nexport type SkeletonVariant = 'line' | 'circle' | 'rect';\n\nexport interface SkeletonProps {\n /** Shape to render: a stack of text lines, a circle (avatar), or a rectangle (media). */\n variant?: SkeletonVariant;\n /** CSS width of the placeholder (e.g. '48px', '100%'). Defaults per variant. */\n width?: string;\n /** CSS height of the placeholder. Defaults per variant; falls back to `width` for circles. */\n height?: string;\n /** Number of line bars rendered for the 'line' variant. */\n lines?: number;\n /** Animate with the shimmer sweep; when false, renders a flat surface fill. */\n animate?: boolean;\n /** Additional CSS classes for the root region. */\n class?: string;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/skeleton/Skeleton.svelte",
22
+ "target": "Skeleton.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n import {skeletonRecipe, type SkeletonProps} from './Skeleton.recipe';\n\n let {\n variant = 'line',\n width,\n height,\n lines = 1,\n animate = true,\n class: className = '',\n }: SkeletonProps = $props();\n\n const styles = $derived(skeletonRecipe({animate}));\n</script>\n\n<div\n aria-label=\"Loading...\"\n aria-busy=\"true\"\n class={styles.root({class: className})}\n>\n {#if variant === 'circle'}\n <div\n class={styles.circle()}\n style=\"width:{width ?? '48px'};height:{height ?? width ?? '48px'}\"\n ></div>\n {:else if variant === 'rect'}\n <div\n class={styles.rect()}\n style=\"width:{width ?? '100%'};height:{height ?? '120px'}\"\n ></div>\n {:else}\n <div class={styles.lines()} style=\"width:{width ?? '100%'}\">\n {#each Array(lines) as _, i (i)}\n <div\n class={styles.line()}\n style={i === lines - 1 && lines > 1 ? 'width:70%' : 'width:100%'}\n ></div>\n {/each}\n </div>\n {/if}\n</div>\n\n<style>\n .skeleton-shimmer {\n background: linear-gradient(\n 90deg,\n var(--color-surface-hover) 25%,\n var(--color-surface-sunken) 50%,\n var(--color-surface-hover) 75%\n );\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n }\n\n @keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n</style>\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "tailwind-variants"
29
+ ],
30
+ "peerDependencies": [
31
+ "svelte"
32
+ ],
33
+ "registryDependencies": [],
34
+ "sharedModules": {
35
+ "utils": false,
36
+ "icons": false,
37
+ "hooks": false
38
+ },
39
+ "exports": [
40
+ "Skeleton",
41
+ "skeletonRecipe"
42
+ ]
43
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "slider",
4
+ "type": "registry:component",
5
+ "description": "Range slider for numeric selection.",
6
+ "recipe": "src/lib/components/slider/Slider.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/slider/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Slider} from './Slider.svelte'\nexport type {SliderProps} from './Slider.recipe'\nexport {sliderRecipe} from './Slider.recipe'\nexport type {SliderRecipeProps} from './Slider.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/slider/Slider.recipe.ts",
16
+ "target": "Slider.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\n\n/**\n * Slider recipe — the canonical styled layer for the base design language.\n *\n * Multi-part component (built on bits-ui Slider): the recipe is slotted by role\n * — `root` (the Root wrapper / hit area), `track` (the rail), `range` (the\n * filled portion), `thumb` (the draggable handle). Layout switches on the\n * `orientation` variant (horizontal / vertical), and the `disabled` variant\n * dims the whole control.\n *\n * Primary customization surface: extend with `tv({ extend: sliderRecipe, ... })`\n * in typed code. Lighter rung: the per-component CSS var (--tera-slider-radius)\n * lets a theme retune the thumb corner radius with no code change; it falls back\n * inline to the prior pill shape. See docs/ARCHITECTURE.md for worked examples\n * (kept out of this JSDoc so the llms doc generator doesn't grep its tokens).\n */\nexport const sliderRecipe = tv({\n slots: {\n root: 'relative flex touch-none select-none items-center',\n track: `relative grow rounded-full bg-surface-sunken border border-border-strong\n shadow-[inset_0_1px_2px_rgba(15,23,42,0.18)] overflow-hidden`,\n range: 'absolute bg-interactive rounded-full',\n thumb: `block size-5 rounded-[var(--tera-slider-radius,9999px)] border-2 border-interactive bg-surface-control shadow-key outline-none\n transition-[box-shadow,transform,background-color] ease-spring duration-[var(--tera-duration-fast)]\n hover:scale-110 hover:shadow-focus\n focus-visible:scale-110 focus-visible:shadow-focus\n active:scale-95 active:bg-interactive-subtle\n data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[disabled]:shadow-none`,\n },\n variants: {\n orientation: {\n horizontal: {\n root: 'flex w-full py-2.5',\n track: 'h-2 w-full',\n range: 'h-full',\n },\n vertical: {\n root: 'flex flex-col h-full px-2.5',\n track: 'w-2 h-full',\n range: 'w-full bottom-0',\n },\n },\n disabled: {\n true: {root: 'opacity-50 pointer-events-none'},\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\nexport type SliderRecipeProps = VariantProps<typeof sliderRecipe>;\n\nexport interface SliderProps {\n /** Additional CSS classes for the root element. */\n class?: string;\n /** Minimum value of the slider range. */\n min?: number;\n /** Maximum value of the slider range. */\n max?: number;\n /** Step interval between selectable values. */\n step?: number;\n /** Current value. Bindable. */\n value?: number;\n /** Prevents all interaction and dims the control. */\n disabled?: boolean;\n /**\n * Layout orientation of the slider track and thumb.\n * When 'vertical', the parent must have an explicit height.\n */\n orientation?: 'horizontal' | 'vertical';\n /** Fires continuously as the thumb moves during drag. */\n onchange?: (value: number) => void;\n /**\n * Fires once when the user finishes dragging and releases the thumb.\n * Prefer this over `onchange` when the handler triggers expensive work.\n */\n onValueCommit?: (value: number) => void;\n /** Bindable reference to the root span element. */\n ref?: HTMLElement | null;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/slider/Slider.svelte",
22
+ "target": "Slider.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n import {Slider as SliderPrimitive} from 'bits-ui';\n import {type SliderProps, sliderRecipe} from './Slider.recipe';\n\n let {\n min = 0,\n max = 100,\n step = 1,\n value = $bindable(0),\n onchange,\n onValueCommit,\n disabled,\n orientation = 'horizontal',\n class: className = '',\n }: SliderProps = $props();\n\n const r = $derived(sliderRecipe({orientation, disabled}));\n</script>\n\n<SliderPrimitive.Root\n type=\"single\"\n bind:value\n onValueChange={onchange}\n {onValueCommit}\n {min}\n {max}\n {step}\n {disabled}\n {orientation}\n class={r.root({class: className})}\n>\n {#snippet children({ thumbItems })}\n <!-- Track wrapper -->\n <div class={r.track()}>\n <SliderPrimitive.Range class={r.range()} />\n </div>\n\n {#each thumbItems as { index } (index)}\n <SliderPrimitive.Thumb\n {index}\n class={r.thumb()}\n />\n {/each}\n {/snippet}\n</SliderPrimitive.Root>\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "bits-ui",
29
+ "tailwind-variants"
30
+ ],
31
+ "peerDependencies": [
32
+ "svelte"
33
+ ],
34
+ "registryDependencies": [],
35
+ "sharedModules": {
36
+ "utils": false,
37
+ "icons": false,
38
+ "hooks": false
39
+ },
40
+ "exports": [
41
+ "Slider",
42
+ "sliderRecipe"
43
+ ]
44
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "spinner",
4
+ "type": "registry:component",
5
+ "description": "",
6
+ "recipe": "src/lib/components/spinner/Spinner.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/spinner/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Spinner} from './Spinner.svelte'\nexport {spinnerRecipe} from './Spinner.recipe'\nexport type {SpinnerRecipeProps, SpinnerProps} from './Spinner.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/spinner/Spinner.recipe.ts",
16
+ "target": "Spinner.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {SVGAttributes} from \"svelte/elements\";\n\n/**\n * Spinner recipe — the canonical styled layer for the loading indicator.\n *\n * A single stylable part (the spinning `<svg>`), so this is a base-string\n * recipe. The base carries the `animate-spin` rotation; the `size` and `color`\n * variants are the typed extension surface. The spinner sizes its viewport and\n * tints its stroke through SVG presentation attributes (numeric width/height and\n * a CSS color), driven by the `sizeMap` / `colorMap` in the component — values a\n * Tailwind utility can't express on an SVG element — so the variant classes\n * themselves stay empty by design and the visual scale/tint is attribute-driven.\n *\n * Primary customization surface: an app owns its look by extending this recipe\n * with `tv({ extend: spinnerRecipe, ... })` in typed code — the rotation is\n * inherited; only the design language changes. See docs/ARCHITECTURE.md for the\n * worked example (kept out of this JSDoc so the llms doc generator doesn't grep\n * its variant tokens).\n */\nexport const spinnerRecipe = tv({\n base: 'animate-spin',\n variants: {\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n },\n color: {\n primary: '',\n white: '',\n current: '',\n },\n },\n defaultVariants: {\n size: 'md',\n color: 'primary',\n },\n});\n\nexport type SpinnerRecipeProps = VariantProps<typeof spinnerRecipe>;\n\nexport interface SpinnerProps extends Omit<SVGAttributes<SVGSVGElement>, 'color'>, SpinnerRecipeProps {\n class?: string;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/spinner/Spinner.svelte",
22
+ "target": "Spinner.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n import {spinnerRecipe, type SpinnerProps} from './Spinner.recipe';\n\n type SpinnerSize = NonNullable<SpinnerProps['size']>;\n type SpinnerColor = NonNullable<SpinnerProps['color']>;\n\n let {\n size = 'md',\n color = 'primary',\n class: className = '',\n }: SpinnerProps = $props();\n\n const sizeMap: Record<SpinnerSize, number> = { xs: 12, sm: 16, md: 20, lg: 28 };\n const colorMap: Record<SpinnerColor, string> = {\n primary: 'var(--color-interactive)',\n white: '#ffffff',\n current: 'currentColor',\n };\n\n const px = $derived(sizeMap[size]);\n const stroke = $derived(colorMap[color]);\n const r = 8;\n const circumference = 2 * Math.PI * r;\n</script>\n\n<svg\n class={spinnerRecipe({size, color, class: className})}\n width={px}\n height={px}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-label=\"Loading\"\n role=\"status\"\n>\n <circle\n cx=\"10\" cy=\"10\" r={r}\n stroke={stroke}\n stroke-width=\"2\"\n stroke-opacity=\"0.25\"\n />\n <circle\n cx=\"10\" cy=\"10\" r={r}\n stroke={stroke}\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-dasharray={circumference}\n stroke-dashoffset={circumference * 0.75}\n transform=\"rotate(-90 10 10)\"\n />\n</svg>\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "tailwind-variants"
29
+ ],
30
+ "peerDependencies": [
31
+ "svelte"
32
+ ],
33
+ "registryDependencies": [],
34
+ "sharedModules": {
35
+ "utils": false,
36
+ "icons": false,
37
+ "hooks": false
38
+ },
39
+ "exports": [
40
+ "Spinner",
41
+ "spinnerRecipe"
42
+ ]
43
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "star-rating",
4
+ "type": "registry:component",
5
+ "description": "Interactive 1–5 star rating.",
6
+ "recipe": "src/lib/components/star-rating/StarRating.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/star-rating/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as StarRating} from './StarRating.svelte'\nexport {starRatingRecipe} from './StarRating.recipe'\nexport type {StarRatingProps, StarRatingRecipeProps} from './StarRating.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/star-rating/StarRating.recipe.ts",
16
+ "target": "StarRating.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\nimport type {HTMLAttributes} from \"svelte/elements\";\n\n/**\n * StarRating recipe — the canonical styled layer for the interactive 1–5 star\n * control. A single stylable part (each star button), so this is a base-string\n * recipe; the `size` variant scales the hit target and glyph.\n *\n * Primary customization surface: an app owns its look by extending this recipe\n * with `tv({ extend: starRatingRecipe, ... })` in typed code — base sizing is\n * inherited; only the design language changes. See docs/ARCHITECTURE.md for the\n * worked example (kept out of this JSDoc so the llms doc generator doesn't grep\n * its variant tokens).\n *\n * The filled/empty star glyph is a structural seam (`starIcon` snippet prop on\n * the component) so rung-3 owners can swap the icon without forking markup.\n */\nexport const starRatingRecipe = tv({\n base: '',\n variants: {\n size: {\n sm: 'size-6 p-1',\n md: 'size-8 p-1',\n lg: 'size-10 p-1'\n }\n },\n compoundVariants: [\n\n ],\n defaultVariants: {\n size: 'md'\n },\n});\n\nexport type StarRatingRecipeProps = VariantProps<typeof starRatingRecipe>;\n\nexport interface StarRatingProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onchange'>, StarRatingRecipeProps {\n children?: Snippet;\n /** Replace the default star glyph (structural seam). `filled` reflects the active/hovered state. */\n starIcon?: Snippet<[{ filled: boolean; index: number }]>;\n class?: string;\n value?: number;\n onchange?: (value: number) => void;\n ref?: HTMLDivElement | null;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/star-rating/StarRating.svelte",
22
+ "target": "StarRating.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n import {type StarRatingProps, starRatingRecipe} from \"./StarRating.recipe\";\n\n let {\n children,\n value = $bindable(),\n onchange,\n size = 'md',\n starIcon,\n ...props\n }: StarRatingProps = $props();\n\n let hoverRating = $state(0);\n\n // Descriptive texts for each star rating\n const descriptions = [\n 'Very Bad',\n 'Bad',\n 'Okay',\n 'Good',\n 'Excellent'\n ];\n\n // Sets the rating when a star is clicked\n function setRating(v, e) {\n if (value != v) {\n value = v;\n } else {\n value = undefined\n }\n\n onchange?.(v)\n // console.log('setRating', e.type)\n\n }\n\n // Updates hover state when hovering over a star\n function setHover(v, e) {\n hoverRating = v;\n // console.log('setHover', v, e.type)\n }\n\n // Resets hover state when leaving the star area\n function resetHover(e) {\n\n hoverRating = 0;\n // console.log('resetHover', e.type)\n }\n\n</script>\n\n<div\n tabindex=\"0\"\n role=\"radiogroup\"\n class=\"star-rating-container inline-flex items-center\">\n {#each Array(5) as _, index (index)}\n <button role=\"radio\"\n tabindex=\"0\"\n aria-checked={(hoverRating || value) > index}\n aria-posinset={index + 1}\n aria-setsize=\"5\"\n data-rating-icon\n data-hovering={hoverRating === (index + 1)}\n aria-label={`Rate ${index + 1} out of 5 stars`}\n onpointerenter={(e) => setHover(index + 1, e)}\n onpointerleave={resetHover}\n ontouchendcapture={resetHover}\n onclick={(e) => setRating(index + 1, e)}\n class={starRatingRecipe({size})}>\n {#if starIcon}\n {@render starIcon({ filled: (hoverRating || (value ?? 0)) > index, index })}\n {:else}\n <svg\n viewBox=\"64 64 896 896\" focusable=\"true\" data-icon=\"star\" width=\"1em\" height=\"1em\"\n fill=\"currentColor\"\n class=\"h-full w-full fill-inherit\"\n aria-hidden=\"true\">\n <path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path>\n </svg>\n {/if}\n </button>\n {/each}\n</div>\n\n\n<style lang=\"scss\">\n [data-rating-icon] {\n &:first-child {\n padding-left: 0;\n }\n\n &:last-child {\n padding-right: 0;\n }\n\n fill: var(--color-neutral-token-5);\n transition: all var(--duration-element-react);\n\n &[aria-checked=\"true\"] {\n fill: var(--color-yellow-400);\n }\n\n &[data-hovering=\"true\"] {\n transform: scale(1.1);\n }\n }\n\n</style>\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "tailwind-variants"
29
+ ],
30
+ "peerDependencies": [
31
+ "svelte"
32
+ ],
33
+ "registryDependencies": [],
34
+ "sharedModules": {
35
+ "utils": false,
36
+ "icons": false,
37
+ "hooks": false
38
+ },
39
+ "exports": [
40
+ "StarRating",
41
+ "starRatingRecipe"
42
+ ]
43
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "switch",
4
+ "type": "registry:component",
5
+ "description": "Toggle switch for boolean state.",
6
+ "recipe": "src/lib/components/switch/Switch.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/switch/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Switch} from './Switch.svelte'\nexport {switchRecipe} from './Switch.recipe'\nexport type {SwitchProps, SwitchRecipeProps} from './Switch.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/switch/Switch.recipe.ts",
16
+ "target": "Switch.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\n\n/**\n * Switch recipe — the canonical styled layer for the toggle switch.\n *\n * Built on the bits-ui Switch primitive: a pill `root` track holding two\n * decorative state indicators (a line for on, a ring for off) and a sliding\n * `thumb`. Each part is a slot, so an app can restyle one part without forking\n * the markup. The primary customization surface is `tv({ extend: switchRecipe })`\n * in typed code; see docs/ARCHITECTURE.md for the worked example (kept out of\n * this JSDoc so the llms doc generator doesn't grep its tokens).\n *\n * Restyle-internals: the per-component CSS var --tera-switch-radius lets a\n * theme/app retune the track + thumb corner radius (e.g. a squared-off switch)\n * with no code change; it defaults to a full pill in tera-ui-base.css.\n */\nexport const switchRecipe = tv({\n slots: {\n root: [\n \"relative group peer h-6 w-[46px] shrink-0 cursor-pointer items-center rounded-[var(--tera-switch-radius,9999px)] transition-[background-color,border-color,box-shadow] ease-ui duration-[var(--tera-duration-base)]\",\n \"focus-visible:outline-none focus-visible:shadow-focus\",\n \"border border-border-strong\",\n \"shadow-[inset_0_1px_3px_rgba(15,23,42,0.18)]\",\n \"data-[state=checked]:bg-interactive data-[state=checked]:border-interactive\",\n \"data-[state=checked]:shadow-[inset_0_1px_2px_rgba(15,23,42,0.28)]\",\n \"data-[state=unchecked]:bg-surface-sunken hover:data-[state=unchecked]:border-border-strong hover:data-[state=unchecked]:bg-neutral-token-3\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"overflow-hidden\",\n ],\n lineIndicator: \"h-[11px] w-[2px] rounded-full bg-interactive-on absolute top-[6px] left-[10px] transition-all ease-ui duration-[var(--tera-duration-base)] group-data-[state=unchecked]:opacity-0 group-data-[state=checked]:opacity-100\",\n dotIndicator: \"size-[7px] border-[1.5px] border-border-strong absolute top-[7px] right-[10px] rounded-full transition-all ease-ui duration-[var(--tera-duration-base)] group-data-[state=unchecked]:opacity-100 group-data-[state=checked]:opacity-0\",\n thumb: [\n \"pointer-events-none block size-5 rounded-[var(--tera-switch-radius,9999px)] bg-surface-raised transition-transform ease-spring duration-[var(--tera-duration-base)]\",\n \"shadow-[0_1px_2px_rgba(15,23,42,0.4),inset_0_1px_0_rgba(255,255,255,0.6)]\",\n \"group-active:scale-90\",\n \"data-[state=checked]:translate-x-[24px] data-[state=unchecked]:translate-x-[2px]\",\n ],\n },\n});\n\nexport type SwitchRecipeProps = VariantProps<typeof switchRecipe>;\n\nexport interface SwitchProps extends SwitchRecipeProps {\n /** Additional CSS classes for the root element. */\n class?: string;\n /** Whether the switch is on. Bindable. */\n checked?: boolean;\n /** Prevents all interaction and dims the control. */\n disabled?: boolean;\n /** Whether the switch is required for form submission. */\n required?: boolean;\n /** Name attribute used when submitting within a form. */\n name?: string;\n /** Value sent with the form when the switch is checked. */\n value?: string;\n /** Called when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void;\n /** Replace the default thumb markup (structural seam). */\n thumb?: Snippet;\n /** Bindable reference to the root button element. */\n ref?: HTMLButtonElement | null;\n [key: string]: unknown;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/switch/Switch.svelte",
22
+ "target": "Switch.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\">\n\n import {Switch as SwitchPrimitive} from \"bits-ui\";\n import {type SwitchProps, switchRecipe} from './Switch.recipe';\n\n let {\n ref = $bindable(null),\n class: className,\n checked = $bindable(false),\n disabled,\n required,\n name,\n value,\n onCheckedChange,\n thumb,\n ...restProps\n }: SwitchProps = $props();\n\n const r = switchRecipe();\n\n</script>\n\n<SwitchPrimitive.Root\n {...restProps}\n bind:checked\n bind:ref\n {disabled}\n {required}\n {name}\n {value}\n {onCheckedChange}\n class={r.root({ class: className })}\n>\n <!-- Internal line indicator (like Ant Design) -->\n <div class={r.lineIndicator()}></div>\n <div class={r.dotIndicator()}></div>\n\n {#if thumb}\n {@render thumb()}\n {:else}\n <SwitchPrimitive.Thumb class={r.thumb()} />\n {/if}\n</SwitchPrimitive.Root>\n\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "bits-ui",
29
+ "tailwind-variants"
30
+ ],
31
+ "peerDependencies": [
32
+ "svelte"
33
+ ],
34
+ "registryDependencies": [],
35
+ "sharedModules": {
36
+ "utils": false,
37
+ "icons": false,
38
+ "hooks": false
39
+ },
40
+ "exports": [
41
+ "Switch",
42
+ "switchRecipe"
43
+ ]
44
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://tera-system-ui/registry-item.schema.json",
3
+ "name": "table",
4
+ "type": "registry:component",
5
+ "description": "Data table with striped rows and loading skeleton.",
6
+ "recipe": "src/lib/components/table/Table.recipe.ts",
7
+ "files": [
8
+ {
9
+ "path": "src/lib/components/table/index.ts",
10
+ "target": "index.ts",
11
+ "type": "ts",
12
+ "content": "export {default as Table} from './Table.svelte'\nexport {tableRecipe} from './Table.recipe'\nexport type {TableProps, TableColumn, TableRecipeProps} from './Table.recipe'\n"
13
+ },
14
+ {
15
+ "path": "src/lib/components/table/Table.recipe.ts",
16
+ "target": "Table.recipe.ts",
17
+ "type": "recipe",
18
+ "content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\n\n/**\n * Table recipe — the canonical styled layer for the base design language.\n *\n * Custom multi-part component (no bits-ui): the recipe is slotted by role —\n * root / table / thead / headerCell / row / cell / loadingCell / empty — so an\n * app can restyle any part independently. The striped zebra background and the\n * sticky header are toggled through slot-scoped variants; the per-row stripe and\n * clickable affordance are driven by booleans computed in markup.\n *\n * Primary customization surface: extend with `tv({ extend: tableRecipe, ... })`\n * in typed code. Lighter rung: the per-component CSS var (--tera-table-radius)\n * lets a theme retune the wrapper corner radius with no code change; it defaults\n * to a global axis token via the inline fallback. See docs/ARCHITECTURE.md for\n * worked examples (kept out of this JSDoc so the llms doc generator doesn't grep\n * its tokens).\n */\nexport const tableRecipe = tv({\n slots: {\n root: 'w-full overflow-auto rounded-[var(--tera-table-radius,var(--border-radius-container))] border border-border-default',\n table: 'w-full text-sm text-left border-collapse',\n thead: 'bg-surface-sunken',\n headerCell: 'px-4 py-2.5 text-xs font-semibold uppercase tracking-wide text-text-tertiary whitespace-nowrap border-b border-border-default',\n row: 'border-b border-border-default last:border-0 transition-colors ease-ui duration-[var(--tera-duration-micro)] hover:bg-surface-hover',\n cell: 'px-4 py-3 text-text-primary',\n loadingCell: 'px-4 py-3 border-b border-border-default',\n empty: 'px-4 py-10 text-center text-text-tertiary',\n },\n variants: {\n stickyHeader: {\n true: {thead: 'sticky top-0 z-10'},\n },\n stripedRow: {\n true: {row: 'bg-surface-sunken'},\n false: {row: 'bg-transparent'},\n },\n clickable: {\n true: {row: 'cursor-pointer'},\n },\n },\n defaultVariants: {\n stripedRow: false,\n },\n});\n\nexport type TableRecipeProps = VariantProps<typeof tableRecipe>;\n\nexport interface TableColumn<R = Record<string, unknown>> {\n /** Unique key — used for the column id and to read the cell value from the row. */\n key: string;\n /** Column heading text. */\n label: string;\n /** Optional fixed width (any CSS length), applied to the header cell. */\n width?: string;\n /** Horizontal alignment for the header and body cells. */\n align?: 'left' | 'center' | 'right';\n /** Custom cell renderer — receives the row; overrides the default value read. */\n render?: Snippet<[R]>;\n}\n\nexport interface TableProps<T extends Record<string, unknown> = Record<string, unknown>> {\n /** Column definitions in display order. */\n columns: TableColumn<T>[];\n /** Row data. */\n data: T[];\n /** Show skeleton placeholder rows instead of data. */\n loading?: boolean;\n /** Custom content rendered when there are no rows. Defaults to \"No data\". */\n empty?: Snippet;\n /** Zebra-stripe alternating rows. */\n striped?: boolean;\n /** Keep the header visible while the body scrolls. */\n stickyHeader?: boolean;\n /** Called when a row is clicked — also adds a pointer affordance. */\n onRowClick?: (row: T) => void;\n /** Additional CSS classes for the scroll wrapper. */\n class?: string;\n}\n"
19
+ },
20
+ {
21
+ "path": "src/lib/components/table/Table.svelte",
22
+ "target": "Table.svelte",
23
+ "type": "svelte",
24
+ "content": "<script lang=\"ts\" generics=\"T extends Record<string, unknown>\">\n import {Skeleton} from '$lib/components/skeleton/index.js';\n import {tableRecipe, type TableProps} from './Table.recipe';\n\n let {\n columns,\n data,\n loading,\n empty,\n striped,\n stickyHeader,\n onRowClick,\n class: className = '',\n }: TableProps<T> = $props();\n\n const r = $derived(tableRecipe({stickyHeader, clickable: !!onRowClick}));\n</script>\n\n<div class={r.root({class: className})}>\n <table class={r.table()}>\n <thead class={r.thead()}>\n <tr>\n {#each columns as col (col.key)}\n <th\n class={r.headerCell()}\n style={col.width ? `width:${col.width}` : ''}\n class:text-center={col.align === 'center'}\n class:text-right={col.align === 'right'}\n >\n {col.label}\n </th>\n {/each}\n </tr>\n </thead>\n <tbody>\n {#if loading}\n {#each Array(4) as _, i (i)}\n <tr>\n {#each columns as col (col.key)}\n <td class={r.loadingCell()}>\n <Skeleton variant=\"line\" />\n </td>\n {/each}\n </tr>\n {/each}\n {:else if data.length === 0}\n <tr>\n <td colspan={columns.length} class={r.empty()}>\n {#if empty}\n {@render empty()}\n {:else}\n No data\n {/if}\n </td>\n </tr>\n {:else}\n {#each data as row, i (i)}\n <tr\n class={tableRecipe({clickable: !!onRowClick, stripedRow: !!striped && i % 2 === 1}).row()}\n onclick={() => onRowClick?.(row)}\n >\n {#each columns as col (col.key)}\n <td\n class={r.cell()}\n class:text-center={col.align === 'center'}\n class:text-right={col.align === 'right'}\n >\n {#if col.render}\n {@render col.render(row)}\n {:else}\n {row[col.key] ?? ''}\n {/if}\n </td>\n {/each}\n </tr>\n {/each}\n {/if}\n </tbody>\n </table>\n</div>\n"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "tailwind-variants"
29
+ ],
30
+ "peerDependencies": [
31
+ "svelte"
32
+ ],
33
+ "registryDependencies": [
34
+ "skeleton"
35
+ ],
36
+ "sharedModules": {
37
+ "utils": false,
38
+ "icons": false,
39
+ "hooks": false
40
+ },
41
+ "exports": [
42
+ "Table",
43
+ "tableRecipe"
44
+ ]
45
+ }