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/tab.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tab Component Styles
|
|
3
3
|
*/
|
|
4
|
-
export declare const tabStyles = "\n:host {\n width: var(--tabs-width, 100%);\n height: calc(var(--tabs-height, 400px) - var(--buttons-height, 48px));\n display: block;\n box-sizing: border-box;\n flex-shrink: 0;\n transition: opacity var(--transition-duration, 400ms) var(--transition-easing, ease-in-out);\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host {\n transition-duration: 0ms !important;\n }\n}\n\n.tab-wrapper {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.tab-panel {\n width: 100%;\n height: 100%;\n overflow: auto;\n box-sizing: border-box;\n}\n\n.tab-panel.ty-custom-scroll {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.tab-panel.ty-custom-scroll::-webkit-scrollbar {\n display: none;\n}\n\n
|
|
5
|
-
//# sourceMappingURL=tab.d.ts.map
|
|
4
|
+
export declare const tabStyles = "\n:host {\n width: var(--tabs-width, 100%);\n height: calc(var(--tabs-height, 400px) - var(--buttons-height, 48px));\n display: block;\n box-sizing: border-box;\n flex-shrink: 0;\n transition: opacity var(--transition-duration, 400ms) var(--transition-easing, ease-in-out);\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host {\n transition-duration: 0ms !important;\n }\n}\n\n.tab-wrapper {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.tab-panel {\n width: 100%;\n height: 100%;\n overflow: auto;\n box-sizing: border-box;\n}\n\n.tab-panel.ty-custom-scroll {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.tab-panel.ty-custom-scroll::-webkit-scrollbar {\n display: none;\n}\n\n.tab-wrapper:hover .ty-scrollbar-track-y.has-overflow {\n opacity: 1;\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";
|
package/lib/styles/tab.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tab Component Styles
|
|
3
|
-
*/
|
|
4
1
|
import { customScrollbarStyles } from './custom-scrollbar.js';
|
|
5
2
|
export const tabStyles = `
|
|
6
3
|
:host {
|
|
@@ -41,11 +38,9 @@ export const tabStyles = `
|
|
|
41
38
|
display: none;
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
/* Show scrollbar on hover */
|
|
45
41
|
.tab-wrapper:hover .ty-scrollbar-track-y.has-overflow {
|
|
46
42
|
opacity: 1;
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
${customScrollbarStyles}
|
|
50
46
|
`;
|
|
51
|
-
//# sourceMappingURL=tab.js.map
|
package/lib/styles/tabs.d.ts
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tabs Component Styles
|
|
3
|
-
*
|
|
4
|
-
* Styles for the ty-tabs container component including:
|
|
5
|
-
* - Flexbox layout with top/bottom placement
|
|
6
|
-
* - Tab buttons with hover and active states
|
|
7
|
-
* - Animated marker that follows active tab
|
|
8
|
-
* - Carousel viewport with transform animations
|
|
9
|
-
* - Responsive design with prefers-reduced-motion support
|
|
10
|
-
* - Fully customizable via CSS Parts (::part)
|
|
2
|
+
* Tabs Component Styles — ty-tabs container: top/bottom placement, animated
|
|
3
|
+
* active marker, carousel viewport. Customizable via CSS Parts (::part).
|
|
11
4
|
*/
|
|
12
|
-
export declare const tabsStyles = "\n:host {\n display: block;\n width: var(--tabs-width, 100%);\n height: var(--tabs-height, 400px);\n box-sizing: border-box;\n}\n\n.tabs-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n box-sizing: border-box;\n}\n\n
|
|
13
|
-
//# sourceMappingURL=tabs.d.ts.map
|
|
5
|
+
export declare const tabsStyles = "\n:host {\n display: block;\n width: var(--tabs-width, 100%);\n height: var(--tabs-height, 400px);\n box-sizing: border-box;\n}\n\n.tabs-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n box-sizing: border-box;\n}\n\n.tabs-container[data-placement=\"bottom\"] {\n flex-direction: column-reverse;\n}\n\n/* Tab buttons container \u2014 exposed as a CSS Part for full styling control */\n.tab-buttons {\n display: flex;\n gap: 0;\n flex-shrink: 0;\n position: relative;\n /* For absolute positioned marker */\n \n /* Default minimal styling - customize via ::part(buttons-container) */\n border-bottom: 1px solid var(--ty-border);\n background: transparent;\n}\n\n.tabs-container[data-placement=\"bottom\"] .tab-buttons {\n border-bottom: none;\n border-top: 1px solid var(--ty-border);\n}\n\n/* Marker wrapper \u2014 exposed as a CSS Part for custom marker styling */\n.marker-wrapper {\n position: absolute;\n z-index: 0;\n /* Behind buttons */\n pointer-events: none;\n /* Don't block clicks */\n transition: left var(--transition-duration, 300ms) var(--transition-easing, ease-in-out),\n width var(--transition-duration, 300ms) var(--transition-easing, ease-in-out),\n height var(--transition-duration, 300ms) var(--transition-easing, ease-in-out),\n top var(--transition-duration, 300ms) var(--transition-easing, ease-in-out);\n}\n\n.default-marker {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 2px;\n width: 100%;\n background: var(--ty-color-primary);\n pointer-events: none;\n}\n\n/* Hide default marker when custom marker is slotted */\n.marker-wrapper:has(::slotted([slot=\"marker\"])) .default-marker {\n display: none;\n}\n\n::slotted([slot=\"marker\"]) {\n display: block;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n\n.tab-button {\n min-width: 120px;\n padding: 6px 12px;\n border: none;\n background: transparent;\n cursor: pointer;\n font: inherit;\n color: var(--ty-text-soft);\n transition: var(--ty-local-transition, color 200ms, background-color 200ms);\n white-space: nowrap;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-weight: var(--ty-font-bold);\n font-size: var(--ty-font-sm);\n position: relative;\n /* Establish stacking context */\n z-index: 10;\n /* Above marker */\n}\n\n.tab-button[aria-selected=true] {\n color: var(--ty-text-strong);\n}\n\n.tab-button[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.tab-button:focus-visible {\n outline: 2px solid var(--ty-color-primary);\n outline-offset: -2px;\n}\n\n.tab-button.overflow-hidden {\n display: none;\n}\n\n/* Overflow \"more\" trigger + menu */\n.tab-overflow-trigger {\n flex-shrink: 0;\n width: 40px;\n min-width: 40px;\n padding: 6px;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--ty-text-soft);\n font-size: 18px;\n line-height: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 10;\n}\n\n.tab-overflow-trigger:hover {\n color: var(--ty-text-strong);\n}\n\n.tab-overflow-trigger:focus-visible {\n outline: 2px solid var(--ty-color-primary);\n outline-offset: -2px;\n}\n\n.tab-overflow-menu {\n display: flex;\n flex-direction: column;\n min-width: 160px;\n max-height: 300px;\n overflow-y: auto;\n padding: var(--ty-spacing-2, 4px);\n background: var(--ty-surface-floating);\n border-radius: var(--ty-radius-md);\n box-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));\n}\n\n.tab-overflow-item {\n padding: var(--ty-spacing-2, 6px) var(--ty-spacing-3, 12px);\n border: none;\n background: transparent;\n text-align: left;\n cursor: pointer;\n border-radius: var(--ty-radius-md);\n color: var(--ty-text);\n font: inherit;\n font-size: var(--ty-font-sm);\n white-space: nowrap;\n}\n\n.tab-overflow-item:hover {\n background: var(--ty-bg-neutral-soft);\n color: var(--ty-text-strong);\n}\n\n.tab-overflow-item[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Panels viewport \u2014 exposed as a CSS Part */\n.panels-viewport {\n position: relative;\n flex: 1;\n overflow: hidden;\n /* Critical: hides off-screen panels */\n min-height: 0;\n /* Allows flex child to shrink */\n}\n\n/* Panels wrapper slides horizontally */\n.panels-wrapper {\n display: flex;\n height: 100%;\n transition: transform var(--transition-duration, 300ms) var(--transition-easing, ease-in-out);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .panels-wrapper {\n transition-duration: 0ms !important;\n }\n\n .marker-wrapper {\n transition-duration: 0ms !important;\n }\n}\n\n::slotted(ty-tab) {\n /* Carousel page width. --tabs-page-width is the measured pixel width, set by\n the ResizeObserver for percentage-width tabs so every panel is exactly one\n page wide. It is deliberately NOT --tabs-width: that one sizes :host, and\n feeding a measured pixel value back into the host's own width is a\n self-referential loop (see setupResizeObserver). */\n width: var(--tabs-page-width, var(--tabs-width, 100%));\n height: 100%;\n flex-shrink: 0;\n}\n";
|
package/lib/styles/tabs.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tabs Component Styles
|
|
3
|
-
*
|
|
4
|
-
* Styles for the ty-tabs container component including:
|
|
5
|
-
* - Flexbox layout with top/bottom placement
|
|
6
|
-
* - Tab buttons with hover and active states
|
|
7
|
-
* - Animated marker that follows active tab
|
|
8
|
-
* - Carousel viewport with transform animations
|
|
9
|
-
* - Responsive design with prefers-reduced-motion support
|
|
10
|
-
* - Fully customizable via CSS Parts (::part)
|
|
11
|
-
*/
|
|
12
1
|
export const tabsStyles = `
|
|
13
2
|
:host {
|
|
14
3
|
display: block;
|
|
@@ -26,16 +15,11 @@ export const tabsStyles = `
|
|
|
26
15
|
box-sizing: border-box;
|
|
27
16
|
}
|
|
28
17
|
|
|
29
|
-
/* Bottom placement reverses the order */
|
|
30
18
|
.tabs-container[data-placement="bottom"] {
|
|
31
19
|
flex-direction: column-reverse;
|
|
32
20
|
}
|
|
33
21
|
|
|
34
|
-
/*
|
|
35
|
-
/* Tab Buttons Container */
|
|
36
|
-
/* Expose as CSS Part for full styling control */
|
|
37
|
-
/* ===================================== */
|
|
38
|
-
|
|
22
|
+
/* Tab buttons container — exposed as a CSS Part for full styling control */
|
|
39
23
|
.tab-buttons {
|
|
40
24
|
display: flex;
|
|
41
25
|
gap: 0;
|
|
@@ -48,17 +32,12 @@ export const tabsStyles = `
|
|
|
48
32
|
background: transparent;
|
|
49
33
|
}
|
|
50
34
|
|
|
51
|
-
/* Bottom placement moves border to top */
|
|
52
35
|
.tabs-container[data-placement="bottom"] .tab-buttons {
|
|
53
36
|
border-bottom: none;
|
|
54
37
|
border-top: 1px solid var(--ty-border);
|
|
55
38
|
}
|
|
56
39
|
|
|
57
|
-
/*
|
|
58
|
-
/* Marker Wrapper */
|
|
59
|
-
/* Expose as CSS Part for custom marker styling */
|
|
60
|
-
/* ===================================== */
|
|
61
|
-
|
|
40
|
+
/* Marker wrapper — exposed as a CSS Part for custom marker styling */
|
|
62
41
|
.marker-wrapper {
|
|
63
42
|
position: absolute;
|
|
64
43
|
z-index: 0;
|
|
@@ -71,7 +50,6 @@ export const tabsStyles = `
|
|
|
71
50
|
top var(--transition-duration, 300ms) var(--transition-easing, ease-in-out);
|
|
72
51
|
}
|
|
73
52
|
|
|
74
|
-
/* Default marker - simple underline */
|
|
75
53
|
.default-marker {
|
|
76
54
|
position: absolute;
|
|
77
55
|
bottom: 0;
|
|
@@ -87,7 +65,6 @@ export const tabsStyles = `
|
|
|
87
65
|
display: none;
|
|
88
66
|
}
|
|
89
67
|
|
|
90
|
-
/* User's marker element fills the wrapper */
|
|
91
68
|
::slotted([slot="marker"]) {
|
|
92
69
|
display: block;
|
|
93
70
|
width: 100%;
|
|
@@ -95,10 +72,6 @@ export const tabsStyles = `
|
|
|
95
72
|
box-sizing: border-box;
|
|
96
73
|
}
|
|
97
74
|
|
|
98
|
-
/* ===================================== */
|
|
99
|
-
/* Tab Buttons */
|
|
100
|
-
/* ===================================== */
|
|
101
|
-
|
|
102
75
|
.tab-button {
|
|
103
76
|
min-width: 120px;
|
|
104
77
|
padding: 6px 12px;
|
|
@@ -140,10 +113,7 @@ export const tabsStyles = `
|
|
|
140
113
|
display: none;
|
|
141
114
|
}
|
|
142
115
|
|
|
143
|
-
/* ===================================== */
|
|
144
116
|
/* Overflow "more" trigger + menu */
|
|
145
|
-
/* ===================================== */
|
|
146
|
-
|
|
147
117
|
.tab-overflow-trigger {
|
|
148
118
|
flex-shrink: 0;
|
|
149
119
|
width: 40px;
|
|
@@ -206,11 +176,7 @@ export const tabsStyles = `
|
|
|
206
176
|
cursor: not-allowed;
|
|
207
177
|
}
|
|
208
178
|
|
|
209
|
-
/*
|
|
210
|
-
/* Panels Viewport */
|
|
211
|
-
/* Expose as CSS Part for panels container styling */
|
|
212
|
-
/* ===================================== */
|
|
213
|
-
|
|
179
|
+
/* Panels viewport — exposed as a CSS Part */
|
|
214
180
|
.panels-viewport {
|
|
215
181
|
position: relative;
|
|
216
182
|
flex: 1;
|
|
@@ -220,17 +186,13 @@ export const tabsStyles = `
|
|
|
220
186
|
/* Allows flex child to shrink */
|
|
221
187
|
}
|
|
222
188
|
|
|
223
|
-
/*
|
|
224
|
-
/* Panels Wrapper (slides horizontally) */
|
|
225
|
-
/* ===================================== */
|
|
226
|
-
|
|
189
|
+
/* Panels wrapper slides horizontally */
|
|
227
190
|
.panels-wrapper {
|
|
228
191
|
display: flex;
|
|
229
192
|
height: 100%;
|
|
230
193
|
transition: transform var(--transition-duration, 300ms) var(--transition-easing, ease-in-out);
|
|
231
194
|
}
|
|
232
195
|
|
|
233
|
-
/* Respect user's motion preferences */
|
|
234
196
|
@media (prefers-reduced-motion: reduce) {
|
|
235
197
|
.panels-wrapper {
|
|
236
198
|
transition-duration: 0ms !important;
|
|
@@ -241,14 +203,14 @@ export const tabsStyles = `
|
|
|
241
203
|
}
|
|
242
204
|
}
|
|
243
205
|
|
|
244
|
-
/* ===================================== */
|
|
245
|
-
/* Slotted Tab Panels */
|
|
246
|
-
/* ===================================== */
|
|
247
|
-
|
|
248
206
|
::slotted(ty-tab) {
|
|
249
|
-
width
|
|
207
|
+
/* Carousel page width. --tabs-page-width is the measured pixel width, set by
|
|
208
|
+
the ResizeObserver for percentage-width tabs so every panel is exactly one
|
|
209
|
+
page wide. It is deliberately NOT --tabs-width: that one sizes :host, and
|
|
210
|
+
feeding a measured pixel value back into the host's own width is a
|
|
211
|
+
self-referential loop (see setupResizeObserver). */
|
|
212
|
+
width: var(--tabs-page-width, var(--tabs-width, 100%));
|
|
250
213
|
height: 100%;
|
|
251
214
|
flex-shrink: 0;
|
|
252
215
|
}
|
|
253
216
|
`;
|
|
254
|
-
//# sourceMappingURL=tabs.js.map
|
package/lib/styles/tag.d.ts
CHANGED
package/lib/styles/tag.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tag Component Styles
|
|
3
|
-
* PORTED FROM: clj/ty/components/tag.css
|
|
4
|
-
*/
|
|
5
1
|
import { FLAVORS } from '../types/common.js';
|
|
6
|
-
/* Neutral maps to text/border tokens instead of flavor tokens, so it is
|
|
7
|
-
written out by hand in the template below. */
|
|
8
2
|
const COLOR_FLAVORS = FLAVORS.filter((f) => f !== 'neutral');
|
|
9
3
|
const tagFlavor = (f) => `
|
|
10
|
-
/* ----- ${f.toUpperCase()} ----- */
|
|
11
4
|
:host([flavor="${f}"]) {
|
|
12
5
|
--tag-bg: var(--ty-bg-${f});
|
|
13
6
|
--tag-color: var(--ty-color-${f});
|
|
@@ -35,22 +28,15 @@ const tagFlavor = (f) => `
|
|
|
35
28
|
}
|
|
36
29
|
`;
|
|
37
30
|
export const tagStyles = `
|
|
38
|
-
/* Tag Component Styles using centralized ty.variables.css */
|
|
39
|
-
|
|
40
|
-
/* Host element */
|
|
41
|
-
|
|
42
|
-
/* Hidden attribute support */
|
|
43
31
|
:host([hidden]) {
|
|
44
32
|
display: none !important;
|
|
45
33
|
}
|
|
46
34
|
|
|
47
|
-
/* Main container */
|
|
48
35
|
.tag-container {
|
|
49
36
|
display: flex;
|
|
50
37
|
align-items: center;
|
|
51
38
|
justify-content: center;
|
|
52
39
|
gap: var(--ty-spacing-1);
|
|
53
|
-
/* Default pill shape - can be overridden */
|
|
54
40
|
border-radius: var(--ty-radius-full);
|
|
55
41
|
/* Mode-flipped weight dial (tyrell.css): 440 light / 400 dark. Chips are
|
|
56
42
|
labels, not actions — they run lighter than buttons. Override with
|
|
@@ -68,7 +54,6 @@ export const tagStyles = `
|
|
|
68
54
|
letter-spacing: var(--ty-tracking-xs); /* -0.013em */
|
|
69
55
|
min-height: 28px;
|
|
70
56
|
|
|
71
|
-
/* Transitions using centralized values */
|
|
72
57
|
transition: var(--ty-transition-all);
|
|
73
58
|
|
|
74
59
|
/* Colors via custom properties — override on :host for full control */
|
|
@@ -78,7 +63,6 @@ export const tagStyles = `
|
|
|
78
63
|
border-color: var(--tag-border-color, var(--ty-border));
|
|
79
64
|
}
|
|
80
65
|
|
|
81
|
-
/* Non-pill variant - rectangular with rounded corners */
|
|
82
66
|
:host([pill="false"]) .tag-container,
|
|
83
67
|
:host([not-pill]) .tag-container {
|
|
84
68
|
border-radius: var(--ty-radius-md);
|
|
@@ -109,14 +93,12 @@ export const tagStyles = `
|
|
|
109
93
|
outline: none;
|
|
110
94
|
}
|
|
111
95
|
|
|
112
|
-
/* Disabled state */
|
|
113
96
|
.tag-container[aria-disabled="true"] {
|
|
114
97
|
opacity: 0.6;
|
|
115
98
|
cursor: not-allowed;
|
|
116
99
|
pointer-events: none;
|
|
117
100
|
}
|
|
118
101
|
|
|
119
|
-
/* Slot containers */
|
|
120
102
|
.tag-start,
|
|
121
103
|
.tag-content,
|
|
122
104
|
.tag-end {
|
|
@@ -131,7 +113,6 @@ export const tagStyles = `
|
|
|
131
113
|
min-width: 0;
|
|
132
114
|
}
|
|
133
115
|
|
|
134
|
-
/* Dismiss button */
|
|
135
116
|
.tag-dismiss {
|
|
136
117
|
display: inline-flex;
|
|
137
118
|
align-items: center;
|
|
@@ -145,7 +126,6 @@ export const tagStyles = `
|
|
|
145
126
|
transition: var(--ty-transition-all);
|
|
146
127
|
opacity: 0.7;
|
|
147
128
|
flex-shrink: 0;
|
|
148
|
-
/* Default MD dismiss button size */
|
|
149
129
|
width: var(--ty-spacing-4);
|
|
150
130
|
/* 16px */
|
|
151
131
|
height: var(--ty-spacing-4);
|
|
@@ -161,7 +141,6 @@ export const tagStyles = `
|
|
|
161
141
|
height: 100%;
|
|
162
142
|
}
|
|
163
143
|
|
|
164
|
-
/* Size variants - override defaults */
|
|
165
144
|
:host([size="xs"]) .tag-container {
|
|
166
145
|
padding: 0 0.375rem; /* 0 6px */
|
|
167
146
|
font-size: var(--ty-font-xs); /* 12px */
|
|
@@ -190,8 +169,7 @@ export const tagStyles = `
|
|
|
190
169
|
margin-left: var(--ty-spacing-2);
|
|
191
170
|
}
|
|
192
171
|
|
|
193
|
-
/* MD is
|
|
194
|
-
/* All default styles above apply to MD size (min-height: 24px) */
|
|
172
|
+
/* MD is the default — no explicit [size="md"] selector needed */
|
|
195
173
|
|
|
196
174
|
:host([size="lg"]) .tag-container {
|
|
197
175
|
padding: 0 var(--ty-spacing-3); /* 0 12px */
|
|
@@ -221,15 +199,13 @@ export const tagStyles = `
|
|
|
221
199
|
margin-left: var(--ty-spacing-4);
|
|
222
200
|
}
|
|
223
201
|
|
|
224
|
-
/*
|
|
225
|
-
Each flavor sets --tag-bg / --tag-color / --tag-border-color on :host.
|
|
202
|
+
/* Each flavor sets --tag-bg / --tag-color / --tag-border-color on :host.
|
|
226
203
|
Append '+' to flavor for a stronger shade (mild background, strong color),
|
|
227
204
|
or '-' for a softer shade (soft background, base color).
|
|
228
205
|
Generated per flavor above; neutral diverges (text/border tokens) and
|
|
229
206
|
stays hand-written below. */
|
|
230
207
|
|
|
231
208
|
${COLOR_FLAVORS.map(tagFlavor).join('')}
|
|
232
|
-
/* ----- NEUTRAL ----- */
|
|
233
209
|
:host([flavor="neutral"]) {
|
|
234
210
|
--tag-color: var(--ty-text-bold);
|
|
235
211
|
--tag-bg: var(--ty-bg-neutral-soft);
|
|
@@ -257,7 +233,6 @@ ${COLOR_FLAVORS.map(tagFlavor).join('')}
|
|
|
257
233
|
box-shadow: 0 0 0 3px var(--ty-border-soft);
|
|
258
234
|
}
|
|
259
235
|
|
|
260
|
-
/* Slotted content styling */
|
|
261
236
|
.tag-start ::slotted(*),
|
|
262
237
|
.tag-content ::slotted(*),
|
|
263
238
|
.tag-end ::slotted(*) {
|
|
@@ -265,7 +240,6 @@ ${COLOR_FLAVORS.map(tagFlavor).join('')}
|
|
|
265
240
|
align-items: center;
|
|
266
241
|
}
|
|
267
242
|
|
|
268
|
-
/* Icon sizing for slotted icons */
|
|
269
243
|
.tag-start ::slotted(ty-icon),
|
|
270
244
|
.tag-end ::slotted(ty-icon) {
|
|
271
245
|
width: 1em;
|
|
@@ -273,7 +247,6 @@ ${COLOR_FLAVORS.map(tagFlavor).join('')}
|
|
|
273
247
|
flex-shrink: 0;
|
|
274
248
|
}
|
|
275
249
|
|
|
276
|
-
/* Count/badge styling using centralized spacing */
|
|
277
250
|
.tag-end ::slotted(.count) {
|
|
278
251
|
display: inline-flex;
|
|
279
252
|
align-items: center;
|
|
@@ -292,7 +265,6 @@ ${COLOR_FLAVORS.map(tagFlavor).join('')}
|
|
|
292
265
|
flex-shrink: 0;
|
|
293
266
|
}
|
|
294
267
|
|
|
295
|
-
/* Special handling for long text content */
|
|
296
268
|
.tag-content {
|
|
297
269
|
overflow: hidden;
|
|
298
270
|
text-overflow: ellipsis;
|
|
@@ -305,4 +277,3 @@ ${COLOR_FLAVORS.map(tagFlavor).join('')}
|
|
|
305
277
|
|
|
306
278
|
/* Dark mode is handled automatically by the centralized variables */
|
|
307
279
|
`;
|
|
308
|
-
//# sourceMappingURL=tag.js.map
|
package/lib/styles/textarea.d.ts
CHANGED
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
* Styles for ty-textarea component
|
|
3
3
|
* Enhanced textarea with auto-resize functionality
|
|
4
4
|
*/
|
|
5
|
-
export declare const textareaStyles = "\n:host {\n display: block;\n font-family: var(--ty-font-sans);\n width: 100%;\n}\n\n.textarea-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n /* For absolute positioned dummy element */\n}\n\n/* Bordered container \u2014 owns the border + active state (composer layout):\n header (top slot) \u00B7 textarea (borderless) \u00B7 footer (bottom slot). */\n.textarea-wrapper {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n border: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: var(--ty-radius-base);\n background: var(--input-bg, var(--ty-input-bg));\n transition: var(--ty-local-transition, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out);\n}\n\n/* Active ring tied to the TEXTAREA specifically (not :focus-within) so tabbing\n to a footer button doesn't make the whole field look focused. */\n.textarea-wrapper:has(textarea:focus) {\n border-color: var(--input-border-focus, var(--ty-input-border-focus));\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* Error + disabled reflected from the inner textarea (both in shadow DOM, so\n :has is reliable here \u2014 unlike slotted content). */\n.textarea-wrapper:has(textarea.error) {\n border-color: var(--ty-color-danger);\n background: var(--ty-bg-danger-soft);\n}\n.textarea-wrapper:has(textarea.error):has(textarea:focus) {\n border-color: var(--ty-color-danger-bold);\n}\n.textarea-wrapper:has(textarea:disabled) {\n opacity: 0.5;\n background: var(--input-disabled-bg, var(--ty-input-disabled-bg));\n border-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n\n/* Scroll region wraps just the textarea so the custom scrollbar never overlaps\n the header/footer. */\n.textarea-scroll {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n}\n\n/* Custom scrollbar track positioned to the scroll region (textarea edges) */\n.textarea-scroll .ty-scrollbar-track-y {\n top: 2px;\n right: 2px;\n bottom: 2px;\n border-radius: 0 4px 4px 0;\n}\n\n/* Header / footer slot regions \u2014 zero footprint until they have content\n (the component toggles .has-content via slotchange). footer defaults to\n space-between so \"tools \u2026 submit\" works; a single wide button fills it. */\n.textarea-header,\n.textarea-footer {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.textarea-footer { justify-content: space-between; }\n.textarea-header.has-content {\n padding: 6px 10px;\n border-bottom: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n.textarea-footer.has-content {\n padding: 6px 10px;\n border-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n\n/* ===== LABEL STYLING ===== */\n\n.ty-field-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 12px;\n}\n\n/* Required indicator - using SVG icon instead of CSS */\n.required-icon {\n display: inline-flex;\n align-items: center;\n color: var(--ty-color-danger);\n width: 12px;\n height: 12px;\n vertical-align: middle;\n}\n\n/* ===== ERROR MESSAGE STYLING ===== */\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 12px;\n}\n\n/* Error state is reflected on .textarea-wrapper (see above). */\n\n/* ===== TEXTAREA BASE STYLING ===== */\n\ntextarea {\n /* Borderless \u2014 the .textarea-wrapper owns the border/background now. */\n box-sizing: border-box;\n width: 100%;\n flex: 1 1 auto;\n border: none;\n background: transparent;\n color: var(--input-color, var(--ty-input-color));\n font-family: inherit;\n /* Linear-paired typography */\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-normal);\n outline: none;\n\n /* Default size (md) - refined spacing */\n min-height: 80px;\n /* Larger than input for multiline */\n padding: 12px 12px;\n /* Slightly larger padding for text areas */\n\n /* Auto-resize specific styles */\n overflow: hidden;\n /* Hide scrollbars since we're auto-resizing */\n resize: none;\n /* Disable manual resize by default */\n\n /* Ensure consistent text wrapping */\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n/* Hide native scrollbar for webkit when custom scrollbar is active\n (scrollbar-width: none handles Firefox; this handles Chrome/Safari) */\n:host([data-custom-scroll]) textarea::-webkit-scrollbar {\n display: none;\n}\n\n/* Disabled \u2014 visual state lives on the wrapper; just the cursor/text here. */\ntextarea:disabled {\n cursor: not-allowed;\n color: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\n\n/* Placeholder styling - subtle and elegant */\ntextarea::placeholder {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n font-weight: 400;\n}\n\n/* ===== RESIZE CONTROL OPTIONS ===== */\n\n/* Allow manual resizing */\ntextarea.resize-both {\n resize: both;\n}\n\ntextarea.resize-horizontal {\n resize: horizontal;\n}\n\ntextarea.resize-vertical {\n resize: vertical;\n}\n\ntextarea.resize-none {\n resize: none;\n}\n\n/* Auto-resize mode (default) disables manual resize */\ntextarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {\n resize: none;\n}\n\n/* ===== DUMMY ELEMENT FOR AUTO-RESIZE ===== */\n\n.textarea-dummy {\n /* Hidden element that measures text height */\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n visibility: hidden !important;\n white-space: pre-wrap !important;\n word-break: break-word !important;\n box-sizing: border-box !important;\n overflow: hidden !important;\n pointer-events: none !important;\n z-index: -1 !important;\n\n /* Ensure it has the same text behavior as textarea */\n word-wrap: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n/* ===== SIZE MODIFIERS ===== */\n\n/* Extra Small */\ntextarea.xs {\n min-height: 64px;\n padding: 8px 10px;\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n}\n\n/* Small */\ntextarea.sm {\n min-height: 72px;\n padding: 10px 10px;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\n/* Medium (default) */\ntextarea.md {\n min-height: 80px;\n padding: 12px 12px;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\n/* Large */\ntextarea.lg {\n min-height: 96px;\n padding: 14px 14px;\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n}\n\n/* Extra Large */\ntextarea.xl {\n min-height: 112px;\n padding: 16px 16px;\n font-size: var(--ty-font-lg);\n line-height: var(--ty-leading-lg);\n letter-spacing: var(--ty-tracking-lg);\n}\n\n/* ===== ACCESSIBILITY ENHANCEMENTS ===== */\n\ntextarea:focus-visible {\n outline: none;\n /* We use box-shadow instead */\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n textarea {\n border-width: 2px;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n textarea {\n transition: none;\n }\n\n .textarea-dummy {\n transition: none;\n }\n}\n\n/* ===== CONTAINER-AWARE RESPONSIVE BEHAVIOR ===== */\n\n/* Scale down on smaller containers using container queries */\n@container (max-width: 480px) {\n textarea.lg {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n\n textarea.xl {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n padding: 14px 14px;\n min-height: 96px;\n }\n}\n\n@container (max-width: 320px) {\n textarea.xl {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n}\n\n/* Fallback for browsers without container query support */\n@media (max-width: 640px) {\n textarea.lg {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n\n textarea.xl {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n padding: 14px 14px;\n min-height: 96px;\n }\n}\n\n@media (max-width: 480px) {\n textarea.xl {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n}\n\n/* ===== ANIMATION AND TRANSITIONS ===== */\n\n/* Smooth height transitions for auto-resize */\ntextarea {\n transition: var(--ty-local-transition,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out,\n background-color 0.15s ease-in-out,\n height 0.1s ease-out);\n /* Smooth height changes */\n}\n\n/* Disable height transition on focus to avoid jarring effect */\ntextarea:focus {\n transition: var(--ty-local-transition,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out,\n background-color 0.15s ease-in-out);\n}\n\n/* For users who prefer reduced motion, disable height transitions */\n@media (prefers-reduced-motion: reduce) {\n textarea {\n transition: none;\n }\n}\n";
|
|
6
|
-
//# sourceMappingURL=textarea.d.ts.map
|
|
5
|
+
export declare const textareaStyles = "\n:host {\n display: block;\n font-family: inherit;\n width: 100%;\n}\n\n.textarea-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n position: relative;\n /* For absolute positioned dummy element */\n}\n\n/* Bordered container \u2014 owns the border + active state (composer layout):\n header (top slot) \u00B7 textarea (borderless) \u00B7 footer (bottom slot). */\n.textarea-wrapper {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n border: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: var(--ty-radius-base);\n background: var(--input-bg, var(--ty-input-bg));\n transition: var(--ty-local-transition, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out);\n}\n\n/* Active ring tied to the TEXTAREA specifically (not :focus-within) so tabbing\n to a footer button doesn't make the whole field look focused. */\n.textarea-wrapper:has(textarea:focus) {\n border-color: var(--input-border-focus, var(--ty-input-border-focus));\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* Error + disabled reflected from the inner textarea (both in shadow DOM, so\n :has is reliable here \u2014 unlike slotted content). */\n.textarea-wrapper:has(textarea.error) {\n border-color: var(--ty-color-danger);\n background: var(--ty-bg-danger-soft);\n}\n.textarea-wrapper:has(textarea.error):has(textarea:focus) {\n border-color: var(--ty-color-danger-bold);\n}\n.textarea-wrapper:has(textarea:disabled) {\n opacity: 0.5;\n background: var(--input-disabled-bg, var(--ty-input-disabled-bg));\n border-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n\n/* Scroll region wraps just the textarea so the custom scrollbar never overlaps\n the header/footer. */\n.textarea-scroll {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n}\n\n/* Custom scrollbar track positioned to the scroll region (textarea edges) */\n.textarea-scroll .ty-scrollbar-track-y {\n top: 2px;\n right: 2px;\n bottom: 2px;\n border-radius: 0 4px 4px 0;\n}\n\n/* Header / footer slot regions \u2014 zero footprint until they have content\n (the component toggles .has-content via slotchange). footer defaults to\n space-between so \"tools \u2026 submit\" works; a single wide button fills it. */\n.textarea-header,\n.textarea-footer {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.textarea-footer { justify-content: space-between; }\n.textarea-header.has-content {\n padding: 6px 10px;\n border-bottom: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n.textarea-footer.has-content {\n padding: 6px 10px;\n border-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n\n.ty-field-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 12px;\n}\n\n.required-icon {\n display: inline-flex;\n align-items: center;\n color: var(--ty-color-danger);\n width: 12px;\n height: 12px;\n vertical-align: middle;\n}\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 12px;\n}\n\n/* Error state is reflected on .textarea-wrapper (see above). */\n\ntextarea {\n font-family: inherit;\n /* Borderless \u2014 the .textarea-wrapper owns the border/background now. */\n box-sizing: border-box;\n width: 100%;\n flex: 1 1 auto;\n border: none;\n background: transparent;\n color: var(--input-color, var(--ty-input-color));\n font-family: inherit;\n /* Linear-paired typography */\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-normal);\n outline: none;\n\n min-height: 80px;\n padding: 12px 12px;\n\n overflow: hidden;\n /* Hide scrollbars since we're auto-resizing */\n resize: none;\n\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n/* Hide native scrollbar for webkit when custom scrollbar is active\n (scrollbar-width: none handles Firefox; this handles Chrome/Safari) */\n:host([data-custom-scroll]) textarea::-webkit-scrollbar {\n display: none;\n}\n\n/* Disabled \u2014 visual state lives on the wrapper; just the cursor/text here. */\ntextarea:disabled {\n cursor: not-allowed;\n color: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\n\ntextarea::placeholder {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n font-weight: 400;\n}\n\ntextarea.resize-both {\n resize: both;\n}\n\ntextarea.resize-horizontal {\n resize: horizontal;\n}\n\ntextarea.resize-vertical {\n resize: vertical;\n}\n\ntextarea.resize-none {\n resize: none;\n}\n\n/* Auto-resize mode (default) disables manual resize */\ntextarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {\n resize: none;\n}\n\n.textarea-dummy {\n /* Hidden element that measures text height */\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n visibility: hidden !important;\n white-space: pre-wrap !important;\n word-break: break-word !important;\n box-sizing: border-box !important;\n overflow: hidden !important;\n pointer-events: none !important;\n z-index: -1 !important;\n\n word-wrap: break-word !important;\n overflow-wrap: break-word !important;\n}\n\ntextarea.xs {\n min-height: 64px;\n padding: 8px 10px;\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n}\n\ntextarea.sm {\n min-height: 72px;\n padding: 10px 10px;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\ntextarea.md {\n min-height: 80px;\n padding: 12px 12px;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\ntextarea.lg {\n min-height: 96px;\n padding: 14px 14px;\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n}\n\ntextarea.xl {\n min-height: 112px;\n padding: 16px 16px;\n font-size: var(--ty-font-lg);\n line-height: var(--ty-leading-lg);\n letter-spacing: var(--ty-tracking-lg);\n}\n\ntextarea:focus-visible {\n outline: none;\n /* We use box-shadow instead */\n}\n\n@media (prefers-contrast: high) {\n textarea {\n border-width: 2px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n textarea {\n transition: none;\n }\n\n .textarea-dummy {\n transition: none;\n }\n}\n\n@container (max-width: 480px) {\n textarea.lg {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n\n textarea.xl {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n padding: 14px 14px;\n min-height: 96px;\n }\n}\n\n@container (max-width: 320px) {\n textarea.xl {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n}\n\n/* Fallback for browsers without container query support */\n@media (max-width: 640px) {\n textarea.lg {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n\n textarea.xl {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n padding: 14px 14px;\n min-height: 96px;\n }\n}\n\n@media (max-width: 480px) {\n textarea.xl {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n padding: 12px 12px;\n min-height: 80px;\n }\n}\n\ntextarea {\n transition: var(--ty-local-transition,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out,\n background-color 0.15s ease-in-out,\n height 0.1s ease-out);\n}\n\n/* Disable height transition on focus to avoid jarring effect */\ntextarea:focus {\n transition: var(--ty-local-transition,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out,\n background-color 0.15s ease-in-out);\n}\n\n@media (prefers-reduced-motion: reduce) {\n textarea {\n transition: none;\n }\n}\n";
|
package/lib/styles/textarea.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Styles for ty-textarea component
|
|
3
|
-
* Enhanced textarea with auto-resize functionality
|
|
4
|
-
*/
|
|
5
1
|
export const textareaStyles = `
|
|
6
2
|
:host {
|
|
7
3
|
display: block;
|
|
8
|
-
font-family:
|
|
4
|
+
font-family: inherit;
|
|
9
5
|
width: 100%;
|
|
10
6
|
}
|
|
11
7
|
|
|
@@ -90,8 +86,6 @@ export const textareaStyles = `
|
|
|
90
86
|
border-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));
|
|
91
87
|
}
|
|
92
88
|
|
|
93
|
-
/* ===== LABEL STYLING ===== */
|
|
94
|
-
|
|
95
89
|
.ty-field-label {
|
|
96
90
|
font-size: var(--ty-font-sm);
|
|
97
91
|
line-height: var(--ty-leading-sm);
|
|
@@ -102,7 +96,6 @@ export const textareaStyles = `
|
|
|
102
96
|
padding-left: 12px;
|
|
103
97
|
}
|
|
104
98
|
|
|
105
|
-
/* Required indicator - using SVG icon instead of CSS */
|
|
106
99
|
.required-icon {
|
|
107
100
|
display: inline-flex;
|
|
108
101
|
align-items: center;
|
|
@@ -112,8 +105,6 @@ export const textareaStyles = `
|
|
|
112
105
|
vertical-align: middle;
|
|
113
106
|
}
|
|
114
107
|
|
|
115
|
-
/* ===== ERROR MESSAGE STYLING ===== */
|
|
116
|
-
|
|
117
108
|
.error-message {
|
|
118
109
|
font-size: var(--ty-font-xs);
|
|
119
110
|
line-height: var(--ty-leading-xs);
|
|
@@ -125,9 +116,8 @@ export const textareaStyles = `
|
|
|
125
116
|
|
|
126
117
|
/* Error state is reflected on .textarea-wrapper (see above). */
|
|
127
118
|
|
|
128
|
-
/* ===== TEXTAREA BASE STYLING ===== */
|
|
129
|
-
|
|
130
119
|
textarea {
|
|
120
|
+
font-family: inherit;
|
|
131
121
|
/* Borderless — the .textarea-wrapper owns the border/background now. */
|
|
132
122
|
box-sizing: border-box;
|
|
133
123
|
width: 100%;
|
|
@@ -143,19 +133,13 @@ textarea {
|
|
|
143
133
|
font-weight: var(--ty-font-normal);
|
|
144
134
|
outline: none;
|
|
145
135
|
|
|
146
|
-
/* Default size (md) - refined spacing */
|
|
147
136
|
min-height: 80px;
|
|
148
|
-
/* Larger than input for multiline */
|
|
149
137
|
padding: 12px 12px;
|
|
150
|
-
/* Slightly larger padding for text areas */
|
|
151
138
|
|
|
152
|
-
/* Auto-resize specific styles */
|
|
153
139
|
overflow: hidden;
|
|
154
140
|
/* Hide scrollbars since we're auto-resizing */
|
|
155
141
|
resize: none;
|
|
156
|
-
/* Disable manual resize by default */
|
|
157
142
|
|
|
158
|
-
/* Ensure consistent text wrapping */
|
|
159
143
|
white-space: pre-wrap;
|
|
160
144
|
word-wrap: break-word;
|
|
161
145
|
}
|
|
@@ -172,15 +156,11 @@ textarea:disabled {
|
|
|
172
156
|
color: var(--input-disabled-color, var(--ty-input-disabled-color));
|
|
173
157
|
}
|
|
174
158
|
|
|
175
|
-
/* Placeholder styling - subtle and elegant */
|
|
176
159
|
textarea::placeholder {
|
|
177
160
|
color: var(--input-placeholder, var(--ty-input-placeholder));
|
|
178
161
|
font-weight: 400;
|
|
179
162
|
}
|
|
180
163
|
|
|
181
|
-
/* ===== RESIZE CONTROL OPTIONS ===== */
|
|
182
|
-
|
|
183
|
-
/* Allow manual resizing */
|
|
184
164
|
textarea.resize-both {
|
|
185
165
|
resize: both;
|
|
186
166
|
}
|
|
@@ -202,8 +182,6 @@ textarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {
|
|
|
202
182
|
resize: none;
|
|
203
183
|
}
|
|
204
184
|
|
|
205
|
-
/* ===== DUMMY ELEMENT FOR AUTO-RESIZE ===== */
|
|
206
|
-
|
|
207
185
|
.textarea-dummy {
|
|
208
186
|
/* Hidden element that measures text height */
|
|
209
187
|
position: absolute !important;
|
|
@@ -217,14 +195,10 @@ textarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {
|
|
|
217
195
|
pointer-events: none !important;
|
|
218
196
|
z-index: -1 !important;
|
|
219
197
|
|
|
220
|
-
/* Ensure it has the same text behavior as textarea */
|
|
221
198
|
word-wrap: break-word !important;
|
|
222
199
|
overflow-wrap: break-word !important;
|
|
223
200
|
}
|
|
224
201
|
|
|
225
|
-
/* ===== SIZE MODIFIERS ===== */
|
|
226
|
-
|
|
227
|
-
/* Extra Small */
|
|
228
202
|
textarea.xs {
|
|
229
203
|
min-height: 64px;
|
|
230
204
|
padding: 8px 10px;
|
|
@@ -233,7 +207,6 @@ textarea.xs {
|
|
|
233
207
|
letter-spacing: var(--ty-tracking-xs);
|
|
234
208
|
}
|
|
235
209
|
|
|
236
|
-
/* Small */
|
|
237
210
|
textarea.sm {
|
|
238
211
|
min-height: 72px;
|
|
239
212
|
padding: 10px 10px;
|
|
@@ -242,7 +215,6 @@ textarea.sm {
|
|
|
242
215
|
letter-spacing: var(--ty-tracking-sm);
|
|
243
216
|
}
|
|
244
217
|
|
|
245
|
-
/* Medium (default) */
|
|
246
218
|
textarea.md {
|
|
247
219
|
min-height: 80px;
|
|
248
220
|
padding: 12px 12px;
|
|
@@ -251,7 +223,6 @@ textarea.md {
|
|
|
251
223
|
letter-spacing: var(--ty-tracking-sm);
|
|
252
224
|
}
|
|
253
225
|
|
|
254
|
-
/* Large */
|
|
255
226
|
textarea.lg {
|
|
256
227
|
min-height: 96px;
|
|
257
228
|
padding: 14px 14px;
|
|
@@ -260,7 +231,6 @@ textarea.lg {
|
|
|
260
231
|
letter-spacing: var(--ty-tracking-base);
|
|
261
232
|
}
|
|
262
233
|
|
|
263
|
-
/* Extra Large */
|
|
264
234
|
textarea.xl {
|
|
265
235
|
min-height: 112px;
|
|
266
236
|
padding: 16px 16px;
|
|
@@ -269,21 +239,17 @@ textarea.xl {
|
|
|
269
239
|
letter-spacing: var(--ty-tracking-lg);
|
|
270
240
|
}
|
|
271
241
|
|
|
272
|
-
/* ===== ACCESSIBILITY ENHANCEMENTS ===== */
|
|
273
|
-
|
|
274
242
|
textarea:focus-visible {
|
|
275
243
|
outline: none;
|
|
276
244
|
/* We use box-shadow instead */
|
|
277
245
|
}
|
|
278
246
|
|
|
279
|
-
/* High contrast mode support */
|
|
280
247
|
@media (prefers-contrast: high) {
|
|
281
248
|
textarea {
|
|
282
249
|
border-width: 2px;
|
|
283
250
|
}
|
|
284
251
|
}
|
|
285
252
|
|
|
286
|
-
/* Reduced motion support */
|
|
287
253
|
@media (prefers-reduced-motion: reduce) {
|
|
288
254
|
textarea {
|
|
289
255
|
transition: none;
|
|
@@ -294,9 +260,6 @@ textarea:focus-visible {
|
|
|
294
260
|
}
|
|
295
261
|
}
|
|
296
262
|
|
|
297
|
-
/* ===== CONTAINER-AWARE RESPONSIVE BEHAVIOR ===== */
|
|
298
|
-
|
|
299
|
-
/* Scale down on smaller containers using container queries */
|
|
300
263
|
@container (max-width: 480px) {
|
|
301
264
|
textarea.lg {
|
|
302
265
|
font-size: var(--ty-font-sm);
|
|
@@ -354,16 +317,12 @@ textarea:focus-visible {
|
|
|
354
317
|
}
|
|
355
318
|
}
|
|
356
319
|
|
|
357
|
-
/* ===== ANIMATION AND TRANSITIONS ===== */
|
|
358
|
-
|
|
359
|
-
/* Smooth height transitions for auto-resize */
|
|
360
320
|
textarea {
|
|
361
321
|
transition: var(--ty-local-transition,
|
|
362
322
|
border-color 0.15s ease-in-out,
|
|
363
323
|
box-shadow 0.15s ease-in-out,
|
|
364
324
|
background-color 0.15s ease-in-out,
|
|
365
325
|
height 0.1s ease-out);
|
|
366
|
-
/* Smooth height changes */
|
|
367
326
|
}
|
|
368
327
|
|
|
369
328
|
/* Disable height transition on focus to avoid jarring effect */
|
|
@@ -374,11 +333,9 @@ textarea:focus {
|
|
|
374
333
|
background-color 0.15s ease-in-out);
|
|
375
334
|
}
|
|
376
335
|
|
|
377
|
-
/* For users who prefer reduced motion, disable height transitions */
|
|
378
336
|
@media (prefers-reduced-motion: reduce) {
|
|
379
337
|
textarea {
|
|
380
338
|
transition: none;
|
|
381
339
|
}
|
|
382
340
|
}
|
|
383
341
|
`;
|
|
384
|
-
//# sourceMappingURL=textarea.js.map
|
package/lib/styles/tooltip.d.ts
CHANGED
package/lib/styles/tooltip.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tooltip Styles
|
|
3
|
-
*
|
|
4
|
-
* The tooltip popover is created in document.body (top-layer Popover API)
|
|
5
|
-
* and styled inline by the component — see applyFlavorStyles() in
|
|
6
|
-
* components/tooltip.ts. The shadow root only needs the host to not affect
|
|
7
|
-
* layout.
|
|
8
|
-
*/
|
|
9
1
|
export const tooltipStyles = {
|
|
10
2
|
id: 'ty-tooltip',
|
|
11
3
|
css: `
|
|
12
|
-
/* Tooltip host element - display contents to not affect layout */
|
|
13
4
|
:host {
|
|
14
5
|
display: contents;
|
|
15
6
|
}
|
|
16
7
|
`,
|
|
17
8
|
};
|
|
18
|
-
//# sourceMappingURL=tooltip.js.map
|