tyrell-components 1.0.0-RC13 → 1.0.0-RC14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/css/tyrell-theme.css +167 -178
- package/css/tyrell.css +19 -0
- package/dist/tyrell-theme.css +167 -178
- package/dist/tyrell.css +19 -0
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +20 -10
- package/lib/base/ty-component.js +21 -144
- package/lib/components/button.d.ts +2 -16
- package/lib/components/button.js +0 -36
- package/lib/components/calendar-month.d.ts +2 -48
- package/lib/components/calendar-month.js +4 -166
- package/lib/components/calendar-navigation.d.ts +3 -48
- package/lib/components/calendar-navigation.js +3 -126
- package/lib/components/calendar.d.ts +3 -80
- package/lib/components/calendar.js +8 -230
- package/lib/components/checkbox.d.ts +4 -71
- package/lib/components/checkbox.js +7 -151
- package/lib/components/copy.d.ts +3 -56
- package/lib/components/copy.js +1 -120
- package/lib/components/date-picker.d.ts +13 -162
- package/lib/components/date-picker.js +41 -592
- package/lib/components/file-upload.d.ts +9 -15
- package/lib/components/file-upload.js +19 -41
- package/lib/components/icon.d.ts +3 -24
- package/lib/components/icon.js +1 -90
- package/lib/components/input.d.ts +7 -107
- package/lib/components/input.js +5 -193
- package/lib/components/modal.d.ts +17 -26
- package/lib/components/modal.js +57 -201
- package/lib/components/option.d.ts +2 -9
- package/lib/components/option.js +0 -48
- package/lib/components/popup.d.ts +2 -17
- package/lib/components/popup.js +8 -139
- package/lib/components/radio.d.ts +3 -23
- package/lib/components/radio.js +10 -65
- package/lib/components/resize-observer.d.ts +3 -30
- package/lib/components/resize-observer.js +12 -46
- package/lib/components/scroll-container.d.ts +2 -12
- package/lib/components/scroll-container.js +3 -46
- package/lib/components/select.d.ts +22 -153
- package/lib/components/select.js +33 -590
- package/lib/components/selected-tags.d.ts +4 -47
- package/lib/components/selected-tags.js +1 -95
- package/lib/components/step.d.ts +1 -6
- package/lib/components/step.js +0 -6
- package/lib/components/switch.d.ts +0 -11
- package/lib/components/switch.js +2 -36
- package/lib/components/tab.d.ts +1 -6
- package/lib/components/tab.js +0 -7
- package/lib/components/tabs.d.ts +5 -63
- package/lib/components/tabs.js +20 -283
- package/lib/components/tag.d.ts +2 -36
- package/lib/components/tag.js +5 -105
- package/lib/components/textarea.d.ts +6 -86
- package/lib/components/textarea.js +2 -173
- package/lib/components/tooltip.d.ts +3 -11
- package/lib/components/tooltip.js +24 -160
- package/lib/components/wizard.d.ts +6 -54
- package/lib/components/wizard.js +15 -228
- package/lib/icons/fontawesome/brands.d.ts +0 -1
- package/lib/icons/fontawesome/brands.js +0 -8
- package/lib/icons/fontawesome/regular.d.ts +0 -1
- package/lib/icons/fontawesome/regular.js +0 -8
- package/lib/icons/fontawesome/solid.d.ts +0 -1
- package/lib/icons/fontawesome/solid.js +0 -8
- package/lib/icons/heroicons/micro.d.ts +0 -1
- package/lib/icons/heroicons/micro.js +0 -8
- package/lib/icons/heroicons/mini.d.ts +0 -1
- package/lib/icons/heroicons/mini.js +0 -8
- package/lib/icons/heroicons/outline.d.ts +0 -1
- package/lib/icons/heroicons/outline.js +0 -8
- package/lib/icons/heroicons/solid.d.ts +0 -1
- package/lib/icons/heroicons/solid.js +0 -8
- package/lib/icons/lucide.d.ts +0 -1
- package/lib/icons/lucide.js +0 -1872
- package/lib/icons/material/filled.d.ts +0 -1
- package/lib/icons/material/filled.js +0 -10
- package/lib/icons/material/outlined.d.ts +0 -1
- package/lib/icons/material/outlined.js +0 -10
- package/lib/icons/material/round.d.ts +0 -1
- package/lib/icons/material/round.js +0 -10
- package/lib/icons/material/sharp.d.ts +0 -1
- package/lib/icons/material/sharp.js +0 -10
- package/lib/icons/material/two-tone.d.ts +0 -1
- package/lib/icons/material/two-tone.js +0 -10
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -20
- package/lib/styles/button.d.ts +2 -20
- package/lib/styles/button.js +22 -122
- package/lib/styles/calendar-month.d.ts +1 -5
- package/lib/styles/calendar-month.js +4 -61
- package/lib/styles/calendar-navigation.d.ts +2 -6
- package/lib/styles/calendar-navigation.js +2 -27
- package/lib/styles/calendar.d.ts +1 -2
- package/lib/styles/calendar.js +1 -14
- package/lib/styles/checkbox.d.ts +0 -1
- package/lib/styles/checkbox.js +1 -23
- package/lib/styles/copy.d.ts +0 -1
- package/lib/styles/copy.js +2 -17
- package/lib/styles/custom-scrollbar.d.ts +1 -2
- package/lib/styles/custom-scrollbar.js +3 -18
- package/lib/styles/date-picker.d.ts +1 -5
- package/lib/styles/date-picker.js +35 -39
- package/lib/styles/file-upload.d.ts +1 -2
- package/lib/styles/file-upload.js +1 -16
- package/lib/styles/icon.d.ts +2 -6
- package/lib/styles/icon.js +7 -21
- package/lib/styles/input.d.ts +1 -6
- package/lib/styles/input.js +5 -54
- package/lib/styles/modal.d.ts +1 -2
- package/lib/styles/modal.js +21 -23
- package/lib/styles/option.d.ts +2 -6
- package/lib/styles/option.js +17 -12
- package/lib/styles/popup.d.ts +1 -2
- package/lib/styles/popup.js +26 -30
- package/lib/styles/radio.d.ts +0 -1
- package/lib/styles/radio.js +2 -16
- package/lib/styles/resize-observer.d.ts +1 -2
- package/lib/styles/resize-observer.js +0 -7
- package/lib/styles/scroll-container.d.ts +1 -2
- package/lib/styles/scroll-container.js +0 -19
- package/lib/styles/select-base.d.ts +0 -1
- package/lib/styles/select-base.js +68 -79
- package/lib/styles/select.d.ts +1 -2
- package/lib/styles/select.js +7 -15
- package/lib/styles/step.d.ts +1 -2
- package/lib/styles/step.js +0 -4
- package/lib/styles/switch.d.ts +0 -1
- package/lib/styles/switch.js +2 -20
- package/lib/styles/tab.d.ts +1 -2
- package/lib/styles/tab.js +0 -5
- package/lib/styles/tabs.d.ts +3 -11
- package/lib/styles/tabs.js +10 -48
- package/lib/styles/tag.d.ts +1 -5
- package/lib/styles/tag.js +2 -31
- package/lib/styles/textarea.d.ts +1 -2
- package/lib/styles/textarea.js +2 -45
- package/lib/styles/tooltip.d.ts +0 -1
- package/lib/styles/tooltip.js +0 -10
- package/lib/styles/wizard.d.ts +5 -21
- package/lib/styles/wizard.js +8 -88
- package/lib/types/common.d.ts +0 -2
- package/lib/types/common.js +0 -12
- package/lib/utils/calendar-utils.d.ts +4 -21
- package/lib/utils/calendar-utils.js +4 -177
- package/lib/utils/custom-scrollbar.d.ts +6 -20
- package/lib/utils/custom-scrollbar.js +1 -45
- package/lib/utils/flavor-sheet.d.ts +0 -1
- package/lib/utils/flavor-sheet.js +0 -23
- package/lib/utils/icon-registry.d.ts +0 -2
- package/lib/utils/icon-registry.js +1 -107
- package/lib/utils/icons.d.ts +0 -1
- package/lib/utils/icons.js +0 -9
- package/lib/utils/loader-registry.d.ts +0 -1
- package/lib/utils/loader-registry.js +0 -32
- package/lib/utils/locale.d.ts +2 -23
- package/lib/utils/locale.js +0 -86
- package/lib/utils/mobile.d.ts +0 -1
- package/lib/utils/mobile.js +0 -17
- package/lib/utils/number-format.d.ts +6 -3
- package/lib/utils/number-format.js +11 -67
- package/lib/utils/positioning.d.ts +50 -7
- package/lib/utils/positioning.js +52 -62
- package/lib/utils/property-capture.d.ts +5 -27
- package/lib/utils/property-capture.js +0 -108
- package/lib/utils/property-manager.d.ts +0 -1
- package/lib/utils/property-manager.js +0 -70
- package/lib/utils/resize-observer.d.ts +0 -1
- package/lib/utils/resize-observer.js +0 -36
- package/lib/utils/scroll-lock.d.ts +4 -11
- package/lib/utils/scroll-lock.js +0 -107
- package/lib/utils/styles.d.ts +0 -1
- package/lib/utils/styles.js +0 -24
- package/lib/version.d.ts +1 -2
- package/lib/version.js +1 -11
- package/package.json +2 -2
- package/lib/base/ty-component.d.ts.map +0 -1
- package/lib/base/ty-component.js.map +0 -1
- package/lib/components/button.d.ts.map +0 -1
- package/lib/components/button.js.map +0 -1
- package/lib/components/calendar-month.d.ts.map +0 -1
- package/lib/components/calendar-month.js.map +0 -1
- package/lib/components/calendar-navigation.d.ts.map +0 -1
- package/lib/components/calendar-navigation.js.map +0 -1
- package/lib/components/calendar.d.ts.map +0 -1
- package/lib/components/calendar.js.map +0 -1
- package/lib/components/checkbox.d.ts.map +0 -1
- package/lib/components/checkbox.js.map +0 -1
- package/lib/components/copy.d.ts.map +0 -1
- package/lib/components/copy.js.map +0 -1
- package/lib/components/date-picker.d.ts.map +0 -1
- package/lib/components/date-picker.js.map +0 -1
- package/lib/components/file-upload.d.ts.map +0 -1
- package/lib/components/file-upload.js.map +0 -1
- package/lib/components/icon.d.ts.map +0 -1
- package/lib/components/icon.js.map +0 -1
- package/lib/components/input.d.ts.map +0 -1
- package/lib/components/input.js.map +0 -1
- package/lib/components/modal.d.ts.map +0 -1
- package/lib/components/modal.js.map +0 -1
- package/lib/components/option.d.ts.map +0 -1
- package/lib/components/option.js.map +0 -1
- package/lib/components/popup.d.ts.map +0 -1
- package/lib/components/popup.js.map +0 -1
- package/lib/components/radio.d.ts.map +0 -1
- package/lib/components/radio.js.map +0 -1
- package/lib/components/resize-observer.d.ts.map +0 -1
- package/lib/components/resize-observer.js.map +0 -1
- package/lib/components/scroll-container.d.ts.map +0 -1
- package/lib/components/scroll-container.js.map +0 -1
- package/lib/components/select.d.ts.map +0 -1
- package/lib/components/select.js.map +0 -1
- package/lib/components/selected-tags.d.ts.map +0 -1
- package/lib/components/selected-tags.js.map +0 -1
- package/lib/components/step.d.ts.map +0 -1
- package/lib/components/step.js.map +0 -1
- package/lib/components/switch.d.ts.map +0 -1
- package/lib/components/switch.js.map +0 -1
- package/lib/components/tab.d.ts.map +0 -1
- package/lib/components/tab.js.map +0 -1
- package/lib/components/tabs.d.ts.map +0 -1
- package/lib/components/tabs.js.map +0 -1
- package/lib/components/tag.d.ts.map +0 -1
- package/lib/components/tag.js.map +0 -1
- package/lib/components/textarea.d.ts.map +0 -1
- package/lib/components/textarea.js.map +0 -1
- package/lib/components/tooltip.d.ts.map +0 -1
- package/lib/components/tooltip.js.map +0 -1
- package/lib/components/wizard.d.ts.map +0 -1
- package/lib/components/wizard.js.map +0 -1
- package/lib/icons/fontawesome/brands.d.ts.map +0 -1
- package/lib/icons/fontawesome/brands.js.map +0 -1
- package/lib/icons/fontawesome/regular.d.ts.map +0 -1
- package/lib/icons/fontawesome/regular.js.map +0 -1
- package/lib/icons/fontawesome/solid.d.ts.map +0 -1
- package/lib/icons/fontawesome/solid.js.map +0 -1
- package/lib/icons/heroicons/micro.d.ts.map +0 -1
- package/lib/icons/heroicons/micro.js.map +0 -1
- package/lib/icons/heroicons/mini.d.ts.map +0 -1
- package/lib/icons/heroicons/mini.js.map +0 -1
- package/lib/icons/heroicons/outline.d.ts.map +0 -1
- package/lib/icons/heroicons/outline.js.map +0 -1
- package/lib/icons/heroicons/solid.d.ts.map +0 -1
- package/lib/icons/heroicons/solid.js.map +0 -1
- package/lib/icons/lucide.d.ts.map +0 -1
- package/lib/icons/lucide.js.map +0 -1
- package/lib/icons/material/filled.d.ts.map +0 -1
- package/lib/icons/material/filled.js.map +0 -1
- package/lib/icons/material/outlined.d.ts.map +0 -1
- package/lib/icons/material/outlined.js.map +0 -1
- package/lib/icons/material/round.d.ts.map +0 -1
- package/lib/icons/material/round.js.map +0 -1
- package/lib/icons/material/sharp.d.ts.map +0 -1
- package/lib/icons/material/sharp.js.map +0 -1
- package/lib/icons/material/two-tone.d.ts.map +0 -1
- package/lib/icons/material/two-tone.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/styles/button.d.ts.map +0 -1
- package/lib/styles/button.js.map +0 -1
- package/lib/styles/calendar-month.d.ts.map +0 -1
- package/lib/styles/calendar-month.js.map +0 -1
- package/lib/styles/calendar-navigation.d.ts.map +0 -1
- package/lib/styles/calendar-navigation.js.map +0 -1
- package/lib/styles/calendar.d.ts.map +0 -1
- package/lib/styles/calendar.js.map +0 -1
- package/lib/styles/checkbox.d.ts.map +0 -1
- package/lib/styles/checkbox.js.map +0 -1
- package/lib/styles/copy.d.ts.map +0 -1
- package/lib/styles/copy.js.map +0 -1
- package/lib/styles/custom-scrollbar.d.ts.map +0 -1
- package/lib/styles/custom-scrollbar.js.map +0 -1
- package/lib/styles/date-picker.d.ts.map +0 -1
- package/lib/styles/date-picker.js.map +0 -1
- package/lib/styles/file-upload.d.ts.map +0 -1
- package/lib/styles/file-upload.js.map +0 -1
- package/lib/styles/icon.d.ts.map +0 -1
- package/lib/styles/icon.js.map +0 -1
- package/lib/styles/input.d.ts.map +0 -1
- package/lib/styles/input.js.map +0 -1
- package/lib/styles/modal.d.ts.map +0 -1
- package/lib/styles/modal.js.map +0 -1
- package/lib/styles/multiselect.d.ts +0 -8
- package/lib/styles/multiselect.d.ts.map +0 -1
- package/lib/styles/multiselect.js +0 -849
- package/lib/styles/multiselect.js.map +0 -1
- package/lib/styles/option.d.ts.map +0 -1
- package/lib/styles/option.js.map +0 -1
- package/lib/styles/popup.d.ts.map +0 -1
- package/lib/styles/popup.js.map +0 -1
- package/lib/styles/radio.d.ts.map +0 -1
- package/lib/styles/radio.js.map +0 -1
- package/lib/styles/resize-observer.d.ts.map +0 -1
- package/lib/styles/resize-observer.js.map +0 -1
- package/lib/styles/scroll-container.d.ts.map +0 -1
- package/lib/styles/scroll-container.js.map +0 -1
- package/lib/styles/select-base.d.ts.map +0 -1
- package/lib/styles/select-base.js.map +0 -1
- package/lib/styles/select.d.ts.map +0 -1
- package/lib/styles/select.js.map +0 -1
- package/lib/styles/step.d.ts.map +0 -1
- package/lib/styles/step.js.map +0 -1
- package/lib/styles/switch.d.ts.map +0 -1
- package/lib/styles/switch.js.map +0 -1
- package/lib/styles/tab.d.ts.map +0 -1
- package/lib/styles/tab.js.map +0 -1
- package/lib/styles/tabs.d.ts.map +0 -1
- package/lib/styles/tabs.js.map +0 -1
- package/lib/styles/tag.d.ts.map +0 -1
- package/lib/styles/tag.js.map +0 -1
- package/lib/styles/textarea.d.ts.map +0 -1
- package/lib/styles/textarea.js.map +0 -1
- package/lib/styles/tooltip.d.ts.map +0 -1
- package/lib/styles/tooltip.js.map +0 -1
- package/lib/styles/wizard.d.ts.map +0 -1
- package/lib/styles/wizard.js.map +0 -1
- package/lib/types/common.d.ts.map +0 -1
- package/lib/types/common.js.map +0 -1
- package/lib/utils/calendar-utils.d.ts.map +0 -1
- package/lib/utils/calendar-utils.js.map +0 -1
- package/lib/utils/custom-scrollbar.d.ts.map +0 -1
- package/lib/utils/custom-scrollbar.js.map +0 -1
- package/lib/utils/flavor-sheet.d.ts.map +0 -1
- package/lib/utils/flavor-sheet.js.map +0 -1
- package/lib/utils/icon-registry.d.ts.map +0 -1
- package/lib/utils/icon-registry.js.map +0 -1
- package/lib/utils/icons.d.ts.map +0 -1
- package/lib/utils/icons.js.map +0 -1
- package/lib/utils/loader-registry.d.ts.map +0 -1
- package/lib/utils/loader-registry.js.map +0 -1
- package/lib/utils/locale.d.ts.map +0 -1
- package/lib/utils/locale.js.map +0 -1
- package/lib/utils/mobile.d.ts.map +0 -1
- package/lib/utils/mobile.js.map +0 -1
- package/lib/utils/number-format.d.ts.map +0 -1
- package/lib/utils/number-format.js.map +0 -1
- package/lib/utils/parse-boolean.d.ts +0 -39
- package/lib/utils/parse-boolean.d.ts.map +0 -1
- package/lib/utils/parse-boolean.js +0 -58
- package/lib/utils/parse-boolean.js.map +0 -1
- package/lib/utils/positioning.d.ts.map +0 -1
- package/lib/utils/positioning.js.map +0 -1
- package/lib/utils/property-capture.d.ts.map +0 -1
- package/lib/utils/property-capture.js.map +0 -1
- package/lib/utils/property-manager.d.ts.map +0 -1
- package/lib/utils/property-manager.js.map +0 -1
- package/lib/utils/resize-observer.d.ts.map +0 -1
- package/lib/utils/resize-observer.js.map +0 -1
- package/lib/utils/scroll-lock.d.ts.map +0 -1
- package/lib/utils/scroll-lock.js.map +0 -1
- package/lib/utils/styles.d.ts.map +0 -1
- package/lib/utils/styles.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js.map +0 -1
package/lib/styles/modal.js
CHANGED
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Modal Styles
|
|
3
|
-
*
|
|
4
|
-
* CSS for the modal component wrapper.
|
|
5
|
-
* The modal is a pure wrapper - all content styling is user-defined.
|
|
6
|
-
*/
|
|
7
1
|
export const modalStyles = `
|
|
8
|
-
/* Modal Host Styling */
|
|
9
2
|
:host {
|
|
10
3
|
display: contents;
|
|
11
4
|
/* Don't interfere with layout */
|
|
12
|
-
/* CSS variables are now auto-generated via the with-vars? option */
|
|
13
5
|
}
|
|
14
6
|
|
|
15
|
-
/*
|
|
16
|
-
/* This is part of the modal wrapper functionality, not user content styling */
|
|
17
|
-
|
|
7
|
+
/* Part of the modal wrapper functionality, not user content styling */
|
|
18
8
|
.close-button {
|
|
19
9
|
position: absolute;
|
|
20
10
|
top: -8px;
|
|
@@ -70,9 +60,7 @@ export const modalStyles = `
|
|
|
70
60
|
visibility: hidden;
|
|
71
61
|
}
|
|
72
62
|
|
|
73
|
-
/*
|
|
74
|
-
/* Modal dialog - provides only essential modal functionality without styling user content */
|
|
75
|
-
|
|
63
|
+
/* Pure wrapper: only essential modal functionality, no styling of user content */
|
|
76
64
|
.ty-modal-dialog {
|
|
77
65
|
/* Reset default dialog styles */
|
|
78
66
|
padding: 18px;
|
|
@@ -80,13 +68,12 @@ export const modalStyles = `
|
|
|
80
68
|
margin: 0;
|
|
81
69
|
background: transparent;
|
|
82
70
|
|
|
83
|
-
/*
|
|
71
|
+
/* Centered */
|
|
84
72
|
position: fixed;
|
|
85
73
|
top: 50%;
|
|
86
74
|
left: 50%;
|
|
87
75
|
transform: translate(-50%, -50%);
|
|
88
76
|
|
|
89
|
-
/* Layer management */
|
|
90
77
|
z-index: 1000;
|
|
91
78
|
overflow: hidden;
|
|
92
79
|
|
|
@@ -97,9 +84,25 @@ export const modalStyles = `
|
|
|
97
84
|
outline: none;
|
|
98
85
|
}
|
|
99
86
|
|
|
100
|
-
/*
|
|
101
|
-
|
|
87
|
+
/* Panel zoom-in synced with the backdrop fade (shadcn-style zoom-in-95).
|
|
88
|
+
Enter-only: animating exit on a native <dialog> means delaying close(). */
|
|
89
|
+
.ty-modal-dialog[open] {
|
|
90
|
+
animation: ty-modal-enter var(--ty-modal-duration, 200ms) ease-out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@keyframes ty-modal-enter {
|
|
94
|
+
from {
|
|
95
|
+
opacity: 0;
|
|
96
|
+
transform: translate(-50%, -50%) scale(0.93);
|
|
97
|
+
}
|
|
102
98
|
|
|
99
|
+
to {
|
|
100
|
+
opacity: 1;
|
|
101
|
+
transform: translate(-50%, -50%) scale(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Backdrop is part of modal functionality, not user content */
|
|
103
106
|
.ty-modal-dialog::backdrop {
|
|
104
107
|
background: var(--ty-modal-backdrop, rgba(0, 0, 0, 0.5));
|
|
105
108
|
backdrop-filter: var(--ty-modal-backdrop-blur, blur(2px));
|
|
@@ -112,15 +115,11 @@ export const modalStyles = `
|
|
|
112
115
|
backdrop-filter: none;
|
|
113
116
|
}
|
|
114
117
|
|
|
115
|
-
/* ===== MODAL CONTENT CONTAINER ===== */
|
|
116
118
|
/* Minimal container - no styling imposed on user content */
|
|
117
|
-
|
|
118
119
|
.modal-content {
|
|
119
120
|
color: var(--ty-text);
|
|
120
121
|
}
|
|
121
122
|
|
|
122
|
-
/* ===== ANIMATION KEYFRAMES ===== */
|
|
123
|
-
|
|
124
123
|
@keyframes ty-modal-backdrop-enter {
|
|
125
124
|
from {
|
|
126
125
|
opacity: 0;
|
|
@@ -131,4 +130,3 @@ export const modalStyles = `
|
|
|
131
130
|
}
|
|
132
131
|
}
|
|
133
132
|
`;
|
|
134
|
-
//# sourceMappingURL=modal.js.map
|
package/lib/styles/option.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* PORTED FROM: clj/ty/components/option.css
|
|
4
|
-
*/
|
|
5
|
-
export declare const optionStyles = "\n/* Ty Option Component Styles */\n\n.option-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ty-spacing-2);\n box-sizing: border-box;\n width: 100%;\n\n /* Ensure content is clickable */\n cursor: pointer;\n user-select: none;\n\n /* Smooth transitions */\n transition: var(--ty-transition-all);\n\n /* Text styling \u2014 Linear-paired typography */\n color: var(--ty-text);\n font-family: var(--ty-font-sans);\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n border-radius: var(--ty-radius-md);\n}\n\n:host([cloned]) .option-content {\n padding: 0px;\n background: transparent;\n}\n\n.option-content:hover {\n background: var(--ty-bg-neutral-soft);\n}\n\n.option-content[highlighted] {\n background: var(--ty-bg-neutral-soft);\n color: var(--ty-text-strong);\n font-weight: var(--ty-font-semibold);\n}\n\n/* Selected: quiet \u2014 bolder text color only, no background slab, no weight change */\n.option-content[selected] {\n background: transparent;\n color: var(--ty-text-bold);\n}\n\n/* Lucide check \u2014 right-aligned, visible only on selected options */\n.option-check {\n display: none;\n flex-shrink: 0;\n width: 14px;\n height: 14px;\n margin-left: auto;\n color: var(--ty-color-primary);\n}\n\n.option-content[selected] .option-check {\n display: block;\n}\n\n/* Never show the check on the copy cloned into the select's trigger field */\n:host([cloned]) .option-check {\n display: none;\n}\n\n.option-content[selected]:hover {\n background: var(--ty-bg-neutral-soft);\n}\n\n.option-content[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.option-content[hidden] {}\n\n/* Ensure nested elements inherit proper styling */\n.option-content * {\n pointer-events: none;\n}\n";
|
|
6
|
-
//# sourceMappingURL=option.d.ts.map
|
|
1
|
+
/** Option Component Styles */
|
|
2
|
+
export declare const optionStyles = "\n.option-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ty-spacing-2);\n box-sizing: border-box;\n width: 100%;\n\n cursor: pointer;\n user-select: none;\n\n transition: var(--ty-transition-all);\n\n /* Linear-paired typography */\n color: var(--ty-text);\n font-family: inherit;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: var(--ty-spacing-2) var(--ty-spacing-3);\n border-radius: var(--ty-radius-md);\n}\n\n/* Cloned copy (projected into the select's trigger field): host defaults to\n inline like any unstyled custom element, which ignores width/overflow \u2014\n force a block box so the parent's flex-basis:0 truncation (select.ts\n .select-stub.has-clone slot[name=\"selected\"]) actually clips it, and\n collapse the content to a single ellipsized line instead of wrapping. */\n:host([cloned]) {\n display: block;\n min-width: 0;\n overflow: hidden;\n}\n:host([cloned]) .option-content {\n display: block;\n padding: 0px;\n background: transparent;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.option-content:hover {\n background: var(--ty-bg-neutral-soft);\n}\n\n.option-content[highlighted] {\n background: var(--ty-bg-neutral-soft);\n color: var(--ty-text-strong);\n font-weight: var(--ty-font-semibold);\n}\n\n/* Selected: quiet \u2014 bolder text color only, no background slab, no weight change */\n.option-content[selected] {\n background: transparent;\n color: var(--ty-text-bold);\n}\n\n/* Lucide check \u2014 right-aligned, visible only on selected options */\n.option-check {\n display: none;\n flex-shrink: 0;\n width: 14px;\n height: 14px;\n margin-left: auto;\n color: var(--ty-color-primary);\n}\n\n.option-content[selected] .option-check {\n display: block;\n}\n\n/* Never show the check on the copy cloned into the select's trigger field */\n:host([cloned]) .option-check {\n display: none;\n}\n\n.option-content[selected]:hover {\n background: var(--ty-bg-neutral-soft);\n}\n\n.option-content[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.option-content[hidden] {}\n\n.option-content * {\n pointer-events: none;\n}\n";
|
package/lib/styles/option.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Option Component Styles
|
|
3
|
-
* PORTED FROM: clj/ty/components/option.css
|
|
4
|
-
*/
|
|
5
1
|
export const optionStyles = `
|
|
6
|
-
/* Ty Option Component Styles */
|
|
7
|
-
|
|
8
2
|
.option-content {
|
|
9
3
|
display: flex;
|
|
10
4
|
align-items: center;
|
|
@@ -13,16 +7,14 @@ export const optionStyles = `
|
|
|
13
7
|
box-sizing: border-box;
|
|
14
8
|
width: 100%;
|
|
15
9
|
|
|
16
|
-
/* Ensure content is clickable */
|
|
17
10
|
cursor: pointer;
|
|
18
11
|
user-select: none;
|
|
19
12
|
|
|
20
|
-
/* Smooth transitions */
|
|
21
13
|
transition: var(--ty-transition-all);
|
|
22
14
|
|
|
23
|
-
/*
|
|
15
|
+
/* Linear-paired typography */
|
|
24
16
|
color: var(--ty-text);
|
|
25
|
-
font-family:
|
|
17
|
+
font-family: inherit;
|
|
26
18
|
font-size: var(--ty-font-sm);
|
|
27
19
|
line-height: var(--ty-leading-sm);
|
|
28
20
|
letter-spacing: var(--ty-tracking-sm);
|
|
@@ -30,9 +22,24 @@ export const optionStyles = `
|
|
|
30
22
|
border-radius: var(--ty-radius-md);
|
|
31
23
|
}
|
|
32
24
|
|
|
25
|
+
/* Cloned copy (projected into the select's trigger field): host defaults to
|
|
26
|
+
inline like any unstyled custom element, which ignores width/overflow —
|
|
27
|
+
force a block box so the parent's flex-basis:0 truncation (select.ts
|
|
28
|
+
.select-stub.has-clone slot[name="selected"]) actually clips it, and
|
|
29
|
+
collapse the content to a single ellipsized line instead of wrapping. */
|
|
30
|
+
:host([cloned]) {
|
|
31
|
+
display: block;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
}
|
|
33
35
|
:host([cloned]) .option-content {
|
|
36
|
+
display: block;
|
|
34
37
|
padding: 0px;
|
|
35
38
|
background: transparent;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
overflow: hidden;
|
|
41
|
+
white-space: nowrap;
|
|
42
|
+
text-overflow: ellipsis;
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
.option-content:hover {
|
|
@@ -81,9 +88,7 @@ export const optionStyles = `
|
|
|
81
88
|
|
|
82
89
|
.option-content[hidden] {}
|
|
83
90
|
|
|
84
|
-
/* Ensure nested elements inherit proper styling */
|
|
85
91
|
.option-content * {
|
|
86
92
|
pointer-events: none;
|
|
87
93
|
}
|
|
88
94
|
`;
|
|
89
|
-
//# sourceMappingURL=option.js.map
|
package/lib/styles/popup.d.ts
CHANGED
|
@@ -4,5 +4,4 @@
|
|
|
4
4
|
* Popup component with dropdown-like behavior and tooltip positioning.
|
|
5
5
|
* Uses dialog element for top layer rendering like dropdown and date-picker.
|
|
6
6
|
*/
|
|
7
|
-
export declare const popupStyles = "\n
|
|
8
|
-
//# sourceMappingURL=popup.d.ts.map
|
|
7
|
+
export declare const popupStyles = "\n.popup-dialog {\n position: fixed;\n top: 0;\n left: 0;\n\n /* Reset dialog defaults */\n margin: 0;\n border: none;\n background: transparent;\n max-width: none;\n max-height: none;\n\n /* Shadow infrastructure - provide space for user shadows */\n padding: var(--popup-padding, 16px);\n\n /* Hidden by default - even when [open] (for positioning phase) */\n visibility: hidden;\n opacity: 0;\n /* NO TRANSFORM here - apply only when animating to avoid measurement errors! */\n\n transition:\n opacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\n visibility var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\n transform var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\n\n /* Prevent interactions when hidden */\n pointer-events: none;\n}\n\n/* Apply position variables only when position is calculated (like dropdown) */\n.popup-dialog.position-calculated {\n top: var(--popup-y, 0px);\n left: var(--popup-x, 0px);\n}\n\n/* Entrance prep (right before .open): scale + a short slide from the anchor\n side. data-side is the RESOLVED side (post-flip), set by updatePosition. */\n.popup-dialog.preparing-animation {\n transform: scale(0.96);\n}\n\n.popup-dialog[data-side=\"bottom\"].preparing-animation:not(.open) {\n transform: translateY(-6px) scale(0.96);\n}\n\n.popup-dialog[data-side=\"top\"].preparing-animation:not(.open) {\n transform: translateY(6px) scale(0.96);\n}\n\n.popup-dialog[data-side=\"left\"].preparing-animation:not(.open) {\n transform: translateX(6px) scale(0.96);\n}\n\n.popup-dialog[data-side=\"right\"].preparing-animation:not(.open) {\n transform: translateX(-6px) scale(0.96);\n}\n\n.popup-dialog.open {\n visibility: visible;\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n}\n\n/* Make dialog backdrop transparent like dropdown/date-picker */\n.popup-dialog::backdrop {\n background: transparent;\n}\n\n/* Neutral structural container \u2014 users control all visuals via slotted content */\n.popup-container {\n display: contents;\n}\n\n/* Slotted content defines its own styling */\n#popup-content {\n display: contents;\n}\n\n/* Users have complete control over the popup's appearance; only essential\n positioning is imposed here. */\n#popup-content ::slotted(*) {\n position: relative;\n\n /* Prevent content from being too wide - still helpful */\n max-width: min(400px, 90vw);\n max-height: min(500px, 80vh);\n overflow: auto;\n}\n";
|
package/lib/styles/popup.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Popup Component Styles
|
|
3
|
-
*
|
|
4
|
-
* Popup component with dropdown-like behavior and tooltip positioning.
|
|
5
|
-
* Uses dialog element for top layer rendering like dropdown and date-picker.
|
|
6
|
-
*/
|
|
7
1
|
export const popupStyles = `
|
|
8
|
-
/* Popup component with dropdown-like behavior and tooltip positioning */
|
|
9
|
-
/* Uses dialog element for top layer rendering like dropdown and date-picker */
|
|
10
|
-
|
|
11
2
|
.popup-dialog {
|
|
12
3
|
position: fixed;
|
|
13
4
|
top: 0;
|
|
@@ -28,11 +19,10 @@ export const popupStyles = `
|
|
|
28
19
|
opacity: 0;
|
|
29
20
|
/* NO TRANSFORM here - apply only when animating to avoid measurement errors! */
|
|
30
21
|
|
|
31
|
-
/* Smooth transitions */
|
|
32
22
|
transition:
|
|
33
|
-
opacity
|
|
34
|
-
visibility
|
|
35
|
-
transform
|
|
23
|
+
opacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
|
|
24
|
+
visibility var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
|
|
25
|
+
transform var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));
|
|
36
26
|
|
|
37
27
|
/* Prevent interactions when hidden */
|
|
38
28
|
pointer-events: none;
|
|
@@ -44,12 +34,28 @@ export const popupStyles = `
|
|
|
44
34
|
left: var(--popup-x, 0px);
|
|
45
35
|
}
|
|
46
36
|
|
|
47
|
-
/*
|
|
37
|
+
/* Entrance prep (right before .open): scale + a short slide from the anchor
|
|
38
|
+
side. data-side is the RESOLVED side (post-flip), set by updatePosition. */
|
|
48
39
|
.popup-dialog.preparing-animation {
|
|
49
|
-
transform: scale(0.
|
|
40
|
+
transform: scale(0.96);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.popup-dialog[data-side="bottom"].preparing-animation:not(.open) {
|
|
44
|
+
transform: translateY(-6px) scale(0.96);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.popup-dialog[data-side="top"].preparing-animation:not(.open) {
|
|
48
|
+
transform: translateY(6px) scale(0.96);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.popup-dialog[data-side="left"].preparing-animation:not(.open) {
|
|
52
|
+
transform: translateX(6px) scale(0.96);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.popup-dialog[data-side="right"].preparing-animation:not(.open) {
|
|
56
|
+
transform: translateX(-6px) scale(0.96);
|
|
50
57
|
}
|
|
51
58
|
|
|
52
|
-
/* When open - smooth entrance animation */
|
|
53
59
|
.popup-dialog.open {
|
|
54
60
|
visibility: visible;
|
|
55
61
|
opacity: 1;
|
|
@@ -62,28 +68,19 @@ export const popupStyles = `
|
|
|
62
68
|
background: transparent;
|
|
63
69
|
}
|
|
64
70
|
|
|
65
|
-
/*
|
|
71
|
+
/* Neutral structural container — users control all visuals via slotted content */
|
|
66
72
|
.popup-container {
|
|
67
|
-
/* No default styling - just provides structure */
|
|
68
|
-
/* Users control all visual aspects via slotted content */
|
|
69
73
|
display: contents;
|
|
70
74
|
}
|
|
71
75
|
|
|
72
|
-
/*
|
|
76
|
+
/* Slotted content defines its own styling */
|
|
73
77
|
#popup-content {
|
|
74
|
-
/* Allow slotted content to define its own styling */
|
|
75
78
|
display: contents;
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
/*
|
|
81
|
+
/* Users have complete control over the popup's appearance; only essential
|
|
82
|
+
positioning is imposed here. */
|
|
79
83
|
#popup-content ::slotted(*) {
|
|
80
|
-
/* Remove default styling that conflicts with user styling */
|
|
81
|
-
/* Users now have complete control over popup appearance */
|
|
82
|
-
/* background: unset; */
|
|
83
|
-
/* border: unset; */
|
|
84
|
-
/* box-shadow: unset; */
|
|
85
|
-
|
|
86
|
-
/* Only maintain essential positioning */
|
|
87
84
|
position: relative;
|
|
88
85
|
|
|
89
86
|
/* Prevent content from being too wide - still helpful */
|
|
@@ -92,4 +89,3 @@ export const popupStyles = `
|
|
|
92
89
|
overflow: auto;
|
|
93
90
|
}
|
|
94
91
|
`;
|
|
95
|
-
//# sourceMappingURL=popup.js.map
|
package/lib/styles/radio.d.ts
CHANGED
package/lib/styles/radio.js
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Radio Group + Radio Styles
|
|
3
|
-
*
|
|
4
|
-
* ty-radio-group: optional label + vertical/horizontal stack of radios + error message
|
|
5
|
-
* ty-radio: circle with inner dot when checked
|
|
6
|
-
*/
|
|
7
1
|
import { FLAVORS } from "../types/common.js";
|
|
8
2
|
import { inputStyles } from "./input.js";
|
|
9
|
-
/* Flavor rules only set --radio-color (checked border + inner dot); base
|
|
10
|
-
rules below consume it. Doubles as the per-instance override API:
|
|
11
|
-
`ty-radio { --radio-color: … }`. Fallback flavor `fb` is used for custom
|
|
12
|
-
flavors so missing tokens degrade to neutral. */
|
|
13
3
|
const radioFlavor = (f, fb) => {
|
|
14
4
|
const tok = (s) => fb
|
|
15
5
|
? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
|
|
@@ -20,7 +10,6 @@ const radioFlavor = (f, fb) => {
|
|
|
20
10
|
:host([flavor="${f}-"]) { --radio-color: ${tok("-soft")}; }
|
|
21
11
|
`;
|
|
22
12
|
};
|
|
23
|
-
/** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
|
|
24
13
|
export const radioCustomFlavorCss = (base) => radioFlavor(base, "neutral");
|
|
25
14
|
export const radioStyles = `
|
|
26
15
|
${inputStyles}
|
|
@@ -38,12 +27,11 @@ ${inputStyles}
|
|
|
38
27
|
width: 100%;
|
|
39
28
|
}
|
|
40
29
|
|
|
41
|
-
/* ===== RADIO GROUP ===== */
|
|
42
30
|
.radio-group-container {
|
|
43
31
|
display: flex;
|
|
44
32
|
flex-direction: column;
|
|
45
33
|
gap: 0.4rem;
|
|
46
|
-
font-family:
|
|
34
|
+
font-family: inherit;
|
|
47
35
|
color: var(--ty-color-text);
|
|
48
36
|
}
|
|
49
37
|
|
|
@@ -90,7 +78,7 @@ ${inputStyles}
|
|
|
90
78
|
height: 100%;
|
|
91
79
|
}
|
|
92
80
|
|
|
93
|
-
/*
|
|
81
|
+
/* A radio item is just the circle */
|
|
94
82
|
.radio-container {
|
|
95
83
|
display: inline-block;
|
|
96
84
|
cursor: pointer;
|
|
@@ -144,7 +132,6 @@ ${inputStyles}
|
|
|
144
132
|
transform: translate(-50%, -50%) scale(1);
|
|
145
133
|
}
|
|
146
134
|
|
|
147
|
-
/* Size variants */
|
|
148
135
|
.radio-container.xs .radio-circle { width: 14px; height: 14px; }
|
|
149
136
|
.radio-container.xs .radio-circle::after { width: 6px; height: 6px; }
|
|
150
137
|
|
|
@@ -160,4 +147,3 @@ ${inputStyles}
|
|
|
160
147
|
/* Flavor variants — set --radio-color, consumed by the base rules above */
|
|
161
148
|
${FLAVORS.map((f) => radioFlavor(f)).join("")}
|
|
162
149
|
`;
|
|
163
|
-
//# sourceMappingURL=radio.js.map
|
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
* TyResizeObserver styles
|
|
3
3
|
* Minimal styling - just ensures component participates in layout
|
|
4
4
|
*/
|
|
5
|
-
export declare const resizeObserverStyles = "\n:host {\n /* Default to block display, user can override */\n display: block;\n
|
|
6
|
-
//# sourceMappingURL=resize-observer.d.ts.map
|
|
5
|
+
export declare const resizeObserverStyles = "\n:host {\n /* Default to block display, user can override */\n display: block;\n position: relative;\n}\n\n::slotted(*) {\n /* No default styling - preserve natural layout */\n}\n";
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TyResizeObserver styles
|
|
3
|
-
* Minimal styling - just ensures component participates in layout
|
|
4
|
-
*/
|
|
5
1
|
export const resizeObserverStyles = `
|
|
6
2
|
:host {
|
|
7
3
|
/* Default to block display, user can override */
|
|
8
4
|
display: block;
|
|
9
|
-
/* Ensure the component can participate in layout */
|
|
10
5
|
position: relative;
|
|
11
6
|
}
|
|
12
7
|
|
|
13
|
-
/* Slot content styling */
|
|
14
8
|
::slotted(*) {
|
|
15
9
|
/* No default styling - preserve natural layout */
|
|
16
10
|
}
|
|
17
11
|
`;
|
|
18
|
-
//# sourceMappingURL=resize-observer.js.map
|
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
* TyScrollContainer styles
|
|
3
3
|
* Component-specific styles + shared custom scrollbar styles
|
|
4
4
|
*/
|
|
5
|
-
export declare const scrollContainerStyles = "\n:host {\n display: block;\n position: relative;\n overflow: hidden;\n}\n\n.scroll-wrapper {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n
|
|
6
|
-
//# sourceMappingURL=scroll-container.d.ts.map
|
|
5
|
+
export declare const scrollContainerStyles = "\n:host {\n display: block;\n position: relative;\n overflow: hidden;\n}\n\n.scroll-wrapper {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n:host([overflow-x]) .scroll-wrapper {\n overflow-x: auto;\n}\n\n:host([max-height]) .scroll-wrapper {\n max-height: var(--scroll-max-height);\n}\n\n/* hide-scrollbar: hides native, no custom */\n:host([hide-scrollbar]) .scroll-wrapper {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n:host([hide-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: none;\n}\n\n/* scroll-anchoring: we manage scroll position in JS, so turn off the browser's\n native scroll anchoring to avoid double-compensation. */\n:host([scroll-anchoring]) .scroll-wrapper {\n overflow-anchor: none;\n}\n\n/* custom-scrollbar: hides native */\n:host([custom-scrollbar]) .scroll-wrapper {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: none;\n}\n\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {\n opacity: 1;\n}\n\n/* Corner gap when both axes are present */\n:host([custom-scrollbar][overflow-x]) .ty-scrollbar-track-y {\n bottom: var(--ty-scrollbar-width, 8px);\n}\n\n:host([custom-scrollbar]) .ty-scrollbar-track-x {\n right: var(--ty-scrollbar-width, 8px);\n}\n\n.shadow-overlay {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\n position: absolute;\n opacity: 0;\n transition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);\n pointer-events: none;\n}\n\n.shadow-top {\n top: -40px;\n left: 0;\n right: 0;\n height: 80px;\n background: var(--ty-scroll-shadow-top, radial-gradient(\n ellipse 100% 30% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(50% 0 0 0);\n}\n\n.shadow-bottom {\n bottom: -30px;\n left: 0;\n right: 0;\n height: 60px;\n background: var(--ty-scroll-shadow-bottom, radial-gradient(\n ellipse 100% 20% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 0 50% 0);\n}\n\n.shadow-left {\n left: -30px;\n top: 0;\n bottom: 0;\n width: 60px;\n background: var(--ty-scroll-shadow-left, radial-gradient(\n ellipse 30% 100% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 0 0 50%);\n}\n\n.shadow-right {\n right: -30px;\n top: 0;\n bottom: 0;\n width: 60px;\n background: var(--ty-scroll-shadow-right, radial-gradient(\n ellipse 30% 100% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 50% 0 0);\n}\n\n.shadow-left,\n.shadow-right {\n display: none;\n}\n\n:host([overflow-x]) .shadow-left,\n:host([overflow-x]) .shadow-right {\n display: block;\n}\n\n.shadow-top.visible,\n.shadow-bottom.visible,\n.shadow-left.visible,\n.shadow-right.visible {\n opacity: 1;\n}\n\n:host([shadow=\"false\"]) .shadow-overlay {\n display: none;\n}\n\n/* Touch devices - restore native scrollbar */\n@media (pointer: coarse) and (hover: none) {\n :host([custom-scrollbar]) .scroll-wrapper {\n scrollbar-width: thin;\n scrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;\n }\n :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: block;\n width: 4px;\n height: 4px;\n }\n :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {\n background: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));\n border-radius: 2px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .shadow-top,\n .shadow-bottom,\n .shadow-left,\n .shadow-right {\n transition-duration: 0ms !important;\n }\n}\n\n\n/* Vertical track */\n.ty-scrollbar-track-y {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-y.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-y.has-overflow:hover,\n.ty-scrollbar-track-y.has-overflow.scrolling,\n.ty-scrollbar-track-y.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-y::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-y:hover::before,\n.ty-scrollbar-track-y.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-y {\n position: absolute;\n right: 0;\n width: 100%;\n min-height: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: var(--ty-local-transition, background 0.15s ease-out);\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-y:hover,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-y:active,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* Horizontal track */\n.ty-scrollbar-track-x {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-x.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-x.has-overflow:hover,\n.ty-scrollbar-track-x.has-overflow.scrolling,\n.ty-scrollbar-track-x.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-x::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-x:hover::before,\n.ty-scrollbar-track-x.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-x {\n position: absolute;\n bottom: 0;\n height: 100%;\n min-width: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: var(--ty-local-transition, background 0.15s ease-out);\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-x:hover,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-x:active,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* Touch devices: hide the custom scrollbar */\n@media (pointer: coarse) and (hover: none) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x {\n display: none !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x,\n .ty-scrollbar-thumb-y,\n .ty-scrollbar-thumb-x {\n transition-duration: 0ms !important;\n }\n}\n\n";
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TyScrollContainer styles
|
|
3
|
-
* Component-specific styles + shared custom scrollbar styles
|
|
4
|
-
*/
|
|
5
1
|
import { customScrollbarStyles } from './custom-scrollbar.js';
|
|
6
2
|
export const scrollContainerStyles = `
|
|
7
3
|
:host {
|
|
@@ -17,7 +13,6 @@ export const scrollContainerStyles = `
|
|
|
17
13
|
overflow-x: hidden;
|
|
18
14
|
}
|
|
19
15
|
|
|
20
|
-
/* Allow horizontal scrolling when enabled */
|
|
21
16
|
:host([overflow-x]) .scroll-wrapper {
|
|
22
17
|
overflow-x: auto;
|
|
23
18
|
}
|
|
@@ -26,10 +21,7 @@ export const scrollContainerStyles = `
|
|
|
26
21
|
max-height: var(--scroll-max-height);
|
|
27
22
|
}
|
|
28
23
|
|
|
29
|
-
/* ===================================== */
|
|
30
24
|
/* hide-scrollbar: hides native, no custom */
|
|
31
|
-
/* ===================================== */
|
|
32
|
-
|
|
33
25
|
:host([hide-scrollbar]) .scroll-wrapper {
|
|
34
26
|
scrollbar-width: none;
|
|
35
27
|
-ms-overflow-style: none;
|
|
@@ -45,10 +37,7 @@ export const scrollContainerStyles = `
|
|
|
45
37
|
overflow-anchor: none;
|
|
46
38
|
}
|
|
47
39
|
|
|
48
|
-
/* ===================================== */
|
|
49
40
|
/* custom-scrollbar: hides native */
|
|
50
|
-
/* ===================================== */
|
|
51
|
-
|
|
52
41
|
:host([custom-scrollbar]) .scroll-wrapper {
|
|
53
42
|
scrollbar-width: none;
|
|
54
43
|
-ms-overflow-style: none;
|
|
@@ -58,7 +47,6 @@ export const scrollContainerStyles = `
|
|
|
58
47
|
display: none;
|
|
59
48
|
}
|
|
60
49
|
|
|
61
|
-
/* Show scrollbar tracks on host hover */
|
|
62
50
|
:host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,
|
|
63
51
|
:host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {
|
|
64
52
|
opacity: 1;
|
|
@@ -73,10 +61,6 @@ export const scrollContainerStyles = `
|
|
|
73
61
|
right: var(--ty-scrollbar-width, 8px);
|
|
74
62
|
}
|
|
75
63
|
|
|
76
|
-
/* ===================================== */
|
|
77
|
-
/* Shadow Indicators */
|
|
78
|
-
/* ===================================== */
|
|
79
|
-
|
|
80
64
|
.shadow-overlay {
|
|
81
65
|
position: absolute;
|
|
82
66
|
inset: 0;
|
|
@@ -188,7 +172,6 @@ export const scrollContainerStyles = `
|
|
|
188
172
|
}
|
|
189
173
|
}
|
|
190
174
|
|
|
191
|
-
/* Respect reduced motion */
|
|
192
175
|
@media (prefers-reduced-motion: reduce) {
|
|
193
176
|
.shadow-top,
|
|
194
177
|
.shadow-bottom,
|
|
@@ -198,7 +181,5 @@ export const scrollContainerStyles = `
|
|
|
198
181
|
}
|
|
199
182
|
}
|
|
200
183
|
|
|
201
|
-
/* Shared scrollbar styles */
|
|
202
184
|
${customScrollbarStyles}
|
|
203
185
|
`;
|
|
204
|
-
//# sourceMappingURL=scroll-container.js.map
|