tera-system-ui 0.1.75 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordion/Accordion.recipe.d.ts +125 -0
- package/dist/components/accordion/Accordion.recipe.js +28 -0
- package/dist/components/accordion/components/Accordion.svelte +4 -1
- package/dist/components/accordion/components/AccordionContent.svelte +4 -6
- package/dist/components/accordion/components/AccordionItem.svelte +3 -2
- package/dist/components/accordion/components/AccordionTrigger.svelte +11 -9
- package/dist/components/accordion/components/AccordionTrigger.svelte.d.ts +3 -0
- package/dist/components/accordion/index.d.ts +2 -1
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/alert/Alert.recipe.d.ts +113 -0
- package/dist/components/alert/Alert.recipe.js +53 -0
- package/dist/components/alert/Alert.svelte +28 -18
- package/dist/components/alert/Alert.svelte.d.ts +2 -13
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.js +1 -0
- package/dist/components/avatar/Avatar.recipe.d.ts +113 -0
- package/dist/components/avatar/Avatar.recipe.js +37 -0
- package/dist/components/avatar/Avatar.svelte +19 -24
- package/dist/components/avatar/Avatar.svelte.d.ts +1 -1
- package/dist/components/avatar/index.d.ts +2 -1
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/badge/Badge.recipe.d.ts +68 -0
- package/dist/components/badge/Badge.recipe.js +35 -0
- package/dist/components/badge/Badge.svelte +15 -7
- package/dist/components/badge/Badge.svelte.d.ts +1 -1
- package/dist/components/badge/index.d.ts +2 -1
- package/dist/components/badge/index.js +1 -0
- package/dist/components/bottom-sheet/BottomSheet.recipe.d.ts +121 -0
- package/dist/components/bottom-sheet/BottomSheet.recipe.js +47 -0
- package/dist/components/bottom-sheet/BottomSheet.svelte +847 -0
- package/dist/components/bottom-sheet/BottomSheet.svelte.d.ts +4 -0
- package/dist/components/bottom-sheet/bottomSheetStore.svelte.d.ts +39 -0
- package/dist/components/bottom-sheet/bottomSheetStore.svelte.js +158 -0
- package/dist/components/bottom-sheet/index.d.ts +5 -0
- package/dist/components/bottom-sheet/index.js +3 -0
- package/dist/components/button/Button.recipe.d.ts +131 -0
- package/dist/components/button/Button.recipe.js +120 -0
- package/dist/components/button/Button.svelte +37 -23
- package/dist/components/button/Button.svelte.d.ts +1 -1
- package/dist/components/button/index.d.ts +2 -1
- package/dist/components/button/index.js +1 -0
- package/dist/components/card/{Card.d.ts → Card.recipe.d.ts} +18 -6
- package/dist/components/card/Card.recipe.js +41 -0
- package/dist/components/card/Card.svelte +5 -5
- package/dist/components/card/Card.svelte.d.ts +1 -1
- package/dist/components/card/index.d.ts +2 -1
- package/dist/components/card/index.js +1 -0
- package/dist/components/checkbox/Checkbox.recipe.d.ts +80 -0
- package/dist/components/checkbox/Checkbox.recipe.js +39 -0
- package/dist/components/checkbox/Checkbox.svelte +29 -35
- package/dist/components/checkbox/Checkbox.svelte.d.ts +1 -1
- package/dist/components/checkbox/index.d.ts +2 -1
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/combobox/Combobox.recipe.d.ts +138 -0
- package/dist/components/combobox/Combobox.recipe.js +50 -0
- package/dist/components/combobox/Combobox.svelte +57 -37
- package/dist/components/combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/combobox/index.d.ts +2 -1
- package/dist/components/combobox/index.js +1 -0
- package/dist/components/command/Command.recipe.d.ts +92 -0
- package/dist/components/command/Command.recipe.js +31 -0
- package/dist/components/command/components/command-empty.svelte +2 -2
- package/dist/components/command/components/command-group.svelte +4 -3
- package/dist/components/command/components/command-input.svelte +3 -7
- package/dist/components/command/components/command-item.svelte +2 -5
- package/dist/components/command/components/command-link-item.svelte +2 -5
- package/dist/components/command/components/command-list.svelte +2 -2
- package/dist/components/command/components/command-separator.svelte +2 -2
- package/dist/components/command/components/command-shortcut.svelte +2 -2
- package/dist/components/command/components/command-shortcut.svelte.d.ts +1 -1
- package/dist/components/command/components/command.svelte +2 -5
- package/dist/components/command/index.d.ts +2 -0
- package/dist/components/command/index.js +1 -0
- package/dist/components/date-range-picker/DateRangePicker.recipe.d.ts +220 -0
- package/dist/components/date-range-picker/DateRangePicker.recipe.js +113 -0
- package/dist/components/date-range-picker/DateRangePicker.svelte +53 -72
- package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +1 -1
- package/dist/components/date-range-picker/index.d.ts +2 -1
- package/dist/components/date-range-picker/index.js +1 -0
- package/dist/components/dialog/Dialog.recipe.d.ts +229 -0
- package/dist/components/dialog/Dialog.recipe.js +68 -0
- package/dist/components/dialog/Dialog.svelte +21 -39
- package/dist/components/dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/dialog/index.d.ts +2 -1
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/drawer/Drawer.recipe.d.ts +140 -0
- package/dist/components/drawer/Drawer.recipe.js +50 -0
- package/dist/components/drawer/Drawer.svelte +16 -24
- package/dist/components/drawer/Drawer.svelte.d.ts +2 -14
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/dropdown-menu/{DropdownMenu.d.ts → DropdownMenu.recipe.d.ts} +63 -4
- package/dist/components/dropdown-menu/DropdownMenu.recipe.js +41 -0
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte +3 -8
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +3 -2
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +3 -2
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +3 -9
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +3 -2
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/index.d.ts +2 -1
- package/dist/components/dropdown-menu/index.js +1 -0
- package/dist/components/fonts/TeraFontMono.svelte +1 -1
- package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -1
- package/dist/components/input/Input.recipe.d.ts +166 -0
- package/dist/components/input/Input.recipe.js +86 -0
- package/dist/components/input/Input.svelte +43 -38
- package/dist/components/input/Input.svelte.d.ts +1 -1
- package/dist/components/input/index.d.ts +2 -1
- package/dist/components/input/index.js +1 -0
- package/dist/components/label/Label.recipe.d.ts +46 -0
- package/dist/components/label/Label.recipe.js +27 -0
- package/dist/components/label/Label.svelte +2 -2
- package/dist/components/label/Label.svelte.d.ts +1 -1
- package/dist/components/label/index.d.ts +2 -1
- package/dist/components/label/index.js +1 -0
- package/dist/components/popover/Popover.recipe.d.ts +80 -0
- package/dist/components/popover/Popover.recipe.js +23 -0
- package/dist/components/popover/Popover.svelte +4 -8
- package/dist/components/popover/Popover.svelte.d.ts +1 -1
- package/dist/components/popover/index.d.ts +2 -1
- package/dist/components/popover/index.js +1 -0
- package/dist/components/popover-responsive/PopoverResponsive.recipe.d.ts +85 -0
- package/dist/components/popover-responsive/PopoverResponsive.recipe.js +27 -0
- package/dist/components/popover-responsive/PopoverResponsive.svelte +38 -5
- package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +1 -1
- package/dist/components/popover-responsive/index.d.ts +2 -1
- package/dist/components/popover-responsive/index.js +1 -0
- package/dist/components/select/Select.recipe.d.ts +190 -0
- package/dist/components/select/Select.recipe.js +51 -0
- package/dist/components/select/Select.svelte +18 -24
- package/dist/components/select/Select.svelte.d.ts +1 -1
- package/dist/components/select/index.d.ts +2 -1
- package/dist/components/select/index.js +1 -0
- package/dist/components/skeleton/Skeleton.recipe.d.ts +89 -0
- package/dist/components/skeleton/Skeleton.recipe.js +41 -0
- package/dist/components/skeleton/Skeleton.svelte +7 -6
- package/dist/components/skeleton/Skeleton.svelte.d.ts +2 -10
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/slider/Slider.recipe.d.ts +115 -0
- package/dist/components/slider/Slider.recipe.js +50 -0
- package/dist/components/slider/Slider.svelte +6 -12
- package/dist/components/slider/Slider.svelte.d.ts +1 -1
- package/dist/components/slider/index.d.ts +3 -1
- package/dist/components/slider/index.js +1 -0
- package/dist/components/spinner/Spinner.recipe.d.ts +60 -0
- package/dist/components/spinner/Spinner.recipe.js +38 -0
- package/dist/components/spinner/Spinner.svelte +2 -2
- package/dist/components/spinner/Spinner.svelte.d.ts +2 -8
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/star-rating/StarRating.recipe.d.ts +49 -0
- package/dist/components/star-rating/StarRating.recipe.js +29 -0
- package/dist/components/star-rating/StarRating.svelte +39 -35
- package/dist/components/star-rating/StarRating.svelte.d.ts +1 -1
- package/dist/components/star-rating/index.d.ts +2 -1
- package/dist/components/star-rating/index.js +1 -0
- package/dist/components/switch/Switch.recipe.d.ts +81 -0
- package/dist/components/switch/Switch.recipe.js +38 -0
- package/dist/components/switch/Switch.svelte +27 -36
- package/dist/components/switch/Switch.svelte.d.ts +1 -1
- package/dist/components/switch/index.d.ts +2 -1
- package/dist/components/switch/index.js +1 -0
- package/dist/components/table/Table.recipe.d.ts +134 -0
- package/dist/components/table/Table.recipe.js +44 -0
- package/dist/components/table/Table.svelte +10 -10
- package/dist/components/table/Table.svelte.d.ts +2 -17
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/index.js +1 -0
- package/dist/components/tabs/Tabs.recipe.d.ts +161 -0
- package/dist/components/tabs/Tabs.recipe.js +76 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +2 -57
- package/dist/components/tabs/Tabs.svelte.js +3 -0
- package/dist/components/tabs/components/Tabs.svelte +8 -8
- package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsContent.svelte +3 -2
- package/dist/components/tabs/components/TabsContent.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsItem.svelte +11 -36
- package/dist/components/tabs/components/TabsItem.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsList.svelte +11 -40
- package/dist/components/tabs/components/TabsList.svelte.d.ts +1 -1
- package/dist/components/tabs/index.d.ts +2 -1
- package/dist/components/tabs/index.js +1 -0
- package/dist/components/text-area/TextArea.recipe.d.ts +181 -0
- package/dist/components/text-area/TextArea.recipe.js +81 -0
- package/dist/components/text-area/TextArea.svelte +68 -63
- package/dist/components/text-area/TextArea.svelte.d.ts +1 -1
- package/dist/components/text-area/index.d.ts +2 -1
- package/dist/components/text-area/index.js +1 -0
- package/dist/components/toast/ToastContainer.svelte +15 -16
- package/dist/components/tooltip/Tooltip.recipe.d.ts +79 -0
- package/dist/components/tooltip/Tooltip.recipe.js +26 -0
- package/dist/components/tooltip/Tooltip.svelte +10 -7
- package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts +2 -1
- package/dist/components/tooltip/index.js +1 -0
- package/dist/index.d.ts +55 -65
- package/dist/index.js +28 -37
- package/dist/{components → internal}/icons/IconCheck.svelte +3 -4
- package/dist/{components → internal}/icons/IconChevronDown.svelte +3 -4
- package/dist/{components → internal}/icons/IconSearch.svelte +3 -4
- package/dist/{components → internal}/icons/IconX.svelte +3 -4
- package/dist/internal/icons/index.d.ts +4 -0
- package/dist/internal/icons/index.js +4 -0
- package/dist/llms/accordion.md +2 -1
- package/dist/llms/alert.md +7 -2
- package/dist/llms/avatar.md +2 -2
- package/dist/llms/badge.md +4 -0
- package/dist/llms/bottom-sheet.md +44 -0
- package/dist/llms/button.md +7 -1
- package/dist/llms/card.md +2 -0
- package/dist/llms/checkbox.md +2 -1
- package/dist/llms/colors.md +20 -20
- package/dist/llms/combobox.md +8 -2
- package/dist/llms/command.md +2 -0
- package/dist/llms/date-range-picker.md +12 -2
- package/dist/llms/dialog.md +9 -4
- package/dist/llms/drawer.md +13 -8
- package/dist/llms/dropdown-menu.md +11 -2
- package/dist/llms/index.md +1 -13
- package/dist/llms/input.md +3 -0
- package/dist/llms/label.md +2 -0
- package/dist/llms/popover-responsive.md +10 -2
- package/dist/llms/popover.md +1 -1
- package/dist/llms/select.md +2 -1
- package/dist/llms/skeleton.md +8 -5
- package/dist/llms/slider.md +5 -3
- package/dist/llms/spinner.md +6 -2
- package/dist/llms/star-rating.md +3 -0
- package/dist/llms/switch.md +2 -1
- package/dist/llms/table.md +14 -7
- package/dist/llms/tabs.md +18 -3
- package/dist/llms/text-area.md +3 -0
- package/dist/llms/tooltip.md +2 -1
- package/dist/recipes/index.d.ts +79 -0
- package/dist/recipes/index.js +52 -0
- package/dist/stories/ComponentOverview.stories.svelte +346 -350
- package/dist/themes/tera-ui-base.css +149 -62
- package/dist/themes/theme-cv-builder.css +146 -0
- package/dist/themes/theme-professional.css +8 -33
- package/dist/tokens/index.d.ts +168 -0
- package/dist/tokens/index.js +122 -0
- package/dist/types/index.d.ts +19 -24
- package/package.json +30 -50
- package/registry/accordion.json +65 -0
- package/registry/alert.json +43 -0
- package/registry/avatar.json +43 -0
- package/registry/badge.json +43 -0
- package/registry/bottom-sheet.json +50 -0
- package/registry/button.json +43 -0
- package/registry/card.json +43 -0
- package/registry/checkbox.json +45 -0
- package/registry/combobox.json +45 -0
- package/registry/command.json +109 -0
- package/registry/date-range-picker.json +48 -0
- package/registry/dialog.json +50 -0
- package/registry/drawer.json +45 -0
- package/registry/dropdown-menu.json +72 -0
- package/registry/fonts.json +41 -0
- package/registry/index.json +193 -0
- package/registry/input.json +43 -0
- package/registry/label.json +44 -0
- package/registry/popover-responsive.json +46 -0
- package/registry/popover.json +44 -0
- package/registry/select.json +51 -0
- package/registry/skeleton.json +43 -0
- package/registry/slider.json +44 -0
- package/registry/spinner.json +43 -0
- package/registry/star-rating.json +43 -0
- package/registry/switch.json +44 -0
- package/registry/table.json +45 -0
- package/registry/tabs.json +71 -0
- package/registry/text-area.json +43 -0
- package/registry/toast.json +41 -0
- package/registry/tooltip.json +44 -0
- package/scripts/generate-ts-index.js +1 -18
- package/scripts/tera-ui.mjs +171 -0
- package/dist/components/accordion/Accordion.d.ts +0 -52
- package/dist/components/accordion/Accordion.js +0 -11
- package/dist/components/ai/ChatBubble.svelte +0 -35
- package/dist/components/ai/ChatBubble.svelte.d.ts +0 -12
- package/dist/components/ai/PromptInput.svelte +0 -58
- package/dist/components/ai/PromptInput.svelte.d.ts +0 -13
- package/dist/components/ai/StreamText.svelte +0 -41
- package/dist/components/ai/StreamText.svelte.d.ts +0 -11
- package/dist/components/ai/SuggestionChips.svelte +0 -34
- package/dist/components/ai/SuggestionChips.svelte.d.ts +0 -10
- package/dist/components/ai/ThinkingLoader.svelte +0 -34
- package/dist/components/ai/ThinkingLoader.svelte.d.ts +0 -11
- package/dist/components/ai/index.d.ts +0 -5
- package/dist/components/ai/index.js +0 -5
- package/dist/components/avatar/Avatar.d.ts +0 -45
- package/dist/components/avatar/Avatar.js +0 -35
- package/dist/components/badge/Badge.d.ts +0 -52
- package/dist/components/badge/Badge.js +0 -22
- package/dist/components/brand-logo/BrandLogo.d.ts +0 -38
- package/dist/components/brand-logo/BrandLogo.js +0 -18
- package/dist/components/brand-logo/BrandLogo.svelte +0 -36
- package/dist/components/brand-logo/BrandLogo.svelte.d.ts +0 -4
- package/dist/components/brand-logo/index.d.ts +0 -2
- package/dist/components/brand-logo/index.js +0 -1
- package/dist/components/button/Button.d.ts +0 -113
- package/dist/components/button/Button.js +0 -135
- package/dist/components/card/Card.js +0 -28
- package/dist/components/checkbox/Checkbox.d.ts +0 -32
- package/dist/components/checkbox/Checkbox.js +0 -11
- package/dist/components/combobox/Combobox.d.ts +0 -47
- package/dist/components/combobox/Combobox.js +0 -5
- package/dist/components/date-range-picker/DateRangePicker.types.d.ts +0 -38
- package/dist/components/date-range-picker/DateRangePicker.types.js +0 -1
- package/dist/components/dialog/Dialog.d.ts +0 -55
- package/dist/components/dialog/Dialog.js +0 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +0 -1
- package/dist/components/header/Header.d.ts +0 -11
- package/dist/components/header/Header.js +0 -7
- package/dist/components/header/Header.svelte +0 -33
- package/dist/components/header/Header.svelte.d.ts +0 -5
- package/dist/components/header/header.scss +0 -20
- package/dist/components/header/index.d.ts +0 -2
- package/dist/components/header/index.js +0 -1
- package/dist/components/header/package.json +0 -14
- package/dist/components/icons/IconArrowBigRightFilled.svelte +0 -7
- package/dist/components/icons/IconArrowBigRightFilled.svelte.d.ts +0 -5
- package/dist/components/icons/IconBook.svelte +0 -7
- package/dist/components/icons/IconBook.svelte.d.ts +0 -5
- package/dist/components/icons/IconBookmarkPlus.svelte +0 -7
- package/dist/components/icons/IconBookmarkPlus.svelte.d.ts +0 -5
- package/dist/components/icons/IconCalculator.svelte +0 -7
- package/dist/components/icons/IconCalculator.svelte.d.ts +0 -5
- package/dist/components/icons/IconCoin.svelte +0 -7
- package/dist/components/icons/IconCoin.svelte.d.ts +0 -5
- package/dist/components/icons/IconCoinConvert.svelte +0 -17
- package/dist/components/icons/IconCoinConvert.svelte.d.ts +0 -4
- package/dist/components/icons/IconCopy.svelte +0 -7
- package/dist/components/icons/IconCopy.svelte.d.ts +0 -5
- package/dist/components/icons/IconCopyCheckFilled.svelte +0 -7
- package/dist/components/icons/IconCopyCheckFilled.svelte.d.ts +0 -5
- package/dist/components/icons/IconHamburger.svelte +0 -7
- package/dist/components/icons/IconHamburger.svelte.d.ts +0 -4
- package/dist/components/icons/IconLanguage.svelte +0 -7
- package/dist/components/icons/IconLanguage.svelte.d.ts +0 -5
- package/dist/components/icons/IconLoader2.svelte +0 -7
- package/dist/components/icons/IconLoader2.svelte.d.ts +0 -5
- package/dist/components/icons/IconLogout.svelte +0 -7
- package/dist/components/icons/IconLogout.svelte.d.ts +0 -5
- package/dist/components/icons/IconMoon.svelte +0 -7
- package/dist/components/icons/IconMoon.svelte.d.ts +0 -4
- package/dist/components/icons/IconPointFilled.svelte +0 -7
- package/dist/components/icons/IconPointFilled.svelte.d.ts +0 -5
- package/dist/components/icons/IconSettings.svelte +0 -7
- package/dist/components/icons/IconSettings.svelte.d.ts +0 -5
- package/dist/components/icons/IconSun.svelte +0 -7
- package/dist/components/icons/IconSun.svelte.d.ts +0 -4
- package/dist/components/icons/IconSwitchHorizontal.svelte +0 -7
- package/dist/components/icons/IconSwitchHorizontal.svelte.d.ts +0 -5
- package/dist/components/icons/IconSwitchVertical.svelte +0 -7
- package/dist/components/icons/IconSwitchVertical.svelte.d.ts +0 -5
- package/dist/components/icons/IconTransform.svelte +0 -7
- package/dist/components/icons/IconTransform.svelte.d.ts +0 -5
- package/dist/components/icons/index.d.ts +0 -23
- package/dist/components/icons/index.js +0 -23
- package/dist/components/input/Input.d.ts +0 -72
- package/dist/components/input/Input.js +0 -45
- package/dist/components/label/Label.d.ts +0 -38
- package/dist/components/label/Label.js +0 -18
- package/dist/components/language-picker-button/LanguagePickerButton.d.ts +0 -15
- package/dist/components/language-picker-button/LanguagePickerButton.js +0 -7
- package/dist/components/language-picker-button/LanguagePickerButton.svelte +0 -78
- package/dist/components/language-picker-button/LanguagePickerButton.svelte.d.ts +0 -7
- package/dist/components/language-picker-button/index.d.ts +0 -2
- package/dist/components/language-picker-button/index.js +0 -1
- package/dist/components/light-dark-toggle/LightDarkToggle.d.ts +0 -11
- package/dist/components/light-dark-toggle/LightDarkToggle.js +0 -7
- package/dist/components/light-dark-toggle/LightDarkToggle.svelte +0 -33
- package/dist/components/light-dark-toggle/LightDarkToggle.svelte.d.ts +0 -4
- package/dist/components/light-dark-toggle/index.d.ts +0 -2
- package/dist/components/light-dark-toggle/index.js +0 -1
- package/dist/components/marketing/FeatureCard.svelte +0 -37
- package/dist/components/marketing/FeatureCard.svelte.d.ts +0 -13
- package/dist/components/marketing/PricingCard.svelte +0 -48
- package/dist/components/marketing/PricingCard.svelte.d.ts +0 -15
- package/dist/components/marketing/StatBlock.svelte +0 -14
- package/dist/components/marketing/StatBlock.svelte.d.ts +0 -10
- package/dist/components/marketing/TestimonialCard.svelte +0 -24
- package/dist/components/marketing/TestimonialCard.svelte.d.ts +0 -12
- package/dist/components/marketing/index.d.ts +0 -4
- package/dist/components/marketing/index.js +0 -4
- package/dist/components/popover/Popover.d.ts +0 -37
- package/dist/components/popover/Popover.js +0 -1
- package/dist/components/popover-responsive/PopoverResponsive.d.ts +0 -22
- package/dist/components/popover-responsive/PopoverResponsive.js +0 -1
- package/dist/components/select/Select.d.ts +0 -106
- package/dist/components/select/Select.js +0 -24
- package/dist/components/side-navigation/SideNavigation.d.ts +0 -72
- package/dist/components/side-navigation/SideNavigation.js +0 -91
- package/dist/components/side-navigation/SideNavigation.svelte +0 -143
- package/dist/components/side-navigation/SideNavigation.svelte.d.ts +0 -4
- package/dist/components/side-navigation/SideNavigationGroup.svelte +0 -40
- package/dist/components/side-navigation/SideNavigationGroup.svelte.d.ts +0 -10
- package/dist/components/side-navigation/SideNavigationItem.svelte +0 -18
- package/dist/components/side-navigation/SideNavigationItem.svelte.d.ts +0 -8
- package/dist/components/side-navigation/SideNavigationLayout.svelte +0 -19
- package/dist/components/side-navigation/SideNavigationLayout.svelte.d.ts +0 -9
- package/dist/components/side-navigation/index.d.ts +0 -5
- package/dist/components/side-navigation/index.js +0 -4
- package/dist/components/side-navigation/sidenav.scss +0 -226
- package/dist/components/slider/Slider.d.ts +0 -28
- package/dist/components/slider/Slider.js +0 -1
- package/dist/components/star-rating/StarRating.d.ts +0 -31
- package/dist/components/star-rating/StarRating.js +0 -15
- package/dist/components/switch/Switch.d.ts +0 -27
- package/dist/components/switch/Switch.js +0 -11
- package/dist/components/tera-ui-context/TeraUiContext.d.ts +0 -11
- package/dist/components/tera-ui-context/TeraUiContext.js +0 -1
- package/dist/components/tera-ui-context/TeraUiContext.svelte +0 -13
- package/dist/components/tera-ui-context/TeraUiContext.svelte.d.ts +0 -4
- package/dist/components/tera-ui-context/global-context-store.d.ts +0 -3
- package/dist/components/tera-ui-context/global-context-store.js +0 -2
- package/dist/components/tera-ui-context/global-context.d.ts +0 -3
- package/dist/components/tera-ui-context/global-context.js +0 -24
- package/dist/components/tera-ui-context/index.d.ts +0 -2
- package/dist/components/tera-ui-context/index.js +0 -1
- package/dist/components/text-area/TextArea.d.ts +0 -87
- package/dist/components/text-area/TextArea.js +0 -48
- package/dist/components/tooltip/Tooltip.d.ts +0 -23
- package/dist/components/tooltip/Tooltip.js +0 -1
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.d.ts +0 -14
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.js +0 -7
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +0 -48
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte.d.ts +0 -4
- package/dist/components/user-avatar-with-menu/index.d.ts +0 -2
- package/dist/components/user-avatar-with-menu/index.js +0 -1
- package/dist/i18n/index.d.ts +0 -1
- package/dist/i18n/index.js +0 -1
- package/dist/i18n/language.d.ts +0 -2
- package/dist/i18n/language.js +0 -45
- package/dist/internal/service/user.service.d.ts +0 -2
- package/dist/internal/service/user.service.js +0 -20
- package/dist/llms/ai.md +0 -110
- package/dist/llms/brand-logo.md +0 -30
- package/dist/llms/header.md +0 -26
- package/dist/llms/icons.md +0 -43
- package/dist/llms/language-picker-button.md +0 -30
- package/dist/llms/light-dark-toggle.md +0 -26
- package/dist/llms/marketing.md +0 -95
- package/dist/llms/side-navigation.md +0 -51
- package/dist/llms/tera-ui-context.md +0 -30
- package/dist/llms/user-avatar-with-menu.md +0 -28
- package/dist/paraglide/.prettierignore +0 -3
- package/dist/paraglide/README.md +0 -162
- package/dist/paraglide/messages/_index.d.ts +0 -106
- package/dist/paraglide/messages/_index.js +0 -439
- package/dist/paraglide/messages/ar.d.ts +0 -23
- package/dist/paraglide/messages/ar.js +0 -38
- package/dist/paraglide/messages/bg.d.ts +0 -23
- package/dist/paraglide/messages/bg.js +0 -38
- package/dist/paraglide/messages/bn.d.ts +0 -23
- package/dist/paraglide/messages/bn.js +0 -38
- package/dist/paraglide/messages/ca.d.ts +0 -23
- package/dist/paraglide/messages/ca.js +0 -38
- package/dist/paraglide/messages/cs.d.ts +0 -23
- package/dist/paraglide/messages/cs.js +0 -38
- package/dist/paraglide/messages/da.d.ts +0 -23
- package/dist/paraglide/messages/da.js +0 -38
- package/dist/paraglide/messages/de.d.ts +0 -23
- package/dist/paraglide/messages/de.js +0 -38
- package/dist/paraglide/messages/el.d.ts +0 -23
- package/dist/paraglide/messages/el.js +0 -38
- package/dist/paraglide/messages/en.d.ts +0 -23
- package/dist/paraglide/messages/en.js +0 -38
- package/dist/paraglide/messages/es.d.ts +0 -23
- package/dist/paraglide/messages/es.js +0 -38
- package/dist/paraglide/messages/fi.d.ts +0 -23
- package/dist/paraglide/messages/fi.js +0 -38
- package/dist/paraglide/messages/fr.d.ts +0 -23
- package/dist/paraglide/messages/fr.js +0 -38
- package/dist/paraglide/messages/he.d.ts +0 -23
- package/dist/paraglide/messages/he.js +0 -38
- package/dist/paraglide/messages/hi.d.ts +0 -23
- package/dist/paraglide/messages/hi.js +0 -38
- package/dist/paraglide/messages/hu.d.ts +0 -23
- package/dist/paraglide/messages/hu.js +0 -38
- package/dist/paraglide/messages/id.d.ts +0 -23
- package/dist/paraglide/messages/id.js +0 -38
- package/dist/paraglide/messages/it.d.ts +0 -23
- package/dist/paraglide/messages/it.js +0 -38
- package/dist/paraglide/messages/ja.d.ts +0 -23
- package/dist/paraglide/messages/ja.js +0 -38
- package/dist/paraglide/messages/ko.d.ts +0 -23
- package/dist/paraglide/messages/ko.js +0 -38
- package/dist/paraglide/messages/lt.d.ts +0 -23
- package/dist/paraglide/messages/lt.js +0 -38
- package/dist/paraglide/messages/lv.d.ts +0 -23
- package/dist/paraglide/messages/lv.js +0 -38
- package/dist/paraglide/messages/ms.d.ts +0 -23
- package/dist/paraglide/messages/ms.js +0 -38
- package/dist/paraglide/messages/nl.d.ts +0 -23
- package/dist/paraglide/messages/nl.js +0 -38
- package/dist/paraglide/messages/no.d.ts +0 -23
- package/dist/paraglide/messages/no.js +0 -38
- package/dist/paraglide/messages/pl.d.ts +0 -23
- package/dist/paraglide/messages/pl.js +0 -38
- package/dist/paraglide/messages/pt.d.ts +0 -23
- package/dist/paraglide/messages/pt.js +0 -38
- package/dist/paraglide/messages/ro.d.ts +0 -23
- package/dist/paraglide/messages/ro.js +0 -38
- package/dist/paraglide/messages/ru.d.ts +0 -23
- package/dist/paraglide/messages/ru.js +0 -38
- package/dist/paraglide/messages/sk.d.ts +0 -23
- package/dist/paraglide/messages/sk.js +0 -38
- package/dist/paraglide/messages/sl.d.ts +0 -23
- package/dist/paraglide/messages/sl.js +0 -38
- package/dist/paraglide/messages/sq.d.ts +0 -23
- package/dist/paraglide/messages/sq.js +0 -38
- package/dist/paraglide/messages/sr.d.ts +0 -23
- package/dist/paraglide/messages/sr.js +0 -38
- package/dist/paraglide/messages/sv.d.ts +0 -23
- package/dist/paraglide/messages/sv.js +0 -38
- package/dist/paraglide/messages/sw.d.ts +0 -23
- package/dist/paraglide/messages/sw.js +0 -38
- package/dist/paraglide/messages/ta.d.ts +0 -23
- package/dist/paraglide/messages/ta.js +0 -38
- package/dist/paraglide/messages/te.d.ts +0 -23
- package/dist/paraglide/messages/te.js +0 -38
- package/dist/paraglide/messages/th.d.ts +0 -23
- package/dist/paraglide/messages/th.js +0 -38
- package/dist/paraglide/messages/tl.d.ts +0 -23
- package/dist/paraglide/messages/tl.js +0 -38
- package/dist/paraglide/messages/tr.d.ts +0 -23
- package/dist/paraglide/messages/tr.js +0 -38
- package/dist/paraglide/messages/uk.d.ts +0 -23
- package/dist/paraglide/messages/uk.js +0 -38
- package/dist/paraglide/messages/vi.d.ts +0 -23
- package/dist/paraglide/messages/vi.js +0 -38
- package/dist/paraglide/messages/zh-CN.d.ts +0 -23
- package/dist/paraglide/messages/zh-CN.js +0 -38
- package/dist/paraglide/messages/zh-TW.d.ts +0 -23
- package/dist/paraglide/messages/zh-TW.js +0 -38
- package/dist/paraglide/messages.d.ts +0 -2
- package/dist/paraglide/messages.js +0 -4
- package/dist/paraglide/registry.d.ts +0 -34
- package/dist/paraglide/registry.js +0 -46
- package/dist/paraglide/runtime.d.ts +0 -758
- package/dist/paraglide/runtime.js +0 -1990
- package/dist/paraglide/server.d.ts +0 -96
- package/dist/paraglide/server.js +0 -277
- package/dist/tera-i18n/README.md +0 -105
- package/dist/tera-i18n/assets/world-flags/Algeria.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/East Timor.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/Rapa Nui.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/abkhazia.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/afghanistan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/aland islands.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/albania.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/american samoa.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/andorra.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/angola.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/anguilla.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/antigua and barbuda.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/argentina.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/armenia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/aruba.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/australia.svg +0 -21
- package/dist/tera-i18n/assets/world-flags/austria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/azerbaijan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/azores islands.svg +0 -21
- package/dist/tera-i18n/assets/world-flags/bahamas.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/bahrain.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/balearic islands.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/bangladesh.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/barbados.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/basque country.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/belarus.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/belgium.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/belize.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/benin.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/bermuda.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/bhutan.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/bolivia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/bonaire.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/bosnia and herzegovina.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/botswana.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/brazil.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/british columbia.svg +0 -31
- package/dist/tera-i18n/assets/world-flags/british indian ocean territory.svg +0 -29
- package/dist/tera-i18n/assets/world-flags/british virgin islands.svg +0 -24
- package/dist/tera-i18n/assets/world-flags/brunei.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/bulgaria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/burkina faso.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/burundi.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/cambodia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/cameroon.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/canada.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/canary islands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/cape verde.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/catalonia.svg +0 -7
- package/dist/tera-i18n/assets/world-flags/cayman islands.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/central african republic.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/ceuta.svg +0 -29
- package/dist/tera-i18n/assets/world-flags/chad.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/chile.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/china.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/cocos island.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/colombia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/comoros.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/cook islands.svg +0 -22
- package/dist/tera-i18n/assets/world-flags/corsica.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/costa rica.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/croatia.svg +0 -31
- package/dist/tera-i18n/assets/world-flags/cuba.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/curacao.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/cyprus.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/czech republic.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/democratic republic of congo.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/denmark.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/djibouti.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/dominica.svg +0 -34
- package/dist/tera-i18n/assets/world-flags/dominican republic.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/ecuador.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/egypt.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/el salvador.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/england.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/equatorial guinea.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/eritrea.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/estonia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/ethiopia.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/european union.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/falkland islands.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/faroe islands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/fiji.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/finland.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/france.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/french polynesia.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/gabon.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/galapagos islands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/gambia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/georgia.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/germany.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/ghana.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/gibraltar.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/greece.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/greenland.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/grenada.svg +0 -27
- package/dist/tera-i18n/assets/world-flags/guam.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/guatemala.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/guernsey.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/guinea bissau.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/guinea.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/guyana.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/haiti.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/hawaii.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/honduras.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/hong kong.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/hungary.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/iceland.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/india.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/indonesia.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/iran.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/iraq.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/ireland.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/isle of man.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/israel.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/italy.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/ivory coast.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/jamaica.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/japan.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/jersey.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/jordan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/kazakhstan.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/kenya.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/kiribati.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/kosovo.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/kuwait.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/kyrgyzstan.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/laos.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/latvia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/lebanon.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/lesotho.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/liberia.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/libya.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/liechtenstein.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/lithuania.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/luxembourg.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/macao.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/madagascar.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/madeira.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/malawi.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/malaysia.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/maldives.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/mali.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/malta.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/marshall island.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/martinique.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/mauritania.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/mauritius.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/melilla.svg +0 -25
- package/dist/tera-i18n/assets/world-flags/mexico.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/micronesia.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/moldova.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/monaco.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/mongolia.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/montenegro.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/montserrat.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/morocco.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/mozambique.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/myanmar.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/namibia.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/nato.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/nauru.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/nepal.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/netherlands.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/new zealand.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/nicaragua.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/niger.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/nigeria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/niue.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/norfolk island.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/north korea.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/northern cyprus.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/northern marianas islands.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/norway.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/oman.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/orkney islands.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/ossetia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/pakistan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/palau.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/palestine.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/panama.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/papua new guinea.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/paraguay.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/peru.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/philippines.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/pitcairn islands.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/poland.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/portugal.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/puerto rico.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/qatar.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/republic of macedonia.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/republic of the congo.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/romania.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/russia.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/rwanda.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/saba island.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/sahrawi arab democratic republic.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/samoa.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/san marino.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/sao tome and prince.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/sardinia.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/saudi arabia.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/scotland.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/senegal.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/serbia.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/seychelles.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/sierra leone.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/singapore.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/sint eustatius.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/sint maarten.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/slovakia.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/slovenia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/solomon islands.svg +0 -17
- package/dist/tera-i18n/assets/world-flags/somalia.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/somaliland.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/south africa.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/south korea.svg +0 -30
- package/dist/tera-i18n/assets/world-flags/south sudan.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/spain.png +0 -0
- package/dist/tera-i18n/assets/world-flags/spain.svg +0 -676
- package/dist/tera-i18n/assets/world-flags/sri lanka.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/st barts.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/st lucia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/st vincent and the grenadines.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/sudan.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/suriname.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/swaziland.svg +0 -21
- package/dist/tera-i18n/assets/world-flags/sweden.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/switzerland.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/syria.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/taiwan.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/tajikistan.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/tanzania.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/thailand.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/tibet.svg +0 -22
- package/dist/tera-i18n/assets/world-flags/togo.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/tokelau.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/tonga.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/transnistria.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/trinidad and tobago.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/tunisia.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/turkey.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/turkmenistan.svg +0 -30
- package/dist/tera-i18n/assets/world-flags/turks and caicos.svg +0 -19
- package/dist/tera-i18n/assets/world-flags/tuvalu.svg +0 -25
- package/dist/tera-i18n/assets/world-flags/uganda.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/ukraine.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/united arab emirates.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/united kingdom.svg +0 -23
- package/dist/tera-i18n/assets/world-flags/united nations.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/united states.svg +0 -15
- package/dist/tera-i18n/assets/world-flags/uruguay.svg +0 -16
- package/dist/tera-i18n/assets/world-flags/uzbekista/314/201n.svg +0 -27
- package/dist/tera-i18n/assets/world-flags/uzbekist/303/241n.svg +0 -27
- package/dist/tera-i18n/assets/world-flags/vanuatu.svg +0 -32
- package/dist/tera-i18n/assets/world-flags/vatican city.svg +0 -13
- package/dist/tera-i18n/assets/world-flags/venezuela.svg +0 -20
- package/dist/tera-i18n/assets/world-flags/vietnam.svg +0 -11
- package/dist/tera-i18n/assets/world-flags/virgin islands.svg +0 -18
- package/dist/tera-i18n/assets/world-flags/wales.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/yemen.svg +0 -12
- package/dist/tera-i18n/assets/world-flags/zambia.svg +0 -14
- package/dist/tera-i18n/assets/world-flags/zimbabwe.svg +0 -20
- package/dist/tera-i18n/dev-tools/translator/.env +0 -2
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-calculator-seo.js +0 -79
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +0 -274
- package/dist/tera-i18n/dev-tools/translator/gpt-translator.js +0 -128
- package/dist/tera-i18n/dev-tools/translator/index.js +0 -2
- package/dist/tera-i18n/dev-tools/translator/package-lock.json +0 -780
- package/dist/tera-i18n/dev-tools/translator/package.json +0 -20
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-calculator.md +0 -34
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.md +0 -149
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-system.txt +0 -1
- package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt.txt +0 -14
- package/dist/tera-i18n/dev-tools/translator/tsconfig.json +0 -17
- package/dist/tera-i18n/dev-tools/translator/types/supported-languages.js +0 -90
- package/dist/tera-i18n/projects/common/all-language-data.d.ts +0 -3
- package/dist/tera-i18n/projects/common/all-language-data.js +0 -141
- package/dist/tera-i18n/projects/common/messages/en.json +0 -0
- package/dist/tera-i18n/projects/common/types/language.d.ts +0 -6
- package/dist/tera-i18n/projects/common/types/language.js +0 -1
- package/dist/tera-i18n/projects/cv-maker/messages/ar-AE.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-EG.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-IQ.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-SA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-SD.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar-YE.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ar.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/bg.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/bn.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ca.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/cs.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/da.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/de.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/el.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/en-AE.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-AU.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-CA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-GB.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-ID.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-IN.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-NZ.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-PH.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-PK.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-SA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-US.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en-ZA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/en.json +0 -92
- package/dist/tera-i18n/projects/cv-maker/messages/es-419.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es-AR.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es-ES.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es-MX.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/es.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/fi.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/fr-MA.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/fr.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/he.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/hi.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/hr.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/hu.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/id.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/it.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ja.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ko.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/lt.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/lv.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ms-MY.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/ms.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/nl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/no.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/pl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/pt-BR.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/pt-PT.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/messages/pt.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ro.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ru.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sk.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sq.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sr.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sv.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/sw.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/ta.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/te.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/th.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/tl.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/tr.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/uk.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/vi.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/zh-CN.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/zh-TW.json +0 -95
- package/dist/tera-i18n/projects/cv-maker/messages/zh.json +0 -94
- package/dist/tera-i18n/projects/cv-maker/project.inlang/settings.json +0 -84
- package/dist/tera-i18n/projects/cv-maker/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/cv-maker/supported-language.js +0 -81
- package/dist/tera-i18n/projects/mathda/messages/en.json +0 -4
- package/dist/tera-i18n/projects/mathda/messages/vi.json +0 -4
- package/dist/tera-i18n/projects/mathda/project.inlang/settings.json +0 -15
- package/dist/tera-i18n/projects/mathda/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/mathda/supported-language.js +0 -4
- package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/da.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/de.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/el.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en-IN.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en-PH.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en-US.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/en.json +0 -189
- package/dist/tera-i18n/projects/tera-calculator/messages/es.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/id.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/it.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/no.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/te.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/th.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +0 -183
- package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +0 -57
- package/dist/tera-i18n/projects/tera-calculator/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-calculator/supported-language.js +0 -48
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/de.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/en.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/es.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/fr.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/it.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ja.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ko.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/pt.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/ru.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/vi.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/auto-generated/zh-CN.json +0 -1876
- package/dist/tera-i18n/projects/tera-converter/messages/de.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/en.json +0 -42
- package/dist/tera-i18n/projects/tera-converter/messages/es.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/fr.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/it.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/ja.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/ko.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/pt.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/ru.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/vi.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/messages/zh-CN.json +0 -41
- package/dist/tera-i18n/projects/tera-converter/project.inlang/project_id +0 -1
- package/dist/tera-i18n/projects/tera-converter/project.inlang/settings.json +0 -27
- package/dist/tera-i18n/projects/tera-converter/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-converter/supported-language.js +0 -13
- package/dist/tera-i18n/projects/tera-system-ui/messages/ar.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/bg.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/bn.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ca.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/cs.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/da.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/de.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/el.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/en.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/es.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/fi.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/fr.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/he.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/hi.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/hu.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/id.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/it.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ja.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ko.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/lt.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/lv.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ms.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/nl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/no.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/pl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/pt.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ro.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ru.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sk.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sq.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sr.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sv.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/sw.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/ta.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/te.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/th.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/tl.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/tr.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/uk.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/vi.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/zh-CN.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/messages/zh-TW.json +0 -10
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/settings.json +0 -59
- package/dist/tera-i18n/projects/tera-system-ui/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-system-ui/supported-language.js +0 -45
- package/dist/tera-i18n/projects/tera-tools/messages/ar.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/bg.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/bn.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ca.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/cs.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/da.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/de.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/el.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/en.json +0 -96
- package/dist/tera-i18n/projects/tera-tools/messages/es.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/fi.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/fr.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/he.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/hi.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/hu.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/id.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/it.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ja.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ko.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/lt.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/lv.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ms.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/nl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/no.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/pl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/pt.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ro.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ru.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sk.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sq.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sr.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sv.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/sw.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/ta.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/te.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/th.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/tl.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/tr.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/uk.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/vi.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/zh-CN.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/messages/zh-TW.json +0 -70
- package/dist/tera-i18n/projects/tera-tools/project.inlang/project_id +0 -1
- package/dist/tera-i18n/projects/tera-tools/project.inlang/settings.json +0 -61
- package/dist/tera-i18n/projects/tera-tools/supported-language.d.ts +0 -1
- package/dist/tera-i18n/projects/tera-tools/supported-language.js +0 -45
- package/dist/themes/theme-ai.css +0 -100
- package/dist/themes/theme-marketing.css +0 -91
- /package/dist/{components → internal}/icons/IconCheck.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/IconChevronDown.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/IconSearch.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/IconX.svelte.d.ts +0 -0
- /package/dist/{components → internal}/icons/Icons.d.ts +0 -0
- /package/dist/{components → internal}/icons/Icons.js +0 -0
|
@@ -0,0 +1,847 @@
|
|
|
1
|
+
<script lang="ts">import { onDestroy, onMount } from 'svelte';
|
|
2
|
+
import { bottomSheetStore } from './bottomSheetStore.svelte.js';
|
|
3
|
+
import { bottomSheetRecipe } from './BottomSheet.recipe';
|
|
4
|
+
import { IconX } from "../../internal/icons";
|
|
5
|
+
// ============================================
|
|
6
|
+
// CONFIGURABLE CONSTANTS
|
|
7
|
+
// Adjust these values to customize the bottom sheet behavior
|
|
8
|
+
// ============================================
|
|
9
|
+
const CONFIG = {
|
|
10
|
+
// Scale effect for background container
|
|
11
|
+
scale: {
|
|
12
|
+
factor: 0.06, // How much to scale down (6%)
|
|
13
|
+
borderRadius: 16, // Border radius when scaled (px)
|
|
14
|
+
translateY: 20, // Vertical offset when scaled (px)
|
|
15
|
+
origin: 'top center' // Transform origin
|
|
16
|
+
},
|
|
17
|
+
// Backdrop
|
|
18
|
+
backdrop: {
|
|
19
|
+
maxOpacity: 0.5 // Maximum opacity when fully open
|
|
20
|
+
},
|
|
21
|
+
// Animation timing
|
|
22
|
+
animation: {
|
|
23
|
+
defaultDuration: 0.35, // Default duration (seconds)
|
|
24
|
+
minDuration: 0.15, // Min duration for fast swipes
|
|
25
|
+
maxDuration: 0.4, // Max duration for slow gestures
|
|
26
|
+
easing: 'cubic-bezier(0.2, 0.9, 0.36, 1)' // iOS-style spring curve
|
|
27
|
+
},
|
|
28
|
+
// Gesture handling
|
|
29
|
+
gesture: {
|
|
30
|
+
velocityInfluence: 0.01, // How much velocity affects snap selection
|
|
31
|
+
overdragExponent: 0.55, // Overdrag resistance (lower = more resistance)
|
|
32
|
+
closeVelocityThreshold: 0.35, // Velocity to trigger close (px/ms)
|
|
33
|
+
closeProgressThreshold: 0.35, // Progress to trigger close (0-1)
|
|
34
|
+
maxLockedDrag: 60, // Max drag when dragToClose disabled (px)
|
|
35
|
+
lockedDragResistance: 0.3, // Resistance when dragToClose disabled
|
|
36
|
+
// Two-phase gesture recognition for interactive elements (iOS-style)
|
|
37
|
+
dragActivationThreshold: 10, // Vertical px to commit to drag from interactive element
|
|
38
|
+
horizontalDeadZone: 1.2, // If abs(dx)/abs(dy) > this, abort drag (let native horizontal win)
|
|
39
|
+
tapDistanceThreshold: 6 // Max total movement (px) to still count as a tap
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
// ============================================
|
|
43
|
+
// COMPONENT PROPS
|
|
44
|
+
// ============================================
|
|
45
|
+
let { id, open = $bindable(false), snapPoints = [0.9], defaultSnapPoint = 0, containerRef = null, scaleTargetRef = null, constrainToContainer = false, scaleBackground = true, dragToClose = true, closeOnBackdrop = true, showCloseButton = false, onClose, onOpenChange, children, header } = $props();
|
|
46
|
+
// ============================================
|
|
47
|
+
// INTERNAL STATE
|
|
48
|
+
// ============================================
|
|
49
|
+
// DOM references
|
|
50
|
+
let sheetRef = $state(null);
|
|
51
|
+
let contentRef = $state(null);
|
|
52
|
+
let backdropRef = $state(null);
|
|
53
|
+
// Sheet state
|
|
54
|
+
let isVisible = $state(false);
|
|
55
|
+
let isClosing = $state(false);
|
|
56
|
+
let isAnimating = $state(false);
|
|
57
|
+
let isDragging = $state(false);
|
|
58
|
+
let currentTranslateY = $state(0);
|
|
59
|
+
let sheetHeight = $state(0);
|
|
60
|
+
let transitionDuration = $state(`${CONFIG.animation.defaultDuration}s`);
|
|
61
|
+
// Drag tracking
|
|
62
|
+
let dragState = {
|
|
63
|
+
startY: 0,
|
|
64
|
+
startX: 0,
|
|
65
|
+
lastY: 0,
|
|
66
|
+
currentY: 0,
|
|
67
|
+
deltaY: 0,
|
|
68
|
+
startSnapPoint: 0,
|
|
69
|
+
activePointerId: null,
|
|
70
|
+
isTouchActive: false,
|
|
71
|
+
shouldPreventScroll: false,
|
|
72
|
+
history: [],
|
|
73
|
+
// Two-phase gesture recognition for interactive elements
|
|
74
|
+
isPending: false, // Tracking started but not yet committed to drag
|
|
75
|
+
isInteractiveStart: false, // Gesture began on an interactive element
|
|
76
|
+
committed: false, // Gesture has been resolved as a drag
|
|
77
|
+
inScrollable: false // Gesture began inside a [data-bottom-sheet-scroll] area
|
|
78
|
+
};
|
|
79
|
+
// Scroll state
|
|
80
|
+
let scrollableElement = null;
|
|
81
|
+
let isScrolledToTop = true;
|
|
82
|
+
// Dimensions
|
|
83
|
+
let windowHeight = $state(typeof window !== 'undefined' ? window.innerHeight : 800);
|
|
84
|
+
let containerHeight = $state(0);
|
|
85
|
+
let containerResizeObserver = null;
|
|
86
|
+
let prevOpen = null;
|
|
87
|
+
// ============================================
|
|
88
|
+
// COMPUTED VALUES
|
|
89
|
+
// ============================================
|
|
90
|
+
const r = $derived(bottomSheetRecipe({ constrained: constrainToContainer, dragging: isDragging }));
|
|
91
|
+
const scaleTarget = $derived(scaleTargetRef ?? containerRef);
|
|
92
|
+
const effectiveHeight = $derived(constrainToContainer && containerRef ? containerHeight : windowHeight);
|
|
93
|
+
const maxSnapPoint = $derived(Math.max(...snapPoints));
|
|
94
|
+
const maxSheetHeight = $derived(maxSnapPoint * effectiveHeight);
|
|
95
|
+
const zIndex = $derived(bottomSheetStore.getZIndex(id));
|
|
96
|
+
const currentSnapPoint = $derived(snapPoints[defaultSnapPoint] ?? 0.5);
|
|
97
|
+
const allSnapPoints = $derived([0, ...snapPoints].sort((a, b) => a - b));
|
|
98
|
+
// ============================================
|
|
99
|
+
// LIFECYCLE
|
|
100
|
+
// ============================================
|
|
101
|
+
onMount(() => {
|
|
102
|
+
bottomSheetStore.register(id, { snapPoints, defaultSnapPoint, closeOnBackdrop });
|
|
103
|
+
window.addEventListener('resize', handleWindowResize);
|
|
104
|
+
return () => {
|
|
105
|
+
bottomSheetStore.unregister(id);
|
|
106
|
+
window.removeEventListener('resize', handleWindowResize);
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
onDestroy(() => {
|
|
110
|
+
containerResizeObserver?.disconnect();
|
|
111
|
+
});
|
|
112
|
+
// Watch containerRef for constrained mode
|
|
113
|
+
$effect(() => {
|
|
114
|
+
if (!containerRef || !constrainToContainer)
|
|
115
|
+
return;
|
|
116
|
+
containerHeight = containerRef.clientHeight;
|
|
117
|
+
containerResizeObserver?.disconnect();
|
|
118
|
+
containerResizeObserver = new ResizeObserver(() => {
|
|
119
|
+
containerHeight = containerRef.clientHeight;
|
|
120
|
+
if (isVisible && !isDragging && sheetRef) {
|
|
121
|
+
sheetHeight = sheetRef.offsetHeight;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
containerResizeObserver.observe(containerRef);
|
|
125
|
+
return () => {
|
|
126
|
+
containerResizeObserver?.disconnect();
|
|
127
|
+
containerResizeObserver = null;
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
// Watch open prop changes
|
|
131
|
+
$effect(() => {
|
|
132
|
+
const shouldOpen = open;
|
|
133
|
+
if (prevOpen === null) {
|
|
134
|
+
prevOpen = shouldOpen;
|
|
135
|
+
if (shouldOpen)
|
|
136
|
+
doOpen();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (shouldOpen && !prevOpen && !isVisible) {
|
|
140
|
+
prevOpen = true;
|
|
141
|
+
doOpen();
|
|
142
|
+
}
|
|
143
|
+
else if (!shouldOpen && prevOpen && isVisible && !isClosing) {
|
|
144
|
+
prevOpen = false;
|
|
145
|
+
doClose();
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
// Setup scrollable element detection
|
|
149
|
+
$effect(() => {
|
|
150
|
+
if (!contentRef || !isVisible)
|
|
151
|
+
return;
|
|
152
|
+
scrollableElement = contentRef.querySelector('[data-bottom-sheet-scroll]');
|
|
153
|
+
if (!scrollableElement)
|
|
154
|
+
return;
|
|
155
|
+
const handleScroll = () => {
|
|
156
|
+
isScrolledToTop = scrollableElement.scrollTop <= 1;
|
|
157
|
+
};
|
|
158
|
+
scrollableElement.addEventListener('scroll', handleScroll, { passive: true });
|
|
159
|
+
isScrolledToTop = scrollableElement.scrollTop <= 1;
|
|
160
|
+
});
|
|
161
|
+
// ============================================
|
|
162
|
+
// CORE FUNCTIONS
|
|
163
|
+
// ============================================
|
|
164
|
+
function handleWindowResize() {
|
|
165
|
+
if (isVisible && !isDragging) {
|
|
166
|
+
windowHeight = window.innerHeight;
|
|
167
|
+
if (sheetRef)
|
|
168
|
+
sheetHeight = sheetRef.offsetHeight;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function recalculateDimensions() {
|
|
172
|
+
if (typeof window !== 'undefined')
|
|
173
|
+
windowHeight = window.innerHeight;
|
|
174
|
+
if (containerRef && constrainToContainer)
|
|
175
|
+
containerHeight = containerRef.clientHeight;
|
|
176
|
+
if (sheetRef)
|
|
177
|
+
sheetHeight = sheetRef.offsetHeight;
|
|
178
|
+
}
|
|
179
|
+
function doOpen() {
|
|
180
|
+
isVisible = true;
|
|
181
|
+
isClosing = false;
|
|
182
|
+
isAnimating = true;
|
|
183
|
+
bottomSheetStore.open(id);
|
|
184
|
+
requestAnimationFrame(() => {
|
|
185
|
+
// sheetRef is bound by this rAF tick.
|
|
186
|
+
recalculateDimensions();
|
|
187
|
+
requestAnimationFrame(() => snapTo(currentSnapPoint, () => {
|
|
188
|
+
isAnimating = false;
|
|
189
|
+
}));
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
function doClose() {
|
|
193
|
+
if (isClosing)
|
|
194
|
+
return;
|
|
195
|
+
isClosing = true;
|
|
196
|
+
isAnimating = true;
|
|
197
|
+
snapTo(0, () => {
|
|
198
|
+
isVisible = false;
|
|
199
|
+
isClosing = false;
|
|
200
|
+
isAnimating = false;
|
|
201
|
+
bottomSheetStore.close(id);
|
|
202
|
+
prevOpen = false;
|
|
203
|
+
open = false;
|
|
204
|
+
resetScaleTarget();
|
|
205
|
+
onClose?.();
|
|
206
|
+
onOpenChange?.(false);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
function snapTo(progress, onComplete) {
|
|
210
|
+
transitionDuration = calcDynamicDuration();
|
|
211
|
+
// Calculate translateY: sheet height is maxSnapPoint * effectiveHeight
|
|
212
|
+
// When progress = maxSnapPoint, translateY = 0 (fully visible)
|
|
213
|
+
// When progress = 0, translateY = sheetHeight (hidden)
|
|
214
|
+
const targetTranslateY = sheetHeight - (progress * effectiveHeight);
|
|
215
|
+
currentTranslateY = targetTranslateY;
|
|
216
|
+
if (sheetRef) {
|
|
217
|
+
sheetRef.style.translate = `0 ${targetTranslateY}px`;
|
|
218
|
+
}
|
|
219
|
+
updateBackdrop(progress);
|
|
220
|
+
updateScaleTarget(progress);
|
|
221
|
+
bottomSheetStore.updateProgress(id, Math.max(0, Math.min(1, progress)));
|
|
222
|
+
if (onComplete) {
|
|
223
|
+
setTimeout(onComplete, parseFloat(transitionDuration) * 1000);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// ============================================
|
|
227
|
+
// VISUAL UPDATES
|
|
228
|
+
// ============================================
|
|
229
|
+
function updateBackdrop(progress) {
|
|
230
|
+
if (!backdropRef)
|
|
231
|
+
return;
|
|
232
|
+
const opacity = Math.max(0, Math.min(CONFIG.backdrop.maxOpacity, progress * CONFIG.backdrop.maxOpacity));
|
|
233
|
+
backdropRef.style.opacity = String(opacity);
|
|
234
|
+
}
|
|
235
|
+
function updateScaleTarget(progress, withTransition = true) {
|
|
236
|
+
if (!scaleTarget || !scaleBackground)
|
|
237
|
+
return;
|
|
238
|
+
const p = Math.max(0, Math.min(1, progress));
|
|
239
|
+
const { factor, borderRadius, translateY, origin } = CONFIG.scale;
|
|
240
|
+
scaleTarget.style.scale = String(1 - factor * p);
|
|
241
|
+
scaleTarget.style.translate = `0 ${translateY * p}px`;
|
|
242
|
+
scaleTarget.style.borderRadius = `${borderRadius * p}px`;
|
|
243
|
+
scaleTarget.style.transformOrigin = origin;
|
|
244
|
+
scaleTarget.style.overflow = 'hidden';
|
|
245
|
+
scaleTarget.style.willChange = 'scale, translate, border-radius';
|
|
246
|
+
if (withTransition) {
|
|
247
|
+
const { easing } = CONFIG.animation;
|
|
248
|
+
scaleTarget.style.transition = `scale ${transitionDuration} ${easing}, translate ${transitionDuration} ${easing}, border-radius ${transitionDuration} ${easing}`;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
function resetScaleTarget() {
|
|
252
|
+
if (!scaleTarget || !scaleBackground)
|
|
253
|
+
return;
|
|
254
|
+
scaleTarget.style.scale = '';
|
|
255
|
+
scaleTarget.style.translate = '';
|
|
256
|
+
scaleTarget.style.borderRadius = '';
|
|
257
|
+
scaleTarget.style.transformOrigin = '';
|
|
258
|
+
scaleTarget.style.overflow = '';
|
|
259
|
+
scaleTarget.style.transition = '';
|
|
260
|
+
scaleTarget.style.willChange = '';
|
|
261
|
+
}
|
|
262
|
+
// ============================================
|
|
263
|
+
// GESTURE UTILITIES
|
|
264
|
+
// ============================================
|
|
265
|
+
function pushHistory(y) {
|
|
266
|
+
const now = performance.now();
|
|
267
|
+
dragState.history = dragState.history.filter(p => now - p.time <= 100);
|
|
268
|
+
dragState.history.push({ y, time: now });
|
|
269
|
+
}
|
|
270
|
+
function clearHistory() {
|
|
271
|
+
dragState.history = [];
|
|
272
|
+
}
|
|
273
|
+
function calculateVelocity() {
|
|
274
|
+
const now = performance.now();
|
|
275
|
+
const recent = dragState.history.filter(p => now - p.time <= 100);
|
|
276
|
+
if (recent.length < 2)
|
|
277
|
+
return 0;
|
|
278
|
+
const first = recent[0];
|
|
279
|
+
const last = recent[recent.length - 1];
|
|
280
|
+
if (!first || !last)
|
|
281
|
+
return 0;
|
|
282
|
+
const dt = last.time - first.time;
|
|
283
|
+
return dt > 0 ? (last.y - first.y) / dt : 0;
|
|
284
|
+
}
|
|
285
|
+
function calcDynamicDuration() {
|
|
286
|
+
const now = performance.now();
|
|
287
|
+
const recent = dragState.history.filter(p => now - p.time <= 100);
|
|
288
|
+
if (recent.length < 2)
|
|
289
|
+
return `${CONFIG.animation.defaultDuration}s`;
|
|
290
|
+
const first = recent[0];
|
|
291
|
+
const last = recent[recent.length - 1];
|
|
292
|
+
if (!first || !last)
|
|
293
|
+
return `${CONFIG.animation.defaultDuration}s`;
|
|
294
|
+
const speed = Math.abs((last.y - first.y) / (last.time - first.time));
|
|
295
|
+
const { minDuration, maxDuration } = CONFIG.animation;
|
|
296
|
+
let duration = maxDuration - (speed / 2) * (maxDuration - minDuration);
|
|
297
|
+
duration = Math.max(minDuration, Math.min(maxDuration, duration));
|
|
298
|
+
return `${duration}s`;
|
|
299
|
+
}
|
|
300
|
+
function overdragResistance(value) {
|
|
301
|
+
return value < 0 ? -Math.pow(Math.abs(value), CONFIG.gesture.overdragExponent) : value;
|
|
302
|
+
}
|
|
303
|
+
function applyLockedDragResistance(rawTranslateY) {
|
|
304
|
+
// Base translateY when at start snap point: sheetHeight - (startSnapPoint * effectiveHeight)
|
|
305
|
+
const baseTranslateY = sheetHeight - (dragState.startSnapPoint * effectiveHeight);
|
|
306
|
+
const dragDistance = rawTranslateY - baseTranslateY;
|
|
307
|
+
if (dragDistance > 0) {
|
|
308
|
+
const { lockedDragResistance, maxLockedDrag } = CONFIG.gesture;
|
|
309
|
+
const resistedDrag = Math.min(dragDistance * lockedDragResistance, maxLockedDrag);
|
|
310
|
+
return baseTranslateY + resistedDrag;
|
|
311
|
+
}
|
|
312
|
+
return rawTranslateY;
|
|
313
|
+
}
|
|
314
|
+
function findNearestSnapPoint(translateY, velocityInfluence = 0) {
|
|
315
|
+
// Calculate progress: translateY = sheetHeight - (progress * effectiveHeight)
|
|
316
|
+
// So: progress = (sheetHeight - translateY) / effectiveHeight
|
|
317
|
+
const currentProgress = (sheetHeight - translateY) / effectiveHeight;
|
|
318
|
+
const targetProgress = currentProgress + velocityInfluence;
|
|
319
|
+
return allSnapPoints.reduce((nearest, sp) => Math.abs(targetProgress - sp) < Math.abs(targetProgress - nearest) ? sp : nearest, allSnapPoints[0] ?? 0);
|
|
320
|
+
}
|
|
321
|
+
function determineSnapPoint() {
|
|
322
|
+
// Calculate progress: translateY = sheetHeight - (progress * effectiveHeight)
|
|
323
|
+
// So: progress = (sheetHeight - translateY) / effectiveHeight
|
|
324
|
+
const currentProgress = (sheetHeight - currentTranslateY) / effectiveHeight;
|
|
325
|
+
const velocity = calculateVelocity();
|
|
326
|
+
if (!dragToClose) {
|
|
327
|
+
return dragState.startSnapPoint;
|
|
328
|
+
}
|
|
329
|
+
const { closeVelocityThreshold, closeProgressThreshold, velocityInfluence } = CONFIG.gesture;
|
|
330
|
+
// Fast swipe handling
|
|
331
|
+
if (Math.abs(velocity) > closeVelocityThreshold) {
|
|
332
|
+
if (velocity > 0) {
|
|
333
|
+
// Swipe down - close or go to lower snap
|
|
334
|
+
const lowerSnaps = allSnapPoints.filter(sp => sp < dragState.startSnapPoint);
|
|
335
|
+
const lowest = lowerSnaps[lowerSnaps.length - 1];
|
|
336
|
+
if (lowest !== undefined && currentProgress >= lowest * 0.5) {
|
|
337
|
+
return lowest;
|
|
338
|
+
}
|
|
339
|
+
return 0;
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// Swipe up - go to higher snap
|
|
343
|
+
const higherSnaps = allSnapPoints.filter(sp => sp > currentProgress);
|
|
344
|
+
return higherSnaps[0] ?? Math.max(...snapPoints);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// Check close threshold
|
|
348
|
+
const progressDrop = dragState.startSnapPoint - currentProgress;
|
|
349
|
+
if (progressDrop > closeProgressThreshold) {
|
|
350
|
+
return 0;
|
|
351
|
+
}
|
|
352
|
+
// Velocity is in px/ms, convert to progress units (divide by effectiveHeight, multiply by 1000 for scale)
|
|
353
|
+
const velocityInProgressUnits = -velocity / effectiveHeight * 1000;
|
|
354
|
+
return findNearestSnapPoint(currentTranslateY, velocityInProgressUnits * velocityInfluence);
|
|
355
|
+
}
|
|
356
|
+
// ============================================
|
|
357
|
+
// TOUCH EVENT HANDLERS
|
|
358
|
+
// ============================================
|
|
359
|
+
function isInDraggableArea(target) {
|
|
360
|
+
return !!(target.closest('[data-bottom-sheet-handle]'));
|
|
361
|
+
}
|
|
362
|
+
function isInteractive(target) {
|
|
363
|
+
return !!target.closest('button, a, input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
364
|
+
}
|
|
365
|
+
function shouldIgnoreDrag(target) {
|
|
366
|
+
return !!target.closest('[data-bottom-sheet-no-drag]');
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Install a one-shot capture-phase click listener to suppress the ghost click
|
|
370
|
+
* that fires after a committed drag from an interactive element.
|
|
371
|
+
*/
|
|
372
|
+
function suppressNextClick() {
|
|
373
|
+
if (!sheetRef)
|
|
374
|
+
return;
|
|
375
|
+
const handler = (e) => {
|
|
376
|
+
e.preventDefault();
|
|
377
|
+
e.stopPropagation();
|
|
378
|
+
sheetRef?.removeEventListener('click', handler, true);
|
|
379
|
+
};
|
|
380
|
+
sheetRef.addEventListener('click', handler, true);
|
|
381
|
+
// Safety: auto-remove after a short delay if click never fires
|
|
382
|
+
setTimeout(() => sheetRef?.removeEventListener('click', handler, true), 300);
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Reset all pending/two-phase gesture state fields.
|
|
386
|
+
*/
|
|
387
|
+
function resetPendingState() {
|
|
388
|
+
dragState.isPending = false;
|
|
389
|
+
dragState.isInteractiveStart = false;
|
|
390
|
+
dragState.committed = false;
|
|
391
|
+
dragState.inScrollable = false;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Initialize common drag tracking fields shared by both touch and pointer paths.
|
|
395
|
+
*/
|
|
396
|
+
function initDragTracking(clientX, clientY) {
|
|
397
|
+
dragState.startX = clientX;
|
|
398
|
+
dragState.startY = clientY;
|
|
399
|
+
dragState.lastY = clientY;
|
|
400
|
+
dragState.currentY = currentTranslateY;
|
|
401
|
+
dragState.deltaY = 0;
|
|
402
|
+
dragState.startSnapPoint = Math.round((sheetHeight - currentTranslateY) / effectiveHeight * 100) / 100;
|
|
403
|
+
clearHistory();
|
|
404
|
+
pushHistory(clientY);
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Commit to dragging: transition from pending state to active drag.
|
|
408
|
+
* Re-anchors startY/currentY to the current position to prevent visual jump.
|
|
409
|
+
*/
|
|
410
|
+
function commitToDrag(clientY) {
|
|
411
|
+
dragState.isPending = false;
|
|
412
|
+
dragState.committed = true;
|
|
413
|
+
// Re-anchor to current position so sheet doesn't jump
|
|
414
|
+
dragState.startY = clientY;
|
|
415
|
+
dragState.currentY = currentTranslateY;
|
|
416
|
+
clearHistory();
|
|
417
|
+
pushHistory(clientY);
|
|
418
|
+
transitionDuration = '0s';
|
|
419
|
+
if (scaleTarget)
|
|
420
|
+
scaleTarget.style.transition = 'none';
|
|
421
|
+
isDragging = true;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Check if the pending gesture should be resolved.
|
|
425
|
+
* Returns: 'drag' if vertical threshold exceeded and should drag sheet,
|
|
426
|
+
* 'abort' if horizontal wins or user wants to scroll content,
|
|
427
|
+
* 'pending' if undecided.
|
|
428
|
+
*/
|
|
429
|
+
function resolvePendingGesture(clientX, clientY) {
|
|
430
|
+
const { dragActivationThreshold, horizontalDeadZone } = CONFIG.gesture;
|
|
431
|
+
const absX = Math.abs(clientX - dragState.startX);
|
|
432
|
+
const absY = Math.abs(clientY - dragState.startY);
|
|
433
|
+
const deltaY = clientY - dragState.startY; // positive = finger moving down
|
|
434
|
+
// Horizontal threshold exceeded — let native behavior handle it (slider, scroll, etc.)
|
|
435
|
+
if (absX >= dragActivationThreshold) {
|
|
436
|
+
return 'abort';
|
|
437
|
+
}
|
|
438
|
+
// Vertical threshold exceeded and angle is more vertical than horizontal
|
|
439
|
+
if (absY >= dragActivationThreshold && absY > absX * horizontalDeadZone) {
|
|
440
|
+
// Inside a scrollable area: only commit to drag if pulling DOWN from top (dismiss gesture).
|
|
441
|
+
// If swiping UP (to scroll content down), abort and let native scroll work.
|
|
442
|
+
if (dragState.inScrollable) {
|
|
443
|
+
if (scrollableElement)
|
|
444
|
+
isScrolledToTop = scrollableElement.scrollTop <= 1;
|
|
445
|
+
if (deltaY > 0 && isScrolledToTop) {
|
|
446
|
+
// Pulling down from top → drag sheet (dismiss)
|
|
447
|
+
return 'drag';
|
|
448
|
+
}
|
|
449
|
+
// Swiping up, or not at top → let native scroll handle it
|
|
450
|
+
return 'abort';
|
|
451
|
+
}
|
|
452
|
+
return 'drag';
|
|
453
|
+
}
|
|
454
|
+
return 'pending';
|
|
455
|
+
}
|
|
456
|
+
function handleTouchStart(e) {
|
|
457
|
+
if (dragState.isTouchActive)
|
|
458
|
+
return;
|
|
459
|
+
const target = e.target;
|
|
460
|
+
const inDraggableArea = isInDraggableArea(target);
|
|
461
|
+
const inScrollable = !!target.closest('[data-bottom-sheet-scroll]');
|
|
462
|
+
const isInteractiveTarget = isInteractive(target);
|
|
463
|
+
// data-bottom-sheet-no-drag: treat as fully default element — no tracking at all
|
|
464
|
+
if (shouldIgnoreDrag(target) && !inDraggableArea) {
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
if (scrollableElement)
|
|
468
|
+
isScrolledToTop = scrollableElement.scrollTop <= 1;
|
|
469
|
+
if (inScrollable && !isScrolledToTop && !inDraggableArea) {
|
|
470
|
+
dragState.shouldPreventScroll = false;
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
// Initialize tracking for all cases
|
|
474
|
+
const touch = e.touches[0];
|
|
475
|
+
if (!touch)
|
|
476
|
+
return;
|
|
477
|
+
dragState.isTouchActive = true;
|
|
478
|
+
initDragTracking(touch.clientX, touch.clientY);
|
|
479
|
+
// Interactive element (button, input, slider, etc.) NOT in draggable area:
|
|
480
|
+
// Enter pending state — don't commit to drag yet, let threshold decide
|
|
481
|
+
if (isInteractiveTarget && !inDraggableArea) {
|
|
482
|
+
dragState.isPending = true;
|
|
483
|
+
dragState.isInteractiveStart = true;
|
|
484
|
+
dragState.committed = false;
|
|
485
|
+
dragState.inScrollable = inScrollable;
|
|
486
|
+
dragState.shouldPreventScroll = true; // Will be used if we commit
|
|
487
|
+
// Do NOT set isDragging, transitionDuration, or disable transitions
|
|
488
|
+
// Do NOT call e.preventDefault() — allow native touch behavior until committed
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
// Non-interactive element: immediately commit to dragging (existing behavior)
|
|
492
|
+
dragState.isPending = false;
|
|
493
|
+
dragState.isInteractiveStart = false;
|
|
494
|
+
dragState.committed = true;
|
|
495
|
+
dragState.shouldPreventScroll = !(inScrollable && isScrolledToTop && !inDraggableArea);
|
|
496
|
+
transitionDuration = '0s';
|
|
497
|
+
if (scaleTarget)
|
|
498
|
+
scaleTarget.style.transition = 'none';
|
|
499
|
+
isDragging = true;
|
|
500
|
+
}
|
|
501
|
+
function handleTouchMove(e) {
|
|
502
|
+
if (!dragState.isTouchActive)
|
|
503
|
+
return;
|
|
504
|
+
const touch = e.touches[0];
|
|
505
|
+
if (!touch)
|
|
506
|
+
return;
|
|
507
|
+
const clientY = touch.clientY;
|
|
508
|
+
const clientX = touch.clientX;
|
|
509
|
+
// ── Two-phase: resolve pending gesture from interactive element ──
|
|
510
|
+
if (dragState.isPending) {
|
|
511
|
+
pushHistory(clientY);
|
|
512
|
+
const result = resolvePendingGesture(clientX, clientY);
|
|
513
|
+
if (result === 'drag') {
|
|
514
|
+
// Vertical intent wins → commit to drag
|
|
515
|
+
commitToDrag(clientY);
|
|
516
|
+
dragState.shouldPreventScroll = true;
|
|
517
|
+
e.preventDefault();
|
|
518
|
+
return; // First real drag frame happens on next move
|
|
519
|
+
}
|
|
520
|
+
if (result === 'abort') {
|
|
521
|
+
// Horizontal intent wins → abort, let native behavior (slider, etc.)
|
|
522
|
+
dragState.isPending = false;
|
|
523
|
+
dragState.committed = false;
|
|
524
|
+
dragState.isTouchActive = false;
|
|
525
|
+
dragState.isInteractiveStart = false;
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
// Still pending — do nothing, let native behavior continue
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
// ── Normal drag logic (committed) ──
|
|
532
|
+
const moveDelta = clientY - dragState.startY;
|
|
533
|
+
dragState.deltaY = clientY - dragState.lastY;
|
|
534
|
+
dragState.lastY = clientY;
|
|
535
|
+
pushHistory(clientY);
|
|
536
|
+
if (scrollableElement)
|
|
537
|
+
isScrolledToTop = scrollableElement.scrollTop <= 1;
|
|
538
|
+
if (isScrolledToTop && moveDelta > 0)
|
|
539
|
+
dragState.shouldPreventScroll = true;
|
|
540
|
+
if (!dragState.shouldPreventScroll)
|
|
541
|
+
return;
|
|
542
|
+
e.preventDefault();
|
|
543
|
+
let translateY = dragState.currentY + moveDelta;
|
|
544
|
+
if (translateY < 0)
|
|
545
|
+
translateY = overdragResistance(translateY);
|
|
546
|
+
if (!dragToClose)
|
|
547
|
+
translateY = applyLockedDragResistance(translateY);
|
|
548
|
+
translateY = Math.min(translateY, sheetHeight);
|
|
549
|
+
currentTranslateY = translateY;
|
|
550
|
+
if (sheetRef)
|
|
551
|
+
sheetRef.style.translate = `0 ${translateY}px`;
|
|
552
|
+
const progress = Math.max(0, Math.min(maxSnapPoint, (sheetHeight - translateY) / effectiveHeight));
|
|
553
|
+
updateBackdrop(progress);
|
|
554
|
+
updateScaleTarget(progress, false);
|
|
555
|
+
bottomSheetStore.updateProgress(id, progress);
|
|
556
|
+
}
|
|
557
|
+
function handleTouchEnd(e) {
|
|
558
|
+
if (e.touches.length > 0 || !dragState.isTouchActive)
|
|
559
|
+
return;
|
|
560
|
+
dragState.isTouchActive = false;
|
|
561
|
+
// ── Two-phase: pending never resolved (tap) → let native click fire ──
|
|
562
|
+
if (dragState.isPending) {
|
|
563
|
+
resetPendingState();
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
// ── Committed drag from interactive element → suppress ghost click ──
|
|
567
|
+
if (dragState.committed && dragState.isInteractiveStart) {
|
|
568
|
+
suppressNextClick();
|
|
569
|
+
}
|
|
570
|
+
resetPendingState();
|
|
571
|
+
if (!dragState.shouldPreventScroll) {
|
|
572
|
+
isDragging = false;
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
isDragging = false;
|
|
576
|
+
dragState.shouldPreventScroll = false;
|
|
577
|
+
const nearestSnap = determineSnapPoint();
|
|
578
|
+
if (nearestSnap === 0 && dragToClose) {
|
|
579
|
+
doClose();
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
snapTo(nearestSnap > 0 ? nearestSnap : dragState.startSnapPoint, () => {
|
|
583
|
+
if (!open) {
|
|
584
|
+
prevOpen = true;
|
|
585
|
+
open = true;
|
|
586
|
+
onOpenChange?.(true);
|
|
587
|
+
}
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
// ============================================
|
|
592
|
+
// POINTER EVENT HANDLERS (Desktop)
|
|
593
|
+
// ============================================
|
|
594
|
+
function handlePointerDown(e) {
|
|
595
|
+
if (e.pointerType === 'touch' || e.button !== 0 || dragState.activePointerId !== null)
|
|
596
|
+
return;
|
|
597
|
+
const target = e.target;
|
|
598
|
+
const inDraggableArea = isInDraggableArea(target);
|
|
599
|
+
const inScrollable = !!target.closest('[data-bottom-sheet-scroll]');
|
|
600
|
+
const isInteractiveTarget = isInteractive(target);
|
|
601
|
+
const shouldIgnoreDragTarget = shouldIgnoreDrag(target);
|
|
602
|
+
// data-bottom-sheet-no-drag: treat as fully default element — no tracking at all
|
|
603
|
+
if (shouldIgnoreDragTarget && !inDraggableArea)
|
|
604
|
+
return;
|
|
605
|
+
if (scrollableElement)
|
|
606
|
+
isScrolledToTop = scrollableElement.scrollTop <= 1;
|
|
607
|
+
if (inScrollable && !isScrolledToTop && !inDraggableArea)
|
|
608
|
+
return;
|
|
609
|
+
dragState.activePointerId = e.pointerId;
|
|
610
|
+
initDragTracking(e.clientX, e.clientY);
|
|
611
|
+
// Interactive element NOT in draggable area:
|
|
612
|
+
// Enter pending state — don't commit yet, preserve native focus/click
|
|
613
|
+
if (isInteractiveTarget && !inDraggableArea) {
|
|
614
|
+
dragState.isPending = true;
|
|
615
|
+
dragState.isInteractiveStart = true;
|
|
616
|
+
dragState.committed = false;
|
|
617
|
+
dragState.inScrollable = inScrollable;
|
|
618
|
+
// Do NOT call e.preventDefault() — preserve focus for inputs
|
|
619
|
+
// Do NOT call setPointerCapture — allow native hover/click behavior
|
|
620
|
+
// Do NOT set isDragging or disable transitions
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
// Non-interactive element: immediately commit to dragging
|
|
624
|
+
dragState.isPending = false;
|
|
625
|
+
dragState.isInteractiveStart = false;
|
|
626
|
+
dragState.committed = true;
|
|
627
|
+
transitionDuration = '0s';
|
|
628
|
+
if (scaleTarget)
|
|
629
|
+
scaleTarget.style.transition = 'none';
|
|
630
|
+
sheetRef?.setPointerCapture(e.pointerId);
|
|
631
|
+
isDragging = true;
|
|
632
|
+
e.preventDefault();
|
|
633
|
+
}
|
|
634
|
+
function handlePointerMove(e) {
|
|
635
|
+
if (e.pointerType === 'touch' || dragState.activePointerId !== e.pointerId)
|
|
636
|
+
return;
|
|
637
|
+
if (!isDragging && !dragState.isPending)
|
|
638
|
+
return;
|
|
639
|
+
const clientY = e.clientY;
|
|
640
|
+
const clientX = e.clientX;
|
|
641
|
+
// ── Two-phase: resolve pending gesture from interactive element ──
|
|
642
|
+
if (dragState.isPending) {
|
|
643
|
+
pushHistory(clientY);
|
|
644
|
+
const result = resolvePendingGesture(clientX, clientY);
|
|
645
|
+
if (result === 'drag') {
|
|
646
|
+
// Vertical intent wins → commit to drag
|
|
647
|
+
commitToDrag(clientY);
|
|
648
|
+
sheetRef?.setPointerCapture(e.pointerId);
|
|
649
|
+
e.preventDefault();
|
|
650
|
+
return; // First real drag frame happens on next move
|
|
651
|
+
}
|
|
652
|
+
if (result === 'abort') {
|
|
653
|
+
// Horizontal intent wins → abort, let native behavior
|
|
654
|
+
dragState.isPending = false;
|
|
655
|
+
dragState.committed = false;
|
|
656
|
+
dragState.activePointerId = null;
|
|
657
|
+
dragState.isInteractiveStart = false;
|
|
658
|
+
return;
|
|
659
|
+
}
|
|
660
|
+
// Still pending — do nothing
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
// ── Normal drag logic (committed) ──
|
|
664
|
+
dragState.deltaY = clientY - dragState.lastY;
|
|
665
|
+
dragState.lastY = clientY;
|
|
666
|
+
pushHistory(clientY);
|
|
667
|
+
let translateY = dragState.currentY + clientY - dragState.startY;
|
|
668
|
+
if (translateY < 0)
|
|
669
|
+
translateY = overdragResistance(translateY);
|
|
670
|
+
if (!dragToClose)
|
|
671
|
+
translateY = applyLockedDragResistance(translateY);
|
|
672
|
+
translateY = Math.min(translateY, sheetHeight);
|
|
673
|
+
currentTranslateY = translateY;
|
|
674
|
+
if (sheetRef)
|
|
675
|
+
sheetRef.style.translate = `0 ${translateY}px`;
|
|
676
|
+
const progress = Math.max(0, Math.min(maxSnapPoint, (sheetHeight - translateY) / effectiveHeight));
|
|
677
|
+
updateBackdrop(progress);
|
|
678
|
+
updateScaleTarget(progress, false);
|
|
679
|
+
bottomSheetStore.updateProgress(id, progress);
|
|
680
|
+
e.preventDefault();
|
|
681
|
+
}
|
|
682
|
+
function handlePointerUp(e) {
|
|
683
|
+
if (e.pointerType === 'touch' || dragState.activePointerId !== e.pointerId)
|
|
684
|
+
return;
|
|
685
|
+
try {
|
|
686
|
+
sheetRef?.releasePointerCapture(e.pointerId);
|
|
687
|
+
}
|
|
688
|
+
catch {
|
|
689
|
+
}
|
|
690
|
+
dragState.activePointerId = null;
|
|
691
|
+
// ── Two-phase: pending never resolved (tap) → let native click fire ──
|
|
692
|
+
if (dragState.isPending) {
|
|
693
|
+
resetPendingState();
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
696
|
+
// ── Committed drag from interactive element → suppress ghost click ──
|
|
697
|
+
if (dragState.committed && dragState.isInteractiveStart) {
|
|
698
|
+
suppressNextClick();
|
|
699
|
+
}
|
|
700
|
+
resetPendingState();
|
|
701
|
+
if (!isDragging)
|
|
702
|
+
return;
|
|
703
|
+
isDragging = false;
|
|
704
|
+
const nearestSnap = determineSnapPoint();
|
|
705
|
+
if (nearestSnap === 0 && dragToClose) {
|
|
706
|
+
doClose();
|
|
707
|
+
}
|
|
708
|
+
else {
|
|
709
|
+
snapTo(nearestSnap > 0 ? nearestSnap : dragState.startSnapPoint, () => {
|
|
710
|
+
if (!open) {
|
|
711
|
+
prevOpen = true;
|
|
712
|
+
open = true;
|
|
713
|
+
onOpenChange?.(true);
|
|
714
|
+
}
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
function handlePointerCancel(e) {
|
|
719
|
+
if (e.pointerType === 'touch' || dragState.activePointerId !== e.pointerId)
|
|
720
|
+
return;
|
|
721
|
+
try {
|
|
722
|
+
sheetRef?.releasePointerCapture(e.pointerId);
|
|
723
|
+
}
|
|
724
|
+
catch {
|
|
725
|
+
}
|
|
726
|
+
dragState.activePointerId = null;
|
|
727
|
+
// If pending, just reset — nothing visual happened
|
|
728
|
+
if (dragState.isPending) {
|
|
729
|
+
resetPendingState();
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
resetPendingState();
|
|
733
|
+
if (!isDragging)
|
|
734
|
+
return;
|
|
735
|
+
isDragging = false;
|
|
736
|
+
snapTo(findNearestSnapPoint(currentTranslateY, 0));
|
|
737
|
+
}
|
|
738
|
+
function handleCloseButtonClick(e) {
|
|
739
|
+
e.stopPropagation();
|
|
740
|
+
doClose();
|
|
741
|
+
}
|
|
742
|
+
function handleBackdropClick(e) {
|
|
743
|
+
if (!closeOnBackdrop || e.target !== backdropRef || isDragging || isAnimating)
|
|
744
|
+
return;
|
|
745
|
+
doClose();
|
|
746
|
+
}
|
|
747
|
+
function handleKeydown(e) {
|
|
748
|
+
if (e.key === 'Escape' && isVisible && bottomSheetStore.isTopmost(id)) {
|
|
749
|
+
e.preventDefault();
|
|
750
|
+
doClose();
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
// Svelte action for touch events
|
|
754
|
+
function touchEvents(node) {
|
|
755
|
+
node.addEventListener('touchstart', handleTouchStart, { passive: false });
|
|
756
|
+
node.addEventListener('touchmove', handleTouchMove, { passive: false });
|
|
757
|
+
node.addEventListener('touchend', handleTouchEnd, { passive: true });
|
|
758
|
+
return {
|
|
759
|
+
destroy() {
|
|
760
|
+
node.removeEventListener('touchstart', handleTouchStart);
|
|
761
|
+
node.removeEventListener('touchmove', handleTouchMove);
|
|
762
|
+
node.removeEventListener('touchend', handleTouchEnd);
|
|
763
|
+
}
|
|
764
|
+
};
|
|
765
|
+
}
|
|
766
|
+
</script>
|
|
767
|
+
|
|
768
|
+
<svelte:window onkeydown={handleKeydown}/>
|
|
769
|
+
|
|
770
|
+
{#if isVisible}
|
|
771
|
+
<!-- Backdrop -->
|
|
772
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
773
|
+
<div
|
|
774
|
+
bind:this={backdropRef}
|
|
775
|
+
class={r.backdrop()}
|
|
776
|
+
style:z-index={zIndex}
|
|
777
|
+
style:--transition-duration={transitionDuration}
|
|
778
|
+
onpointerup={handleBackdropClick}
|
|
779
|
+
></div>
|
|
780
|
+
|
|
781
|
+
<!-- Sheet -->
|
|
782
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
783
|
+
<div
|
|
784
|
+
bind:this={sheetRef}
|
|
785
|
+
class={r.sheet()}
|
|
786
|
+
style:z-index={zIndex + 1}
|
|
787
|
+
style:height="{maxSheetHeight}px"
|
|
788
|
+
style:--transition-duration={transitionDuration}
|
|
789
|
+
role="dialog"
|
|
790
|
+
aria-modal="true"
|
|
791
|
+
tabindex={-1}
|
|
792
|
+
use:touchEvents
|
|
793
|
+
onpointerdown={handlePointerDown}
|
|
794
|
+
onpointermove={handlePointerMove}
|
|
795
|
+
onpointerup={handlePointerUp}
|
|
796
|
+
onpointercancel={handlePointerCancel}
|
|
797
|
+
>
|
|
798
|
+
<!-- Drag Handle -->
|
|
799
|
+
<div class={r.handle()} data-bottom-sheet-handle>
|
|
800
|
+
<div class={r.handleBar()}></div>
|
|
801
|
+
</div>
|
|
802
|
+
|
|
803
|
+
<!-- Header -->
|
|
804
|
+
{#if header}
|
|
805
|
+
<div class={r.header()} data-bottom-sheet-header>
|
|
806
|
+
{@render header()}
|
|
807
|
+
{#if showCloseButton}
|
|
808
|
+
<button
|
|
809
|
+
class={r.closeButton()}
|
|
810
|
+
data-bottom-sheet-close
|
|
811
|
+
onclick={handleCloseButtonClick}
|
|
812
|
+
aria-label="Close"
|
|
813
|
+
type="button"
|
|
814
|
+
>
|
|
815
|
+
<IconX class="size-4"/>
|
|
816
|
+
</button>
|
|
817
|
+
{/if}
|
|
818
|
+
</div>
|
|
819
|
+
{/if}
|
|
820
|
+
|
|
821
|
+
<!-- Content -->
|
|
822
|
+
<div bind:this={contentRef} class={r.content()} data-bottom-sheet-content>
|
|
823
|
+
{#if children}
|
|
824
|
+
{@render children()}
|
|
825
|
+
{/if}
|
|
826
|
+
</div>
|
|
827
|
+
</div>
|
|
828
|
+
{/if}
|
|
829
|
+
|
|
830
|
+
<style>
|
|
831
|
+
/* Consumer-marked scroll region inside the sheet body. */
|
|
832
|
+
[data-bottom-sheet-content] :global([data-bottom-sheet-scroll]) {
|
|
833
|
+
flex: 1;
|
|
834
|
+
overflow-y: auto;
|
|
835
|
+
overflow-x: hidden;
|
|
836
|
+
overscroll-behavior: contain;
|
|
837
|
+
-webkit-overflow-scrolling: touch;
|
|
838
|
+
min-height: 0;
|
|
839
|
+
touch-action: pan-y;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/* Suppress native gestures on header children so the drag is captured. */
|
|
843
|
+
[data-bottom-sheet-header] :global(*) {
|
|
844
|
+
touch-action: none;
|
|
845
|
+
user-select: none;
|
|
846
|
+
}
|
|
847
|
+
</style>
|