tyrell-components 1.0.0-RC12 → 1.0.0-RC13
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 -0
- package/css/tyrell-colors-static.css +316 -0
- package/css/tyrell-theme.css +1454 -0
- package/css/tyrell.css +108 -423
- package/dist/tyrell-colors-static.css +316 -0
- package/dist/tyrell-theme.css +1454 -0
- package/dist/tyrell.css +108 -423
- package/dist/tyrell.js +1 -1
- package/lib/components/button.d.ts +7 -0
- package/lib/components/button.d.ts.map +1 -1
- package/lib/components/button.js +12 -1
- package/lib/components/button.js.map +1 -1
- package/lib/components/calendar-month.d.ts +17 -0
- package/lib/components/calendar-month.d.ts.map +1 -1
- package/lib/components/calendar-month.js +121 -7
- package/lib/components/calendar-month.js.map +1 -1
- package/lib/components/calendar.d.ts +3 -1
- package/lib/components/calendar.d.ts.map +1 -1
- package/lib/components/calendar.js +19 -9
- package/lib/components/calendar.js.map +1 -1
- package/lib/components/checkbox.d.ts +4 -3
- package/lib/components/checkbox.d.ts.map +1 -1
- package/lib/components/checkbox.js +23 -35
- package/lib/components/checkbox.js.map +1 -1
- package/lib/components/copy.d.ts +4 -3
- package/lib/components/copy.d.ts.map +1 -1
- package/lib/components/copy.js +22 -21
- package/lib/components/copy.js.map +1 -1
- package/lib/components/date-picker.d.ts +12 -1
- package/lib/components/date-picker.d.ts.map +1 -1
- package/lib/components/date-picker.js +122 -32
- package/lib/components/date-picker.js.map +1 -1
- package/lib/components/input.d.ts +3 -2
- package/lib/components/input.d.ts.map +1 -1
- package/lib/components/input.js +24 -21
- package/lib/components/input.js.map +1 -1
- package/lib/components/modal.d.ts.map +1 -1
- package/lib/components/modal.js +22 -3
- package/lib/components/modal.js.map +1 -1
- package/lib/components/option.d.ts +0 -11
- package/lib/components/option.d.ts.map +1 -1
- package/lib/components/option.js +4 -103
- package/lib/components/option.js.map +1 -1
- package/lib/components/popup.d.ts.map +1 -1
- package/lib/components/popup.js +36 -2
- package/lib/components/popup.js.map +1 -1
- package/lib/components/radio.d.ts +5 -2
- package/lib/components/radio.d.ts.map +1 -1
- package/lib/components/radio.js +16 -5
- package/lib/components/radio.js.map +1 -1
- package/lib/components/select.d.ts +119 -9
- package/lib/components/select.d.ts.map +1 -1
- package/lib/components/select.js +426 -58
- package/lib/components/select.js.map +1 -1
- package/lib/components/selected-tags.d.ts +19 -6
- package/lib/components/selected-tags.d.ts.map +1 -1
- package/lib/components/selected-tags.js +43 -7
- package/lib/components/selected-tags.js.map +1 -1
- package/lib/components/switch.d.ts +4 -3
- package/lib/components/switch.d.ts.map +1 -1
- package/lib/components/switch.js +17 -29
- package/lib/components/switch.js.map +1 -1
- package/lib/components/tabs.d.ts.map +1 -1
- package/lib/components/tabs.js +180 -25
- package/lib/components/tabs.js.map +1 -1
- package/lib/components/tag.js +1 -1
- package/lib/components/tag.js.map +1 -1
- package/lib/components/tooltip.d.ts +4 -2
- package/lib/components/tooltip.d.ts.map +1 -1
- package/lib/components/tooltip.js +109 -70
- package/lib/components/tooltip.js.map +1 -1
- package/lib/components/wizard.d.ts.map +1 -1
- package/lib/components/wizard.js +22 -3
- package/lib/components/wizard.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/styles/button.d.ts +36 -6
- package/lib/styles/button.d.ts.map +1 -1
- package/lib/styles/button.js +239 -36
- package/lib/styles/button.js.map +1 -1
- package/lib/styles/calendar-month.d.ts +3 -1
- package/lib/styles/calendar-month.d.ts.map +1 -1
- package/lib/styles/calendar-month.js +64 -9
- package/lib/styles/calendar-month.js.map +1 -1
- package/lib/styles/calendar-navigation.d.ts +1 -1
- package/lib/styles/calendar-navigation.d.ts.map +1 -1
- package/lib/styles/calendar-navigation.js +1 -1
- package/lib/styles/checkbox.d.ts +3 -1
- package/lib/styles/checkbox.d.ts.map +1 -1
- package/lib/styles/checkbox.js +33 -55
- package/lib/styles/checkbox.js.map +1 -1
- package/lib/styles/copy.d.ts +3 -1
- package/lib/styles/copy.d.ts.map +1 -1
- package/lib/styles/copy.js +29 -6
- package/lib/styles/copy.js.map +1 -1
- package/lib/styles/custom-scrollbar.d.ts +1 -1
- package/lib/styles/custom-scrollbar.d.ts.map +1 -1
- package/lib/styles/custom-scrollbar.js +2 -2
- package/lib/styles/date-picker.d.ts +3 -1
- package/lib/styles/date-picker.d.ts.map +1 -1
- package/lib/styles/date-picker.js +53 -99
- package/lib/styles/date-picker.js.map +1 -1
- package/lib/styles/file-upload.d.ts +1 -1
- package/lib/styles/file-upload.d.ts.map +1 -1
- package/lib/styles/file-upload.js +3 -3
- package/lib/styles/input.d.ts +3 -1
- package/lib/styles/input.d.ts.map +1 -1
- package/lib/styles/input.js +67 -123
- package/lib/styles/input.js.map +1 -1
- package/lib/styles/multiselect.d.ts +3 -1
- package/lib/styles/multiselect.d.ts.map +1 -1
- package/lib/styles/multiselect.js +26 -2
- package/lib/styles/multiselect.js.map +1 -1
- package/lib/styles/option.d.ts +1 -1
- package/lib/styles/option.d.ts.map +1 -1
- package/lib/styles/option.js +0 -51
- package/lib/styles/option.js.map +1 -1
- package/lib/styles/radio.d.ts +3 -1
- package/lib/styles/radio.d.ts.map +1 -1
- package/lib/styles/radio.js +24 -21
- package/lib/styles/radio.js.map +1 -1
- package/lib/styles/scroll-container.d.ts +1 -1
- package/lib/styles/scroll-container.d.ts.map +1 -1
- package/lib/styles/select-base.d.ts +9 -0
- package/lib/styles/select-base.d.ts.map +1 -0
- package/lib/styles/select-base.js +973 -0
- package/lib/styles/select-base.js.map +1 -0
- package/lib/styles/select.d.ts +3 -3
- package/lib/styles/select.d.ts.map +1 -1
- package/lib/styles/select.js +98 -30
- package/lib/styles/select.js.map +1 -1
- package/lib/styles/step.d.ts +1 -1
- package/lib/styles/step.d.ts.map +1 -1
- package/lib/styles/switch.d.ts +3 -1
- package/lib/styles/switch.d.ts.map +1 -1
- package/lib/styles/switch.js +25 -10
- package/lib/styles/switch.js.map +1 -1
- package/lib/styles/tab.d.ts +1 -1
- package/lib/styles/tab.d.ts.map +1 -1
- package/lib/styles/tabs.d.ts +1 -1
- package/lib/styles/tabs.d.ts.map +1 -1
- package/lib/styles/tabs.js +71 -1
- package/lib/styles/tabs.js.map +1 -1
- package/lib/styles/tag.d.ts.map +1 -1
- package/lib/styles/tag.js +4 -1
- package/lib/styles/tag.js.map +1 -1
- package/lib/styles/textarea.d.ts +1 -1
- package/lib/styles/textarea.d.ts.map +1 -1
- package/lib/styles/textarea.js +5 -5
- package/lib/styles/tooltip.d.ts +4 -2
- package/lib/styles/tooltip.d.ts.map +1 -1
- package/lib/styles/tooltip.js +4 -119
- package/lib/styles/tooltip.js.map +1 -1
- package/lib/styles/wizard.d.ts +1 -1
- package/lib/styles/wizard.d.ts.map +1 -1
- package/lib/styles/wizard.js +18 -6
- package/lib/styles/wizard.js.map +1 -1
- package/lib/types/common.d.ts +1 -1
- package/lib/types/common.d.ts.map +1 -1
- package/lib/types/common.js +3 -1
- package/lib/types/common.js.map +1 -1
- package/lib/utils/icons.d.ts +10 -0
- package/lib/utils/icons.d.ts.map +1 -0
- package/lib/utils/icons.js +10 -0
- package/lib/utils/icons.js.map +1 -0
- package/lib/utils/loader-registry.d.ts +2 -2
- package/lib/utils/loader-registry.js +2 -2
- package/lib/utils/positioning.d.ts +31 -0
- package/lib/utils/positioning.d.ts.map +1 -1
- package/lib/utils/positioning.js +22 -3
- package/lib/utils/positioning.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +7 -4
- package/css/tyrell-brand.css +0 -1015
- package/dist/tyrell-brand.css +0 -1015
package/lib/styles/checkbox.js
CHANGED
|
@@ -5,6 +5,27 @@
|
|
|
5
5
|
* carries the state. Full flavor color when checked, faint when unchecked,
|
|
6
6
|
* dash at mid-opacity when indeterminate, grayscale when disabled.
|
|
7
7
|
*/
|
|
8
|
+
import { FLAVORS } from "../types/common.js";
|
|
9
|
+
/* Flavor rules only set --checkbox-color (checked) / --checkbox-color-off
|
|
10
|
+
(unchecked) / --checkbox-ring (focus ring); the base rules below consume
|
|
11
|
+
them. Doubles as the per-instance override API: `ty-checkbox {
|
|
12
|
+
--checkbox-color: … }`. --checkbox-ring pre-resolves the color-mix() here
|
|
13
|
+
(rather than inlining a nested var(...,fallback) as a color-mix argument
|
|
14
|
+
directly in the box-shadow rule) — that nested form fails at
|
|
15
|
+
computed-value time in some engines. Fallback flavor `fb` is used for
|
|
16
|
+
custom flavors so missing tokens degrade to neutral. */
|
|
17
|
+
const checkboxFlavor = (f, fb) => {
|
|
18
|
+
const tok = (s) => fb
|
|
19
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
|
|
20
|
+
: `var(--ty-color-${f}${s})`;
|
|
21
|
+
return `
|
|
22
|
+
:host([flavor="${f}"]) { --checkbox-color: ${tok("")}; --checkbox-color-off: ${tok("-soft")}; --checkbox-ring: color-mix(in oklab, ${tok("")} 25%, transparent); }
|
|
23
|
+
:host([flavor="${f}+"]) { --checkbox-color: ${tok("-strong")}; --checkbox-color-off: ${tok("-soft")}; --checkbox-ring: color-mix(in oklab, ${tok("-strong")} 25%, transparent); }
|
|
24
|
+
:host([flavor="${f}-"]) { --checkbox-color: ${tok("-soft")}; --checkbox-color-off: ${tok("-faint")}; --checkbox-ring: color-mix(in oklab, ${tok("-soft")} 25%, transparent); }
|
|
25
|
+
`;
|
|
26
|
+
};
|
|
27
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
28
|
+
export const checkboxCustomFlavorCss = (base) => checkboxFlavor(base, "neutral");
|
|
8
29
|
export const checkboxStyles = `
|
|
9
30
|
:host {
|
|
10
31
|
display: inline-flex;
|
|
@@ -16,22 +37,26 @@ export const checkboxStyles = `
|
|
|
16
37
|
display: inline-flex;
|
|
17
38
|
align-items: center;
|
|
18
39
|
outline: none;
|
|
19
|
-
transition: all 0.15s ease-in-out;
|
|
40
|
+
transition: var(--ty-local-transition, all 0.15s ease-in-out);
|
|
20
41
|
user-select: none;
|
|
21
42
|
cursor: pointer;
|
|
22
43
|
border-radius: 6px;
|
|
23
44
|
gap: var(--ty-spacing-1);
|
|
24
|
-
|
|
45
|
+
/* Default (no flavor attribute) is neutral — defaults don't reflect to the
|
|
46
|
+
host attribute, so the fallbacks here carry the default look. */
|
|
47
|
+
color: var(--checkbox-color-off, var(--ty-color-neutral-soft));
|
|
25
48
|
}
|
|
26
49
|
|
|
27
50
|
.checkbox-container[aria-checked="true"] {
|
|
28
|
-
color: var(--ty-
|
|
51
|
+
color: var(--checkbox-color, var(--ty-color-neutral));
|
|
29
52
|
}
|
|
30
53
|
|
|
31
|
-
/* Visible focus ring (keyboard) — .focused is toggled by the component
|
|
54
|
+
/* Visible focus ring (keyboard) — .focused is toggled by the component.
|
|
55
|
+
Matches the checked-state color so a danger checkbox gets a red ring,
|
|
56
|
+
not a fixed primary one. */
|
|
32
57
|
.checkbox-container.focused,
|
|
33
58
|
.checkbox-container:focus-visible {
|
|
34
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-primary) 25%, transparent);
|
|
59
|
+
box-shadow: 0 0 0 3px var(--checkbox-ring, color-mix(in oklab, var(--ty-color-primary) 25%, transparent));
|
|
35
60
|
}
|
|
36
61
|
|
|
37
62
|
.checkbox-icon {
|
|
@@ -39,7 +64,7 @@ export const checkboxStyles = `
|
|
|
39
64
|
align-items: center;
|
|
40
65
|
justify-content: center;
|
|
41
66
|
color: inherit;
|
|
42
|
-
transition: color 0.15s ease-in-out;
|
|
67
|
+
transition: var(--ty-local-transition, color 0.15s ease-in-out);
|
|
43
68
|
pointer-events: none;
|
|
44
69
|
/* Let the container handle the click */
|
|
45
70
|
}
|
|
@@ -71,55 +96,8 @@ export const checkboxStyles = `
|
|
|
71
96
|
height: 24px;
|
|
72
97
|
}
|
|
73
98
|
|
|
74
|
-
/* ===== SEMANTIC FLAVORS ===== */
|
|
75
|
-
|
|
76
|
-
.checkbox-container.primary {
|
|
77
|
-
color: var(--ty-color-primary-soft);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.checkbox-container.primary[aria-checked="true"] {
|
|
81
|
-
color: var(--ty-color-primary);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.checkbox-container.secondary {
|
|
85
|
-
color: var(--ty-color-secondary-soft);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.checkbox-container.secondary[aria-checked="true"] {
|
|
89
|
-
color: var(--ty-color-secondary);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.checkbox-container.success {
|
|
93
|
-
color: var(--ty-color-success-soft);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.checkbox-container.success[aria-checked="true"] {
|
|
97
|
-
color: var(--ty-color-success);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.checkbox-container.danger {
|
|
101
|
-
color: var(--ty-color-danger-soft);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.checkbox-container.danger[aria-checked="true"] {
|
|
105
|
-
color: var(--ty-color-danger);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.checkbox-container.warning {
|
|
109
|
-
color: var(--ty-color-warning-soft);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.checkbox-container.warning[aria-checked="true"] {
|
|
113
|
-
color: var(--ty-color-warning);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.checkbox-container.neutral {
|
|
117
|
-
color: var(--ty-color-neutral-soft);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.checkbox-container.neutral[aria-checked="true"] {
|
|
121
|
-
color: var(--ty-color-neutral);
|
|
122
|
-
}
|
|
99
|
+
/* ===== SEMANTIC FLAVORS (set --checkbox-color[-off], consumed above) ===== */
|
|
100
|
+
${FLAVORS.map((f) => checkboxFlavor(f)).join("")}
|
|
123
101
|
|
|
124
102
|
/* ===== STATES ===== */
|
|
125
103
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/styles/checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/styles/checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C;;;;;;;0DAO0D;AAC1D,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,EAAW,EAAE,EAAE;IAChD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CACxB,EAAE;QACA,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI;QACvD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,OAAO;iBACQ,CAAC,4BAA4B,GAAG,CAAC,EAAE,CAAC,2BAA2B,GAAG,CAAC,OAAO,CAAC,0CAA0C,GAAG,CAAC,EAAE,CAAC;iBAC5H,CAAC,4BAA4B,GAAG,CAAC,SAAS,CAAC,2BAA2B,GAAG,CAAC,OAAO,CAAC,0CAA0C,GAAG,CAAC,SAAS,CAAC;iBAC1I,CAAC,4BAA4B,GAAG,CAAC,OAAO,CAAC,2BAA2B,GAAG,CAAC,QAAQ,CAAC,0CAA0C,GAAG,CAAC,OAAO,CAAC;CACvJ,CAAC;AACF,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuE5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC/C,CAAC"}
|
package/lib/styles/copy.d.ts
CHANGED
|
@@ -3,5 +3,7 @@
|
|
|
3
3
|
* Read-only field with copy-to-clipboard functionality
|
|
4
4
|
* Extends input styles with copy-specific styling
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
7
|
+
export declare const copyCustomFlavorCss: (base: string) => string;
|
|
8
|
+
export declare const copyStyles: string;
|
|
7
9
|
//# sourceMappingURL=copy.d.ts.map
|
package/lib/styles/copy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/styles/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/styles/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,WAAgC,CAAC;AAEjF,eAAO,MAAM,UAAU,QA0HtB,CAAA"}
|
package/lib/styles/copy.js
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
* Read-only field with copy-to-clipboard functionality
|
|
4
4
|
* Extends input styles with copy-specific styling
|
|
5
5
|
*/
|
|
6
|
+
import { FLAVORS } from "../types/common.js";
|
|
7
|
+
/* Flavor rules only set --copy-color (button), --copy-color-hover, and
|
|
8
|
+
--copy-bg-hover (wrapper hover); the base rules below consume them.
|
|
9
|
+
Doubles as the per-instance override API. Fallback flavor `fb` is used
|
|
10
|
+
for custom flavors so missing tokens degrade to neutral. */
|
|
11
|
+
const copyFlavor = (f, fb) => {
|
|
12
|
+
const c = (s) => fb
|
|
13
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
|
|
14
|
+
: `var(--ty-color-${f}${s})`;
|
|
15
|
+
const bg = (s) => fb
|
|
16
|
+
? `var(--ty-bg-${f}${s}, var(--ty-bg-${fb}${s}))`
|
|
17
|
+
: `var(--ty-bg-${f}${s})`;
|
|
18
|
+
return `
|
|
19
|
+
:host([flavor="${f}"]) { --copy-color: ${c("")}; --copy-color-hover: ${c("-strong")}; --copy-bg-hover: ${bg("-soft")}; }
|
|
20
|
+
:host([flavor="${f}+"]) { --copy-color: ${c("-strong")}; --copy-color-hover: ${c("-strong")}; --copy-bg-hover: ${bg("-soft")}; }
|
|
21
|
+
:host([flavor="${f}-"]) { --copy-color: ${c("-soft")}; --copy-color-hover: ${c("")}; --copy-bg-hover: ${bg("-soft")}; }
|
|
22
|
+
`;
|
|
23
|
+
};
|
|
24
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
25
|
+
export const copyCustomFlavorCss = (base) => copyFlavor(base, "neutral");
|
|
6
26
|
export const copyStyles = `
|
|
7
27
|
/* Copy field value display */
|
|
8
28
|
.copy-field-value {
|
|
@@ -66,10 +86,10 @@ export const copyStyles = `
|
|
|
66
86
|
font-size: 0.8em;
|
|
67
87
|
}
|
|
68
88
|
|
|
69
|
-
/* Hover state - primary
|
|
89
|
+
/* Hover state — flavor-soft background (primary by default) */
|
|
70
90
|
.input-wrapper:not(.disabled):hover {
|
|
71
|
-
background: var(--ty-bg-primary-soft);
|
|
72
|
-
transition: background 0.2s ease;
|
|
91
|
+
background: var(--copy-bg-hover, var(--ty-bg-primary-soft));
|
|
92
|
+
transition: var(--ty-local-transition, background 0.2s ease);
|
|
73
93
|
}
|
|
74
94
|
|
|
75
95
|
/* Copy button */
|
|
@@ -83,14 +103,14 @@ export const copyStyles = `
|
|
|
83
103
|
cursor: pointer;
|
|
84
104
|
border: none;
|
|
85
105
|
background: transparent;
|
|
86
|
-
color: var(--ty-text-soft);
|
|
87
|
-
transition: color 0.2s ease, transform 0.2s ease;
|
|
106
|
+
color: var(--copy-color, var(--ty-text-soft));
|
|
107
|
+
transition: var(--ty-local-transition, color 0.2s ease, transform 0.2s ease);
|
|
88
108
|
padding: 0;
|
|
89
109
|
margin: 0;
|
|
90
110
|
}
|
|
91
111
|
|
|
92
112
|
.copy-button:hover:not(.disabled) {
|
|
93
|
-
color: var(--ty-text);
|
|
113
|
+
color: var(--copy-color-hover, var(--ty-text));
|
|
94
114
|
transform: scale(1.1);
|
|
95
115
|
}
|
|
96
116
|
|
|
@@ -122,5 +142,8 @@ export const copyStyles = `
|
|
|
122
142
|
.input-wrapper.disabled {
|
|
123
143
|
cursor: not-allowed;
|
|
124
144
|
}
|
|
145
|
+
|
|
146
|
+
/* ===== SEMANTIC FLAVORS (set --copy-*, consumed above) ===== */
|
|
147
|
+
${FLAVORS.map((f) => copyFlavor(f)).join("")}
|
|
125
148
|
`;
|
|
126
149
|
//# sourceMappingURL=copy.js.map
|
package/lib/styles/copy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/styles/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/styles/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C;;;8DAG8D;AAC9D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAW,EAAE,EAAE;IAC5C,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CACtB,EAAE;QACA,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI;QACvD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CACvB,EAAE;QACA,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI;QACjD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9B,OAAO;iBACQ,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC;iBACpG,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC;iBAC3G,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC;CAClH,CAAC;AACF,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyHxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CAC3C,CAAA"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Shared CSS for CustomScrollbar utility
|
|
3
3
|
* Include this in any component that uses CustomScrollbar
|
|
4
4
|
*/
|
|
5
|
-
export declare const customScrollbarStyles = "\n/* ===================================== */\n/* Custom Scrollbar - Vertical Track */\n/* ===================================== */\n\n.ty-scrollbar-track-y {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-y.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-y.has-overflow:hover,\n.ty-scrollbar-track-y.has-overflow.scrolling,\n.ty-scrollbar-track-y.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-y::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-y:hover::before,\n.ty-scrollbar-track-y.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-y {\n position: absolute;\n right: 0;\n width: 100%;\n min-height: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: background 0.15s ease-out;\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-y:hover,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-y:active,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* ===================================== */\n/* Custom Scrollbar - Horizontal Track */\n/* ===================================== */\n\n.ty-scrollbar-track-x {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-x.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-x.has-overflow:hover,\n.ty-scrollbar-track-x.has-overflow.scrolling,\n.ty-scrollbar-track-x.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-x::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-x:hover::before,\n.ty-scrollbar-track-x.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-x {\n position: absolute;\n bottom: 0;\n height: 100%;\n min-width: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: background 0.15s ease-out;\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-x:hover,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-x:active,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* ===================================== */\n/* Touch devices - hide custom scrollbar */\n/* ===================================== */\n\n@media (pointer: coarse) and (hover: none) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x {\n display: none !important;\n }\n}\n\n/* Respect reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x,\n .ty-scrollbar-thumb-y,\n .ty-scrollbar-thumb-x {\n transition-duration: 0ms !important;\n }\n}\n";
|
|
5
|
+
export declare const customScrollbarStyles = "\n/* ===================================== */\n/* Custom Scrollbar - Vertical Track */\n/* ===================================== */\n\n.ty-scrollbar-track-y {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-y.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-y.has-overflow:hover,\n.ty-scrollbar-track-y.has-overflow.scrolling,\n.ty-scrollbar-track-y.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-y::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-y:hover::before,\n.ty-scrollbar-track-y.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-y {\n position: absolute;\n right: 0;\n width: 100%;\n min-height: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: var(--ty-local-transition, background 0.15s ease-out);\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-y:hover,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-y:active,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* ===================================== */\n/* Custom Scrollbar - Horizontal Track */\n/* ===================================== */\n\n.ty-scrollbar-track-x {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-x.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-x.has-overflow:hover,\n.ty-scrollbar-track-x.has-overflow.scrolling,\n.ty-scrollbar-track-x.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-x::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-x:hover::before,\n.ty-scrollbar-track-x.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-x {\n position: absolute;\n bottom: 0;\n height: 100%;\n min-width: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: var(--ty-local-transition, background 0.15s ease-out);\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-x:hover,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-x:active,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* ===================================== */\n/* Touch devices - hide custom scrollbar */\n/* ===================================== */\n\n@media (pointer: coarse) and (hover: none) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x {\n display: none !important;\n }\n}\n\n/* Respect reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x,\n .ty-scrollbar-thumb-y,\n .ty-scrollbar-thumb-x {\n transition-duration: 0ms !important;\n }\n}\n";
|
|
6
6
|
//# sourceMappingURL=custom-scrollbar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-scrollbar.d.ts","sourceRoot":"","sources":["../../src/styles/custom-scrollbar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"custom-scrollbar.d.ts","sourceRoot":"","sources":["../../src/styles/custom-scrollbar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,+uIAuJjC,CAAC"}
|
|
@@ -53,7 +53,7 @@ export const customScrollbarStyles = `
|
|
|
53
53
|
min-height: var(--ty-scrollbar-thumb-min-height, 30px);
|
|
54
54
|
background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));
|
|
55
55
|
border-radius: var(--ty-scrollbar-radius, 4px);
|
|
56
|
-
transition: background 0.15s ease-out;
|
|
56
|
+
transition: var(--ty-local-transition, background 0.15s ease-out);
|
|
57
57
|
box-sizing: border-box;
|
|
58
58
|
border: 1px solid transparent;
|
|
59
59
|
}
|
|
@@ -118,7 +118,7 @@ export const customScrollbarStyles = `
|
|
|
118
118
|
min-width: var(--ty-scrollbar-thumb-min-height, 30px);
|
|
119
119
|
background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));
|
|
120
120
|
border-radius: var(--ty-scrollbar-radius, 4px);
|
|
121
|
-
transition: background 0.15s ease-out;
|
|
121
|
+
transition: var(--ty-local-transition, background 0.15s ease-out);
|
|
122
122
|
box-sizing: border-box;
|
|
123
123
|
border: 1px solid transparent;
|
|
124
124
|
}
|
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
* Date Picker Component Styles
|
|
3
3
|
* PORTED FROM: cljs/ty/components/date_picker.css
|
|
4
4
|
*/
|
|
5
|
-
export declare const datePickerStyles = "\n/* Date Picker Component Styles */\n:host {\n display: block;\n width: auto;\n min-width: 200px;\n\n /* ==========================================================================\n Theming Tokens \u2014 Date Picker Stub\n Thin shim over --ty-input-*. Override these to retheme just the date-picker\n trigger without affecting other inputs.\n ========================================================================== */\n --ty-date-picker-bg: var(--ty-input-bg);\n --ty-date-picker-color: var(--ty-input-color);\n --ty-date-picker-placeholder: var(--ty-input-placeholder);\n --ty-date-picker-border: var(--ty-input-border);\n --ty-date-picker-border-hover: var(--ty-input-border-hover);\n --ty-date-picker-border-focus: var(--ty-input-border-focus);\n --ty-date-picker-shadow-focus: var(--ty-input-shadow-focus);\n --ty-date-picker-disabled-bg: var(--ty-input-disabled-bg);\n --ty-date-picker-disabled-color: var(--ty-input-disabled-color);\n --ty-date-picker-radius: var(--ty-radius-md);\n\n /* ==========================================================================\n Theming Tokens \u2014 Calendar Popup Surface\n Shared with ty-calendar / ty-calendar-month theming.\n ========================================================================== */\n --ty-calendar-surface-bg: var(--ty-surface-floating);\n --ty-calendar-surface-border: var(--ty-input-border);\n --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));\n --ty-calendar-surface-radius: var(--ty-radius-lg);\n\n /* ==========================================================================\n Theming Tokens \u2014 Time Section\n ========================================================================== */\n --ty-calendar-time-bg: transparent;\n --ty-calendar-time-border: var(--ty-border-faint);\n --ty-calendar-time-label-color: var(--ty-color-neutral);\n --ty-calendar-time-input-color: var(--ty-input-color);\n --ty-calendar-time-placeholder-color: var(--ty-input-placeholder);\n --ty-calendar-time-icon-color: var(--ty-color-neutral-soft);\n}\n\n/* Container structure (reuses dropdown patterns) */\n.dropdown-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\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-icon {\n display: inline-flex;\n align-items: center;\n color: #ef4444;\n width: 12px;\n height: 12px;\n vertical-align: middle;\n margin-left: 4px;\n}\n\n.dropdown-wrapper {\n position: relative;\n display: block;\n width: 100%;\n}\n\n/* Start-slot icon (leading content inside the date-picker stub) */\n.date-picker-stub ::slotted([slot=\"start\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin-right: 0.5rem;\n color: var(--ty-color-text-soft);\n}\n\n.date-picker-stub ::slotted(ty-icon[slot=\"start\"]) {\n width: 1em;\n height: 1em;\n}\n\n/* Date picker stub (styled like dropdown) */\n.date-picker-stub {\n width: 100%;\n cursor: pointer;\n box-sizing: border-box;\n position: relative;\n display: flex;\n align-items: center;\n background: var(--ty-date-picker-bg);\n color: var(--ty-date-picker-color);\n border: 1px solid var(--ty-date-picker-border);\n border-radius: var(--ty-date-picker-radius);\n font-family: var(--ty-font-sans);\n font-size: var(--ty-font-sm);\n font-weight: var(--ty-font-normal);\n line-height: var(--ty-line-height-tight);\n min-height: var(--ty-size-md);\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n padding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n transition: var(--ty-transition-all), opacity 0.2s ease;\n outline: none;\n}\n\n.date-picker-stub:hover:not([disabled]):not(.open) {\n border-color: var(--ty-date-picker-border-hover);\n}\n\n.date-picker-stub[disabled] {\n background-color: var(--ty-date-picker-disabled-bg);\n color: var(--ty-date-picker-disabled-color);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.date-picker-stub:focus,\n.date-picker-stub.open {\n border-color: var(--ty-date-picker-border-focus);\n box-shadow: 0 0 0 3px var(--ty-date-picker-shadow-focus);\n}\n\n/* Size variants */\n.date-picker-stub.xs {\n min-height: var(--ty-size-xs);\n font-size: var(--ty-font-xs);\n padding: var(--ty-spacing-1) var(--ty-spacing-2);\n padding-right: calc(var(--ty-spacing-2) + 0.875rem + var(--ty-spacing-1));\n}\n\n.date-picker-stub.sm {\n min-height: var(--ty-size-sm);\n font-size: var(--ty-font-xs);\n padding: var(--ty-spacing-1) var(--ty-spacing-2);\n padding-right: calc(var(--ty-spacing-2) + 0.875rem + var(--ty-spacing-1));\n}\n\n.date-picker-stub.lg {\n min-height: var(--ty-size-lg);\n font-size: var(--ty-font-base);\n padding: var(--ty-spacing-2) var(--ty-spacing-4);\n padding-right: calc(var(--ty-spacing-4) + 1.125rem + var(--ty-spacing-2));\n}\n\n.date-picker-stub.xl {\n min-height: var(--ty-size-xl);\n font-size: var(--ty-font-lg);\n padding: var(--ty-spacing-3) var(--ty-spacing-4);\n padding-right: calc(var(--ty-spacing-4) + 1.25rem + var(--ty-spacing-3));\n}\n\n/* Flavor variants */\n/* Primary - Main brand focus state */\n.date-picker-stub.primary {\n border-color: var(--ty-input-primary-border, var(--ty-color-primary));\n}\n\n.date-picker-stub.primary:hover:not([disabled]) {\n border-color: var(--ty-color-primary-bold);\n}\n\n.date-picker-stub.primary:focus,\n.date-picker-stub.primary.open {\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 - Supporting action focus state */\n.date-picker-stub.secondary {\n border-color: var(--ty-input-secondary-border, var(--ty-color-secondary));\n}\n\n.date-picker-stub.secondary:hover:not([disabled]) {\n border-color: var(--ty-color-secondary-bold);\n}\n\n.date-picker-stub.secondary:focus,\n.date-picker-stub.secondary.open {\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 - Valid/confirmed input state */\n.date-picker-stub.success {\n border-color: var(--ty-input-success-border, var(--ty-color-success));\n}\n\n.date-picker-stub.success:hover:not([disabled]) {\n border-color: var(--ty-color-success-bold);\n}\n\n.date-picker-stub.success:focus,\n.date-picker-stub.success.open {\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 - Error/invalid input state */\n.date-picker-stub.danger {\n border-color: var(--ty-input-danger-border, var(--ty-color-danger));\n}\n\n.date-picker-stub.danger:hover:not([disabled]) {\n border-color: var(--ty-color-danger-bold);\n}\n\n.date-picker-stub.danger:focus,\n.date-picker-stub.danger.open {\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 - Caution/attention needed input state */\n.date-picker-stub.warning {\n border-color: var(--ty-input-warning-border, var(--ty-color-warning));\n}\n\n.date-picker-stub.warning:hover:not([disabled]) {\n border-color: var(--ty-color-warning-bold);\n}\n\n.date-picker-stub.warning:focus,\n.date-picker-stub.warning.open {\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/* Text content */\n.stub-text {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n color: inherit;\n pointer-events: none;\n}\n\n.stub-text.placeholder {\n color: var(--ty-date-picker-placeholder);\n}\n\n/* Icons */\n.stub-icons {\n display: flex;\n align-items: center;\n gap: var(--ty-spacing-1);\n position: absolute;\n right: var(--ty-spacing-3);\n top: 50%;\n transform: translateY(-50%);\n height: 1rem;\n pointer-events: none;\n z-index: 2;\n}\n\n.stub-clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n padding: 0;\n border: none;\n background: none;\n color: var(--ty-color-neutral-soft);\n cursor: pointer;\n border-radius: var(--ty-radius-sm);\n transition: all 0.15s ease;\n pointer-events: auto;\n}\n\n.stub-clear:hover {\n color: var(--ty-color-negative);\n background-color: var(--ty-bg-negative-faint);\n}\n\n.stub-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n color: var(--ty-color-neutral-soft);\n}\n\n.date-picker-stub:hover .stub-arrow {\n color: var(--ty-color-neutral);\n}\n\n.date-picker-stub:focus .stub-arrow,\n.date-picker-stub.open .stub-arrow {\n color: var(--ty-date-picker-border-focus);\n}\n\n/* Calendar dialog (showModal positioning system) */\n.calendar-dialog {\n position: fixed;\n flex-direction: column;\n max-width: 90vw;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n box-sizing: border-box;\n padding: var(--calendar-padding, 8px);\n\n /* Hidden by default */\n opacity: 0;\n transition: opacity 200ms ease;\n\n transform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));\n top: -1000px;\n left: -1000px;\n}\n\n/* Direction-based positioning with CSS classes */\n.calendar-dialog.position-below {\n left: var(--calendar-x);\n top: var(--calendar-y);\n}\n\n.calendar-dialog.position-above {\n left: var(--calendar-x);\n bottom: var(--calendar-y);\n top: auto;\n flex-direction: column-reverse;\n}\n\n.calendar-dialog.open {\n opacity: 1;\n}\n\n.calendar-dialog::backdrop {\n background: transparent\n}\n\n/* Calendar content container */\n.calendar-content {\n background-color: var(--ty-calendar-surface-bg);\n border: 1px solid var(--ty-calendar-surface-border);\n border-radius: var(--ty-calendar-surface-radius);\n box-shadow: var(--ty-calendar-surface-shadow);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Native date input for mobile */\n/* Native input is invisible \u2014 used only to trigger the OS picker */\n.native-date-input {\n position: absolute;\n inset: 0;\n opacity: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n border: none;\n cursor: pointer;\n z-index: 1;\n}\n\n.native-date-input::-webkit-calendar-picker-indicator {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n cursor: pointer;\n}\n\n/* Time input section */\n.time-section {\n display: flex;\n min-height: 2.5rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n border-top: 1px solid var(--ty-calendar-time-border);\n background-color: var(--ty-calendar-time-bg);\n width: 100%;\n box-sizing: border-box;\n position: relative;\n}\n\n.time-label {\n font-size: var(--ty-font-sm);\n font-weight: 500;\n color: var(--ty-calendar-time-label-color);\n flex-shrink: 0;\n}\n\n.time-input {\n width: 3.5rem;\n border: 1px solid var(--ty-input-border);\n border-radius: var(--ty-radius-sm);\n background: var(--ty-input-bg);\n color: var(--ty-calendar-time-input-color);\n font-family: var(--ty-font-sans);\n font-size: var(--ty-font-sm);\n font-variant-numeric: tabular-nums;\n text-align: center;\n padding: 0.25rem 0.375rem;\n outline: none;\n transition: var(--ty-transition-all);\n}\n\n.time-input:focus {\n border-color: var(--ty-input-border-focus);\n box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n\n.time-input::placeholder {\n color: var(--ty-calendar-time-placeholder-color);\n}\n\n.time-icon {\n display: flex;\n align-items: center;\n color: var(--ty-calendar-time-icon-color);\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n";
|
|
5
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
6
|
+
export declare const datePickerCustomFlavorCss: (base: string) => string;
|
|
7
|
+
export declare const datePickerStyles: string;
|
|
6
8
|
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/styles/date-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/styles/date-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsCH,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,WAAsC,CAAC;AAE7F,eAAO,MAAM,gBAAgB,QAuW5B,CAAC"}
|
|
@@ -2,12 +2,48 @@
|
|
|
2
2
|
* Date Picker Component Styles
|
|
3
3
|
* PORTED FROM: cljs/ty/components/date_picker.css
|
|
4
4
|
*/
|
|
5
|
+
import { FLAVORS } from "../types/common.js";
|
|
6
|
+
/* Flavor rules only set --date-picker-accent (border), -accent-bold
|
|
7
|
+
(hover/focus border), and -ring (focus shadow); the stub base rules
|
|
8
|
+
consume them. Doubles as the per-instance override API. Neutral is
|
|
9
|
+
skipped — the 'default' flavor is the unstyled --ty-date-picker-* chrome.
|
|
10
|
+
Fallback flavor `fb` is used for custom flavors (suffixed tokens fall
|
|
11
|
+
back to the custom base color, then neutral). */
|
|
12
|
+
const datePickerFlavor = (f, fb) => {
|
|
13
|
+
const c = (s) => fb
|
|
14
|
+
? s
|
|
15
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${f}, var(--ty-color-${fb}${s})))`
|
|
16
|
+
: `var(--ty-color-${f}, var(--ty-color-${fb}))`
|
|
17
|
+
: s
|
|
18
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${f}))`
|
|
19
|
+
: `var(--ty-color-${f})`;
|
|
20
|
+
return `
|
|
21
|
+
:host([flavor="${f}"]) {
|
|
22
|
+
--date-picker-accent: var(--ty-input-${f}-border, ${c("-soft")});
|
|
23
|
+
--date-picker-accent-bold: ${c("")};
|
|
24
|
+
--date-picker-ring: color-mix(in oklab, ${c("")} 15%, transparent);
|
|
25
|
+
}
|
|
26
|
+
:host([flavor="${f}+"]) {
|
|
27
|
+
--date-picker-accent: ${c("")};
|
|
28
|
+
--date-picker-accent-bold: ${c("-strong")};
|
|
29
|
+
--date-picker-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
|
|
30
|
+
}
|
|
31
|
+
:host([flavor="${f}-"]) {
|
|
32
|
+
--date-picker-accent: ${c("-faint")};
|
|
33
|
+
--date-picker-accent-bold: ${c("-soft")};
|
|
34
|
+
--date-picker-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
};
|
|
38
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
39
|
+
export const datePickerCustomFlavorCss = (base) => datePickerFlavor(base, "neutral");
|
|
5
40
|
export const datePickerStyles = `
|
|
6
41
|
/* Date Picker Component Styles */
|
|
7
42
|
:host {
|
|
8
43
|
display: block;
|
|
9
44
|
width: auto;
|
|
10
45
|
min-width: 200px;
|
|
46
|
+
font-family: var(--ty-font-sans);
|
|
11
47
|
|
|
12
48
|
/* ==========================================================================
|
|
13
49
|
Theming Tokens — Date Picker Stub
|
|
@@ -106,7 +142,7 @@ export const datePickerStyles = `
|
|
|
106
142
|
align-items: center;
|
|
107
143
|
background: var(--ty-date-picker-bg);
|
|
108
144
|
color: var(--ty-date-picker-color);
|
|
109
|
-
border: 1px solid var(--ty-date-picker-border);
|
|
145
|
+
border: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));
|
|
110
146
|
border-radius: var(--ty-date-picker-radius);
|
|
111
147
|
font-family: var(--ty-font-sans);
|
|
112
148
|
font-size: var(--ty-font-sm);
|
|
@@ -120,7 +156,7 @@ export const datePickerStyles = `
|
|
|
120
156
|
}
|
|
121
157
|
|
|
122
158
|
.date-picker-stub:hover:not([disabled]):not(.open) {
|
|
123
|
-
border-color: var(--ty-date-picker-border-hover);
|
|
159
|
+
border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));
|
|
124
160
|
}
|
|
125
161
|
|
|
126
162
|
.date-picker-stub[disabled] {
|
|
@@ -132,18 +168,11 @@ export const datePickerStyles = `
|
|
|
132
168
|
|
|
133
169
|
.date-picker-stub:focus,
|
|
134
170
|
.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);
|
|
171
|
+
border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
|
|
172
|
+
box-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));
|
|
137
173
|
}
|
|
138
174
|
|
|
139
175
|
/* 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));
|
|
145
|
-
}
|
|
146
|
-
|
|
147
176
|
.date-picker-stub.sm {
|
|
148
177
|
min-height: var(--ty-size-sm);
|
|
149
178
|
font-size: var(--ty-font-xs);
|
|
@@ -158,88 +187,8 @@ export const datePickerStyles = `
|
|
|
158
187
|
padding-right: calc(var(--ty-spacing-4) + 1.125rem + var(--ty-spacing-2));
|
|
159
188
|
}
|
|
160
189
|
|
|
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
|
-
}
|
|
228
|
-
|
|
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
|
-
}
|
|
190
|
+
/* Flavor variants — set --date-picker-accent*, consumed by the stub rules above */
|
|
191
|
+
${FLAVORS.filter((f) => f !== "neutral").map((f) => datePickerFlavor(f)).join("")}
|
|
243
192
|
|
|
244
193
|
/* Text content */
|
|
245
194
|
.stub-text {
|
|
@@ -282,13 +231,18 @@ export const datePickerStyles = `
|
|
|
282
231
|
color: var(--ty-color-neutral-soft);
|
|
283
232
|
cursor: pointer;
|
|
284
233
|
border-radius: var(--ty-radius-sm);
|
|
285
|
-
transition: all 0.15s ease;
|
|
234
|
+
transition: var(--ty-local-transition, all 0.15s ease);
|
|
286
235
|
pointer-events: auto;
|
|
287
236
|
}
|
|
288
237
|
|
|
289
238
|
.stub-clear:hover {
|
|
290
|
-
|
|
291
|
-
|
|
239
|
+
/* Clear is a destructive utility action, not the field's semantic flavor
|
|
240
|
+
— it stays neutral at rest and always warns danger-red on hover,
|
|
241
|
+
regardless of the field's own flavor. (--ty-color-negative/
|
|
242
|
+
--ty-bg-negative-faint used here previously don't exist as tokens —
|
|
243
|
+
this silently fell back to unstyled inherited color.) */
|
|
244
|
+
color: var(--ty-color-danger);
|
|
245
|
+
background-color: var(--ty-bg-danger-soft);
|
|
292
246
|
}
|
|
293
247
|
|
|
294
248
|
.stub-arrow {
|
|
@@ -297,16 +251,16 @@ export const datePickerStyles = `
|
|
|
297
251
|
justify-content: center;
|
|
298
252
|
width: 1rem;
|
|
299
253
|
height: 1rem;
|
|
300
|
-
color: var(--ty-color-neutral-soft);
|
|
254
|
+
color: var(--date-picker-accent, var(--ty-color-neutral-soft));
|
|
301
255
|
}
|
|
302
256
|
|
|
303
257
|
.date-picker-stub:hover .stub-arrow {
|
|
304
|
-
color: var(--ty-color-neutral);
|
|
258
|
+
color: var(--date-picker-accent-bold, var(--ty-color-neutral));
|
|
305
259
|
}
|
|
306
260
|
|
|
307
261
|
.date-picker-stub:focus .stub-arrow,
|
|
308
262
|
.date-picker-stub.open .stub-arrow {
|
|
309
|
-
color: var(--ty-date-picker-border-focus);
|
|
263
|
+
color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
|
|
310
264
|
}
|
|
311
265
|
|
|
312
266
|
/* Calendar dialog (showModal positioning system) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../src/styles/date-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../src/styles/date-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C;;;;;mDAKmD;AACnD,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAE,EAAW,EAAE,EAAE;IAClD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CACtB,EAAE;QACA,CAAC,CAAC,CAAC;YACD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,GAAG,CAAC,KAAK;YAC7E,CAAC,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,IAAI;QACjD,CAAC,CAAC,CAAC;YACD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI;YAClD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC;IAC/B,OAAO;iBACQ,CAAC;yCACuB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;+BACjC,CAAC,CAAC,EAAE,CAAC;4CACQ,CAAC,CAAC,EAAE,CAAC;;iBAEhC,CAAC;0BACQ,CAAC,CAAC,EAAE,CAAC;+BACA,CAAC,CAAC,SAAS,CAAC;4CACC,CAAC,CAAC,SAAS,CAAC;;iBAEvC,CAAC;0BACQ,CAAC,CAAC,QAAQ,CAAC;+BACN,CAAC,CAAC,OAAO,CAAC;4CACG,CAAC,CAAC,OAAO,CAAC;;CAErD,CAAC;AACF,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuJ9B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgNhF,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const fileUploadStyles = "\n:host {\n display: block;\n font-family: var(--ty-font-sans);\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/* ===== LABEL ===== */\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\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: 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\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: 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/* ===== HINT TEXT ===== */\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\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: 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\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/* ===== ACCESSIBILITY ===== */\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
|
+
export declare const fileUploadStyles = "\n:host {\n display: block;\n font-family: var(--ty-font-sans);\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/* ===== LABEL ===== */\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\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\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/* ===== HINT TEXT ===== */\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\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\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/* ===== ACCESSIBILITY ===== */\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";
|
|
2
2
|
//# sourceMappingURL=file-upload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/styles/file-upload.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/styles/file-upload.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,6mJA+O5B,CAAA"}
|
|
@@ -41,7 +41,7 @@ export const fileUploadStyles = `
|
|
|
41
41
|
padding: 2rem 1.5rem;
|
|
42
42
|
text-align: center;
|
|
43
43
|
cursor: pointer;
|
|
44
|
-
transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
|
|
44
|
+
transition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);
|
|
45
45
|
outline: none;
|
|
46
46
|
display: flex;
|
|
47
47
|
flex-direction: column;
|
|
@@ -101,7 +101,7 @@ export const fileUploadStyles = `
|
|
|
101
101
|
display: flex;
|
|
102
102
|
align-items: center;
|
|
103
103
|
justify-content: center;
|
|
104
|
-
transition: color 0.15s ease, transform 0.15s ease;
|
|
104
|
+
transition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);
|
|
105
105
|
pointer-events: none;
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -191,7 +191,7 @@ export const fileUploadStyles = `
|
|
|
191
191
|
align-items: center;
|
|
192
192
|
justify-content: center;
|
|
193
193
|
border-radius: 50%;
|
|
194
|
-
transition: color 0.15s ease, background-color 0.15s ease;
|
|
194
|
+
transition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);
|
|
195
195
|
border: none;
|
|
196
196
|
background: none;
|
|
197
197
|
padding: 0;
|
package/lib/styles/input.d.ts
CHANGED
|
@@ -3,5 +3,7 @@
|
|
|
3
3
|
* PORTED FROM: clj/ty/components/input.css
|
|
4
4
|
* Phase A: Regular input styles only (no checkbox, no numeric formatting)
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
7
|
+
export declare const inputCustomFlavorCss: (base: string) => string;
|
|
8
|
+
export declare const inputStyles: string;
|
|
7
9
|
//# sourceMappingURL=input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/styles/input.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/styles/input.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+CH,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,WAAiC,CAAC;AAEnF,eAAO,MAAM,WAAW,QAoTvB,CAAA"}
|