tera-system-ui 0.1.64 → 0.1.67
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 -539
- 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 +72 -3
- package/dist/paraglide/messages/_index.d.ts +105 -7
- package/dist/paraglide/messages/_index.js +437 -7
- package/dist/paraglide/messages/ar.d.ts +23 -0
- package/dist/paraglide/messages/ar.js +38 -0
- package/dist/paraglide/messages/bg.d.ts +23 -0
- package/dist/paraglide/messages/bg.js +38 -0
- package/dist/paraglide/messages/bn.d.ts +23 -0
- package/dist/paraglide/messages/bn.js +38 -0
- package/dist/paraglide/messages/ca.d.ts +23 -0
- package/dist/paraglide/messages/ca.js +38 -0
- package/dist/paraglide/messages/cs.d.ts +23 -0
- package/dist/paraglide/messages/cs.js +38 -0
- package/dist/paraglide/messages/da.d.ts +23 -0
- package/dist/paraglide/messages/da.js +38 -0
- package/dist/paraglide/messages/de.d.ts +23 -0
- package/dist/paraglide/messages/de.js +38 -0
- package/dist/paraglide/messages/el.d.ts +23 -0
- package/dist/paraglide/messages/el.js +38 -0
- package/dist/paraglide/messages/en.d.ts +23 -0
- package/dist/paraglide/messages/en.js +38 -0
- package/dist/paraglide/messages/es.d.ts +23 -0
- package/dist/paraglide/messages/es.js +38 -0
- package/dist/paraglide/messages/fi.d.ts +23 -0
- package/dist/paraglide/messages/fi.js +38 -0
- package/dist/paraglide/messages/fr.d.ts +23 -0
- package/dist/paraglide/messages/fr.js +38 -0
- package/dist/paraglide/messages/he.d.ts +23 -0
- package/dist/paraglide/messages/he.js +38 -0
- package/dist/paraglide/messages/hi.d.ts +23 -0
- package/dist/paraglide/messages/hi.js +38 -0
- package/dist/paraglide/messages/hu.d.ts +23 -0
- package/dist/paraglide/messages/hu.js +38 -0
- package/dist/paraglide/messages/id.d.ts +23 -0
- package/dist/paraglide/messages/id.js +38 -0
- package/dist/paraglide/messages/it.d.ts +23 -0
- package/dist/paraglide/messages/it.js +38 -0
- package/dist/paraglide/messages/ja.d.ts +23 -0
- package/dist/paraglide/messages/ja.js +38 -0
- package/dist/paraglide/messages/ko.d.ts +23 -0
- package/dist/paraglide/messages/ko.js +38 -0
- package/dist/paraglide/messages/lt.d.ts +23 -0
- package/dist/paraglide/messages/lt.js +38 -0
- package/dist/paraglide/messages/lv.d.ts +23 -0
- package/dist/paraglide/messages/lv.js +38 -0
- package/dist/paraglide/messages/ms.d.ts +23 -0
- package/dist/paraglide/messages/ms.js +38 -0
- package/dist/paraglide/messages/nl.d.ts +23 -0
- package/dist/paraglide/messages/nl.js +38 -0
- package/dist/paraglide/messages/no.d.ts +23 -0
- package/dist/paraglide/messages/no.js +38 -0
- package/dist/paraglide/messages/pl.d.ts +23 -0
- package/dist/paraglide/messages/pl.js +38 -0
- package/dist/paraglide/messages/pt.d.ts +23 -0
- package/dist/paraglide/messages/pt.js +38 -0
- package/dist/paraglide/messages/ro.d.ts +23 -0
- package/dist/paraglide/messages/ro.js +38 -0
- package/dist/paraglide/messages/ru.d.ts +23 -0
- package/dist/paraglide/messages/ru.js +38 -0
- package/dist/paraglide/messages/sk.d.ts +23 -0
- package/dist/paraglide/messages/sk.js +38 -0
- package/dist/paraglide/messages/sl.d.ts +23 -0
- package/dist/paraglide/messages/sl.js +38 -0
- package/dist/paraglide/messages/sq.d.ts +23 -0
- package/dist/paraglide/messages/sq.js +38 -0
- package/dist/paraglide/messages/sr.d.ts +23 -0
- package/dist/paraglide/messages/sr.js +38 -0
- package/dist/paraglide/messages/sv.d.ts +23 -0
- package/dist/paraglide/messages/sv.js +38 -0
- package/dist/paraglide/messages/sw.d.ts +23 -0
- package/dist/paraglide/messages/sw.js +38 -0
- package/dist/paraglide/messages/ta.d.ts +23 -0
- package/dist/paraglide/messages/ta.js +38 -0
- package/dist/paraglide/messages/te.d.ts +23 -0
- package/dist/paraglide/messages/te.js +38 -0
- package/dist/paraglide/messages/th.d.ts +23 -0
- package/dist/paraglide/messages/th.js +38 -0
- package/dist/paraglide/messages/tl.d.ts +23 -0
- package/dist/paraglide/messages/tl.js +38 -0
- package/dist/paraglide/messages/tr.d.ts +23 -0
- package/dist/paraglide/messages/tr.js +38 -0
- package/dist/paraglide/messages/uk.d.ts +23 -0
- package/dist/paraglide/messages/uk.js +38 -0
- package/dist/paraglide/messages/vi.d.ts +23 -0
- package/dist/paraglide/messages/vi.js +38 -0
- package/dist/paraglide/messages/zh-CN.d.ts +23 -0
- package/dist/paraglide/messages/zh-CN.js +38 -0
- package/dist/paraglide/messages/zh-TW.d.ts +23 -0
- package/dist/paraglide/messages/zh-TW.js +38 -0
- package/dist/paraglide/registry.d.ts +13 -0
- package/dist/paraglide/registry.js +15 -0
- package/dist/paraglide/runtime.d.ts +243 -126
- package/dist/paraglide/runtime.js +473 -148
- 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/themes/tera-ui-base.css +664 -470
- 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 +35 -29
- package/dist/paraglide/messages/text_account_settings.d.ts +0 -4
- package/dist/paraglide/messages/text_account_settings.js +0 -239
- package/dist/paraglide/messages/text_calces_documentation.d.ts +0 -4
- package/dist/paraglide/messages/text_calces_documentation.js +0 -239
- package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +0 -4
- package/dist/paraglide/messages/text_calces_scientific_calculator.js +0 -239
- package/dist/paraglide/messages/text_currency_converter.d.ts +0 -4
- package/dist/paraglide/messages/text_currency_converter.js +0 -239
- package/dist/paraglide/messages/text_logout.d.ts +0 -4
- package/dist/paraglide/messages/text_logout.js +0 -239
- package/dist/paraglide/messages/text_select_language.d.ts +0 -4
- package/dist/paraglide/messages/text_select_language.js +0 -239
- package/dist/paraglide/messages/text_unit_converter.d.ts +0 -4
- package/dist/paraglide/messages/text_unit_converter.js +0 -239
- 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,164 +1,38 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// Add mouseout listener to window
|
|
40
|
-
window.addEventListener('mouseout', (e) => {
|
|
41
|
-
if ((e.relatedTarget as HTMLElement)?.tagName === 'IFRAME') { // Mouse left the window
|
|
42
|
-
stopDragging();
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// For touch support
|
|
48
|
-
slider.addEventListener('touchstart', (e) => {
|
|
49
|
-
sliderHandle.setAttribute('data-state', 'dragging');
|
|
50
|
-
onDrag(e);
|
|
51
|
-
document.addEventListener('touchmove', onDrag, {passive: false});
|
|
52
|
-
document.addEventListener('touchend', stopDragging, {once: true});
|
|
53
|
-
}, {passive: false});
|
|
54
|
-
|
|
55
|
-
sliderHandle.addEventListener('pointerenter', (e) => {
|
|
56
|
-
toggleToolTip(true);
|
|
57
|
-
sliderHandle.addEventListener('pointerleave', (e) => {
|
|
58
|
-
toggleToolTip(false);
|
|
59
|
-
}, {once: true});
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
let tooltipInterval: ReturnType<typeof setTimeout> | undefined;
|
|
65
|
-
|
|
66
|
-
function toggleToolTip(open: boolean) {
|
|
67
|
-
if (tooltipInterval) clearInterval(tooltipInterval)
|
|
68
|
-
|
|
69
|
-
if (open) {
|
|
70
|
-
sliderTooltip?.classList.add('show');
|
|
71
|
-
} else {
|
|
72
|
-
tooltipInterval = setTimeout(() => {
|
|
73
|
-
sliderTooltip?.classList.remove('show');
|
|
74
|
-
}, 300)
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const calculateValue = (position: number) => {
|
|
80
|
-
const sliderWidth = sliderRail?.offsetWidth || 0;
|
|
81
|
-
const totalSteps = (max - min) / step;
|
|
82
|
-
const stepSize = sliderWidth / totalSteps;
|
|
83
|
-
|
|
84
|
-
// Clamp position within the slider width
|
|
85
|
-
const clampedPosition = Math.max(0, Math.min(position, sliderWidth));
|
|
86
|
-
// Calculate steps with decimal precision
|
|
87
|
-
const stepCount = Math.round(clampedPosition / stepSize);
|
|
88
|
-
|
|
89
|
-
// Calculate the value with proper decimal precision
|
|
90
|
-
const value = min + (stepCount * step);
|
|
91
|
-
// Round to avoid floating-point precision errors
|
|
92
|
-
return Number(value.toFixed(10));
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const onDrag = (event: PointerEvent | TouchEvent) => {
|
|
96
|
-
event.preventDefault();
|
|
97
|
-
event.stopPropagation();
|
|
98
|
-
toggleToolTip(true)
|
|
99
|
-
|
|
100
|
-
let position
|
|
101
|
-
|
|
102
|
-
if (event.type.startsWith('touch')) {
|
|
103
|
-
const touch = (event as TouchEvent).touches[0];
|
|
104
|
-
position = touch.clientX - (slider?.getBoundingClientRect().left || 0);
|
|
105
|
-
} else {
|
|
106
|
-
position = (event as PointerEvent).clientX - (slider?.getBoundingClientRect().left || 0);
|
|
107
|
-
}
|
|
108
|
-
let newValue = calculateValue(position);
|
|
109
|
-
|
|
110
|
-
if (newValue !== value) {
|
|
111
|
-
value = newValue;
|
|
112
|
-
onchange?.(value);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
updateSliderByValue(newValue)
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
$effect(() => {
|
|
120
|
-
if (value == undefined) {
|
|
121
|
-
value = min
|
|
122
|
-
}
|
|
123
|
-
updateSliderByValue(value)
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
function updateSliderByValue(_v: number) {
|
|
127
|
-
const percentage = ((value - min) / (max - min)) * 100
|
|
128
|
-
|
|
129
|
-
// Update the position of the handle and track width
|
|
130
|
-
if (sliderHandle) sliderHandle.style.left = `${percentage}%`;
|
|
131
|
-
if (sliderTooltip) sliderTooltip.style.left = `${percentage}%`;
|
|
132
|
-
if (sliderTrack) sliderTrack.style.width = `${percentage}%`;
|
|
133
|
-
}
|
|
134
|
-
</script>
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
<div bind:this={slider} class="cursor-pointer w-full relative px-1 py-2.5">
|
|
138
|
-
<div data-slider-rail bind:this={sliderRail} class="w-full h-1.5 bg-neutral-token-4 rounded-full overflow-hidden hover:bg-neutral-token-5 transition-colors duration-200">
|
|
139
|
-
<div data-slider-track bind:this={sliderTrack} class="rounded-full w-full h-full bg-neutral-token-13"></div>
|
|
140
|
-
</div>
|
|
141
|
-
|
|
142
|
-
<div
|
|
143
|
-
bind:this={sliderHandle}
|
|
144
|
-
data-slider-handle
|
|
145
|
-
tabindex="0"
|
|
146
|
-
role="slider"
|
|
147
|
-
aria-valuemin={`${(min ?? 0)}`}
|
|
148
|
-
aria-valuemax={`${(max ?? 0)}`}
|
|
149
|
-
aria-valuenow={`${(value ?? 0)}`}
|
|
150
|
-
aria-orientation="horizontal"
|
|
151
|
-
class="slider-handle -translate-x-1/2 absolute top-1/2 -translate-y-1/2 rounded-full bg-neutral-token-1 border-2 outline-1 outline-neutral-token-1 border-neutral-token-13 size-4 shadow-sm"
|
|
152
|
-
>
|
|
153
|
-
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
|
-
<div bind:this={sliderTooltip} data-slider-tooltip class="">
|
|
157
|
-
<span class="z-10 relative text-xs">
|
|
158
|
-
{value}
|
|
159
|
-
</span>
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
|
|
163
|
-
<style>/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
164
|
-
.slider-handle{transition:all .2s cubic-bezier(.645,.045,.355,1),left}:is(.slider-handle:global([data-state="dragging"]),.slider-handle:hover,.slider-handle:focus,.slider-handle:active,.slider-handle:focus-visible){border-width:2px;transform:scale(1.2);box-shadow:0 0 0 4px #3b82f61f}.slider-handle:focus-visible{outline:none}[data-slider-tooltip]{pointer-events:none;background-color:var(--color-neutral-token-12);width:fit-content;color:var(--color-neutral-token-1);z-index:10;border-radius:6px;padding:4px 8px;font-size:12px;line-height:1.5;position:absolute;left:50%}[data-slider-tooltip]:after{content:"";background-color:var(--color-neutral-token-12);border-radius:2px;width:8px;height:8px;position:absolute;bottom:-3px;left:50%;transform:translate(-50%)rotate(45deg)}[data-slider-tooltip]{opacity:0;transition:all .2s cubic-bezier(.645,.045,.355,1),left;transform:translateY(-2.5rem)translate(-50%)scale(.9)}[data-slider-tooltip]:global(.show){opacity:1;transform:translateY(-3rem)translate(-50%)scale(1)}</style>
|
|
1
|
+
<script lang="ts">import { Slider as SliderPrimitive } from 'bits-ui';
|
|
2
|
+
let { min = 0, max = 100, step = 1, value = $bindable(0), onchange, onValueCommit, disabled, orientation = 'horizontal', class: className = '', } = $props();
|
|
3
|
+
const isVertical = $derived(orientation === 'vertical');
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<SliderPrimitive.Root
|
|
7
|
+
type="single"
|
|
8
|
+
bind:value
|
|
9
|
+
onValueChange={onchange}
|
|
10
|
+
{onValueCommit}
|
|
11
|
+
{min}
|
|
12
|
+
{max}
|
|
13
|
+
{step}
|
|
14
|
+
{disabled}
|
|
15
|
+
{orientation}
|
|
16
|
+
class="{isVertical
|
|
17
|
+
? 'relative flex flex-col h-full touch-none select-none items-center px-2.5'
|
|
18
|
+
: 'relative flex w-full touch-none select-none items-center py-2.5'
|
|
19
|
+
} {disabled ? 'opacity-50 pointer-events-none' : ''} {className}"
|
|
20
|
+
>
|
|
21
|
+
{#snippet children({ thumbItems })}
|
|
22
|
+
<!-- Track wrapper -->
|
|
23
|
+
<div class="{isVertical ? 'relative w-1.5 h-full grow rounded-full' : 'relative h-1.5 w-full grow rounded-full'} bg-neutral-token-4">
|
|
24
|
+
<SliderPrimitive.Range class="{isVertical ? 'absolute w-full bottom-0' : 'absolute h-full'} bg-interactive rounded-full" />
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
{#each thumbItems as { index } (index)}
|
|
28
|
+
<SliderPrimitive.Thumb
|
|
29
|
+
{index}
|
|
30
|
+
class="block size-4 rounded-full border-2 border-interactive bg-surface-control shadow-sm outline-none
|
|
31
|
+
transition-[box-shadow,transform] ease-ui duration-150
|
|
32
|
+
hover:shadow-focus hover:scale-110
|
|
33
|
+
focus-visible:shadow-focus focus-visible:scale-110
|
|
34
|
+
data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
35
|
+
/>
|
|
36
|
+
{/each}
|
|
37
|
+
{/snippet}
|
|
38
|
+
</SliderPrimitive.Root>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { size = 'md', color = 'primary', class: className = '', } = $props();
|
|
3
|
+
const sizeMap = { xs: 12, sm: 16, md: 20, lg: 28 };
|
|
4
|
+
const colorMap = {
|
|
5
|
+
primary: 'var(--color-interactive)',
|
|
6
|
+
white: '#ffffff',
|
|
7
|
+
current: 'currentColor',
|
|
8
|
+
};
|
|
9
|
+
const px = $derived(sizeMap[size]);
|
|
10
|
+
const stroke = $derived(colorMap[color]);
|
|
11
|
+
const r = 8;
|
|
12
|
+
const circumference = 2 * Math.PI * r;
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<svg
|
|
16
|
+
class="animate-spin {className}"
|
|
17
|
+
width={px}
|
|
18
|
+
height={px}
|
|
19
|
+
viewBox="0 0 20 20"
|
|
20
|
+
fill="none"
|
|
21
|
+
aria-label="Loading"
|
|
22
|
+
role="status"
|
|
23
|
+
>
|
|
24
|
+
<circle
|
|
25
|
+
cx="10" cy="10" r={r}
|
|
26
|
+
stroke={stroke}
|
|
27
|
+
stroke-width="2"
|
|
28
|
+
stroke-opacity="0.25"
|
|
29
|
+
/>
|
|
30
|
+
<circle
|
|
31
|
+
cx="10" cy="10" r={r}
|
|
32
|
+
stroke={stroke}
|
|
33
|
+
stroke-width="2"
|
|
34
|
+
stroke-linecap="round"
|
|
35
|
+
stroke-dasharray={circumference}
|
|
36
|
+
stroke-dashoffset={circumference * 0.75}
|
|
37
|
+
transform="rotate(-90 10 10)"
|
|
38
|
+
/>
|
|
39
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
2
|
+
type SpinnerColor = 'primary' | 'white' | 'current';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
size?: SpinnerSize;
|
|
5
|
+
color?: SpinnerColor;
|
|
6
|
+
class?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const Spinner: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type Spinner = ReturnType<typeof Spinner>;
|
|
10
|
+
export default Spinner;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Spinner } from './Spinner.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Spinner } from './Spinner.svelte';
|
|
@@ -1,51 +1,35 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Updates hover state when hovering over a star
|
|
37
|
-
function setHover(v, e) {
|
|
38
|
-
hoverRating = v;
|
|
39
|
-
// console.log('setHover', v, e.type)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Resets hover state when leaving the star area
|
|
43
|
-
function resetHover(e) {
|
|
44
|
-
|
|
45
|
-
hoverRating = 0;
|
|
46
|
-
// console.log('resetHover', e.type)
|
|
47
|
-
}
|
|
48
|
-
|
|
1
|
+
<script lang="ts">import { styles } from "./StarRating";
|
|
2
|
+
let { children, value = $bindable(), onchange, size = 'md', ...props } = $props();
|
|
3
|
+
let hoverRating = $state(0);
|
|
4
|
+
// Descriptive texts for each star rating
|
|
5
|
+
const descriptions = [
|
|
6
|
+
'Very Bad',
|
|
7
|
+
'Bad',
|
|
8
|
+
'Okay',
|
|
9
|
+
'Good',
|
|
10
|
+
'Excellent'
|
|
11
|
+
];
|
|
12
|
+
// Sets the rating when a star is clicked
|
|
13
|
+
function setRating(v, e) {
|
|
14
|
+
if (value != v) {
|
|
15
|
+
value = v;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
value = undefined;
|
|
19
|
+
}
|
|
20
|
+
onchange?.(v);
|
|
21
|
+
// console.log('setRating', e.type)
|
|
22
|
+
}
|
|
23
|
+
// Updates hover state when hovering over a star
|
|
24
|
+
function setHover(v, e) {
|
|
25
|
+
hoverRating = v;
|
|
26
|
+
// console.log('setHover', v, e.type)
|
|
27
|
+
}
|
|
28
|
+
// Resets hover state when leaving the star area
|
|
29
|
+
function resetHover(e) {
|
|
30
|
+
hoverRating = 0;
|
|
31
|
+
// console.log('resetHover', e.type)
|
|
32
|
+
}
|
|
49
33
|
</script>
|
|
50
34
|
|
|
51
35
|
<div
|
|
@@ -60,7 +44,7 @@
|
|
|
60
44
|
aria-setsize="5"
|
|
61
45
|
data-rating-icon
|
|
62
46
|
data-hovering={hoverRating === (index + 1)}
|
|
63
|
-
aria-label=
|
|
47
|
+
aria-label={`Rate ${index + 1} out of 5 stars`}
|
|
64
48
|
onpointerenter={(e) => setHover(index + 1, e)}
|
|
65
49
|
onpointerleave={resetHover}
|
|
66
50
|
ontouchendcapture={resetHover}
|
|
@@ -1,12 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @component Switch - Toggle switch for boolean on/off state.
|
|
3
|
+
* Built on BitsUI Switch primitive with form integration support.
|
|
4
|
+
*/
|
|
1
5
|
import { type VariantProps } from "tailwind-variants";
|
|
2
|
-
import type { Snippet } from "svelte";
|
|
3
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
4
6
|
export declare const styles: import("tailwind-variants").TVReturnType<{}, undefined, "", {}, undefined, import("tailwind-variants").TVReturnType<{}, undefined, "", unknown, unknown, undefined>>;
|
|
5
7
|
type SwitchVariants = VariantProps<typeof styles>;
|
|
6
|
-
export interface SwitchProps extends
|
|
7
|
-
|
|
8
|
+
export interface SwitchProps extends SwitchVariants {
|
|
9
|
+
/** Additional CSS classes for the root element. */
|
|
8
10
|
class?: string;
|
|
11
|
+
/** Whether the switch is on. Bindable. */
|
|
9
12
|
checked?: boolean;
|
|
13
|
+
/** Prevents all interaction and dims the control. */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Whether the switch is required for form submission. */
|
|
16
|
+
required?: boolean;
|
|
17
|
+
/** Name attribute used when submitting within a form. */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** Value sent with the form when the switch is checked. */
|
|
20
|
+
value?: string;
|
|
21
|
+
/** Called when the checked state changes. */
|
|
22
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
23
|
+
/** Bindable reference to the root button element. */
|
|
10
24
|
ref?: HTMLButtonElement | null;
|
|
25
|
+
[key: string]: unknown;
|
|
11
26
|
}
|
|
12
27
|
export {};
|
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {cn} from "../../utils";
|
|
5
|
-
|
|
6
|
-
let {
|
|
7
|
-
ref = $bindable(null),
|
|
8
|
-
class: className,
|
|
9
|
-
checked = $bindable(false),
|
|
10
|
-
...restProps
|
|
11
|
-
}: WithoutChildrenOrChild<SwitchPrimitive.RootProps> = $props();
|
|
12
|
-
|
|
1
|
+
<script lang="ts">import { Switch as SwitchPrimitive } from "bits-ui";
|
|
2
|
+
import { cn } from "../../utils/index.js";
|
|
3
|
+
let { ref = $bindable(null), class: className, checked = $bindable(false), disabled, required, name, value, onCheckedChange, ...restProps } = $props();
|
|
13
4
|
</script>
|
|
14
5
|
|
|
15
6
|
<SwitchPrimitive.Root
|
|
16
7
|
{...restProps}
|
|
17
8
|
bind:checked
|
|
18
9
|
bind:ref
|
|
10
|
+
{disabled}
|
|
11
|
+
{required}
|
|
12
|
+
{name}
|
|
13
|
+
{value}
|
|
14
|
+
{onCheckedChange}
|
|
19
15
|
class={cn(
|
|
20
|
-
"relative group peer h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full transition-
|
|
21
|
-
"focus-visible:outline-none focus-visible:shadow-
|
|
22
|
-
"data-[state=checked]:bg-
|
|
23
|
-
"data-[state=unchecked]:bg-
|
|
16
|
+
"relative group peer h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full transition-[background-color,box-shadow] ease-ui duration-200",
|
|
17
|
+
"focus-visible:outline-none focus-visible:shadow-focus",
|
|
18
|
+
"data-[state=checked]:bg-interactive",
|
|
19
|
+
"data-[state=unchecked]:bg-border-default",
|
|
24
20
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
25
21
|
"overflow-hidden",
|
|
26
22
|
className
|
|
@@ -32,7 +28,7 @@
|
|
|
32
28
|
|
|
33
29
|
<SwitchPrimitive.Thumb
|
|
34
30
|
class={cn(
|
|
35
|
-
"pointer-events-none block size-[18px] rounded-full bg-neutral-1 transition-transform duration-
|
|
31
|
+
"pointer-events-none block size-[18px] rounded-full bg-neutral-1 transition-transform ease-spring duration-[250ms]",
|
|
36
32
|
"shadow-[0_2px_4px_rgba(0,0,0,0.2)]",
|
|
37
33
|
"data-[state=checked]:translate-x-[23px] data-[state=unchecked]:translate-x-[2px]"
|
|
38
34
|
)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const Switch: import("svelte").Component<
|
|
1
|
+
import type { SwitchProps } from './Switch.js';
|
|
2
|
+
declare const Switch: import("svelte").Component<SwitchProps, {}, "ref" | "checked">;
|
|
3
3
|
type Switch = ReturnType<typeof Switch>;
|
|
4
4
|
export default Switch;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<script lang="ts" generics="T extends Record<string, unknown>">import { Skeleton } from '../skeleton/index.js';
|
|
2
|
+
let { columns, data, loading, empty, striped, stickyHeader, onRowClick, class: className = '', } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class="w-full overflow-auto {className}">
|
|
6
|
+
<table class="w-full text-sm text-left border-collapse">
|
|
7
|
+
<thead class="bg-surface-sunken {stickyHeader ? 'sticky top-0 z-10' : ''}">
|
|
8
|
+
<tr>
|
|
9
|
+
{#each columns as col (col.key)}
|
|
10
|
+
<th
|
|
11
|
+
class="px-4 py-3 font-medium text-text-secondary whitespace-nowrap border-b border-border-default"
|
|
12
|
+
style={col.width ? `width:${col.width}` : ''}
|
|
13
|
+
class:text-center={col.align === 'center'}
|
|
14
|
+
class:text-right={col.align === 'right'}
|
|
15
|
+
>
|
|
16
|
+
{col.label}
|
|
17
|
+
</th>
|
|
18
|
+
{/each}
|
|
19
|
+
</tr>
|
|
20
|
+
</thead>
|
|
21
|
+
<tbody>
|
|
22
|
+
{#if loading}
|
|
23
|
+
{#each Array(4) as _, i (i)}
|
|
24
|
+
<tr>
|
|
25
|
+
{#each columns as col (col.key)}
|
|
26
|
+
<td class="px-4 py-3 border-b border-border-default">
|
|
27
|
+
<Skeleton variant="line" />
|
|
28
|
+
</td>
|
|
29
|
+
{/each}
|
|
30
|
+
</tr>
|
|
31
|
+
{/each}
|
|
32
|
+
{:else if data.length === 0}
|
|
33
|
+
<tr>
|
|
34
|
+
<td colspan={columns.length} class="px-4 py-10 text-center text-text-tertiary">
|
|
35
|
+
{#if empty}
|
|
36
|
+
{@render empty()}
|
|
37
|
+
{:else}
|
|
38
|
+
No data
|
|
39
|
+
{/if}
|
|
40
|
+
</td>
|
|
41
|
+
</tr>
|
|
42
|
+
{:else}
|
|
43
|
+
{#each data as row, i (i)}
|
|
44
|
+
<tr
|
|
45
|
+
class="border-b border-border-default transition-colors ease-ui duration-100
|
|
46
|
+
{striped && i % 2 === 1 ? 'bg-surface-sunken' : 'bg-transparent'}
|
|
47
|
+
{onRowClick ? 'cursor-pointer hover:bg-surface-hover' : 'hover:bg-surface-hover'}"
|
|
48
|
+
onclick={() => onRowClick?.(row)}
|
|
49
|
+
>
|
|
50
|
+
{#each columns as col (col.key)}
|
|
51
|
+
<td
|
|
52
|
+
class="px-4 py-3 text-text-primary"
|
|
53
|
+
class:text-center={col.align === 'center'}
|
|
54
|
+
class:text-right={col.align === 'right'}
|
|
55
|
+
>
|
|
56
|
+
{#if col.render}
|
|
57
|
+
{@render col.render(row)}
|
|
58
|
+
{:else}
|
|
59
|
+
{row[col.key] ?? ''}
|
|
60
|
+
{/if}
|
|
61
|
+
</td>
|
|
62
|
+
{/each}
|
|
63
|
+
</tr>
|
|
64
|
+
{/each}
|
|
65
|
+
{/if}
|
|
66
|
+
</tbody>
|
|
67
|
+
</table>
|
|
68
|
+
</div>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
declare function $$render<T extends Record<string, unknown>>(): {
|
|
3
|
+
props: {
|
|
4
|
+
columns: {
|
|
5
|
+
key: string;
|
|
6
|
+
label: string;
|
|
7
|
+
width?: string;
|
|
8
|
+
align?: "left" | "center" | "right";
|
|
9
|
+
render?: Snippet<[T]> | undefined;
|
|
10
|
+
}[];
|
|
11
|
+
data: T[];
|
|
12
|
+
loading?: boolean;
|
|
13
|
+
empty?: Snippet;
|
|
14
|
+
striped?: boolean;
|
|
15
|
+
stickyHeader?: boolean;
|
|
16
|
+
onRowClick?: (row: T) => void;
|
|
17
|
+
class?: string;
|
|
18
|
+
};
|
|
19
|
+
exports: {};
|
|
20
|
+
bindings: "";
|
|
21
|
+
slots: {};
|
|
22
|
+
events: {};
|
|
23
|
+
};
|
|
24
|
+
declare class __sveltets_Render<T extends Record<string, unknown>> {
|
|
25
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
26
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
27
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
28
|
+
bindings(): "";
|
|
29
|
+
exports(): {};
|
|
30
|
+
}
|
|
31
|
+
interface $$IsomorphicComponent {
|
|
32
|
+
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
33
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
34
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
35
|
+
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
36
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
37
|
+
}
|
|
38
|
+
declare const Table: $$IsomorphicComponent;
|
|
39
|
+
type Table<T extends Record<string, unknown>> = InstanceType<typeof Table<T>>;
|
|
40
|
+
export default Table;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Table } from './Table.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Table } from './Table.svelte';
|
|
@@ -1,34 +1,63 @@
|
|
|
1
1
|
import type { Snippet } from "svelte";
|
|
2
|
-
|
|
3
|
-
export type
|
|
2
|
+
export type TabsVariant = 'line' | 'ios';
|
|
3
|
+
export type TabsContext = {
|
|
4
|
+
readonly variant: TabsVariant;
|
|
5
|
+
readonly orientation: 'horizontal' | 'vertical';
|
|
6
|
+
};
|
|
7
|
+
export declare const setTabsContext: (ctx: TabsContext) => TabsContext;
|
|
8
|
+
export declare const getTabsContext: () => TabsContext;
|
|
9
|
+
export type TabsProps = {
|
|
4
10
|
children?: Snippet;
|
|
11
|
+
/** Currently active tab value. Bindable. */
|
|
5
12
|
value?: string;
|
|
13
|
+
/** Called when the active tab changes. */
|
|
6
14
|
onchange?: (newTab: string) => void;
|
|
15
|
+
/** Additional CSS classes for the root element. */
|
|
7
16
|
class?: string;
|
|
17
|
+
/** Visual style of the tab list. */
|
|
18
|
+
variant?: TabsVariant;
|
|
19
|
+
/**
|
|
20
|
+
* How tabs activate on keyboard focus.
|
|
21
|
+
* - 'automatic': tab content switches immediately when a tab receives focus.
|
|
22
|
+
* - 'manual': the user must press Enter or Space to activate a focused tab.
|
|
23
|
+
*/
|
|
24
|
+
activationMode?: 'automatic' | 'manual';
|
|
25
|
+
/**
|
|
26
|
+
* Orientation of the tab list.
|
|
27
|
+
* 'vertical' renders the list as a column alongside the content.
|
|
28
|
+
* Only supported with the 'line' variant.
|
|
29
|
+
*/
|
|
30
|
+
orientation?: 'horizontal' | 'vertical';
|
|
31
|
+
/** Whether keyboard navigation wraps from the last tab back to the first. */
|
|
32
|
+
loop?: boolean;
|
|
33
|
+
/** Bindable reference to the root element. */
|
|
8
34
|
ref?: HTMLDivElement | null;
|
|
35
|
+
[key: string]: unknown;
|
|
9
36
|
};
|
|
10
|
-
export type TabsListProps =
|
|
37
|
+
export type TabsListProps = {
|
|
11
38
|
children?: Snippet;
|
|
39
|
+
/** Additional CSS classes for the tab list container. */
|
|
12
40
|
class?: string;
|
|
13
|
-
ref?:
|
|
41
|
+
ref?: HTMLElement | null;
|
|
42
|
+
[key: string]: unknown;
|
|
14
43
|
};
|
|
15
|
-
export type TabsItemProps =
|
|
44
|
+
export type TabsItemProps = {
|
|
16
45
|
children?: Snippet;
|
|
46
|
+
/** The value this tab represents — must match a TabsContent value. */
|
|
17
47
|
value: string;
|
|
48
|
+
/** Prevents the user from activating this tab. */
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
/** Additional CSS classes for the tab trigger. */
|
|
18
51
|
class?: string;
|
|
19
|
-
ref?:
|
|
52
|
+
ref?: HTMLElement | null;
|
|
53
|
+
[key: string]: unknown;
|
|
20
54
|
};
|
|
21
|
-
export type TabsContentProps =
|
|
55
|
+
export type TabsContentProps = {
|
|
22
56
|
children?: Snippet;
|
|
57
|
+
/** The value this content panel corresponds to — must match a TabsItem value. */
|
|
23
58
|
value: string;
|
|
59
|
+
/** Additional CSS classes for the content panel. */
|
|
24
60
|
class?: string;
|
|
25
|
-
ref?:
|
|
61
|
+
ref?: HTMLElement | null;
|
|
62
|
+
[key: string]: unknown;
|
|
26
63
|
};
|
|
27
|
-
export type TabsContext = {
|
|
28
|
-
currentTab: string | undefined;
|
|
29
|
-
};
|
|
30
|
-
export declare function createContext(props: {
|
|
31
|
-
currentTab?: string;
|
|
32
|
-
onchange?: (newTab: string) => void;
|
|
33
|
-
}): void;
|
|
34
|
-
export declare function getCtx(): TabsContext;
|