@marwes-ui/svelte 1.3.0
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/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +518 -0
- package/dist/components/accordion/Accordion.svelte +56 -0
- package/dist/components/accordion/Accordion.svelte.d.ts +4 -0
- package/dist/components/accordion/AccordionField.svelte +90 -0
- package/dist/components/accordion/AccordionField.svelte.d.ts +4 -0
- package/dist/components/accordion/FAQAccordion.svelte +21 -0
- package/dist/components/accordion/FAQAccordion.svelte.d.ts +20 -0
- package/dist/components/accordion/README.md +19 -0
- package/dist/components/accordion/SectionsAccordion.svelte +22 -0
- package/dist/components/accordion/SectionsAccordion.svelte.d.ts +21 -0
- package/dist/components/accordion/SettingsAccordion.svelte +21 -0
- package/dist/components/accordion/SettingsAccordion.svelte.d.ts +20 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/accordion/types.d.ts +28 -0
- package/dist/components/accordion/types.js +1 -0
- package/dist/components/avatar/Avatar.svelte +45 -0
- package/dist/components/avatar/Avatar.svelte.d.ts +4 -0
- package/dist/components/avatar/AvatarBadge.svelte +47 -0
- package/dist/components/avatar/AvatarBadge.svelte.d.ts +7 -0
- package/dist/components/avatar/AvatarGroup.svelte +50 -0
- package/dist/components/avatar/AvatarGroup.svelte.d.ts +15 -0
- package/dist/components/avatar/PresenceAvatar.svelte +12 -0
- package/dist/components/avatar/PresenceAvatar.svelte.d.ts +7 -0
- package/dist/components/avatar/ProfileAvatar.svelte +7 -0
- package/dist/components/avatar/ProfileAvatar.svelte.d.ts +4 -0
- package/dist/components/avatar/README.md +19 -0
- package/dist/components/avatar/TeamAvatarGroup.svelte +21 -0
- package/dist/components/avatar/TeamAvatarGroup.svelte.d.ts +15 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/avatar/types.d.ts +6 -0
- package/dist/components/avatar/types.js +1 -0
- package/dist/components/badge/Badge.svelte +26 -0
- package/dist/components/badge/Badge.svelte.d.ts +4 -0
- package/dist/components/badge/BadgeGroup.svelte +25 -0
- package/dist/components/badge/BadgeGroup.svelte.d.ts +4 -0
- package/dist/components/badge/NotificationBadge.svelte +7 -0
- package/dist/components/badge/NotificationBadge.svelte.d.ts +4 -0
- package/dist/components/badge/PriorityBadge.svelte +7 -0
- package/dist/components/badge/PriorityBadge.svelte.d.ts +4 -0
- package/dist/components/badge/README.md +16 -0
- package/dist/components/badge/StatusBadge.svelte +7 -0
- package/dist/components/badge/StatusBadge.svelte.d.ts +4 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/badge/types.d.ts +15 -0
- package/dist/components/badge/types.js +1 -0
- package/dist/components/button/Button.svelte +92 -0
- package/dist/components/button/Button.svelte.d.ts +4 -0
- package/dist/components/button/CancelButton.svelte +8 -0
- package/dist/components/button/CancelButton.svelte.d.ts +5 -0
- package/dist/components/button/CloseButton.svelte +8 -0
- package/dist/components/button/CloseButton.svelte.d.ts +5 -0
- package/dist/components/button/ConfirmButton.svelte +8 -0
- package/dist/components/button/ConfirmButton.svelte.d.ts +5 -0
- package/dist/components/button/CopyButton.svelte +8 -0
- package/dist/components/button/CopyButton.svelte.d.ts +5 -0
- package/dist/components/button/CreateButton.svelte +7 -0
- package/dist/components/button/CreateButton.svelte.d.ts +5 -0
- package/dist/components/button/DestructiveButton.svelte +8 -0
- package/dist/components/button/DestructiveButton.svelte.d.ts +5 -0
- package/dist/components/button/DownloadButton.svelte +8 -0
- package/dist/components/button/DownloadButton.svelte.d.ts +5 -0
- package/dist/components/button/DropdownButton.svelte +8 -0
- package/dist/components/button/DropdownButton.svelte.d.ts +5 -0
- package/dist/components/button/EditButton.svelte +8 -0
- package/dist/components/button/EditButton.svelte.d.ts +5 -0
- package/dist/components/button/FilterButton.svelte +8 -0
- package/dist/components/button/FilterButton.svelte.d.ts +5 -0
- package/dist/components/button/LinkButton.svelte +8 -0
- package/dist/components/button/LinkButton.svelte.d.ts +5 -0
- package/dist/components/button/PrimaryButton.svelte +7 -0
- package/dist/components/button/PrimaryButton.svelte.d.ts +5 -0
- package/dist/components/button/README.md +21 -0
- package/dist/components/button/RefreshButton.svelte +8 -0
- package/dist/components/button/RefreshButton.svelte.d.ts +5 -0
- package/dist/components/button/SaveButton.svelte +8 -0
- package/dist/components/button/SaveButton.svelte.d.ts +5 -0
- package/dist/components/button/SearchButton.svelte +8 -0
- package/dist/components/button/SearchButton.svelte.d.ts +5 -0
- package/dist/components/button/SecondaryButton.svelte +7 -0
- package/dist/components/button/SecondaryButton.svelte.d.ts +5 -0
- package/dist/components/button/SortButton.svelte +8 -0
- package/dist/components/button/SortButton.svelte.d.ts +5 -0
- package/dist/components/button/SubmitButton.svelte +7 -0
- package/dist/components/button/SubmitButton.svelte.d.ts +5 -0
- package/dist/components/button/SuccessButton.svelte +7 -0
- package/dist/components/button/SuccessButton.svelte.d.ts +5 -0
- package/dist/components/button/TextButton.svelte +7 -0
- package/dist/components/button/TextButton.svelte.d.ts +5 -0
- package/dist/components/button/UploadButton.svelte +8 -0
- package/dist/components/button/UploadButton.svelte.d.ts +5 -0
- package/dist/components/button/VerifyButton.svelte +8 -0
- package/dist/components/button/VerifyButton.svelte.d.ts +5 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/button/types.d.ts +8 -0
- package/dist/components/button/types.js +1 -0
- package/dist/components/card/Card.svelte +33 -0
- package/dist/components/card/Card.svelte.d.ts +4 -0
- package/dist/components/card/ProductCard.svelte +6 -0
- package/dist/components/card/ProductCard.svelte.d.ts +4 -0
- package/dist/components/card/ProfileCard.svelte +6 -0
- package/dist/components/card/ProfileCard.svelte.d.ts +4 -0
- package/dist/components/card/README.md +15 -0
- package/dist/components/card/StatCard.svelte +6 -0
- package/dist/components/card/StatCard.svelte.d.ts +4 -0
- package/dist/components/card/index.d.ts +2 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/card/types.d.ts +10 -0
- package/dist/components/card/types.js +1 -0
- package/dist/components/checkbox/Checkbox.svelte +54 -0
- package/dist/components/checkbox/Checkbox.svelte.d.ts +4 -0
- package/dist/components/checkbox/CheckboxField.svelte +74 -0
- package/dist/components/checkbox/CheckboxField.svelte.d.ts +4 -0
- package/dist/components/checkbox/CheckboxGroupField.svelte +50 -0
- package/dist/components/checkbox/CheckboxGroupField.svelte.d.ts +4 -0
- package/dist/components/checkbox/README.md +17 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/checkbox/types.d.ts +30 -0
- package/dist/components/checkbox/types.js +1 -0
- package/dist/components/date-picker/DatePicker.svelte +108 -0
- package/dist/components/date-picker/DatePicker.svelte.d.ts +4 -0
- package/dist/components/date-picker/README.md +17 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/date-picker/index.js +1 -0
- package/dist/components/date-picker/types.d.ts +13 -0
- package/dist/components/date-picker/types.js +1 -0
- package/dist/components/dialog/ConfirmDialog.svelte +28 -0
- package/dist/components/dialog/ConfirmDialog.svelte.d.ts +4 -0
- package/dist/components/dialog/DestructiveDialog.svelte +28 -0
- package/dist/components/dialog/DestructiveDialog.svelte.d.ts +4 -0
- package/dist/components/dialog/Dialog.svelte +114 -0
- package/dist/components/dialog/Dialog.svelte.d.ts +4 -0
- package/dist/components/dialog/DialogModal.svelte +120 -0
- package/dist/components/dialog/DialogModal.svelte.d.ts +4 -0
- package/dist/components/dialog/InfoDialog.svelte +24 -0
- package/dist/components/dialog/InfoDialog.svelte.d.ts +4 -0
- package/dist/components/dialog/README.md +23 -0
- package/dist/components/dialog/index.d.ts +6 -0
- package/dist/components/dialog/index.js +5 -0
- package/dist/components/dialog/types.d.ts +42 -0
- package/dist/components/dialog/types.js +1 -0
- package/dist/components/divider/Divider.svelte +25 -0
- package/dist/components/divider/Divider.svelte.d.ts +4 -0
- package/dist/components/divider/README.md +15 -0
- package/dist/components/divider/index.d.ts +2 -0
- package/dist/components/divider/index.js +1 -0
- package/dist/components/divider/types.d.ts +5 -0
- package/dist/components/divider/types.js +1 -0
- package/dist/components/heading/H1.svelte +23 -0
- package/dist/components/heading/H1.svelte.d.ts +4 -0
- package/dist/components/heading/H2.svelte +23 -0
- package/dist/components/heading/H2.svelte.d.ts +4 -0
- package/dist/components/heading/H3.svelte +23 -0
- package/dist/components/heading/H3.svelte.d.ts +4 -0
- package/dist/components/heading/README.md +13 -0
- package/dist/components/heading/index.d.ts +4 -0
- package/dist/components/heading/index.js +3 -0
- package/dist/components/heading/types.d.ts +26 -0
- package/dist/components/heading/types.js +1 -0
- package/dist/components/icon/Icon.svelte +65 -0
- package/dist/components/icon/Icon.svelte.d.ts +4 -0
- package/dist/components/icon/README.md +18 -0
- package/dist/components/icon/index.d.ts +2 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/icon/types.d.ts +12 -0
- package/dist/components/icon/types.js +1 -0
- package/dist/components/input/CurrencyField.svelte +12 -0
- package/dist/components/input/CurrencyField.svelte.d.ts +7 -0
- package/dist/components/input/DateOfBirthField.svelte +21 -0
- package/dist/components/input/DateOfBirthField.svelte.d.ts +14 -0
- package/dist/components/input/DropdownField.svelte +29 -0
- package/dist/components/input/DropdownField.svelte.d.ts +14 -0
- package/dist/components/input/EmailField.svelte +9 -0
- package/dist/components/input/EmailField.svelte.d.ts +7 -0
- package/dist/components/input/Input.svelte +49 -0
- package/dist/components/input/Input.svelte.d.ts +4 -0
- package/dist/components/input/InputField.svelte +139 -0
- package/dist/components/input/InputField.svelte.d.ts +4 -0
- package/dist/components/input/InputOtp.svelte +140 -0
- package/dist/components/input/InputOtp.svelte.d.ts +4 -0
- package/dist/components/input/PasswordField.svelte +9 -0
- package/dist/components/input/PasswordField.svelte.d.ts +7 -0
- package/dist/components/input/PhoneField.svelte +9 -0
- package/dist/components/input/PhoneField.svelte.d.ts +7 -0
- package/dist/components/input/README.md +24 -0
- package/dist/components/input/RichText.svelte +177 -0
- package/dist/components/input/RichText.svelte.d.ts +4 -0
- package/dist/components/input/RichTextField.svelte +84 -0
- package/dist/components/input/RichTextField.svelte.d.ts +4 -0
- package/dist/components/input/SearchField.svelte +9 -0
- package/dist/components/input/SearchField.svelte.d.ts +7 -0
- package/dist/components/input/Select.svelte +88 -0
- package/dist/components/input/Select.svelte.d.ts +4 -0
- package/dist/components/input/SelectField.svelte +395 -0
- package/dist/components/input/SelectField.svelte.d.ts +4 -0
- package/dist/components/input/Textarea.svelte +50 -0
- package/dist/components/input/Textarea.svelte.d.ts +4 -0
- package/dist/components/input/TextareaField.svelte +57 -0
- package/dist/components/input/TextareaField.svelte.d.ts +4 -0
- package/dist/components/input/URLField.svelte +9 -0
- package/dist/components/input/URLField.svelte.d.ts +7 -0
- package/dist/components/input/ZipCodeField.svelte +21 -0
- package/dist/components/input/ZipCodeField.svelte.d.ts +14 -0
- package/dist/components/input/index.d.ts +7 -0
- package/dist/components/input/index.js +6 -0
- package/dist/components/input/types.d.ts +104 -0
- package/dist/components/input/types.js +1 -0
- package/dist/components/paragraph/Paragraph.svelte +23 -0
- package/dist/components/paragraph/Paragraph.svelte.d.ts +4 -0
- package/dist/components/paragraph/README.md +13 -0
- package/dist/components/paragraph/index.d.ts +2 -0
- package/dist/components/paragraph/index.js +1 -0
- package/dist/components/paragraph/types.d.ts +9 -0
- package/dist/components/paragraph/types.js +1 -0
- package/dist/components/radio/OptionRadioGroup.svelte +52 -0
- package/dist/components/radio/OptionRadioGroup.svelte.d.ts +21 -0
- package/dist/components/radio/README.md +16 -0
- package/dist/components/radio/Radio.svelte +38 -0
- package/dist/components/radio/Radio.svelte.d.ts +4 -0
- package/dist/components/radio/RadioGroupField.svelte +75 -0
- package/dist/components/radio/RadioGroupField.svelte.d.ts +4 -0
- package/dist/components/radio/RatingRadioGroup.svelte +51 -0
- package/dist/components/radio/RatingRadioGroup.svelte.d.ts +17 -0
- package/dist/components/radio/YesNoRadioGroup.svelte +48 -0
- package/dist/components/radio/YesNoRadioGroup.svelte.d.ts +16 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.js +2 -0
- package/dist/components/radio/types.d.ts +22 -0
- package/dist/components/radio/types.js +1 -0
- package/dist/components/skeleton/README.md +16 -0
- package/dist/components/skeleton/Skeleton.svelte +29 -0
- package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/skeleton/types.d.ts +6 -0
- package/dist/components/skeleton/types.js +1 -0
- package/dist/components/slider/BrightnessSlider.svelte +31 -0
- package/dist/components/slider/BrightnessSlider.svelte.d.ts +11 -0
- package/dist/components/slider/README.md +20 -0
- package/dist/components/slider/RadiusSlider.svelte +31 -0
- package/dist/components/slider/RadiusSlider.svelte.d.ts +11 -0
- package/dist/components/slider/Slider.svelte +67 -0
- package/dist/components/slider/Slider.svelte.d.ts +4 -0
- package/dist/components/slider/SliderField.svelte +115 -0
- package/dist/components/slider/SliderField.svelte.d.ts +4 -0
- package/dist/components/slider/VolumeSlider.svelte +31 -0
- package/dist/components/slider/VolumeSlider.svelte.d.ts +11 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/index.js +1 -0
- package/dist/components/slider/types.d.ts +28 -0
- package/dist/components/slider/types.js +1 -0
- package/dist/components/spacing/README.md +15 -0
- package/dist/components/spacing/Spacer.svelte +8 -0
- package/dist/components/spacing/Spacer.svelte.d.ts +3 -0
- package/dist/components/spacing/Spacing.svelte +23 -0
- package/dist/components/spacing/Spacing.svelte.d.ts +4 -0
- package/dist/components/spacing/index.d.ts +3 -0
- package/dist/components/spacing/index.js +2 -0
- package/dist/components/spacing/types.d.ts +7 -0
- package/dist/components/spacing/types.js +1 -0
- package/dist/components/spinner/ButtonSpinner.svelte +35 -0
- package/dist/components/spinner/ButtonSpinner.svelte.d.ts +4 -0
- package/dist/components/spinner/EmptyStateSpinner.svelte +20 -0
- package/dist/components/spinner/EmptyStateSpinner.svelte.d.ts +4 -0
- package/dist/components/spinner/README.md +19 -0
- package/dist/components/spinner/Spinner.svelte +60 -0
- package/dist/components/spinner/Spinner.svelte.d.ts +4 -0
- package/dist/components/spinner/index.d.ts +3 -0
- package/dist/components/spinner/index.js +2 -0
- package/dist/components/spinner/types.d.ts +9 -0
- package/dist/components/spinner/types.js +1 -0
- package/dist/components/stat-tile/README.md +15 -0
- package/dist/components/stat-tile/StatTile.svelte +44 -0
- package/dist/components/stat-tile/StatTile.svelte.d.ts +4 -0
- package/dist/components/stat-tile/index.d.ts +2 -0
- package/dist/components/stat-tile/index.js +1 -0
- package/dist/components/stat-tile/types.d.ts +14 -0
- package/dist/components/stat-tile/types.js +1 -0
- package/dist/components/switch/FeatureToggle.svelte +19 -0
- package/dist/components/switch/FeatureToggle.svelte.d.ts +13 -0
- package/dist/components/switch/PermissionSwitch.svelte +19 -0
- package/dist/components/switch/PermissionSwitch.svelte.d.ts +13 -0
- package/dist/components/switch/PreferenceSwitch.svelte +19 -0
- package/dist/components/switch/PreferenceSwitch.svelte.d.ts +13 -0
- package/dist/components/switch/README.md +17 -0
- package/dist/components/switch/Switch.svelte +52 -0
- package/dist/components/switch/Switch.svelte.d.ts +4 -0
- package/dist/components/switch/SwitchField.svelte +71 -0
- package/dist/components/switch/SwitchField.svelte.d.ts +4 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/switch/types.d.ts +20 -0
- package/dist/components/switch/types.js +1 -0
- package/dist/components/tab/ContentTabs.svelte +11 -0
- package/dist/components/tab/ContentTabs.svelte.d.ts +3 -0
- package/dist/components/tab/NavigationTabs.svelte +11 -0
- package/dist/components/tab/NavigationTabs.svelte.d.ts +3 -0
- package/dist/components/tab/README.md +26 -0
- package/dist/components/tab/SettingsTabs.svelte +11 -0
- package/dist/components/tab/SettingsTabs.svelte.d.ts +3 -0
- package/dist/components/tab/Tab.svelte +32 -0
- package/dist/components/tab/Tab.svelte.d.ts +4 -0
- package/dist/components/tab/TabGroup.svelte +132 -0
- package/dist/components/tab/TabGroup.svelte.d.ts +4 -0
- package/dist/components/tab/TabPanel.svelte +25 -0
- package/dist/components/tab/TabPanel.svelte.d.ts +4 -0
- package/dist/components/tab/index.d.ts +7 -0
- package/dist/components/tab/index.js +6 -0
- package/dist/components/tab/types.d.ts +36 -0
- package/dist/components/tab/types.js +1 -0
- package/dist/components/toast/ErrorToast.svelte +24 -0
- package/dist/components/toast/ErrorToast.svelte.d.ts +4 -0
- package/dist/components/toast/InfoToast.svelte +24 -0
- package/dist/components/toast/InfoToast.svelte.d.ts +4 -0
- package/dist/components/toast/README.md +35 -0
- package/dist/components/toast/SuccessToast.svelte +25 -0
- package/dist/components/toast/SuccessToast.svelte.d.ts +4 -0
- package/dist/components/toast/Toast.svelte +53 -0
- package/dist/components/toast/Toast.svelte.d.ts +4 -0
- package/dist/components/toast/ToastContainer.svelte +212 -0
- package/dist/components/toast/ToastContainer.svelte.d.ts +4 -0
- package/dist/components/toast/ToastProvider.svelte +71 -0
- package/dist/components/toast/ToastProvider.svelte.d.ts +7 -0
- package/dist/components/toast/WarningToast.svelte +24 -0
- package/dist/components/toast/WarningToast.svelte.d.ts +4 -0
- package/dist/components/toast/index.d.ts +9 -0
- package/dist/components/toast/index.js +8 -0
- package/dist/components/toast/types.d.ts +48 -0
- package/dist/components/toast/types.js +1 -0
- package/dist/components/tooltip/README.md +22 -0
- package/dist/components/tooltip/Tooltip.svelte +29 -0
- package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
- package/dist/components/tooltip/TooltipGroup.svelte +100 -0
- package/dist/components/tooltip/TooltipGroup.svelte.d.ts +4 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/index.js +2 -0
- package/dist/components/tooltip/types.d.ts +22 -0
- package/dist/components/tooltip/types.js +1 -0
- package/dist/index.d.ts +149 -0
- package/dist/index.js +149 -0
- package/dist/internal/attrs.d.ts +2 -0
- package/dist/internal/attrs.js +5 -0
- package/dist/internal/css-vars.d.ts +5 -0
- package/dist/internal/css-vars.js +20 -0
- package/dist/internal/merge-class.d.ts +1 -0
- package/dist/internal/merge-class.js +4 -0
- package/dist/internal/svg-attrs.d.ts +9 -0
- package/dist/internal/svg-attrs.js +16 -0
- package/dist/provider/MarwesProvider.svelte +186 -0
- package/dist/provider/MarwesProvider.svelte.d.ts +4 -0
- package/dist/provider/context.d.ts +3 -0
- package/dist/provider/context.js +12 -0
- package/dist/provider/runtime-theme.d.ts +5 -0
- package/dist/provider/runtime-theme.js +63 -0
- package/dist/provider/theme-mode-runtime.d.ts +15 -0
- package/dist/provider/theme-mode-runtime.js +84 -0
- package/dist/provider/types.d.ts +32 -0
- package/dist/provider/types.js +1 -0
- package/dist/provider/use-theme-mode.d.ts +24 -0
- package/dist/provider/use-theme-mode.js +38 -0
- package/dist/provider/use-theme.d.ts +15 -0
- package/dist/provider/use-theme.js +19 -0
- package/dist/ssr.d.ts +2 -0
- package/dist/ssr.js +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
ThemeMode as MwThemeMode,
|
|
4
|
+
nextThemeMode,
|
|
5
|
+
resolveThemeInput,
|
|
6
|
+
resolveThemePreference,
|
|
7
|
+
} from "@marwes-ui/core";
|
|
8
|
+
import type { ResolvedTheme, ThemeMode, ThemePreference } from "@marwes-ui/core";
|
|
9
|
+
import { setMarwesContext } from "./context.js";
|
|
10
|
+
import { applyThemeToElement, loadThemeFonts, themeToRootStyle } from "./runtime-theme.js";
|
|
11
|
+
import {
|
|
12
|
+
applyModeAttribute,
|
|
13
|
+
getSystemThemeMode,
|
|
14
|
+
readStoredThemePreference,
|
|
15
|
+
subscribeToSystemThemeMode,
|
|
16
|
+
withoutModeTransitions,
|
|
17
|
+
writeStoredThemePreference,
|
|
18
|
+
} from "./theme-mode-runtime.js";
|
|
19
|
+
import type { MarwesContextState, MarwesProviderProps } from "./types.js";
|
|
20
|
+
|
|
21
|
+
let {
|
|
22
|
+
theme,
|
|
23
|
+
defaultPreference,
|
|
24
|
+
preference: controlledPreference,
|
|
25
|
+
defaultMode,
|
|
26
|
+
mode: controlledMode,
|
|
27
|
+
fontLoading = "auto",
|
|
28
|
+
onPreferenceChange,
|
|
29
|
+
onModeChange,
|
|
30
|
+
storageKey = false,
|
|
31
|
+
enableSystem = true,
|
|
32
|
+
target = "provider",
|
|
33
|
+
attribute = "class",
|
|
34
|
+
disableTransitionOnChange = false,
|
|
35
|
+
variableStrategy = "inline",
|
|
36
|
+
children,
|
|
37
|
+
}: MarwesProviderProps = $props();
|
|
38
|
+
|
|
39
|
+
let rootElement: HTMLDivElement | undefined = $state(undefined);
|
|
40
|
+
|
|
41
|
+
let internalPreference = $state<ThemePreference>(
|
|
42
|
+
defaultPreference ?? defaultMode ?? MwThemeMode.light
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
let systemMode = $state<ThemeMode>(
|
|
46
|
+
enableSystem ? getSystemThemeMode() : MwThemeMode.light
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const activePreference = $derived(
|
|
50
|
+
controlledPreference ?? controlledMode ?? theme?.mode ?? internalPreference
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
const activeMode = $derived(resolveThemePreference(activePreference, systemMode));
|
|
54
|
+
|
|
55
|
+
const isPreferenceControlled = $derived(
|
|
56
|
+
controlledPreference !== undefined || controlledMode !== undefined || theme?.mode !== undefined
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const resolved: ResolvedTheme = $derived(
|
|
60
|
+
resolveThemeInput({ ...(theme ?? {}), mode: activeMode })
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
const rootStyle = $derived(
|
|
64
|
+
variableStrategy === "style-tag" ? undefined : themeToRootStyle(resolved)
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const rootStyleString = $derived(
|
|
68
|
+
rootStyle
|
|
69
|
+
? Object.entries(rootStyle)
|
|
70
|
+
.map(([k, v]) => (k === "backgroundColor" ? `background-color: ${v}` : `${k}: ${v}`))
|
|
71
|
+
.join("; ")
|
|
72
|
+
: undefined
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
function setPreference(nextPreference: ThemePreference): void {
|
|
76
|
+
if (!isPreferenceControlled) {
|
|
77
|
+
internalPreference = nextPreference;
|
|
78
|
+
}
|
|
79
|
+
writeStoredThemePreference(storageKey, nextPreference);
|
|
80
|
+
onPreferenceChange?.(nextPreference);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function setMode(nextMode: ThemeMode): void {
|
|
84
|
+
setPreference(nextMode);
|
|
85
|
+
onModeChange?.(nextMode);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function toggleMode(): void {
|
|
89
|
+
setMode(nextThemeMode(activeMode));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Context state — mutated reactively by effects below
|
|
93
|
+
const contextState: MarwesContextState = $state({
|
|
94
|
+
theme: resolved,
|
|
95
|
+
mode: activeMode,
|
|
96
|
+
preference: activePreference,
|
|
97
|
+
systemMode,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
setMarwesContext({
|
|
101
|
+
get state() { return contextState; },
|
|
102
|
+
setMode,
|
|
103
|
+
setPreference,
|
|
104
|
+
toggleMode,
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Keep context state synced with derived values
|
|
108
|
+
$effect(() => {
|
|
109
|
+
contextState.theme = resolved;
|
|
110
|
+
contextState.mode = activeMode;
|
|
111
|
+
contextState.preference = activePreference;
|
|
112
|
+
contextState.systemMode = systemMode;
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Read stored preference on mount
|
|
116
|
+
$effect(() => {
|
|
117
|
+
const storedPreference = readStoredThemePreference(storageKey);
|
|
118
|
+
if (storedPreference !== undefined && !isPreferenceControlled) {
|
|
119
|
+
internalPreference = storedPreference;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// System theme subscription
|
|
124
|
+
$effect(() => {
|
|
125
|
+
if (!enableSystem) {
|
|
126
|
+
systemMode = MwThemeMode.light;
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
systemMode = getSystemThemeMode();
|
|
131
|
+
|
|
132
|
+
if (activePreference !== "system") {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const unsubscribe = subscribeToSystemThemeMode((mode) => {
|
|
137
|
+
systemMode = mode;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
return unsubscribe;
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Apply theme to element (inline vars)
|
|
144
|
+
$effect(() => {
|
|
145
|
+
if (variableStrategy === "style-tag") return;
|
|
146
|
+
if (rootElement) {
|
|
147
|
+
applyThemeToElement(rootElement, resolved);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Apply mode attribute to target
|
|
152
|
+
$effect(() => {
|
|
153
|
+
if (target === "provider") return;
|
|
154
|
+
|
|
155
|
+
const apply = () => {
|
|
156
|
+
applyModeAttribute({
|
|
157
|
+
target,
|
|
158
|
+
providerElement: rootElement ?? null,
|
|
159
|
+
mode: activeMode,
|
|
160
|
+
attribute,
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
if (disableTransitionOnChange) {
|
|
165
|
+
withoutModeTransitions(apply);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
apply();
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
// Font loading
|
|
173
|
+
$effect(() => {
|
|
174
|
+
loadThemeFonts(resolved, fontLoading);
|
|
175
|
+
});
|
|
176
|
+
</script>
|
|
177
|
+
|
|
178
|
+
<div
|
|
179
|
+
bind:this={rootElement}
|
|
180
|
+
class={`mw-theme--${resolved.mode}`}
|
|
181
|
+
data-marwes-theme="true"
|
|
182
|
+
data-marwes-mode={resolved.mode}
|
|
183
|
+
style={rootStyleString}
|
|
184
|
+
>
|
|
185
|
+
{@render children?.()}
|
|
186
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getContext, setContext } from "svelte";
|
|
2
|
+
const CONTEXT_KEY = Symbol("marwes-context");
|
|
3
|
+
export function setMarwesContext(value) {
|
|
4
|
+
setContext(CONTEXT_KEY, value);
|
|
5
|
+
}
|
|
6
|
+
export function getMarwesContext() {
|
|
7
|
+
const ctx = getContext(CONTEXT_KEY);
|
|
8
|
+
if (!ctx) {
|
|
9
|
+
throw new Error("MarwesProvider is missing. Wrap your app in <MarwesProvider />.");
|
|
10
|
+
}
|
|
11
|
+
return ctx;
|
|
12
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FontLoadingConfig, ResolvedTheme } from "@marwes-ui/core";
|
|
2
|
+
export declare function themeToRootStyle(theme: ResolvedTheme): Record<string, string>;
|
|
3
|
+
export declare function applyThemeToElement(element: HTMLElement, theme: ResolvedTheme): void;
|
|
4
|
+
export declare function loadThemeFonts(theme: ResolvedTheme, config?: FontLoadingConfig): void;
|
|
5
|
+
export declare function resetThemeRuntimeState(): void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { buildGoogleFontsUrl, extractFontFamilyName, extractUsedWeights, shouldLoadGoogleFont, themeToCSSVars, } from "@marwes-ui/core";
|
|
2
|
+
const loadedFonts = new Set();
|
|
3
|
+
let preconnected = false;
|
|
4
|
+
export function themeToRootStyle(theme) {
|
|
5
|
+
return {
|
|
6
|
+
...themeToCSSVars(theme),
|
|
7
|
+
backgroundColor: theme.color.background,
|
|
8
|
+
color: theme.color.text,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function applyThemeToElement(element, theme) {
|
|
12
|
+
element.setAttribute("data-marwes-theme", "true");
|
|
13
|
+
element.setAttribute("data-marwes-mode", theme.mode);
|
|
14
|
+
for (const [property, value] of Object.entries(themeToRootStyle(theme))) {
|
|
15
|
+
if (property === "backgroundColor") {
|
|
16
|
+
element.style.backgroundColor = value;
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
element.style.setProperty(property, value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function ensureFontPreconnect() {
|
|
23
|
+
if (preconnected || typeof document === "undefined")
|
|
24
|
+
return;
|
|
25
|
+
preconnected = true;
|
|
26
|
+
for (const href of ["https://fonts.googleapis.com", "https://fonts.gstatic.com"]) {
|
|
27
|
+
const linkElement = document.createElement("link");
|
|
28
|
+
linkElement.rel = "preconnect";
|
|
29
|
+
linkElement.href = href;
|
|
30
|
+
if (href.includes("gstatic")) {
|
|
31
|
+
linkElement.crossOrigin = "anonymous";
|
|
32
|
+
}
|
|
33
|
+
document.head.appendChild(linkElement);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function loadGoogleFontToDocument(family, weights) {
|
|
37
|
+
if (typeof document === "undefined")
|
|
38
|
+
return;
|
|
39
|
+
const cacheKey = `${family}:${weights.join(",")}`;
|
|
40
|
+
if (loadedFonts.has(cacheKey))
|
|
41
|
+
return;
|
|
42
|
+
loadedFonts.add(cacheKey);
|
|
43
|
+
ensureFontPreconnect();
|
|
44
|
+
const linkElement = document.createElement("link");
|
|
45
|
+
linkElement.rel = "stylesheet";
|
|
46
|
+
linkElement.href = buildGoogleFontsUrl(family, weights);
|
|
47
|
+
linkElement.dataset.marwesFont = family;
|
|
48
|
+
document.head.appendChild(linkElement);
|
|
49
|
+
}
|
|
50
|
+
export function loadThemeFonts(theme, config = "auto") {
|
|
51
|
+
const weights = extractUsedWeights(theme.typography);
|
|
52
|
+
const fontStacks = [theme.font.primary, theme.font.secondary];
|
|
53
|
+
for (const fontStack of fontStacks) {
|
|
54
|
+
const familyName = extractFontFamilyName(fontStack);
|
|
55
|
+
if (familyName && shouldLoadGoogleFont(familyName, config)) {
|
|
56
|
+
loadGoogleFontToDocument(familyName, weights);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function resetThemeRuntimeState() {
|
|
61
|
+
loadedFonts.clear();
|
|
62
|
+
preconnected = false;
|
|
63
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ThemeMode } from "@marwes-ui/core";
|
|
2
|
+
import type { ThemePreference } from "@marwes-ui/core";
|
|
3
|
+
export type ThemeTarget = "provider" | "html" | "body";
|
|
4
|
+
export type ThemeAttribute = "class" | "data-theme" | "data-mode";
|
|
5
|
+
export declare function getSystemThemeMode(): ThemeMode;
|
|
6
|
+
export declare function subscribeToSystemThemeMode(onChange: (mode: ThemeMode) => void): () => void;
|
|
7
|
+
export declare function readStoredThemePreference(storageKey: string | false): ThemePreference | undefined;
|
|
8
|
+
export declare function writeStoredThemePreference(storageKey: string | false, preference: ThemePreference): void;
|
|
9
|
+
export declare function applyModeAttribute({ target, providerElement, mode, attribute, }: {
|
|
10
|
+
target: ThemeTarget;
|
|
11
|
+
providerElement: HTMLElement | null;
|
|
12
|
+
mode: ThemeMode;
|
|
13
|
+
attribute: ThemeAttribute;
|
|
14
|
+
}): void;
|
|
15
|
+
export declare function withoutModeTransitions(callback: () => void): void;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ThemeMode, isThemePreference } from "@marwes-ui/core";
|
|
2
|
+
const mediaQuery = "(prefers-color-scheme: dark)";
|
|
3
|
+
export function getSystemThemeMode() {
|
|
4
|
+
if (typeof window === "undefined")
|
|
5
|
+
return ThemeMode.light;
|
|
6
|
+
return window.matchMedia?.(mediaQuery).matches ? ThemeMode.dark : ThemeMode.light;
|
|
7
|
+
}
|
|
8
|
+
export function subscribeToSystemThemeMode(onChange) {
|
|
9
|
+
if (typeof window === "undefined" || !window.matchMedia)
|
|
10
|
+
return () => { };
|
|
11
|
+
const media = window.matchMedia(mediaQuery);
|
|
12
|
+
const listener = (event) => {
|
|
13
|
+
onChange(event.matches ? ThemeMode.dark : ThemeMode.light);
|
|
14
|
+
};
|
|
15
|
+
if (media.addEventListener) {
|
|
16
|
+
media.addEventListener("change", listener);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
media.addListener?.(listener);
|
|
20
|
+
}
|
|
21
|
+
return () => {
|
|
22
|
+
if (media.removeEventListener) {
|
|
23
|
+
media.removeEventListener("change", listener);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
media.removeListener?.(listener);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function readStoredThemePreference(storageKey) {
|
|
31
|
+
if (!storageKey || typeof window === "undefined")
|
|
32
|
+
return undefined;
|
|
33
|
+
try {
|
|
34
|
+
const value = window.localStorage.getItem(storageKey);
|
|
35
|
+
return isThemePreference(value) ? value : undefined;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function writeStoredThemePreference(storageKey, preference) {
|
|
42
|
+
if (!storageKey || typeof window === "undefined")
|
|
43
|
+
return;
|
|
44
|
+
try {
|
|
45
|
+
window.localStorage.setItem(storageKey, preference);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Ignore unavailable storage.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function applyModeAttribute({ target, providerElement, mode, attribute, }) {
|
|
52
|
+
const element = getTargetElement(target, providerElement);
|
|
53
|
+
if (!element)
|
|
54
|
+
return;
|
|
55
|
+
if (attribute === "class") {
|
|
56
|
+
const oppositeMode = mode === ThemeMode.dark ? ThemeMode.light : ThemeMode.dark;
|
|
57
|
+
element.classList.remove(oppositeMode);
|
|
58
|
+
element.classList.add(mode);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
element.setAttribute(attribute, mode);
|
|
62
|
+
}
|
|
63
|
+
export function withoutModeTransitions(callback) {
|
|
64
|
+
if (typeof document === "undefined" || typeof window === "undefined") {
|
|
65
|
+
callback();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const style = document.createElement("style");
|
|
69
|
+
style.dataset.marwesDisableTransitions = "true";
|
|
70
|
+
style.textContent = "* { transition: none !important; }";
|
|
71
|
+
document.head.appendChild(style);
|
|
72
|
+
callback();
|
|
73
|
+
window.getComputedStyle(document.body);
|
|
74
|
+
window.requestAnimationFrame(() => {
|
|
75
|
+
style.remove();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function getTargetElement(target, providerElement) {
|
|
79
|
+
if (target === "provider")
|
|
80
|
+
return providerElement;
|
|
81
|
+
if (typeof document === "undefined")
|
|
82
|
+
return null;
|
|
83
|
+
return target === "html" ? document.documentElement : document.body;
|
|
84
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { FontLoadingConfig, ResolvedTheme, ThemeInput, ThemeMode, ThemePreference, ThemeVariableStrategy } from "@marwes-ui/core";
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
import type { ThemeAttribute, ThemeTarget } from "./theme-mode-runtime.js";
|
|
4
|
+
export interface MarwesProviderProps {
|
|
5
|
+
theme?: ThemeInput;
|
|
6
|
+
defaultPreference?: ThemePreference;
|
|
7
|
+
preference?: ThemePreference;
|
|
8
|
+
defaultMode?: ThemeMode;
|
|
9
|
+
mode?: ThemeMode;
|
|
10
|
+
fontLoading?: FontLoadingConfig;
|
|
11
|
+
onPreferenceChange?: (preference: ThemePreference) => void;
|
|
12
|
+
onModeChange?: (mode: ThemeMode) => void;
|
|
13
|
+
storageKey?: string | false;
|
|
14
|
+
enableSystem?: boolean;
|
|
15
|
+
target?: ThemeTarget;
|
|
16
|
+
attribute?: ThemeAttribute;
|
|
17
|
+
disableTransitionOnChange?: boolean;
|
|
18
|
+
variableStrategy?: ThemeVariableStrategy;
|
|
19
|
+
children?: Snippet;
|
|
20
|
+
}
|
|
21
|
+
export interface MarwesContextState {
|
|
22
|
+
theme: ResolvedTheme;
|
|
23
|
+
mode: ThemeMode;
|
|
24
|
+
preference: ThemePreference;
|
|
25
|
+
systemMode: ThemeMode;
|
|
26
|
+
}
|
|
27
|
+
export interface MarwesContextValue {
|
|
28
|
+
readonly state: MarwesContextState;
|
|
29
|
+
setMode: (mode: ThemeMode) => void;
|
|
30
|
+
setPreference: (preference: ThemePreference) => void;
|
|
31
|
+
toggleMode: () => void;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ThemeMode } from "@marwes-ui/core";
|
|
2
|
+
import type { ThemePreference } from "@marwes-ui/core";
|
|
3
|
+
export interface ThemeModeContextValue {
|
|
4
|
+
readonly mode: ThemeMode;
|
|
5
|
+
readonly preference: ThemePreference;
|
|
6
|
+
readonly systemMode: ThemeMode;
|
|
7
|
+
readonly isDark: boolean;
|
|
8
|
+
readonly isLight: boolean;
|
|
9
|
+
readonly isSystem: boolean;
|
|
10
|
+
setMode: (mode: ThemeMode) => void;
|
|
11
|
+
setPreference: (preference: ThemePreference) => void;
|
|
12
|
+
toggleMode: () => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Returns reactive theme mode state and setters.
|
|
16
|
+
* Must be called inside a component rendered within MarwesProvider.
|
|
17
|
+
*
|
|
18
|
+
* All properties are getters that stay reactive:
|
|
19
|
+
* ```ts
|
|
20
|
+
* const themeMode = useThemeMode();
|
|
21
|
+
* // themeMode.isDark, themeMode.mode, themeMode.toggleMode()
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function useThemeMode(): ThemeModeContextValue;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ThemeMode } from "@marwes-ui/core";
|
|
2
|
+
import { getMarwesContext } from "./context.js";
|
|
3
|
+
/**
|
|
4
|
+
* Returns reactive theme mode state and setters.
|
|
5
|
+
* Must be called inside a component rendered within MarwesProvider.
|
|
6
|
+
*
|
|
7
|
+
* All properties are getters that stay reactive:
|
|
8
|
+
* ```ts
|
|
9
|
+
* const themeMode = useThemeMode();
|
|
10
|
+
* // themeMode.isDark, themeMode.mode, themeMode.toggleMode()
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export function useThemeMode() {
|
|
14
|
+
const ctx = getMarwesContext();
|
|
15
|
+
return {
|
|
16
|
+
get mode() {
|
|
17
|
+
return ctx.state.mode;
|
|
18
|
+
},
|
|
19
|
+
get preference() {
|
|
20
|
+
return ctx.state.preference;
|
|
21
|
+
},
|
|
22
|
+
get systemMode() {
|
|
23
|
+
return ctx.state.systemMode;
|
|
24
|
+
},
|
|
25
|
+
get isDark() {
|
|
26
|
+
return ctx.state.mode === ThemeMode.dark;
|
|
27
|
+
},
|
|
28
|
+
get isLight() {
|
|
29
|
+
return ctx.state.mode === ThemeMode.light;
|
|
30
|
+
},
|
|
31
|
+
get isSystem() {
|
|
32
|
+
return ctx.state.preference === "system";
|
|
33
|
+
},
|
|
34
|
+
setMode: ctx.setMode,
|
|
35
|
+
setPreference: ctx.setPreference,
|
|
36
|
+
toggleMode: ctx.toggleMode,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ResolvedTheme } from "@marwes-ui/core";
|
|
2
|
+
export interface UseThemeReturn {
|
|
3
|
+
readonly theme: ResolvedTheme;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Returns a reactive reference to the resolved Marwes theme.
|
|
7
|
+
* Must be called inside a component rendered within MarwesProvider.
|
|
8
|
+
*
|
|
9
|
+
* Access `theme` as a getter to stay reactive:
|
|
10
|
+
* ```ts
|
|
11
|
+
* const { theme } = useTheme();
|
|
12
|
+
* // use theme.color.primary etc.
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function useTheme(): UseThemeReturn;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getMarwesContext } from "./context.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a reactive reference to the resolved Marwes theme.
|
|
4
|
+
* Must be called inside a component rendered within MarwesProvider.
|
|
5
|
+
*
|
|
6
|
+
* Access `theme` as a getter to stay reactive:
|
|
7
|
+
* ```ts
|
|
8
|
+
* const { theme } = useTheme();
|
|
9
|
+
* // use theme.color.primary etc.
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export function useTheme() {
|
|
13
|
+
const ctx = getMarwesContext();
|
|
14
|
+
return {
|
|
15
|
+
get theme() {
|
|
16
|
+
return ctx.state.theme;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
package/dist/ssr.d.ts
ADDED
package/dist/ssr.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createMarwesThemeScript, createMarwesThemeStyle } from "@marwes-ui/core";
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@marwes-ui/svelte",
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"private": false,
|
|
9
|
+
"type": "module",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"main": "./dist/index.js",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md",
|
|
15
|
+
"CHANGELOG.md"
|
|
16
|
+
],
|
|
17
|
+
"svelte": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"svelte": "./dist/index.js",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./ssr": {
|
|
26
|
+
"types": "./dist/ssr.d.ts",
|
|
27
|
+
"svelte": "./dist/ssr.js",
|
|
28
|
+
"default": "./dist/ssr.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@marwes-ui/core": "1.3.0"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"svelte": "^5.20.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@sveltejs/package": "^2.0.0",
|
|
39
|
+
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
|
40
|
+
"@testing-library/svelte": "^5.0.0",
|
|
41
|
+
"jsdom": "26.1.0",
|
|
42
|
+
"rimraf": "6.1.2",
|
|
43
|
+
"svelte": "^5.20.0",
|
|
44
|
+
"svelte-check": "^4.0.0",
|
|
45
|
+
"typescript": "5.9.3",
|
|
46
|
+
"vite": "^6.0.0",
|
|
47
|
+
"vitest": "4.0.18"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"dev": "svelte-package --watch",
|
|
51
|
+
"build": "svelte-package",
|
|
52
|
+
"typecheck": "svelte-check --tsconfig ./tsconfig.json",
|
|
53
|
+
"test:typecheck": "svelte-check --tsconfig ./tsconfig.json",
|
|
54
|
+
"test": "NODE_ENV=test vitest run",
|
|
55
|
+
"clean": "rimraf dist",
|
|
56
|
+
"lint": "biome lint .",
|
|
57
|
+
"format": "biome format --write ."
|
|
58
|
+
}
|
|
59
|
+
}
|