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
|
@@ -1,55 +1,69 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { FormFieldSizeOptions } from '../../types/form.js';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
size = 'md' as FormFieldSizeOptions,
|
|
7
|
+
variant = 'standard' as 'standard' | 'positive' | 'negative',
|
|
8
|
+
shape = 'rounded' as 'circular' | 'square' | 'rounded' | 'badge' | 'circle',
|
|
9
|
+
fill = 'solid' as 'solid' | 'outline',
|
|
10
|
+
compact = false,
|
|
11
|
+
label
|
|
12
|
+
}: {
|
|
13
|
+
size?: FormFieldSizeOptions;
|
|
14
|
+
variant?: 'standard' | 'positive' | 'negative';
|
|
15
|
+
shape?: 'circular' | 'square' | 'rounded' | 'badge' | 'circle';
|
|
16
|
+
fill?: 'solid' | 'outline';
|
|
17
|
+
compact?: boolean;
|
|
18
|
+
label?: string;
|
|
19
|
+
} = $props();
|
|
6
20
|
</script>
|
|
7
21
|
|
|
8
|
-
<div class="pill {size} {
|
|
9
|
-
<span
|
|
22
|
+
<div class="pill {size} {variant} {shape} {fill}" class:compact>
|
|
23
|
+
<span>{label}</span>
|
|
10
24
|
</div>
|
|
11
25
|
|
|
12
26
|
<style>.pill {
|
|
13
27
|
display: inline-block;
|
|
14
|
-
padding:
|
|
15
|
-
border-radius:
|
|
16
|
-
background-color:
|
|
17
|
-
font-size:
|
|
28
|
+
padding: var(--spacing-xs) var(--spacing-sm);
|
|
29
|
+
border-radius: var(--radius-pill);
|
|
30
|
+
background-color: var(--base-color-fg);
|
|
31
|
+
font-size: var(--font-sm);
|
|
18
32
|
font-weight: 500;
|
|
19
|
-
color:
|
|
20
|
-
font-family: var(--base-font-family
|
|
33
|
+
color: var(--base-color-bg);
|
|
34
|
+
font-family: var(--base-font-family);
|
|
21
35
|
}
|
|
22
36
|
.pill.compact {
|
|
23
|
-
padding:
|
|
37
|
+
padding: var(--spacing-xs);
|
|
24
38
|
}
|
|
25
39
|
.pill.sm {
|
|
26
|
-
font-size:
|
|
27
|
-
padding:
|
|
40
|
+
font-size: var(--font-xs);
|
|
41
|
+
padding: var(--spacing-xs) var(--spacing-xs);
|
|
28
42
|
}
|
|
29
43
|
.pill.lg {
|
|
30
|
-
font-size:
|
|
31
|
-
padding:
|
|
44
|
+
font-size: var(--font-base);
|
|
45
|
+
padding: var(--spacing-xs) var(--spacing-md);
|
|
32
46
|
}
|
|
33
47
|
.pill.xl {
|
|
34
|
-
font-size:
|
|
35
|
-
padding:
|
|
48
|
+
font-size: var(--font-md);
|
|
49
|
+
padding: var(--spacing-sm) var(--spacing-base);
|
|
36
50
|
}
|
|
37
51
|
.pill.badge {
|
|
38
|
-
border-radius:
|
|
52
|
+
border-radius: var(--radius-lg);
|
|
39
53
|
}
|
|
40
54
|
.pill.square {
|
|
41
55
|
border-radius: 0;
|
|
42
56
|
}
|
|
43
57
|
.pill.outline {
|
|
44
58
|
background-color: transparent;
|
|
45
|
-
border:
|
|
46
|
-
color:
|
|
59
|
+
border: var(--border-thin) solid var(--gray-600);
|
|
60
|
+
color: var(--gray-600);
|
|
47
61
|
}
|
|
48
62
|
.pill.circular {
|
|
49
|
-
border-radius:
|
|
63
|
+
border-radius: var(--radius-full);
|
|
50
64
|
}
|
|
51
65
|
.pill.circle {
|
|
52
|
-
border-radius:
|
|
66
|
+
border-radius: var(--radius-full);
|
|
53
67
|
width: 1.75rem;
|
|
54
68
|
height: 1.75rem;
|
|
55
69
|
position: relative;
|
|
@@ -63,8 +77,8 @@ export let compact = false;
|
|
|
63
77
|
height: 2.25rem;
|
|
64
78
|
}
|
|
65
79
|
.pill.circle.xl {
|
|
66
|
-
width:
|
|
67
|
-
height:
|
|
80
|
+
width: var(--spacing-2xl);
|
|
81
|
+
height: var(--spacing-2xl);
|
|
68
82
|
}
|
|
69
83
|
.pill.circle span {
|
|
70
84
|
display: flex;
|
|
@@ -74,20 +88,20 @@ export let compact = false;
|
|
|
74
88
|
height: 100%;
|
|
75
89
|
}
|
|
76
90
|
.pill.positive {
|
|
77
|
-
background-color:
|
|
91
|
+
background-color: var(--color-success);
|
|
78
92
|
color: #fff;
|
|
79
93
|
}
|
|
80
94
|
.pill.positive.outline {
|
|
81
95
|
background-color: transparent;
|
|
82
|
-
border:
|
|
83
|
-
color:
|
|
96
|
+
border: var(--border-thin) solid var(--color-success);
|
|
97
|
+
color: var(--color-success);
|
|
84
98
|
}
|
|
85
99
|
.pill.negative {
|
|
86
|
-
background-color:
|
|
100
|
+
background-color: var(--color-error);
|
|
87
101
|
color: #fff;
|
|
88
102
|
}
|
|
89
103
|
.pill.negative.outline {
|
|
90
104
|
background-color: transparent;
|
|
91
|
-
border:
|
|
92
|
-
color:
|
|
105
|
+
border: var(--border-thin) solid var(--color-error);
|
|
106
|
+
color: var(--color-error);
|
|
93
107
|
}</style>
|
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type { FormFieldSizeOptions } from '../../types/form.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
events: {
|
|
12
|
-
[evt: string]: CustomEvent<any>;
|
|
13
|
-
};
|
|
14
|
-
slots: {
|
|
15
|
-
default: {};
|
|
16
|
-
};
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
size?: FormFieldSizeOptions;
|
|
4
|
+
variant?: 'standard' | 'positive' | 'negative';
|
|
5
|
+
shape?: 'circular' | 'square' | 'rounded' | 'badge' | 'circle';
|
|
6
|
+
fill?: 'solid' | 'outline';
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
label?: string;
|
|
17
9
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export
|
|
21
|
-
export default class Pill extends SvelteComponent<PillProps, PillEvents, PillSlots> {
|
|
22
|
-
}
|
|
23
|
-
export {};
|
|
10
|
+
declare const Pill: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type Pill = ReturnType<typeof Pill>;
|
|
12
|
+
export default Pill;
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { uniqueId } from '../../helpers/unique-id.js';
|
|
4
|
+
import { browser } from '$app/environment';
|
|
5
|
+
import { usePosition } from '../../helpers/use-position.svelte.js';
|
|
6
|
+
import type { Placement } from '../../helpers/positioning.js';
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
open = $bindable(false),
|
|
10
|
+
position = 'bottom' as 'top' | 'bottom' | 'left' | 'right',
|
|
11
|
+
placement = undefined as Placement | undefined,
|
|
12
|
+
autoPosition = true,
|
|
13
|
+
arrow = false,
|
|
14
|
+
offset = 8,
|
|
15
|
+
trigger,
|
|
16
|
+
children
|
|
17
|
+
}: {
|
|
18
|
+
open?: boolean;
|
|
19
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
20
|
+
placement?: Placement;
|
|
21
|
+
autoPosition?: boolean;
|
|
22
|
+
arrow?: boolean;
|
|
23
|
+
offset?: number;
|
|
24
|
+
trigger?: Snippet;
|
|
25
|
+
children?: Snippet;
|
|
26
|
+
} = $props();
|
|
27
|
+
|
|
28
|
+
const popoverId = uniqueId();
|
|
29
|
+
let triggerElement: HTMLElement | null = $state(null);
|
|
30
|
+
let popoverElement: HTMLElement | null = $state(null);
|
|
31
|
+
|
|
32
|
+
// Use smart positioning if enabled
|
|
33
|
+
let positionManager = $derived(
|
|
34
|
+
autoPosition
|
|
35
|
+
? usePosition(
|
|
36
|
+
() => triggerElement,
|
|
37
|
+
() => popoverElement,
|
|
38
|
+
{
|
|
39
|
+
placement: placement || (position as Placement),
|
|
40
|
+
offset,
|
|
41
|
+
arrow,
|
|
42
|
+
arrowSize: 8,
|
|
43
|
+
enabled: open
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
: null
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const handleClickOutside = (e: MouseEvent) => {
|
|
50
|
+
if (
|
|
51
|
+
browser &&
|
|
52
|
+
popoverElement &&
|
|
53
|
+
triggerElement &&
|
|
54
|
+
!popoverElement.contains(e.target as Node) &&
|
|
55
|
+
!triggerElement.contains(e.target as Node)
|
|
56
|
+
) {
|
|
57
|
+
open = false;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
62
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
open = !open;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
$effect(() => {
|
|
69
|
+
if (open && browser) {
|
|
70
|
+
document.addEventListener('click', handleClickOutside);
|
|
71
|
+
return () => {
|
|
72
|
+
document.removeEventListener('click', handleClickOutside);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Update position manager when open state changes
|
|
78
|
+
$effect(() => {
|
|
79
|
+
if (positionManager) {
|
|
80
|
+
positionManager.setOptions({ enabled: open });
|
|
81
|
+
if (open) {
|
|
82
|
+
positionManager.update();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
</script>
|
|
87
|
+
|
|
88
|
+
<div class="popover-wrapper">
|
|
89
|
+
<div
|
|
90
|
+
bind:this={triggerElement}
|
|
91
|
+
onclick={() => (open = !open)}
|
|
92
|
+
onkeydown={handleKeyDown}
|
|
93
|
+
role="button"
|
|
94
|
+
tabindex="0"
|
|
95
|
+
aria-expanded={open}
|
|
96
|
+
aria-haspopup="true"
|
|
97
|
+
>
|
|
98
|
+
{@render trigger?.()}
|
|
99
|
+
</div>
|
|
100
|
+
{#if open}
|
|
101
|
+
{#if autoPosition && positionManager}
|
|
102
|
+
<!-- Smart positioned popover (fixed positioning) -->
|
|
103
|
+
<div
|
|
104
|
+
bind:this={popoverElement}
|
|
105
|
+
class="popover positioned"
|
|
106
|
+
class:with-arrow={arrow}
|
|
107
|
+
role="dialog"
|
|
108
|
+
id={popoverId}
|
|
109
|
+
aria-modal="false"
|
|
110
|
+
style="position: fixed; top: {positionManager.top}px; left: {positionManager.left}px;"
|
|
111
|
+
>
|
|
112
|
+
{@render children?.()}
|
|
113
|
+
{#if arrow}
|
|
114
|
+
<div
|
|
115
|
+
class="popover-arrow {positionManager.arrowSide}"
|
|
116
|
+
style={positionManager.arrowStyle}
|
|
117
|
+
></div>
|
|
118
|
+
{/if}
|
|
119
|
+
</div>
|
|
120
|
+
{:else}
|
|
121
|
+
<!-- Legacy positioned popover (relative positioning) -->
|
|
122
|
+
<div
|
|
123
|
+
bind:this={popoverElement}
|
|
124
|
+
class="popover {position}"
|
|
125
|
+
role="dialog"
|
|
126
|
+
id={popoverId}
|
|
127
|
+
aria-modal="false"
|
|
128
|
+
>
|
|
129
|
+
{@render children?.()}
|
|
130
|
+
</div>
|
|
131
|
+
{/if}
|
|
132
|
+
{/if}
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<style>.popover-wrapper {
|
|
136
|
+
position: relative;
|
|
137
|
+
display: inline-block;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.popover {
|
|
141
|
+
z-index: 1000;
|
|
142
|
+
padding: var(--spacing-md);
|
|
143
|
+
background-color: var(--popover-bg);
|
|
144
|
+
border: var(--border-thin) solid var(--popover-border);
|
|
145
|
+
border-radius: var(--radius-md);
|
|
146
|
+
box-shadow: var(--shadow-lg);
|
|
147
|
+
min-width: 12rem;
|
|
148
|
+
max-width: 20rem;
|
|
149
|
+
animation: popover-fade-in 0.2s ease-out;
|
|
150
|
+
}
|
|
151
|
+
.popover.positioned {
|
|
152
|
+
/* Fixed positioning handled by inline styles */
|
|
153
|
+
position: fixed;
|
|
154
|
+
}
|
|
155
|
+
.popover.with-arrow {
|
|
156
|
+
/* Add space for arrow if needed */
|
|
157
|
+
position: relative;
|
|
158
|
+
}
|
|
159
|
+
.popover {
|
|
160
|
+
/* Legacy relative positioning */
|
|
161
|
+
}
|
|
162
|
+
.popover:not(.positioned) {
|
|
163
|
+
position: absolute;
|
|
164
|
+
}
|
|
165
|
+
.popover:not(.positioned).top {
|
|
166
|
+
bottom: 100%;
|
|
167
|
+
left: 50%;
|
|
168
|
+
transform: translateX(-50%);
|
|
169
|
+
margin-bottom: var(--spacing-sm);
|
|
170
|
+
}
|
|
171
|
+
.popover:not(.positioned).bottom {
|
|
172
|
+
top: 100%;
|
|
173
|
+
left: 50%;
|
|
174
|
+
transform: translateX(-50%);
|
|
175
|
+
margin-top: var(--spacing-sm);
|
|
176
|
+
}
|
|
177
|
+
.popover:not(.positioned).left {
|
|
178
|
+
right: 100%;
|
|
179
|
+
top: 50%;
|
|
180
|
+
transform: translateY(-50%);
|
|
181
|
+
margin-right: var(--spacing-sm);
|
|
182
|
+
}
|
|
183
|
+
.popover:not(.positioned).right {
|
|
184
|
+
left: 100%;
|
|
185
|
+
top: 50%;
|
|
186
|
+
transform: translateY(-50%);
|
|
187
|
+
margin-left: var(--spacing-sm);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.popover-arrow {
|
|
191
|
+
position: absolute;
|
|
192
|
+
width: 0;
|
|
193
|
+
height: 0;
|
|
194
|
+
border-style: solid;
|
|
195
|
+
}
|
|
196
|
+
.popover-arrow.top {
|
|
197
|
+
border-width: 8px 8px 0 8px;
|
|
198
|
+
border-color: var(--popover-bg) transparent transparent transparent;
|
|
199
|
+
filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1));
|
|
200
|
+
}
|
|
201
|
+
.popover-arrow.bottom {
|
|
202
|
+
border-width: 0 8px 8px 8px;
|
|
203
|
+
border-color: transparent transparent var(--popover-bg) transparent;
|
|
204
|
+
filter: drop-shadow(0 -2px 2px rgba(0, 0, 0, 0.1));
|
|
205
|
+
}
|
|
206
|
+
.popover-arrow.left {
|
|
207
|
+
border-width: 8px 0 8px 8px;
|
|
208
|
+
border-color: transparent transparent transparent var(--popover-bg);
|
|
209
|
+
filter: drop-shadow(2px 0 2px rgba(0, 0, 0, 0.1));
|
|
210
|
+
}
|
|
211
|
+
.popover-arrow.right {
|
|
212
|
+
border-width: 8px 8px 8px 0;
|
|
213
|
+
border-color: transparent var(--popover-bg) transparent transparent;
|
|
214
|
+
filter: drop-shadow(-2px 0 2px rgba(0, 0, 0, 0.1));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@keyframes popover-fade-in {
|
|
218
|
+
from {
|
|
219
|
+
opacity: 0;
|
|
220
|
+
transform: scale(0.95);
|
|
221
|
+
}
|
|
222
|
+
to {
|
|
223
|
+
opacity: 1;
|
|
224
|
+
transform: scale(1);
|
|
225
|
+
}
|
|
226
|
+
}</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { Placement } from '../../helpers/positioning.js';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
6
|
+
placement?: Placement;
|
|
7
|
+
autoPosition?: boolean;
|
|
8
|
+
arrow?: boolean;
|
|
9
|
+
offset?: number;
|
|
10
|
+
trigger?: Snippet;
|
|
11
|
+
children?: Snippet;
|
|
12
|
+
};
|
|
13
|
+
declare const Popover: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
14
|
+
type Popover = ReturnType<typeof Popover>;
|
|
15
|
+
export default Popover;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ComponentSize } from '../../types/size.js';
|
|
3
|
+
import { uniqueId } from '../../helpers/unique-id.js';
|
|
4
|
+
|
|
5
|
+
const id = uniqueId();
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
value = $bindable(0 as number),
|
|
9
|
+
max = 5,
|
|
10
|
+
size = 'md' as ComponentSize,
|
|
11
|
+
readonly = false,
|
|
12
|
+
onChange = undefined
|
|
13
|
+
}: {
|
|
14
|
+
value?: number;
|
|
15
|
+
max?: number;
|
|
16
|
+
size?: ComponentSize;
|
|
17
|
+
readonly?: boolean;
|
|
18
|
+
onChange?: ((value: number) => void) | undefined;
|
|
19
|
+
} = $props();
|
|
20
|
+
|
|
21
|
+
const setValue = (newValue: number) => {
|
|
22
|
+
if (readonly) return;
|
|
23
|
+
value = newValue;
|
|
24
|
+
onChange?.(newValue);
|
|
25
|
+
};
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<div class="rating {size}" role="radiogroup" aria-label="Rating">
|
|
29
|
+
{#each Array(max) as _, i}
|
|
30
|
+
<button
|
|
31
|
+
type="button"
|
|
32
|
+
class="star {i < value ? 'filled' : 'empty'}"
|
|
33
|
+
onclick={() => setValue(i + 1)}
|
|
34
|
+
aria-label="Rate {i + 1} out of {max}"
|
|
35
|
+
aria-pressed={i < value}
|
|
36
|
+
disabled={readonly}
|
|
37
|
+
aria-disabled={readonly}
|
|
38
|
+
>
|
|
39
|
+
★
|
|
40
|
+
</button>
|
|
41
|
+
{/each}
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<style>.rating {
|
|
45
|
+
display: inline-flex;
|
|
46
|
+
gap: 0.25rem;
|
|
47
|
+
align-items: center;
|
|
48
|
+
}
|
|
49
|
+
.rating .star {
|
|
50
|
+
background: none;
|
|
51
|
+
border: none;
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
padding: 0;
|
|
54
|
+
color: var(--rating-empty-color, #ccc);
|
|
55
|
+
transition: color 0.2s ease-in-out;
|
|
56
|
+
font-size: 1.5rem;
|
|
57
|
+
line-height: 1;
|
|
58
|
+
}
|
|
59
|
+
.rating .star.filled {
|
|
60
|
+
color: var(--rating-filled-color, #ffc107);
|
|
61
|
+
}
|
|
62
|
+
.rating .star:hover:not([readonly]) {
|
|
63
|
+
color: var(--rating-hover-color, #ffb300);
|
|
64
|
+
}
|
|
65
|
+
.rating .star[readonly] {
|
|
66
|
+
cursor: default;
|
|
67
|
+
}
|
|
68
|
+
.rating .star:focus {
|
|
69
|
+
outline: 2px solid var(--rating-focus-color, #3182ce);
|
|
70
|
+
outline-offset: 2px;
|
|
71
|
+
border-radius: 0.125rem;
|
|
72
|
+
}
|
|
73
|
+
.rating.sm .star {
|
|
74
|
+
font-size: 1rem;
|
|
75
|
+
}
|
|
76
|
+
.rating.md .star {
|
|
77
|
+
font-size: 1.5rem;
|
|
78
|
+
}
|
|
79
|
+
.rating.lg .star {
|
|
80
|
+
font-size: 2rem;
|
|
81
|
+
}
|
|
82
|
+
.rating.xl .star {
|
|
83
|
+
font-size: 2.5rem;
|
|
84
|
+
}</style>
|
|
85
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ComponentSize } from '../../types/size.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
value?: number;
|
|
4
|
+
max?: number;
|
|
5
|
+
size?: ComponentSize;
|
|
6
|
+
readonly?: boolean;
|
|
7
|
+
onChange?: ((value: number) => void) | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const Rating: import("svelte").Component<$$ComponentProps, {}, "value">;
|
|
10
|
+
type Rating = ReturnType<typeof Rating>;
|
|
11
|
+
export default Rating;
|
|
@@ -1,28 +1,41 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { navigateTo, uniqueId } from '../../index.js';
|
|
4
|
+
import { getContext } from 'svelte';
|
|
5
|
+
import type { CardContainerContext } from '../card/card-container.js';
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
value,
|
|
9
|
+
caption = 'below' as 'above' | 'below' | 'left' | 'right',
|
|
10
|
+
href = undefined,
|
|
11
|
+
children
|
|
12
|
+
}: {
|
|
13
|
+
value: string | number;
|
|
14
|
+
caption?: 'above' | 'below' | 'left' | 'right';
|
|
15
|
+
href?: string;
|
|
16
|
+
children: Snippet;
|
|
17
|
+
} = $props();
|
|
18
|
+
|
|
19
|
+
const onClick = () => {
|
|
20
|
+
if (!href) return;
|
|
21
|
+
navigateTo(href);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const id = uniqueId();
|
|
25
|
+
const container = getContext<CardContainerContext | undefined>('CardContainer');
|
|
26
|
+
if (container) {
|
|
27
|
+
container.register(id);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Reactively format a string output of value, if it's a number, formatted with commas
|
|
31
|
+
let formattedValue = $derived(typeof value === 'number' ? value.toLocaleString() : value);
|
|
32
|
+
let isLink = $derived(!!href);
|
|
20
33
|
</script>
|
|
21
34
|
|
|
22
|
-
<button
|
|
35
|
+
<button onclick={onClick} class:isLink {id}>
|
|
23
36
|
<figure class={caption}>
|
|
24
37
|
<span class="value">{formattedValue}</span>
|
|
25
|
-
<figcaption
|
|
38
|
+
<figcaption>{@render children?.()}</figcaption>
|
|
26
39
|
</figure>
|
|
27
40
|
</button>
|
|
28
41
|
|
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {
|
|
12
|
-
default: {};
|
|
13
|
-
};
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
value: string | number;
|
|
4
|
+
caption?: 'above' | 'below' | 'left' | 'right';
|
|
5
|
+
href?: string;
|
|
6
|
+
children: Snippet;
|
|
14
7
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export
|
|
18
|
-
export default class Scorecard extends SvelteComponent<ScorecardProps, ScorecardEvents, ScorecardSlots> {
|
|
19
|
-
}
|
|
20
|
-
export {};
|
|
8
|
+
declare const Scorecard: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type Scorecard = ReturnType<typeof Scorecard>;
|
|
10
|
+
export default Scorecard;
|
|
@@ -1,18 +1,37 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { setContext } from 'svelte';
|
|
4
|
+
import type { SectionLevel } from '../../types/generic.js';
|
|
5
|
+
import Header from '../header/header.svelte';
|
|
6
|
+
import type { FormFieldSizeOptions } from '../../index.js';
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
title = undefined,
|
|
10
|
+
level = 2 as SectionLevel,
|
|
11
|
+
size = 'full' as FormFieldSizeOptions,
|
|
12
|
+
hidden = false,
|
|
13
|
+
align = 'left' as 'left' | 'center' | 'right',
|
|
14
|
+
children
|
|
15
|
+
}: {
|
|
16
|
+
title?: string;
|
|
17
|
+
level?: SectionLevel;
|
|
18
|
+
size?: FormFieldSizeOptions;
|
|
19
|
+
hidden?: boolean;
|
|
20
|
+
align?: 'left' | 'center' | 'right';
|
|
21
|
+
children: Snippet;
|
|
22
|
+
} = $props();
|
|
23
|
+
|
|
24
|
+
setContext('section', {
|
|
25
|
+
get level() { return level; },
|
|
26
|
+
get title() { return title; }
|
|
27
|
+
});
|
|
9
28
|
</script>
|
|
10
29
|
|
|
11
30
|
<section class="level-{level} {size} {align}" class:hidden>
|
|
12
31
|
{#if title}
|
|
13
32
|
<Header {level} />
|
|
14
33
|
{/if}
|
|
15
|
-
|
|
34
|
+
{@render children?.()}
|
|
16
35
|
</section>
|
|
17
36
|
|
|
18
37
|
<style>section {
|
|
@@ -1,24 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
2
|
import type { SectionLevel } from '../../types/generic.js';
|
|
3
3
|
import type { FormFieldSizeOptions } from '../../index.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
events: {
|
|
13
|
-
[evt: string]: CustomEvent<any>;
|
|
14
|
-
};
|
|
15
|
-
slots: {
|
|
16
|
-
default: {};
|
|
17
|
-
};
|
|
4
|
+
type $$ComponentProps = {
|
|
5
|
+
title?: string;
|
|
6
|
+
level?: SectionLevel;
|
|
7
|
+
size?: FormFieldSizeOptions;
|
|
8
|
+
hidden?: boolean;
|
|
9
|
+
align?: 'left' | 'center' | 'right';
|
|
10
|
+
children: Snippet;
|
|
18
11
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export
|
|
22
|
-
export default class Section extends SvelteComponent<SectionProps, SectionEvents, SectionSlots> {
|
|
23
|
-
}
|
|
24
|
-
export {};
|
|
12
|
+
declare const Section: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
13
|
+
type Section = ReturnType<typeof Section>;
|
|
14
|
+
export default Section;
|