tera-system-ui 0.1.63 → 0.1.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/COMPONENT_API.md +2 -0
- package/dist/components/accordion/Accordion.d.ts +24 -0
- package/dist/components/accordion/Accordion.js +4 -0
- package/dist/components/accordion/components/Accordion.svelte +2 -8
- package/dist/components/accordion/components/AccordionContent.svelte +5 -12
- package/dist/components/accordion/components/AccordionItem.svelte +3 -9
- package/dist/components/accordion/components/AccordionTrigger.svelte +5 -15
- package/dist/components/ai/ChatBubble.svelte +35 -0
- package/dist/components/ai/ChatBubble.svelte.d.ts +12 -0
- package/dist/components/ai/PromptInput.svelte +58 -0
- package/dist/components/ai/PromptInput.svelte.d.ts +13 -0
- package/dist/components/ai/StreamText.svelte +41 -0
- package/dist/components/ai/StreamText.svelte.d.ts +11 -0
- package/dist/components/ai/SuggestionChips.svelte +34 -0
- package/dist/components/ai/SuggestionChips.svelte.d.ts +10 -0
- package/dist/components/ai/ThinkingLoader.svelte +34 -0
- package/dist/components/ai/ThinkingLoader.svelte.d.ts +11 -0
- package/dist/components/ai/index.d.ts +5 -0
- package/dist/components/ai/index.js +5 -0
- package/dist/components/alert/Alert.svelte +47 -0
- package/dist/components/alert/Alert.svelte.d.ts +15 -0
- package/dist/components/alert/index.d.ts +1 -0
- package/dist/components/alert/index.js +1 -0
- package/dist/components/avatar/Avatar.svelte +9 -25
- package/dist/components/badge/Badge.d.ts +52 -0
- package/dist/components/badge/Badge.js +22 -0
- package/dist/components/badge/Badge.svelte +22 -0
- package/dist/components/badge/Badge.svelte.d.ts +4 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/brand-logo/BrandLogo.svelte +12 -10
- package/dist/components/button/Button.d.ts +2 -2
- package/dist/components/button/Button.js +12 -12
- package/dist/components/button/Button.svelte +7 -34
- package/dist/components/card/Card.d.ts +68 -0
- package/dist/components/card/Card.js +28 -0
- package/dist/components/card/Card.svelte +33 -0
- package/dist/components/card/Card.svelte.d.ts +4 -0
- package/dist/components/card/index.d.ts +2 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +25 -4
- package/dist/components/checkbox/Checkbox.js +4 -0
- package/dist/components/checkbox/Checkbox.svelte +13 -16
- package/dist/components/checkbox/Checkbox.svelte.d.ts +2 -2
- package/dist/components/combobox/Combobox.d.ts +45 -9
- package/dist/components/combobox/Combobox.js +5 -7
- package/dist/components/combobox/Combobox.svelte +226 -8
- package/dist/components/combobox/Combobox.svelte.d.ts +2 -2
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/command/components/command-empty.svelte +3 -8
- package/dist/components/command/components/command-group.svelte +3 -13
- package/dist/components/command/components/command-input.svelte +5 -13
- package/dist/components/command/components/command-item.svelte +3 -9
- package/dist/components/command/components/command-link-item.svelte +3 -8
- package/dist/components/command/components/command-list.svelte +3 -8
- package/dist/components/command/components/command-separator.svelte +3 -8
- package/dist/components/command/components/command-shortcut.svelte +2 -10
- package/dist/components/command/components/command.svelte +29 -42
- package/dist/components/date-range-picker/DateRangePicker.svelte +490 -0
- package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +4 -0
- package/dist/components/date-range-picker/DateRangePicker.types.d.ts +38 -0
- package/dist/components/date-range-picker/DateRangePicker.types.js +1 -0
- package/dist/components/date-range-picker/index.d.ts +2 -0
- package/dist/components/date-range-picker/index.js +1 -0
- package/dist/components/dialog/Dialog.d.ts +43 -121
- package/dist/components/dialog/Dialog.js +1 -39
- package/dist/components/dialog/Dialog.svelte +103 -113
- package/dist/components/dialog/Dialog.svelte.d.ts +1 -2
- package/dist/components/dialog/dialog.scss +21 -24
- package/dist/components/drawer/Drawer.svelte +63 -0
- package/dist/components/drawer/Drawer.svelte.d.ts +16 -0
- 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 +51 -24
- package/dist/components/dropdown-menu/DropdownMenu.js +1 -15
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte +36 -34
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +8 -12
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +2 -4
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +11 -12
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +2 -4
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +27 -30
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +9 -11
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +2 -4
- package/dist/components/fonts/TeraFontMono.svelte +4 -4
- package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -0
- package/dist/components/fonts/TeraFontSansSerif.svelte +4 -4
- package/dist/components/fonts/TeraFontSansSerif.svelte.d.ts +1 -1
- package/dist/components/header/Header.svelte +6 -9
- package/dist/components/header/header.scss +1 -1
- package/dist/components/icons/IconArrowBigRightFilled.svelte +3 -7
- package/dist/components/icons/IconBook.svelte +3 -6
- package/dist/components/icons/IconBookmarkPlus.svelte +3 -6
- package/dist/components/icons/IconCalculator.svelte +3 -6
- package/dist/components/icons/IconCheck.svelte +3 -6
- package/dist/components/icons/IconChevronDown.svelte +3 -6
- package/dist/components/icons/IconCoin.svelte +3 -6
- package/dist/components/icons/IconCoinConvert.svelte +2 -5
- package/dist/components/icons/IconCopy.svelte +3 -6
- package/dist/components/icons/IconCopyCheckFilled.svelte +3 -6
- package/dist/components/icons/IconHamburger.svelte +3 -6
- package/dist/components/icons/IconLanguage.svelte +3 -6
- package/dist/components/icons/IconLoader2.svelte +3 -6
- package/dist/components/icons/IconLogout.svelte +3 -6
- package/dist/components/icons/IconMoon.svelte +3 -6
- package/dist/components/icons/IconPointFilled.svelte +3 -6
- package/dist/components/icons/IconSearch.svelte +3 -6
- package/dist/components/icons/IconSettings.svelte +3 -6
- package/dist/components/icons/IconSun.svelte +3 -6
- package/dist/components/icons/IconSwitchHorizontal.svelte +3 -6
- package/dist/components/icons/IconSwitchVertical.svelte +3 -6
- package/dist/components/icons/IconTransform.svelte +3 -6
- package/dist/components/icons/IconX.svelte +3 -6
- package/dist/components/input/Input.d.ts +2 -2
- package/dist/components/input/Input.js +10 -10
- package/dist/components/input/Input.svelte +10 -26
- package/dist/components/label/Label.d.ts +2 -2
- package/dist/components/label/Label.js +2 -2
- package/dist/components/label/Label.svelte +4 -12
- package/dist/components/language-picker-button/LanguagePickerButton.svelte +23 -42
- package/dist/components/light-dark-toggle/LightDarkToggle.svelte +21 -26
- package/dist/components/marketing/FeatureCard.svelte +37 -0
- package/dist/components/marketing/FeatureCard.svelte.d.ts +13 -0
- package/dist/components/marketing/PricingCard.svelte +48 -0
- package/dist/components/marketing/PricingCard.svelte.d.ts +15 -0
- package/dist/components/marketing/StatBlock.svelte +14 -0
- package/dist/components/marketing/StatBlock.svelte.d.ts +10 -0
- package/dist/components/marketing/TestimonialCard.svelte +24 -0
- package/dist/components/marketing/TestimonialCard.svelte.d.ts +12 -0
- package/dist/components/marketing/index.d.ts +4 -0
- package/dist/components/marketing/index.js +4 -0
- package/dist/components/popover/Popover.d.ts +32 -13
- package/dist/components/popover/Popover.js +1 -7
- package/dist/components/popover/Popover.svelte +40 -158
- package/dist/components/popover/Popover.svelte.d.ts +2 -2
- package/dist/components/popover-responsive/PopoverResponsive.d.ts +18 -7
- package/dist/components/popover-responsive/PopoverResponsive.js +1 -7
- package/dist/components/popover-responsive/PopoverResponsive.svelte +25 -87
- package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +2 -11
- package/dist/components/select/Select.d.ts +60 -23
- package/dist/components/select/Select.js +14 -35
- package/dist/components/select/Select.svelte +157 -28
- package/dist/components/select/Select.svelte.d.ts +2 -3
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/side-navigation/SideNavigation.svelte +73 -96
- package/dist/components/side-navigation/SideNavigationItem.svelte +2 -2
- package/dist/components/side-navigation/SideNavigationLayout.svelte +3 -5
- package/dist/components/side-navigation/sidenav.scss +17 -13
- package/dist/components/skeleton/Skeleton.svelte +48 -0
- package/dist/components/skeleton/Skeleton.svelte.d.ts +12 -0
- package/dist/components/skeleton/index.d.ts +1 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/slider/Slider.d.ts +25 -15
- package/dist/components/slider/Slider.js +1 -7
- package/dist/components/slider/Slider.svelte +38 -164
- package/dist/components/slider/Slider.svelte.d.ts +1 -1
- package/dist/components/spinner/Spinner.svelte +39 -0
- package/dist/components/spinner/Spinner.svelte.d.ts +10 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/star-rating/StarRating.svelte +33 -49
- package/dist/components/switch/Switch.d.ts +19 -4
- package/dist/components/switch/Switch.js +4 -0
- package/dist/components/switch/Switch.svelte +13 -17
- package/dist/components/switch/Switch.svelte.d.ts +2 -2
- package/dist/components/table/Table.svelte +68 -0
- package/dist/components/table/Table.svelte.d.ts +40 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/index.js +1 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +45 -16
- package/dist/components/tabs/Tabs.svelte.js +8 -18
- package/dist/components/tabs/components/Tabs.svelte +27 -33
- package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsContent.svelte +13 -36
- package/dist/components/tabs/components/TabsContent.svelte.d.ts +2 -5
- package/dist/components/tabs/components/TabsItem.svelte +43 -32
- package/dist/components/tabs/components/TabsItem.svelte.d.ts +2 -5
- package/dist/components/tabs/components/TabsList.svelte +90 -58
- package/dist/components/tabs/components/TabsList.svelte.d.ts +2 -4
- package/dist/components/tera-ui-context/TeraUiContext.svelte +13 -26
- package/dist/components/text-area/TextArea.d.ts +2 -2
- package/dist/components/text-area/TextArea.js +9 -9
- package/dist/components/text-area/TextArea.svelte +41 -65
- package/dist/components/toast/ToastContainer.svelte +50 -0
- package/dist/components/toast/ToastContainer.svelte.d.ts +18 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/toast/toast.svelte.d.ts +22 -0
- package/dist/components/toast/toast.svelte.js +18 -0
- package/dist/components/tooltip/Tooltip.d.ts +23 -0
- package/dist/components/tooltip/Tooltip.js +1 -0
- package/dist/components/tooltip/Tooltip.svelte +30 -0
- package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +48 -69
- package/dist/index.d.ts +19 -2
- package/dist/index.js +12 -0
- package/dist/llms/accordion.md +90 -0
- package/dist/llms/ai.md +110 -0
- package/dist/llms/alert.md +29 -0
- package/dist/llms/avatar.md +34 -0
- package/dist/llms/badge.md +31 -0
- package/dist/llms/brand-logo.md +30 -0
- package/dist/llms/button.md +37 -0
- package/dist/llms/card.md +32 -0
- package/dist/llms/checkbox.md +35 -0
- package/dist/llms/colors.md +161 -0
- package/dist/llms/combobox.md +40 -0
- package/dist/llms/command.md +7 -0
- package/dist/llms/date-range-picker.md +36 -0
- package/dist/llms/dialog.md +45 -0
- package/dist/llms/drawer.md +30 -0
- package/dist/llms/dropdown-menu.md +112 -0
- package/dist/llms/fonts.md +7 -0
- package/dist/llms/header.md +26 -0
- package/dist/llms/icons.md +43 -0
- package/dist/llms/index.md +65 -0
- package/dist/llms/input.md +37 -0
- package/dist/llms/label.md +30 -0
- package/dist/llms/language-picker-button.md +30 -0
- package/dist/llms/light-dark-toggle.md +26 -0
- package/dist/llms/marketing.md +95 -0
- package/dist/llms/popover-responsive.md +32 -0
- package/dist/llms/popover.md +40 -0
- package/dist/llms/select.md +44 -0
- package/dist/llms/side-navigation.md +30 -0
- package/dist/llms/skeleton.md +28 -0
- package/dist/llms/slider.md +36 -0
- package/dist/llms/spinner.md +25 -0
- package/dist/llms/star-rating.md +31 -0
- package/dist/llms/switch.md +33 -0
- package/dist/llms/table.md +30 -0
- package/dist/llms/tabs.md +92 -0
- package/dist/llms/tera-ui-context.md +30 -0
- package/dist/llms/text-area.md +39 -0
- package/dist/llms/toast.md +7 -0
- package/dist/llms/tooltip.md +32 -0
- package/dist/llms/user-avatar-with-menu.md +28 -0
- package/dist/paraglide/README.md +71 -2
- package/dist/paraglide/messages/_index.d.ts +7 -21
- package/dist/paraglide/messages/_index.js +7 -485
- package/dist/paraglide/messages/text_account_settings.d.ts +16 -0
- package/dist/paraglide/messages/text_account_settings.js +234 -0
- package/dist/paraglide/messages/text_calces_documentation.d.ts +16 -0
- package/dist/paraglide/messages/text_calces_documentation.js +234 -0
- package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +16 -0
- package/dist/paraglide/messages/text_calces_scientific_calculator.js +234 -0
- package/dist/paraglide/messages/text_currency_converter.d.ts +16 -0
- package/dist/paraglide/messages/text_currency_converter.js +234 -0
- package/dist/paraglide/messages/text_logout.d.ts +16 -0
- package/dist/paraglide/messages/text_logout.js +234 -0
- package/dist/paraglide/messages/text_select_language.d.ts +16 -0
- package/dist/paraglide/messages/text_select_language.js +234 -0
- package/dist/paraglide/messages/text_unit_converter.d.ts +16 -0
- package/dist/paraglide/messages/text_unit_converter.js +234 -0
- package/dist/paraglide/registry.d.ts +13 -0
- package/dist/paraglide/registry.js +15 -0
- package/dist/paraglide/runtime.d.ts +242 -125
- package/dist/paraglide/runtime.js +467 -143
- package/dist/paraglide/server.d.ts +13 -20
- package/dist/paraglide/server.js +92 -40
- package/dist/stories/ComponentOverview.stories.svelte +533 -0
- package/dist/stories/ComponentOverview.stories.svelte.d.ts +6 -0
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +130 -9
- package/dist/tera-i18n/dev-tools/translator/package-lock.json +14 -224
- package/dist/tera-i18n/dev-tools/translator/package.json +1 -1
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-calculator.md +34 -0
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.md +149 -0
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-system.txt +1 -1
- package/dist/tera-i18n/projects/common/all-language-data.js +70 -13
- package/dist/tera-i18n/projects/cv-maker/messages/ar-AE.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/ar-EG.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/ar-IQ.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/ar-SA.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/ar-SD.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/ar-YE.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/ar.json +58 -15
- package/dist/tera-i18n/projects/cv-maker/messages/bg.json +57 -14
- package/dist/tera-i18n/projects/cv-maker/messages/bn.json +65 -22
- package/dist/tera-i18n/projects/cv-maker/messages/ca.json +54 -11
- package/dist/tera-i18n/projects/cv-maker/messages/cs.json +59 -16
- package/dist/tera-i18n/projects/cv-maker/messages/da.json +51 -8
- package/dist/tera-i18n/projects/cv-maker/messages/de.json +58 -15
- package/dist/tera-i18n/projects/cv-maker/messages/el.json +71 -28
- package/dist/tera-i18n/projects/cv-maker/messages/en-AE.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/en-AU.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/en-CA.json +51 -8
- package/dist/tera-i18n/projects/cv-maker/messages/en-GB.json +50 -7
- package/dist/tera-i18n/projects/cv-maker/messages/en-ID.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/en-IN.json +54 -11
- package/dist/tera-i18n/projects/cv-maker/messages/en-NZ.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/en-PH.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/en-PK.json +58 -15
- package/dist/tera-i18n/projects/cv-maker/messages/en-SA.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/en-US.json +51 -8
- package/dist/tera-i18n/projects/cv-maker/messages/en-ZA.json +52 -9
- package/dist/tera-i18n/projects/cv-maker/messages/en.json +45 -16
- package/dist/tera-i18n/projects/cv-maker/messages/es-419.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/es-AR.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/es-ES.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/es-MX.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/es.json +53 -10
- package/dist/tera-i18n/projects/cv-maker/messages/fi.json +52 -9
- package/dist/tera-i18n/projects/cv-maker/messages/fr-MA.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/fr.json +54 -11
- package/dist/tera-i18n/projects/cv-maker/messages/he.json +55 -12
- package/dist/tera-i18n/projects/cv-maker/messages/hi.json +59 -16
- package/dist/tera-i18n/projects/cv-maker/messages/hr.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/messages/hu.json +63 -20
- package/dist/tera-i18n/projects/cv-maker/messages/id.json +60 -17
- package/dist/tera-i18n/projects/cv-maker/messages/it.json +53 -10
- package/dist/tera-i18n/projects/cv-maker/messages/ja.json +62 -19
- package/dist/tera-i18n/projects/cv-maker/messages/ko.json +61 -18
- package/dist/tera-i18n/projects/cv-maker/messages/lt.json +61 -18
- package/dist/tera-i18n/projects/cv-maker/messages/lv.json +61 -18
- package/dist/tera-i18n/projects/cv-maker/messages/ms-MY.json +60 -17
- package/dist/tera-i18n/projects/cv-maker/messages/ms.json +61 -18
- package/dist/tera-i18n/projects/cv-maker/messages/nl.json +53 -10
- package/dist/tera-i18n/projects/cv-maker/messages/no.json +54 -11
- package/dist/tera-i18n/projects/cv-maker/messages/pl.json +59 -16
- package/dist/tera-i18n/projects/cv-maker/messages/pt-BR.json +58 -15
- package/dist/tera-i18n/projects/cv-maker/messages/pt-PT.json +59 -16
- package/dist/tera-i18n/projects/cv-maker/messages/pt.json +66 -23
- package/dist/tera-i18n/projects/cv-maker/messages/ro.json +52 -9
- package/dist/tera-i18n/projects/cv-maker/messages/ru.json +57 -14
- package/dist/tera-i18n/projects/cv-maker/messages/sk.json +62 -19
- package/dist/tera-i18n/projects/cv-maker/messages/sl.json +57 -14
- package/dist/tera-i18n/projects/cv-maker/messages/sq.json +59 -16
- package/dist/tera-i18n/projects/cv-maker/messages/sr.json +91 -48
- package/dist/tera-i18n/projects/cv-maker/messages/sv.json +56 -13
- package/dist/tera-i18n/projects/cv-maker/messages/sw.json +62 -19
- package/dist/tera-i18n/projects/cv-maker/messages/ta.json +72 -29
- package/dist/tera-i18n/projects/cv-maker/messages/te.json +75 -32
- package/dist/tera-i18n/projects/cv-maker/messages/th.json +62 -19
- package/dist/tera-i18n/projects/cv-maker/messages/tl.json +77 -34
- package/dist/tera-i18n/projects/cv-maker/messages/tr.json +63 -20
- package/dist/tera-i18n/projects/cv-maker/messages/uk.json +63 -20
- package/dist/tera-i18n/projects/cv-maker/messages/vi.json +64 -21
- package/dist/tera-i18n/projects/cv-maker/messages/zh-CN.json +63 -20
- package/dist/tera-i18n/projects/cv-maker/messages/zh-TW.json +58 -15
- package/dist/tera-i18n/projects/cv-maker/messages/zh.json +94 -0
- package/dist/tera-i18n/projects/cv-maker/project.inlang/settings.json +82 -68
- package/dist/tera-i18n/projects/cv-maker/supported-language.js +36 -9
- package/dist/tera-i18n/projects/mathda/messages/en.json +4 -0
- package/dist/tera-i18n/projects/mathda/messages/vi.json +4 -0
- package/dist/tera-i18n/projects/mathda/project.inlang/settings.json +15 -0
- package/dist/tera-i18n/projects/mathda/supported-language.d.ts +1 -0
- package/dist/tera-i18n/projects/mathda/supported-language.js +4 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +149 -72
- package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +149 -72
- package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +139 -62
- package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +132 -55
- package/dist/tera-i18n/projects/tera-calculator/messages/da.json +132 -55
- package/dist/tera-i18n/projects/tera-calculator/messages/de.json +181 -104
- package/dist/tera-i18n/projects/tera-calculator/messages/el.json +145 -68
- package/dist/tera-i18n/projects/tera-calculator/messages/en-IN.json +183 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/en-PH.json +183 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/en-US.json +183 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/en.json +187 -104
- package/dist/tera-i18n/projects/tera-calculator/messages/es.json +181 -104
- package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +137 -60
- package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +180 -103
- package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +136 -59
- package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +141 -64
- package/dist/tera-i18n/projects/tera-calculator/messages/id.json +132 -55
- package/dist/tera-i18n/projects/tera-calculator/messages/it.json +180 -103
- package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +136 -59
- package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +133 -56
- package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +140 -63
- package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +141 -64
- package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +139 -62
- package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +145 -68
- package/dist/tera-i18n/projects/tera-calculator/messages/no.json +131 -54
- package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +134 -57
- package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +180 -103
- package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +136 -59
- package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +180 -103
- package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +135 -58
- package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +139 -62
- package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +148 -71
- package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +141 -64
- package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +134 -57
- package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +152 -75
- package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +159 -82
- package/dist/tera-i18n/projects/tera-calculator/messages/te.json +165 -88
- package/dist/tera-i18n/projects/tera-calculator/messages/th.json +136 -59
- package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +146 -69
- package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +135 -58
- package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +142 -65
- package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +181 -104
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +129 -52
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +135 -58
- package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +51 -53
- package/dist/tera-i18n/projects/tera-calculator/supported-language.js +6 -3
- package/dist/themes/tera-ui-base.css +242 -77
- package/dist/themes/theme-ai.css +100 -0
- package/dist/themes/theme-marketing.css +91 -0
- package/dist/themes/theme-professional.css +41 -0
- package/package.json +36 -29
- package/dist/paraglide/messages/ar.d.ts +0 -9
- package/dist/paraglide/messages/ar.js +0 -31
- package/dist/paraglide/messages/bg.d.ts +0 -9
- package/dist/paraglide/messages/bg.js +0 -31
- package/dist/paraglide/messages/bn.d.ts +0 -9
- package/dist/paraglide/messages/bn.js +0 -31
- package/dist/paraglide/messages/ca.d.ts +0 -9
- package/dist/paraglide/messages/ca.js +0 -31
- package/dist/paraglide/messages/cs.d.ts +0 -9
- package/dist/paraglide/messages/cs.js +0 -31
- package/dist/paraglide/messages/da.d.ts +0 -9
- package/dist/paraglide/messages/da.js +0 -31
- package/dist/paraglide/messages/de.d.ts +0 -9
- package/dist/paraglide/messages/de.js +0 -31
- package/dist/paraglide/messages/el.d.ts +0 -9
- package/dist/paraglide/messages/el.js +0 -31
- package/dist/paraglide/messages/en.d.ts +0 -9
- package/dist/paraglide/messages/en.js +0 -31
- package/dist/paraglide/messages/es.d.ts +0 -9
- package/dist/paraglide/messages/es.js +0 -31
- package/dist/paraglide/messages/fi.d.ts +0 -9
- package/dist/paraglide/messages/fi.js +0 -31
- package/dist/paraglide/messages/fr.d.ts +0 -9
- package/dist/paraglide/messages/fr.js +0 -31
- package/dist/paraglide/messages/he.d.ts +0 -9
- package/dist/paraglide/messages/he.js +0 -31
- package/dist/paraglide/messages/hi.d.ts +0 -9
- package/dist/paraglide/messages/hi.js +0 -31
- package/dist/paraglide/messages/hu.d.ts +0 -9
- package/dist/paraglide/messages/hu.js +0 -31
- package/dist/paraglide/messages/id.d.ts +0 -9
- package/dist/paraglide/messages/id.js +0 -31
- package/dist/paraglide/messages/it.d.ts +0 -9
- package/dist/paraglide/messages/it.js +0 -31
- package/dist/paraglide/messages/ja.d.ts +0 -9
- package/dist/paraglide/messages/ja.js +0 -31
- package/dist/paraglide/messages/ko.d.ts +0 -9
- package/dist/paraglide/messages/ko.js +0 -31
- package/dist/paraglide/messages/lt.d.ts +0 -9
- package/dist/paraglide/messages/lt.js +0 -31
- package/dist/paraglide/messages/lv.d.ts +0 -9
- package/dist/paraglide/messages/lv.js +0 -31
- package/dist/paraglide/messages/ms.d.ts +0 -9
- package/dist/paraglide/messages/ms.js +0 -31
- package/dist/paraglide/messages/nl.d.ts +0 -9
- package/dist/paraglide/messages/nl.js +0 -31
- package/dist/paraglide/messages/no.d.ts +0 -9
- package/dist/paraglide/messages/no.js +0 -31
- package/dist/paraglide/messages/pl.d.ts +0 -9
- package/dist/paraglide/messages/pl.js +0 -31
- package/dist/paraglide/messages/pt.d.ts +0 -9
- package/dist/paraglide/messages/pt.js +0 -31
- package/dist/paraglide/messages/ro.d.ts +0 -9
- package/dist/paraglide/messages/ro.js +0 -31
- package/dist/paraglide/messages/ru.d.ts +0 -9
- package/dist/paraglide/messages/ru.js +0 -31
- package/dist/paraglide/messages/sk.d.ts +0 -9
- package/dist/paraglide/messages/sk.js +0 -31
- package/dist/paraglide/messages/sl.d.ts +0 -9
- package/dist/paraglide/messages/sl.js +0 -31
- package/dist/paraglide/messages/sq.d.ts +0 -9
- package/dist/paraglide/messages/sq.js +0 -31
- package/dist/paraglide/messages/sr.d.ts +0 -9
- package/dist/paraglide/messages/sr.js +0 -31
- package/dist/paraglide/messages/sv.d.ts +0 -9
- package/dist/paraglide/messages/sv.js +0 -31
- package/dist/paraglide/messages/sw.d.ts +0 -9
- package/dist/paraglide/messages/sw.js +0 -31
- package/dist/paraglide/messages/ta.d.ts +0 -9
- package/dist/paraglide/messages/ta.js +0 -31
- package/dist/paraglide/messages/te.d.ts +0 -9
- package/dist/paraglide/messages/te.js +0 -31
- package/dist/paraglide/messages/th.d.ts +0 -9
- package/dist/paraglide/messages/th.js +0 -31
- package/dist/paraglide/messages/tl.d.ts +0 -9
- package/dist/paraglide/messages/tl.js +0 -31
- package/dist/paraglide/messages/tr.d.ts +0 -9
- package/dist/paraglide/messages/tr.js +0 -31
- package/dist/paraglide/messages/uk.d.ts +0 -9
- package/dist/paraglide/messages/uk.js +0 -31
- package/dist/paraglide/messages/vi.d.ts +0 -9
- package/dist/paraglide/messages/vi.js +0 -31
- package/dist/paraglide/messages/zh-CN.d.ts +0 -9
- package/dist/paraglide/messages/zh-CN.js +0 -31
- package/dist/paraglide/messages/zh-TW.d.ts +0 -9
- package/dist/paraglide/messages/zh-TW.js +0 -31
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.txt +0 -21
- package/dist/tera-i18n/projects/cv-maker/project.inlang/project_id +0 -1
- package/dist/tera-i18n/projects/tera-calculator/messages/ar.json +0 -106
- package/dist/tera-i18n/projects/tera-calculator/messages/he.json +0 -106
- package/dist/tera-i18n/projects/tera-calculator/project.inlang/project_id +0 -1
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/.meta.json +0 -3
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/README.md +0 -103
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/project_id +0 -1
- package/dist/themes/tw-preset.cjs +0 -160
- package/dist/themes/tw-preset.d.cts +0 -157
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @component Accordion - Collapsible content panels with single or multi-open support.
|
|
3
|
+
* Built on BitsUI Accordion primitive with full keyboard navigation.
|
|
4
|
+
*/
|
|
1
5
|
import { type VariantProps } from "tailwind-variants";
|
|
2
6
|
import type { Snippet } from "svelte";
|
|
3
7
|
import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
|
|
@@ -5,15 +9,30 @@ export declare const styles: import("tailwind-variants").TVReturnType<{}, undefi
|
|
|
5
9
|
type AccordionVariants = VariantProps<typeof styles>;
|
|
6
10
|
export interface AccordionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onchange'>, AccordionVariants {
|
|
7
11
|
children?: Snippet;
|
|
12
|
+
/** Additional CSS classes for the root element. */
|
|
8
13
|
class?: string;
|
|
14
|
+
/** Whether only one item can be open at a time ('single') or many ('multiple'). */
|
|
9
15
|
type: 'multiple' | 'single';
|
|
16
|
+
/** The currently open item value(s). Bindable. */
|
|
10
17
|
value: string | string[];
|
|
18
|
+
/** Called when the open item(s) change. */
|
|
11
19
|
onchange?: (value: string | string[]) => void;
|
|
20
|
+
/** Use controlled mode — manage value externally and pass it back via onchange. */
|
|
12
21
|
controlledValue?: boolean;
|
|
22
|
+
/** Whether the entire accordion is disabled. */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** Whether keyboard navigation wraps around at the first/last item. */
|
|
25
|
+
loop?: boolean;
|
|
26
|
+
/** Layout orientation — affects arrow-key navigation direction. */
|
|
27
|
+
orientation?: 'horizontal' | 'vertical';
|
|
28
|
+
/** Bindable reference to the root element. */
|
|
13
29
|
ref?: HTMLDivElement | null;
|
|
14
30
|
}
|
|
15
31
|
export interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
32
|
+
/** Unique identifier for this item — matched against the root `value`. */
|
|
16
33
|
value: string;
|
|
34
|
+
/** Prevents the user from interacting with this specific item. */
|
|
35
|
+
disabled?: boolean;
|
|
17
36
|
ref?: HTMLDivElement | null;
|
|
18
37
|
children?: Snippet;
|
|
19
38
|
}
|
|
@@ -23,6 +42,11 @@ export interface AccordionTriggerProps extends HTMLButtonAttributes {
|
|
|
23
42
|
}
|
|
24
43
|
export interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
25
44
|
children?: Snippet;
|
|
45
|
+
/**
|
|
46
|
+
* Keep the content mounted in the DOM even when the item is collapsed.
|
|
47
|
+
* Useful for Svelte transitions or preserving internal component state.
|
|
48
|
+
*/
|
|
49
|
+
forceMount?: boolean;
|
|
26
50
|
ref?: HTMLDivElement | null;
|
|
27
51
|
}
|
|
28
52
|
export {};
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
ref = $bindable(null),
|
|
6
|
-
value = $bindable(),
|
|
7
|
-
...restProps
|
|
8
|
-
}: AccordionPrimitive.RootProps = $props();
|
|
1
|
+
<script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
2
|
+
let { ref = $bindable(null), value = $bindable(), ...restProps } = $props();
|
|
9
3
|
</script>
|
|
10
4
|
|
|
11
5
|
<AccordionPrimitive.Root
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
let {
|
|
6
|
-
ref = $bindable(null),
|
|
7
|
-
class: className,
|
|
8
|
-
children,
|
|
9
|
-
...restProps
|
|
10
|
-
}: WithoutChild<AccordionPrimitive.ContentProps> = $props();
|
|
1
|
+
<script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
2
|
+
import { cn } from "../../../utils";
|
|
3
|
+
let { ref = $bindable(null), class: className, children, ...restProps } = $props();
|
|
11
4
|
</script>
|
|
12
5
|
|
|
13
6
|
<AccordionPrimitive.Content
|
|
14
7
|
bind:ref
|
|
15
8
|
class={cn(
|
|
16
|
-
"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm
|
|
9
|
+
"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
|
|
17
10
|
className
|
|
18
11
|
)}
|
|
19
12
|
{...restProps}
|
|
20
13
|
>
|
|
21
|
-
{@render children?.()}
|
|
14
|
+
<div class="pb-4">{@render children?.()}</div>
|
|
22
15
|
</AccordionPrimitive.Content>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
let {
|
|
6
|
-
ref = $bindable(null),
|
|
7
|
-
class: className,
|
|
8
|
-
...restProps
|
|
9
|
-
}: AccordionPrimitive.ItemProps = $props();
|
|
1
|
+
<script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
2
|
+
import { cn } from "../../../utils";
|
|
3
|
+
let { ref = $bindable(null), class: className, ...restProps } = $props();
|
|
10
4
|
</script>
|
|
11
5
|
|
|
12
6
|
<AccordionPrimitive.Item bind:ref class={cn("border-b", className)} {...restProps} />
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
let {
|
|
7
|
-
ref = $bindable(null),
|
|
8
|
-
class: className,
|
|
9
|
-
level = 3,
|
|
10
|
-
children,
|
|
11
|
-
...restProps
|
|
12
|
-
}: WithoutChild<AccordionPrimitive.TriggerProps> & {
|
|
13
|
-
level?: AccordionPrimitive.HeaderProps["level"];
|
|
14
|
-
} = $props();
|
|
1
|
+
<script lang="ts">import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
2
|
+
import { cn } from "../../../utils";
|
|
3
|
+
import { IconChevronDown } from "../../icons";
|
|
4
|
+
let { ref = $bindable(null), class: className, level = 3, children, ...restProps } = $props();
|
|
15
5
|
</script>
|
|
16
6
|
|
|
17
7
|
<AccordionPrimitive.Header {level} class="flex">
|
|
@@ -24,6 +14,6 @@
|
|
|
24
14
|
{...restProps}
|
|
25
15
|
>
|
|
26
16
|
{@render children?.()}
|
|
27
|
-
<IconChevronDown class="size-4 shrink-0 transition-transform duration-
|
|
17
|
+
<IconChevronDown class="size-4 shrink-0 transition-transform ease-ui duration-150" />
|
|
28
18
|
</AccordionPrimitive.Trigger>
|
|
29
19
|
</AccordionPrimitive.Header>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<script lang="ts">let { role, content, avatar, timestamp, status = 'sent', class: className = '', } = $props();
|
|
2
|
+
const isUser = $derived(role === 'user');
|
|
3
|
+
export {};
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<div
|
|
7
|
+
class="flex gap-2 animate-in slide-in-from-bottom-2 fade-in duration-300 ease-spring {isUser ? 'flex-row-reverse' : 'flex-row'} {className}"
|
|
8
|
+
>
|
|
9
|
+
{#if avatar}
|
|
10
|
+
<div class="shrink-0 size-8">{@render avatar()}</div>
|
|
11
|
+
{/if}
|
|
12
|
+
|
|
13
|
+
<div class="flex flex-col gap-1 max-w-[75%] {isUser ? 'items-end' : 'items-start'}">
|
|
14
|
+
<div
|
|
15
|
+
class="px-4 py-2.5 text-sm leading-relaxed {isUser
|
|
16
|
+
? 'bg-interactive-subtle text-text-primary rounded-2xl rounded-br-sm'
|
|
17
|
+
: 'bg-surface-raised text-text-primary rounded-2xl rounded-bl-sm border border-border-default'}"
|
|
18
|
+
>
|
|
19
|
+
{#if typeof content === 'string'}
|
|
20
|
+
{content}
|
|
21
|
+
{:else}
|
|
22
|
+
{@render content()}
|
|
23
|
+
{/if}
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="flex items-center gap-1.5 text-[10px] text-text-tertiary">
|
|
27
|
+
{#if timestamp}<span>{timestamp}</span>{/if}
|
|
28
|
+
{#if isUser && status === 'sending'}
|
|
29
|
+
<span class="italic">Sending…</span>
|
|
30
|
+
{:else if isUser && status === 'error'}
|
|
31
|
+
<span class="text-error-500">Failed to send</span>
|
|
32
|
+
{/if}
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
role: 'user' | 'assistant';
|
|
4
|
+
content: string | Snippet;
|
|
5
|
+
avatar?: Snippet;
|
|
6
|
+
timestamp?: string;
|
|
7
|
+
status?: 'sending' | 'sent' | 'error';
|
|
8
|
+
class?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const ChatBubble: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type ChatBubble = ReturnType<typeof ChatBubble>;
|
|
12
|
+
export default ChatBubble;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<script lang="ts">import ThinkingLoader from './ThinkingLoader.svelte';
|
|
2
|
+
import SuggestionChips from './SuggestionChips.svelte';
|
|
3
|
+
let { value = $bindable(''), onsubmit, placeholder = 'Ask me anything…', maxLength, loading, disabled, suggestions = [], class: className = '', } = $props();
|
|
4
|
+
function handleKeydown(e) {
|
|
5
|
+
if (e.key === 'Enter' && !e.shiftKey && !loading && value.trim()) {
|
|
6
|
+
e.preventDefault();
|
|
7
|
+
submit();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function submit() {
|
|
11
|
+
if (!value.trim() || loading)
|
|
12
|
+
return;
|
|
13
|
+
onsubmit?.(value);
|
|
14
|
+
}
|
|
15
|
+
function handleSuggestion(s) {
|
|
16
|
+
value = Array.isArray(s) ? s[0] : s;
|
|
17
|
+
}
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<div class="flex flex-col gap-2 {className}">
|
|
21
|
+
{#if suggestions.length > 0}
|
|
22
|
+
<SuggestionChips {suggestions} onSelect={handleSuggestion} />
|
|
23
|
+
{/if}
|
|
24
|
+
|
|
25
|
+
<div
|
|
26
|
+
class="relative flex items-end gap-2 border rounded bg-surface transition-[border-color,box-shadow] ease-ui duration-150
|
|
27
|
+
{loading ? 'border-interactive shadow-glow' : 'border-border-default focus-within:border-interactive focus-within:shadow-focus'}"
|
|
28
|
+
>
|
|
29
|
+
<textarea
|
|
30
|
+
class="flex-1 resize-none bg-transparent outline-none px-3 py-2.5 text-sm text-text-primary placeholder:text-text-tertiary min-h-[42px] max-h-40"
|
|
31
|
+
{placeholder}
|
|
32
|
+
maxlength={maxLength}
|
|
33
|
+
{disabled}
|
|
34
|
+
bind:value
|
|
35
|
+
onkeydown={handleKeydown}
|
|
36
|
+
rows={1}
|
|
37
|
+
></textarea>
|
|
38
|
+
|
|
39
|
+
<div class="shrink-0 pb-2 pr-2">
|
|
40
|
+
{#if loading}
|
|
41
|
+
<ThinkingLoader size="sm" />
|
|
42
|
+
{:else}
|
|
43
|
+
<button
|
|
44
|
+
type="button"
|
|
45
|
+
class="size-7 rounded-full flex items-center justify-center transition-colors ease-ui duration-150
|
|
46
|
+
{value.trim() ? 'bg-interactive text-interactive-on' : 'bg-surface-hover text-text-tertiary cursor-not-allowed'}"
|
|
47
|
+
onclick={submit}
|
|
48
|
+
disabled={!value.trim() || disabled}
|
|
49
|
+
aria-label="Send"
|
|
50
|
+
>
|
|
51
|
+
<svg class="size-3.5" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
52
|
+
<path d="M7 12V2M2 7l5-5 5 5"/>
|
|
53
|
+
</svg>
|
|
54
|
+
</button>
|
|
55
|
+
{/if}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
value?: string;
|
|
3
|
+
onsubmit?: (value: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
maxLength?: number;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
suggestions?: string[];
|
|
9
|
+
class?: string;
|
|
10
|
+
};
|
|
11
|
+
declare const PromptInput: import("svelte").Component<$$ComponentProps, {}, "value">;
|
|
12
|
+
type PromptInput = ReturnType<typeof PromptInput>;
|
|
13
|
+
export default PromptInput;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { text, speed = 'normal', onComplete, cursor = true, class: className = '', } = $props();
|
|
3
|
+
const msPerChar = { slow: 30, normal: 15, fast: 5 };
|
|
4
|
+
let displayed = $state('');
|
|
5
|
+
let done = $state(false);
|
|
6
|
+
let timer;
|
|
7
|
+
$effect(() => {
|
|
8
|
+
displayed = '';
|
|
9
|
+
done = false;
|
|
10
|
+
let i = 0;
|
|
11
|
+
clearInterval(timer);
|
|
12
|
+
timer = setInterval(() => {
|
|
13
|
+
if (i < text.length) {
|
|
14
|
+
displayed += text[i];
|
|
15
|
+
i++;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
clearInterval(timer);
|
|
19
|
+
done = true;
|
|
20
|
+
onComplete?.();
|
|
21
|
+
}
|
|
22
|
+
}, msPerChar[speed]);
|
|
23
|
+
return () => clearInterval(timer);
|
|
24
|
+
});
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<span aria-live="polite" class={className}>
|
|
28
|
+
{displayed}{#if cursor && !done}<span class="cursor-blink">|</span>{/if}
|
|
29
|
+
</span>
|
|
30
|
+
|
|
31
|
+
<style>
|
|
32
|
+
.cursor-blink {
|
|
33
|
+
animation: blink 530ms step-end infinite;
|
|
34
|
+
margin-left: 1px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@keyframes blink {
|
|
38
|
+
0%, 100% { opacity: 1; }
|
|
39
|
+
50% { opacity: 0; }
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type StreamSpeed = 'slow' | 'normal' | 'fast';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
text: string;
|
|
4
|
+
speed?: StreamSpeed;
|
|
5
|
+
onComplete?: () => void;
|
|
6
|
+
cursor?: boolean;
|
|
7
|
+
class?: string;
|
|
8
|
+
};
|
|
9
|
+
declare const StreamText: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
10
|
+
type StreamText = ReturnType<typeof StreamText>;
|
|
11
|
+
export default StreamText;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { suggestions, onSelect, label, multiple, class: className = '', } = $props();
|
|
3
|
+
let selected = $state([]);
|
|
4
|
+
function toggle(s) {
|
|
5
|
+
if (multiple) {
|
|
6
|
+
selected = selected.includes(s) ? selected.filter(x => x !== s) : [...selected, s];
|
|
7
|
+
onSelect?.(selected);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
selected = [s];
|
|
11
|
+
onSelect?.(s);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div class="flex flex-col gap-2 {className}">
|
|
17
|
+
{#if label}
|
|
18
|
+
<p class="text-xs text-text-tertiary">{label}</p>
|
|
19
|
+
{/if}
|
|
20
|
+
<div class="flex flex-wrap gap-2 overflow-x-auto">
|
|
21
|
+
{#each suggestions as s (s)}
|
|
22
|
+
<button
|
|
23
|
+
type="button"
|
|
24
|
+
class="inline-flex items-center px-3 py-1.5 rounded-full text-xs font-medium border transition-[background-color,border-color,color] ease-ui duration-150 whitespace-nowrap
|
|
25
|
+
{selected.includes(s)
|
|
26
|
+
? 'bg-interactive-subtle border-interactive text-primary-700'
|
|
27
|
+
: 'bg-surface-raised border-border-default text-text-secondary hover:bg-surface-hover hover:border-border-strong'}"
|
|
28
|
+
onclick={() => toggle(s)}
|
|
29
|
+
>
|
|
30
|
+
{s}
|
|
31
|
+
</button>
|
|
32
|
+
{/each}
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
suggestions: string[];
|
|
3
|
+
onSelect?: (value: string | string[]) => void;
|
|
4
|
+
label?: string;
|
|
5
|
+
multiple?: boolean;
|
|
6
|
+
class?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const SuggestionChips: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type SuggestionChips = ReturnType<typeof SuggestionChips>;
|
|
10
|
+
export default SuggestionChips;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { variant = 'dots', size = 'md', label, class: className = '', } = $props();
|
|
3
|
+
const dotSize = { sm: 'size-1.5', md: 'size-2' };
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<div
|
|
7
|
+
class="inline-flex items-center gap-2 {className}"
|
|
8
|
+
aria-label="AI is thinking"
|
|
9
|
+
role="status"
|
|
10
|
+
>
|
|
11
|
+
<div class="flex items-center gap-1">
|
|
12
|
+
{#each [0, 1, 2] as i (i)}
|
|
13
|
+
<span
|
|
14
|
+
class="rounded-full bg-interactive {dotSize[size]}"
|
|
15
|
+
style="animation: {variant === 'pulse' ? `pulse-dot 800ms ${i * 160}ms ease-in-out infinite` : `wave-dot 1.2s ${i * 150}ms ease-[var(--ease-spring)] infinite`}"
|
|
16
|
+
></span>
|
|
17
|
+
{/each}
|
|
18
|
+
</div>
|
|
19
|
+
{#if label}
|
|
20
|
+
<span class="text-xs text-text-tertiary">{label}</span>
|
|
21
|
+
{/if}
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<style>
|
|
25
|
+
@keyframes wave-dot {
|
|
26
|
+
0%, 100% { transform: translateY(0); }
|
|
27
|
+
40% { transform: translateY(-6px); }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@keyframes pulse-dot {
|
|
31
|
+
0%, 100% { opacity: 0.3; }
|
|
32
|
+
50% { opacity: 1; }
|
|
33
|
+
}
|
|
34
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type ThinkingVariant = 'dots' | 'wave' | 'pulse';
|
|
2
|
+
type ThinkingSize = 'sm' | 'md';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
variant?: ThinkingVariant;
|
|
5
|
+
size?: ThinkingSize;
|
|
6
|
+
label?: string;
|
|
7
|
+
class?: string;
|
|
8
|
+
};
|
|
9
|
+
declare const ThinkingLoader: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
10
|
+
type ThinkingLoader = ReturnType<typeof ThinkingLoader>;
|
|
11
|
+
export default ThinkingLoader;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as ChatBubble } from './ChatBubble.svelte';
|
|
2
|
+
export { default as StreamText } from './StreamText.svelte';
|
|
3
|
+
export { default as ThinkingLoader } from './ThinkingLoader.svelte';
|
|
4
|
+
export { default as SuggestionChips } from './SuggestionChips.svelte';
|
|
5
|
+
export { default as PromptInput } from './PromptInput.svelte';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as ChatBubble } from './ChatBubble.svelte';
|
|
2
|
+
export { default as StreamText } from './StreamText.svelte';
|
|
3
|
+
export { default as ThinkingLoader } from './ThinkingLoader.svelte';
|
|
4
|
+
export { default as SuggestionChips } from './SuggestionChips.svelte';
|
|
5
|
+
export { default as PromptInput } from './PromptInput.svelte';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<script lang="ts">let { variant = 'info', title, description, closable, icon = true, children, class: className = '', ...props } = $props();
|
|
2
|
+
let visible = $state(true);
|
|
3
|
+
const config = {
|
|
4
|
+
info: { bg: 'bg-information-50', border: 'border-l-4 border-information-500', icon: 'ℹ', iconColor: 'text-information-600', textColor: 'text-information-900' },
|
|
5
|
+
success: { bg: 'bg-success-50', border: 'border-l-4 border-success-500', icon: '✓', iconColor: 'text-success-600', textColor: 'text-success-900' },
|
|
6
|
+
warning: { bg: 'bg-warning-50', border: 'border-l-4 border-warning-500', icon: '⚠', iconColor: 'text-warning-600', textColor: 'text-warning-900' },
|
|
7
|
+
error: { bg: 'bg-error-50', border: 'border-l-4 border-error-500', icon: '✕', iconColor: 'text-error-600', textColor: 'text-error-900' },
|
|
8
|
+
};
|
|
9
|
+
const c = $derived(config[variant]);
|
|
10
|
+
export {};
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
{#if visible}
|
|
14
|
+
<div
|
|
15
|
+
role="alert"
|
|
16
|
+
class="{c.bg} {c.border} rounded p-4 flex gap-3 {className}"
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
{#if icon}
|
|
20
|
+
<span class="shrink-0 font-bold text-base leading-none mt-0.5 {c.iconColor}">{c.icon}</span>
|
|
21
|
+
{/if}
|
|
22
|
+
<div class="flex-1 min-w-0">
|
|
23
|
+
{#if title}
|
|
24
|
+
<p class="font-medium text-sm {c.textColor} mb-0.5">{title}</p>
|
|
25
|
+
{/if}
|
|
26
|
+
{#if typeof description === 'string'}
|
|
27
|
+
<p class="text-sm {c.textColor} opacity-85">{description}</p>
|
|
28
|
+
{:else if description}
|
|
29
|
+
{@render description()}
|
|
30
|
+
{:else if children}
|
|
31
|
+
<div class="text-sm {c.textColor} opacity-85">{@render children()}</div>
|
|
32
|
+
{/if}
|
|
33
|
+
</div>
|
|
34
|
+
{#if closable}
|
|
35
|
+
<button
|
|
36
|
+
type="button"
|
|
37
|
+
class="shrink-0 hover:opacity-60 transition-opacity {c.iconColor}"
|
|
38
|
+
onclick={() => visible = false}
|
|
39
|
+
aria-label="Close"
|
|
40
|
+
>
|
|
41
|
+
<svg class="size-4" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
42
|
+
<path d="M4 4l8 8M12 4l-8 8"/>
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
{/if}
|
|
46
|
+
</div>
|
|
47
|
+
{/if}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type AlertVariant = 'info' | 'success' | 'warning' | 'error';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
variant?: AlertVariant;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string | Snippet;
|
|
7
|
+
closable?: boolean;
|
|
8
|
+
icon?: boolean;
|
|
9
|
+
children?: Snippet;
|
|
10
|
+
class?: string;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
declare const Alert: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
14
|
+
type Alert = ReturnType<typeof Alert>;
|
|
15
|
+
export default Alert;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Alert } from './Alert.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Alert } from './Alert.svelte';
|
|
@@ -1,28 +1,12 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
src,
|
|
11
|
-
class: className,
|
|
12
|
-
border = true,
|
|
13
|
-
ref = $bindable(),
|
|
14
|
-
userUid,
|
|
15
|
-
apiUrl,
|
|
16
|
-
...props
|
|
17
|
-
}: AvatarProps = $props();
|
|
18
|
-
|
|
19
|
-
let isError = $state()
|
|
20
|
-
|
|
21
|
-
function handleErrorImage() {
|
|
22
|
-
isError = true
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
let imgUrl = $derived(src ? src : userUid ? getUserAvatarUrl(userUid, apiUrl) : undefined)
|
|
1
|
+
<script lang="ts">import { styles } from "./Avatar";
|
|
2
|
+
import { getUserAvatarUrl } from "../../internal/service/user.service";
|
|
3
|
+
import { cn } from "../../utils/utils";
|
|
4
|
+
let { children, alt = 'Avatar', size = 'md', src, class: className, border = true, ref = $bindable(), userUid, apiUrl, ...props } = $props();
|
|
5
|
+
let isError = $state();
|
|
6
|
+
function handleErrorImage() {
|
|
7
|
+
isError = true;
|
|
8
|
+
}
|
|
9
|
+
let imgUrl = $derived(src ? src : userUid ? getUserAvatarUrl(userUid, apiUrl) : undefined);
|
|
26
10
|
</script>
|
|
27
11
|
|
|
28
12
|
<div bind:this={ref}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type VariantProps } from "tailwind-variants";
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
4
|
+
export declare const styles: import("tailwind-variants").TVReturnType<{
|
|
5
|
+
variant: {
|
|
6
|
+
default: string;
|
|
7
|
+
primary: string;
|
|
8
|
+
success: string;
|
|
9
|
+
error: string;
|
|
10
|
+
warning: string;
|
|
11
|
+
info: string;
|
|
12
|
+
};
|
|
13
|
+
size: {
|
|
14
|
+
sm: string;
|
|
15
|
+
md: string;
|
|
16
|
+
};
|
|
17
|
+
}, undefined, "inline-flex items-center gap-1 rounded-full font-medium select-none", {
|
|
18
|
+
variant: {
|
|
19
|
+
default: string;
|
|
20
|
+
primary: string;
|
|
21
|
+
success: string;
|
|
22
|
+
error: string;
|
|
23
|
+
warning: string;
|
|
24
|
+
info: string;
|
|
25
|
+
};
|
|
26
|
+
size: {
|
|
27
|
+
sm: string;
|
|
28
|
+
md: string;
|
|
29
|
+
};
|
|
30
|
+
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
31
|
+
variant: {
|
|
32
|
+
default: string;
|
|
33
|
+
primary: string;
|
|
34
|
+
success: string;
|
|
35
|
+
error: string;
|
|
36
|
+
warning: string;
|
|
37
|
+
info: string;
|
|
38
|
+
};
|
|
39
|
+
size: {
|
|
40
|
+
sm: string;
|
|
41
|
+
md: string;
|
|
42
|
+
};
|
|
43
|
+
}, undefined, "inline-flex items-center gap-1 rounded-full font-medium select-none", unknown, unknown, undefined>>;
|
|
44
|
+
type BadgeVariants = VariantProps<typeof styles>;
|
|
45
|
+
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, BadgeVariants {
|
|
46
|
+
children?: Snippet;
|
|
47
|
+
class?: string;
|
|
48
|
+
dot?: boolean;
|
|
49
|
+
closable?: boolean;
|
|
50
|
+
onclose?: () => void;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { tv } from "tailwind-variants";
|
|
2
|
+
export const styles = tv({
|
|
3
|
+
base: 'inline-flex items-center gap-1 rounded-full font-medium select-none',
|
|
4
|
+
variants: {
|
|
5
|
+
variant: {
|
|
6
|
+
default: 'bg-surface-sunken text-text-secondary border border-border-default',
|
|
7
|
+
primary: 'bg-interactive-subtle text-interactive-text border border-interactive-border',
|
|
8
|
+
success: 'bg-success-subtle text-success-text border border-success-border',
|
|
9
|
+
error: 'bg-error-subtle text-error-text border border-error-border',
|
|
10
|
+
warning: 'bg-warning-subtle text-warning-text border border-warning-border',
|
|
11
|
+
info: 'bg-information-subtle text-information-text border border-information-border',
|
|
12
|
+
},
|
|
13
|
+
size: {
|
|
14
|
+
sm: 'px-2 py-0.5 text-[10px] leading-none',
|
|
15
|
+
md: 'px-2.5 py-1 text-[11px] leading-none uppercase tracking-wider',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
defaultVariants: {
|
|
19
|
+
variant: 'default',
|
|
20
|
+
size: 'md',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script lang="ts">import { styles } from './Badge.js';
|
|
2
|
+
let { children, class: className, variant, size, dot, closable, onclose, ...props } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<span class={styles({ variant, size, className })} {...props}>
|
|
6
|
+
{#if dot}
|
|
7
|
+
<span class="size-1.5 rounded-full bg-current opacity-70"></span>
|
|
8
|
+
{/if}
|
|
9
|
+
{@render children?.()}
|
|
10
|
+
{#if closable}
|
|
11
|
+
<button
|
|
12
|
+
type="button"
|
|
13
|
+
class="ml-0.5 hover:opacity-70 transition-opacity leading-none"
|
|
14
|
+
onclick={onclose}
|
|
15
|
+
aria-label="Remove"
|
|
16
|
+
>
|
|
17
|
+
<svg class="size-2.5" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
18
|
+
<path d="M2 2l6 6M8 2l-6 6"/>
|
|
19
|
+
</svg>
|
|
20
|
+
</button>
|
|
21
|
+
{/if}
|
|
22
|
+
</span>
|