tyrell-components 1.0.0-RC13 → 1.0.0-RC14
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 +1 -1
- package/css/tyrell-theme.css +167 -178
- package/css/tyrell.css +19 -0
- package/dist/tyrell-theme.css +167 -178
- package/dist/tyrell.css +19 -0
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +20 -10
- package/lib/base/ty-component.js +21 -144
- package/lib/components/button.d.ts +2 -16
- package/lib/components/button.js +0 -36
- package/lib/components/calendar-month.d.ts +2 -48
- package/lib/components/calendar-month.js +4 -166
- package/lib/components/calendar-navigation.d.ts +3 -48
- package/lib/components/calendar-navigation.js +3 -126
- package/lib/components/calendar.d.ts +3 -80
- package/lib/components/calendar.js +8 -230
- package/lib/components/checkbox.d.ts +4 -71
- package/lib/components/checkbox.js +7 -151
- package/lib/components/copy.d.ts +3 -56
- package/lib/components/copy.js +1 -120
- package/lib/components/date-picker.d.ts +13 -162
- package/lib/components/date-picker.js +41 -592
- package/lib/components/file-upload.d.ts +9 -15
- package/lib/components/file-upload.js +19 -41
- package/lib/components/icon.d.ts +3 -24
- package/lib/components/icon.js +1 -90
- package/lib/components/input.d.ts +7 -107
- package/lib/components/input.js +5 -193
- package/lib/components/modal.d.ts +17 -26
- package/lib/components/modal.js +57 -201
- package/lib/components/option.d.ts +2 -9
- package/lib/components/option.js +0 -48
- package/lib/components/popup.d.ts +2 -17
- package/lib/components/popup.js +8 -139
- package/lib/components/radio.d.ts +3 -23
- package/lib/components/radio.js +10 -65
- package/lib/components/resize-observer.d.ts +3 -30
- package/lib/components/resize-observer.js +12 -46
- package/lib/components/scroll-container.d.ts +2 -12
- package/lib/components/scroll-container.js +3 -46
- package/lib/components/select.d.ts +22 -153
- package/lib/components/select.js +33 -590
- package/lib/components/selected-tags.d.ts +4 -47
- package/lib/components/selected-tags.js +1 -95
- package/lib/components/step.d.ts +1 -6
- package/lib/components/step.js +0 -6
- package/lib/components/switch.d.ts +0 -11
- package/lib/components/switch.js +2 -36
- package/lib/components/tab.d.ts +1 -6
- package/lib/components/tab.js +0 -7
- package/lib/components/tabs.d.ts +5 -63
- package/lib/components/tabs.js +20 -283
- package/lib/components/tag.d.ts +2 -36
- package/lib/components/tag.js +5 -105
- package/lib/components/textarea.d.ts +6 -86
- package/lib/components/textarea.js +2 -173
- package/lib/components/tooltip.d.ts +3 -11
- package/lib/components/tooltip.js +24 -160
- package/lib/components/wizard.d.ts +6 -54
- package/lib/components/wizard.js +15 -228
- package/lib/icons/fontawesome/brands.d.ts +0 -1
- package/lib/icons/fontawesome/brands.js +0 -8
- package/lib/icons/fontawesome/regular.d.ts +0 -1
- package/lib/icons/fontawesome/regular.js +0 -8
- package/lib/icons/fontawesome/solid.d.ts +0 -1
- package/lib/icons/fontawesome/solid.js +0 -8
- package/lib/icons/heroicons/micro.d.ts +0 -1
- package/lib/icons/heroicons/micro.js +0 -8
- package/lib/icons/heroicons/mini.d.ts +0 -1
- package/lib/icons/heroicons/mini.js +0 -8
- package/lib/icons/heroicons/outline.d.ts +0 -1
- package/lib/icons/heroicons/outline.js +0 -8
- package/lib/icons/heroicons/solid.d.ts +0 -1
- package/lib/icons/heroicons/solid.js +0 -8
- package/lib/icons/lucide.d.ts +0 -1
- package/lib/icons/lucide.js +0 -1872
- package/lib/icons/material/filled.d.ts +0 -1
- package/lib/icons/material/filled.js +0 -10
- package/lib/icons/material/outlined.d.ts +0 -1
- package/lib/icons/material/outlined.js +0 -10
- package/lib/icons/material/round.d.ts +0 -1
- package/lib/icons/material/round.js +0 -10
- package/lib/icons/material/sharp.d.ts +0 -1
- package/lib/icons/material/sharp.js +0 -10
- package/lib/icons/material/two-tone.d.ts +0 -1
- package/lib/icons/material/two-tone.js +0 -10
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -20
- package/lib/styles/button.d.ts +2 -20
- package/lib/styles/button.js +22 -122
- package/lib/styles/calendar-month.d.ts +1 -5
- package/lib/styles/calendar-month.js +4 -61
- package/lib/styles/calendar-navigation.d.ts +2 -6
- package/lib/styles/calendar-navigation.js +2 -27
- package/lib/styles/calendar.d.ts +1 -2
- package/lib/styles/calendar.js +1 -14
- package/lib/styles/checkbox.d.ts +0 -1
- package/lib/styles/checkbox.js +1 -23
- package/lib/styles/copy.d.ts +0 -1
- package/lib/styles/copy.js +2 -17
- package/lib/styles/custom-scrollbar.d.ts +1 -2
- package/lib/styles/custom-scrollbar.js +3 -18
- package/lib/styles/date-picker.d.ts +1 -5
- package/lib/styles/date-picker.js +35 -39
- package/lib/styles/file-upload.d.ts +1 -2
- package/lib/styles/file-upload.js +1 -16
- package/lib/styles/icon.d.ts +2 -6
- package/lib/styles/icon.js +7 -21
- package/lib/styles/input.d.ts +1 -6
- package/lib/styles/input.js +5 -54
- package/lib/styles/modal.d.ts +1 -2
- package/lib/styles/modal.js +21 -23
- package/lib/styles/option.d.ts +2 -6
- package/lib/styles/option.js +17 -12
- package/lib/styles/popup.d.ts +1 -2
- package/lib/styles/popup.js +26 -30
- package/lib/styles/radio.d.ts +0 -1
- package/lib/styles/radio.js +2 -16
- package/lib/styles/resize-observer.d.ts +1 -2
- package/lib/styles/resize-observer.js +0 -7
- package/lib/styles/scroll-container.d.ts +1 -2
- package/lib/styles/scroll-container.js +0 -19
- package/lib/styles/select-base.d.ts +0 -1
- package/lib/styles/select-base.js +68 -79
- package/lib/styles/select.d.ts +1 -2
- package/lib/styles/select.js +7 -15
- package/lib/styles/step.d.ts +1 -2
- package/lib/styles/step.js +0 -4
- package/lib/styles/switch.d.ts +0 -1
- package/lib/styles/switch.js +2 -20
- package/lib/styles/tab.d.ts +1 -2
- package/lib/styles/tab.js +0 -5
- package/lib/styles/tabs.d.ts +3 -11
- package/lib/styles/tabs.js +10 -48
- package/lib/styles/tag.d.ts +1 -5
- package/lib/styles/tag.js +2 -31
- package/lib/styles/textarea.d.ts +1 -2
- package/lib/styles/textarea.js +2 -45
- package/lib/styles/tooltip.d.ts +0 -1
- package/lib/styles/tooltip.js +0 -10
- package/lib/styles/wizard.d.ts +5 -21
- package/lib/styles/wizard.js +8 -88
- package/lib/types/common.d.ts +0 -2
- package/lib/types/common.js +0 -12
- package/lib/utils/calendar-utils.d.ts +4 -21
- package/lib/utils/calendar-utils.js +4 -177
- package/lib/utils/custom-scrollbar.d.ts +6 -20
- package/lib/utils/custom-scrollbar.js +1 -45
- package/lib/utils/flavor-sheet.d.ts +0 -1
- package/lib/utils/flavor-sheet.js +0 -23
- package/lib/utils/icon-registry.d.ts +0 -2
- package/lib/utils/icon-registry.js +1 -107
- package/lib/utils/icons.d.ts +0 -1
- package/lib/utils/icons.js +0 -9
- package/lib/utils/loader-registry.d.ts +0 -1
- package/lib/utils/loader-registry.js +0 -32
- package/lib/utils/locale.d.ts +2 -23
- package/lib/utils/locale.js +0 -86
- package/lib/utils/mobile.d.ts +0 -1
- package/lib/utils/mobile.js +0 -17
- package/lib/utils/number-format.d.ts +6 -3
- package/lib/utils/number-format.js +11 -67
- package/lib/utils/positioning.d.ts +50 -7
- package/lib/utils/positioning.js +52 -62
- package/lib/utils/property-capture.d.ts +5 -27
- package/lib/utils/property-capture.js +0 -108
- package/lib/utils/property-manager.d.ts +0 -1
- package/lib/utils/property-manager.js +0 -70
- package/lib/utils/resize-observer.d.ts +0 -1
- package/lib/utils/resize-observer.js +0 -36
- package/lib/utils/scroll-lock.d.ts +4 -11
- package/lib/utils/scroll-lock.js +0 -107
- package/lib/utils/styles.d.ts +0 -1
- package/lib/utils/styles.js +0 -24
- package/lib/version.d.ts +1 -2
- package/lib/version.js +1 -11
- package/package.json +2 -2
- package/lib/base/ty-component.d.ts.map +0 -1
- package/lib/base/ty-component.js.map +0 -1
- package/lib/components/button.d.ts.map +0 -1
- package/lib/components/button.js.map +0 -1
- package/lib/components/calendar-month.d.ts.map +0 -1
- package/lib/components/calendar-month.js.map +0 -1
- package/lib/components/calendar-navigation.d.ts.map +0 -1
- package/lib/components/calendar-navigation.js.map +0 -1
- package/lib/components/calendar.d.ts.map +0 -1
- package/lib/components/calendar.js.map +0 -1
- package/lib/components/checkbox.d.ts.map +0 -1
- package/lib/components/checkbox.js.map +0 -1
- package/lib/components/copy.d.ts.map +0 -1
- package/lib/components/copy.js.map +0 -1
- package/lib/components/date-picker.d.ts.map +0 -1
- package/lib/components/date-picker.js.map +0 -1
- package/lib/components/file-upload.d.ts.map +0 -1
- package/lib/components/file-upload.js.map +0 -1
- package/lib/components/icon.d.ts.map +0 -1
- package/lib/components/icon.js.map +0 -1
- package/lib/components/input.d.ts.map +0 -1
- package/lib/components/input.js.map +0 -1
- package/lib/components/modal.d.ts.map +0 -1
- package/lib/components/modal.js.map +0 -1
- package/lib/components/option.d.ts.map +0 -1
- package/lib/components/option.js.map +0 -1
- package/lib/components/popup.d.ts.map +0 -1
- package/lib/components/popup.js.map +0 -1
- package/lib/components/radio.d.ts.map +0 -1
- package/lib/components/radio.js.map +0 -1
- package/lib/components/resize-observer.d.ts.map +0 -1
- package/lib/components/resize-observer.js.map +0 -1
- package/lib/components/scroll-container.d.ts.map +0 -1
- package/lib/components/scroll-container.js.map +0 -1
- package/lib/components/select.d.ts.map +0 -1
- package/lib/components/select.js.map +0 -1
- package/lib/components/selected-tags.d.ts.map +0 -1
- package/lib/components/selected-tags.js.map +0 -1
- package/lib/components/step.d.ts.map +0 -1
- package/lib/components/step.js.map +0 -1
- package/lib/components/switch.d.ts.map +0 -1
- package/lib/components/switch.js.map +0 -1
- package/lib/components/tab.d.ts.map +0 -1
- package/lib/components/tab.js.map +0 -1
- package/lib/components/tabs.d.ts.map +0 -1
- package/lib/components/tabs.js.map +0 -1
- package/lib/components/tag.d.ts.map +0 -1
- package/lib/components/tag.js.map +0 -1
- package/lib/components/textarea.d.ts.map +0 -1
- package/lib/components/textarea.js.map +0 -1
- package/lib/components/tooltip.d.ts.map +0 -1
- package/lib/components/tooltip.js.map +0 -1
- package/lib/components/wizard.d.ts.map +0 -1
- package/lib/components/wizard.js.map +0 -1
- package/lib/icons/fontawesome/brands.d.ts.map +0 -1
- package/lib/icons/fontawesome/brands.js.map +0 -1
- package/lib/icons/fontawesome/regular.d.ts.map +0 -1
- package/lib/icons/fontawesome/regular.js.map +0 -1
- package/lib/icons/fontawesome/solid.d.ts.map +0 -1
- package/lib/icons/fontawesome/solid.js.map +0 -1
- package/lib/icons/heroicons/micro.d.ts.map +0 -1
- package/lib/icons/heroicons/micro.js.map +0 -1
- package/lib/icons/heroicons/mini.d.ts.map +0 -1
- package/lib/icons/heroicons/mini.js.map +0 -1
- package/lib/icons/heroicons/outline.d.ts.map +0 -1
- package/lib/icons/heroicons/outline.js.map +0 -1
- package/lib/icons/heroicons/solid.d.ts.map +0 -1
- package/lib/icons/heroicons/solid.js.map +0 -1
- package/lib/icons/lucide.d.ts.map +0 -1
- package/lib/icons/lucide.js.map +0 -1
- package/lib/icons/material/filled.d.ts.map +0 -1
- package/lib/icons/material/filled.js.map +0 -1
- package/lib/icons/material/outlined.d.ts.map +0 -1
- package/lib/icons/material/outlined.js.map +0 -1
- package/lib/icons/material/round.d.ts.map +0 -1
- package/lib/icons/material/round.js.map +0 -1
- package/lib/icons/material/sharp.d.ts.map +0 -1
- package/lib/icons/material/sharp.js.map +0 -1
- package/lib/icons/material/two-tone.d.ts.map +0 -1
- package/lib/icons/material/two-tone.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/styles/button.d.ts.map +0 -1
- package/lib/styles/button.js.map +0 -1
- package/lib/styles/calendar-month.d.ts.map +0 -1
- package/lib/styles/calendar-month.js.map +0 -1
- package/lib/styles/calendar-navigation.d.ts.map +0 -1
- package/lib/styles/calendar-navigation.js.map +0 -1
- package/lib/styles/calendar.d.ts.map +0 -1
- package/lib/styles/calendar.js.map +0 -1
- package/lib/styles/checkbox.d.ts.map +0 -1
- package/lib/styles/checkbox.js.map +0 -1
- package/lib/styles/copy.d.ts.map +0 -1
- package/lib/styles/copy.js.map +0 -1
- package/lib/styles/custom-scrollbar.d.ts.map +0 -1
- package/lib/styles/custom-scrollbar.js.map +0 -1
- package/lib/styles/date-picker.d.ts.map +0 -1
- package/lib/styles/date-picker.js.map +0 -1
- package/lib/styles/file-upload.d.ts.map +0 -1
- package/lib/styles/file-upload.js.map +0 -1
- package/lib/styles/icon.d.ts.map +0 -1
- package/lib/styles/icon.js.map +0 -1
- package/lib/styles/input.d.ts.map +0 -1
- package/lib/styles/input.js.map +0 -1
- package/lib/styles/modal.d.ts.map +0 -1
- package/lib/styles/modal.js.map +0 -1
- package/lib/styles/multiselect.d.ts +0 -8
- package/lib/styles/multiselect.d.ts.map +0 -1
- package/lib/styles/multiselect.js +0 -849
- package/lib/styles/multiselect.js.map +0 -1
- package/lib/styles/option.d.ts.map +0 -1
- package/lib/styles/option.js.map +0 -1
- package/lib/styles/popup.d.ts.map +0 -1
- package/lib/styles/popup.js.map +0 -1
- package/lib/styles/radio.d.ts.map +0 -1
- package/lib/styles/radio.js.map +0 -1
- package/lib/styles/resize-observer.d.ts.map +0 -1
- package/lib/styles/resize-observer.js.map +0 -1
- package/lib/styles/scroll-container.d.ts.map +0 -1
- package/lib/styles/scroll-container.js.map +0 -1
- package/lib/styles/select-base.d.ts.map +0 -1
- package/lib/styles/select-base.js.map +0 -1
- package/lib/styles/select.d.ts.map +0 -1
- package/lib/styles/select.js.map +0 -1
- package/lib/styles/step.d.ts.map +0 -1
- package/lib/styles/step.js.map +0 -1
- package/lib/styles/switch.d.ts.map +0 -1
- package/lib/styles/switch.js.map +0 -1
- package/lib/styles/tab.d.ts.map +0 -1
- package/lib/styles/tab.js.map +0 -1
- package/lib/styles/tabs.d.ts.map +0 -1
- package/lib/styles/tabs.js.map +0 -1
- package/lib/styles/tag.d.ts.map +0 -1
- package/lib/styles/tag.js.map +0 -1
- package/lib/styles/textarea.d.ts.map +0 -1
- package/lib/styles/textarea.js.map +0 -1
- package/lib/styles/tooltip.d.ts.map +0 -1
- package/lib/styles/tooltip.js.map +0 -1
- package/lib/styles/wizard.d.ts.map +0 -1
- package/lib/styles/wizard.js.map +0 -1
- package/lib/types/common.d.ts.map +0 -1
- package/lib/types/common.js.map +0 -1
- package/lib/utils/calendar-utils.d.ts.map +0 -1
- package/lib/utils/calendar-utils.js.map +0 -1
- package/lib/utils/custom-scrollbar.d.ts.map +0 -1
- package/lib/utils/custom-scrollbar.js.map +0 -1
- package/lib/utils/flavor-sheet.d.ts.map +0 -1
- package/lib/utils/flavor-sheet.js.map +0 -1
- package/lib/utils/icon-registry.d.ts.map +0 -1
- package/lib/utils/icon-registry.js.map +0 -1
- package/lib/utils/icons.d.ts.map +0 -1
- package/lib/utils/icons.js.map +0 -1
- package/lib/utils/loader-registry.d.ts.map +0 -1
- package/lib/utils/loader-registry.js.map +0 -1
- package/lib/utils/locale.d.ts.map +0 -1
- package/lib/utils/locale.js.map +0 -1
- package/lib/utils/mobile.d.ts.map +0 -1
- package/lib/utils/mobile.js.map +0 -1
- package/lib/utils/number-format.d.ts.map +0 -1
- package/lib/utils/number-format.js.map +0 -1
- package/lib/utils/parse-boolean.d.ts +0 -39
- package/lib/utils/parse-boolean.d.ts.map +0 -1
- package/lib/utils/parse-boolean.js +0 -58
- package/lib/utils/parse-boolean.js.map +0 -1
- package/lib/utils/positioning.d.ts.map +0 -1
- package/lib/utils/positioning.js.map +0 -1
- package/lib/utils/property-capture.d.ts.map +0 -1
- package/lib/utils/property-capture.js.map +0 -1
- package/lib/utils/property-manager.d.ts.map +0 -1
- package/lib/utils/property-manager.js.map +0 -1
- package/lib/utils/resize-observer.d.ts.map +0 -1
- package/lib/utils/resize-observer.js.map +0 -1
- package/lib/utils/scroll-lock.d.ts.map +0 -1
- package/lib/utils/scroll-lock.js.map +0 -1
- package/lib/utils/styles.d.ts.map +0 -1
- package/lib/utils/styles.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js.map +0 -1
package/lib/styles/wizard.d.ts
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Wizard Component Styles
|
|
3
3
|
*
|
|
4
|
-
* CSS Parts (
|
|
5
|
-
* -
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - panels-container: The content viewport
|
|
9
|
-
*
|
|
10
|
-
* Theming: four accent-alias knobs (one per state), four surface knobs
|
|
11
|
-
* (container chrome), and a small set of geometry/motion overrides.
|
|
12
|
-
*
|
|
13
|
-
* Per-state circles read their colors directly from the matching accent
|
|
14
|
-
* variable — no per-state `-bg` indirection. Override one of:
|
|
15
|
-
* --ty-wizard-active-accent (default: --ty-color-primary)
|
|
16
|
-
* --ty-wizard-completed-accent (default: --ty-color-success)
|
|
17
|
-
* --ty-wizard-error-accent (default: --ty-color-danger)
|
|
18
|
-
* --ty-wizard-pending-accent (default: --ty-color-neutral)
|
|
19
|
-
*
|
|
20
|
-
* For per-shade fine control, override the brand-layer's flavor seeds
|
|
21
|
-
* (--ty-color-primary, --ty-color-success-strong, etc.) — they cascade
|
|
22
|
-
* through here.
|
|
4
|
+
* CSS Parts (::part): indicators-wrapper, progress-line, step-circle,
|
|
5
|
+
* panels-container. Theming knobs are declared on :host below; per-state
|
|
6
|
+
* circles read the matching accent var directly (no `-bg` indirection), and
|
|
7
|
+
* the brand-layer flavor seeds cascade through for per-shade control.
|
|
23
8
|
*/
|
|
24
|
-
export declare const wizardStyles = "\n/* ============================================================================\n Theming Tokens \u2014 see file header for the override surface.\n Every default chains back to the brand layer / global scale tokens.\n ============================================================================ */\n\n:host {\n display: block;\n width: var(--ty-wizard-width, 100%); /* set by width attribute \u2014 not a public token */\n height: var(--ty-wizard-height, 700px); /* set by height attribute \u2014 not a public token */\n box-sizing: border-box;\n\n /* State accents \u2014 the primary override surface. One variable retints the\n * matching circle background, border, and glow. */\n --ty-wizard-active-accent: var(--ty-color-primary);\n --ty-wizard-completed-accent: var(--ty-color-success);\n --ty-wizard-error-accent: var(--ty-color-danger);\n --ty-wizard-pending-accent: var(--ty-color-neutral);\n\n /* Container chrome \u2014 routes through global scales. Override --ty-radius-lg\n * or --ty-shadow-md app-wide and the wizard follows; override these locally\n * to give the wizard a distinct look. */\n --ty-wizard-bg: var(--ty-surface-floating);\n --ty-wizard-border: var(--ty-border);\n --ty-wizard-radius: var(--ty-radius-lg, 12px);\n --ty-wizard-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));\n\n /* Header strip */\n --ty-wizard-header-bg: var(--ty-surface-content);\n --ty-wizard-header-border: var(--ty-border-soft, var(--ty-border));\n --ty-wizard-header-padding: 24px 24px 16px;\n\n /* Progress line */\n --ty-wizard-progress-track: var(--ty-border);\n --ty-wizard-progress-fill: var(--ty-wizard-completed-accent);\n --ty-wizard-progress-height: 2px;\n\n /* Motion \u2014 routes through global motion tokens if defined. */\n --ty-wizard-transition-duration: var(--ty-transition-duration, 300ms);\n --ty-wizard-transition-easing: var(--ty-transition-easing, ease-in-out);\n\n /* Circle geometry */\n --ty-wizard-circle-size: 32px;\n --ty-wizard-circle-border-width: 2px;\n\n /* Panels viewport */\n --ty-wizard-panels-bg: var(--ty-surface-elevated);\n\n /* Focus */\n --ty-wizard-focus-outline: var(--ty-wizard-active-accent);\n}\n\n.wizard-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n box-sizing: border-box;\n border-radius: var(--ty-wizard-radius);\n border: 1px solid var(--ty-wizard-border);\n background: var(--ty-wizard-bg);\n box-shadow: var(--ty-wizard-shadow);\n overflow: hidden;\n}\n\n/* ===================================== */\n/* Step Indicators Wrapper */\n/* ===================================== */\n\n.step-indicators-wrapper {\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n position: relative;\n padding: var(--ty-wizard-header-padding);\n border-bottom: 1px solid var(--ty-wizard-header-border);\n background: var(--ty-wizard-header-bg);\n}\n\n/* ===================================== */\n/* Progress Line (behind step circles) */\n/* ===================================== */\n\n.progress-line {\n position: absolute;\n /*\n * With equal-width indicators (flex: 1), each takes 100%/N of the width.\n * Circle centers sit at 50%/N from the left edge of each indicator.\n * Inset = 50% / step-count from each side keeps the line between circle centres.\n */\n left: calc(50% / var(--ty-wizard-step-count, 4));\n right: calc(50% / var(--ty-wizard-step-count, 4));\n top: calc(var(--ty-wizard-circle-size, 32px) / 2 - 1px);\n height: var(--ty-wizard-progress-height);\n background: var(--ty-wizard-progress-track);\n z-index: 0;\n pointer-events: none;\n transition: opacity var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n}\n\n.progress-overlay {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: var(--ty-wizard-progress-fill);\n transition: width var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n will-change: width;\n}\n\n/* ===================================== */\n/* Step Indicators Container */\n/* ===================================== */\n\n.step-indicators {\n display: flex;\n align-items: flex-start;\n position: relative;\n}\n\n/* ===================================== */\n/* Individual Step Indicator */\n/* ===================================== */\n\n.step-indicator {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n background: transparent;\n border: none;\n padding: 0;\n font: inherit;\n transition: opacity 200ms;\n flex: 1;\n min-width: 0;\n}\n\n.step-indicator[aria-disabled=\"true\"] {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.step-indicator:focus-visible {\n outline: 2px solid var(--ty-wizard-focus-outline);\n outline-offset: 4px;\n border-radius: 50%;\n}\n\n/* ===================================== */\n/* Step Circle */\n/* ===================================== */\n\n.step-circle {\n width: var(--ty-wizard-circle-size);\n height: var(--ty-wizard-circle-size);\n border-radius: 50%;\n border: var(--ty-wizard-circle-border-width) solid;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 10;\n transition: var(--ty-local-transition, all var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing));\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.step-circle[data-state=\"completed\"] {\n background: var(--ty-wizard-completed-accent);\n border-color: var(--ty-color-success-strong);\n /* Derived from the accent this circle actually paints, not from\n --ty-solid-success-fg: the two diverge in dark mode (--ty-solid-l\n dims solid fills by 0.25 L), which stranded white text at 3.5:1. */\n color: oklch(\n from var(--ty-wizard-completed-accent)\n clamp(0, (var(--ty-solid-fg-threshold, 0.6) - l) * 1000, 1) 0 0\n );\n box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-completed-accent) 12%, transparent);\n}\n\n.step-circle[data-state=\"active\"] {\n background: var(--ty-wizard-active-accent);\n border-color: var(--ty-color-primary-strong);\n color: oklch(\n from var(--ty-wizard-active-accent)\n clamp(0, (var(--ty-solid-fg-threshold, 0.6) - l) * 1000, 1) 0 0\n );\n box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-active-accent) 12%, transparent);\n}\n\n.step-circle[data-state=\"pending\"] {\n background: var(--ty-surface-elevated);\n border-color: var(--ty-border);\n color: var(--ty-color-neutral);\n}\n\n.step-circle[data-state=\"error\"] {\n background: var(--ty-wizard-error-accent);\n border-color: var(--ty-color-danger-strong);\n color: oklch(\n from var(--ty-wizard-error-accent)\n clamp(0, (var(--ty-solid-fg-threshold, 0.6) - l) * 1000, 1) 0 0\n );\n box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-error-accent) 12%, transparent);\n}\n\n/* ===================================== */\n/* Step Text Container */\n/* ===================================== */\n\n.step-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: center;\n}\n\n/* ===================================== */\n/* Step Label */\n/* ===================================== */\n\n.step-label {\n font-size: var(--ty-font-sm, 14px);\n font-weight: var(--ty-font-semibold, 600);\n color: var(--ty-color-neutral);\n transition: var(--ty-local-transition, color 200ms);\n}\n\n.step-indicator[aria-selected=\"true\"] .step-label {\n color: var(--ty-color-neutral-strong);\n}\n\n.step-indicator[aria-selected=\"false\"] .step-label {\n color: var(--ty-color-neutral);\n}\n\n/* ===================================== */\n/* Step Description */\n/* ===================================== */\n\n.step-description {\n font-size: var(--ty-font-xs, 12px);\n font-weight: var(--ty-font-normal, 400);\n color: var(--ty-color-neutral);\n transition: var(--ty-local-transition, color 200ms);\n text-align: center;\n max-width: 120px;\n}\n\n.step-indicator[aria-selected=\"true\"] .step-description {\n color: var(--ty-color-neutral-bold);\n}\n\n/* ===================================== */\n/* Custom Indicator Content via Slots */\n/* ===================================== */\n\n::slotted([slot^=\"indicator-\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n/* ===================================== */\n/* Panels Viewport */\n/* ===================================== */\n\n.panels-viewport {\n position: relative;\n flex: 1;\n overflow: hidden;\n min-height: 0;\n background: var(--ty-wizard-panels-bg);\n}\n\n/* ===================================== */\n/* Panels Wrapper (slides horizontally) */\n/* ===================================== */\n\n.panels-wrapper {\n display: flex;\n height: 100%;\n transition: transform var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n will-change: transform;\n}\n\n/* ===================================== */\n/* Slotted Step Panels */\n/* ===================================== */\n\n::slotted(ty-step) {\n width: var(--ty-wizard-width, 100%);\n height: 100%;\n flex-shrink: 0;\n}\n\n/* ===================================== */\n/* Accessibility & Motion Preferences */\n/* ===================================== */\n\n@media (prefers-reduced-motion: reduce) {\n .panels-wrapper {\n transition-duration: 0ms !important;\n }\n\n .progress-overlay {\n transition-duration: 0ms !important;\n }\n\n .step-circle {\n transition-duration: 0ms !important;\n }\n\n .progress-line {\n transition-duration: 0ms !important;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n";
|
|
25
|
-
//# sourceMappingURL=wizard.d.ts.map
|
|
9
|
+
export declare const wizardStyles = "\n/* Theming tokens \u2014 every default chains back to the brand layer / global\n scale tokens. */\n\n:host {\n display: block;\n width: var(--ty-wizard-width, 100%); /* set by width attribute \u2014 not a public token */\n height: var(--ty-wizard-height, 700px); /* set by height attribute \u2014 not a public token */\n box-sizing: border-box;\n\n /* State accents \u2014 the primary override surface. One variable retints the\n * matching circle background, border, and glow. */\n --ty-wizard-active-accent: var(--ty-color-primary);\n --ty-wizard-completed-accent: var(--ty-color-success);\n --ty-wizard-error-accent: var(--ty-color-danger);\n --ty-wizard-pending-accent: var(--ty-color-neutral);\n\n /* Container chrome \u2014 routes through global scales. Override --ty-radius-lg\n * or --ty-shadow-md app-wide and the wizard follows; override these locally\n * to give the wizard a distinct look. */\n --ty-wizard-bg: var(--ty-surface-floating);\n --ty-wizard-border: var(--ty-border);\n --ty-wizard-radius: var(--ty-radius-lg, 12px);\n --ty-wizard-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));\n\n --ty-wizard-header-bg: var(--ty-surface-content);\n --ty-wizard-header-border: var(--ty-border-soft, var(--ty-border));\n --ty-wizard-header-padding: 24px 24px 16px;\n\n --ty-wizard-progress-track: var(--ty-border);\n --ty-wizard-progress-fill: var(--ty-wizard-completed-accent);\n --ty-wizard-progress-height: 2px;\n\n /* Motion \u2014 routes through global motion tokens if defined. */\n --ty-wizard-transition-duration: var(--ty-transition-duration, 300ms);\n --ty-wizard-transition-easing: var(--ty-transition-easing, ease-in-out);\n\n --ty-wizard-circle-size: 32px;\n --ty-wizard-circle-border-width: 2px;\n\n --ty-wizard-panels-bg: var(--ty-surface-elevated);\n\n --ty-wizard-focus-outline: var(--ty-wizard-active-accent);\n}\n\n.wizard-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n box-sizing: border-box;\n border-radius: var(--ty-wizard-radius);\n border: 1px solid var(--ty-wizard-border);\n background: var(--ty-wizard-bg);\n box-shadow: var(--ty-wizard-shadow);\n overflow: hidden;\n}\n\n.step-indicators-wrapper {\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n position: relative;\n padding: var(--ty-wizard-header-padding);\n border-bottom: 1px solid var(--ty-wizard-header-border);\n background: var(--ty-wizard-header-bg);\n}\n\n/* Progress line, behind the step circles */\n.progress-line {\n position: absolute;\n /*\n * With equal-width indicators (flex: 1), each takes 100%/N of the width.\n * Circle centers sit at 50%/N from the left edge of each indicator.\n * Inset = 50% / step-count from each side keeps the line between circle centres.\n */\n left: calc(50% / var(--ty-wizard-step-count, 4));\n right: calc(50% / var(--ty-wizard-step-count, 4));\n top: calc(var(--ty-wizard-circle-size, 32px) / 2 - 1px);\n height: var(--ty-wizard-progress-height);\n background: var(--ty-wizard-progress-track);\n z-index: 0;\n pointer-events: none;\n transition: opacity var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n}\n\n.progress-overlay {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: var(--ty-wizard-progress-fill);\n transition: width var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n will-change: width;\n}\n\n.step-indicators {\n display: flex;\n align-items: flex-start;\n position: relative;\n}\n\n.step-indicator {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n background: transparent;\n border: none;\n padding: 0;\n font: inherit;\n transition: opacity 200ms;\n flex: 1;\n min-width: 0;\n}\n\n.step-indicator[aria-disabled=\"true\"] {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.step-indicator:focus-visible {\n outline: 2px solid var(--ty-wizard-focus-outline);\n outline-offset: 4px;\n border-radius: 50%;\n}\n\n.step-circle {\n width: var(--ty-wizard-circle-size);\n height: var(--ty-wizard-circle-size);\n border-radius: 50%;\n border: var(--ty-wizard-circle-border-width) solid;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 10;\n transition: var(--ty-local-transition, all var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing));\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.step-circle[data-state=\"completed\"] {\n background: var(--ty-wizard-completed-accent);\n border-color: var(--ty-color-success-strong);\n /* Derived from the accent this circle actually paints, not from\n --ty-solid-success-fg: the two diverge in dark mode (--ty-solid-l\n dims solid fills by 0.25 L), which stranded white text at 3.5:1. */\n color: oklch(\n from var(--ty-wizard-completed-accent)\n clamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n );\n box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-completed-accent) 12%, transparent);\n}\n\n.step-circle[data-state=\"active\"] {\n background: var(--ty-wizard-active-accent);\n border-color: var(--ty-color-primary-strong);\n color: oklch(\n from var(--ty-wizard-active-accent)\n clamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n );\n box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-active-accent) 12%, transparent);\n}\n\n.step-circle[data-state=\"pending\"] {\n background: var(--ty-surface-elevated);\n border-color: var(--ty-border);\n color: var(--ty-color-neutral);\n}\n\n.step-circle[data-state=\"error\"] {\n background: var(--ty-wizard-error-accent);\n border-color: var(--ty-color-danger-strong);\n color: oklch(\n from var(--ty-wizard-error-accent)\n clamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n );\n box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-error-accent) 12%, transparent);\n}\n\n.step-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: center;\n}\n\n.step-label {\n font-size: var(--ty-font-sm, 14px);\n font-weight: var(--ty-font-semibold, 600);\n color: var(--ty-color-neutral);\n transition: var(--ty-local-transition, color 200ms);\n}\n\n.step-indicator[aria-selected=\"true\"] .step-label {\n color: var(--ty-color-neutral-strong);\n}\n\n.step-indicator[aria-selected=\"false\"] .step-label {\n color: var(--ty-color-neutral);\n}\n\n.step-description {\n font-size: var(--ty-font-xs, 12px);\n font-weight: var(--ty-font-normal, 400);\n color: var(--ty-color-neutral);\n transition: var(--ty-local-transition, color 200ms);\n text-align: center;\n max-width: 120px;\n}\n\n.step-indicator[aria-selected=\"true\"] .step-description {\n color: var(--ty-color-neutral-bold);\n}\n\n/* Custom indicator content via slots */\n::slotted([slot^=\"indicator-\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n.panels-viewport {\n position: relative;\n flex: 1;\n overflow: hidden;\n min-height: 0;\n background: var(--ty-wizard-panels-bg);\n}\n\n/* Panels wrapper slides horizontally */\n.panels-wrapper {\n display: flex;\n height: 100%;\n transition: transform var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n will-change: transform;\n}\n\n::slotted(ty-step) {\n width: var(--ty-wizard-width, 100%);\n height: 100%;\n flex-shrink: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .panels-wrapper {\n transition-duration: 0ms !important;\n }\n\n .progress-overlay {\n transition-duration: 0ms !important;\n }\n\n .step-circle {\n transition-duration: 0ms !important;\n }\n\n .progress-line {\n transition-duration: 0ms !important;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n";
|
package/lib/styles/wizard.js
CHANGED
|
@@ -1,31 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wizard Component Styles
|
|
3
|
-
*
|
|
4
|
-
* CSS Parts (for styling via ::part):
|
|
5
|
-
* - indicators-wrapper: The header containing step indicators
|
|
6
|
-
* - progress-line: The background progress track
|
|
7
|
-
* - step-circle: Individual step circle indicators
|
|
8
|
-
* - panels-container: The content viewport
|
|
9
|
-
*
|
|
10
|
-
* Theming: four accent-alias knobs (one per state), four surface knobs
|
|
11
|
-
* (container chrome), and a small set of geometry/motion overrides.
|
|
12
|
-
*
|
|
13
|
-
* Per-state circles read their colors directly from the matching accent
|
|
14
|
-
* variable — no per-state `-bg` indirection. Override one of:
|
|
15
|
-
* --ty-wizard-active-accent (default: --ty-color-primary)
|
|
16
|
-
* --ty-wizard-completed-accent (default: --ty-color-success)
|
|
17
|
-
* --ty-wizard-error-accent (default: --ty-color-danger)
|
|
18
|
-
* --ty-wizard-pending-accent (default: --ty-color-neutral)
|
|
19
|
-
*
|
|
20
|
-
* For per-shade fine control, override the brand-layer's flavor seeds
|
|
21
|
-
* (--ty-color-primary, --ty-color-success-strong, etc.) — they cascade
|
|
22
|
-
* through here.
|
|
23
|
-
*/
|
|
24
1
|
export const wizardStyles = `
|
|
25
|
-
/*
|
|
26
|
-
|
|
27
|
-
Every default chains back to the brand layer / global scale tokens.
|
|
28
|
-
============================================================================ */
|
|
2
|
+
/* Theming tokens — every default chains back to the brand layer / global
|
|
3
|
+
scale tokens. */
|
|
29
4
|
|
|
30
5
|
:host {
|
|
31
6
|
display: block;
|
|
@@ -48,12 +23,10 @@ export const wizardStyles = `
|
|
|
48
23
|
--ty-wizard-radius: var(--ty-radius-lg, 12px);
|
|
49
24
|
--ty-wizard-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));
|
|
50
25
|
|
|
51
|
-
/* Header strip */
|
|
52
26
|
--ty-wizard-header-bg: var(--ty-surface-content);
|
|
53
27
|
--ty-wizard-header-border: var(--ty-border-soft, var(--ty-border));
|
|
54
28
|
--ty-wizard-header-padding: 24px 24px 16px;
|
|
55
29
|
|
|
56
|
-
/* Progress line */
|
|
57
30
|
--ty-wizard-progress-track: var(--ty-border);
|
|
58
31
|
--ty-wizard-progress-fill: var(--ty-wizard-completed-accent);
|
|
59
32
|
--ty-wizard-progress-height: 2px;
|
|
@@ -62,14 +35,11 @@ export const wizardStyles = `
|
|
|
62
35
|
--ty-wizard-transition-duration: var(--ty-transition-duration, 300ms);
|
|
63
36
|
--ty-wizard-transition-easing: var(--ty-transition-easing, ease-in-out);
|
|
64
37
|
|
|
65
|
-
/* Circle geometry */
|
|
66
38
|
--ty-wizard-circle-size: 32px;
|
|
67
39
|
--ty-wizard-circle-border-width: 2px;
|
|
68
40
|
|
|
69
|
-
/* Panels viewport */
|
|
70
41
|
--ty-wizard-panels-bg: var(--ty-surface-elevated);
|
|
71
42
|
|
|
72
|
-
/* Focus */
|
|
73
43
|
--ty-wizard-focus-outline: var(--ty-wizard-active-accent);
|
|
74
44
|
}
|
|
75
45
|
|
|
@@ -87,10 +57,6 @@ export const wizardStyles = `
|
|
|
87
57
|
overflow: hidden;
|
|
88
58
|
}
|
|
89
59
|
|
|
90
|
-
/* ===================================== */
|
|
91
|
-
/* Step Indicators Wrapper */
|
|
92
|
-
/* ===================================== */
|
|
93
|
-
|
|
94
60
|
.step-indicators-wrapper {
|
|
95
61
|
display: flex;
|
|
96
62
|
flex-direction: column;
|
|
@@ -101,10 +67,7 @@ export const wizardStyles = `
|
|
|
101
67
|
background: var(--ty-wizard-header-bg);
|
|
102
68
|
}
|
|
103
69
|
|
|
104
|
-
/*
|
|
105
|
-
/* Progress Line (behind step circles) */
|
|
106
|
-
/* ===================================== */
|
|
107
|
-
|
|
70
|
+
/* Progress line, behind the step circles */
|
|
108
71
|
.progress-line {
|
|
109
72
|
position: absolute;
|
|
110
73
|
/*
|
|
@@ -132,20 +95,12 @@ export const wizardStyles = `
|
|
|
132
95
|
will-change: width;
|
|
133
96
|
}
|
|
134
97
|
|
|
135
|
-
/* ===================================== */
|
|
136
|
-
/* Step Indicators Container */
|
|
137
|
-
/* ===================================== */
|
|
138
|
-
|
|
139
98
|
.step-indicators {
|
|
140
99
|
display: flex;
|
|
141
100
|
align-items: flex-start;
|
|
142
101
|
position: relative;
|
|
143
102
|
}
|
|
144
103
|
|
|
145
|
-
/* ===================================== */
|
|
146
|
-
/* Individual Step Indicator */
|
|
147
|
-
/* ===================================== */
|
|
148
|
-
|
|
149
104
|
.step-indicator {
|
|
150
105
|
display: flex;
|
|
151
106
|
flex-direction: column;
|
|
@@ -173,10 +128,6 @@ export const wizardStyles = `
|
|
|
173
128
|
border-radius: 50%;
|
|
174
129
|
}
|
|
175
130
|
|
|
176
|
-
/* ===================================== */
|
|
177
|
-
/* Step Circle */
|
|
178
|
-
/* ===================================== */
|
|
179
|
-
|
|
180
131
|
.step-circle {
|
|
181
132
|
width: var(--ty-wizard-circle-size);
|
|
182
133
|
height: var(--ty-wizard-circle-size);
|
|
@@ -200,7 +151,7 @@ export const wizardStyles = `
|
|
|
200
151
|
dims solid fills by 0.25 L), which stranded white text at 3.5:1. */
|
|
201
152
|
color: oklch(
|
|
202
153
|
from var(--ty-wizard-completed-accent)
|
|
203
|
-
clamp(0, (var(--ty-solid-fg-threshold, 0.
|
|
154
|
+
clamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0
|
|
204
155
|
);
|
|
205
156
|
box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-completed-accent) 12%, transparent);
|
|
206
157
|
}
|
|
@@ -210,7 +161,7 @@ export const wizardStyles = `
|
|
|
210
161
|
border-color: var(--ty-color-primary-strong);
|
|
211
162
|
color: oklch(
|
|
212
163
|
from var(--ty-wizard-active-accent)
|
|
213
|
-
clamp(0, (var(--ty-solid-fg-threshold, 0.
|
|
164
|
+
clamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0
|
|
214
165
|
);
|
|
215
166
|
box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-active-accent) 12%, transparent);
|
|
216
167
|
}
|
|
@@ -226,15 +177,11 @@ export const wizardStyles = `
|
|
|
226
177
|
border-color: var(--ty-color-danger-strong);
|
|
227
178
|
color: oklch(
|
|
228
179
|
from var(--ty-wizard-error-accent)
|
|
229
|
-
clamp(0, (var(--ty-solid-fg-threshold, 0.
|
|
180
|
+
clamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0
|
|
230
181
|
);
|
|
231
182
|
box-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-error-accent) 12%, transparent);
|
|
232
183
|
}
|
|
233
184
|
|
|
234
|
-
/* ===================================== */
|
|
235
|
-
/* Step Text Container */
|
|
236
|
-
/* ===================================== */
|
|
237
|
-
|
|
238
185
|
.step-text {
|
|
239
186
|
display: flex;
|
|
240
187
|
flex-direction: column;
|
|
@@ -242,10 +189,6 @@ export const wizardStyles = `
|
|
|
242
189
|
align-items: center;
|
|
243
190
|
}
|
|
244
191
|
|
|
245
|
-
/* ===================================== */
|
|
246
|
-
/* Step Label */
|
|
247
|
-
/* ===================================== */
|
|
248
|
-
|
|
249
192
|
.step-label {
|
|
250
193
|
font-size: var(--ty-font-sm, 14px);
|
|
251
194
|
font-weight: var(--ty-font-semibold, 600);
|
|
@@ -261,10 +204,6 @@ export const wizardStyles = `
|
|
|
261
204
|
color: var(--ty-color-neutral);
|
|
262
205
|
}
|
|
263
206
|
|
|
264
|
-
/* ===================================== */
|
|
265
|
-
/* Step Description */
|
|
266
|
-
/* ===================================== */
|
|
267
|
-
|
|
268
207
|
.step-description {
|
|
269
208
|
font-size: var(--ty-font-xs, 12px);
|
|
270
209
|
font-weight: var(--ty-font-normal, 400);
|
|
@@ -278,10 +217,7 @@ export const wizardStyles = `
|
|
|
278
217
|
color: var(--ty-color-neutral-bold);
|
|
279
218
|
}
|
|
280
219
|
|
|
281
|
-
/*
|
|
282
|
-
/* Custom Indicator Content via Slots */
|
|
283
|
-
/* ===================================== */
|
|
284
|
-
|
|
220
|
+
/* Custom indicator content via slots */
|
|
285
221
|
::slotted([slot^="indicator-"]) {
|
|
286
222
|
display: flex;
|
|
287
223
|
align-items: center;
|
|
@@ -290,10 +226,6 @@ export const wizardStyles = `
|
|
|
290
226
|
height: 100%;
|
|
291
227
|
}
|
|
292
228
|
|
|
293
|
-
/* ===================================== */
|
|
294
|
-
/* Panels Viewport */
|
|
295
|
-
/* ===================================== */
|
|
296
|
-
|
|
297
229
|
.panels-viewport {
|
|
298
230
|
position: relative;
|
|
299
231
|
flex: 1;
|
|
@@ -302,10 +234,7 @@ export const wizardStyles = `
|
|
|
302
234
|
background: var(--ty-wizard-panels-bg);
|
|
303
235
|
}
|
|
304
236
|
|
|
305
|
-
/*
|
|
306
|
-
/* Panels Wrapper (slides horizontally) */
|
|
307
|
-
/* ===================================== */
|
|
308
|
-
|
|
237
|
+
/* Panels wrapper slides horizontally */
|
|
309
238
|
.panels-wrapper {
|
|
310
239
|
display: flex;
|
|
311
240
|
height: 100%;
|
|
@@ -313,20 +242,12 @@ export const wizardStyles = `
|
|
|
313
242
|
will-change: transform;
|
|
314
243
|
}
|
|
315
244
|
|
|
316
|
-
/* ===================================== */
|
|
317
|
-
/* Slotted Step Panels */
|
|
318
|
-
/* ===================================== */
|
|
319
|
-
|
|
320
245
|
::slotted(ty-step) {
|
|
321
246
|
width: var(--ty-wizard-width, 100%);
|
|
322
247
|
height: 100%;
|
|
323
248
|
flex-shrink: 0;
|
|
324
249
|
}
|
|
325
250
|
|
|
326
|
-
/* ===================================== */
|
|
327
|
-
/* Accessibility & Motion Preferences */
|
|
328
|
-
/* ===================================== */
|
|
329
|
-
|
|
330
251
|
@media (prefers-reduced-motion: reduce) {
|
|
331
252
|
.panels-wrapper {
|
|
332
253
|
transition-duration: 0ms !important;
|
|
@@ -357,4 +278,3 @@ export const wizardStyles = `
|
|
|
357
278
|
border-width: 0;
|
|
358
279
|
}
|
|
359
280
|
`;
|
|
360
|
-
//# sourceMappingURL=wizard.js.map
|
package/lib/types/common.d.ts
CHANGED
|
@@ -50,7 +50,6 @@ export interface TyButtonElement extends TyBaseElement {
|
|
|
50
50
|
/** Button type for forms */
|
|
51
51
|
type?: 'button' | 'submit' | 'reset';
|
|
52
52
|
}
|
|
53
|
-
/** CSS style content */
|
|
54
53
|
/** Icon size variants */
|
|
55
54
|
export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '12' | '14' | '16' | '18' | '20' | '24' | '32' | '48' | '64' | '80' | '96';
|
|
56
55
|
/** Icon animation tempo */
|
|
@@ -141,4 +140,3 @@ export interface StyleContent {
|
|
|
141
140
|
/** Optional style ID for caching */
|
|
142
141
|
id?: string;
|
|
143
142
|
}
|
|
144
|
-
//# sourceMappingURL=common.d.ts.map
|
package/lib/types/common.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ty Component Common Types
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Built-in semantic color flavor names. Append `+` for a stronger shade or `-`
|
|
6
|
-
* for a softer shade — e.g. `primary`, `primary+`, `primary-`. Matches the
|
|
7
|
-
* design system's `ty-bg-primary+` / `ty-text-primary-` class convention.
|
|
8
|
-
*/
|
|
9
|
-
/* `secondary` was removed in TC37 — the built-in set is semantic-only.
|
|
10
|
-
* An aesthetic second accent is one flavor-pack away (see CSS_GUIDE →
|
|
11
|
-
* Custom Flavors); markup using flavor="secondary" degrades to neutral. */
|
|
12
1
|
export const FLAVORS = [
|
|
13
2
|
'primary',
|
|
14
3
|
'success',
|
|
@@ -16,4 +5,3 @@ export const FLAVORS = [
|
|
|
16
5
|
'warning',
|
|
17
6
|
'neutral',
|
|
18
7
|
];
|
|
19
|
-
//# sourceMappingURL=common.js.map
|
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Calendar
|
|
2
|
+
* Calendar month generation and localization (native Date API only).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Key Features:
|
|
8
|
-
* - 42-day calendar grid generation (6 weeks × 7 days)
|
|
9
|
-
* - Monday-first week ordering
|
|
10
|
-
* - Rich day context with metadata
|
|
11
|
-
* - Localized weekday names
|
|
12
|
-
* - No external dependencies (native Date API only)
|
|
13
|
-
*
|
|
14
|
-
* Note on Timestamps:
|
|
15
|
-
* - `value`: UTC timestamp at midnight UTC (timezone-independent, use for storage/server)
|
|
16
|
-
* - `localValue`: Local timestamp at midnight local time (use for display/local calculations)
|
|
17
|
-
* - `year/month/dayInMonth`: Calendar date components (user's mental model)
|
|
18
|
-
*
|
|
19
|
-
* Example for October 13, 2025:
|
|
20
|
-
* - value = Date.UTC(2025, 9, 13) = consistent worldwide
|
|
21
|
-
* - localValue = new Date(2025, 9, 13).getTime() = varies by timezone
|
|
22
|
-
* - Both represent the same calendar date, different moments in time
|
|
4
|
+
* Timestamps: `value` is UTC midnight (timezone-independent, for storage/server),
|
|
5
|
+
* `localValue` is local midnight (for display/local math). Both denote the same
|
|
6
|
+
* calendar date but are different moments in time.
|
|
23
7
|
*/
|
|
24
8
|
/**
|
|
25
9
|
* Rich context for a single calendar day
|
|
@@ -125,4 +109,3 @@ export declare function parseISODate(isoString: string): {
|
|
|
125
109
|
month: number;
|
|
126
110
|
day: number;
|
|
127
111
|
} | null;
|
|
128
|
-
//# sourceMappingURL=calendar-utils.d.ts.map
|
|
@@ -1,89 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calendar Utilities
|
|
3
|
-
*
|
|
4
|
-
* Pure TypeScript utilities for calendar month generation and localization.
|
|
5
|
-
* Ported from ClojureScript ty/date/core.cljs
|
|
6
|
-
*
|
|
7
|
-
* Key Features:
|
|
8
|
-
* - 42-day calendar grid generation (6 weeks × 7 days)
|
|
9
|
-
* - Monday-first week ordering
|
|
10
|
-
* - Rich day context with metadata
|
|
11
|
-
* - Localized weekday names
|
|
12
|
-
* - No external dependencies (native Date API only)
|
|
13
|
-
*
|
|
14
|
-
* Note on Timestamps:
|
|
15
|
-
* - `value`: UTC timestamp at midnight UTC (timezone-independent, use for storage/server)
|
|
16
|
-
* - `localValue`: Local timestamp at midnight local time (use for display/local calculations)
|
|
17
|
-
* - `year/month/dayInMonth`: Calendar date components (user's mental model)
|
|
18
|
-
*
|
|
19
|
-
* Example for October 13, 2025:
|
|
20
|
-
* - value = Date.UTC(2025, 9, 13) = consistent worldwide
|
|
21
|
-
* - localValue = new Date(2025, 9, 13).getTime() = varies by timezone
|
|
22
|
-
* - Both represent the same calendar date, different moments in time
|
|
23
|
-
*/
|
|
24
|
-
// ============================================================================
|
|
25
|
-
// Validation Functions
|
|
26
|
-
// ============================================================================
|
|
27
|
-
/**
|
|
28
|
-
* Validate month value (1-12)
|
|
29
|
-
*/
|
|
30
1
|
function validateMonth(month) {
|
|
31
2
|
if (!Number.isInteger(month) || month < 1 || month > 12) {
|
|
32
3
|
throw new RangeError(`Invalid month: ${month}. Must be an integer between 1 and 12.`);
|
|
33
4
|
}
|
|
34
5
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Validate year value (reasonable range)
|
|
37
|
-
*/
|
|
38
6
|
function validateYear(year) {
|
|
39
7
|
if (!Number.isInteger(year) || year < 1 || year > 9999) {
|
|
40
8
|
throw new RangeError(`Invalid year: ${year}. Must be an integer between 1 and 9999.`);
|
|
41
9
|
}
|
|
42
10
|
}
|
|
43
|
-
// ============================================================================
|
|
44
|
-
// Helper Functions
|
|
45
|
-
// ============================================================================
|
|
46
|
-
/**
|
|
47
|
-
* Check if two dates are on the same day (ignoring time)
|
|
48
|
-
* Works in local timezone
|
|
49
|
-
*/
|
|
50
11
|
function isSameDay(date1, date2) {
|
|
51
12
|
return date1.getFullYear() === date2.getFullYear()
|
|
52
13
|
&& date1.getMonth() === date2.getMonth()
|
|
53
14
|
&& date1.getDate() === date2.getDate();
|
|
54
15
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Create a date at midnight local time
|
|
57
|
-
* This ensures consistent behavior across the application
|
|
58
|
-
*/
|
|
59
16
|
function createMidnightDate(year, month, day) {
|
|
60
17
|
return new Date(year, month - 1, day, 0, 0, 0, 0);
|
|
61
18
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Get today's date at midnight local time
|
|
64
|
-
* Used for consistent "today" detection
|
|
65
|
-
*/
|
|
66
19
|
function getTodayMidnight() {
|
|
67
20
|
const now = new Date();
|
|
68
21
|
return new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
|
|
69
22
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Create a DayContext from a Date object
|
|
72
|
-
*
|
|
73
|
-
* @param date - The date to create context for (should be at midnight)
|
|
74
|
-
* @param targetYear - The year of the calendar month being displayed
|
|
75
|
-
* @param targetMonth - The month (1-12) of the calendar month being displayed
|
|
76
|
-
* @param selection - Optional selection state from calendar
|
|
77
|
-
* @returns Rich day context with metadata
|
|
78
|
-
*/
|
|
79
23
|
function createDayContext(date, targetYear, targetMonth, selection) {
|
|
80
24
|
const year = date.getFullYear();
|
|
81
|
-
const month = date.getMonth() + 1;
|
|
25
|
+
const month = date.getMonth() + 1;
|
|
82
26
|
const dayInMonth = date.getDate();
|
|
83
|
-
const dayOfWeek = date.getDay();
|
|
84
|
-
// Check if this day is from a different month
|
|
27
|
+
const dayOfWeek = date.getDay();
|
|
85
28
|
const isOtherMonth = year !== targetYear || month !== targetMonth;
|
|
86
|
-
// Determine if previous or next month
|
|
87
29
|
let isPrevMonth = false;
|
|
88
30
|
let isNextMonth = false;
|
|
89
31
|
if (isOtherMonth) {
|
|
@@ -94,16 +36,11 @@ function createDayContext(date, targetYear, targetMonth, selection) {
|
|
|
94
36
|
isNextMonth = true;
|
|
95
37
|
}
|
|
96
38
|
}
|
|
97
|
-
// Check if today (compare dates at midnight for consistency)
|
|
98
39
|
const todayMidnight = getTodayMidnight();
|
|
99
40
|
const isToday = isSameDay(date, todayMidnight);
|
|
100
|
-
// Check if this day is selected
|
|
101
41
|
const isSelected = selection?.year === year
|
|
102
42
|
&& selection?.month === month
|
|
103
43
|
&& selection?.day === dayInMonth;
|
|
104
|
-
// Calculate both UTC and local timestamps
|
|
105
|
-
// value: UTC midnight (consistent worldwide for the same date)
|
|
106
|
-
// localValue: Local midnight (respects user's timezone)
|
|
107
44
|
const utcValue = Date.UTC(year, month - 1, dayInMonth, 0, 0, 0, 0);
|
|
108
45
|
const localValue = date.getTime();
|
|
109
46
|
return {
|
|
@@ -123,64 +60,23 @@ function createDayContext(date, targetYear, targetMonth, selection) {
|
|
|
123
60
|
selectedDay: selection?.day,
|
|
124
61
|
};
|
|
125
62
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Get the Monday at or before a given date
|
|
128
|
-
* (Monday = start of week in ISO 8601)
|
|
129
|
-
*
|
|
130
|
-
* @param date - Any date
|
|
131
|
-
* @returns The Monday of that week at midnight
|
|
132
|
-
*/
|
|
133
63
|
function getMondayOfWeek(date) {
|
|
134
|
-
const dayOfWeek = date.getDay();
|
|
135
|
-
// Calculate days to subtract to get to Monday
|
|
136
|
-
// Sunday (0) → go back 6 days
|
|
137
|
-
// Monday (1) → go back 0 days
|
|
138
|
-
// Tuesday (2) → go back 1 day
|
|
139
|
-
// ...
|
|
64
|
+
const dayOfWeek = date.getDay();
|
|
140
65
|
const daysToMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
|
|
141
|
-
// Create new date at Monday midnight
|
|
142
66
|
const monday = new Date(date);
|
|
143
67
|
monday.setDate(date.getDate() - daysToMonday);
|
|
144
|
-
monday.setHours(0, 0, 0, 0);
|
|
68
|
+
monday.setHours(0, 0, 0, 0);
|
|
145
69
|
return monday;
|
|
146
70
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Get the start date for the calendar grid
|
|
149
|
-
* (The Monday at or before the first day of the month)
|
|
150
|
-
*
|
|
151
|
-
* @param year - Year
|
|
152
|
-
* @param month - Month (1-12)
|
|
153
|
-
* @returns The Monday that starts the calendar grid
|
|
154
|
-
*/
|
|
155
71
|
function getMonthGridStart(year, month) {
|
|
156
|
-
// Get first day of month at midnight (month is 1-based, Date constructor is 0-based)
|
|
157
72
|
const firstDay = createMidnightDate(year, month, 1);
|
|
158
|
-
// Get the Monday of that week
|
|
159
73
|
return getMondayOfWeek(firstDay);
|
|
160
74
|
}
|
|
161
|
-
/**
|
|
162
|
-
* Add days to a date safely
|
|
163
|
-
* Creates a new date without mutating the original
|
|
164
|
-
*
|
|
165
|
-
* @param date - Starting date
|
|
166
|
-
* @param days - Number of days to add
|
|
167
|
-
* @returns New date with days added
|
|
168
|
-
*/
|
|
169
75
|
function addDays(date, days) {
|
|
170
76
|
const result = new Date(date);
|
|
171
77
|
result.setDate(result.getDate() + days);
|
|
172
78
|
return result;
|
|
173
79
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Generate N consecutive days starting from a date
|
|
176
|
-
*
|
|
177
|
-
* @param startDate - Starting date
|
|
178
|
-
* @param count - Number of days to generate
|
|
179
|
-
* @param targetYear - Year of the calendar month
|
|
180
|
-
* @param targetMonth - Month (1-12) of the calendar month
|
|
181
|
-
* @param selection - Optional selection state to include in day contexts
|
|
182
|
-
* @returns Array of day contexts
|
|
183
|
-
*/
|
|
184
80
|
function generateDays(startDate, count, targetYear, targetMonth, selection) {
|
|
185
81
|
const days = [];
|
|
186
82
|
for (let i = 0; i < count; i++) {
|
|
@@ -189,94 +85,28 @@ function generateDays(startDate, count, targetYear, targetMonth, selection) {
|
|
|
189
85
|
}
|
|
190
86
|
return days;
|
|
191
87
|
}
|
|
192
|
-
// ============================================================================
|
|
193
|
-
// Main Calendar Functions
|
|
194
|
-
// ============================================================================
|
|
195
|
-
/**
|
|
196
|
-
* Generate a 42-day calendar grid for a given month
|
|
197
|
-
*
|
|
198
|
-
* Returns 6 weeks (42 days) starting from the Monday at or before
|
|
199
|
-
* the first day of the month. This ensures a complete calendar view
|
|
200
|
-
* with days from the previous and next months as needed.
|
|
201
|
-
*
|
|
202
|
-
* @param year - Year (e.g., 2025)
|
|
203
|
-
* @param month - Month (1-12, 1 = January)
|
|
204
|
-
* @param selection - Optional selection state to include in day contexts
|
|
205
|
-
* @returns Array of 42 day contexts with rich metadata
|
|
206
|
-
*
|
|
207
|
-
* @throws {RangeError} If year or month are invalid
|
|
208
|
-
*
|
|
209
|
-
* @example
|
|
210
|
-
* const days = getCalendarMonthDays(2025, 10); // October 2025
|
|
211
|
-
* console.log(days.length); // 42
|
|
212
|
-
* console.log(days[0].dayInMonth); // First day shown (might be from September)
|
|
213
|
-
*/
|
|
214
88
|
export function getCalendarMonthDays(year, month, selection) {
|
|
215
|
-
// Validate inputs
|
|
216
89
|
validateYear(year);
|
|
217
90
|
validateMonth(month);
|
|
218
91
|
const startDate = getMonthGridStart(year, month);
|
|
219
92
|
return generateDays(startDate, 42, year, month, selection);
|
|
220
93
|
}
|
|
221
|
-
/**
|
|
222
|
-
* Get localized weekday names in Monday-first order
|
|
223
|
-
*
|
|
224
|
-
* Note: Intl.DateTimeFormat returns Sunday-first by default,
|
|
225
|
-
* so we reorder to Monday-first: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]
|
|
226
|
-
*
|
|
227
|
-
* @param locale - Locale string (e.g., "en-US", "de-DE", "ja-JP")
|
|
228
|
-
* @param style - Display style: "long" (Monday), "short" (Mon), "narrow" (M)
|
|
229
|
-
* @returns Array of 7 weekday names starting with Monday
|
|
230
|
-
*
|
|
231
|
-
* @example
|
|
232
|
-
* getLocalizedWeekdays("en-US", "short")
|
|
233
|
-
* // Returns: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
|
234
|
-
*
|
|
235
|
-
* getLocalizedWeekdays("de-DE", "long")
|
|
236
|
-
* // Returns: ["Montag", "Dienstag", "Mittwoch", ...]
|
|
237
|
-
*/
|
|
238
94
|
export function getLocalizedWeekdays(locale, style = 'short') {
|
|
239
95
|
const formatter = new Intl.DateTimeFormat(locale, { weekday: style });
|
|
240
|
-
// Create a Sunday (base date) - January 7, 2024 is a Sunday
|
|
241
96
|
const sunday = new Date(2024, 0, 7);
|
|
242
|
-
// Generate Sunday-first array: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
|
243
97
|
const sundayFirst = Array.from({ length: 7 }, (_, i) => {
|
|
244
98
|
const date = addDays(sunday, i);
|
|
245
99
|
return formatter.format(date);
|
|
246
100
|
});
|
|
247
|
-
// Reorder to Monday-first: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]
|
|
248
101
|
const [firstDay, ...rest] = sundayFirst;
|
|
249
102
|
return [...rest, firstDay];
|
|
250
103
|
}
|
|
251
|
-
// ============================================================================
|
|
252
|
-
// Utility Functions (for testing and debugging)
|
|
253
|
-
// ============================================================================
|
|
254
|
-
/**
|
|
255
|
-
* Get month name in specified locale
|
|
256
|
-
*
|
|
257
|
-
* @param month - Month (1-12)
|
|
258
|
-
* @param locale - Locale string
|
|
259
|
-
* @param style - Display style
|
|
260
|
-
* @returns Localized month name
|
|
261
|
-
*
|
|
262
|
-
* @throws {RangeError} If month is invalid
|
|
263
|
-
*/
|
|
264
104
|
export function getMonthName(month, locale = 'en-US', style = 'long') {
|
|
265
105
|
validateMonth(month);
|
|
266
106
|
const date = new Date(2024, month - 1, 1);
|
|
267
107
|
const formatter = new Intl.DateTimeFormat(locale, { month: style });
|
|
268
108
|
return formatter.format(date);
|
|
269
109
|
}
|
|
270
|
-
/**
|
|
271
|
-
* Parse an ISO date string (YYYY-MM-DD) into year, month, day components
|
|
272
|
-
*
|
|
273
|
-
* @param isoString - ISO date string (YYYY-MM-DD)
|
|
274
|
-
* @returns Object with year, month (1-12), and day, or null if invalid
|
|
275
|
-
*
|
|
276
|
-
* @example
|
|
277
|
-
* parseISODate("2025-10-13")
|
|
278
|
-
* // Returns: { year: 2025, month: 10, day: 13 }
|
|
279
|
-
*/
|
|
280
110
|
export function parseISODate(isoString) {
|
|
281
111
|
const match = isoString.match(/^(\d{4})-(\d{2})-(\d{2})$/);
|
|
282
112
|
if (!match)
|
|
@@ -284,18 +114,15 @@ export function parseISODate(isoString) {
|
|
|
284
114
|
const year = parseInt(match[1], 10);
|
|
285
115
|
const month = parseInt(match[2], 10);
|
|
286
116
|
const day = parseInt(match[3], 10);
|
|
287
|
-
// Validate ranges
|
|
288
117
|
if (year < 1 || year > 9999)
|
|
289
118
|
return null;
|
|
290
119
|
if (month < 1 || month > 12)
|
|
291
120
|
return null;
|
|
292
121
|
if (day < 1 || day > 31)
|
|
293
122
|
return null;
|
|
294
|
-
// Check if date is valid (handles Feb 30, etc.)
|
|
295
123
|
const date = new Date(year, month - 1, day);
|
|
296
124
|
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
297
125
|
return null;
|
|
298
126
|
}
|
|
299
127
|
return { year, month, day };
|
|
300
128
|
}
|
|
301
|
-
//# sourceMappingURL=calendar-utils.js.map
|