tyrell-components 1.0.0-TC30 → 1.0.0-TC32
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/css/tyrell.css +48 -12
- package/dist/tyrell.css +48 -12
- package/dist/tyrell.js +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 +5 -1
- package/lib/components/date-picker.d.ts.map +1 -1
- package/lib/components/date-picker.js +113 -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/popup.d.ts.map +1 -1
- package/lib/components/popup.js +14 -0
- 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 +75 -5
- package/lib/components/select.d.ts.map +1 -1
- package/lib/components/select.js +282 -47
- package/lib/components/select.js.map +1 -1
- package/lib/components/selected-tags.d.ts +1 -1
- package/lib/components/selected-tags.js +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 +18 -2
- package/lib/components/tabs.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/styles/button.d.ts.map +1 -1
- package/lib/styles/button.js +10 -6
- 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 +63 -8
- package/lib/styles/calendar-month.js.map +1 -1
- package/lib/styles/checkbox.d.ts +3 -1
- package/lib/styles/checkbox.d.ts.map +1 -1
- package/lib/styles/checkbox.js +31 -53
- 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 +27 -4
- package/lib/styles/copy.js.map +1 -1
- 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 +52 -98
- package/lib/styles/date-picker.js.map +1 -1
- package/lib/styles/input.d.ts +3 -1
- package/lib/styles/input.d.ts.map +1 -1
- package/lib/styles/input.js +58 -119
- 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/radio.d.ts +3 -1
- package/lib/styles/radio.d.ts.map +1 -1
- package/lib/styles/radio.js +23 -20
- package/lib/styles/radio.js.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 +929 -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 +20 -18
- package/lib/styles/select.js.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 +23 -8
- package/lib/styles/switch.js.map +1 -1
- 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/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 +27 -0
- package/lib/utils/positioning.d.ts.map +1 -1
- package/lib/utils/positioning.js +20 -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 +1 -1
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
* Calendar Month Styles
|
|
3
3
|
* Improved design with better visual hierarchy and size variants
|
|
4
4
|
*/
|
|
5
|
+
import { FLAVORS } from "../types/common.js";
|
|
6
|
+
/* Flavor rules set --calendar-month-* local vars, wired in as the fallback
|
|
7
|
+
BEHIND every existing --ty-calendar-* public override (so those keep
|
|
8
|
+
working exactly as before) and AHEAD of the hardcoded primary default.
|
|
9
|
+
Doubles as the per-instance override API for a specific flavor: e.g.
|
|
10
|
+
`ty-calendar-month { --calendar-month-accent: ... }`. Fallback flavor
|
|
11
|
+
`fb` is used for custom flavors so missing tokens degrade to neutral. */
|
|
12
|
+
const calendarMonthFlavor = (f, fb) => {
|
|
13
|
+
const color = (s) => fb
|
|
14
|
+
? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
|
|
15
|
+
: `var(--ty-color-${f}${s})`;
|
|
16
|
+
const bg = (s) => fb
|
|
17
|
+
? `var(--ty-bg-${f}${s}, var(--ty-bg-${fb}${s}))`
|
|
18
|
+
: `var(--ty-bg-${f}${s})`;
|
|
19
|
+
return `
|
|
20
|
+
:host([flavor="${f}"]) {
|
|
21
|
+
--calendar-month-accent: ${color("")};
|
|
22
|
+
--calendar-month-selected-bg: ${bg("")};
|
|
23
|
+
--calendar-month-selected-color: ${color("-strong")};
|
|
24
|
+
--calendar-month-selected-hover-bg: ${bg("-bold")};
|
|
25
|
+
}
|
|
26
|
+
:host([flavor="${f}+"]) {
|
|
27
|
+
--calendar-month-accent: ${color("-strong")};
|
|
28
|
+
--calendar-month-selected-bg: ${bg("-bold")};
|
|
29
|
+
--calendar-month-selected-color: ${color("-strong")};
|
|
30
|
+
--calendar-month-selected-hover-bg: ${bg("-bold")};
|
|
31
|
+
}
|
|
32
|
+
:host([flavor="${f}-"]) {
|
|
33
|
+
--calendar-month-accent: ${color("-soft")};
|
|
34
|
+
--calendar-month-selected-bg: ${bg("-soft")};
|
|
35
|
+
--calendar-month-selected-color: ${color("")};
|
|
36
|
+
--calendar-month-selected-hover-bg: ${bg("")};
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
39
|
+
};
|
|
40
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
41
|
+
export const calendarMonthCustomFlavorCss = (base) => calendarMonthFlavor(base, "neutral");
|
|
5
42
|
export const calendarMonthStyles = `
|
|
6
43
|
/* ============================================================================
|
|
7
44
|
Theming Tokens
|
|
@@ -117,6 +154,14 @@ export const calendarMonthStyles = `
|
|
|
117
154
|
border-color: var(--ty-calendar-day-hover-border, transparent);
|
|
118
155
|
}
|
|
119
156
|
|
|
157
|
+
/* Keyboard focus ring (roving tabindex — see calendar-month.ts's render()).
|
|
158
|
+
:focus-visible, not :focus, so mouse/pointerdown activation doesn't flash
|
|
159
|
+
a ring; only Tab-in / arrow-key navigation does. */
|
|
160
|
+
.calendar-day-cell:focus-visible {
|
|
161
|
+
outline: none;
|
|
162
|
+
box-shadow: 0 0 0 2px var(--calendar-month-accent, var(--ty-color-primary));
|
|
163
|
+
}
|
|
164
|
+
|
|
120
165
|
/* ============================================================================
|
|
121
166
|
Day States
|
|
122
167
|
============================================================================ */
|
|
@@ -125,7 +170,7 @@ export const calendarMonthStyles = `
|
|
|
125
170
|
selected pill wins when today is picked */
|
|
126
171
|
.calendar-day-cell.today {
|
|
127
172
|
background-color: var(--ty-calendar-today-bg, transparent);
|
|
128
|
-
color: var(--ty-calendar-today-color, var(--ty-calendar-today-accent, var(--ty-color-primary)));
|
|
173
|
+
color: var(--ty-calendar-today-color, var(--ty-calendar-today-accent, var(--calendar-month-accent, var(--ty-color-primary))));
|
|
129
174
|
border-color: var(--ty-calendar-today-border, transparent);
|
|
130
175
|
font-weight: 600;
|
|
131
176
|
}
|
|
@@ -135,10 +180,15 @@ export const calendarMonthStyles = `
|
|
|
135
180
|
color: var(--ty-calendar-weekend-color, var(--ty-calendar-day-color, var(--ty-text)));
|
|
136
181
|
}
|
|
137
182
|
|
|
138
|
-
/* Other Month - Muted
|
|
183
|
+
/* Other Month - Muted.
|
|
184
|
+
Was color: var(--ty-color-neutral-faint) at opacity 0.5 — -faint alone is
|
|
185
|
+
only ~2.5:1 against the content surface (already under the 4.5:1 AA text
|
|
186
|
+
minimum), and blending it toward the background via opacity made it
|
|
187
|
+
worse (~1.5:1 in light mode). --ty-calendar-other-month-color is its own
|
|
188
|
+
token (tyrell.css :root / html.dark) calibrated to actually pass, with
|
|
189
|
+
opacity dropped rather than layered on top. */
|
|
139
190
|
.calendar-day-cell.other-month {
|
|
140
|
-
color: var(--ty-calendar-other-month-color,
|
|
141
|
-
opacity: var(--ty-calendar-other-month-opacity, 0.5);
|
|
191
|
+
color: var(--ty-calendar-other-month-color, #6b7280);
|
|
142
192
|
}
|
|
143
193
|
|
|
144
194
|
.calendar-day-cell.other-month:hover {
|
|
@@ -157,14 +207,14 @@ export const calendarMonthStyles = `
|
|
|
157
207
|
|
|
158
208
|
/* Selected: the one strong element in the grid */
|
|
159
209
|
.calendar-day-cell.selected {
|
|
160
|
-
background-color: var(--ty-calendar-selected-bg, var(--ty-bg-primary));
|
|
161
|
-
color: var(--ty-calendar-selected-color, var(--ty-color-primary-strong));
|
|
162
|
-
border-color: var(--ty-calendar-selected-border, var(--ty-calendar-accent, transparent));
|
|
210
|
+
background-color: var(--ty-calendar-selected-bg, var(--calendar-month-selected-bg, var(--ty-bg-primary)));
|
|
211
|
+
color: var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-color-primary-strong)));
|
|
212
|
+
border-color: var(--ty-calendar-selected-border, var(--ty-calendar-accent, var(--calendar-month-accent, transparent)));
|
|
163
213
|
font-weight: 600;
|
|
164
214
|
}
|
|
165
215
|
|
|
166
216
|
.calendar-day-cell.selected:hover {
|
|
167
|
-
background-color: var(--ty-calendar-selected-hover-bg, var(--ty-bg-primary-bold));
|
|
217
|
+
background-color: var(--ty-calendar-selected-hover-bg, var(--calendar-month-selected-hover-bg, var(--ty-bg-primary-bold)));
|
|
168
218
|
border-color: var(--ty-calendar-selected-hover-border, transparent);
|
|
169
219
|
}
|
|
170
220
|
|
|
@@ -249,5 +299,10 @@ export const calendarMonthStyles = `
|
|
|
249
299
|
justify-content: center;
|
|
250
300
|
box-sizing: border-box;
|
|
251
301
|
}
|
|
302
|
+
|
|
303
|
+
/* ============================================================================
|
|
304
|
+
Flavor Variants (set --calendar-month-*, consumed above)
|
|
305
|
+
============================================================================ */
|
|
306
|
+
${FLAVORS.map((f) => calendarMonthFlavor(f)).join("")}
|
|
252
307
|
`;
|
|
253
308
|
//# sourceMappingURL=calendar-month.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-month.js","sourceRoot":"","sources":["../../src/styles/calendar-month.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG
|
|
1
|
+
{"version":3,"file":"calendar-month.js","sourceRoot":"","sources":["../../src/styles/calendar-month.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C;;;;;2EAK2E;AAC3E,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAE,EAAW,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAC1B,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;6BACW,KAAK,CAAC,EAAE,CAAC;kCACJ,EAAE,CAAC,EAAE,CAAC;qCACH,KAAK,CAAC,SAAS,CAAC;wCACb,EAAE,CAAC,OAAO,CAAC;;iBAElC,CAAC;6BACW,KAAK,CAAC,SAAS,CAAC;kCACX,EAAE,CAAC,OAAO,CAAC;qCACR,KAAK,CAAC,SAAS,CAAC;wCACb,EAAE,CAAC,OAAO,CAAC;;iBAElC,CAAC;6BACW,KAAK,CAAC,OAAO,CAAC;kCACT,EAAE,CAAC,OAAO,CAAC;qCACR,KAAK,CAAC,EAAE,CAAC;wCACN,EAAE,CAAC,EAAE,CAAC;;CAE7C,CAAC;AACF,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwQjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,CAAC"}
|
package/lib/styles/checkbox.d.ts
CHANGED
|
@@ -5,5 +5,7 @@
|
|
|
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
|
-
|
|
8
|
+
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
9
|
+
export declare const checkboxCustomFlavorCss: (base: string) => string;
|
|
10
|
+
export declare const checkboxStyles: string;
|
|
9
11
|
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/styles/checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/styles/checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,WAAoC,CAAC;AAEzF,eAAO,MAAM,cAAc,QA0G1B,CAAC"}
|
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;
|
|
@@ -21,17 +42,21 @@ export const checkboxStyles = `
|
|
|
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 {
|
|
@@ -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,9 +86,9 @@ 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);
|
|
91
|
+
background: var(--copy-bg-hover, var(--ty-bg-primary-soft));
|
|
72
92
|
transition: background 0.2s ease;
|
|
73
93
|
}
|
|
74
94
|
|
|
@@ -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);
|
|
106
|
+
color: var(--copy-color, var(--ty-text-soft));
|
|
87
107
|
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,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 {
|
|
@@ -287,8 +236,13 @@ export const datePickerStyles = `
|
|
|
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"}
|
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
|