tera-system-ui 0.1.76 → 0.2.2
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.
- package/dist/components/accordion/Accordion.recipe.d.ts +125 -0
- package/dist/components/accordion/Accordion.recipe.js +28 -0
- package/dist/components/accordion/components/Accordion.svelte +4 -1
- package/dist/components/accordion/components/AccordionContent.svelte +4 -6
- package/dist/components/accordion/components/AccordionItem.svelte +3 -2
- package/dist/components/accordion/components/AccordionTrigger.svelte +11 -9
- package/dist/components/accordion/components/AccordionTrigger.svelte.d.ts +3 -0
- package/dist/components/accordion/index.d.ts +2 -1
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/alert/Alert.recipe.d.ts +113 -0
- package/dist/components/alert/Alert.recipe.js +53 -0
- package/dist/components/alert/Alert.svelte +28 -18
- package/dist/components/alert/Alert.svelte.d.ts +2 -13
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.js +1 -0
- package/dist/components/avatar/Avatar.recipe.d.ts +113 -0
- package/dist/components/avatar/Avatar.recipe.js +37 -0
- package/dist/components/avatar/Avatar.svelte +19 -24
- package/dist/components/avatar/Avatar.svelte.d.ts +1 -1
- package/dist/components/avatar/index.d.ts +2 -1
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/badge/Badge.recipe.d.ts +68 -0
- package/dist/components/badge/Badge.recipe.js +35 -0
- package/dist/components/badge/Badge.svelte +15 -7
- package/dist/components/badge/Badge.svelte.d.ts +1 -1
- package/dist/components/badge/index.d.ts +2 -1
- package/dist/components/badge/index.js +1 -0
- package/dist/components/bottom-sheet/BottomSheet.recipe.d.ts +130 -0
- package/dist/components/bottom-sheet/BottomSheet.recipe.js +47 -0
- package/dist/components/bottom-sheet/BottomSheet.svelte +1123 -0
- package/dist/components/bottom-sheet/BottomSheet.svelte.d.ts +4 -0
- package/dist/components/bottom-sheet/bottomSheetStore.svelte.d.ts +39 -0
- package/dist/components/bottom-sheet/bottomSheetStore.svelte.js +158 -0
- package/dist/components/bottom-sheet/index.d.ts +5 -0
- package/dist/components/bottom-sheet/index.js +3 -0
- package/dist/components/button/Button.recipe.d.ts +131 -0
- package/dist/components/button/Button.recipe.js +120 -0
- package/dist/components/button/Button.svelte +37 -23
- package/dist/components/button/Button.svelte.d.ts +1 -1
- package/dist/components/button/index.d.ts +2 -1
- package/dist/components/button/index.js +1 -0
- package/dist/components/card/{Card.d.ts → Card.recipe.d.ts} +18 -6
- package/dist/components/card/Card.recipe.js +41 -0
- package/dist/components/card/Card.svelte +5 -5
- package/dist/components/card/Card.svelte.d.ts +1 -1
- package/dist/components/card/index.d.ts +2 -1
- package/dist/components/card/index.js +1 -0
- package/dist/components/checkbox/Checkbox.recipe.d.ts +80 -0
- package/dist/components/checkbox/Checkbox.recipe.js +39 -0
- package/dist/components/checkbox/Checkbox.svelte +29 -35
- package/dist/components/checkbox/Checkbox.svelte.d.ts +1 -1
- package/dist/components/checkbox/index.d.ts +2 -1
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/combobox/Combobox.recipe.d.ts +138 -0
- package/dist/components/combobox/Combobox.recipe.js +50 -0
- package/dist/components/combobox/Combobox.svelte +57 -37
- package/dist/components/combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/combobox/index.d.ts +2 -1
- package/dist/components/combobox/index.js +1 -0
- package/dist/components/command/Command.recipe.d.ts +92 -0
- package/dist/components/command/Command.recipe.js +31 -0
- package/dist/components/command/components/command-empty.svelte +2 -2
- package/dist/components/command/components/command-group.svelte +4 -3
- package/dist/components/command/components/command-input.svelte +3 -7
- package/dist/components/command/components/command-item.svelte +2 -5
- package/dist/components/command/components/command-link-item.svelte +2 -5
- package/dist/components/command/components/command-list.svelte +2 -2
- package/dist/components/command/components/command-separator.svelte +2 -2
- package/dist/components/command/components/command-shortcut.svelte +2 -2
- package/dist/components/command/components/command-shortcut.svelte.d.ts +1 -1
- package/dist/components/command/components/command.svelte +2 -5
- package/dist/components/command/index.d.ts +2 -0
- package/dist/components/command/index.js +1 -0
- package/dist/components/date-range-picker/DateRangePicker.recipe.d.ts +220 -0
- package/dist/components/date-range-picker/DateRangePicker.recipe.js +113 -0
- package/dist/components/date-range-picker/DateRangePicker.svelte +53 -72
- package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +1 -1
- package/dist/components/date-range-picker/index.d.ts +2 -1
- package/dist/components/date-range-picker/index.js +1 -0
- package/dist/components/dialog/Dialog.recipe.d.ts +229 -0
- package/dist/components/dialog/Dialog.recipe.js +68 -0
- package/dist/components/dialog/Dialog.svelte +21 -39
- package/dist/components/dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/dialog/index.d.ts +2 -1
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/drawer/Drawer.recipe.d.ts +140 -0
- package/dist/components/drawer/Drawer.recipe.js +50 -0
- package/dist/components/drawer/Drawer.svelte +16 -24
- package/dist/components/drawer/Drawer.svelte.d.ts +2 -14
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/dropdown-menu/{DropdownMenu.d.ts → DropdownMenu.recipe.d.ts} +63 -4
- package/dist/components/dropdown-menu/DropdownMenu.recipe.js +41 -0
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte +3 -8
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +3 -2
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +3 -2
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +3 -9
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +3 -2
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/index.d.ts +2 -1
- package/dist/components/dropdown-menu/index.js +1 -0
- package/dist/components/fonts/TeraFontMono.svelte +1 -1
- package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -1
- package/dist/components/input/Input.recipe.d.ts +166 -0
- package/dist/components/input/Input.recipe.js +86 -0
- package/dist/components/input/Input.svelte +43 -38
- package/dist/components/input/Input.svelte.d.ts +1 -1
- package/dist/components/input/index.d.ts +2 -1
- package/dist/components/input/index.js +1 -0
- package/dist/components/label/Label.recipe.d.ts +46 -0
- package/dist/components/label/Label.recipe.js +27 -0
- package/dist/components/label/Label.svelte +2 -2
- package/dist/components/label/Label.svelte.d.ts +1 -1
- package/dist/components/label/index.d.ts +2 -1
- package/dist/components/label/index.js +1 -0
- package/dist/components/popover/Popover.recipe.d.ts +80 -0
- package/dist/components/popover/Popover.recipe.js +23 -0
- package/dist/components/popover/Popover.svelte +4 -8
- package/dist/components/popover/Popover.svelte.d.ts +1 -1
- package/dist/components/popover/index.d.ts +2 -1
- package/dist/components/popover/index.js +1 -0
- package/dist/components/popover-responsive/PopoverResponsive.recipe.d.ts +85 -0
- package/dist/components/popover-responsive/PopoverResponsive.recipe.js +27 -0
- package/dist/components/popover-responsive/PopoverResponsive.svelte +38 -5
- package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +1 -1
- package/dist/components/popover-responsive/index.d.ts +2 -1
- package/dist/components/popover-responsive/index.js +1 -0
- package/dist/components/select/Select.recipe.d.ts +190 -0
- package/dist/components/select/Select.recipe.js +51 -0
- package/dist/components/select/Select.svelte +18 -24
- package/dist/components/select/Select.svelte.d.ts +1 -1
- package/dist/components/select/index.d.ts +2 -1
- package/dist/components/select/index.js +1 -0
- package/dist/components/skeleton/Skeleton.recipe.d.ts +89 -0
- package/dist/components/skeleton/Skeleton.recipe.js +41 -0
- package/dist/components/skeleton/Skeleton.svelte +7 -6
- package/dist/components/skeleton/Skeleton.svelte.d.ts +2 -10
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/slider/Slider.recipe.d.ts +115 -0
- package/dist/components/slider/Slider.recipe.js +50 -0
- package/dist/components/slider/Slider.svelte +6 -12
- package/dist/components/slider/Slider.svelte.d.ts +1 -1
- package/dist/components/slider/index.d.ts +3 -1
- package/dist/components/slider/index.js +1 -0
- package/dist/components/spinner/Spinner.recipe.d.ts +60 -0
- package/dist/components/spinner/Spinner.recipe.js +38 -0
- package/dist/components/spinner/Spinner.svelte +2 -2
- package/dist/components/spinner/Spinner.svelte.d.ts +2 -8
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/star-rating/StarRating.recipe.d.ts +49 -0
- package/dist/components/star-rating/StarRating.recipe.js +29 -0
- package/dist/components/star-rating/StarRating.svelte +39 -35
- package/dist/components/star-rating/StarRating.svelte.d.ts +1 -1
- package/dist/components/star-rating/index.d.ts +2 -1
- package/dist/components/star-rating/index.js +1 -0
- package/dist/components/switch/Switch.recipe.d.ts +81 -0
- package/dist/components/switch/Switch.recipe.js +38 -0
- package/dist/components/switch/Switch.svelte +27 -36
- package/dist/components/switch/Switch.svelte.d.ts +1 -1
- package/dist/components/switch/index.d.ts +2 -1
- package/dist/components/switch/index.js +1 -0
- package/dist/components/table/Table.recipe.d.ts +134 -0
- package/dist/components/table/Table.recipe.js +44 -0
- package/dist/components/table/Table.svelte +10 -10
- package/dist/components/table/Table.svelte.d.ts +2 -17
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/index.js +1 -0
- package/dist/components/tabs/Tabs.recipe.d.ts +161 -0
- package/dist/components/tabs/Tabs.recipe.js +76 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +2 -58
- package/dist/components/tabs/Tabs.svelte.js +3 -0
- package/dist/components/tabs/components/Tabs.svelte +8 -8
- package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsContent.svelte +3 -2
- package/dist/components/tabs/components/TabsContent.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsItem.svelte +11 -36
- package/dist/components/tabs/components/TabsItem.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsList.svelte +13 -42
- package/dist/components/tabs/components/TabsList.svelte.d.ts +1 -1
- package/dist/components/tabs/index.d.ts +2 -1
- package/dist/components/tabs/index.js +1 -0
- package/dist/components/text-area/TextArea.recipe.d.ts +181 -0
- package/dist/components/text-area/TextArea.recipe.js +81 -0
- package/dist/components/text-area/TextArea.svelte +68 -63
- package/dist/components/text-area/TextArea.svelte.d.ts +1 -1
- package/dist/components/text-area/index.d.ts +2 -1
- package/dist/components/text-area/index.js +1 -0
- package/dist/components/toast/ToastContainer.svelte +15 -16
- package/dist/components/tooltip/Tooltip.recipe.d.ts +79 -0
- package/dist/components/tooltip/Tooltip.recipe.js +26 -0
- package/dist/components/tooltip/Tooltip.svelte +10 -7
- package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts +2 -1
- package/dist/components/tooltip/index.js +1 -0
- package/dist/index.d.ts +55 -65
- package/dist/index.js +28 -37
- package/dist/{components → internal}/icons/IconCheck.svelte +3 -4
- package/dist/{components → internal}/icons/IconChevronDown.svelte +3 -4
- package/dist/{components → internal}/icons/IconSearch.svelte +3 -4
- package/dist/{components → internal}/icons/IconX.svelte +3 -4
- package/dist/internal/icons/index.d.ts +4 -0
- package/dist/internal/icons/index.js +4 -0
- package/dist/llms/accordion.md +2 -1
- package/dist/llms/alert.md +7 -2
- package/dist/llms/avatar.md +2 -2
- package/dist/llms/badge.md +4 -0
- package/dist/llms/bottom-sheet.md +44 -0
- package/dist/llms/button.md +7 -1
- package/dist/llms/card.md +2 -0
- package/dist/llms/checkbox.md +2 -1
- package/dist/llms/colors.md +20 -20
- package/dist/llms/combobox.md +8 -2
- package/dist/llms/command.md +2 -0
- package/dist/llms/date-range-picker.md +12 -2
- package/dist/llms/dialog.md +9 -4
- package/dist/llms/drawer.md +13 -8
- package/dist/llms/dropdown-menu.md +11 -2
- package/dist/llms/index.md +1 -13
- package/dist/llms/input.md +3 -0
- package/dist/llms/label.md +2 -0
- package/dist/llms/popover-responsive.md +10 -2
- package/dist/llms/popover.md +1 -1
- package/dist/llms/select.md +2 -1
- package/dist/llms/skeleton.md +8 -5
- package/dist/llms/slider.md +5 -3
- package/dist/llms/spinner.md +6 -2
- package/dist/llms/star-rating.md +3 -0
- package/dist/llms/switch.md +2 -1
- package/dist/llms/table.md +14 -7
- package/dist/llms/tabs.md +18 -3
- package/dist/llms/text-area.md +3 -0
- package/dist/llms/tooltip.md +2 -1
- package/dist/recipes/index.d.ts +79 -0
- package/dist/recipes/index.js +52 -0
- package/dist/stories/ComponentOverview.stories.svelte +346 -350
- package/dist/themes/tera-ui-base.css +149 -62
- package/dist/themes/theme-cv-builder.css +146 -0
- package/dist/themes/theme-professional.css +8 -33
- package/dist/tokens/index.d.ts +168 -0
- package/dist/tokens/index.js +122 -0
- package/dist/types/index.d.ts +19 -24
- package/package.json +30 -50
- package/registry/accordion.json +65 -0
- package/registry/alert.json +43 -0
- package/registry/avatar.json +43 -0
- package/registry/badge.json +43 -0
- package/registry/bottom-sheet.json +50 -0
- package/registry/button.json +43 -0
- package/registry/card.json +43 -0
- package/registry/checkbox.json +45 -0
- package/registry/combobox.json +45 -0
- package/registry/command.json +109 -0
- package/registry/date-range-picker.json +48 -0
- package/registry/dialog.json +50 -0
- package/registry/drawer.json +45 -0
- package/registry/dropdown-menu.json +72 -0
- package/registry/fonts.json +41 -0
- package/registry/index.json +193 -0
- package/registry/input.json +43 -0
- package/registry/label.json +44 -0
- package/registry/popover-responsive.json +46 -0
- package/registry/popover.json +44 -0
- package/registry/select.json +51 -0
- package/registry/skeleton.json +43 -0
- package/registry/slider.json +44 -0
- package/registry/spinner.json +43 -0
- package/registry/star-rating.json +43 -0
- package/registry/switch.json +44 -0
- package/registry/table.json +45 -0
- package/registry/tabs.json +71 -0
- package/registry/text-area.json +43 -0
- package/registry/toast.json +41 -0
- package/registry/tooltip.json +44 -0
- package/scripts/generate-ts-index.js +1 -18
- package/scripts/tera-ui.mjs +171 -0
- package/dist/components/accordion/Accordion.d.ts +0 -52
- package/dist/components/accordion/Accordion.js +0 -11
- package/dist/components/ai/ChatBubble.svelte +0 -35
- package/dist/components/ai/ChatBubble.svelte.d.ts +0 -12
- package/dist/components/ai/PromptInput.svelte +0 -58
- package/dist/components/ai/PromptInput.svelte.d.ts +0 -13
- package/dist/components/ai/StreamText.svelte +0 -41
- package/dist/components/ai/StreamText.svelte.d.ts +0 -11
- package/dist/components/ai/SuggestionChips.svelte +0 -34
- package/dist/components/ai/SuggestionChips.svelte.d.ts +0 -10
- package/dist/components/ai/ThinkingLoader.svelte +0 -34
- package/dist/components/ai/ThinkingLoader.svelte.d.ts +0 -11
- package/dist/components/ai/index.d.ts +0 -5
- package/dist/components/ai/index.js +0 -5
- package/dist/components/avatar/Avatar.d.ts +0 -45
- package/dist/components/avatar/Avatar.js +0 -35
- package/dist/components/badge/Badge.d.ts +0 -52
- package/dist/components/badge/Badge.js +0 -22
- package/dist/components/brand-logo/BrandLogo.d.ts +0 -38
- package/dist/components/brand-logo/BrandLogo.js +0 -18
- package/dist/components/brand-logo/BrandLogo.svelte +0 -36
- package/dist/components/brand-logo/BrandLogo.svelte.d.ts +0 -4
- package/dist/components/brand-logo/index.d.ts +0 -2
- package/dist/components/brand-logo/index.js +0 -1
- package/dist/components/button/Button.d.ts +0 -113
- package/dist/components/button/Button.js +0 -135
- package/dist/components/card/Card.js +0 -28
- package/dist/components/checkbox/Checkbox.d.ts +0 -32
- package/dist/components/checkbox/Checkbox.js +0 -11
- package/dist/components/combobox/Combobox.d.ts +0 -47
- package/dist/components/combobox/Combobox.js +0 -5
- package/dist/components/date-range-picker/DateRangePicker.types.d.ts +0 -38
- package/dist/components/date-range-picker/DateRangePicker.types.js +0 -1
- package/dist/components/dialog/Dialog.d.ts +0 -55
- package/dist/components/dialog/Dialog.js +0 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +0 -1
- package/dist/components/header/Header.d.ts +0 -11
- package/dist/components/header/Header.js +0 -7
- package/dist/components/header/Header.svelte +0 -33
- package/dist/components/header/Header.svelte.d.ts +0 -5
- package/dist/components/header/header.scss +0 -20
- package/dist/components/header/index.d.ts +0 -2
- package/dist/components/header/index.js +0 -1
- package/dist/components/header/package.json +0 -14
- package/dist/components/icons/IconArrowBigRightFilled.svelte +0 -7
- package/dist/components/icons/IconArrowBigRightFilled.svelte.d.ts +0 -5
- package/dist/components/icons/IconBook.svelte +0 -7
- package/dist/components/icons/IconBook.svelte.d.ts +0 -5
- package/dist/components/icons/IconBookmarkPlus.svelte +0 -7
- package/dist/components/icons/IconBookmarkPlus.svelte.d.ts +0 -5
- package/dist/components/icons/IconCalculator.svelte +0 -7
- package/dist/components/icons/IconCalculator.svelte.d.ts +0 -5
- package/dist/components/icons/IconCoin.svelte +0 -7
- package/dist/components/icons/IconCoin.svelte.d.ts +0 -5
- package/dist/components/icons/IconCoinConvert.svelte +0 -17
- package/dist/components/icons/IconCoinConvert.svelte.d.ts +0 -4
- package/dist/components/icons/IconCopy.svelte +0 -7
- package/dist/components/icons/IconCopy.svelte.d.ts +0 -5
- package/dist/components/icons/IconCopyCheckFilled.svelte +0 -7
- package/dist/components/icons/IconCopyCheckFilled.svelte.d.ts +0 -5
- package/dist/components/icons/IconHamburger.svelte +0 -7
- package/dist/components/icons/IconHamburger.svelte.d.ts +0 -4
- package/dist/components/icons/IconLanguage.svelte +0 -7
- package/dist/components/icons/IconLanguage.svelte.d.ts +0 -5
- package/dist/components/icons/IconLoader2.svelte +0 -7
- package/dist/components/icons/IconLoader2.svelte.d.ts +0 -5
- package/dist/components/icons/IconLogout.svelte +0 -7
- package/dist/components/icons/IconLogout.svelte.d.ts +0 -5
- package/dist/components/icons/IconMoon.svelte +0 -7
- package/dist/components/icons/IconMoon.svelte.d.ts +0 -4
- package/dist/components/icons/IconPointFilled.svelte +0 -7
- package/dist/components/icons/IconPointFilled.svelte.d.ts +0 -5
- package/dist/components/icons/IconSettings.svelte +0 -7
- package/dist/components/icons/IconSettings.svelte.d.ts +0 -5
- package/dist/components/icons/IconSun.svelte +0 -7
- package/dist/components/icons/IconSun.svelte.d.ts +0 -4
- package/dist/components/icons/IconSwitchHorizontal.svelte +0 -7
- package/dist/components/icons/IconSwitchHorizontal.svelte.d.ts +0 -5
- package/dist/components/icons/IconSwitchVertical.svelte +0 -7
- package/dist/components/icons/IconSwitchVertical.svelte.d.ts +0 -5
- package/dist/components/icons/IconTransform.svelte +0 -7
- package/dist/components/icons/IconTransform.svelte.d.ts +0 -5
- package/dist/components/icons/index.d.ts +0 -23
- package/dist/components/icons/index.js +0 -23
- package/dist/components/input/Input.d.ts +0 -72
- package/dist/components/input/Input.js +0 -45
- package/dist/components/label/Label.d.ts +0 -38
- package/dist/components/label/Label.js +0 -18
- package/dist/components/language-picker-button/LanguagePickerButton.d.ts +0 -15
- package/dist/components/language-picker-button/LanguagePickerButton.js +0 -7
- package/dist/components/language-picker-button/LanguagePickerButton.svelte +0 -78
- package/dist/components/language-picker-button/LanguagePickerButton.svelte.d.ts +0 -7
- package/dist/components/language-picker-button/index.d.ts +0 -2
- package/dist/components/language-picker-button/index.js +0 -1
- package/dist/components/light-dark-toggle/LightDarkToggle.d.ts +0 -11
- package/dist/components/light-dark-toggle/LightDarkToggle.js +0 -7
- package/dist/components/light-dark-toggle/LightDarkToggle.svelte +0 -33
- package/dist/components/light-dark-toggle/LightDarkToggle.svelte.d.ts +0 -4
- package/dist/components/light-dark-toggle/index.d.ts +0 -2
- package/dist/components/light-dark-toggle/index.js +0 -1
- package/dist/components/marketing/FeatureCard.svelte +0 -37
- package/dist/components/marketing/FeatureCard.svelte.d.ts +0 -13
- package/dist/components/marketing/PricingCard.svelte +0 -48
- package/dist/components/marketing/PricingCard.svelte.d.ts +0 -15
- package/dist/components/marketing/StatBlock.svelte +0 -14
- package/dist/components/marketing/StatBlock.svelte.d.ts +0 -10
- package/dist/components/marketing/TestimonialCard.svelte +0 -24
- package/dist/components/marketing/TestimonialCard.svelte.d.ts +0 -12
- package/dist/components/marketing/index.d.ts +0 -4
- package/dist/components/marketing/index.js +0 -4
- package/dist/components/popover/Popover.d.ts +0 -37
- package/dist/components/popover/Popover.js +0 -1
- package/dist/components/popover-responsive/PopoverResponsive.d.ts +0 -22
- package/dist/components/popover-responsive/PopoverResponsive.js +0 -1
- package/dist/components/select/Select.d.ts +0 -106
- package/dist/components/select/Select.js +0 -24
- package/dist/components/side-navigation/SideNavigation.d.ts +0 -72
- package/dist/components/side-navigation/SideNavigation.js +0 -91
- package/dist/components/side-navigation/SideNavigation.svelte +0 -143
- package/dist/components/side-navigation/SideNavigation.svelte.d.ts +0 -4
- package/dist/components/side-navigation/SideNavigationGroup.svelte +0 -40
- package/dist/components/side-navigation/SideNavigationGroup.svelte.d.ts +0 -10
- package/dist/components/side-navigation/SideNavigationItem.svelte +0 -18
- package/dist/components/side-navigation/SideNavigationItem.svelte.d.ts +0 -8
- package/dist/components/side-navigation/SideNavigationLayout.svelte +0 -19
- package/dist/components/side-navigation/SideNavigationLayout.svelte.d.ts +0 -9
- package/dist/components/side-navigation/index.d.ts +0 -5
- package/dist/components/side-navigation/index.js +0 -4
- package/dist/components/side-navigation/sidenav.scss +0 -226
- package/dist/components/slider/Slider.d.ts +0 -28
- package/dist/components/slider/Slider.js +0 -1
- package/dist/components/star-rating/StarRating.d.ts +0 -31
- package/dist/components/star-rating/StarRating.js +0 -15
- package/dist/components/switch/Switch.d.ts +0 -27
- package/dist/components/switch/Switch.js +0 -11
- package/dist/components/tera-ui-context/TeraUiContext.d.ts +0 -11
- package/dist/components/tera-ui-context/TeraUiContext.js +0 -1
- package/dist/components/tera-ui-context/TeraUiContext.svelte +0 -13
- package/dist/components/tera-ui-context/TeraUiContext.svelte.d.ts +0 -4
- package/dist/components/tera-ui-context/global-context-store.d.ts +0 -3
- package/dist/components/tera-ui-context/global-context-store.js +0 -2
- package/dist/components/tera-ui-context/global-context.d.ts +0 -3
- package/dist/components/tera-ui-context/global-context.js +0 -24
- package/dist/components/tera-ui-context/index.d.ts +0 -2
- package/dist/components/tera-ui-context/index.js +0 -1
- package/dist/components/text-area/TextArea.d.ts +0 -87
- package/dist/components/text-area/TextArea.js +0 -48
- package/dist/components/tooltip/Tooltip.d.ts +0 -23
- package/dist/components/tooltip/Tooltip.js +0 -1
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.d.ts +0 -14
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.js +0 -7
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +0 -48
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte.d.ts +0 -4
- package/dist/components/user-avatar-with-menu/index.d.ts +0 -2
- package/dist/components/user-avatar-with-menu/index.js +0 -1
- package/dist/i18n/index.d.ts +0 -1
- package/dist/i18n/index.js +0 -1
- package/dist/i18n/language.d.ts +0 -2
- package/dist/i18n/language.js +0 -45
- package/dist/internal/service/user.service.d.ts +0 -2
- package/dist/internal/service/user.service.js +0 -20
- package/dist/llms/ai.md +0 -110
- package/dist/llms/brand-logo.md +0 -30
- package/dist/llms/header.md +0 -26
- package/dist/llms/icons.md +0 -43
- package/dist/llms/language-picker-button.md +0 -30
- package/dist/llms/light-dark-toggle.md +0 -26
- package/dist/llms/marketing.md +0 -95
- package/dist/llms/side-navigation.md +0 -51
- package/dist/llms/tera-ui-context.md +0 -30
- package/dist/llms/user-avatar-with-menu.md +0 -28
- package/dist/paraglide/.prettierignore +0 -3
- package/dist/paraglide/README.md +0 -162
- package/dist/paraglide/messages/_index.d.ts +0 -106
- package/dist/paraglide/messages/_index.js +0 -439
- package/dist/paraglide/messages/ar.d.ts +0 -23
- package/dist/paraglide/messages/ar.js +0 -38
- package/dist/paraglide/messages/bg.d.ts +0 -23
- package/dist/paraglide/messages/bg.js +0 -38
- package/dist/paraglide/messages/bn.d.ts +0 -23
- package/dist/paraglide/messages/bn.js +0 -38
- package/dist/paraglide/messages/ca.d.ts +0 -23
- package/dist/paraglide/messages/ca.js +0 -38
- package/dist/paraglide/messages/cs.d.ts +0 -23
- package/dist/paraglide/messages/cs.js +0 -38
- package/dist/paraglide/messages/da.d.ts +0 -23
- package/dist/paraglide/messages/da.js +0 -38
- package/dist/paraglide/messages/de.d.ts +0 -23
- package/dist/paraglide/messages/de.js +0 -38
- package/dist/paraglide/messages/el.d.ts +0 -23
- package/dist/paraglide/messages/el.js +0 -38
- package/dist/paraglide/messages/en.d.ts +0 -23
- package/dist/paraglide/messages/en.js +0 -38
- package/dist/paraglide/messages/es.d.ts +0 -23
- package/dist/paraglide/messages/es.js +0 -38
- package/dist/paraglide/messages/fi.d.ts +0 -23
- package/dist/paraglide/messages/fi.js +0 -38
- package/dist/paraglide/messages/fr.d.ts +0 -23
- package/dist/paraglide/messages/fr.js +0 -38
- package/dist/paraglide/messages/he.d.ts +0 -23
- package/dist/paraglide/messages/he.js +0 -38
- package/dist/paraglide/messages/hi.d.ts +0 -23
- package/dist/paraglide/messages/hi.js +0 -38
- package/dist/paraglide/messages/hu.d.ts +0 -23
- package/dist/paraglide/messages/hu.js +0 -38
- package/dist/paraglide/messages/id.d.ts +0 -23
- package/dist/paraglide/messages/id.js +0 -38
- package/dist/paraglide/messages/it.d.ts +0 -23
- package/dist/paraglide/messages/it.js +0 -38
- package/dist/paraglide/messages/ja.d.ts +0 -23
- package/dist/paraglide/messages/ja.js +0 -38
- package/dist/paraglide/messages/ko.d.ts +0 -23
- package/dist/paraglide/messages/ko.js +0 -38
- package/dist/paraglide/messages/lt.d.ts +0 -23
- package/dist/paraglide/messages/lt.js +0 -38
- package/dist/paraglide/messages/lv.d.ts +0 -23
- package/dist/paraglide/messages/lv.js +0 -38
- package/dist/paraglide/messages/ms.d.ts +0 -23
- package/dist/paraglide/messages/ms.js +0 -38
- package/dist/paraglide/messages/nl.d.ts +0 -23
- package/dist/paraglide/messages/nl.js +0 -38
- package/dist/paraglide/messages/no.d.ts +0 -23
- package/dist/paraglide/messages/no.js +0 -38
- package/dist/paraglide/messages/pl.d.ts +0 -23
- package/dist/paraglide/messages/pl.js +0 -38
- package/dist/paraglide/messages/pt.d.ts +0 -23
- package/dist/paraglide/messages/pt.js +0 -38
- package/dist/paraglide/messages/ro.d.ts +0 -23
- package/dist/paraglide/messages/ro.js +0 -38
- package/dist/paraglide/messages/ru.d.ts +0 -23
- package/dist/paraglide/messages/ru.js +0 -38
- package/dist/paraglide/messages/sk.d.ts +0 -23
- package/dist/paraglide/messages/sk.js +0 -38
- package/dist/paraglide/messages/sl.d.ts +0 -23
- package/dist/paraglide/messages/sl.js +0 -38
- package/dist/paraglide/messages/sq.d.ts +0 -23
- package/dist/paraglide/messages/sq.js +0 -38
- package/dist/paraglide/messages/sr.d.ts +0 -23
- package/dist/paraglide/messages/sr.js +0 -38
- package/dist/paraglide/messages/sv.d.ts +0 -23
- package/dist/paraglide/messages/sv.js +0 -38
- package/dist/paraglide/messages/sw.d.ts +0 -23
- package/dist/paraglide/messages/sw.js +0 -38
- package/dist/paraglide/messages/ta.d.ts +0 -23
- package/dist/paraglide/messages/ta.js +0 -38
- package/dist/paraglide/messages/te.d.ts +0 -23
- package/dist/paraglide/messages/te.js +0 -38
- package/dist/paraglide/messages/th.d.ts +0 -23
- package/dist/paraglide/messages/th.js +0 -38
- package/dist/paraglide/messages/tl.d.ts +0 -23
- package/dist/paraglide/messages/tl.js +0 -38
- package/dist/paraglide/messages/tr.d.ts +0 -23
- package/dist/paraglide/messages/tr.js +0 -38
- package/dist/paraglide/messages/uk.d.ts +0 -23
- package/dist/paraglide/messages/uk.js +0 -38
- package/dist/paraglide/messages/vi.d.ts +0 -23
- package/dist/paraglide/messages/vi.js +0 -38
- package/dist/paraglide/messages/zh-CN.d.ts +0 -23
- package/dist/paraglide/messages/zh-CN.js +0 -38
- package/dist/paraglide/messages/zh-TW.d.ts +0 -23
- package/dist/paraglide/messages/zh-TW.js +0 -38
- package/dist/paraglide/messages.d.ts +0 -2
- package/dist/paraglide/messages.js +0 -4
- package/dist/paraglide/registry.d.ts +0 -34
- package/dist/paraglide/registry.js +0 -46
- package/dist/paraglide/runtime.d.ts +0 -758
- package/dist/paraglide/runtime.js +0 -1990
- package/dist/paraglide/server.d.ts +0 -96
- package/dist/paraglide/server.js +0 -277
- package/dist/tera-i18n/README.md +0 -105
- package/dist/tera-i18n/assets/world-flags/Algeria.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/East Timor.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/Rapa Nui.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/abkhazia.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/afghanistan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/aland islands.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/albania.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/american samoa.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/andorra.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/angola.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/anguilla.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/antigua and barbuda.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/argentina.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/armenia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/aruba.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/australia.svg +0 -21
- package/dist/tera-i18n/assets/world-flags/austria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/azerbaijan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/azores islands.svg +0 -21
- package/dist/tera-i18n/assets/world-flags/bahamas.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/bahrain.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/balearic islands.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/bangladesh.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/barbados.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/basque country.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/belarus.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/belgium.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/belize.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/benin.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/bermuda.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/bhutan.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/bolivia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/bonaire.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/bosnia and herzegovina.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/botswana.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/brazil.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/british columbia.svg +0 -31
- package/dist/tera-i18n/assets/world-flags/british indian ocean territory.svg +0 -29
- package/dist/tera-i18n/assets/world-flags/british virgin islands.svg +0 -24
- package/dist/tera-i18n/assets/world-flags/brunei.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/bulgaria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/burkina faso.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/burundi.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/cambodia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/cameroon.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/canada.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/canary islands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/cape verde.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/catalonia.svg +0 -7
- package/dist/tera-i18n/assets/world-flags/cayman islands.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/central african republic.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/ceuta.svg +0 -29
- package/dist/tera-i18n/assets/world-flags/chad.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/chile.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/china.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/cocos island.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/colombia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/comoros.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/cook islands.svg +0 -22
- package/dist/tera-i18n/assets/world-flags/corsica.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/costa rica.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/croatia.svg +0 -31
- package/dist/tera-i18n/assets/world-flags/cuba.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/curacao.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/cyprus.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/czech republic.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/democratic republic of congo.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/denmark.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/djibouti.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/dominica.svg +0 -34
- package/dist/tera-i18n/assets/world-flags/dominican republic.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/ecuador.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/egypt.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/el salvador.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/england.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/equatorial guinea.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/eritrea.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/estonia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/ethiopia.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/european union.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/falkland islands.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/faroe islands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/fiji.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/finland.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/france.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/french polynesia.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/gabon.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/galapagos islands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/gambia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/georgia.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/germany.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/ghana.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/gibraltar.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/greece.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/greenland.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/grenada.svg +0 -27
- package/dist/tera-i18n/assets/world-flags/guam.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/guatemala.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/guernsey.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/guinea bissau.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/guinea.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/guyana.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/haiti.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/hawaii.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/honduras.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/hong kong.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/hungary.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/iceland.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/india.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/indonesia.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/iran.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/iraq.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/ireland.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/isle of man.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/israel.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/italy.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/ivory coast.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/jamaica.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/japan.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/jersey.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/jordan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/kazakhstan.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/kenya.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/kiribati.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/kosovo.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/kuwait.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/kyrgyzstan.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/laos.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/latvia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/lebanon.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/lesotho.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/liberia.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/libya.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/liechtenstein.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/lithuania.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/luxembourg.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/macao.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/madagascar.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/madeira.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/malawi.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/malaysia.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/maldives.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/mali.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/malta.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/marshall island.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/martinique.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/mauritania.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/mauritius.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/melilla.svg +0 -25
- package/dist/tera-i18n/assets/world-flags/mexico.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/micronesia.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/moldova.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/monaco.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/mongolia.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/montenegro.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/montserrat.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/morocco.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/mozambique.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/myanmar.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/namibia.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/nato.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/nauru.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/nepal.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/netherlands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/new zealand.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/nicaragua.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/niger.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/nigeria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/niue.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/norfolk island.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/north korea.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/northern cyprus.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/northern marianas islands.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/norway.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/oman.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/orkney islands.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/ossetia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/pakistan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/palau.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/palestine.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/panama.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/papua new guinea.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/paraguay.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/peru.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/philippines.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/pitcairn islands.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/poland.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/portugal.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/puerto rico.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/qatar.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/republic of macedonia.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/republic of the congo.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/romania.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/russia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/rwanda.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/saba island.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/sahrawi arab democratic republic.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/samoa.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/san marino.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/sao tome and prince.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/sardinia.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/saudi arabia.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/scotland.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/senegal.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/serbia.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/seychelles.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/sierra leone.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/singapore.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/sint eustatius.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/sint maarten.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/slovakia.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/slovenia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/solomon islands.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/somalia.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/somaliland.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/south africa.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/south korea.svg +0 -30
- package/dist/tera-i18n/assets/world-flags/south sudan.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/spain.png +0 -0
- package/dist/tera-i18n/assets/world-flags/spain.svg +0 -676
- package/dist/tera-i18n/assets/world-flags/sri lanka.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/st barts.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/st lucia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/st vincent and the grenadines.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/sudan.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/suriname.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/swaziland.svg +0 -21
- package/dist/tera-i18n/assets/world-flags/sweden.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/switzerland.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/syria.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/taiwan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/tajikistan.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/tanzania.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/thailand.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/tibet.svg +0 -22
- package/dist/tera-i18n/assets/world-flags/togo.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/tokelau.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/tonga.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/transnistria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/trinidad and tobago.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/tunisia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/turkey.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/turkmenistan.svg +0 -30
- package/dist/tera-i18n/assets/world-flags/turks and caicos.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/tuvalu.svg +0 -25
- package/dist/tera-i18n/assets/world-flags/uganda.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/ukraine.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/united arab emirates.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/united kingdom.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/united nations.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/united states.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/uruguay.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/uzbekista/314/201n.svg +0 -27
- package/dist/tera-i18n/assets/world-flags/uzbekist/303/241n.svg +0 -27
- package/dist/tera-i18n/assets/world-flags/vanuatu.svg +0 -32
- package/dist/tera-i18n/assets/world-flags/vatican city.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/venezuela.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/vietnam.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/virgin islands.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/wales.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/yemen.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/zambia.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/zimbabwe.svg +0 -20
- package/dist/tera-i18n/dev-tools/translator/.env +0 -2
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-calculator-seo.js +0 -79
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +0 -274
- package/dist/tera-i18n/dev-tools/translator/gpt-translator.js +0 -128
- package/dist/tera-i18n/dev-tools/translator/index.js +0 -2
- package/dist/tera-i18n/dev-tools/translator/package-lock.json +0 -780
- package/dist/tera-i18n/dev-tools/translator/package.json +0 -20
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-calculator.md +0 -34
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.md +0 -149
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-system.txt +0 -1
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt.txt +0 -14
- package/dist/tera-i18n/dev-tools/translator/tsconfig.json +0 -17
- package/dist/tera-i18n/dev-tools/translator/types/supported-languages.js +0 -90
- package/dist/tera-i18n/projects/common/all-language-data.d.ts +0 -3
- package/dist/tera-i18n/projects/common/all-language-data.js +0 -141
- package/dist/tera-i18n/projects/common/messages/en.json +0 -0
- package/dist/tera-i18n/projects/common/types/language.d.ts +0 -6
- package/dist/tera-i18n/projects/common/types/language.js +0 -1
- package/dist/tera-i18n/projects/cv-maker/messages/ar-AE.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-EG.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-IQ.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-SA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-SD.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-YE.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/bg.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/bn.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ca.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/cs.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/da.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/de.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/el.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/en-AE.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-AU.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-CA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-GB.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-ID.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-IN.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-NZ.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-PH.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-PK.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-SA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-US.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-ZA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en.json +0 -92
- package/dist/tera-i18n/projects/cv-maker/messages/es-419.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es-AR.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es-ES.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es-MX.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/fi.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/fr-MA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/fr.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/he.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/hi.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/hr.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/hu.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/id.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/it.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ja.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ko.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/lt.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/lv.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ms-MY.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ms.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/nl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/no.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/pl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/pt-BR.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/pt-PT.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/pt.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ro.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ru.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sk.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sq.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sr.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sv.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sw.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ta.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/te.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/th.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/tl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/tr.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/uk.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/vi.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/zh-CN.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/zh-TW.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/zh.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/project.inlang/settings.json +0 -84
- package/dist/tera-i18n/projects/cv-maker/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/cv-maker/supported-language.js +0 -81
- package/dist/tera-i18n/projects/mathda/messages/en.json +0 -4
- package/dist/tera-i18n/projects/mathda/messages/vi.json +0 -4
- package/dist/tera-i18n/projects/mathda/project.inlang/settings.json +0 -15
- package/dist/tera-i18n/projects/mathda/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/mathda/supported-language.js +0 -4
- package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/da.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/de.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/el.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en-IN.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en-PH.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en-US.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en.json +0 -189
- package/dist/tera-i18n/projects/tera-calculator/messages/es.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/id.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/it.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/no.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/te.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/th.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +0 -57
- package/dist/tera-i18n/projects/tera-calculator/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-calculator/supported-language.js +0 -48
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/de.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/en.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/es.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/fr.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/it.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ja.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ko.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/pt.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ru.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/vi.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/zh-CN.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/de.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/en.json +0 -42
- package/dist/tera-i18n/projects/tera-converter/messages/es.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/fr.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/it.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/ja.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/ko.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/pt.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/ru.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/vi.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/zh-CN.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/project.inlang/project_id +0 -1
- package/dist/tera-i18n/projects/tera-converter/project.inlang/settings.json +0 -27
- package/dist/tera-i18n/projects/tera-converter/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-converter/supported-language.js +0 -13
- package/dist/tera-i18n/projects/tera-system-ui/messages/ar.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/bg.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/bn.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ca.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/cs.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/da.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/de.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/el.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/en.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/es.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/fi.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/fr.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/he.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/hi.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/hu.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/id.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/it.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ja.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ko.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/lt.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/lv.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ms.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/nl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/no.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/pl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/pt.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ro.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ru.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sk.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sq.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sr.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sv.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sw.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ta.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/te.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/th.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/tl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/tr.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/uk.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/vi.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/zh-CN.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/zh-TW.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/settings.json +0 -59
- package/dist/tera-i18n/projects/tera-system-ui/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-system-ui/supported-language.js +0 -45
- package/dist/tera-i18n/projects/tera-tools/messages/ar.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/bg.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/bn.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ca.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/cs.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/da.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/de.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/el.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/en.json +0 -96
- package/dist/tera-i18n/projects/tera-tools/messages/es.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/fi.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/fr.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/he.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/hi.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/hu.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/id.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/it.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ja.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ko.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/lt.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/lv.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ms.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/nl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/no.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/pl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/pt.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ro.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ru.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sk.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sq.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sr.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sv.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sw.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ta.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/te.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/th.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/tl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/tr.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/uk.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/vi.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/zh-CN.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/zh-TW.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/project.inlang/project_id +0 -1
- package/dist/tera-i18n/projects/tera-tools/project.inlang/settings.json +0 -61
- package/dist/tera-i18n/projects/tera-tools/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-tools/supported-language.js +0 -45
- package/dist/themes/theme-ai.css +0 -100
- package/dist/themes/theme-marketing.css +0 -91
- /package/dist/{components → internal}/icons/IconCheck.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/IconChevronDown.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/IconSearch.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/IconX.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/Icons.d.ts +0 -0
- /package/dist/{components → internal}/icons/Icons.js +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://tera-system-ui/registry-item.schema.json",
|
|
3
|
+
"name": "tabs",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"description": "Tabbed content panels (line + iOS variants).",
|
|
6
|
+
"recipe": "src/lib/components/tabs/Tabs.recipe.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"path": "src/lib/components/tabs/components/Tabs.svelte",
|
|
10
|
+
"target": "components/Tabs.svelte",
|
|
11
|
+
"type": "svelte",
|
|
12
|
+
"content": "<script lang=\"ts\">\n import {Tabs as TabsPrimitive} from 'bits-ui';\n import {type TabsProps, tabsRecipe} from '../Tabs.recipe.js';\n import {setTabsContext} from '../Tabs.svelte.js';\n\n let {\n children,\n // Default to '' (not undefined) so an uncontrolled <Tabs> (no value /\n // bind:value) doesn't bind `undefined` into bits-ui's value, which has a\n // fallback — that combination throws `props_invalid_value` in Svelte 5.\n value = $bindable(''),\n class: className,\n variant = 'line',\n onchange,\n activationMode,\n orientation = 'horizontal',\n loop,\n ...props\n }: TabsProps = $props();\n\n // Pass getter objects so consumers read the current value reactively\n setTabsContext({\n get variant() { return variant; },\n get orientation() { return orientation; }\n });\n\n const r = $derived(tabsRecipe({variant, orientation}));\n</script>\n\n<TabsPrimitive.Root\n bind:value\n onValueChange={onchange}\n {activationMode}\n {orientation}\n {loop}\n class={r.root({class: className})}\n {...props}\n>\n {@render children?.()}\n</TabsPrimitive.Root>\n"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "src/lib/components/tabs/components/TabsContent.svelte",
|
|
16
|
+
"target": "components/TabsContent.svelte",
|
|
17
|
+
"type": "svelte",
|
|
18
|
+
"content": "<script lang=\"ts\">\n import {Tabs as TabsPrimitive} from 'bits-ui';\n import {tabsRecipe, type TabsContentProps} from '../Tabs.recipe.js';\n\n let {\n children,\n class: className,\n value,\n ref = $bindable(null),\n ...props\n }: TabsContentProps = $props();\n\n const r = tabsRecipe();\n</script>\n\n<TabsPrimitive.Content\n bind:ref\n {value}\n class={r.content({class: className})}\n {...props}\n>\n {@render children?.()}\n</TabsPrimitive.Content>\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "src/lib/components/tabs/components/TabsItem.svelte",
|
|
22
|
+
"target": "components/TabsItem.svelte",
|
|
23
|
+
"type": "svelte",
|
|
24
|
+
"content": "<script lang=\"ts\">\n import {Tabs as TabsPrimitive} from 'bits-ui';\n import {tabsRecipe, type TabsItemProps} from '../Tabs.recipe.js';\n import {getTabsContext} from '../Tabs.svelte.js';\n\n let {\n children,\n class: className,\n value,\n ref = $bindable(null),\n ...props\n }: TabsItemProps = $props();\n\n const ctx = getTabsContext();\n const variant = $derived(ctx.variant);\n const orientation = $derived(ctx.orientation);\n\n const r = $derived(tabsRecipe({variant, orientation}));\n</script>\n\n<TabsPrimitive.Trigger\n bind:ref\n {value}\n class={r.trigger({class: className})}\n {...props}\n>\n {@render children?.()}\n</TabsPrimitive.Trigger>\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "src/lib/components/tabs/components/TabsList.svelte",
|
|
28
|
+
"target": "components/TabsList.svelte",
|
|
29
|
+
"type": "svelte",
|
|
30
|
+
"content": "<script lang=\"ts\">\n import {Tabs as TabsPrimitive} from 'bits-ui';\n import {tabsRecipe, type TabsListProps} from '../Tabs.recipe.js';\n import {getTabsContext} from '../Tabs.svelte.js';\n\n let {\n children,\n class: className,\n indicatorClass,\n ref = $bindable(null),\n ...props\n }: TabsListProps = $props();\n\n const ctx = getTabsContext();\n const variant = $derived(ctx.variant);\n const orientation = $derived(ctx.orientation);\n const isVertical = $derived(orientation === 'vertical');\n\n const r = $derived(tabsRecipe({variant, orientation}));\n\n let tabsList = $state<HTMLElement | null>(null);\n let tabIndicator = $state<HTMLElement | null>(null);\n\n function updateIndicator() {\n if (!tabsList || !tabIndicator) return;\n const active = tabsList.querySelector('[data-state=\"active\"]') as HTMLElement | null;\n if (!active) return;\n const containerRect = tabsList.getBoundingClientRect();\n const rect = active.getBoundingClientRect();\n if (isVertical) {\n tabIndicator.style.top = `${rect.top - containerRect.top}px`;\n tabIndicator.style.height = `${rect.height}px`;\n tabIndicator.style.left = '';\n tabIndicator.style.width = '';\n } else {\n tabIndicator.style.left = `${rect.left - containerRect.left}px`;\n tabIndicator.style.width = `${rect.width}px`;\n tabIndicator.style.top = '';\n tabIndicator.style.height = '';\n }\n }\n\n $effect(() => {\n if (!tabsList) return;\n\n // Initial position (rAF lets the browser settle before measuring)\n requestAnimationFrame(updateIndicator);\n\n // React to BitsUI's data-state attribute changes on trigger buttons\n const mo = new MutationObserver(() => requestAnimationFrame(updateIndicator));\n mo.observe(tabsList, {attributes: true, attributeFilter: ['data-state'], subtree: true});\n\n // Reposition on container resize (e.g. responsive layout shift)\n const ro = new ResizeObserver(() => requestAnimationFrame(updateIndicator));\n ro.observe(tabsList);\n\n return () => {\n mo.disconnect();\n ro.disconnect();\n };\n });\n</script>\n\n<TabsPrimitive.List\n bind:ref={tabsList}\n class={r.list({class: className})}\n {...props}\n>\n {@render children?.()}\n <div\n bind:this={tabIndicator}\n class={r.indicator({class: indicatorClass})}\n ></div>\n</TabsPrimitive.List>\n"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "src/lib/components/tabs/index.ts",
|
|
34
|
+
"target": "index.ts",
|
|
35
|
+
"type": "ts",
|
|
36
|
+
"content": "export {default as Tabs} from './components/Tabs.svelte'\nexport {default as TabsList} from './components/TabsList.svelte'\nexport {default as TabsItem} from './components/TabsItem.svelte'\nexport {default as TabsContent} from './components/TabsContent.svelte'\n\nexport {tabsRecipe} from './Tabs.recipe'\nexport type {TabsProps, TabsListProps, TabsItemProps, TabsContentProps, TabsRecipeProps, TabsVariant} from './Tabs.recipe'\n"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"path": "src/lib/components/tabs/Tabs.recipe.ts",
|
|
40
|
+
"target": "Tabs.recipe.ts",
|
|
41
|
+
"type": "recipe",
|
|
42
|
+
"content": "/**\n * Tabs recipe — the canonical styled layer for the base design language.\n *\n * Tabbed content panels built on the BitsUI Tabs primitive (root / list /\n * trigger / content). The tabs are a multi-part component, so the recipe is\n * SLOTTED: each visible part gets a named slot (root, list, trigger, content,\n * indicator) that an app can target independently when extending with\n * `tv({ extend: tabsRecipe, ... })` in typed code.\n *\n * Two visual styles are expressed as a `variant` variant — `line` (underline /\n * accent-bar indicator) and `ios` (segmented control with a sliding pill). The\n * `line` style also adapts to `orientation` (the indicator moves to the right\n * edge when vertical). All of these were previously if/else branches in the\n * markup; no class is lost.\n *\n * Restyle-internals (the lighter rung): the per-component CSS var below\n * (--tera-tabs-radius) lets a theme/app retune the iOS segmented container's\n * corner radius with no code change; it defaults to the global axis token via\n * an inline fallback. See docs/ARCHITECTURE.md for the worked extend example\n * (kept out of this JSDoc so the llms doc generator doesn't grep its tokens).\n */\nimport {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\n\nexport type TabsVariant = 'line' | 'ios';\n\nexport const tabsRecipe = tv({\n slots: {\n root: 'max-h-full gap-2',\n list: 'relative flex',\n trigger: 'outline-none focus-visible:shadow-focus',\n content: 'overflow-auto',\n indicator: 'absolute pointer-events-none',\n },\n variants: {\n variant: {\n line: {\n trigger: 'tab-button font-semibold px-2.5 py-1.5 rounded text-text-secondary hover:text-primary-token-4 hover:bg-surface-hover transition-[color,background-color] ease-ui duration-[var(--tera-duration-fast)] data-[state=active]:text-primary-token-7',\n indicator: 'rounded-full bg-primary-token-5',\n },\n ios: {\n list: 'bg-neutral-token-3 p-1 rounded-[var(--tera-tabs-radius,var(--tera-radius-lg))]',\n trigger: 'relative z-10 flex-1 px-4 py-1.5 text-sm font-semibold text-center rounded-full select-none text-text-secondary data-[state=active]:text-text-primary transition-colors ease-ui duration-[var(--tera-duration-fast)]',\n indicator: 'inset-y-1 rounded-md bg-surface shadow-sm transition-[left,width] duration-[var(--tera-duration-base)] ease-spring',\n },\n },\n orientation: {\n horizontal: {\n root: 'grid grid-rows-[auto_1fr]',\n },\n vertical: {\n root: 'grid grid-cols-[auto_1fr]',\n },\n },\n },\n compoundVariants: [\n // Default horizontal line style: bottom border + underline indicator\n {\n variant: 'line',\n orientation: 'horizontal',\n class: {\n list: 'gap-2 items-end border-b border-border-default',\n indicator: 'bottom-0 h-0.5 transition-[left,width] duration-[var(--tera-duration-fast)] ease-ui',\n },\n },\n // Vertical line style: right-side accent bar indicator\n {\n variant: 'line',\n orientation: 'vertical',\n class: {\n list: 'flex-col gap-1 border-r border-border-default',\n indicator: 'right-0 w-0.5 transition-[top,height] duration-[var(--tera-duration-fast)] ease-ui',\n },\n },\n ],\n defaultVariants: {\n variant: 'line',\n orientation: 'horizontal',\n },\n});\n\nexport type TabsRecipeProps = VariantProps<typeof tabsRecipe>;\n\nexport interface TabsProps {\n children?: Snippet;\n /** Currently active tab value. Bindable. */\n value?: string;\n /** Called when the active tab changes. */\n onchange?: (newTab: string) => void;\n /** Additional CSS classes for the root element. */\n class?: string;\n /** Visual style of the tab list. */\n variant?: TabsVariant;\n /**\n * How tabs activate on keyboard focus.\n * - 'automatic': tab content switches immediately when a tab receives focus.\n * - 'manual': the user must press Enter or Space to activate a focused tab.\n */\n activationMode?: 'automatic' | 'manual';\n /**\n * Orientation of the tab list.\n * 'vertical' renders the list as a column alongside the content.\n * Only supported with the 'line' variant.\n */\n orientation?: 'horizontal' | 'vertical';\n /** Whether keyboard navigation wraps from the last tab back to the first. */\n loop?: boolean;\n /** Bindable reference to the root element. */\n ref?: HTMLDivElement | null;\n [key: string]: unknown;\n}\n\nexport interface TabsListProps {\n children?: Snippet;\n /** Additional CSS classes for the tab list container. */\n class?: string;\n /** Additional CSS classes for the moving active-tab indicator. */\n indicatorClass?: string;\n ref?: HTMLElement | null;\n [key: string]: unknown;\n}\n\nexport interface TabsItemProps {\n children?: Snippet;\n /** The value this tab represents — must match a TabsContent value. */\n value: string;\n /** Prevents the user from activating this tab. */\n disabled?: boolean;\n /** Additional CSS classes for the tab trigger. */\n class?: string;\n ref?: HTMLElement | null;\n [key: string]: unknown;\n}\n\nexport interface TabsContentProps {\n children?: Snippet;\n /** The value this content panel corresponds to — must match a TabsItem value. */\n value: string;\n /** Additional CSS classes for the content panel. */\n class?: string;\n ref?: HTMLElement | null;\n [key: string]: unknown;\n}\n"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"path": "src/lib/components/tabs/Tabs.svelte.ts",
|
|
46
|
+
"target": "Tabs.svelte.ts",
|
|
47
|
+
"type": "ts",
|
|
48
|
+
"content": "/**\n * @component Tabs - Tabbed content panels with line and iOS segmented variants.\n * Parts: Tabs, TabsList, TabsItem, TabsContent.\n * Built on BitsUI Tabs primitive.\n *\n * This module holds the runtime context only. Styling and the Props interfaces\n * live in ./Tabs.recipe.ts.\n */\nimport {getContext, setContext} from \"svelte\";\nimport type {TabsVariant} from \"./Tabs.recipe.js\";\n\nexport type {TabsVariant} from \"./Tabs.recipe.js\";\n\nexport type TabsContext = {\n readonly variant: TabsVariant;\n readonly orientation: 'horizontal' | 'vertical';\n};\n\nconst TABS_CTX = 'tera-tabs-ctx';\n\nexport const setTabsContext = (ctx: TabsContext) => setContext(TABS_CTX, ctx);\nexport const getTabsContext = (): TabsContext => getContext<TabsContext>(TABS_CTX) ?? { variant: 'line', orientation: 'horizontal' };\n"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"dependencies": [
|
|
52
|
+
"bits-ui",
|
|
53
|
+
"tailwind-variants"
|
|
54
|
+
],
|
|
55
|
+
"peerDependencies": [
|
|
56
|
+
"svelte"
|
|
57
|
+
],
|
|
58
|
+
"registryDependencies": [],
|
|
59
|
+
"sharedModules": {
|
|
60
|
+
"utils": false,
|
|
61
|
+
"icons": false,
|
|
62
|
+
"hooks": false
|
|
63
|
+
},
|
|
64
|
+
"exports": [
|
|
65
|
+
"Tabs",
|
|
66
|
+
"TabsList",
|
|
67
|
+
"TabsItem",
|
|
68
|
+
"TabsContent",
|
|
69
|
+
"tabsRecipe"
|
|
70
|
+
]
|
|
71
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://tera-system-ui/registry-item.schema.json",
|
|
3
|
+
"name": "text-area",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"description": "Multi-line text input with auto-resize.",
|
|
6
|
+
"recipe": "src/lib/components/text-area/TextArea.recipe.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"path": "src/lib/components/text-area/index.ts",
|
|
10
|
+
"target": "index.ts",
|
|
11
|
+
"type": "ts",
|
|
12
|
+
"content": "export {default as TextArea} from './TextArea.svelte'\nexport {textAreaRecipe} from './TextArea.recipe'\nexport type {TextAreaProps, AutoSizeConfig, TextAreaRecipeProps} from './TextArea.recipe'\n"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "src/lib/components/text-area/TextArea.recipe.ts",
|
|
16
|
+
"target": "TextArea.recipe.ts",
|
|
17
|
+
"type": "recipe",
|
|
18
|
+
"content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\nimport type {HTMLTextareaAttributes} from \"svelte/elements\";\n\n/**\n * TextArea recipe — the canonical styled layer for the base design language.\n *\n * Multi-part component, so it slots: `root` (positioning wrapper), `field`\n * (the textarea itself, which carries every variant/state), and `clear` (the\n * optional clear-button affordance). An app owns its look by extending this\n * recipe with `tv({ extend: textAreaRecipe, ... })` in typed code — base\n * sizing and states are inherited; only the design language changes. See\n * 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 *\n * Restyle-internals (the lighter rung): the per-component CSS var below\n * (--tera-textarea-radius) lets a theme/app retune the corner radius with no\n * code change; it defaults to a global axis token in tera-ui-base.css.\n */\nexport const textAreaRecipe = tv({\n slots: {\n root: 'relative w-full',\n field: 'w-full inline-flex items-start rounded-[var(--tera-textarea-radius,var(--tera-radius-base))] outline-none font-normal text-text-primary placeholder:text-text-tertiary resize-y transition-[border-color,box-shadow,background-color,height] ease-ui duration-[var(--tera-duration-fast)]',\n clear: 'absolute top-2 right-2 text-neutral-token-7 hover:text-neutral-token-10 transition-colors z-10',\n },\n variants: {\n variant: {\n outlined: {\n field: 'border border-border-default bg-surface hover:border-border-strong focus:border-interactive focus:shadow-focus',\n },\n filled: {\n field: 'bg-surface-sunken border border-transparent shadow-[inset_0_1px_2px_rgba(15,23,42,0.05)] hover:bg-surface-hover focus:bg-surface focus:border-interactive focus:shadow-focus',\n },\n borderless: {\n field: 'bg-transparent border-0 hover:bg-surface-raised focus:bg-surface-raised',\n },\n },\n disabled: {\n true: {\n field: 'cursor-not-allowed bg-surface-sunken text-text-disabled border-border-default resize-none',\n },\n false: {\n field: 'cursor-text',\n },\n },\n size: {\n sm: {field: 'px-[var(--tera-control-px-md)] py-1 text-sm min-h-[60px]'},\n md: {field: 'px-[var(--tera-control-px-md)] py-1.5 text-sm min-h-[80px]'},\n lg: {field: 'px-[var(--tera-control-px-md)] py-2 text-base min-h-[100px]'},\n },\n allowClear: {\n true: {field: 'pr-9'},\n },\n status: {\n error: {\n field: 'border-error-default hover:border-error-hover focus:border-error-default focus:shadow-focus-error',\n },\n warning: {\n field: 'border-warning-default hover:border-warning-hover focus:border-warning-default focus:shadow-focus-warning',\n },\n },\n },\n compoundVariants: [\n {\n variant: 'outlined',\n disabled: true,\n class: {field: 'hover:border-border-default'},\n },\n {\n variant: 'filled',\n disabled: true,\n class: {field: 'hover:bg-surface-sunken'},\n },\n {\n variant: 'borderless',\n disabled: true,\n class: {field: 'hover:bg-transparent'},\n },\n ],\n defaultVariants: {\n variant: 'outlined',\n size: 'md',\n },\n});\n\nexport type TextAreaRecipeProps = VariantProps<typeof textAreaRecipe>;\n\nexport type AutoSizeConfig = boolean | {\n minRows?: number,\n maxRows?: number,\n}\n\nexport interface TextAreaProps extends Omit<HTMLTextareaAttributes, 'disabled' | 'rows' | 'prefix'>, TextAreaRecipeProps {\n children?: Snippet;\n class?: string;\n value?: string;\n ref?: HTMLTextAreaElement | null;\n autoSize?: AutoSizeConfig;\n rows?: number;\n allowClear?: boolean;\n showCount?: boolean;\n maxLength?: number;\n /** Replace the default clear icon (IconX) with custom markup (structural seam). */\n clearIcon?: Snippet;\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "src/lib/components/text-area/TextArea.svelte",
|
|
22
|
+
"target": "TextArea.svelte",
|
|
23
|
+
"type": "svelte",
|
|
24
|
+
"content": "<script lang=\"ts\">\n import {type AutoSizeConfig, type TextAreaProps, textAreaRecipe} from \"./TextArea.recipe\";\n import {IconX} from \"$lib/internal/icons\";\n import type {Attachment} from \"svelte/attachments\";\n\n let {\n children,\n class: className,\n value = $bindable(),\n ref = $bindable(),\n size = 'md',\n disabled,\n variant = 'outlined',\n autoSize,\n rows,\n allowClear,\n showCount,\n maxLength,\n status,\n clearIcon,\n ...props\n }: TextAreaProps = $props();\n\n let textLength = $derived(value?.length || 0);\n\n const r = $derived(textAreaRecipe({ variant, disabled, size, allowClear, status }));\n\n function autoSizeAttachment(autoSize?: AutoSizeConfig): Attachment<HTMLTextAreaElement> {\n return (node) => {\n if (!autoSize) {\n return;\n }\n let minRows: number | null = null;\n let maxRows: number | null = null;\n if (autoSize === true) {\n minRows = 1;\n } else {\n minRows = Math.max(autoSize.minRows || 0, 1);\n maxRows = autoSize.maxRows || null;\n }\n\n const updateSize = () => {\n node.style.height = 'auto';\n const computedStyle = window.getComputedStyle(node);\n const borderTopWidth = parseFloat(computedStyle.borderTopWidth);\n const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);\n const offset = borderTopWidth + borderBottomWidth;\n const scrollHeight = node.scrollHeight;\n\n const lineHeight = parseFloat(computedStyle.lineHeight);\n const minHeight = minRows! * lineHeight + offset;\n const maxHeight = maxRows ? maxRows * lineHeight : null;\n\n node.style.height = `${Math.max(minHeight, Math.min(scrollHeight, maxHeight ?? scrollHeight))}px`;\n };\n\n // Re-run whenever `value` changes (read it to register the dependency).\n value;\n updateSize();\n };\n }\n\n function clearText() {\n value = '';\n ref?.focus();\n }\n</script>\n\n<div class={r.root()}>\n <textarea\n bind:this={ref}\n {@attach autoSizeAttachment(autoSize)}\n style={autoSize ? \"resize: none; transition-property: border-color, box-shadow, background-color;\" : ''}\n class={r.field({ class: className })}\n {disabled}\n rows={autoSize ? 1 : rows}\n maxlength={maxLength}\n {...props}\n bind:value\n ></textarea>\n\n {#if allowClear && value && !disabled}\n <button\n type=\"button\"\n onclick={clearText}\n class={r.clear()}\n tabindex=\"-1\"\n >\n {#if clearIcon}\n {@render clearIcon()}\n {:else}\n <IconX class=\"size-3.5\"/>\n {/if}\n </button>\n {/if}\n\n {#if showCount}\n <div class=\"absolute bottom-1 right-2 text-xs text-neutral-token-7 pointer-events-none\">\n {textLength}{#if maxLength}/{maxLength}{/if}\n </div>\n {/if}\n</div>\n"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"tailwind-variants"
|
|
29
|
+
],
|
|
30
|
+
"peerDependencies": [
|
|
31
|
+
"svelte"
|
|
32
|
+
],
|
|
33
|
+
"registryDependencies": [],
|
|
34
|
+
"sharedModules": {
|
|
35
|
+
"utils": false,
|
|
36
|
+
"icons": true,
|
|
37
|
+
"hooks": false
|
|
38
|
+
},
|
|
39
|
+
"exports": [
|
|
40
|
+
"TextArea",
|
|
41
|
+
"textAreaRecipe"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://tera-system-ui/registry-item.schema.json",
|
|
3
|
+
"name": "toast",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"description": "",
|
|
6
|
+
"recipe": null,
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"path": "src/lib/components/toast/index.ts",
|
|
10
|
+
"target": "index.ts",
|
|
11
|
+
"type": "ts",
|
|
12
|
+
"content": "export {default as ToastContainer} from './ToastContainer.svelte'\nexport {toast} from './toast.svelte.js'\nexport type {ToastItem, ToastVariant} from './toast.svelte.js'\n"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "src/lib/components/toast/toast.svelte.ts",
|
|
16
|
+
"target": "toast.svelte.ts",
|
|
17
|
+
"type": "ts",
|
|
18
|
+
"content": "export type ToastVariant = 'success' | 'error' | 'info' | 'warning';\n\nexport interface ToastItem {\n id: string;\n variant: ToastVariant;\n message: string;\n description?: string;\n duration?: number;\n action?: { label: string; onclick: () => void };\n}\n\nlet items: ToastItem[] = $state([]);\n\nfunction add(variant: ToastVariant, message: string, opts: Omit<ToastItem, 'id' | 'variant' | 'message'> = {}) {\n const id = crypto.randomUUID();\n const item: ToastItem = { id, variant, message, duration: 4000, ...opts };\n items = [...items.slice(-2), item];\n setTimeout(() => remove(id), item.duration);\n}\n\nfunction remove(id: string) {\n items = items.filter(t => t.id !== id);\n}\n\nexport const toast = {\n get items() { return items; },\n success: (msg: string, opts?: Omit<ToastItem, 'id' | 'variant' | 'message'>) => add('success', msg, opts),\n error: (msg: string, opts?: Omit<ToastItem, 'id' | 'variant' | 'message'>) => add('error', msg, opts),\n info: (msg: string, opts?: Omit<ToastItem, 'id' | 'variant' | 'message'>) => add('info', msg, opts),\n warning: (msg: string, opts?: Omit<ToastItem, 'id' | 'variant' | 'message'>) => add('warning', msg, opts),\n remove,\n};\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "src/lib/components/toast/ToastContainer.svelte",
|
|
22
|
+
"target": "ToastContainer.svelte",
|
|
23
|
+
"type": "svelte",
|
|
24
|
+
"content": "<script lang=\"ts\">\n import {toast, type ToastVariant} from './toast.svelte.js';\n\n // Status carried by a leading icon-chip (matches the redesigned Alert), not a\n // side-stripe bar. Semantic -default/-text tokens so tones stay dark-safe.\n const chipColor: Record<ToastVariant, string> = {\n success: 'bg-success-default/15 text-success-text',\n error: 'bg-error-default/15 text-error-text',\n info: 'bg-information-default/15 text-information-text',\n warning: 'bg-warning-default/15 text-warning-text',\n };\n\n const iconSymbol: Record<ToastVariant, string> = {\n success: '✓', error: '✕', info: 'ℹ', warning: '⚠',\n };\n</script>\n\n<div\n aria-live=\"polite\"\n aria-label=\"Notifications\"\n class=\"fixed bottom-4 right-4 z-[60] flex flex-col gap-2 max-sm:right-1/2 max-sm:translate-x-1/2\"\n>\n {#each toast.items as item (item.id)}\n <div\n class=\"flex items-start gap-3 min-w-[280px] max-w-sm p-3 bg-surface-raised rounded-[var(--tera-toast-radius,var(--border-radius-container))] shadow-lg border border-border-default animate-in slide-in-from-bottom-4 fade-in duration-[var(--tera-duration-slow)] ease-spring\"\n >\n <span class=\"shrink-0 grid place-items-center size-5 rounded-full text-[11px] font-bold leading-none mt-px {chipColor[item.variant]}\" aria-hidden=\"true\">{iconSymbol[item.variant]}</span>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-semibold text-text-primary\">{item.message}</p>\n {#if item.description}\n <p class=\"text-sm text-text-secondary mt-0.5\">{item.description}</p>\n {/if}\n {#if item.action}\n <button\n class=\"mt-1.5 text-xs font-semibold text-interactive hover:text-interactive-hover hover:underline transition-colors duration-[var(--tera-duration-fast)] ease-ui\"\n onclick={item.action.onclick}\n >{item.action.label}</button>\n {/if}\n </div>\n <button\n type=\"button\"\n class=\"shrink-0 -m-1.5 p-2.5 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-hover focus-visible:shadow-focus transition-colors duration-[var(--tera-duration-fast)] ease-ui\"\n onclick={() => toast.remove(item.id)}\n aria-label=\"Close\"\n >\n <svg class=\"size-3.5\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M2 2l10 10M12 2l-10 10\"/>\n </svg>\n </button>\n </div>\n {/each}\n</div>\n"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [],
|
|
28
|
+
"peerDependencies": [
|
|
29
|
+
"svelte"
|
|
30
|
+
],
|
|
31
|
+
"registryDependencies": [],
|
|
32
|
+
"sharedModules": {
|
|
33
|
+
"utils": false,
|
|
34
|
+
"icons": false,
|
|
35
|
+
"hooks": false
|
|
36
|
+
},
|
|
37
|
+
"exports": [
|
|
38
|
+
"ToastContainer",
|
|
39
|
+
"toast"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://tera-system-ui/registry-item.schema.json",
|
|
3
|
+
"name": "tooltip",
|
|
4
|
+
"type": "registry:component",
|
|
5
|
+
"description": "Floating tooltip shown on hover/focus.",
|
|
6
|
+
"recipe": "src/lib/components/tooltip/Tooltip.recipe.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"path": "src/lib/components/tooltip/index.ts",
|
|
10
|
+
"target": "index.ts",
|
|
11
|
+
"type": "ts",
|
|
12
|
+
"content": "export {default as Tooltip} from './Tooltip.svelte'\nexport {tooltipRecipe} from './Tooltip.recipe'\nexport type {TooltipProps, TooltipRecipeProps} from './Tooltip.recipe'\n"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "src/lib/components/tooltip/Tooltip.recipe.ts",
|
|
16
|
+
"target": "Tooltip.recipe.ts",
|
|
17
|
+
"type": "recipe",
|
|
18
|
+
"content": "import {tv, type VariantProps} from \"tailwind-variants\";\nimport type {Snippet} from \"svelte\";\n\n/**\n * Tooltip recipe — the canonical styled layer for the base design language.\n *\n * Multi-part component (built on bits-ui Tooltip): the recipe is slotted by role\n * — trigger (the inline wrapper around the trigger element), content (the\n * floating panel) and arrow (the pointer). An app restyles any part\n * independently by extending with `tv({ extend: tooltipRecipe, ... })` in typed\n * code; base layout, animation and color states are inherited.\n *\n * Restyle-internals (the lighter rung): the per-component CSS var below\n * (--tera-tooltip-radius) lets a theme/app retune corner radius with no code\n * change; it defaults to the global axis token via an inline fallback. 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 tooltipRecipe = tv({\n slots: {\n trigger: 'inline-flex',\n content: `z-50 max-w-[220px] px-2.5 py-1.5 text-xs leading-snug font-mono font-medium tracking-tight rounded-[var(--tera-tooltip-radius,var(--tera-radius-sm))]\n bg-neutral-token-13 text-neutral-token-1 shadow-lg\n animate-in fade-in zoom-in-95 duration-[var(--tera-duration-fast)] ease-ui\n data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:zoom-out-95`,\n arrow: 'text-neutral-token-13',\n },\n});\n\nexport type TooltipRecipeProps = VariantProps<typeof tooltipRecipe>;\n\n/**\n * @component Tooltip - Floating label shown on hover or keyboard focus.\n * Built on BitsUI Tooltip primitive with portal rendering.\n */\nexport interface TooltipProps {\n /** Tooltip content — a plain string or a Svelte snippet for rich markup. */\n content: string | Snippet;\n /** Which side of the trigger the tooltip appears on. */\n side?: 'top' | 'bottom' | 'left' | 'right';\n /** Alignment of the tooltip along the chosen side. */\n align?: 'start' | 'center' | 'end';\n /** Distance in pixels between the trigger element and the tooltip panel. */\n sideOffset?: number;\n /** Delay in milliseconds before the tooltip appears after hover/focus. */\n delay?: number;\n /** Prevents the tooltip from ever opening. */\n disabled?: boolean;\n /** The element that triggers the tooltip on hover/focus. */\n children?: Snippet;\n /** Additional CSS classes for the trigger wrapper span. */\n class?: string;\n /** Replace the default pointer arrow with custom markup (structural seam). */\n arrow?: Snippet;\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "src/lib/components/tooltip/Tooltip.svelte",
|
|
22
|
+
"target": "Tooltip.svelte",
|
|
23
|
+
"type": "svelte",
|
|
24
|
+
"content": "<script lang=\"ts\">\n import {Tooltip as TooltipPrimitive} from 'bits-ui';\n import {tooltipRecipe, type TooltipProps} from './Tooltip.recipe.js';\n\n let {\n content,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n delay = 500,\n disabled,\n children,\n arrow,\n class: className = '',\n }: TooltipProps = $props();\n\n const r = tooltipRecipe();\n</script>\n\n<TooltipPrimitive.Provider delayDuration={delay}>\n <TooltipPrimitive.Root {disabled}>\n <TooltipPrimitive.Trigger class={r.trigger({class: className})}>\n {@render children?.()}\n </TooltipPrimitive.Trigger>\n\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n {side}\n {align}\n {sideOffset}\n class={r.content()}\n >\n {#if typeof content === 'string'}\n {content}\n {:else}\n {@render content()}\n {/if}\n {#if arrow}\n {@render arrow()}\n {:else}\n <TooltipPrimitive.Arrow class={r.arrow()} />\n {/if}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n</TooltipPrimitive.Provider>\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
|
+
"Tooltip",
|
|
42
|
+
"tooltipRecipe"
|
|
43
|
+
]
|
|
44
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
|
|
4
4
|
import path from "path";
|
|
@@ -109,28 +109,11 @@ function findFilesByPattern(folderPath, namePattern) {
|
|
|
109
109
|
const baseLib = './src/lib'
|
|
110
110
|
const GLOBAL_INDEX_PATH = baseLib + "/index.ts"
|
|
111
111
|
const COMPONENTS_PATH = baseLib + "/components"
|
|
112
|
-
const ICON_COMPONENTS_PATH = baseLib + "/components/icons"
|
|
113
112
|
|
|
114
|
-
const iconComponentsFileList = findFilesByPattern(ICON_COMPONENTS_PATH, /^Icon\w*\.svelte$/);
|
|
115
|
-
|
|
116
|
-
// generate icon index
|
|
117
|
-
const importSvelteComponentTemplate = `export {default as Component} from './Component.svelte'`;
|
|
118
113
|
const importComponentTemplate = `export {Component} from 'path'`;
|
|
119
114
|
const importTypeTemplate = `export type {Types} from 'path'`;
|
|
120
115
|
|
|
121
116
|
|
|
122
|
-
(() => {
|
|
123
|
-
let content = ''
|
|
124
|
-
iconComponentsFileList.forEach(file => {
|
|
125
|
-
let componentName = file.replace('.svelte', '')
|
|
126
|
-
content += importSvelteComponentTemplate.replaceAll('Component', componentName);
|
|
127
|
-
content += `\n`
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
fs.writeFileSync(ICON_COMPONENTS_PATH + '/index.ts', content, 'utf8');
|
|
131
|
-
})();
|
|
132
|
-
|
|
133
|
-
|
|
134
117
|
(() => {
|
|
135
118
|
const indexFileList = findIndexFiles(COMPONENTS_PATH);
|
|
136
119
|
let componentContent = ''
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* tera-ui — the consumer generator (rung 3, "own the styled layer").
|
|
4
|
+
* See docs/ARCHITECTURE.md → "Generator contract".
|
|
5
|
+
*
|
|
6
|
+
* tera-ui list List available components in the registry
|
|
7
|
+
* tera-ui info <name> Show a component's manifest summary
|
|
8
|
+
* tera-ui add <name...> Copy component(s) + their tera deps into your app
|
|
9
|
+
* tera-ui diff [name] Show drift between your owned copies and the registry
|
|
10
|
+
*
|
|
11
|
+
* Run inside a CONSUMER app. Configure once via ./components.json:
|
|
12
|
+
* {
|
|
13
|
+
* "componentsDir": "src/lib/ui", // where owned components are written
|
|
14
|
+
* "alias": "$lib/ui", // import alias that maps to componentsDir
|
|
15
|
+
* "packageName": "tera-system-ui" // the installed package name (for shared imports)
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* Files are copied with imports rewritten so the consumer owns the styling/markup
|
|
19
|
+
* while still importing the shared token contract, utils, icons and headless bits
|
|
20
|
+
* from the installed package. Edit them freely; `diff` surfaces upstream changes.
|
|
21
|
+
*/
|
|
22
|
+
import fs from 'fs';
|
|
23
|
+
import path from 'path';
|
|
24
|
+
import { fileURLToPath } from 'url';
|
|
25
|
+
|
|
26
|
+
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
27
|
+
const REGISTRY = path.join(HERE, '..', 'registry');
|
|
28
|
+
const CWD = process.cwd();
|
|
29
|
+
|
|
30
|
+
const C = { dim: s => `\x1b[2m${s}\x1b[0m`, b: s => `\x1b[1m${s}\x1b[0m`, g: s => `\x1b[32m${s}\x1b[0m`, y: s => `\x1b[33m${s}\x1b[0m`, r: s => `\x1b[31m${s}\x1b[0m` };
|
|
31
|
+
|
|
32
|
+
function die(msg) { console.error(C.r('✖ ') + msg); process.exit(1); }
|
|
33
|
+
function readJSON(fp) { try { return JSON.parse(fs.readFileSync(fp, 'utf8')); } catch { return null; } }
|
|
34
|
+
|
|
35
|
+
function loadRegistryIndex() {
|
|
36
|
+
const idx = readJSON(path.join(REGISTRY, 'index.json'));
|
|
37
|
+
if (!idx) die(`registry not found at ${REGISTRY}. Run \`npm run generate-registry\` in the library, or reinstall the package.`);
|
|
38
|
+
return idx;
|
|
39
|
+
}
|
|
40
|
+
function loadManifest(name) {
|
|
41
|
+
const m = readJSON(path.join(REGISTRY, `${name}.json`));
|
|
42
|
+
if (!m) die(`unknown component "${name}". Run \`tera-ui list\`.`);
|
|
43
|
+
return m;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function loadConfig() {
|
|
47
|
+
const cfg = readJSON(path.join(CWD, 'components.json')) || {};
|
|
48
|
+
return {
|
|
49
|
+
componentsDir: cfg.componentsDir || 'src/lib/ui',
|
|
50
|
+
alias: (cfg.alias || '$lib/ui').replace(/\/$/, ''),
|
|
51
|
+
packageName: cfg.packageName || 'tera-system-ui',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Rewrite a copied file's imports so they resolve in the consumer. */
|
|
56
|
+
function rewriteImports(content, { added, current, cfg }) {
|
|
57
|
+
let out = content;
|
|
58
|
+
// 1. Self-references within this component's dir → relative (sub-components are copied alongside).
|
|
59
|
+
out = out.replace(new RegExp(`(['"])\\$lib/components/${current}/([^'"]+)\\1`, 'g'),
|
|
60
|
+
(_, q, rest) => `${q}./${rest}${q}`);
|
|
61
|
+
// 2. Shared library modules → import from the installed package (not copied).
|
|
62
|
+
out = out.replace(/(['"])\$lib\/utils(\/[^'"]*)?\1/g, (_, q) => `${q}${cfg.packageName}/utils${q}`);
|
|
63
|
+
out = out.replace(/(['"])\$lib\/hooks(\/[^'"]*)?\1/g, (_, q) => `${q}${cfg.packageName}/hooks${q}`);
|
|
64
|
+
out = out.replace(/(['"])\$lib\/(actions|internal|tokens)(\/[^'"]*)?\1/g, (_, q, seg, rest) => `${q}${cfg.packageName}/${seg}${rest || ''}${q}`);
|
|
65
|
+
// 3. Other tera components → owned copy if also added, else the package version.
|
|
66
|
+
out = out.replace(/(['"])\$lib\/components\/([a-z][a-z0-9-]*)(\/[^'"]*)?\1/g, (_, q, dep) => {
|
|
67
|
+
if (added.has(dep)) return `${q}${cfg.alias}/${dep}${q}`;
|
|
68
|
+
return `${q}${cfg.packageName}/${dep}${q}`;
|
|
69
|
+
});
|
|
70
|
+
// 4. Bare `$lib` (package root) → the package name.
|
|
71
|
+
out = out.replace(/(['"])\$lib\1/g, (_, q) => `${q}${cfg.packageName}${q}`);
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Resolve the full set: requested components + transitive tera deps. */
|
|
76
|
+
function resolveSet(names) {
|
|
77
|
+
const set = new Set();
|
|
78
|
+
const visit = (n) => {
|
|
79
|
+
if (set.has(n)) return;
|
|
80
|
+
const m = readJSON(path.join(REGISTRY, `${n}.json`));
|
|
81
|
+
if (!m) { console.warn(C.y(` ! skipping unknown dependency "${n}"`)); return; }
|
|
82
|
+
set.add(n);
|
|
83
|
+
for (const dep of m.registryDependencies || []) {
|
|
84
|
+
visit(dep);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
names.forEach(visit);
|
|
88
|
+
return set;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function cmdList() {
|
|
92
|
+
const idx = loadRegistryIndex();
|
|
93
|
+
console.log(C.b(`\n ${idx.components.length} components available:\n`));
|
|
94
|
+
for (const c of idx.components) {
|
|
95
|
+
const deps = c.registryDependencies?.length ? C.dim(` ← ${c.registryDependencies.join(', ')}`) : '';
|
|
96
|
+
console.log(` ${C.g(c.name.padEnd(22))} ${c.description || ''}${deps}`);
|
|
97
|
+
}
|
|
98
|
+
console.log(C.dim(`\n Add with: tera-ui add <name...>\n`));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function cmdInfo(name) {
|
|
102
|
+
const m = loadManifest(name);
|
|
103
|
+
console.log(C.b(`\n ${m.name}`) + (m.description ? ` — ${m.description}` : ''));
|
|
104
|
+
console.log(` recipe: ${m.recipe ? C.g(path.basename(m.recipe)) : C.dim('none')}`);
|
|
105
|
+
console.log(` files: ${m.files.map(f => f.target).join(', ')}`);
|
|
106
|
+
console.log(` npm deps: ${m.dependencies.length ? m.dependencies.join(', ') : C.dim('none')}`);
|
|
107
|
+
console.log(` tera deps: ${m.registryDependencies.length ? m.registryDependencies.join(', ') : C.dim('none')}`);
|
|
108
|
+
console.log(` shared: ${Object.entries(m.sharedModules).filter(([, v]) => v).map(([k]) => k).join(', ') || C.dim('none')}`);
|
|
109
|
+
console.log(` exports: ${m.exports.join(', ')}\n`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function cmdAdd(names) {
|
|
113
|
+
if (!names.length) die('usage: tera-ui add <name...>');
|
|
114
|
+
const cfg = loadConfig();
|
|
115
|
+
const added = resolveSet(names);
|
|
116
|
+
const npmDeps = new Set(['svelte']);
|
|
117
|
+
let written = 0;
|
|
118
|
+
|
|
119
|
+
for (const name of added) {
|
|
120
|
+
const m = loadManifest(name);
|
|
121
|
+
(m.dependencies || []).forEach(d => npmDeps.add(d));
|
|
122
|
+
const destDir = path.join(CWD, cfg.componentsDir, name);
|
|
123
|
+
for (const file of m.files) {
|
|
124
|
+
const dest = path.join(destDir, file.target);
|
|
125
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
126
|
+
const content = rewriteImports(file.content, { added, current: name, cfg });
|
|
127
|
+
fs.writeFileSync(dest, content, 'utf8');
|
|
128
|
+
written++;
|
|
129
|
+
}
|
|
130
|
+
const viaDep = names.includes(name) ? '' : C.dim(' (dependency)');
|
|
131
|
+
console.log(` ${C.g('+')} ${cfg.componentsDir}/${name}/${viaDep}`);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
console.log(C.b(`\n ${written} files written across ${added.size} component(s).`));
|
|
135
|
+
console.log(` Install peer/npm deps:\n ${C.y('npm i ' + [...npmDeps].join(' '))}`);
|
|
136
|
+
console.log(C.dim(` Import the base token CSS once if you haven't: import '${cfg.packageName}/themes/tera-ui-base';\n`));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function cmdDiff(name) {
|
|
140
|
+
const cfg = loadConfig();
|
|
141
|
+
const idx = loadRegistryIndex();
|
|
142
|
+
const names = name ? [name] : idx.components.map(c => c.name);
|
|
143
|
+
let drift = 0;
|
|
144
|
+
for (const n of names) {
|
|
145
|
+
const m = readJSON(path.join(REGISTRY, `${n}.json`));
|
|
146
|
+
if (!m) continue;
|
|
147
|
+
for (const file of m.files) {
|
|
148
|
+
const owned = path.join(CWD, cfg.componentsDir, n, file.target);
|
|
149
|
+
if (!fs.existsSync(owned)) continue; // not pulled
|
|
150
|
+
const upstream = rewriteImports(file.content, { added: new Set([n]), current: n, cfg });
|
|
151
|
+
const local = fs.readFileSync(owned, 'utf8');
|
|
152
|
+
if (local !== upstream) {
|
|
153
|
+
drift++;
|
|
154
|
+
console.log(` ${C.y('~')} ${cfg.componentsDir}/${n}/${file.target} ${C.dim('differs from registry')}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (!drift) console.log(C.g('\n ✓ no drift — owned components match the registry.\n'));
|
|
159
|
+
else console.log(C.dim(`\n ${drift} file(s) differ. Re-pull with \`tera-ui add\` to overwrite, or keep your edits.\n`));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const [cmd, ...args] = process.argv.slice(2);
|
|
163
|
+
switch (cmd) {
|
|
164
|
+
case 'list': cmdList(); break;
|
|
165
|
+
case 'info': cmdInfo(args[0] || die('usage: tera-ui info <name>')); break;
|
|
166
|
+
case 'add': cmdAdd(args); break;
|
|
167
|
+
case 'diff': cmdDiff(args[0]); break;
|
|
168
|
+
default:
|
|
169
|
+
console.log(`tera-ui — own the styled layer\n\n list list available components\n info <name> show a component manifest\n add <name...> copy components into your app (per components.json)\n diff [name] show drift vs the registry\n`);
|
|
170
|
+
if (cmd && cmd !== 'help' && cmd !== '--help') process.exit(1);
|
|
171
|
+
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @component Accordion - Collapsible content panels with single or multi-open support.
|
|
3
|
-
* Built on BitsUI Accordion primitive with full keyboard navigation.
|
|
4
|
-
*/
|
|
5
|
-
import { type VariantProps } from "tailwind-variants";
|
|
6
|
-
import type { Snippet } from "svelte";
|
|
7
|
-
import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
|
|
8
|
-
export declare const styles: import("tailwind-variants").TVReturnType<{}, undefined, "", {}, undefined, import("tailwind-variants").TVReturnType<{}, undefined, "", unknown, unknown, undefined>>;
|
|
9
|
-
type AccordionVariants = VariantProps<typeof styles>;
|
|
10
|
-
export interface AccordionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onchange'>, AccordionVariants {
|
|
11
|
-
children?: Snippet;
|
|
12
|
-
/** Additional CSS classes for the root element. */
|
|
13
|
-
class?: string;
|
|
14
|
-
/** Whether only one item can be open at a time ('single') or many ('multiple'). */
|
|
15
|
-
type: 'multiple' | 'single';
|
|
16
|
-
/** The currently open item value(s). Bindable. */
|
|
17
|
-
value: string | string[];
|
|
18
|
-
/** Called when the open item(s) change. */
|
|
19
|
-
onchange?: (value: string | string[]) => void;
|
|
20
|
-
/** Use controlled mode — manage value externally and pass it back via onchange. */
|
|
21
|
-
controlledValue?: boolean;
|
|
22
|
-
/** Whether the entire accordion is disabled. */
|
|
23
|
-
disabled?: boolean;
|
|
24
|
-
/** Whether keyboard navigation wraps around at the first/last item. */
|
|
25
|
-
loop?: boolean;
|
|
26
|
-
/** Layout orientation — affects arrow-key navigation direction. */
|
|
27
|
-
orientation?: 'horizontal' | 'vertical';
|
|
28
|
-
/** Bindable reference to the root element. */
|
|
29
|
-
ref?: HTMLDivElement | null;
|
|
30
|
-
}
|
|
31
|
-
export interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
32
|
-
/** Unique identifier for this item — matched against the root `value`. */
|
|
33
|
-
value: string;
|
|
34
|
-
/** Prevents the user from interacting with this specific item. */
|
|
35
|
-
disabled?: boolean;
|
|
36
|
-
ref?: HTMLDivElement | null;
|
|
37
|
-
children?: Snippet;
|
|
38
|
-
}
|
|
39
|
-
export interface AccordionTriggerProps extends HTMLButtonAttributes {
|
|
40
|
-
children?: Snippet;
|
|
41
|
-
ref?: HTMLButtonElement | null;
|
|
42
|
-
}
|
|
43
|
-
export interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
44
|
-
children?: Snippet;
|
|
45
|
-
/**
|
|
46
|
-
* Keep the content mounted in the DOM even when the item is collapsed.
|
|
47
|
-
* Useful for Svelte transitions or preserving internal component state.
|
|
48
|
-
*/
|
|
49
|
-
forceMount?: boolean;
|
|
50
|
-
ref?: HTMLDivElement | null;
|
|
51
|
-
}
|
|
52
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @component Accordion - Collapsible content panels with single or multi-open support.
|
|
3
|
-
* Built on BitsUI Accordion primitive with full keyboard navigation.
|
|
4
|
-
*/
|
|
5
|
-
import { tv } from "tailwind-variants";
|
|
6
|
-
export const styles = tv({
|
|
7
|
-
base: '',
|
|
8
|
-
variants: {},
|
|
9
|
-
compoundVariants: [],
|
|
10
|
-
defaultVariants: {},
|
|
11
|
-
});
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<script lang="ts">let { role, content, avatar, timestamp, status = 'sent', class: className = '', } = $props();
|
|
2
|
-
const isUser = $derived(role === 'user');
|
|
3
|
-
export {};
|
|
4
|
-
</script>
|
|
5
|
-
|
|
6
|
-
<div
|
|
7
|
-
class="flex gap-2 animate-in slide-in-from-bottom-2 fade-in duration-300 ease-spring {isUser ? 'flex-row-reverse' : 'flex-row'} {className}"
|
|
8
|
-
>
|
|
9
|
-
{#if avatar}
|
|
10
|
-
<div class="shrink-0 size-8">{@render avatar()}</div>
|
|
11
|
-
{/if}
|
|
12
|
-
|
|
13
|
-
<div class="flex flex-col gap-1 max-w-[75%] {isUser ? 'items-end' : 'items-start'}">
|
|
14
|
-
<div
|
|
15
|
-
class="px-4 py-2.5 text-sm leading-relaxed {isUser
|
|
16
|
-
? 'bg-interactive-subtle text-text-primary rounded-2xl rounded-br-sm'
|
|
17
|
-
: 'bg-surface-raised text-text-primary rounded-2xl rounded-bl-sm border border-border-default'}"
|
|
18
|
-
>
|
|
19
|
-
{#if typeof content === 'string'}
|
|
20
|
-
{content}
|
|
21
|
-
{:else}
|
|
22
|
-
{@render content()}
|
|
23
|
-
{/if}
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
<div class="flex items-center gap-1.5 text-[10px] text-text-tertiary">
|
|
27
|
-
{#if timestamp}<span>{timestamp}</span>{/if}
|
|
28
|
-
{#if isUser && status === 'sending'}
|
|
29
|
-
<span class="italic">Sending…</span>
|
|
30
|
-
{:else if isUser && status === 'error'}
|
|
31
|
-
<span class="text-error-500">Failed to send</span>
|
|
32
|
-
{/if}
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
|
-
type $$ComponentProps = {
|
|
3
|
-
role: 'user' | 'assistant';
|
|
4
|
-
content: string | Snippet;
|
|
5
|
-
avatar?: Snippet;
|
|
6
|
-
timestamp?: string;
|
|
7
|
-
status?: 'sending' | 'sent' | 'error';
|
|
8
|
-
class?: string;
|
|
9
|
-
};
|
|
10
|
-
declare const ChatBubble: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
-
type ChatBubble = ReturnType<typeof ChatBubble>;
|
|
12
|
-
export default ChatBubble;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<script lang="ts">import ThinkingLoader from './ThinkingLoader.svelte';
|
|
2
|
-
import SuggestionChips from './SuggestionChips.svelte';
|
|
3
|
-
let { value = $bindable(''), onsubmit, placeholder = 'Ask me anything…', maxLength, loading, disabled, suggestions = [], class: className = '', } = $props();
|
|
4
|
-
function handleKeydown(e) {
|
|
5
|
-
if (e.key === 'Enter' && !e.shiftKey && !loading && value.trim()) {
|
|
6
|
-
e.preventDefault();
|
|
7
|
-
submit();
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
function submit() {
|
|
11
|
-
if (!value.trim() || loading)
|
|
12
|
-
return;
|
|
13
|
-
onsubmit?.(value);
|
|
14
|
-
}
|
|
15
|
-
function handleSuggestion(s) {
|
|
16
|
-
value = Array.isArray(s) ? s[0] : s;
|
|
17
|
-
}
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<div class="flex flex-col gap-2 {className}">
|
|
21
|
-
{#if suggestions.length > 0}
|
|
22
|
-
<SuggestionChips {suggestions} onSelect={handleSuggestion} />
|
|
23
|
-
{/if}
|
|
24
|
-
|
|
25
|
-
<div
|
|
26
|
-
class="relative flex items-end gap-2 border rounded bg-surface transition-[border-color,box-shadow] ease-ui duration-150
|
|
27
|
-
{loading ? 'border-interactive shadow-glow' : 'border-border-default focus-within:border-interactive focus-within:shadow-focus'}"
|
|
28
|
-
>
|
|
29
|
-
<textarea
|
|
30
|
-
class="flex-1 resize-none bg-transparent outline-none px-3 py-2.5 text-sm text-text-primary placeholder:text-text-tertiary min-h-[42px] max-h-40"
|
|
31
|
-
{placeholder}
|
|
32
|
-
maxlength={maxLength}
|
|
33
|
-
{disabled}
|
|
34
|
-
bind:value
|
|
35
|
-
onkeydown={handleKeydown}
|
|
36
|
-
rows={1}
|
|
37
|
-
></textarea>
|
|
38
|
-
|
|
39
|
-
<div class="shrink-0 pb-2 pr-2">
|
|
40
|
-
{#if loading}
|
|
41
|
-
<ThinkingLoader size="sm" />
|
|
42
|
-
{:else}
|
|
43
|
-
<button
|
|
44
|
-
type="button"
|
|
45
|
-
class="size-7 rounded-full flex items-center justify-center transition-colors ease-ui duration-150
|
|
46
|
-
{value.trim() ? 'bg-interactive text-interactive-on' : 'bg-surface-hover text-text-tertiary cursor-not-allowed'}"
|
|
47
|
-
onclick={submit}
|
|
48
|
-
disabled={!value.trim() || disabled}
|
|
49
|
-
aria-label="Send"
|
|
50
|
-
>
|
|
51
|
-
<svg class="size-3.5" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
52
|
-
<path d="M7 12V2M2 7l5-5 5 5"/>
|
|
53
|
-
</svg>
|
|
54
|
-
</button>
|
|
55
|
-
{/if}
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|