tyrell-components 1.0.0-RC12 → 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 +2 -1
- package/css/tyrell-colors-static.css +316 -0
- package/css/tyrell-theme.css +1443 -0
- package/css/tyrell.css +127 -423
- package/dist/tyrell-colors-static.css +316 -0
- package/dist/tyrell-theme.css +1443 -0
- package/dist/tyrell.css +127 -423
- 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 +9 -16
- package/lib/components/button.js +12 -37
- package/lib/components/calendar-month.d.ts +17 -46
- package/lib/components/calendar-month.js +97 -145
- package/lib/components/calendar-navigation.d.ts +3 -48
- package/lib/components/calendar-navigation.js +3 -126
- package/lib/components/calendar.d.ts +6 -81
- package/lib/components/calendar.js +24 -236
- package/lib/components/checkbox.d.ts +8 -74
- package/lib/components/checkbox.js +21 -177
- package/lib/components/copy.d.ts +7 -59
- package/lib/components/copy.js +19 -137
- package/lib/components/date-picker.d.ts +23 -161
- package/lib/components/date-picker.js +127 -588
- 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 +10 -109
- package/lib/components/input.js +24 -209
- package/lib/components/modal.d.ts +17 -26
- package/lib/components/modal.js +67 -192
- package/lib/components/option.d.ts +2 -20
- package/lib/components/option.js +1 -148
- package/lib/components/popup.d.ts +2 -17
- package/lib/components/popup.js +35 -132
- package/lib/components/radio.d.ts +7 -24
- package/lib/components/radio.js +24 -68
- 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 +130 -151
- package/lib/components/select.js +327 -516
- package/lib/components/selected-tags.d.ts +8 -38
- package/lib/components/selected-tags.js +20 -78
- package/lib/components/step.d.ts +1 -6
- package/lib/components/step.js +0 -6
- package/lib/components/switch.d.ts +4 -14
- package/lib/components/switch.js +15 -61
- 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 +159 -267
- 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 +7 -13
- package/lib/components/tooltip.js +83 -180
- package/lib/components/wizard.d.ts +6 -54
- package/lib/components/wizard.js +27 -221
- 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 +2 -2
- package/lib/index.js +2 -21
- package/lib/styles/button.d.ts +19 -7
- package/lib/styles/button.js +180 -77
- package/lib/styles/calendar-month.d.ts +4 -6
- package/lib/styles/calendar-month.js +57 -59
- package/lib/styles/calendar-navigation.d.ts +2 -6
- package/lib/styles/calendar-navigation.js +3 -28
- package/lib/styles/calendar.d.ts +1 -2
- package/lib/styles/calendar.js +1 -14
- package/lib/styles/checkbox.d.ts +3 -2
- package/lib/styles/checkbox.js +24 -68
- package/lib/styles/copy.d.ts +3 -2
- package/lib/styles/copy.js +25 -17
- package/lib/styles/custom-scrollbar.d.ts +1 -2
- package/lib/styles/custom-scrollbar.js +5 -20
- package/lib/styles/date-picker.d.ts +4 -6
- package/lib/styles/date-picker.js +80 -130
- package/lib/styles/file-upload.d.ts +1 -2
- package/lib/styles/file-upload.js +4 -19
- package/lib/styles/icon.d.ts +2 -6
- package/lib/styles/icon.js +7 -21
- package/lib/styles/input.d.ts +4 -7
- package/lib/styles/input.js +55 -160
- 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 -63
- package/lib/styles/popup.d.ts +1 -2
- package/lib/styles/popup.js +26 -30
- package/lib/styles/radio.d.ts +3 -2
- package/lib/styles/radio.js +21 -32
- 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 +8 -0
- package/lib/styles/{multiselect.js → select-base.js} +264 -127
- package/lib/styles/select.d.ts +3 -4
- package/lib/styles/select.js +103 -43
- package/lib/styles/step.d.ts +1 -2
- package/lib/styles/step.js +0 -4
- package/lib/styles/switch.d.ts +3 -2
- package/lib/styles/switch.js +20 -23
- 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 +77 -45
- package/lib/styles/tag.d.ts +1 -5
- package/lib/styles/tag.js +6 -32
- package/lib/styles/textarea.d.ts +1 -2
- package/lib/styles/textarea.js +7 -50
- package/lib/styles/tooltip.d.ts +4 -3
- package/lib/styles/tooltip.js +0 -125
- package/lib/styles/wizard.d.ts +5 -21
- package/lib/styles/wizard.js +23 -91
- package/lib/types/common.d.ts +1 -3
- package/lib/types/common.js +0 -10
- 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 +9 -0
- package/lib/utils/icons.js +1 -0
- package/lib/utils/loader-registry.d.ts +2 -3
- 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 +77 -3
- package/lib/utils/positioning.js +67 -58
- 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 +8 -5
- package/css/tyrell-brand.css +0 -1015
- package/dist/tyrell-brand.css +0 -1015
- 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 -6
- package/lib/styles/multiselect.d.ts.map +0 -1
- 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.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/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
|
@@ -1,19 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { FLAVORS } from "../types/common.js";
|
|
2
|
+
const datePickerFlavor = (f, fb) => {
|
|
3
|
+
const c = (s) => fb
|
|
4
|
+
? s
|
|
5
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${f}, var(--ty-color-${fb}${s})))`
|
|
6
|
+
: `var(--ty-color-${f}, var(--ty-color-${fb}))`
|
|
7
|
+
: s
|
|
8
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${f}))`
|
|
9
|
+
: `var(--ty-color-${f})`;
|
|
10
|
+
return `
|
|
11
|
+
:host([flavor="${f}"]) {
|
|
12
|
+
--date-picker-accent: var(--ty-input-${f}-border, ${c("-soft")});
|
|
13
|
+
--date-picker-accent-bold: ${c("")};
|
|
14
|
+
--date-picker-ring: color-mix(in oklab, ${c("")} 15%, transparent);
|
|
15
|
+
}
|
|
16
|
+
:host([flavor="${f}+"]) {
|
|
17
|
+
--date-picker-accent: ${c("")};
|
|
18
|
+
--date-picker-accent-bold: ${c("-strong")};
|
|
19
|
+
--date-picker-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
|
|
20
|
+
}
|
|
21
|
+
:host([flavor="${f}-"]) {
|
|
22
|
+
--date-picker-accent: ${c("-faint")};
|
|
23
|
+
--date-picker-accent-bold: ${c("-soft")};
|
|
24
|
+
--date-picker-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
};
|
|
28
|
+
export const datePickerCustomFlavorCss = (base) => datePickerFlavor(base, "neutral");
|
|
5
29
|
export const datePickerStyles = `
|
|
6
|
-
/* Date Picker Component Styles */
|
|
7
30
|
:host {
|
|
8
31
|
display: block;
|
|
9
32
|
width: auto;
|
|
10
33
|
min-width: 200px;
|
|
34
|
+
font-family: inherit;
|
|
11
35
|
|
|
12
|
-
/*
|
|
13
|
-
|
|
14
|
-
Thin shim over --ty-input-*. Override these to retheme just the date-picker
|
|
15
|
-
trigger without affecting other inputs.
|
|
16
|
-
========================================================================== */
|
|
36
|
+
/* Theming tokens — date-picker stub. Thin shim over --ty-input-*: override
|
|
37
|
+
these to retheme just the date-picker trigger, not other inputs. */
|
|
17
38
|
--ty-date-picker-bg: var(--ty-input-bg);
|
|
18
39
|
--ty-date-picker-color: var(--ty-input-color);
|
|
19
40
|
--ty-date-picker-placeholder: var(--ty-input-placeholder);
|
|
@@ -25,18 +46,14 @@ export const datePickerStyles = `
|
|
|
25
46
|
--ty-date-picker-disabled-color: var(--ty-input-disabled-color);
|
|
26
47
|
--ty-date-picker-radius: var(--ty-radius-md);
|
|
27
48
|
|
|
28
|
-
/*
|
|
29
|
-
|
|
30
|
-
Shared with ty-calendar / ty-calendar-month theming.
|
|
31
|
-
========================================================================== */
|
|
49
|
+
/* Theming tokens — calendar popup surface. Shared with ty-calendar /
|
|
50
|
+
ty-calendar-month theming. */
|
|
32
51
|
--ty-calendar-surface-bg: var(--ty-surface-floating);
|
|
33
52
|
--ty-calendar-surface-border: var(--ty-input-border);
|
|
34
53
|
--ty-calendar-surface-shadow: var(--ty-shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.1));
|
|
35
54
|
--ty-calendar-surface-radius: var(--ty-radius-lg);
|
|
36
55
|
|
|
37
|
-
/*
|
|
38
|
-
Theming Tokens — Time Section
|
|
39
|
-
========================================================================== */
|
|
56
|
+
/* Theming tokens — time section */
|
|
40
57
|
--ty-calendar-time-bg: transparent;
|
|
41
58
|
--ty-calendar-time-border: var(--ty-border-faint);
|
|
42
59
|
--ty-calendar-time-label-color: var(--ty-color-neutral);
|
|
@@ -81,7 +98,6 @@ export const datePickerStyles = `
|
|
|
81
98
|
width: 100%;
|
|
82
99
|
}
|
|
83
100
|
|
|
84
|
-
/* Start-slot icon (leading content inside the date-picker stub) */
|
|
85
101
|
.date-picker-stub ::slotted([slot="start"]) {
|
|
86
102
|
display: flex;
|
|
87
103
|
align-items: center;
|
|
@@ -96,7 +112,6 @@ export const datePickerStyles = `
|
|
|
96
112
|
height: 1em;
|
|
97
113
|
}
|
|
98
114
|
|
|
99
|
-
/* Date picker stub (styled like dropdown) */
|
|
100
115
|
.date-picker-stub {
|
|
101
116
|
width: 100%;
|
|
102
117
|
cursor: pointer;
|
|
@@ -106,9 +121,9 @@ export const datePickerStyles = `
|
|
|
106
121
|
align-items: center;
|
|
107
122
|
background: var(--ty-date-picker-bg);
|
|
108
123
|
color: var(--ty-date-picker-color);
|
|
109
|
-
border: 1px solid var(--ty-date-picker-border);
|
|
124
|
+
border: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));
|
|
110
125
|
border-radius: var(--ty-date-picker-radius);
|
|
111
|
-
font-family:
|
|
126
|
+
font-family: inherit;
|
|
112
127
|
font-size: var(--ty-font-sm);
|
|
113
128
|
font-weight: var(--ty-font-normal);
|
|
114
129
|
line-height: var(--ty-line-height-tight);
|
|
@@ -120,7 +135,7 @@ export const datePickerStyles = `
|
|
|
120
135
|
}
|
|
121
136
|
|
|
122
137
|
.date-picker-stub:hover:not([disabled]):not(.open) {
|
|
123
|
-
border-color: var(--ty-date-picker-border-hover);
|
|
138
|
+
border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));
|
|
124
139
|
}
|
|
125
140
|
|
|
126
141
|
.date-picker-stub[disabled] {
|
|
@@ -132,16 +147,8 @@ export const datePickerStyles = `
|
|
|
132
147
|
|
|
133
148
|
.date-picker-stub:focus,
|
|
134
149
|
.date-picker-stub.open {
|
|
135
|
-
border-color: var(--ty-date-picker-border-focus);
|
|
136
|
-
box-shadow: 0 0 0 3px var(--ty-date-picker-shadow-focus);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/* Size variants */
|
|
140
|
-
.date-picker-stub.xs {
|
|
141
|
-
min-height: var(--ty-size-xs);
|
|
142
|
-
font-size: var(--ty-font-xs);
|
|
143
|
-
padding: var(--ty-spacing-1) var(--ty-spacing-2);
|
|
144
|
-
padding-right: calc(var(--ty-spacing-2) + 0.875rem + var(--ty-spacing-1));
|
|
150
|
+
border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
|
|
151
|
+
box-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
.date-picker-stub.sm {
|
|
@@ -158,90 +165,9 @@ export const datePickerStyles = `
|
|
|
158
165
|
padding-right: calc(var(--ty-spacing-4) + 1.125rem + var(--ty-spacing-2));
|
|
159
166
|
}
|
|
160
167
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
font-size: var(--ty-font-lg);
|
|
164
|
-
padding: var(--ty-spacing-3) var(--ty-spacing-4);
|
|
165
|
-
padding-right: calc(var(--ty-spacing-4) + 1.25rem + var(--ty-spacing-3));
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/* Flavor variants */
|
|
169
|
-
/* Primary - Main brand focus state */
|
|
170
|
-
.date-picker-stub.primary {
|
|
171
|
-
border-color: var(--ty-input-primary-border, var(--ty-color-primary));
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
.date-picker-stub.primary:hover:not([disabled]) {
|
|
175
|
-
border-color: var(--ty-color-primary-bold);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
.date-picker-stub.primary:focus,
|
|
179
|
-
.date-picker-stub.primary.open {
|
|
180
|
-
border-color: var(--ty-color-primary-bold);
|
|
181
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-primary) 15%, transparent);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/* Secondary - Supporting action focus state */
|
|
185
|
-
.date-picker-stub.secondary {
|
|
186
|
-
border-color: var(--ty-input-secondary-border, var(--ty-color-secondary));
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
.date-picker-stub.secondary:hover:not([disabled]) {
|
|
190
|
-
border-color: var(--ty-color-secondary-bold);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.date-picker-stub.secondary:focus,
|
|
194
|
-
.date-picker-stub.secondary.open {
|
|
195
|
-
border-color: var(--ty-color-secondary-bold);
|
|
196
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-secondary) 15%, transparent);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/* Success - Valid/confirmed input state */
|
|
200
|
-
.date-picker-stub.success {
|
|
201
|
-
border-color: var(--ty-input-success-border, var(--ty-color-success));
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
.date-picker-stub.success:hover:not([disabled]) {
|
|
205
|
-
border-color: var(--ty-color-success-bold);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
.date-picker-stub.success:focus,
|
|
209
|
-
.date-picker-stub.success.open {
|
|
210
|
-
border-color: var(--ty-color-success-bold);
|
|
211
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-success) 15%, transparent);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/* Danger - Error/invalid input state */
|
|
215
|
-
.date-picker-stub.danger {
|
|
216
|
-
border-color: var(--ty-input-danger-border, var(--ty-color-danger));
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.date-picker-stub.danger:hover:not([disabled]) {
|
|
220
|
-
border-color: var(--ty-color-danger-bold);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.date-picker-stub.danger:focus,
|
|
224
|
-
.date-picker-stub.danger.open {
|
|
225
|
-
border-color: var(--ty-color-danger-bold);
|
|
226
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);
|
|
227
|
-
}
|
|
168
|
+
/* Flavor variants — set --date-picker-accent*, consumed by the stub rules above */
|
|
169
|
+
${FLAVORS.filter((f) => f !== "neutral").map((f) => datePickerFlavor(f)).join("")}
|
|
228
170
|
|
|
229
|
-
/* Warning - Caution/attention needed input state */
|
|
230
|
-
.date-picker-stub.warning {
|
|
231
|
-
border-color: var(--ty-input-warning-border, var(--ty-color-warning));
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
.date-picker-stub.warning:hover:not([disabled]) {
|
|
235
|
-
border-color: var(--ty-color-warning-bold);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.date-picker-stub.warning:focus,
|
|
239
|
-
.date-picker-stub.warning.open {
|
|
240
|
-
border-color: var(--ty-color-warning-bold);
|
|
241
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-warning) 15%, transparent);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
/* Text content */
|
|
245
171
|
.stub-text {
|
|
246
172
|
flex: 1;
|
|
247
173
|
white-space: nowrap;
|
|
@@ -256,7 +182,6 @@ export const datePickerStyles = `
|
|
|
256
182
|
color: var(--ty-date-picker-placeholder);
|
|
257
183
|
}
|
|
258
184
|
|
|
259
|
-
/* Icons */
|
|
260
185
|
.stub-icons {
|
|
261
186
|
display: flex;
|
|
262
187
|
align-items: center;
|
|
@@ -282,13 +207,18 @@ export const datePickerStyles = `
|
|
|
282
207
|
color: var(--ty-color-neutral-soft);
|
|
283
208
|
cursor: pointer;
|
|
284
209
|
border-radius: var(--ty-radius-sm);
|
|
285
|
-
transition: all 0.15s ease;
|
|
210
|
+
transition: var(--ty-local-transition, all 0.15s ease);
|
|
286
211
|
pointer-events: auto;
|
|
287
212
|
}
|
|
288
213
|
|
|
289
214
|
.stub-clear:hover {
|
|
290
|
-
|
|
291
|
-
|
|
215
|
+
/* Clear is a destructive utility action, not the field's semantic flavor
|
|
216
|
+
— it stays neutral at rest and always warns danger-red on hover,
|
|
217
|
+
regardless of the field's own flavor. (--ty-color-negative/
|
|
218
|
+
--ty-bg-negative-faint used here previously don't exist as tokens —
|
|
219
|
+
this silently fell back to unstyled inherited color.) */
|
|
220
|
+
color: var(--ty-color-danger);
|
|
221
|
+
background-color: var(--ty-bg-danger-soft);
|
|
292
222
|
}
|
|
293
223
|
|
|
294
224
|
.stub-arrow {
|
|
@@ -297,16 +227,16 @@ export const datePickerStyles = `
|
|
|
297
227
|
justify-content: center;
|
|
298
228
|
width: 1rem;
|
|
299
229
|
height: 1rem;
|
|
300
|
-
color: var(--ty-color-neutral-soft);
|
|
230
|
+
color: var(--date-picker-accent, var(--ty-color-neutral-soft));
|
|
301
231
|
}
|
|
302
232
|
|
|
303
233
|
.date-picker-stub:hover .stub-arrow {
|
|
304
|
-
color: var(--ty-color-neutral);
|
|
234
|
+
color: var(--date-picker-accent-bold, var(--ty-color-neutral));
|
|
305
235
|
}
|
|
306
236
|
|
|
307
237
|
.date-picker-stub:focus .stub-arrow,
|
|
308
238
|
.date-picker-stub.open .stub-arrow {
|
|
309
|
-
color: var(--ty-date-picker-border-focus);
|
|
239
|
+
color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
|
|
310
240
|
}
|
|
311
241
|
|
|
312
242
|
/* Calendar dialog (showModal positioning system) */
|
|
@@ -321,16 +251,22 @@ export const datePickerStyles = `
|
|
|
321
251
|
box-sizing: border-box;
|
|
322
252
|
padding: var(--calendar-padding, 8px);
|
|
323
253
|
|
|
324
|
-
/* Hidden by default */
|
|
325
254
|
opacity: 0;
|
|
326
|
-
|
|
255
|
+
/* Entrance motion uses the individual scale/translate properties so it
|
|
256
|
+
composes with the collision-shift transform below (they apply first). */
|
|
257
|
+
scale: 0.96;
|
|
258
|
+
translate: 0 -6px;
|
|
259
|
+
transform-origin: top center;
|
|
260
|
+
transition:
|
|
261
|
+
opacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
|
|
262
|
+
scale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
|
|
263
|
+
translate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));
|
|
327
264
|
|
|
328
265
|
transform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));
|
|
329
266
|
top: -1000px;
|
|
330
267
|
left: -1000px;
|
|
331
268
|
}
|
|
332
269
|
|
|
333
|
-
/* Direction-based positioning with CSS classes */
|
|
334
270
|
.calendar-dialog.position-below {
|
|
335
271
|
left: var(--calendar-x);
|
|
336
272
|
top: var(--calendar-y);
|
|
@@ -341,17 +277,34 @@ export const datePickerStyles = `
|
|
|
341
277
|
bottom: var(--calendar-y);
|
|
342
278
|
top: auto;
|
|
343
279
|
flex-direction: column-reverse;
|
|
280
|
+
translate: 0 6px;
|
|
281
|
+
transform-origin: bottom center;
|
|
344
282
|
}
|
|
345
283
|
|
|
346
284
|
.calendar-dialog.open {
|
|
347
285
|
opacity: 1;
|
|
286
|
+
scale: 1;
|
|
287
|
+
translate: 0 0;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/* First-frame "from" values — see select-base.ts: transitions can't start on
|
|
291
|
+
an element that was display:none last frame; @starting-style fixes that. */
|
|
292
|
+
@starting-style {
|
|
293
|
+
.calendar-dialog.open {
|
|
294
|
+
opacity: 0;
|
|
295
|
+
scale: 0.96;
|
|
296
|
+
translate: 0 -6px;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.calendar-dialog.open.position-above {
|
|
300
|
+
translate: 0 6px;
|
|
301
|
+
}
|
|
348
302
|
}
|
|
349
303
|
|
|
350
304
|
.calendar-dialog::backdrop {
|
|
351
305
|
background: transparent
|
|
352
306
|
}
|
|
353
307
|
|
|
354
|
-
/* Calendar content container */
|
|
355
308
|
.calendar-content {
|
|
356
309
|
background-color: var(--ty-calendar-surface-bg);
|
|
357
310
|
border: 1px solid var(--ty-calendar-surface-border);
|
|
@@ -363,7 +316,6 @@ export const datePickerStyles = `
|
|
|
363
316
|
align-items: center;
|
|
364
317
|
}
|
|
365
318
|
|
|
366
|
-
/* Native date input for mobile */
|
|
367
319
|
/* Native input is invisible — used only to trigger the OS picker */
|
|
368
320
|
.native-date-input {
|
|
369
321
|
position: absolute;
|
|
@@ -388,7 +340,6 @@ export const datePickerStyles = `
|
|
|
388
340
|
cursor: pointer;
|
|
389
341
|
}
|
|
390
342
|
|
|
391
|
-
/* Time input section */
|
|
392
343
|
.time-section {
|
|
393
344
|
display: flex;
|
|
394
345
|
min-height: 2.5rem;
|
|
@@ -416,7 +367,7 @@ export const datePickerStyles = `
|
|
|
416
367
|
border-radius: var(--ty-radius-sm);
|
|
417
368
|
background: var(--ty-input-bg);
|
|
418
369
|
color: var(--ty-calendar-time-input-color);
|
|
419
|
-
font-family:
|
|
370
|
+
font-family: inherit;
|
|
420
371
|
font-size: var(--ty-font-sm);
|
|
421
372
|
font-variant-numeric: tabular-nums;
|
|
422
373
|
text-align: center;
|
|
@@ -443,4 +394,3 @@ export const datePickerStyles = `
|
|
|
443
394
|
flex-shrink: 0;
|
|
444
395
|
}
|
|
445
396
|
`;
|
|
446
|
-
//# sourceMappingURL=date-picker.js.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export declare const fileUploadStyles = "\n:host {\n display: block;\n font-family:
|
|
2
|
-
//# sourceMappingURL=file-upload.d.ts.map
|
|
1
|
+
export declare const fileUploadStyles = "\n:host {\n display: block;\n font-family: inherit;\n width: 100%;\n}\n\n.file-upload-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.upload-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 4px;\n display: flex;\n align-items: center;\n}\n\n.required-icon {\n color: var(--ty-color-danger);\n margin-left: 4px;\n font-size: 0.75rem;\n line-height: 1;\n}\n\n.drop-zone {\n border: 2px dashed var(--ty-border);\n border-radius: var(--ty-radius-base);\n padding: 2rem 1.5rem;\n text-align: center;\n cursor: pointer;\n transition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);\n outline: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n min-height: 140px;\n user-select: none;\n}\n\n.drop-zone:hover:not(.disabled) {\n border-color: var(--ty-input-border-hover);\n background: var(--ty-surface-content);\n}\n\n.drop-zone.focused {\n border-color: var(--ty-input-border-focus);\n box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n\n.drop-zone.drag-active {\n border-color: var(--ty-color-primary);\n border-style: solid;\n background: var(--ty-bg-primary-);\n}\n\n.drop-zone.drag-active .upload-icon {\n color: var(--ty-color-primary);\n transform: translateY(-2px);\n}\n\n.drop-zone.has-files {\n min-height: 80px;\n padding: 1.25rem 1.5rem;\n}\n\n.drop-zone.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.drop-zone.error {\n border-color: var(--ty-color-danger);\n}\n\n.drop-zone.error:not(.disabled) {\n background: var(--ty-bg-danger-);\n}\n\n.upload-icon {\n color: var(--ty-text-faint);\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);\n pointer-events: none;\n}\n\n.upload-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.upload-hint {\n color: var(--ty-text-soft);\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n pointer-events: none;\n}\n\n.browse-link {\n color: var(--ty-color-primary);\n font-weight: var(--ty-font-medium);\n}\n\n.upload-sub-hint {\n color: var(--ty-text-faint);\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n pointer-events: none;\n}\n\n.file-list {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-top: 0.5rem;\n}\n\n.file-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n border-radius: var(--ty-radius-base);\n background: var(--ty-surface-content);\n border: 1px solid var(--ty-border-soft);\n}\n\n.file-icon {\n color: var(--ty-text-faint);\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n}\n\n.file-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.file-name {\n flex: 1;\n font-size: var(--ty-font-sm);\n color: var(--ty-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n.file-size {\n font-size: var(--ty-font-xs);\n color: var(--ty-text-faint);\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n}\n\n.file-remove {\n flex-shrink: 0;\n cursor: pointer;\n color: var(--ty-text-faint);\n width: 1.25rem;\n height: 1.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);\n border: none;\n background: none;\n padding: 0;\n outline: none;\n}\n\n.file-remove:hover {\n color: var(--ty-color-danger);\n background: var(--ty-bg-danger-);\n}\n\n.file-remove:focus-visible {\n box-shadow: 0 0 0 2px var(--ty-color-danger);\n}\n\n.file-remove svg {\n width: 12px;\n height: 12px;\n}\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 4px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .drop-zone,\n .upload-icon,\n .file-remove {\n transition: none;\n }\n}\n\n@media (prefers-contrast: high) {\n .drop-zone {\n border-width: 3px;\n }\n}\n";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const fileUploadStyles = `
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
|
-
font-family:
|
|
4
|
+
font-family: inherit;
|
|
5
5
|
width: 100%;
|
|
6
6
|
}
|
|
7
7
|
|
|
@@ -12,8 +12,6 @@ export const fileUploadStyles = `
|
|
|
12
12
|
box-sizing: border-box;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
/* ===== LABEL ===== */
|
|
16
|
-
|
|
17
15
|
.upload-label {
|
|
18
16
|
font-size: var(--ty-font-sm);
|
|
19
17
|
line-height: var(--ty-leading-sm);
|
|
@@ -33,15 +31,13 @@ export const fileUploadStyles = `
|
|
|
33
31
|
line-height: 1;
|
|
34
32
|
}
|
|
35
33
|
|
|
36
|
-
/* ===== DROP ZONE ===== */
|
|
37
|
-
|
|
38
34
|
.drop-zone {
|
|
39
35
|
border: 2px dashed var(--ty-border);
|
|
40
36
|
border-radius: var(--ty-radius-base);
|
|
41
37
|
padding: 2rem 1.5rem;
|
|
42
38
|
text-align: center;
|
|
43
39
|
cursor: pointer;
|
|
44
|
-
transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
|
|
40
|
+
transition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);
|
|
45
41
|
outline: none;
|
|
46
42
|
display: flex;
|
|
47
43
|
flex-direction: column;
|
|
@@ -92,8 +88,6 @@ export const fileUploadStyles = `
|
|
|
92
88
|
background: var(--ty-bg-danger-);
|
|
93
89
|
}
|
|
94
90
|
|
|
95
|
-
/* ===== UPLOAD ICON ===== */
|
|
96
|
-
|
|
97
91
|
.upload-icon {
|
|
98
92
|
color: var(--ty-text-faint);
|
|
99
93
|
width: 2.5rem;
|
|
@@ -101,7 +95,7 @@ export const fileUploadStyles = `
|
|
|
101
95
|
display: flex;
|
|
102
96
|
align-items: center;
|
|
103
97
|
justify-content: center;
|
|
104
|
-
transition: color 0.15s ease, transform 0.15s ease;
|
|
98
|
+
transition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);
|
|
105
99
|
pointer-events: none;
|
|
106
100
|
}
|
|
107
101
|
|
|
@@ -110,8 +104,6 @@ export const fileUploadStyles = `
|
|
|
110
104
|
height: 100%;
|
|
111
105
|
}
|
|
112
106
|
|
|
113
|
-
/* ===== HINT TEXT ===== */
|
|
114
|
-
|
|
115
107
|
.upload-hint {
|
|
116
108
|
color: var(--ty-text-soft);
|
|
117
109
|
font-size: var(--ty-font-sm);
|
|
@@ -131,8 +123,6 @@ export const fileUploadStyles = `
|
|
|
131
123
|
pointer-events: none;
|
|
132
124
|
}
|
|
133
125
|
|
|
134
|
-
/* ===== FILE LIST ===== */
|
|
135
|
-
|
|
136
126
|
.file-list {
|
|
137
127
|
display: flex;
|
|
138
128
|
flex-direction: column;
|
|
@@ -191,7 +181,7 @@ export const fileUploadStyles = `
|
|
|
191
181
|
align-items: center;
|
|
192
182
|
justify-content: center;
|
|
193
183
|
border-radius: 50%;
|
|
194
|
-
transition: color 0.15s ease, background-color 0.15s ease;
|
|
184
|
+
transition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);
|
|
195
185
|
border: none;
|
|
196
186
|
background: none;
|
|
197
187
|
padding: 0;
|
|
@@ -212,8 +202,6 @@ export const fileUploadStyles = `
|
|
|
212
202
|
height: 12px;
|
|
213
203
|
}
|
|
214
204
|
|
|
215
|
-
/* ===== ERROR MESSAGE ===== */
|
|
216
|
-
|
|
217
205
|
.error-message {
|
|
218
206
|
font-size: var(--ty-font-xs);
|
|
219
207
|
line-height: var(--ty-leading-xs);
|
|
@@ -222,8 +210,6 @@ export const fileUploadStyles = `
|
|
|
222
210
|
padding-left: 4px;
|
|
223
211
|
}
|
|
224
212
|
|
|
225
|
-
/* ===== ACCESSIBILITY ===== */
|
|
226
|
-
|
|
227
213
|
@media (prefers-reduced-motion: reduce) {
|
|
228
214
|
.drop-zone,
|
|
229
215
|
.upload-icon,
|
|
@@ -238,4 +224,3 @@ export const fileUploadStyles = `
|
|
|
238
224
|
}
|
|
239
225
|
}
|
|
240
226
|
`;
|
|
241
|
-
//# sourceMappingURL=file-upload.js.map
|
package/lib/styles/icon.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* PORTED FROM: clj/ty/components/icon.css
|
|
4
|
-
*/
|
|
5
|
-
export declare const iconStyles = "\n:host {\n /* Display & Layout - CRITICAL: No containment to prevent paint deferral */\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n \n /* Dimensions with CSS variable support for flexibility */\n width: var(--ty-icon-size, 1em);\n height: var(--ty-icon-size, 1em);\n \n /* Enforce square aspect ratio */\n aspect-ratio: 1 / 1;\n \n \n /* Color & Transitions */\n color: inherit;\n transition: color var(--ty-transition-fast);\n \n /* Flex Behavior */\n flex-shrink: 0;\n \n /* Visibility - Force immediate rendering */\n visibility: visible !important;\n opacity: 1;\n \n /* ANTI-FLICKER: Force browser to paint immediately */\n will-change: contents;\n \n /* Prevent any sub-pixel rendering issues */\n transform: translateZ(0);\n -webkit-font-smoothing: antialiased;\n}\n\n/* The SVG element inside shadow DOM (registry / fallback path) */\n:host svg {\n width: 100%;\n height: 100%;\n display: block;\n\n /* Force immediate SVG rendering */\n will-change: auto;\n transform: translateZ(0);\n}\n\n/* Slotted SVG (server-side path: <ty-icon><svg>...</svg></ty-icon>).\n ::slotted() targets light-DOM children so they fill the host the same way\n shadow-DOM SVG does. Color is inherited from :host via currentColor. */\n::slotted(svg),\n::slotted(img) {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* When used in slots, ensure proper display */\n:host([slot]) {\n display: inline-flex;\n}\n\n/* Size variants via CSS classes on the host */\n:host(.icon-xs) {\n width: 0.75em;\n height: 0.75em;\n}\n\n:host(.icon-sm) {\n width: 0.875em;\n height: 0.875em;\n}\n\n:host(.icon-md) {\n width: 1em;\n height: 1em;\n}\n\n:host(.icon-lg) {\n width: 1.25em;\n height: 1.25em;\n}\n\n:host(.icon-xl) {\n width: 1.5em;\n height: 1.5em;\n}\n\n:host(.icon-2xl) {\n width: 2em;\n height: 2em;\n}\n\n/* Fixed pixel sizes */\n:host(.icon-12) {\n width: 12px;\n height: 12px;\n}\n\n:host(.icon-14) {\n width: 14px;\n height: 14px;\n}\n\n:host(.icon-16) {\n width: 16px;\n height: 16px;\n}\n\n:host(.icon-18) {\n width: 18px;\n height: 18px;\n}\n\n:host(.icon-20) {\n width: 20px;\n height: 20px;\n}\n\n:host(.icon-24) {\n width: 24px;\n height: 24px;\n}\n\n:host(.icon-32) {\n width: 32px;\n height: 32px;\n}\n\n:host(.icon-48) {\n width: 48px;\n height: 48px;\n}\n\n:host(.icon-64) {\n width: 64px;\n height: 64px;\n}\n\n:host(.icon-80) {\n width: 80px;\n height: 80px;\n}\n\n:host(.icon-96) {\n width: 96px;\n height: 96px;\n}\n\n/* Spinning animation - default tempo */\n:host(.icon-spin) {\n animation: icon-spin 1s linear infinite;\n}\n\n/* Spinning animation - slow tempo */\n:host(.icon-spin.icon-tempo-slow) {\n animation: icon-spin 2s linear infinite;\n}\n\n/* Spinning animation - fast tempo */\n:host(.icon-spin.icon-tempo-fast) {\n animation: icon-spin 0.5s linear infinite;\n}\n\n@keyframes icon-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Pulse animation - default tempo */\n:host(.icon-pulse) {\n animation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n/* Pulse animation - slow tempo */\n:host(.icon-pulse.icon-tempo-slow) {\n animation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n/* Pulse animation - fast tempo */\n:host(.icon-pulse.icon-tempo-fast) {\n animation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes icon-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n}\n\n/* Accessibility: ensure icons are not announced by screen readers by default */\n:host {\n -webkit-user-select: none;\n user-select: none;\n}\n\n/* Allow pointer events to pass through by default */\n:host(:not(.icon-clickable)) {\n pointer-events: none;\n}\n\n/* Clickable icons */\n:host(.icon-clickable) {\n cursor: pointer;\n pointer-events: auto;\n transition: color var(--ty-transition-fast), transform var(--ty-transition-fast);\n}\n\n:host(.icon-clickable:hover) {\n transform: scale(1.1);\n}\n\n:host(.icon-clickable:active) {\n transform: scale(0.95);\n}\n\n/* Disabled state */\n:host(.icon-disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Block display variant */\n:host(.icon-block) {\n display: block;\n}\n";
|
|
6
|
-
//# sourceMappingURL=icon.d.ts.map
|
|
1
|
+
/** Icon Component Styles */
|
|
2
|
+
export declare const iconStyles = "\n:host {\n /* Display & Layout - CRITICAL: No containment to prevent paint deferral */\n /* Block-level flex, NOT inline-flex: as an inline box the icon generates a\n line box in its parent, so a shrink-wrapping wrapper (badge, .rounded-full\n chip) inherits the parent's line-height strut and renders taller than wide\n \u2014 a 12px icon in a 24px-line-height badge becomes a 22x34 oval. To place an\n icon inline with text, make the *text wrapper* inline-flex instead. */\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n \n width: var(--ty-icon-size, 1em);\n height: var(--ty-icon-size, 1em);\n \n aspect-ratio: 1 / 1;\n \n \n color: inherit;\n transition: color var(--ty-transition-fast);\n \n flex-shrink: 0;\n \n /* Visibility - Force immediate rendering */\n visibility: visible !important;\n opacity: 1;\n \n /* ANTI-FLICKER: Force browser to paint immediately */\n will-change: contents;\n \n /* Prevent any sub-pixel rendering issues */\n transform: translateZ(0);\n -webkit-font-smoothing: antialiased;\n}\n\n/* The SVG element inside shadow DOM (registry / fallback path) */\n:host svg {\n width: 100%;\n height: 100%;\n display: block;\n\n /* Force immediate SVG rendering */\n will-change: auto;\n transform: translateZ(0);\n}\n\n/* Slotted SVG (server-side path: <ty-icon><svg>...</svg></ty-icon>).\n ::slotted() targets light-DOM children so they fill the host the same way\n shadow-DOM SVG does. Color is inherited from :host via currentColor. */\n::slotted(svg),\n::slotted(img) {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* In a named slot the icon sits alongside text (button start/end), so inline\n layout is what the host expects there. */\n:host([slot]) {\n display: inline-flex;\n}\n\n:host(.icon-xs) {\n width: 0.75em;\n height: 0.75em;\n}\n\n:host(.icon-sm) {\n width: 0.875em;\n height: 0.875em;\n}\n\n:host(.icon-md) {\n width: 1em;\n height: 1em;\n}\n\n:host(.icon-lg) {\n width: 1.25em;\n height: 1.25em;\n}\n\n:host(.icon-xl) {\n width: 1.5em;\n height: 1.5em;\n}\n\n:host(.icon-2xl) {\n width: 2em;\n height: 2em;\n}\n\n/* Fixed pixel sizes */\n:host(.icon-12) {\n width: 12px;\n height: 12px;\n}\n\n:host(.icon-14) {\n width: 14px;\n height: 14px;\n}\n\n:host(.icon-16) {\n width: 16px;\n height: 16px;\n}\n\n:host(.icon-18) {\n width: 18px;\n height: 18px;\n}\n\n:host(.icon-20) {\n width: 20px;\n height: 20px;\n}\n\n:host(.icon-24) {\n width: 24px;\n height: 24px;\n}\n\n:host(.icon-32) {\n width: 32px;\n height: 32px;\n}\n\n:host(.icon-48) {\n width: 48px;\n height: 48px;\n}\n\n:host(.icon-64) {\n width: 64px;\n height: 64px;\n}\n\n:host(.icon-80) {\n width: 80px;\n height: 80px;\n}\n\n:host(.icon-96) {\n width: 96px;\n height: 96px;\n}\n\n:host(.icon-spin) {\n animation: icon-spin 1s linear infinite;\n}\n\n:host(.icon-spin.icon-tempo-slow) {\n animation: icon-spin 2s linear infinite;\n}\n\n:host(.icon-spin.icon-tempo-fast) {\n animation: icon-spin 0.5s linear infinite;\n}\n\n@keyframes icon-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n:host(.icon-pulse) {\n animation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n:host(.icon-pulse.icon-tempo-slow) {\n animation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n:host(.icon-pulse.icon-tempo-fast) {\n animation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes icon-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n}\n\n/* Accessibility: ensure icons are not announced by screen readers by default */\n:host {\n -webkit-user-select: none;\n user-select: none;\n}\n\n:host(:not(.icon-clickable)) {\n pointer-events: none;\n}\n\n:host(.icon-clickable) {\n cursor: pointer;\n pointer-events: auto;\n transition: color var(--ty-transition-fast), transform var(--ty-transition-fast);\n}\n\n:host(.icon-clickable:hover) {\n transform: scale(1.1);\n}\n\n:host(.icon-clickable:active) {\n transform: scale(0.95);\n}\n\n:host(.icon-disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host(.icon-block) {\n display: block;\n}\n";
|
package/lib/styles/icon.js
CHANGED
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Icon Component Styles
|
|
3
|
-
* PORTED FROM: clj/ty/components/icon.css
|
|
4
|
-
*/
|
|
5
1
|
export const iconStyles = `
|
|
6
2
|
:host {
|
|
7
3
|
/* Display & Layout - CRITICAL: No containment to prevent paint deferral */
|
|
4
|
+
/* Block-level flex, NOT inline-flex: as an inline box the icon generates a
|
|
5
|
+
line box in its parent, so a shrink-wrapping wrapper (badge, .rounded-full
|
|
6
|
+
chip) inherits the parent's line-height strut and renders taller than wide
|
|
7
|
+
— a 12px icon in a 24px-line-height badge becomes a 22x34 oval. To place an
|
|
8
|
+
icon inline with text, make the *text wrapper* inline-flex instead. */
|
|
8
9
|
display: flex;
|
|
9
10
|
align-items: center;
|
|
10
11
|
justify-content: center;
|
|
11
12
|
line-height: 0;
|
|
12
13
|
|
|
13
|
-
/* Dimensions with CSS variable support for flexibility */
|
|
14
14
|
width: var(--ty-icon-size, 1em);
|
|
15
15
|
height: var(--ty-icon-size, 1em);
|
|
16
16
|
|
|
17
|
-
/* Enforce square aspect ratio */
|
|
18
17
|
aspect-ratio: 1 / 1;
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
/* Color & Transitions */
|
|
22
20
|
color: inherit;
|
|
23
21
|
transition: color var(--ty-transition-fast);
|
|
24
22
|
|
|
25
|
-
/* Flex Behavior */
|
|
26
23
|
flex-shrink: 0;
|
|
27
24
|
|
|
28
25
|
/* Visibility - Force immediate rendering */
|
|
@@ -58,12 +55,12 @@ export const iconStyles = `
|
|
|
58
55
|
display: block;
|
|
59
56
|
}
|
|
60
57
|
|
|
61
|
-
/*
|
|
58
|
+
/* In a named slot the icon sits alongside text (button start/end), so inline
|
|
59
|
+
layout is what the host expects there. */
|
|
62
60
|
:host([slot]) {
|
|
63
61
|
display: inline-flex;
|
|
64
62
|
}
|
|
65
63
|
|
|
66
|
-
/* Size variants via CSS classes on the host */
|
|
67
64
|
:host(.icon-xs) {
|
|
68
65
|
width: 0.75em;
|
|
69
66
|
height: 0.75em;
|
|
@@ -150,17 +147,14 @@ export const iconStyles = `
|
|
|
150
147
|
height: 96px;
|
|
151
148
|
}
|
|
152
149
|
|
|
153
|
-
/* Spinning animation - default tempo */
|
|
154
150
|
:host(.icon-spin) {
|
|
155
151
|
animation: icon-spin 1s linear infinite;
|
|
156
152
|
}
|
|
157
153
|
|
|
158
|
-
/* Spinning animation - slow tempo */
|
|
159
154
|
:host(.icon-spin.icon-tempo-slow) {
|
|
160
155
|
animation: icon-spin 2s linear infinite;
|
|
161
156
|
}
|
|
162
157
|
|
|
163
|
-
/* Spinning animation - fast tempo */
|
|
164
158
|
:host(.icon-spin.icon-tempo-fast) {
|
|
165
159
|
animation: icon-spin 0.5s linear infinite;
|
|
166
160
|
}
|
|
@@ -175,17 +169,14 @@ export const iconStyles = `
|
|
|
175
169
|
}
|
|
176
170
|
}
|
|
177
171
|
|
|
178
|
-
/* Pulse animation - default tempo */
|
|
179
172
|
:host(.icon-pulse) {
|
|
180
173
|
animation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
181
174
|
}
|
|
182
175
|
|
|
183
|
-
/* Pulse animation - slow tempo */
|
|
184
176
|
:host(.icon-pulse.icon-tempo-slow) {
|
|
185
177
|
animation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
186
178
|
}
|
|
187
179
|
|
|
188
|
-
/* Pulse animation - fast tempo */
|
|
189
180
|
:host(.icon-pulse.icon-tempo-fast) {
|
|
190
181
|
animation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
191
182
|
}
|
|
@@ -207,12 +198,10 @@ export const iconStyles = `
|
|
|
207
198
|
user-select: none;
|
|
208
199
|
}
|
|
209
200
|
|
|
210
|
-
/* Allow pointer events to pass through by default */
|
|
211
201
|
:host(:not(.icon-clickable)) {
|
|
212
202
|
pointer-events: none;
|
|
213
203
|
}
|
|
214
204
|
|
|
215
|
-
/* Clickable icons */
|
|
216
205
|
:host(.icon-clickable) {
|
|
217
206
|
cursor: pointer;
|
|
218
207
|
pointer-events: auto;
|
|
@@ -227,15 +216,12 @@ export const iconStyles = `
|
|
|
227
216
|
transform: scale(0.95);
|
|
228
217
|
}
|
|
229
218
|
|
|
230
|
-
/* Disabled state */
|
|
231
219
|
:host(.icon-disabled) {
|
|
232
220
|
opacity: 0.5;
|
|
233
221
|
cursor: not-allowed;
|
|
234
222
|
}
|
|
235
223
|
|
|
236
|
-
/* Block display variant */
|
|
237
224
|
:host(.icon-block) {
|
|
238
225
|
display: block;
|
|
239
226
|
}
|
|
240
227
|
`;
|
|
241
|
-
//# sourceMappingURL=icon.js.map
|
package/lib/styles/input.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
export declare const inputStyles = "\n:host {\n display: block;\n font-family: var(--ty-font-sans);\n width: 100%;\n}\n\n:host([size=\"xl\"]) {\n font-size: 20px;\n}\n\n\n:host([size=\"xs\"]) {\n font-size: 12px;\n}\n\n\n:host([size=\"sm\"]) {\n font-size: 14px;\n}\n\n:host([size=\"lg\"]) {\n font-size: 18px;\n}\n\n.input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n/* ===== LABEL STYLING ===== */\n\n.ty-field-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 12px;\n display: flex;\n align-items: center;\n}\n\n/* Required indicator - using SVG icon */\n.required-icon {\n display: inline-flex;\n align-items: center;\n color: var(--ty-color-danger);\n width: 12px;\n height: 12px;\n margin-left: 4px;\n vertical-align: middle;\n}\n\n.required-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* ===== INPUT WRAPPER WITH SLOTS ===== */\n\n.input-wrapper {\n display: flex;\n align-items: center;\n gap: 0.5rem; /* No gap by default */\n width: 100%;\n box-sizing: border-box;\n border: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: var(--ty-radius-base);\n background: var(--input-bg, var(--input-bg, var(--ty-input-bg)));\n transition: all 0.15s ease-in-out;\n \n /* Default size (md) */\n min-height: 40px;\n padding: 0 12px;\n}\n\n/* Wrapper states */\n.input-wrapper:hover:not(.disabled) {\n border-color: var(--input-border-hover, var(--ty-input-border-hover));\n}\n\n.input-wrapper.focused {\n border-color: var(--input-border-focus, var(--ty-input-border-focus));\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n.input-wrapper.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n background: var(--input-disabled-bg, var(--ty-input-disabled-bg));\n border-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n\n/* ===== SLOT STYLING ===== */\n\n/* Style slotted content directly (no wrappers needed) */\n::slotted([slot=\"start\"]),\n::slotted([slot=\"end\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--ty-color-text-soft);\n}\n\n/* Password reveal toggle (rendered for type=\"password\") */\n.password-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--input-placeholder, var(--ty-input-placeholder));\n transition: color 0.15s ease-in-out;\n}\n.password-toggle:hover {\n color: var(--input-color, var(--ty-input-color));\n}\n.password-toggle:focus-visible {\n outline: 2px solid var(--ty-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n.password-toggle svg {\n width: 1rem;\n height: 1rem;\n}\n\n/* Icon sizing for slotted icons */\n::slotted(ty-icon) {\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n}\n\n/* ===== ERROR MESSAGE STYLING ===== */\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 12px;\n}\n\n/* Error state for wrapper */\n.input-wrapper.error {\n border-color: var(--ty-color-danger);\n background: var(--ty-bg-danger-soft);\n}\n\n.input-wrapper.error.focused {\n border-color: var(--ty-color-danger-bold);\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* ===== INPUT BASE STYLING ===== */\n\ninput {\n /* Reset and base styles \u2014 Linear-paired typography */\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n border: none;\n outline: none;\n background: transparent;\n color: var(--input-color, var(--ty-input-color));\n font-family: inherit;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-normal);\n padding: 0;\n margin: 0;\n}\n\n/* Remove number input spinner arrows */\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n/* Disabled state */\ninput:disabled {\n cursor: not-allowed;\n color: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\n\n/* Placeholder styling */\ninput::placeholder {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n font-weight: 400;\n}\n\n/* ===== SIZE MODIFIERS ===== */\n\n/* Extra Small */\n.input-wrapper.xs {\n min-height: 32px;\n padding: 0 8px;\n border-radius: var(--ty-input-radius-xs, var(--ty-radius-base));\n}\n\n.input-wrapper.xs input {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n}\n\n/* Small */\n.input-wrapper.sm {\n min-height: 36px;\n padding: 0 10px;\n border-radius: var(--ty-input-radius-sm, var(--ty-radius-base));\n}\n\n.input-wrapper.sm input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\n/* Medium (default) */\n.input-wrapper.md {\n min-height: 40px;\n padding: 0 12px;\n border-radius: var(--ty-input-radius-md, var(--ty-radius-base));\n}\n\n.input-wrapper.md input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\n/* Large */\n.input-wrapper.lg {\n min-height: 44px;\n padding: 0 14px;\n border-radius: var(--ty-input-radius-lg, var(--ty-radius-base));\n}\n\n.input-wrapper.lg input {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n}\n\n/* Extra Large */\n.input-wrapper.xl {\n min-height: 48px;\n padding: 0 16px;\n border-radius: var(--ty-input-radius-xl, var(--ty-radius-base));\n}\n\n.input-wrapper.xl input {\n font-size: var(--ty-font-lg);\n line-height: var(--ty-leading-lg);\n letter-spacing: var(--ty-tracking-lg);\n}\n\n/* ===== SEMANTIC FLAVOR MODIFIERS ===== */\n\n/* Primary */\n.input-wrapper.primary {\n border-color: var(--ty-input-primary-border, var(--ty-color-primary));\n}\n\n.input-wrapper.primary:hover:not(.disabled) {\n border-color: var(--ty-color-primary-bold);\n}\n\n.input-wrapper.primary.focused {\n border-color: var(--ty-color-primary-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-primary) 15%, transparent);\n}\n\n/* Secondary */\n.input-wrapper.secondary {\n border-color: var(--ty-input-secondary-border, var(--ty-color-secondary));\n}\n\n.input-wrapper.secondary.focused {\n border-color: var(--ty-color-secondary-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-secondary) 15%, transparent);\n}\n\n/* Success */\n.input-wrapper.success {\n border-color: var(--ty-input-success-border);\n}\n\n.input-wrapper.success:hover:not(.disabled) {\n border-color: var(--ty-color-success-bold);\n}\n\n.input-wrapper.success.focused {\n border-color: var(--ty-color-success-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-success) 15%, transparent);\n}\n\n/* Danger */\n.input-wrapper.danger {\n border-color: var(--ty-input-danger-border);\n}\n\n.input-wrapper.danger:hover:not(.disabled) {\n border-color: var(--ty-color-danger-bold);\n}\n\n.input-wrapper.danger.focused {\n border-color: var(--ty-color-danger-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);\n}\n\n/* Warning */\n.input-wrapper.warning {\n border-color: var(--ty-input-warning-border);\n}\n\n.input-wrapper.warning:hover:not(.disabled) {\n border-color: var(--ty-color-warning-bold);\n}\n\n.input-wrapper.warning.focused {\n border-color: var(--ty-color-warning-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-warning) 15%, transparent);\n}\n\n/* Neutral (default) */\n.input-wrapper.neutral.focused {\n border-color: var(--input-border-focus, var(--ty-input-border-focus));\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* ===== ACCESSIBILITY ENHANCEMENTS ===== */\n\ninput:focus-visible {\n outline: none;\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .input-wrapper {\n border-width: 2px;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .input-wrapper {\n transition: none;\n }\n}\n\n/* ===== RESPONSIVE BEHAVIOR ===== */\n\n@media (max-width: 640px) {\n .input-wrapper.lg {\n min-height: 40px;\n padding: 0 12px;\n }\n\n .input-wrapper.lg input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n }\n\n .input-wrapper.xl {\n min-height: 44px;\n padding: 0 14px;\n }\n\n .input-wrapper.xl input {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n }\n}\n\n@media (max-width: 480px) {\n .input-wrapper.xl {\n min-height: 40px;\n padding: 0 12px;\n }\n\n .input-wrapper.xl input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n }\n}\n";
|
|
7
|
-
//# sourceMappingURL=input.d.ts.map
|
|
1
|
+
/** Input Component Styles */
|
|
2
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
3
|
+
export declare const inputCustomFlavorCss: (base: string) => string;
|
|
4
|
+
export declare const inputStyles: string;
|