tyrell-components 1.0.0-TC55 → 1.0.0-TC57
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 +53 -53
- package/css/tyrell-theme.css +7 -2
- package/css/tyrell.css +9 -18
- package/dist/tyrell-theme.css +1 -1
- package/dist/tyrell.css +1 -1
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +17 -0
- package/lib/base/ty-component.d.ts.map +1 -0
- package/lib/base/ty-component.js +32 -1
- package/lib/base/ty-component.js.map +1 -0
- package/lib/components/button.d.ts.map +1 -0
- package/lib/components/button.js +7 -0
- package/lib/components/button.js.map +1 -0
- package/lib/components/calendar-month.d.ts.map +1 -0
- package/lib/components/calendar-month.js +3 -2
- package/lib/components/calendar-month.js.map +1 -0
- package/lib/components/calendar-navigation.d.ts +11 -0
- package/lib/components/calendar-navigation.d.ts.map +1 -0
- package/lib/components/calendar-navigation.js +51 -40
- package/lib/components/calendar-navigation.js.map +1 -0
- package/lib/components/calendar.d.ts +28 -0
- package/lib/components/calendar.d.ts.map +1 -0
- package/lib/components/calendar.js +186 -4
- package/lib/components/calendar.js.map +1 -0
- package/lib/components/checkbox.d.ts +2 -0
- package/lib/components/checkbox.d.ts.map +1 -0
- package/lib/components/checkbox.js +10 -3
- package/lib/components/checkbox.js.map +1 -0
- package/lib/components/copy.d.ts.map +1 -0
- package/lib/components/copy.js +9 -2
- package/lib/components/copy.js.map +1 -0
- package/lib/components/date-picker.d.ts +17 -16
- package/lib/components/date-picker.d.ts.map +1 -0
- package/lib/components/date-picker.js +182 -249
- package/lib/components/date-picker.js.map +1 -0
- package/lib/components/dropdown.d.ts +403 -0
- package/lib/components/dropdown.d.ts.map +1 -0
- package/lib/components/dropdown.js +1315 -0
- package/lib/components/dropdown.js.map +1 -0
- package/lib/components/file-upload.d.ts +6 -0
- package/lib/components/file-upload.js +29 -2
- package/lib/components/icon.d.ts.map +1 -0
- package/lib/components/icon.js.map +1 -0
- package/lib/components/input.d.ts +74 -2
- package/lib/components/input.d.ts.map +1 -0
- package/lib/components/input.js +168 -8
- package/lib/components/input.js.map +1 -0
- package/lib/components/modal.d.ts +4 -8
- package/lib/components/modal.d.ts.map +1 -0
- package/lib/components/modal.js +18 -25
- package/lib/components/modal.js.map +1 -0
- package/lib/components/multiselect.d.ts +389 -0
- package/lib/components/multiselect.d.ts.map +1 -0
- package/lib/components/multiselect.js +1301 -0
- package/lib/components/multiselect.js.map +1 -0
- package/lib/components/option.d.ts.map +1 -0
- package/lib/components/option.js +5 -0
- package/lib/components/option.js.map +1 -0
- package/lib/components/popup.d.ts.map +1 -0
- package/lib/components/popup.js +19 -4
- package/lib/components/popup.js.map +1 -0
- package/lib/components/radio.d.ts +17 -0
- package/lib/components/radio.js +42 -4
- package/lib/components/resize-observer.d.ts.map +1 -0
- package/lib/components/resize-observer.js.map +1 -0
- package/lib/components/scroll-container.d.ts +3 -2
- package/lib/components/scroll-container.d.ts.map +1 -0
- package/lib/components/scroll-container.js +5 -8
- package/lib/components/scroll-container.js.map +1 -0
- package/lib/components/select.d.ts +16 -6
- package/lib/components/select.js +73 -19
- package/lib/components/selected-tags.d.ts +7 -1
- package/lib/components/selected-tags.js +10 -1
- package/lib/components/step.d.ts.map +1 -0
- package/lib/components/step.js.map +1 -0
- package/lib/components/switch.d.ts +2 -0
- package/lib/components/switch.js +10 -3
- package/lib/components/tab.d.ts +49 -1
- package/lib/components/tab.d.ts.map +1 -0
- package/lib/components/tab.js +151 -10
- package/lib/components/tab.js.map +1 -0
- package/lib/components/tabs.d.ts +14 -2
- package/lib/components/tabs.d.ts.map +1 -0
- package/lib/components/tabs.js +184 -135
- package/lib/components/tabs.js.map +1 -0
- package/lib/components/tag.d.ts +4 -7
- package/lib/components/tag.d.ts.map +1 -0
- package/lib/components/tag.js +6 -7
- package/lib/components/tag.js.map +1 -0
- package/lib/components/textarea.d.ts +8 -3
- package/lib/components/textarea.d.ts.map +1 -0
- package/lib/components/textarea.js +23 -15
- package/lib/components/textarea.js.map +1 -0
- package/lib/components/tooltip.d.ts +4 -3
- package/lib/components/tooltip.d.ts.map +1 -0
- package/lib/components/tooltip.js +34 -24
- package/lib/components/tooltip.js.map +1 -0
- package/lib/components/wizard.d.ts +5 -4
- package/lib/components/wizard.d.ts.map +1 -0
- package/lib/components/wizard.js +120 -156
- package/lib/components/wizard.js.map +1 -0
- package/lib/icons/fontawesome/brands.d.ts.map +1 -0
- package/lib/icons/fontawesome/brands.js.map +1 -0
- package/lib/icons/fontawesome/regular.d.ts.map +1 -0
- package/lib/icons/fontawesome/regular.js.map +1 -0
- package/lib/icons/fontawesome/solid.d.ts.map +1 -0
- package/lib/icons/fontawesome/solid.js.map +1 -0
- package/lib/icons/heroicons/micro.d.ts.map +1 -0
- package/lib/icons/heroicons/micro.js.map +1 -0
- package/lib/icons/heroicons/mini.d.ts.map +1 -0
- package/lib/icons/heroicons/mini.js.map +1 -0
- package/lib/icons/heroicons/outline.d.ts.map +1 -0
- package/lib/icons/heroicons/outline.js.map +1 -0
- package/lib/icons/heroicons/solid.d.ts.map +1 -0
- package/lib/icons/heroicons/solid.js.map +1 -0
- package/lib/icons/lucide.d.ts.map +1 -0
- package/lib/icons/lucide.js.map +1 -0
- package/lib/icons/material/filled.d.ts.map +1 -0
- package/lib/icons/material/filled.js.map +1 -0
- package/lib/icons/material/outlined.d.ts.map +1 -0
- package/lib/icons/material/outlined.js.map +1 -0
- package/lib/icons/material/round.d.ts.map +1 -0
- package/lib/icons/material/round.js.map +1 -0
- package/lib/icons/material/sharp.d.ts.map +1 -0
- package/lib/icons/material/sharp.js.map +1 -0
- package/lib/icons/material/two-tone.d.ts.map +1 -0
- package/lib/icons/material/two-tone.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/button.d.ts.map +1 -0
- package/lib/styles/button.js +68 -58
- package/lib/styles/button.js.map +1 -0
- package/lib/styles/calendar-month.d.ts +3 -0
- package/lib/styles/calendar-month.d.ts.map +1 -0
- package/lib/styles/calendar-month.js +43 -27
- package/lib/styles/calendar-month.js.map +1 -0
- package/lib/styles/calendar-navigation.d.ts +1 -1
- package/lib/styles/calendar-navigation.d.ts.map +1 -0
- package/lib/styles/calendar-navigation.js +55 -26
- package/lib/styles/calendar-navigation.js.map +1 -0
- package/lib/styles/calendar.d.ts +3 -2
- package/lib/styles/calendar.d.ts.map +1 -0
- package/lib/styles/calendar.js +74 -0
- package/lib/styles/calendar.js.map +1 -0
- package/lib/styles/checkbox.js +22 -10
- package/lib/styles/copy.d.ts.map +1 -0
- package/lib/styles/copy.js +5 -1
- package/lib/styles/copy.js.map +1 -0
- package/lib/styles/date-picker.d.ts.map +1 -0
- package/lib/styles/date-picker.js +53 -23
- package/lib/styles/date-picker.js.map +1 -0
- package/lib/styles/dropdown.d.ts +12 -0
- package/lib/styles/dropdown.d.ts.map +1 -0
- package/lib/styles/dropdown.js +725 -0
- package/lib/styles/dropdown.js.map +1 -0
- package/lib/styles/file-upload.d.ts +1 -1
- package/lib/styles/file-upload.js +3 -3
- package/lib/styles/icon.d.ts +1 -1
- package/lib/styles/icon.d.ts.map +1 -0
- package/lib/styles/icon.js +2 -2
- package/lib/styles/icon.js.map +1 -0
- package/lib/styles/input.d.ts.map +1 -0
- package/lib/styles/input.js +1 -1
- package/lib/styles/input.js.map +1 -0
- package/lib/styles/modal.d.ts.map +1 -0
- package/lib/styles/modal.js.map +1 -0
- package/lib/styles/multiselect.d.ts +6 -0
- package/lib/styles/multiselect.d.ts.map +1 -0
- package/lib/styles/multiselect.js +568 -0
- package/lib/styles/multiselect.js.map +1 -0
- package/lib/styles/option.d.ts +1 -1
- package/lib/styles/option.d.ts.map +1 -0
- package/lib/styles/option.js +3 -3
- package/lib/styles/option.js.map +1 -0
- package/lib/styles/popup.d.ts +1 -1
- package/lib/styles/popup.d.ts.map +1 -0
- package/lib/styles/popup.js +8 -5
- package/lib/styles/popup.js.map +1 -0
- package/lib/styles/radio.js +10 -4
- package/lib/styles/resize-observer.d.ts.map +1 -0
- package/lib/styles/resize-observer.js.map +1 -0
- package/lib/styles/scroll-container.d.ts +1 -1
- package/lib/styles/scroll-container.d.ts.map +1 -0
- package/lib/styles/scroll-container.js +1 -1
- package/lib/styles/scroll-container.js.map +1 -0
- package/lib/styles/select.d.ts +1 -1
- package/lib/styles/select.js +6 -0
- package/lib/styles/step.d.ts +1 -1
- package/lib/styles/step.d.ts.map +1 -0
- package/lib/styles/step.js +1 -9
- package/lib/styles/step.js.map +1 -0
- package/lib/styles/switch.js +6 -3
- package/lib/styles/tab.d.ts +1 -1
- package/lib/styles/tab.d.ts.map +1 -0
- package/lib/styles/tab.js +67 -3
- package/lib/styles/tab.js.map +1 -0
- package/lib/styles/tabs.d.ts +1 -1
- package/lib/styles/tabs.d.ts.map +1 -0
- package/lib/styles/tabs.js +7 -3
- package/lib/styles/tabs.js.map +1 -0
- package/lib/styles/tag.d.ts.map +1 -0
- package/lib/styles/tag.js +1 -2
- package/lib/styles/tag.js.map +1 -0
- package/lib/styles/textarea.d.ts.map +1 -0
- package/lib/styles/textarea.js.map +1 -0
- package/lib/styles/tooltip.d.ts.map +1 -0
- package/lib/styles/tooltip.js.map +1 -0
- package/lib/styles/wizard.d.ts +9 -5
- package/lib/styles/wizard.d.ts.map +1 -0
- package/lib/styles/wizard.js +211 -99
- package/lib/styles/wizard.js.map +1 -0
- package/lib/types/common.d.ts +2 -2
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js.map +1 -0
- package/lib/utils/calendar-utils.d.ts.map +1 -0
- package/lib/utils/calendar-utils.js.map +1 -0
- package/lib/utils/icon-registry.d.ts.map +1 -0
- package/lib/utils/icon-registry.js.map +1 -0
- package/lib/utils/locale.d.ts.map +1 -0
- package/lib/utils/locale.js.map +1 -0
- package/lib/utils/number-format.d.ts.map +1 -0
- package/lib/utils/number-format.js.map +1 -0
- package/lib/utils/parse-boolean.d.ts +39 -0
- package/lib/utils/parse-boolean.d.ts.map +1 -0
- package/lib/utils/parse-boolean.js +23 -0
- package/lib/utils/parse-boolean.js.map +1 -0
- package/lib/utils/positioning.d.ts.map +1 -0
- package/lib/utils/positioning.js.map +1 -0
- package/lib/utils/property-capture.d.ts.map +1 -0
- package/lib/utils/property-capture.js.map +1 -0
- package/lib/utils/property-manager.d.ts +7 -1
- package/lib/utils/property-manager.d.ts.map +1 -0
- package/lib/utils/property-manager.js +16 -4
- package/lib/utils/property-manager.js.map +1 -0
- package/lib/utils/resize-observer.d.ts.map +1 -0
- package/lib/utils/resize-observer.js.map +1 -0
- package/lib/utils/scroll-lock.d.ts.map +1 -0
- package/lib/utils/scroll-lock.js.map +1 -0
- package/lib/utils/styles.d.ts.map +1 -0
- package/lib/utils/styles.js.map +1 -0
- package/lib/utils/validity.d.ts +38 -0
- package/lib/utils/validity.js +116 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -0
- package/package.json +26 -5
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
export const calendarNavigationStyles = `
|
|
2
2
|
:host([data-size="md"]) {
|
|
3
|
-
--nav-btn-size:
|
|
4
|
-
--nav-btn-icon-size: 1.
|
|
5
|
-
--nav-font-size:
|
|
3
|
+
--nav-btn-size: 1.875rem;
|
|
4
|
+
--nav-btn-icon-size: 1.125rem;
|
|
5
|
+
--nav-font-size: 1rem;
|
|
6
6
|
--nav-padding: 0.5rem 0.75rem;
|
|
7
7
|
--nav-default-width: 280px;
|
|
8
8
|
}
|
|
9
9
|
:host([data-size="sm"]) {
|
|
10
10
|
--nav-btn-size: 1.5rem;
|
|
11
|
-
--nav-btn-icon-size:
|
|
11
|
+
--nav-btn-icon-size: 0.9375rem;
|
|
12
12
|
--nav-font-size: 0.875rem;
|
|
13
13
|
--nav-padding: 0.375rem 0.5rem;
|
|
14
14
|
--nav-default-width: 240px;
|
|
15
15
|
}
|
|
16
16
|
:host([data-size="lg"]) {
|
|
17
|
-
--nav-btn-size: 2.
|
|
18
|
-
--nav-btn-icon-size: 1.
|
|
19
|
-
--nav-font-size:
|
|
17
|
+
--nav-btn-size: 2.25rem;
|
|
18
|
+
--nav-btn-icon-size: 1.25rem;
|
|
19
|
+
--nav-font-size: 1.125rem;
|
|
20
20
|
--nav-padding: 0.625rem 1rem;
|
|
21
21
|
--nav-default-width: 360px;
|
|
22
22
|
}
|
|
@@ -34,15 +34,55 @@ box-sizing: border-box;
|
|
|
34
34
|
display: flex;
|
|
35
35
|
align-items: center;
|
|
36
36
|
gap: 0.25rem;
|
|
37
|
-
}
|
|
38
|
-
.nav-group-left,
|
|
39
|
-
.nav-group-right {
|
|
40
37
|
flex: 0 0 auto;
|
|
41
38
|
}
|
|
42
|
-
.nav-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
.nav-title {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
gap: 0.375rem;
|
|
45
43
|
min-width: 0;
|
|
44
|
+
margin-left: -0.375rem;
|
|
45
|
+
padding: 0.25rem 0.375rem;
|
|
46
|
+
border: none;
|
|
47
|
+
border-radius: var(--ty-radius-base);
|
|
48
|
+
background: transparent;
|
|
49
|
+
font-family: inherit;
|
|
50
|
+
font-size: var(--nav-font-size);
|
|
51
|
+
line-height: 1.2;
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
cursor: pointer;
|
|
54
|
+
transition: var(--ty-local-transition, background-color 0.15s ease);
|
|
55
|
+
outline: none;
|
|
56
|
+
}
|
|
57
|
+
.nav-title:hover,
|
|
58
|
+
.nav-title[aria-expanded="true"] {
|
|
59
|
+
background-color: var(--ty-calendar-nav-hover-bg, var(--ty-bg-neutral-soft));
|
|
60
|
+
}
|
|
61
|
+
.nav-title:focus-visible {
|
|
62
|
+
outline: 2px solid var(--ty-calendar-nav-focus-outline, var(--ty-calendar-accent, var(--ty-color-primary)));
|
|
63
|
+
outline-offset: 2px;
|
|
64
|
+
}
|
|
65
|
+
.nav-title-month {
|
|
66
|
+
font-weight: 600;
|
|
67
|
+
letter-spacing: -0.01em;
|
|
68
|
+
color: var(--ty-calendar-nav-title-color, var(--ty-text-strong, var(--ty-color-neutral-strong)));
|
|
69
|
+
}
|
|
70
|
+
.nav-title-year {
|
|
71
|
+
font-weight: 400;
|
|
72
|
+
color: var(--ty-calendar-nav-year-color, var(--ty-text-soft, var(--ty-color-neutral)));
|
|
73
|
+
}
|
|
74
|
+
.nav-caret {
|
|
75
|
+
display: inline-flex;
|
|
76
|
+
color: var(--ty-calendar-nav-color, var(--ty-color-neutral));
|
|
77
|
+
transition: transform 0.15s ease;
|
|
78
|
+
}
|
|
79
|
+
.nav-caret svg {
|
|
80
|
+
width: 1em;
|
|
81
|
+
height: 1em;
|
|
82
|
+
display: block;
|
|
83
|
+
}
|
|
84
|
+
.nav-title[aria-expanded="true"] .nav-caret {
|
|
85
|
+
transform: rotate(180deg);
|
|
46
86
|
}
|
|
47
87
|
.nav-btn {
|
|
48
88
|
display: inline-flex;
|
|
@@ -51,10 +91,10 @@ justify-content: center;
|
|
|
51
91
|
width: var(--nav-btn-size);
|
|
52
92
|
height: var(--nav-btn-size);
|
|
53
93
|
padding: 0;
|
|
54
|
-
border:
|
|
94
|
+
border: 1px solid var(--ty-calendar-nav-border, var(--ty-border));
|
|
55
95
|
border-radius: var(--ty-radius-base);
|
|
56
96
|
background-color: transparent;
|
|
57
|
-
color: var(--ty-calendar-nav-color, var(--ty-color-neutral));
|
|
97
|
+
color: var(--ty-calendar-nav-color, var(--ty-color-neutral-strong));
|
|
58
98
|
cursor: pointer;
|
|
59
99
|
transition: var(--ty-local-transition, all 0.15s ease);
|
|
60
100
|
outline: none;
|
|
@@ -81,15 +121,4 @@ width: var(--nav-btn-icon-size);
|
|
|
81
121
|
height: var(--nav-btn-icon-size);
|
|
82
122
|
display: block;
|
|
83
123
|
}
|
|
84
|
-
.month-year-display {
|
|
85
|
-
font-size: var(--nav-font-size);
|
|
86
|
-
font-weight: 600;
|
|
87
|
-
color: var(--ty-calendar-nav-title-color, var(--ty-color-neutral-strong));
|
|
88
|
-
text-align: center;
|
|
89
|
-
white-space: nowrap;
|
|
90
|
-
text-transform: uppercase;
|
|
91
|
-
letter-spacing: 0.04em;
|
|
92
|
-
overflow: hidden;
|
|
93
|
-
text-overflow: ellipsis;
|
|
94
|
-
}
|
|
95
124
|
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-navigation.js","sourceRoot":"","sources":["../../src/styles/calendar-navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHvC,CAAC"}
|
package/lib/styles/calendar.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Calendar Orchestration Styles
|
|
3
|
-
*
|
|
3
|
+
* Container for navigation + month display, plus the month/year grid
|
|
4
|
+
* ty-calendar shows in place of the day grid.
|
|
4
5
|
*/
|
|
5
|
-
export declare const calendarStyles
|
|
6
|
+
export declare const calendarStyles: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/styles/calendar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,cAAc,snBAsB1B,CAAC"}
|
package/lib/styles/calendar.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { calendarMonthFlavorCss } from './calendar-month.js';
|
|
2
|
+
const selectedBg = 'var(--ty-calendar-selected-bg, var(--ty-calendar-accent, var(--calendar-month-selected-bg, var(--ty-solid-primary, var(--ty-color-primary)))))';
|
|
3
|
+
const selectedFg = 'var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-solid-primary-fg, white)))';
|
|
1
4
|
export const calendarStyles = `
|
|
2
5
|
.calendar-container {
|
|
3
6
|
display: flex;
|
|
@@ -12,4 +15,75 @@ align-items: center;
|
|
|
12
15
|
gap: 0.375rem;
|
|
13
16
|
}
|
|
14
17
|
}
|
|
18
|
+
.month-grid {
|
|
19
|
+
display: grid;
|
|
20
|
+
grid-template-columns: repeat(3, 1fr);
|
|
21
|
+
grid-auto-rows: 1fr;
|
|
22
|
+
gap: 0.375rem;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
padding: 0.75rem;
|
|
25
|
+
min-width: 280px;
|
|
26
|
+
width: var(--calendar-width, auto);
|
|
27
|
+
}
|
|
28
|
+
.month-grid.size-sm { padding: 0.5rem; min-width: 240px; gap: 0.25rem; }
|
|
29
|
+
.month-grid.size-lg { padding: 1rem; min-width: 360px; gap: 0.5rem; }
|
|
30
|
+
.month-cell {
|
|
31
|
+
position: relative;
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
min-height: 2.5rem;
|
|
36
|
+
padding: 0;
|
|
37
|
+
border: none;
|
|
38
|
+
border-radius: var(--ty-calendar-day-radius, 0.5rem);
|
|
39
|
+
background: transparent;
|
|
40
|
+
color: var(--ty-calendar-day-color, var(--ty-text));
|
|
41
|
+
font-family: inherit;
|
|
42
|
+
font-size: 0.875rem;
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
outline: none;
|
|
45
|
+
transition: var(--ty-local-transition, background-color 0.15s ease, color 0.15s ease);
|
|
46
|
+
}
|
|
47
|
+
.month-grid.size-sm .month-cell { font-size: 0.75rem; min-height: 2rem; }
|
|
48
|
+
.month-grid.size-lg .month-cell { font-size: 1rem; min-height: 3rem; }
|
|
49
|
+
.month-cell:hover {
|
|
50
|
+
color: var(--ty-calendar-day-hover-color, var(--ty-text-strong));
|
|
51
|
+
background-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral));
|
|
52
|
+
font-weight: 500;
|
|
53
|
+
}
|
|
54
|
+
.month-cell:focus-visible {
|
|
55
|
+
box-shadow: 0 0 0 2px var(--calendar-month-accent, var(--ty-color-primary));
|
|
56
|
+
}
|
|
57
|
+
.month-cell.current {
|
|
58
|
+
color: var(--ty-calendar-today-color, var(--ty-calendar-today-accent, var(--calendar-month-accent, var(--ty-color-primary))));
|
|
59
|
+
font-weight: 600;
|
|
60
|
+
}
|
|
61
|
+
.month-cell.current::after {
|
|
62
|
+
content: "";
|
|
63
|
+
position: absolute;
|
|
64
|
+
top: calc(50% + 0.72em);
|
|
65
|
+
left: 50%;
|
|
66
|
+
width: 4px;
|
|
67
|
+
height: 4px;
|
|
68
|
+
margin-left: -2px;
|
|
69
|
+
border-radius: 50%;
|
|
70
|
+
background: currentColor;
|
|
71
|
+
}
|
|
72
|
+
.month-cell.selected {
|
|
73
|
+
background-color: ${selectedBg};
|
|
74
|
+
color: ${selectedFg};
|
|
75
|
+
font-weight: 600;
|
|
76
|
+
}
|
|
77
|
+
.month-cell.selected:hover {
|
|
78
|
+
background-color: var(--ty-calendar-selected-hover-bg, var(--calendar-month-selected-hover-bg, color-mix(in oklab, ${selectedBg} 85%, ${selectedFg})));
|
|
79
|
+
}
|
|
80
|
+
.month-cell:disabled {
|
|
81
|
+
color: var(--ty-calendar-disabled-color, var(--ty-text-faint));
|
|
82
|
+
opacity: var(--ty-calendar-disabled-opacity, 0.7);
|
|
83
|
+
text-decoration: line-through;
|
|
84
|
+
text-decoration-color: color-mix(in oklab, currentColor 60%, transparent);
|
|
85
|
+
cursor: default;
|
|
86
|
+
pointer-events: none;
|
|
87
|
+
}
|
|
88
|
+
${calendarMonthFlavorCss}
|
|
15
89
|
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/styles/calendar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB7B,CAAC"}
|
package/lib/styles/checkbox.js
CHANGED
|
@@ -4,9 +4,9 @@ const tok = (s) => fb
|
|
|
4
4
|
? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
|
|
5
5
|
: `var(--ty-color-${f}${s})`;
|
|
6
6
|
return `
|
|
7
|
-
:host([flavor="${f}"]) { --checkbox-color: ${tok("
|
|
8
|
-
:host([flavor="${f}+"]) { --checkbox-color: ${tok("-strong")}; --checkbox-
|
|
9
|
-
:host([flavor="${f}-"]) { --checkbox-color: ${tok("
|
|
7
|
+
:host([flavor="${f}"]) { --checkbox-color: ${tok("-strong")}; --checkbox-ring: color-mix(in oklab, ${tok("")} 25%, transparent); }
|
|
8
|
+
:host([flavor="${f}+"]) { --checkbox-color: ${tok("-strong")}; --checkbox-ring: color-mix(in oklab, ${tok("-strong")} 25%, transparent); }
|
|
9
|
+
:host([flavor="${f}-"]) { --checkbox-color: ${tok("")}; --checkbox-ring: color-mix(in oklab, ${tok("")} 25%, transparent); }
|
|
10
10
|
`;
|
|
11
11
|
};
|
|
12
12
|
export const checkboxCustomFlavorCss = (base) => checkboxFlavor(base, "neutral");
|
|
@@ -19,16 +19,28 @@ vertical-align: middle;
|
|
|
19
19
|
.checkbox-container {
|
|
20
20
|
display: inline-flex;
|
|
21
21
|
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
min-height: 1.25em;
|
|
24
|
+
min-height: 1lh;
|
|
22
25
|
outline: none;
|
|
23
26
|
transition: var(--ty-local-transition, all 0.15s ease-in-out);
|
|
24
27
|
user-select: none;
|
|
25
28
|
cursor: pointer;
|
|
26
29
|
border-radius: 6px;
|
|
27
30
|
gap: var(--ty-spacing-1);
|
|
28
|
-
color: var(--checkbox-color-off, var(--ty-
|
|
31
|
+
color: var(--checkbox-color-off, color-mix(in oklab, var(--ty-text) 30%, transparent));
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
padding: 2px;
|
|
34
|
+
border-radius: 5px;
|
|
35
|
+
}
|
|
36
|
+
.checkbox-container:hover {
|
|
37
|
+
background: var(--checkbox-hover-bg, color-mix(in oklab, var(--ty-text) 8%, transparent));
|
|
38
|
+
}
|
|
39
|
+
.checkbox-container:not([aria-checked="true"]):not([aria-checked="mixed"]):hover {
|
|
40
|
+
color: var(--checkbox-color-off-hover, color-mix(in oklab, var(--ty-text) 50%, transparent));
|
|
29
41
|
}
|
|
30
42
|
.checkbox-container[aria-checked="true"] {
|
|
31
|
-
color: var(--checkbox-color, var(--ty-
|
|
43
|
+
color: var(--checkbox-color, var(--ty-text));
|
|
32
44
|
}
|
|
33
45
|
.checkbox-container.focused,
|
|
34
46
|
.checkbox-container:focus-visible {
|
|
@@ -63,11 +75,8 @@ width: 24px;
|
|
|
63
75
|
height: 24px;
|
|
64
76
|
}
|
|
65
77
|
${FLAVORS.map((f) => checkboxFlavor(f)).join("")}
|
|
66
|
-
.checkbox-container:not([aria-checked="true"]) {
|
|
67
|
-
opacity: 0.35;
|
|
68
|
-
}
|
|
69
78
|
.checkbox-container[aria-checked="mixed"] {
|
|
70
|
-
|
|
79
|
+
color: var(--checkbox-color, var(--ty-text));
|
|
71
80
|
}
|
|
72
81
|
.checkbox-container.disabled {
|
|
73
82
|
pointer-events: none;
|
|
@@ -76,7 +85,10 @@ opacity: 0.5;
|
|
|
76
85
|
filter: grayscale(1);
|
|
77
86
|
}
|
|
78
87
|
.checkbox-container.disabled:not([aria-checked="true"]) {
|
|
79
|
-
opacity: 0.
|
|
88
|
+
opacity: 0.45;
|
|
89
|
+
}
|
|
90
|
+
.checkbox-container.disabled:hover {
|
|
91
|
+
background: none;
|
|
80
92
|
}
|
|
81
93
|
.checkbox-container.error .checkbox-icon {
|
|
82
94
|
color: var(--ty-color-danger);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/styles/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,UAAU,0hDAkFtB,CAAA"}
|
package/lib/styles/copy.js
CHANGED
|
@@ -27,9 +27,13 @@ padding: 0;
|
|
|
27
27
|
margin: 0;
|
|
28
28
|
background: transparent;
|
|
29
29
|
border: none;
|
|
30
|
-
color:
|
|
30
|
+
color: var(--input-color, var(--ty-input-color));
|
|
31
31
|
font-family: inherit;
|
|
32
32
|
}
|
|
33
|
+
code.copy-field-value {
|
|
34
|
+
font-family: var(--ty-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
|
|
35
|
+
font-size: calc(var(--ty-field-font) * 0.93);
|
|
36
|
+
}
|
|
33
37
|
.copy-field-value.multiline {
|
|
34
38
|
white-space: pre-wrap;
|
|
35
39
|
word-break: break-word;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/styles/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/styles/date-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,gBAAgB,u7QAwW5B,CAAC"}
|
|
@@ -92,7 +92,7 @@ align-items: center;
|
|
|
92
92
|
justify-content: center;
|
|
93
93
|
flex-shrink: 0;
|
|
94
94
|
margin-right: 0.5rem;
|
|
95
|
-
color: var(--ty-
|
|
95
|
+
color: var(--ty-text-soft);
|
|
96
96
|
}
|
|
97
97
|
.date-picker-stub ::slotted(ty-icon[slot="start"]) {
|
|
98
98
|
width: 1em;
|
|
@@ -277,50 +277,80 @@ cursor: pointer;
|
|
|
277
277
|
}
|
|
278
278
|
.time-section {
|
|
279
279
|
display: flex;
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
justify-content: center;
|
|
283
|
-
gap: 0.5rem;
|
|
284
|
-
padding: 0.5rem 1rem;
|
|
285
|
-
border-top: 1px solid var(--ty-calendar-time-border);
|
|
286
|
-
background-color: var(--ty-calendar-time-bg);
|
|
280
|
+
flex-direction: column;
|
|
281
|
+
gap: 0.375rem;
|
|
287
282
|
width: 100%;
|
|
288
283
|
box-sizing: border-box;
|
|
289
|
-
|
|
284
|
+
padding: 0.75rem 1rem 0.875rem;
|
|
285
|
+
border-top: 1px solid var(--ty-calendar-time-border);
|
|
286
|
+
background-color: var(--ty-calendar-time-bg);
|
|
287
|
+
}
|
|
288
|
+
.time-row {
|
|
289
|
+
display: flex;
|
|
290
|
+
align-items: center;
|
|
291
|
+
justify-content: space-between;
|
|
292
|
+
gap: 0.75rem;
|
|
290
293
|
}
|
|
291
294
|
.time-label {
|
|
295
|
+
display: inline-flex;
|
|
296
|
+
align-items: center;
|
|
297
|
+
gap: 0.5rem;
|
|
292
298
|
font-size: var(--ty-font-sm);
|
|
293
299
|
font-weight: 500;
|
|
294
300
|
color: var(--ty-calendar-time-label-color);
|
|
295
|
-
|
|
301
|
+
}
|
|
302
|
+
.time-icon {
|
|
303
|
+
display: flex;
|
|
304
|
+
color: var(--ty-calendar-time-icon-color);
|
|
305
|
+
width: 1rem;
|
|
306
|
+
height: 1rem;
|
|
307
|
+
}
|
|
308
|
+
.time-fields {
|
|
309
|
+
display: inline-flex;
|
|
310
|
+
align-items: center;
|
|
311
|
+
gap: 0.25rem;
|
|
312
|
+
}
|
|
313
|
+
.time-colon {
|
|
314
|
+
font-weight: 600;
|
|
315
|
+
color: var(--ty-calendar-time-label-color);
|
|
296
316
|
}
|
|
297
317
|
.time-input {
|
|
298
|
-
width:
|
|
318
|
+
width: 2.75rem;
|
|
319
|
+
height: 2.125rem;
|
|
320
|
+
box-sizing: border-box;
|
|
299
321
|
border: 1px solid var(--ty-input-border);
|
|
300
|
-
border-radius: var(--ty-radius-
|
|
322
|
+
border-radius: var(--ty-radius-md, 0.5rem);
|
|
301
323
|
background: var(--ty-input-bg);
|
|
302
324
|
color: var(--ty-calendar-time-input-color);
|
|
303
325
|
font-family: inherit;
|
|
304
|
-
font-size: var(--ty-font-
|
|
326
|
+
font-size: var(--ty-font-base, 0.9375rem);
|
|
327
|
+
font-weight: 500;
|
|
305
328
|
font-variant-numeric: tabular-nums;
|
|
306
329
|
text-align: center;
|
|
307
|
-
padding: 0
|
|
330
|
+
padding: 0;
|
|
308
331
|
outline: none;
|
|
332
|
+
caret-color: transparent;
|
|
309
333
|
transition: var(--ty-transition-all);
|
|
310
334
|
}
|
|
335
|
+
.time-input::selection {
|
|
336
|
+
background: var(--ty-bg-primary-soft, var(--ty-bg-primary));
|
|
337
|
+
}
|
|
338
|
+
.time-input:hover {
|
|
339
|
+
border-color: var(--ty-input-border-hover, var(--ty-input-border));
|
|
340
|
+
}
|
|
311
341
|
.time-input:focus {
|
|
312
342
|
border-color: var(--ty-input-border-focus);
|
|
313
343
|
box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);
|
|
314
344
|
}
|
|
315
|
-
.time-
|
|
316
|
-
color: var(--ty-calendar-time-placeholder-color);
|
|
317
|
-
}
|
|
318
|
-
.time-icon {
|
|
345
|
+
.time-summary {
|
|
319
346
|
display: flex;
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
347
|
+
justify-content: space-between;
|
|
348
|
+
gap: 0.75rem;
|
|
349
|
+
font-size: var(--ty-font-xs, 0.75rem);
|
|
350
|
+
color: var(--ty-calendar-time-label-color);
|
|
351
|
+
}
|
|
352
|
+
.time-summary-iso {
|
|
353
|
+
font-family: var(--ty-font-mono, ui-monospace, SFMono-Regular, monospace);
|
|
354
|
+
color: var(--ty-calendar-time-placeholder-color);
|
|
325
355
|
}
|
|
326
356
|
`;
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwW/B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dropdown Component Styles
|
|
3
|
+
*
|
|
4
|
+
* ARCHITECTURE:
|
|
5
|
+
* - Shared styles: Apply to both desktop and mobile
|
|
6
|
+
* - Desktop styles: Scoped under .dropdown-mode-desktop
|
|
7
|
+
* - Mobile styles: Scoped under .dropdown-mode-mobile
|
|
8
|
+
*
|
|
9
|
+
* This prevents CSS conflicts between desktop dialog and mobile modal implementations.
|
|
10
|
+
*/
|
|
11
|
+
export declare const dropdownStyles = "\n/* ==================== SHARED STYLES ==================== */\n/* These apply to BOTH desktop and mobile modes */\n\n:host {\n display: block;\n width: auto;\n min-width: 200px;\n}\n\n:host {\n --mobile-border-color: #5858587d; \n}\n\n.dropdown-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n/* Label styling */\n.dropdown-label {\n font-size: 14px;\n font-weight: 500;\n color: var(--ty-label-color);\n margin-bottom: 6px;\n line-height: 1.25;\n padding-left: 12px;\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/* ==================== DESKTOP MODE STYLES ==================== */\n/* All styles scoped under .dropdown-mode-desktop */\n\n/* Stub (trigger button) */\n.dropdown-mode-desktop .dropdown-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-input-bg);\n color: var(--ty-input-color);\n border: 1px solid var(--ty-input-border);\n border-radius: var(--ty-radius-md);\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.dropdown-mode-desktop .dropdown-stub:hover {\n border-color: var(--ty-input-border-hover);\n}\n\n.dropdown-mode-desktop .dropdown-stub[disabled] {\n background-color: var(--ty-input-disabled-bg);\n color: var(--ty-input-disabled-color);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.dropdown-mode-desktop .dropdown-stub:focus {\n border-color: var(--ty-input-border-hover);\n}\n\n/* Hide stub when dropdown is open */\n.dropdown-mode-desktop .dropdown-wrapper:has(.dropdown-chevron.open) .dropdown-stub {\n opacity: 0;\n pointer-events: none;\n}\n\n/* Size variants */\n.dropdown-mode-desktop .dropdown-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) + 1rem + var(--ty-spacing-1));\n}\n\n.dropdown-mode-desktop .dropdown-stub.sm {\n min-height: var(--ty-size-sm);\n font-size: var(--ty-font-sm);\n padding: var(--ty-spacing-1) var(--ty-spacing-2);\n padding-right: calc(var(--ty-spacing-2) + 1rem + var(--ty-spacing-1));\n}\n\n.dropdown-mode-desktop .dropdown-stub.md {\n min-height: var(--ty-size-md);\n font-size: var(--ty-font-sm);\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n padding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n\n.dropdown-mode-desktop .dropdown-stub.lg {\n min-height: var(--ty-size-lg);\n font-size: var(--ty-font-base);\n padding: var(--ty-spacing-3) var(--ty-spacing-4);\n padding-right: calc(var(--ty-spacing-4) + 1rem + var(--ty-spacing-3));\n}\n\n.dropdown-mode-desktop .dropdown-stub.xl {\n min-height: var(--ty-size-xl);\n font-size: var(--ty-font-lg);\n padding: var(--ty-spacing-4) var(--ty-spacing-5);\n padding-right: calc(var(--ty-spacing-5) + 1rem + var(--ty-spacing-4));\n}\n\n/* Clearable adjustments */\n.dropdown-mode-desktop .dropdown-stub.xs.clearable.has-selection {\n padding-right: calc(var(--ty-spacing-2) + 2rem + var(--ty-spacing-2));\n}\n\n.dropdown-mode-desktop .dropdown-stub.sm.clearable.has-selection {\n padding-right: calc(var(--ty-spacing-2) + 2rem + var(--ty-spacing-2));\n}\n\n.dropdown-mode-desktop .dropdown-stub.md.clearable.has-selection {\n padding-right: calc(var(--ty-spacing-3) + 2rem + var(--ty-spacing-3));\n}\n\n.dropdown-mode-desktop .dropdown-stub.lg.clearable.has-selection {\n padding-right: calc(var(--ty-spacing-4) + 2rem + var(--ty-spacing-4));\n}\n\n.dropdown-mode-desktop .dropdown-stub.xl.clearable.has-selection {\n padding-right: calc(var(--ty-spacing-5) + 2rem + var(--ty-spacing-5));\n}\n\n/* Placeholder */\n.dropdown-mode-desktop .dropdown-placeholder {\n color: var(--ty-input-placeholder);\n font-weight: var(--ty-font-light);\n font-size: var(--ty-font-sm);\n font-style: italic;\n pointer-events: none;\n}\n\n.dropdown-mode-desktop .dropdown-stub.has-selection .dropdown-placeholder {\n display: none;\n}\n\n/* Selected content */\n.dropdown-mode-desktop .dropdown-stub slot[name=\"selected\"] {\n display: block;\n}\n\n.dropdown-mode-desktop .dropdown-stub.has-selection slot[name=\"selected\"] {\n width: 100%;\n}\n\n.dropdown-mode-desktop .dropdown-stub slot[name=\"selected\"] * {\n display: block;\n width: 100%;\n padding: 0;\n margin: 0;\n border: none;\n background: none;\n color: inherit;\n font: inherit;\n line-height: inherit;\n outline: none;\n appearance: none;\n}\n\n/* Chevron */\n.dropdown-mode-desktop .dropdown-chevron {\n position: absolute;\n top: 50%;\n right: var(--ty-spacing-3);\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n color: var(--ty-input-placeholder);\n transition: var(--ty-transition-transform);\n pointer-events: none;\n}\n\n.dropdown-mode-desktop .dropdown-chevron.open {\n transform: translateY(-50%) rotate(180deg);\n}\n\n.dropdown-mode-desktop .dropdown-chevron svg {\n width: 100%;\n height: 100%;\n}\n\n/* Clear button */\n.dropdown-mode-desktop .dropdown-clear-btn {\n position: absolute;\n top: 50%;\n right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n padding: 0;\n border: none;\n background: none;\n color: var(--ty-input-placeholder);\n cursor: pointer;\n transition: var(--ty-transition-colors);\n display: none;\n}\n\n.dropdown-mode-desktop .dropdown-clear-btn:hover {\n color: var(--ty-color-danger);\n}\n\n.dropdown-mode-desktop .dropdown-clear-btn:active {\n transform: translateY(-50%) scale(0.9);\n}\n\n.dropdown-mode-desktop .dropdown-clear-btn svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* Dialog */\n.dropdown-mode-desktop .dropdown-dialog {\n position: fixed;\n width: var(--dropdown-width, 200px);\n max-width: 100vw;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n box-sizing: border-box;\n padding: var(--dropdown-padding, 20px);\n opacity: 0;\n transition: opacity 400ms ease;\n transform: translate(var(--dropdown-offset-x, 0px), var(--dropdown-offset-y, 0px));\n top: -1000px;\n left: -1000px;\n}\n\n/* When opened via showModal(), apply flex layout and direction */\n.dropdown-mode-desktop .dropdown-dialog[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dropdown-mode-desktop .dropdown-dialog.position-below {\n left: var(--dropdown-x);\n top: var(--dropdown-y);\n}\n\n.dropdown-mode-desktop .dropdown-dialog.position-above {\n left: var(--dropdown-x);\n bottom: var(--dropdown-y);\n top: auto;\n flex-direction: column-reverse;\n}\n\n.dropdown-mode-desktop .dropdown-dialog.position-above .dropdown-header {\n margin-top: 4px;\n}\n\n.dropdown-mode-desktop .dropdown-dialog.position-below .dropdown-header {\n margin-bottom: 4px;\n}\n\n.dropdown-mode-desktop .dropdown-dialog.position-below .dropdown-options {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1), var(--ty-shadow-md);\n}\n\n.dropdown-mode-desktop .dropdown-dialog.open {\n display: flex;\n opacity: 1;\n}\n\n.dropdown-mode-desktop .dropdown-dialog.open .dropdown-options {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.dropdown-mode-desktop .dropdown-dialog::backdrop {\n background: transparent;\n}\n\n/* Dialog header */\n.dropdown-mode-desktop .dropdown-header {\n display: flex;\n align-items: center;\n gap: var(--ty-spacing-2);\n position: relative;\n}\n\n.dropdown-mode-desktop .dropdown-search-input {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n background: var(--ty-input-bg);\n color: var(--ty-input-color);\n border: 1px solid var(--ty-input-border);\n border-radius: var(--ty-radius-md);\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);\n outline: none;\n}\n\n.dropdown-mode-desktop .dropdown-search-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.dropdown-mode-desktop .dropdown-search-input:disabled {\n background-color: var(--ty-input-disabled-bg);\n color: var(--ty-input-disabled-color);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.dropdown-mode-desktop .dropdown-search-input::placeholder {\n color: var(--ty-input-placeholder);\n}\n\n/* Search input sizes */\n.dropdown-mode-desktop .dropdown-search-input.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) + 1rem + var(--ty-spacing-1));\n}\n\n.dropdown-mode-desktop .dropdown-search-input.sm {\n min-height: var(--ty-size-sm);\n font-size: var(--ty-font-sm);\n padding: var(--ty-spacing-1) var(--ty-spacing-2);\n padding-right: calc(var(--ty-spacing-2) + 1rem + var(--ty-spacing-1));\n}\n\n.dropdown-mode-desktop .dropdown-search-input.md {\n min-height: var(--ty-size-md);\n font-size: var(--ty-font-sm);\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n padding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n\n.dropdown-mode-desktop .dropdown-search-input.lg {\n min-height: var(--ty-size-lg);\n font-size: var(--ty-font-base);\n padding: var(--ty-spacing-3) var(--ty-spacing-4);\n padding-right: calc(var(--ty-spacing-4) + 1rem + var(--ty-spacing-3));\n}\n\n.dropdown-mode-desktop .dropdown-search-input.xl {\n min-height: var(--ty-size-xl);\n font-size: var(--ty-font-lg);\n padding: var(--ty-spacing-4) var(--ty-spacing-5);\n padding-right: calc(var(--ty-spacing-5) + 1rem + var(--ty-spacing-4));\n}\n\n.dropdown-mode-desktop .dropdown-search-chevron {\n position: absolute;\n top: 50%;\n right: var(--ty-spacing-3);\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n color: var(--ty-input-placeholder);\n transition: var(--ty-transition-transform);\n pointer-events: none;\n}\n\n.dropdown-mode-desktop .dropdown-search-chevron.open {\n transform: translateY(-50%) rotate(180deg);\n}\n\n.dropdown-mode-desktop .dropdown-search-chevron svg {\n width: 100%;\n height: 100%;\n}\n\n/* Options container */\n.dropdown-mode-desktop .dropdown-options {\n opacity: 0;\n background: var(--ty-input-bg);\n border: 1px solid var(--ty-input-border);\n border-radius: var(--ty-radius-lg);\n box-shadow: var(--ty-shadow-md);\n max-height: 16rem;\n width: 100%;\n max-width: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n scroll-behavior: smooth;\n box-sizing: border-box;\n box-shadow:\n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n transform: translateY(-20px) scale(0.90);\n transition:\n opacity 100ms cubic-bezier(0.16, 1, 0.3, 1),\n transform 200ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* Option elements */\n.dropdown-mode-desktop .dropdown-options ::slotted(option) {\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n color: var(--ty-input-color);\n cursor: pointer;\n transition:\n var(--ty-transition-colors),\n transform 150ms cubic-bezier(0.16, 1, 0.3, 1);\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n width: 100%;\n text-align: left;\n box-sizing: border-box;\n transform: translateX(0);\n}\n\n.dropdown-mode-desktop .dropdown-options ::slotted(option:hover) {\n background-color: var(--ty-bg-neutral-soft);\n}\n\n.dropdown-mode-desktop .dropdown-options ::slotted(option[highlighted]) {\n background-color: var(--ty-bg-primary-soft);\n color: var(--ty-color-primary-mild);\n}\n\n.dropdown-mode-desktop .dropdown-options ::slotted(option[selected]) {\n background-color: var(--ty-color-primary);\n color: #ffffff;\n}\n\n.dropdown-mode-desktop .dropdown-options ::slotted(option[hidden]),\n.dropdown-mode-desktop .dropdown-options ::slotted(ty-option[hidden]),\n.dropdown-mode-desktop .dropdown-options ::slotted(ty-tag[hidden]) {\n display: none;\n}\n\n/* ==================== MOBILE MODE STYLES ==================== */\n/* All styles scoped under .dropdown-mode-mobile */\n/* Floating modal design (centered card with backdrop) */\n\n/* Stub (trigger button) - same as desktop but scoped */\n.dropdown-mode-mobile .dropdown-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-input-bg);\n color: var(--ty-input-color);\n border: 1px solid var(--ty-input-border);\n border-radius: var(--ty-radius-md);\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);\n outline: none;\n}\n\n.dropdown-mode-mobile .dropdown-stub:hover {\n border-color: var(--ty-input-border-hover);\n}\n\n.dropdown-mode-mobile .dropdown-stub[disabled] {\n background-color: var(--ty-input-disabled-bg);\n color: var(--ty-input-disabled-color);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n/* Size variants */\n.dropdown-mode-mobile .dropdown-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) + 1rem + var(--ty-spacing-1));\n}\n\n.dropdown-mode-mobile .dropdown-stub.sm {\n min-height: var(--ty-size-sm);\n font-size: var(--ty-font-sm);\n padding: var(--ty-spacing-1) var(--ty-spacing-2);\n padding-right: calc(var(--ty-spacing-2) + 1rem + var(--ty-spacing-1));\n}\n\n.dropdown-mode-mobile .dropdown-stub.md {\n min-height: var(--ty-size-md);\n font-size: var(--ty-font-sm);\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n padding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n\n.dropdown-mode-mobile .dropdown-stub.lg {\n min-height: var(--ty-size-lg);\n font-size: var(--ty-font-base);\n padding: var(--ty-spacing-3) var(--ty-spacing-4);\n padding-right: calc(var(--ty-spacing-4) + 1rem + var(--ty-spacing-3));\n}\n\n.dropdown-mode-mobile .dropdown-stub.xl {\n min-height: var(--ty-size-xl);\n font-size: var(--ty-font-lg);\n padding: var(--ty-spacing-4) var(--ty-spacing-5);\n padding-right: calc(var(--ty-spacing-5) + 1rem + var(--ty-spacing-4));\n}\n\n/* Placeholder */\n.dropdown-mode-mobile .dropdown-placeholder {\n color: var(--ty-input-placeholder);\n font-weight: var(--ty-font-light);\n font-size: var(--ty-font-sm);\n font-style: italic;\n pointer-events: none;\n}\n\n.dropdown-mode-mobile .dropdown-stub.has-selection .dropdown-placeholder {\n display: none;\n}\n\n/* Selected content */\n.dropdown-mode-mobile .dropdown-stub slot[name=\"selected\"] {\n display: block;\n}\n\n.dropdown-mode-mobile .dropdown-stub.has-selection slot[name=\"selected\"] {\n width: 100%;\n}\n\n.dropdown-mode-mobile .dropdown-stub slot[name=\"selected\"] * {\n display: block;\n width: 100%;\n padding: 0;\n margin: 0;\n border: none;\n background: none;\n color: inherit;\n font: inherit;\n line-height: inherit;\n outline: none;\n appearance: none;\n}\n\n/* Chevron */\n.dropdown-mode-mobile .dropdown-chevron {\n position: absolute;\n top: 50%;\n right: var(--ty-spacing-3);\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n color: var(--ty-input-placeholder);\n transition: var(--ty-transition-transform);\n pointer-events: none;\n}\n\n.dropdown-mode-mobile .dropdown-chevron svg {\n width: 100%;\n height: 100%;\n}\n\n/* Mobile modal - full screen overlay with centered floating card */\n.dropdown-mode-mobile .mobile-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n z-index: 9999;\n display: flex;\n align-items: flex-start; /* Align to top */\n justify-content: center;\n padding-top: 10vh; /* Fixed position from top */\n opacity: 0;\n transition: opacity 300ms ease;\n pointer-events: none;\n}\n\n.dropdown-mode-mobile .mobile-modal.open {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Mobile backdrop - full viewport with blur */\n.dropdown-mode-mobile .mobile-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 1;\n}\n\n/* Mobile content container - floating card (transparent background) */\n.dropdown-mode-mobile .mobile-modal-content {\n position: relative;\n z-index: 2;\n display: flex;\n flex-direction: column;\n width: calc(100% - 32px); /* Side margins */\n max-width: 400px; /* Constrained width */\n min-height: 200px;\n max-height: calc(90vh - 10vh); /* Account for top padding */\n opacity: 0;\n transform: scale(0.95);\n transition: \n opacity 300ms cubic-bezier(0.16, 1, 0.3, 1),\n transform 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.dropdown-mode-mobile .mobile-modal.open .mobile-modal-content {\n opacity: 1;\n transform: scale(1);\n}\n\n/* Mobile search header - floating row with search and close */\n.dropdown-mode-mobile .mobile-search-header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n padding: 0;\n background: transparent;\n position: relative;\n}\n\n.dropdown-mode-mobile .mobile-header-content {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n/* Header for non-searchable (close button only) */\n.dropdown-mode-mobile .mobile-header-nosearch {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 16px;\n padding: 0;\n background: transparent;\n position: relative;\n min-height: 40px;\n}\n\n/* Close button - circular with border */\n.dropdown-mode-mobile .mobile-close-button {\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ty-surface-floating);\n border: 1px solid var(--ty-border-);\n border-radius: 50%; /* Circular */\n color: var(--ty-text-);\n cursor: pointer;\n transition: var(--ty-transition-all);\n padding: 0;\n border: 3px solid;\n border-color: var(--mobile-border-color);\n}\n\n.dropdown-mode-mobile .mobile-close-button:hover {\n background: var(--ty-bg-neutral);\n border-color: var(--ty-border);\n color: var(--ty-text);\n}\n\n.dropdown-mode-mobile .mobile-close-button:active {\n transform: scale(0.9);\n}\n\n.dropdown-mode-mobile .mobile-close-button svg {\n width: 24px;\n height: 24px;\n}\n\n/* Mobile search input */\n.dropdown-mode-mobile .mobile-search-input {\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n background: var(--ty-surface-floating);\n color: var(--ty-text);\n border: 1px solid var(--ty-border-);\n border-radius: var(--ty-radius-md);\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 padding: var(--ty-spacing-2) var(--ty-spacing-3);\n height: 40px;\n transition: var(--ty-transition-all);\n outline: none;\n border: 3px solid;\n border-color: var(--mobile-border-color);\n}\n\n.dropdown-mode-mobile .mobile-search-input::placeholder {\n color: var(--ty-text--);\n}\n\n/* Mobile options container - floating card with elevation */\n.dropdown-mode-mobile .mobile-options-container {\n position: relative;\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n background: var(--ty-surface-floating); /* Floating card background */\n border-radius: var(--ty-radius-lg);\n border: 1px solid var(--ty-border-);\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n border: 3px solid;\n border-color: var(--mobile-border-color);\n}\n\n/* Hide scrollbar but keep functionality */\n.dropdown-mode-mobile .mobile-options-container {\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE/Edge */\n}\n\n.dropdown-mode-mobile .mobile-options-container::-webkit-scrollbar {\n display: none; /* Chrome, Safari, Opera */\n}\n\n/* Mobile option styling - native <option> only */\n.dropdown-mode-mobile .mobile-options-container ::slotted(option) {\n display: block;\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n margin: 2px 8px;\n color: var(--ty-text);\n cursor: pointer;\n transition: var(--ty-transition-all);\n border: none;\n background: transparent;\n font-size: var(--ty-font-sm);\n font-family: inherit;\n width: calc(100% - 16px);\n text-align: left;\n box-sizing: border-box;\n border-radius: var(--ty-radius-sm);\n min-height: 36px;\n}\n\n.dropdown-mode-mobile .mobile-options-container ::slotted(option:active) {\n background-color: var(--ty-bg-neutral-soft);\n}\n\n.dropdown-mode-mobile .mobile-options-container ::slotted(option[highlighted]) {\n background-color: var(--ty-bg-primary-soft);\n color: var(--ty-color-primary-mild);\n}\n\n.dropdown-mode-mobile .mobile-options-container ::slotted(option[selected]) {\n background: var(--ty-bg-primary);\n color: var(--ty-color-primary-strong);\n}\n\n.dropdown-mode-mobile .mobile-options-container ::slotted(option[hidden]),\n.dropdown-mode-mobile .mobile-options-container ::slotted(ty-option[hidden]),\n.dropdown-mode-mobile .mobile-options-container ::slotted(ty-tag[hidden]) {\n display: none;\n}\n\n/* ==================== FLAVOR VARIANTS ==================== */\n/* Apply to both modes */\n\n:host([flavor=\"primary\"]) .dropdown-stub,\n:host([flavor=\"primary\"]) .dropdown-search-input {\n border-color: var(--ty-color-primary);\n}\n\n:host([flavor=\"primary\"]) .dropdown-stub:hover,\n:host([flavor=\"primary\"]) .dropdown-search-input:focus {\n border-color: var(--ty-color-primary-mild);\n box-shadow: 0 0 0 3px var(--ty-color-primary-faint);\n}\n\n:host([flavor=\"secondary\"]) .dropdown-stub,\n:host([flavor=\"secondary\"]) .dropdown-search-input {\n border-color: var(--ty-color-secondary);\n}\n\n:host([flavor=\"secondary\"]) .dropdown-stub:hover,\n:host([flavor=\"secondary\"]) .dropdown-search-input:focus {\n border-color: var(--ty-color-secondary-mild);\n box-shadow: 0 0 0 3px var(--ty-color-secondary-faint);\n}\n\n:host([flavor=\"success\"]) .dropdown-stub,\n:host([flavor=\"success\"]) .dropdown-search-input {\n border-color: var(--ty-color-success);\n}\n\n:host([flavor=\"success\"]) .dropdown-stub:hover,\n:host([flavor=\"success\"]) .dropdown-search-input:focus {\n border-color: var(--ty-color-success-mild);\n box-shadow: 0 0 0 3px var(--ty-color-success-faint);\n}\n\n:host([flavor=\"danger\"]) .dropdown-stub,\n:host([flavor=\"danger\"]) .dropdown-search-input {\n border-color: var(--ty-color-danger);\n}\n\n:host([flavor=\"danger\"]) .dropdown-stub:hover,\n:host([flavor=\"danger\"]) .dropdown-search-input:focus {\n border-color: var(--ty-color-danger-mild);\n box-shadow: 0 0 0 3px var(--ty-color-danger-faint);\n}\n\n:host([flavor=\"warning\"]) .dropdown-stub,\n:host([flavor=\"warning\"]) .dropdown-search-input {\n border-color: var(--ty-color-warning);\n}\n\n:host([flavor=\"warning\"]) .dropdown-stub:hover,\n:host([flavor=\"warning\"]) .dropdown-search-input:focus {\n border-color: var(--ty-color-warning-mild);\n box-shadow: 0 0 0 3px var(--ty-color-warning-faint);\n}\n\n/* ==================== READONLY STATE ==================== */\n\n:host([readonly]) .dropdown-chevron {\n display: none;\n}\n\n:host([readonly]) .dropdown-stub {\n padding-right: var(--ty-spacing-3);\n}\n\n:host([readonly]) .dropdown-stub,\n:host([readonly]) .dropdown-stub slot[name=\"selected\"] {\n cursor: initial;\n}\n";
|
|
12
|
+
//# sourceMappingURL=dropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/styles/dropdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,cAAc,+7vBA82B1B,CAAA"}
|