sveltacular 0.0.76 → 1.0.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/README.md +142 -15
- package/dist/forms/base-input-wrapper.svelte +99 -0
- package/dist/forms/base-input-wrapper.svelte.d.ts +15 -0
- package/dist/forms/bool-box/bool-box.svelte +30 -17
- package/dist/forms/bool-box/bool-box.svelte.d.ts +9 -21
- package/dist/forms/button/button.svelte +153 -89
- package/dist/forms/button/button.svelte.d.ts +25 -29
- package/dist/forms/check-box/check-box-group.svelte +63 -29
- package/dist/forms/check-box/check-box-group.svelte.d.ts +11 -27
- package/dist/forms/check-box/check-box.svelte +57 -33
- package/dist/forms/check-box/check-box.svelte.d.ts +15 -25
- package/dist/forms/check-box/index.d.ts +2 -0
- package/dist/forms/check-box/index.js +2 -0
- package/dist/forms/combo/new-or-existing-combo.svelte +37 -18
- package/dist/forms/combo/new-or-existing-combo.svelte.d.ts +15 -25
- package/dist/forms/combo-box/combo-box.svelte +655 -0
- package/dist/forms/combo-box/combo-box.svelte.d.ts +62 -0
- package/dist/forms/combo-box/index.d.ts +1 -0
- package/dist/forms/combo-box/index.js +1 -0
- package/dist/forms/date-box/date-box.svelte +80 -54
- package/dist/forms/date-box/date-box.svelte.d.ts +21 -32
- package/dist/forms/file-area/file-area.svelte +109 -68
- package/dist/forms/file-area/file-area.svelte.d.ts +12 -22
- package/dist/forms/file-box/file-box.svelte +40 -21
- package/dist/forms/file-box/file-box.svelte.d.ts +14 -25
- package/dist/forms/form-field.svelte +18 -15
- package/dist/forms/form-field.svelte.d.ts +8 -18
- package/dist/forms/form-footer.svelte +6 -3
- package/dist/forms/form-footer.svelte.d.ts +6 -26
- package/dist/forms/form-header.svelte +15 -4
- package/dist/forms/form-header.svelte.d.ts +8 -18
- package/dist/forms/form-label.svelte +15 -6
- package/dist/forms/form-label.svelte.d.ts +8 -19
- package/dist/forms/form-section.svelte +15 -4
- package/dist/forms/form-section.svelte.d.ts +8 -18
- package/dist/forms/form.svelte +30 -13
- package/dist/forms/form.svelte.d.ts +11 -22
- package/dist/forms/index.d.ts +26 -0
- package/dist/forms/index.js +31 -0
- package/dist/forms/info-box/info-box.svelte +19 -8
- package/dist/forms/info-box/info-box.svelte.d.ts +8 -19
- package/dist/forms/list-box/index.d.ts +2 -0
- package/dist/forms/list-box/index.js +1 -0
- package/dist/forms/list-box/list-box.svelte +190 -118
- package/dist/forms/list-box/list-box.svelte.d.ts +16 -26
- package/dist/forms/money-box/money-box.svelte +223 -190
- package/dist/forms/money-box/money-box.svelte.d.ts +16 -28
- package/dist/forms/number-box/number-box.svelte +84 -67
- package/dist/forms/number-box/number-box.svelte.d.ts +17 -28
- package/dist/forms/phone-box/index.d.ts +1 -0
- package/dist/forms/phone-box/index.js +1 -0
- package/dist/forms/phone-box/phone-box.svelte +152 -122
- package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -20
- package/dist/forms/radio-group/index.d.ts +2 -0
- package/dist/forms/radio-group/index.js +2 -0
- package/dist/forms/radio-group/radio-box.svelte +23 -8
- package/dist/forms/radio-group/radio-box.svelte.d.ts +10 -19
- package/dist/forms/radio-group/radio-group.svelte +27 -13
- package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -21
- package/dist/forms/slider/slider.svelte +210 -0
- package/dist/forms/slider/slider.svelte.d.ts +17 -0
- package/dist/forms/switch-box/switch-box.svelte +35 -21
- package/dist/forms/switch-box/switch-box.svelte.d.ts +9 -20
- package/dist/forms/text-area/text-area.svelte +89 -15
- package/dist/forms/text-area/text-area.svelte.d.ts +15 -23
- package/dist/forms/text-box/text-box.svelte +253 -75
- package/dist/forms/text-box/text-box.svelte.d.ts +28 -36
- package/dist/forms/time-box/time-box.svelte +67 -0
- package/dist/forms/time-box/time-box.svelte.d.ts +12 -0
- package/dist/forms/url-box/url-box.svelte +32 -18
- package/dist/forms/url-box/url-box.svelte.d.ts +9 -20
- package/dist/forms/validation.d.ts +60 -0
- package/dist/forms/validation.js +123 -0
- package/dist/generic/address/address.svelte +22 -13
- package/dist/generic/address/address.svelte.d.ts +9 -19
- package/dist/generic/avatar/avatar.svelte +86 -0
- package/dist/generic/avatar/avatar.svelte.d.ts +10 -0
- package/dist/generic/badge/badge.svelte +82 -0
- package/dist/generic/badge/badge.svelte.d.ts +11 -0
- package/dist/generic/card/card-container.svelte +41 -13
- package/dist/generic/card/card-container.svelte.d.ts +8 -18
- package/dist/generic/card/card.svelte +47 -29
- package/dist/generic/card/card.svelte.d.ts +9 -19
- package/dist/generic/card/index.d.ts +3 -0
- package/dist/generic/card/index.js +2 -0
- package/dist/generic/chip/chip.svelte +90 -0
- package/dist/generic/chip/chip.svelte.d.ts +11 -0
- package/dist/generic/date/date-time.svelte +86 -64
- package/dist/generic/date/date-time.svelte.d.ts +10 -20
- package/dist/generic/divider/divider.svelte.d.ts +22 -19
- package/dist/generic/dot/dot.svelte +13 -4
- package/dist/generic/dot/dot.svelte.d.ts +7 -17
- package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
- package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -21
- package/dist/generic/email/email.svelte +6 -4
- package/dist/generic/email/email.svelte.d.ts +5 -15
- package/dist/generic/empty/empty.svelte +57 -26
- package/dist/generic/empty/empty.svelte.d.ts +11 -21
- package/dist/generic/header/header.svelte +26 -10
- package/dist/generic/header/header.svelte.d.ts +10 -20
- package/dist/generic/index.d.ts +28 -0
- package/dist/generic/index.js +31 -0
- package/dist/generic/link/link.svelte +20 -7
- package/dist/generic/link/link.svelte.d.ts +11 -21
- package/dist/generic/list/index.d.ts +4 -0
- package/dist/generic/list/index.js +3 -0
- package/dist/generic/list/list-item.svelte +17 -13
- package/dist/generic/list/list-item.svelte.d.ts +6 -15
- package/dist/generic/list/list.d.ts +2 -2
- package/dist/generic/list/list.svelte +28 -15
- package/dist/generic/list/list.svelte.d.ts +9 -19
- package/dist/generic/menu/menu.svelte +163 -57
- package/dist/generic/menu/menu.svelte.d.ts +16 -24
- package/dist/generic/notice/notice.svelte +119 -81
- package/dist/generic/notice/notice.svelte.d.ts +17 -26
- package/dist/generic/overlay.svelte +40 -14
- package/dist/generic/overlay.svelte.d.ts +9 -19
- package/dist/generic/panel/panel.svelte +16 -6
- package/dist/generic/panel/panel.svelte.d.ts +8 -18
- package/dist/generic/phone/phone.svelte +30 -24
- package/dist/generic/phone/phone.svelte.d.ts +6 -16
- package/dist/generic/pill/pill.svelte +47 -33
- package/dist/generic/pill/pill.svelte.d.ts +10 -21
- package/dist/generic/popover/popover.svelte +226 -0
- package/dist/generic/popover/popover.svelte.d.ts +15 -0
- package/dist/generic/rating/rating.svelte +85 -0
- package/dist/generic/rating/rating.svelte.d.ts +11 -0
- package/dist/generic/scorecard/scorecard.svelte +34 -21
- package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -19
- package/dist/generic/section/section.svelte +28 -9
- package/dist/generic/section/section.svelte.d.ts +11 -21
- package/dist/generic/spinner/spinner.svelte +64 -0
- package/dist/generic/spinner/spinner.svelte.d.ts +8 -0
- package/dist/generic/theme-provider/index.d.ts +1 -0
- package/dist/generic/theme-provider/index.js +1 -0
- package/dist/generic/theme-provider/theme-provider-demo.svelte +182 -0
- package/dist/generic/theme-provider/theme-provider-demo.svelte.d.ts +3 -0
- package/dist/generic/theme-provider/theme-provider.svelte +83 -0
- package/dist/generic/theme-provider/theme-provider.svelte.d.ts +44 -0
- package/dist/generic/toaster/toaster.svelte +31 -6
- package/dist/generic/toaster/toaster.svelte.d.ts +7 -15
- package/dist/generic/tooltip/tooltip.svelte +389 -0
- package/dist/generic/tooltip/tooltip.svelte.d.ts +21 -0
- package/dist/helpers/ago.d.ts +7 -1
- package/dist/helpers/ago.js +6 -0
- package/dist/helpers/animation-actions.d.ts +124 -0
- package/dist/helpers/animation-actions.js +299 -0
- package/dist/helpers/animations.d.ts +198 -0
- package/dist/helpers/animations.js +280 -0
- package/dist/helpers/announcer.d.ts +118 -0
- package/dist/helpers/announcer.js +250 -0
- package/dist/helpers/copy-to-clipboard.svelte.d.ts +5 -0
- package/dist/helpers/copy-to-clipboard.svelte.js +28 -0
- package/dist/helpers/debounce.d.ts +7 -0
- package/dist/helpers/debounce.js +7 -0
- package/dist/helpers/focus.d.ts +123 -0
- package/dist/helpers/focus.js +335 -0
- package/dist/helpers/fuzzy-search.d.ts +41 -0
- package/dist/helpers/fuzzy-search.js +114 -0
- package/dist/helpers/index.d.ts +24 -0
- package/dist/helpers/index.js +24 -0
- package/dist/helpers/navigate-to.d.ts +4 -0
- package/dist/helpers/navigate-to.js +4 -0
- package/dist/helpers/positioning.d.ts +97 -0
- package/dist/helpers/positioning.js +230 -0
- package/dist/helpers/round-to-decimals.d.ts +7 -5
- package/dist/helpers/round-to-decimals.js +7 -5
- package/dist/helpers/spring.svelte.d.ts +97 -0
- package/dist/helpers/spring.svelte.js +216 -0
- package/dist/helpers/subscribable.d.ts +1 -2
- package/dist/helpers/theme.svelte.d.ts +63 -0
- package/dist/helpers/theme.svelte.js +123 -0
- package/dist/helpers/unique-id.d.ts +4 -0
- package/dist/helpers/unique-id.js +4 -0
- package/dist/helpers/use-position.svelte.d.ts +96 -0
- package/dist/helpers/use-position.svelte.js +189 -0
- package/dist/helpers/use-virtual-list.svelte.d.ts +121 -0
- package/dist/helpers/use-virtual-list.svelte.js +239 -0
- package/dist/icons/angle-right-icon.svelte +2 -1
- package/dist/icons/angle-right-icon.svelte.d.ts +16 -12
- package/dist/icons/angle-up-icon.svelte.d.ts +22 -19
- package/dist/icons/check-icon.svelte.d.ts +22 -19
- package/dist/icons/copy-icon.svelte +46 -0
- package/dist/icons/copy-icon.svelte.d.ts +6 -0
- package/dist/icons/envelope-icon.svelte.d.ts +22 -19
- package/dist/icons/folder-open-icon.svelte.d.ts +22 -19
- package/dist/icons/hamburger-icon.svelte.d.ts +22 -19
- package/dist/icons/home-icon.svelte +2 -1
- package/dist/icons/home-icon.svelte.d.ts +16 -12
- package/dist/icons/index.d.ts +13 -0
- package/dist/icons/index.js +13 -0
- package/dist/icons/link-icon.svelte.d.ts +22 -19
- package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -19
- package/dist/icons/phone-icon.svelte.d.ts +22 -19
- package/dist/icons/svg-icon.svelte +46 -12
- package/dist/icons/svg-icon.svelte.d.ts +13 -23
- package/dist/icons/upload-icon.svelte.d.ts +22 -19
- package/dist/images/icon.svelte +9 -3
- package/dist/images/icon.svelte.d.ts +6 -16
- package/dist/images/image.svelte +28 -10
- package/dist/images/image.svelte.d.ts +14 -26
- package/dist/images/index.d.ts +2 -0
- package/dist/images/index.js +2 -0
- package/dist/index.d.ts +13 -122
- package/dist/index.js +27 -135
- package/dist/layout/flex-col.svelte +65 -22
- package/dist/layout/flex-col.svelte.d.ts +12 -22
- package/dist/layout/flex-item.svelte +13 -3
- package/dist/layout/flex-item.svelte.d.ts +8 -18
- package/dist/layout/flex-row.svelte +70 -21
- package/dist/layout/flex-row.svelte.d.ts +14 -24
- package/dist/layout/grid.svelte +7 -1
- package/dist/layout/grid.svelte.d.ts +6 -26
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +4 -0
- package/dist/modals/alert.svelte +42 -28
- package/dist/modals/alert.svelte.d.ts +13 -24
- package/dist/modals/confirm.svelte +54 -37
- package/dist/modals/confirm.svelte.d.ts +16 -27
- package/dist/modals/dialog-body.svelte +10 -4
- package/dist/modals/dialog-body.svelte.d.ts +6 -26
- package/dist/modals/dialog-close-button.svelte +15 -9
- package/dist/modals/dialog-close-button.svelte.d.ts +6 -17
- package/dist/modals/dialog-footer.svelte +6 -3
- package/dist/modals/dialog-footer.svelte.d.ts +6 -26
- package/dist/modals/dialog-header.svelte +13 -1
- package/dist/modals/dialog-header.svelte.d.ts +7 -26
- package/dist/modals/dialog-window.svelte +42 -14
- package/dist/modals/dialog-window.svelte.d.ts +9 -17
- package/dist/modals/index.d.ts +9 -0
- package/dist/modals/index.js +9 -0
- package/dist/modals/modal.svelte +88 -25
- package/dist/modals/modal.svelte.d.ts +14 -22
- package/dist/modals/prompt.svelte +71 -50
- package/dist/modals/prompt.svelte.d.ts +19 -30
- package/dist/navigation/accordion/accordion.svelte +104 -0
- package/dist/navigation/accordion/accordion.svelte.d.ts +9 -0
- package/dist/navigation/app-bar/app-bar.svelte +26 -20
- package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -20
- package/dist/navigation/app-bar/app-branding.svelte +10 -5
- package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -15
- package/dist/navigation/app-bar/app-logo.svelte +20 -5
- package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -19
- package/dist/navigation/app-bar/app-nav-item.svelte +26 -14
- package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -20
- package/dist/navigation/app-bar/app-nav.svelte +39 -12
- package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -18
- package/dist/navigation/app-bar/index.d.ts +5 -0
- package/dist/navigation/app-bar/index.js +5 -0
- package/dist/navigation/breadcrumbs/breadcrumbs.svelte +54 -28
- package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -21
- package/dist/navigation/command-palette/command-palette.svelte +758 -0
- package/dist/navigation/command-palette/command-palette.svelte.d.ts +65 -0
- package/dist/navigation/command-palette/index.d.ts +2 -0
- package/dist/navigation/command-palette/index.js +1 -0
- package/dist/navigation/context-menu/README.md +146 -0
- package/dist/navigation/context-menu/context-menu-divider.svelte +21 -0
- package/dist/navigation/context-menu/context-menu-divider.svelte.d.ts +18 -0
- package/dist/navigation/context-menu/context-menu-item.svelte +268 -0
- package/dist/navigation/context-menu/context-menu-item.svelte.d.ts +19 -0
- package/dist/navigation/context-menu/context-menu.svelte +226 -0
- package/dist/navigation/context-menu/context-menu.svelte.d.ts +38 -0
- package/dist/navigation/context-menu/index.d.ts +3 -0
- package/dist/navigation/context-menu/index.js +3 -0
- package/dist/navigation/drawer/drawer.svelte +137 -0
- package/dist/navigation/drawer/drawer.svelte.d.ts +11 -0
- package/dist/navigation/dropdown-button/dropdown-button.svelte +58 -20
- package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -20
- package/dist/navigation/index.d.ts +11 -0
- package/dist/navigation/index.js +14 -0
- package/dist/navigation/pagination/pagination.svelte +55 -42
- package/dist/navigation/pagination/pagination.svelte.d.ts +10 -21
- package/dist/navigation/side-bar/side-bar.svelte +18 -9
- package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -17
- package/dist/navigation/tabs/index.d.ts +4 -0
- package/dist/navigation/tabs/index.js +3 -0
- package/dist/navigation/tabs/tab-context.d.ts +12 -6
- package/dist/navigation/tabs/tab-group.svelte +268 -55
- package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -20
- package/dist/navigation/tabs/tab.svelte +64 -34
- package/dist/navigation/tabs/tab.svelte.d.ts +11 -22
- package/dist/navigation/wizard/index.d.ts +3 -0
- package/dist/navigation/wizard/index.js +2 -0
- package/dist/navigation/wizard/wizard-context.d.ts +13 -8
- package/dist/navigation/wizard/wizard-step.svelte +38 -15
- package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -18
- package/dist/navigation/wizard/wizard.svelte +123 -89
- package/dist/navigation/wizard/wizard.svelte.d.ts +15 -26
- package/dist/placeholders/index.d.ts +6 -0
- package/dist/placeholders/index.js +6 -0
- package/dist/placeholders/loading.svelte +39 -23
- package/dist/placeholders/loading.svelte.d.ts +10 -17
- package/dist/placeholders/progress.svelte +7 -6
- package/dist/placeholders/progress.svelte.d.ts +5 -15
- package/dist/placeholders/skeleton-input.svelte +66 -38
- package/dist/placeholders/skeleton-input.svelte.d.ts +5 -15
- package/dist/placeholders/skeleton-paragraph.svelte +25 -0
- package/dist/placeholders/skeleton-paragraph.svelte.d.ts +8 -0
- package/dist/placeholders/skeleton-table.svelte +75 -0
- package/dist/placeholders/skeleton-table.svelte.d.ts +8 -0
- package/dist/placeholders/skeleton-text.svelte +46 -16
- package/dist/placeholders/skeleton-text.svelte.d.ts +7 -17
- package/dist/tables/cell-renderers.d.ts +24 -0
- package/dist/tables/cell-renderers.js +228 -0
- package/dist/tables/data-grid.svelte +332 -135
- package/dist/tables/data-grid.svelte.d.ts +34 -33
- package/dist/tables/index.d.ts +10 -0
- package/dist/tables/index.js +12 -0
- package/dist/tables/table-caption.svelte +13 -4
- package/dist/tables/table-caption.svelte.d.ts +8 -18
- package/dist/tables/table-cell.svelte +45 -15
- package/dist/tables/table-cell.svelte.d.ts +10 -19
- package/dist/tables/table-context.svelte.d.ts +32 -0
- package/dist/tables/table-context.svelte.js +160 -0
- package/dist/tables/table-header-cell.svelte +158 -19
- package/dist/tables/table-header-cell.svelte.d.ts +15 -19
- package/dist/tables/table-header.svelte +31 -6
- package/dist/tables/table-header.svelte.d.ts +7 -26
- package/dist/tables/table-row.svelte +87 -7
- package/dist/tables/table-row.svelte.d.ts +10 -26
- package/dist/tables/table.svelte +61 -2
- package/dist/tables/table.svelte.d.ts +13 -26
- package/dist/test-utils/accessibility-helpers.d.ts +80 -0
- package/dist/test-utils/accessibility-helpers.js +220 -0
- package/dist/test-utils/index.d.ts +8 -0
- package/dist/test-utils/index.js +8 -0
- package/dist/test-utils/mock-helpers.d.ts +68 -0
- package/dist/test-utils/mock-helpers.js +165 -0
- package/dist/test-utils/render-helpers.d.ts +55 -0
- package/dist/test-utils/render-helpers.js +114 -0
- package/dist/test-utils/setup.d.ts +5 -0
- package/dist/test-utils/setup.js +91 -0
- package/dist/test-utils/test-data.d.ts +102 -0
- package/dist/test-utils/test-data.js +99 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +2 -0
- package/dist/timeline/timeline-item.svelte +26 -9
- package/dist/timeline/timeline-item.svelte.d.ts +13 -23
- package/dist/timeline/timeline.svelte +12 -6
- package/dist/timeline/timeline.svelte.d.ts +6 -26
- package/dist/types/data.d.ts +61 -0
- package/dist/types/date.d.ts +1 -1
- package/dist/types/form.d.ts +20 -2
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/size.d.ts +22 -0
- package/dist/types/size.js +22 -0
- package/dist/typography/code-block.svelte +89 -10
- package/dist/typography/code-block.svelte.d.ts +7 -17
- package/dist/typography/code.svelte +89 -0
- package/dist/typography/code.svelte.d.ts +7 -0
- package/dist/typography/headline.svelte +29 -9
- package/dist/typography/headline.svelte.d.ts +8 -18
- package/dist/typography/index.d.ts +6 -0
- package/dist/typography/index.js +6 -0
- package/dist/typography/paragraph.svelte +18 -10
- package/dist/typography/paragraph.svelte.d.ts +6 -26
- package/dist/typography/subtitle.svelte +18 -4
- package/dist/typography/subtitle.svelte.d.ts +8 -18
- package/dist/typography/text.svelte +20 -5
- package/dist/typography/text.svelte.d.ts +9 -19
- package/package.json +46 -36
- package/dist/navigation/accordian/accordian.svelte +0 -62
- package/dist/navigation/accordian/accordian.svelte.d.ts +0 -19
- package/dist/tables/table-body.svelte +0 -3
- package/dist/tables/table-body.svelte.d.ts +0 -27
- package/dist/tables/table-footer-cell.svelte +0 -22
- package/dist/tables/table-footer-cell.svelte.d.ts +0 -18
- package/dist/tables/table-footer-row.svelte +0 -3
- package/dist/tables/table-footer-row.svelte.d.ts +0 -27
- package/dist/tables/table-footer.svelte +0 -13
- package/dist/tables/table-footer.svelte.d.ts +0 -27
- package/dist/tables/table-header-row.svelte +0 -4
- package/dist/tables/table-header-row.svelte.d.ts +0 -27
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { uniqueId } from '../../helpers/unique-id.js';
|
|
4
|
+
import { usePosition } from '../../helpers/use-position.svelte.js';
|
|
5
|
+
import type { Placement } from '../../helpers/positioning.js';
|
|
6
|
+
|
|
7
|
+
type TriggerMode = 'hover' | 'focus' | 'click' | 'manual';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
// Content
|
|
11
|
+
title = undefined as string | undefined,
|
|
12
|
+
text = undefined as string | undefined,
|
|
13
|
+
content = undefined as Snippet | undefined,
|
|
14
|
+
|
|
15
|
+
// Positioning
|
|
16
|
+
placement = 'top' as Placement,
|
|
17
|
+
offset = 8,
|
|
18
|
+
arrow = true,
|
|
19
|
+
|
|
20
|
+
// Trigger behavior
|
|
21
|
+
trigger = 'hover' as TriggerMode,
|
|
22
|
+
openDelay = 0,
|
|
23
|
+
closeDelay = 0,
|
|
24
|
+
|
|
25
|
+
// Controlled state
|
|
26
|
+
open = $bindable(false),
|
|
27
|
+
|
|
28
|
+
// Disabled state
|
|
29
|
+
disabled = false,
|
|
30
|
+
|
|
31
|
+
// Styling
|
|
32
|
+
class: className = '',
|
|
33
|
+
|
|
34
|
+
// Trigger element
|
|
35
|
+
children
|
|
36
|
+
}: {
|
|
37
|
+
title?: string;
|
|
38
|
+
text?: string;
|
|
39
|
+
content?: Snippet;
|
|
40
|
+
placement?: Placement;
|
|
41
|
+
offset?: number;
|
|
42
|
+
arrow?: boolean;
|
|
43
|
+
trigger?: TriggerMode;
|
|
44
|
+
openDelay?: number;
|
|
45
|
+
closeDelay?: number;
|
|
46
|
+
open?: boolean;
|
|
47
|
+
disabled?: boolean;
|
|
48
|
+
class?: string;
|
|
49
|
+
children: Snippet;
|
|
50
|
+
} = $props();
|
|
51
|
+
|
|
52
|
+
const tooltipId = uniqueId();
|
|
53
|
+
let triggerRef = $state<HTMLElement | null>(null);
|
|
54
|
+
let tooltipRef = $state<HTMLElement | null>(null);
|
|
55
|
+
let openTimeoutId: ReturnType<typeof setTimeout> | null = null;
|
|
56
|
+
let closeTimeoutId: ReturnType<typeof setTimeout> | null = null;
|
|
57
|
+
|
|
58
|
+
// Check if tooltip has content to show
|
|
59
|
+
const hasContent = $derived(
|
|
60
|
+
(typeof title === 'string' && title.trim().length > 0) ||
|
|
61
|
+
(typeof text === 'string' && text.trim().length > 0) ||
|
|
62
|
+
content !== undefined
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
// Position manager - always enabled since we control via open state
|
|
66
|
+
let positionManager = $derived(
|
|
67
|
+
usePosition(
|
|
68
|
+
() => triggerRef,
|
|
69
|
+
() => tooltipRef,
|
|
70
|
+
{
|
|
71
|
+
placement,
|
|
72
|
+
offset,
|
|
73
|
+
arrow,
|
|
74
|
+
arrowSize: 8,
|
|
75
|
+
enabled: open
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
// Clear any pending timeouts
|
|
81
|
+
function clearTimeouts() {
|
|
82
|
+
if (openTimeoutId) {
|
|
83
|
+
clearTimeout(openTimeoutId);
|
|
84
|
+
openTimeoutId = null;
|
|
85
|
+
}
|
|
86
|
+
if (closeTimeoutId) {
|
|
87
|
+
clearTimeout(closeTimeoutId);
|
|
88
|
+
closeTimeoutId = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Show tooltip with optional delay
|
|
93
|
+
function show() {
|
|
94
|
+
if (disabled || !hasContent) return;
|
|
95
|
+
clearTimeouts();
|
|
96
|
+
|
|
97
|
+
if (openDelay > 0) {
|
|
98
|
+
openTimeoutId = setTimeout(() => {
|
|
99
|
+
open = true;
|
|
100
|
+
openTimeoutId = null;
|
|
101
|
+
}, openDelay);
|
|
102
|
+
} else {
|
|
103
|
+
open = true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Hide tooltip with optional delay
|
|
108
|
+
function hide() {
|
|
109
|
+
clearTimeouts();
|
|
110
|
+
|
|
111
|
+
if (closeDelay > 0) {
|
|
112
|
+
closeTimeoutId = setTimeout(() => {
|
|
113
|
+
open = false;
|
|
114
|
+
closeTimeoutId = null;
|
|
115
|
+
}, closeDelay);
|
|
116
|
+
} else {
|
|
117
|
+
open = false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Toggle tooltip (for click mode)
|
|
122
|
+
function toggle() {
|
|
123
|
+
if (disabled || !hasContent) return;
|
|
124
|
+
clearTimeouts();
|
|
125
|
+
open = !open;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Event handlers based on trigger mode
|
|
129
|
+
const handlers = $derived.by(() => {
|
|
130
|
+
if (disabled || trigger === 'manual') {
|
|
131
|
+
return {};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const baseHandlers: Record<string, (e: Event) => void> = {};
|
|
135
|
+
|
|
136
|
+
if (trigger === 'hover' || trigger === 'focus') {
|
|
137
|
+
// Hover triggers
|
|
138
|
+
if (trigger === 'hover') {
|
|
139
|
+
baseHandlers.onmouseenter = show;
|
|
140
|
+
baseHandlers.onmouseleave = hide;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Focus triggers
|
|
144
|
+
if (trigger === 'focus') {
|
|
145
|
+
baseHandlers.onfocus = show;
|
|
146
|
+
baseHandlers.onblur = hide;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Keyboard support (Escape to close)
|
|
150
|
+
baseHandlers.onkeydown = (e: Event) => {
|
|
151
|
+
const keyEvent = e as KeyboardEvent;
|
|
152
|
+
if (keyEvent.key === 'Escape' && open) {
|
|
153
|
+
hide();
|
|
154
|
+
e.preventDefault();
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
} else if (trigger === 'click') {
|
|
158
|
+
// Click mode
|
|
159
|
+
baseHandlers.onclick = (e: Event) => {
|
|
160
|
+
toggle();
|
|
161
|
+
e.stopPropagation();
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// Close on Escape
|
|
165
|
+
baseHandlers.onkeydown = (e: Event) => {
|
|
166
|
+
const keyEvent = e as KeyboardEvent;
|
|
167
|
+
if (keyEvent.key === 'Escape' && open) {
|
|
168
|
+
hide();
|
|
169
|
+
e.preventDefault();
|
|
170
|
+
} else if (keyEvent.key === 'Enter' || keyEvent.key === ' ') {
|
|
171
|
+
toggle();
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return baseHandlers;
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// Click outside to close (for click mode)
|
|
181
|
+
$effect(() => {
|
|
182
|
+
if (trigger === 'click' && open) {
|
|
183
|
+
const handleClickOutside = (e: MouseEvent) => {
|
|
184
|
+
if (
|
|
185
|
+
triggerRef &&
|
|
186
|
+
tooltipRef &&
|
|
187
|
+
!triggerRef.contains(e.target as Node) &&
|
|
188
|
+
!tooltipRef.contains(e.target as Node)
|
|
189
|
+
) {
|
|
190
|
+
hide();
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
// Small delay to avoid closing immediately
|
|
195
|
+
setTimeout(() => {
|
|
196
|
+
document.addEventListener('click', handleClickOutside);
|
|
197
|
+
}, 0);
|
|
198
|
+
|
|
199
|
+
return () => {
|
|
200
|
+
document.removeEventListener('click', handleClickOutside);
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// Update position when open changes
|
|
206
|
+
$effect(() => {
|
|
207
|
+
if (open && positionManager) {
|
|
208
|
+
positionManager.update();
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// Cleanup timeouts on unmount
|
|
213
|
+
$effect(() => {
|
|
214
|
+
return () => {
|
|
215
|
+
clearTimeouts();
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
// Determine if trigger needs to be interactive
|
|
220
|
+
const needsInteraction = $derived(trigger !== 'manual');
|
|
221
|
+
const ariaAttributes = $derived.by(() => {
|
|
222
|
+
const attrs: Record<string, string | boolean | undefined> = {
|
|
223
|
+
'aria-describedby': open ? tooltipId : undefined
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// Add appropriate ARIA for click/manual modes
|
|
227
|
+
if (trigger === 'click') {
|
|
228
|
+
attrs['aria-expanded'] = open;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return attrs;
|
|
232
|
+
});
|
|
233
|
+
</script>
|
|
234
|
+
|
|
235
|
+
<!-- Trigger wrapper -->
|
|
236
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
237
|
+
<span
|
|
238
|
+
bind:this={triggerRef}
|
|
239
|
+
class="tooltip-trigger {className}"
|
|
240
|
+
class:disabled
|
|
241
|
+
role={trigger === 'click' ? 'button' : undefined}
|
|
242
|
+
tabindex={trigger === 'focus' || trigger === 'click' ? 0 : undefined}
|
|
243
|
+
{...handlers}
|
|
244
|
+
{...ariaAttributes}
|
|
245
|
+
>
|
|
246
|
+
{@render children()}
|
|
247
|
+
</span>
|
|
248
|
+
|
|
249
|
+
<!-- Tooltip content portal -->
|
|
250
|
+
{#if open && !disabled && hasContent}
|
|
251
|
+
<div
|
|
252
|
+
bind:this={tooltipRef}
|
|
253
|
+
class="tooltip"
|
|
254
|
+
class:with-arrow={arrow}
|
|
255
|
+
role="tooltip"
|
|
256
|
+
id={tooltipId}
|
|
257
|
+
aria-live="polite"
|
|
258
|
+
style="position: fixed; top: {positionManager.top}px; left: {positionManager.left}px; z-index: 9999;"
|
|
259
|
+
onmouseenter={() => {
|
|
260
|
+
// Keep tooltip open when hovering over it (for hover mode)
|
|
261
|
+
if (trigger === 'hover') {
|
|
262
|
+
clearTimeouts();
|
|
263
|
+
}
|
|
264
|
+
}}
|
|
265
|
+
onmouseleave={() => {
|
|
266
|
+
// Close when leaving tooltip (for hover mode)
|
|
267
|
+
if (trigger === 'hover') {
|
|
268
|
+
hide();
|
|
269
|
+
}
|
|
270
|
+
}}
|
|
271
|
+
>
|
|
272
|
+
<div class="tooltip-content">
|
|
273
|
+
{#if title}
|
|
274
|
+
<div class="tooltip-title">{title}</div>
|
|
275
|
+
{/if}
|
|
276
|
+
{#if content}
|
|
277
|
+
{@render content()}
|
|
278
|
+
{:else if text}
|
|
279
|
+
<div class="tooltip-text">{text}</div>
|
|
280
|
+
{/if}
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
{#if arrow}
|
|
284
|
+
<div
|
|
285
|
+
class="tooltip-arrow {positionManager.arrowSide}"
|
|
286
|
+
style={positionManager.arrowStyle}
|
|
287
|
+
></div>
|
|
288
|
+
{/if}
|
|
289
|
+
</div>
|
|
290
|
+
{/if}
|
|
291
|
+
|
|
292
|
+
<style>.tooltip-trigger {
|
|
293
|
+
display: inline-block;
|
|
294
|
+
}
|
|
295
|
+
.tooltip-trigger.disabled {
|
|
296
|
+
cursor: not-allowed;
|
|
297
|
+
opacity: 0.6;
|
|
298
|
+
}
|
|
299
|
+
.tooltip-trigger:not(.disabled):focus-visible {
|
|
300
|
+
outline: 2px solid var(--primary, #0066cc);
|
|
301
|
+
outline-offset: 2px;
|
|
302
|
+
border-radius: var(--radius-sm, 0.125rem);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.tooltip {
|
|
306
|
+
padding: 0.5rem 0.75rem;
|
|
307
|
+
background-color: var(--tooltip-bg, #1a1a1a);
|
|
308
|
+
color: var(--tooltip-fg, #ffffff);
|
|
309
|
+
border-radius: var(--radius-md, 0.375rem);
|
|
310
|
+
font-size: var(--font-sm, 0.875rem);
|
|
311
|
+
line-height: 1.4;
|
|
312
|
+
max-width: min(320px, 90vw);
|
|
313
|
+
word-wrap: break-word;
|
|
314
|
+
pointer-events: auto;
|
|
315
|
+
box-shadow: var(--shadow-lg, 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06));
|
|
316
|
+
animation: tooltip-fade-in 0.15s ease-out;
|
|
317
|
+
/* Ensure tooltip stays above other content */
|
|
318
|
+
position: fixed;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.tooltip-content {
|
|
322
|
+
display: flex;
|
|
323
|
+
flex-direction: column;
|
|
324
|
+
gap: 0.25rem;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.tooltip-title {
|
|
328
|
+
font-weight: 600;
|
|
329
|
+
font-size: 0.9375rem; /* Slightly larger than body text */
|
|
330
|
+
line-height: 1.3;
|
|
331
|
+
color: var(--tooltip-title-fg, var(--tooltip-fg, #ffffff));
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.tooltip-text {
|
|
335
|
+
font-size: var(--font-sm, 0.875rem);
|
|
336
|
+
line-height: 1.4;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.tooltip-arrow {
|
|
340
|
+
position: absolute;
|
|
341
|
+
width: 0;
|
|
342
|
+
height: 0;
|
|
343
|
+
border-style: solid;
|
|
344
|
+
/* Arrow on top of tooltip, pointing up */
|
|
345
|
+
}
|
|
346
|
+
.tooltip-arrow.top {
|
|
347
|
+
border-width: 0 8px 8px 8px;
|
|
348
|
+
border-color: transparent transparent var(--tooltip-bg, #1a1a1a) transparent;
|
|
349
|
+
}
|
|
350
|
+
.tooltip-arrow {
|
|
351
|
+
/* Arrow on bottom of tooltip, pointing down */
|
|
352
|
+
}
|
|
353
|
+
.tooltip-arrow.bottom {
|
|
354
|
+
border-width: 8px 8px 0 8px;
|
|
355
|
+
border-color: var(--tooltip-bg, #1a1a1a) transparent transparent transparent;
|
|
356
|
+
}
|
|
357
|
+
.tooltip-arrow {
|
|
358
|
+
/* Arrow on left of tooltip, pointing left */
|
|
359
|
+
}
|
|
360
|
+
.tooltip-arrow.left {
|
|
361
|
+
border-width: 8px 8px 8px 0;
|
|
362
|
+
border-color: transparent var(--tooltip-bg, #1a1a1a) transparent transparent;
|
|
363
|
+
}
|
|
364
|
+
.tooltip-arrow {
|
|
365
|
+
/* Arrow on right of tooltip, pointing right */
|
|
366
|
+
}
|
|
367
|
+
.tooltip-arrow.right {
|
|
368
|
+
border-width: 8px 0 8px 8px;
|
|
369
|
+
border-color: transparent transparent transparent var(--tooltip-bg, #1a1a1a);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
@keyframes tooltip-fade-in {
|
|
373
|
+
from {
|
|
374
|
+
opacity: 0;
|
|
375
|
+
transform: scale(0.95);
|
|
376
|
+
}
|
|
377
|
+
to {
|
|
378
|
+
opacity: 1;
|
|
379
|
+
transform: scale(1);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/* Mobile responsiveness considerations */
|
|
383
|
+
@media (hover: none) {
|
|
384
|
+
/* On touch devices, tooltips with hover trigger might not work well */
|
|
385
|
+
/* Consider showing a visual indicator that tap is needed */
|
|
386
|
+
.tooltip-trigger:not(.disabled) {
|
|
387
|
+
cursor: pointer;
|
|
388
|
+
}
|
|
389
|
+
}</style>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { Placement } from '../../helpers/positioning.js';
|
|
3
|
+
type TriggerMode = 'hover' | 'focus' | 'click' | 'manual';
|
|
4
|
+
type $$ComponentProps = {
|
|
5
|
+
title?: string;
|
|
6
|
+
text?: string;
|
|
7
|
+
content?: Snippet;
|
|
8
|
+
placement?: Placement;
|
|
9
|
+
offset?: number;
|
|
10
|
+
arrow?: boolean;
|
|
11
|
+
trigger?: TriggerMode;
|
|
12
|
+
openDelay?: number;
|
|
13
|
+
closeDelay?: number;
|
|
14
|
+
open?: boolean;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
class?: string;
|
|
17
|
+
children: Snippet;
|
|
18
|
+
};
|
|
19
|
+
declare const Tooltip: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
20
|
+
type Tooltip = ReturnType<typeof Tooltip>;
|
|
21
|
+
export default Tooltip;
|
package/dist/helpers/ago.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Converts a date to a human-readable "ago" string (e.g., "2 hours ago", "3 days ago")
|
|
3
|
+
* @param date - The date to convert
|
|
4
|
+
* @param style - The style of output ('full', 'long', 'short', 'medium')
|
|
5
|
+
* @returns A human-readable time difference string
|
|
6
|
+
*/
|
|
7
|
+
declare const ago: (date: Date, style?: "full" | "long" | "short" | "medium") => string;
|
|
2
8
|
export default ago;
|
package/dist/helpers/ago.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
const DAY_SECONDS = 86400;
|
|
2
2
|
const WEEK_SECONDS = 604800;
|
|
3
3
|
const YEAR_SECONDS = WEEK_SECONDS * 52;
|
|
4
|
+
/**
|
|
5
|
+
* Converts a date to a human-readable "ago" string (e.g., "2 hours ago", "3 days ago")
|
|
6
|
+
* @param date - The date to convert
|
|
7
|
+
* @param style - The style of output ('full', 'long', 'short', 'medium')
|
|
8
|
+
* @returns A human-readable time difference string
|
|
9
|
+
*/
|
|
4
10
|
const ago = (date, style = 'medium') => {
|
|
5
11
|
const epoch = Math.round(date.getTime() / 1000);
|
|
6
12
|
const now = Math.round(Date.now() / 1000);
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable Svelte actions for animations
|
|
3
|
+
* Easy-to-use actions that can be applied to elements with `use:actionName`
|
|
4
|
+
* @module animation-actions
|
|
5
|
+
*/
|
|
6
|
+
import { type AnimationOptions } from './animations.js';
|
|
7
|
+
import type { Action } from 'svelte/action';
|
|
8
|
+
/**
|
|
9
|
+
* Options for fade in action
|
|
10
|
+
*/
|
|
11
|
+
export interface FadeInOptions extends AnimationOptions {
|
|
12
|
+
/** Delay before starting animation */
|
|
13
|
+
delay?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Fade in element on mount
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```svelte
|
|
20
|
+
* <div use:fadeIn={{ duration: 300 }}>
|
|
21
|
+
* Fades in when mounted
|
|
22
|
+
* </div>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const fadeIn: Action<HTMLElement, FadeInOptions | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Slide in from top on mount
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```svelte
|
|
31
|
+
* <div use:slideIn="top">
|
|
32
|
+
* Slides in from top
|
|
33
|
+
* </div>
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const slideIn: Action<HTMLElement, 'top' | 'bottom' | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Scale in on mount
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```svelte
|
|
42
|
+
* <div use:scaleIn>
|
|
43
|
+
* Scales in when mounted
|
|
44
|
+
* </div>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare const scaleIn: Action<HTMLElement, AnimationOptions | undefined>;
|
|
48
|
+
/**
|
|
49
|
+
* Button press effect (scale down on click)
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```svelte
|
|
53
|
+
* <button use:pressEffect>
|
|
54
|
+
* Click me
|
|
55
|
+
* </button>
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare const pressEffect: Action<HTMLElement>;
|
|
59
|
+
/**
|
|
60
|
+
* Shake animation trigger
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```svelte
|
|
64
|
+
* <script>
|
|
65
|
+
* let triggerShake = $state(false);
|
|
66
|
+
* </script>
|
|
67
|
+
* <div use:shake={triggerShake}>
|
|
68
|
+
* Shakes when triggerShake changes to true
|
|
69
|
+
* </div>
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare const shake: Action<HTMLElement, boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Bounce animation trigger
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```svelte
|
|
78
|
+
* <script>
|
|
79
|
+
* let triggerBounce = $state(false);
|
|
80
|
+
* </script>
|
|
81
|
+
* <div use:bounce={triggerBounce}>
|
|
82
|
+
* Bounces when triggerBounce changes to true
|
|
83
|
+
* </div>
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare const bounce: Action<HTMLElement, boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Pulse animation trigger (for loading states)
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```svelte
|
|
92
|
+
* <script>
|
|
93
|
+
* let isLoading = $state(false);
|
|
94
|
+
* </script>
|
|
95
|
+
* <div use:pulse={isLoading}>
|
|
96
|
+
* Pulses while loading
|
|
97
|
+
* </div>
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare const pulse: Action<HTMLElement, boolean>;
|
|
101
|
+
/**
|
|
102
|
+
* Ripple effect on click (Material Design inspired)
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```svelte
|
|
106
|
+
* <button use:ripple>
|
|
107
|
+
* Click for ripple effect
|
|
108
|
+
* </button>
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare const ripple: Action<HTMLElement, {
|
|
112
|
+
color?: string;
|
|
113
|
+
} | undefined>;
|
|
114
|
+
/**
|
|
115
|
+
* Auto-focus element with smooth highlight
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```svelte
|
|
119
|
+
* <input use:autoFocus />
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare const autoFocus: Action<HTMLElement, {
|
|
123
|
+
delay?: number;
|
|
124
|
+
} | undefined>;
|