tyrell-components 1.0.0-TC30 → 1.0.0-TC32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/css/tyrell.css +48 -12
  2. package/dist/tyrell.css +48 -12
  3. package/dist/tyrell.js +1 -1
  4. package/lib/components/calendar-month.d.ts +17 -0
  5. package/lib/components/calendar-month.d.ts.map +1 -1
  6. package/lib/components/calendar-month.js +121 -7
  7. package/lib/components/calendar-month.js.map +1 -1
  8. package/lib/components/calendar.d.ts +3 -1
  9. package/lib/components/calendar.d.ts.map +1 -1
  10. package/lib/components/calendar.js +19 -9
  11. package/lib/components/calendar.js.map +1 -1
  12. package/lib/components/checkbox.d.ts +4 -3
  13. package/lib/components/checkbox.d.ts.map +1 -1
  14. package/lib/components/checkbox.js +23 -35
  15. package/lib/components/checkbox.js.map +1 -1
  16. package/lib/components/copy.d.ts +4 -3
  17. package/lib/components/copy.d.ts.map +1 -1
  18. package/lib/components/copy.js +22 -21
  19. package/lib/components/copy.js.map +1 -1
  20. package/lib/components/date-picker.d.ts +5 -1
  21. package/lib/components/date-picker.d.ts.map +1 -1
  22. package/lib/components/date-picker.js +113 -32
  23. package/lib/components/date-picker.js.map +1 -1
  24. package/lib/components/input.d.ts +3 -2
  25. package/lib/components/input.d.ts.map +1 -1
  26. package/lib/components/input.js +24 -21
  27. package/lib/components/input.js.map +1 -1
  28. package/lib/components/modal.d.ts.map +1 -1
  29. package/lib/components/modal.js +22 -3
  30. package/lib/components/modal.js.map +1 -1
  31. package/lib/components/popup.d.ts.map +1 -1
  32. package/lib/components/popup.js +14 -0
  33. package/lib/components/popup.js.map +1 -1
  34. package/lib/components/radio.d.ts +5 -2
  35. package/lib/components/radio.d.ts.map +1 -1
  36. package/lib/components/radio.js +16 -5
  37. package/lib/components/radio.js.map +1 -1
  38. package/lib/components/select.d.ts +75 -5
  39. package/lib/components/select.d.ts.map +1 -1
  40. package/lib/components/select.js +282 -47
  41. package/lib/components/select.js.map +1 -1
  42. package/lib/components/selected-tags.d.ts +1 -1
  43. package/lib/components/selected-tags.js +1 -1
  44. package/lib/components/switch.d.ts +4 -3
  45. package/lib/components/switch.d.ts.map +1 -1
  46. package/lib/components/switch.js +17 -29
  47. package/lib/components/switch.js.map +1 -1
  48. package/lib/components/tabs.d.ts.map +1 -1
  49. package/lib/components/tabs.js +18 -2
  50. package/lib/components/tabs.js.map +1 -1
  51. package/lib/components/tooltip.d.ts +4 -2
  52. package/lib/components/tooltip.d.ts.map +1 -1
  53. package/lib/components/tooltip.js +109 -70
  54. package/lib/components/tooltip.js.map +1 -1
  55. package/lib/components/wizard.d.ts.map +1 -1
  56. package/lib/components/wizard.js +22 -3
  57. package/lib/components/wizard.js.map +1 -1
  58. package/lib/styles/button.d.ts.map +1 -1
  59. package/lib/styles/button.js +10 -6
  60. package/lib/styles/button.js.map +1 -1
  61. package/lib/styles/calendar-month.d.ts +3 -1
  62. package/lib/styles/calendar-month.d.ts.map +1 -1
  63. package/lib/styles/calendar-month.js +63 -8
  64. package/lib/styles/calendar-month.js.map +1 -1
  65. package/lib/styles/checkbox.d.ts +3 -1
  66. package/lib/styles/checkbox.d.ts.map +1 -1
  67. package/lib/styles/checkbox.js +31 -53
  68. package/lib/styles/checkbox.js.map +1 -1
  69. package/lib/styles/copy.d.ts +3 -1
  70. package/lib/styles/copy.d.ts.map +1 -1
  71. package/lib/styles/copy.js +27 -4
  72. package/lib/styles/copy.js.map +1 -1
  73. package/lib/styles/date-picker.d.ts +3 -1
  74. package/lib/styles/date-picker.d.ts.map +1 -1
  75. package/lib/styles/date-picker.js +52 -98
  76. package/lib/styles/date-picker.js.map +1 -1
  77. package/lib/styles/input.d.ts +3 -1
  78. package/lib/styles/input.d.ts.map +1 -1
  79. package/lib/styles/input.js +58 -119
  80. package/lib/styles/input.js.map +1 -1
  81. package/lib/styles/multiselect.d.ts +3 -1
  82. package/lib/styles/multiselect.d.ts.map +1 -1
  83. package/lib/styles/multiselect.js +26 -2
  84. package/lib/styles/multiselect.js.map +1 -1
  85. package/lib/styles/radio.d.ts +3 -1
  86. package/lib/styles/radio.d.ts.map +1 -1
  87. package/lib/styles/radio.js +23 -20
  88. package/lib/styles/radio.js.map +1 -1
  89. package/lib/styles/select-base.d.ts +9 -0
  90. package/lib/styles/select-base.d.ts.map +1 -0
  91. package/lib/styles/select-base.js +929 -0
  92. package/lib/styles/select-base.js.map +1 -0
  93. package/lib/styles/select.d.ts +3 -3
  94. package/lib/styles/select.d.ts.map +1 -1
  95. package/lib/styles/select.js +20 -18
  96. package/lib/styles/select.js.map +1 -1
  97. package/lib/styles/switch.d.ts +3 -1
  98. package/lib/styles/switch.d.ts.map +1 -1
  99. package/lib/styles/switch.js +23 -8
  100. package/lib/styles/switch.js.map +1 -1
  101. package/lib/styles/tooltip.d.ts +4 -2
  102. package/lib/styles/tooltip.d.ts.map +1 -1
  103. package/lib/styles/tooltip.js +4 -119
  104. package/lib/styles/tooltip.js.map +1 -1
  105. package/lib/utils/icons.d.ts +10 -0
  106. package/lib/utils/icons.d.ts.map +1 -0
  107. package/lib/utils/icons.js +10 -0
  108. package/lib/utils/icons.js.map +1 -0
  109. package/lib/utils/loader-registry.d.ts +2 -2
  110. package/lib/utils/loader-registry.js +2 -2
  111. package/lib/utils/positioning.d.ts +27 -0
  112. package/lib/utils/positioning.d.ts.map +1 -1
  113. package/lib/utils/positioning.js +20 -3
  114. package/lib/utils/positioning.js.map +1 -1
  115. package/lib/version.d.ts +1 -1
  116. package/lib/version.js +1 -1
  117. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-base.js","sourceRoot":"","sources":["../../src/styles/select-base.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Select Component Styles
3
- * Layered over the shared multiselect styles (popup, mobile modal, search).
3
+ * Layered over the shared select-field styles (popup, mobile modal, search).
4
4
  *
5
5
  * Skins:
6
- * - default FIELD: the base .multiselect-stub already carries the form-field
6
+ * - default FIELD: the base .select-stub already carries the form-field
7
7
  * look (width 100%, --ty-input-* tokens) — only text treatment added here
8
8
  * - .compact: content-hugging trigger for toolbars, count badge
9
9
  * - .custom-trigger (slot="trigger"): all chrome stripped
10
10
  */
11
- export declare const selectStyles = "\n/* ===== COMPACT skin: hugs content (field skin = base styles) ===== */\n.multiselect-stub.compact {\n display: inline-flex;\n flex-wrap: nowrap;\n width: auto;\n gap: 0.5rem;\n /* extra right padding = room for the absolutely-positioned chevron */\n padding: 0.5rem 2.25rem 0.5rem 0.875rem;\n}\n\n/* Consumer-provided trigger (slot=\"trigger\"): no chrome at all */\n.multiselect-stub.custom-trigger {\n display: inline-block;\n border: none;\n background: none;\n padding: 0;\n min-height: 0;\n border-radius: 0;\n}\n.multiselect-stub.custom-trigger:hover {\n border: none;\n}\n\n.select-count {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.25rem;\n height: 1.25rem;\n padding: 0 0.375rem;\n border-radius: 9999px;\n background: var(--ty-bg-primary-soft);\n color: var(--ty-text-primary);\n font-size: var(--ty-font-xs);\n font-weight: var(--ty-font-semibold);\n font-style: normal;\n}\n.select-count[hidden] {\n display: none;\n}\n/* Selection text (field skin): single line, ellipsis, input colors */\n.multiselect-stub .dropdown-placeholder {\n font-style: normal;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--input-color, var(--ty-input-color));\n}\n\n/* Empty state: muted placeholder color */\n.multiselect-stub .dropdown-placeholder.placeholder-shown {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n}\n.multiselect-stub .dropdown-placeholder[hidden] {\n display: none;\n}\n\n/* Single-select display clone (slot=\"selected\"): the selected ty-option\n projected into the stub \u2014 its own :host([cloned]) styling strips the\n list-row chrome; here it just takes the text's flex slot. */\n.multiselect-stub slot[name=\"selected\"] {\n display: none;\n}\n.multiselect-stub.has-clone slot[name=\"selected\"] {\n display: block;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n}\n.multiselect-stub.compact.has-clone slot[name=\"selected\"] {\n flex: 0 1 auto;\n}\n\n/* start/end slot content (icons etc.) \u2014 spacing comes from the stub's flex\n gap; muted like ty-input adornments. end sits before the chevron. */\n.multiselect-stub ::slotted([slot=\"start\"]),\n.multiselect-stub ::slotted([slot=\"end\"]) {\n flex-shrink: 0;\n color: var(--ty-text-soft);\n}\n\n/* Compact skin: the text IS the trigger label \u2014 no grow, regular text color */\n.multiselect-stub.compact .dropdown-placeholder {\n flex-grow: 0;\n color: var(--ty-text);\n}\n\n/* Trigger stays visible while the popup is open (multiselect hides it) */\n.dropdown-wrapper:has(.dropdown-chevron.open) .multiselect-stub {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ===== One-panel popup: search header fused with the options list ===== */\n\n/* Single unified shadow around the whole panel (header + list as one silhouette) */\n.dropdown-dialog.open {\n filter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.14)) drop-shadow(0 2px 6px rgba(0, 0, 0, 0.08));\n}\n\n/* Card-style header: the search input keeps its own bordered-field look\n (base styles) and sits inset in the panel, TagPicker-style \u2014 no divider,\n whitespace separates it from the list. */\n.dropdown-header {\n background: var(--input-bg, var(--ty-input-bg));\n border: 1px solid var(--input-border, var(--ty-input-border));\n border-bottom: none;\n border-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n padding: var(--ty-spacing-2) var(--ty-spacing-2) var(--ty-spacing-1);\n}\n.dropdown-dialog.position-below .dropdown-header {\n margin-bottom: 0;\n}\n.dropdown-dialog.position-above .dropdown-header {\n margin-top: 0;\n border-top: none;\n border-bottom: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\n padding: var(--ty-spacing-1) var(--ty-spacing-2) var(--ty-spacing-2);\n}\n\n/* Magnifier adornment inside the search field (header padding + field inset) */\n.dropdown-search-icon {\n position: absolute;\n top: 50%;\n left: calc(var(--ty-spacing-2) + var(--ty-spacing-3));\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n color: var(--input-placeholder, var(--ty-input-placeholder));\n pointer-events: none;\n}\n.dropdown-search-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* Mobile header: flex row, icon flows inline before the input */\n.dropdown-mode-mobile .mobile-header-content .dropdown-search-icon {\n position: static;\n transform: none;\n flex-shrink: 0;\n}\n\n/* Search input: bordered field from base styles; just size + icon room */\n.dropdown-search-input {\n min-height: 2.25rem;\n padding-right: var(--ty-spacing-2);\n /* room for the magnifier adornment */\n padding-left: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n/* Trigger already has a chevron - no second one inside the search row */\n.dropdown-search-chevron {\n display: none;\n}\n\n/* With the search row hidden nothing inside is focusable, so the <dialog>\n itself receives focus on open \u2014 suppress its UA focus ring */\n.dropdown-dialog:focus,\n.dropdown-dialog:focus-visible {\n outline: none;\n}\n\n/* Search row hidden ('auto' below threshold / searchable=\"false\"):\n the options panel owns the whole silhouette */\n.dropdown-header[hidden] {\n display: none;\n}\n.dropdown-header[hidden] ~ .dropdown-options-wrapper .dropdown-options {\n border-top: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: var(--ty-radius-lg);\n}\n.mobile-search-input[hidden],\n.mobile-header-content .dropdown-search-icon[hidden] {\n display: none;\n}\n\n/* Options: vertical list rows fused under the search header.\n No own shadow/animation - the panel appears as one via dialog opacity. */\n.dropdown-options {\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: stretch;\n gap: 0;\n /* Card-style list: rounded rows sit inset from the panel edges */\n padding: var(--ty-spacing-1);\n border-top: none;\n border-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\n box-shadow: none;\n transform: none;\n transition: none;\n /* ~9-10 visible rows before scrolling (custom scrollbar, native hidden) */\n max-height: 24rem;\n}\n.dropdown-dialog.position-below .dropdown-options {\n box-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-options {\n border-top: 1px solid var(--input-border, var(--ty-input-border));\n border-bottom: none;\n border-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n\n/* Loading panel continues the fused silhouette exactly like .dropdown-options \u2014\n the base layer styles it as a floating card (radius + shadow), which left a\n see-through gap under the search header while loading. */\n.dropdown-loading {\n border-top: none;\n border-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\n box-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-loading {\n border-top: 1px solid var(--input-border, var(--ty-input-border));\n border-bottom: none;\n border-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n\n/* Selection tick lives inside ty-option (lucide check on [selected]) */\n\n/* Mobile modal: same vertical list */\n.dropdown-mode-mobile .section-content ::slotted(ty-option) {\n display: block;\n width: 100%;\n}\n";
11
+ export declare const selectStyles = "\n/* ===== COMPACT skin: hugs content (field skin = base styles) ===== */\n.select-stub.compact {\n display: inline-flex;\n flex-wrap: nowrap;\n width: auto;\n gap: 0.5rem;\n /* extra right padding = room for the absolutely-positioned chevron */\n padding: 0.5rem 2.25rem 0.5rem 0.875rem;\n}\n\n/* Consumer-provided trigger (slot=\"trigger\"): no chrome at all */\n.select-stub.custom-trigger {\n display: inline-block;\n border: none;\n background: none;\n padding: 0;\n min-height: 0;\n border-radius: 0;\n}\n.select-stub.custom-trigger:hover {\n border: none;\n}\n\n.select-count {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.25rem;\n height: 1.25rem;\n padding: 0 0.375rem;\n border-radius: 9999px;\n /* --ty-text-primary never existed as a token \u2014 this silently fell back\n to inherited/unset color. Now follows the select's own flavor. */\n background: color-mix(in oklab, var(--select-accent, var(--ty-color-primary)) 15%, transparent);\n color: var(--select-accent-bold, var(--ty-color-primary-strong));\n font-size: var(--ty-font-xs);\n font-weight: var(--ty-font-semibold);\n font-style: normal;\n}\n.select-count[hidden] {\n display: none;\n}\n/* Selection text (field skin): single line, ellipsis, input colors */\n.select-stub .dropdown-placeholder {\n font-style: normal;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--input-color, var(--ty-input-color));\n}\n\n/* Empty state: muted placeholder color */\n.select-stub .dropdown-placeholder.placeholder-shown {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n}\n.select-stub .dropdown-placeholder[hidden] {\n display: none;\n}\n\n/* Single-select display clone (slot=\"selected\"): the selected ty-option\n projected into the stub \u2014 its own :host([cloned]) styling strips the\n list-row chrome; here it just takes the text's flex slot. */\n.select-stub slot[name=\"selected\"] {\n display: none;\n}\n.select-stub.has-clone slot[name=\"selected\"] {\n display: block;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n}\n.select-stub.compact.has-clone slot[name=\"selected\"] {\n flex: 0 1 auto;\n}\n\n/* start/end slot content (icons etc.) \u2014 spacing comes from the stub's flex\n gap; muted like ty-input adornments. end sits before the chevron. */\n.select-stub ::slotted([slot=\"start\"]),\n.select-stub ::slotted([slot=\"end\"]) {\n flex-shrink: 0;\n color: var(--ty-text-soft);\n}\n\n/* Compact skin: the text IS the trigger label \u2014 no grow, regular text color */\n.select-stub.compact .dropdown-placeholder {\n flex-grow: 0;\n color: var(--ty-text);\n}\n\n/* Trigger stays visible while the popup is open (the popup hides it) */\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ===== One-panel popup: search header fused with the options list ===== */\n\n/* Single unified shadow around the whole panel (header + list as one silhouette) */\n.dropdown-dialog.open {\n filter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.14)) drop-shadow(0 2px 6px rgba(0, 0, 0, 0.08));\n}\n\n/* Card-style header: the search input keeps its own bordered-field look\n (base styles) and sits inset in the panel, TagPicker-style \u2014 no divider,\n whitespace separates it from the list. */\n.dropdown-header {\n background: var(--input-bg, var(--ty-input-bg));\n border: 1px solid var(--input-border, var(--ty-input-border));\n border-bottom: none;\n border-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n padding: var(--ty-spacing-2) var(--ty-spacing-2) var(--ty-spacing-1);\n}\n.dropdown-dialog.position-below .dropdown-header {\n margin-bottom: 0;\n}\n.dropdown-dialog.position-above .dropdown-header {\n margin-top: 0;\n border-top: none;\n border-bottom: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\n padding: var(--ty-spacing-1) var(--ty-spacing-2) var(--ty-spacing-2);\n}\n\n/* Magnifier adornment inside the search field (header padding + field inset) */\n.dropdown-search-icon {\n position: absolute;\n top: 50%;\n left: calc(var(--ty-spacing-2) + var(--ty-spacing-3));\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n color: var(--input-placeholder, var(--ty-input-placeholder));\n pointer-events: none;\n}\n.dropdown-search-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* Mobile header: flex row, icon flows inline before the input */\n.dropdown-mode-mobile .mobile-header-content .dropdown-search-icon {\n position: static;\n transform: none;\n flex-shrink: 0;\n}\n\n/* Search input: bordered field from base styles; just size + icon room */\n.dropdown-search-input {\n min-height: 2.25rem;\n padding-right: var(--ty-spacing-2);\n /* room for the magnifier adornment */\n padding-left: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n/* Trigger already has a chevron - no second one inside the search row */\n.dropdown-search-chevron {\n display: none;\n}\n\n/* With the search row hidden nothing inside is focusable, so the <dialog>\n itself receives focus on open \u2014 suppress its UA focus ring */\n.dropdown-dialog:focus,\n.dropdown-dialog:focus-visible {\n outline: none;\n}\n\n/* Search row hidden ('auto' below threshold / searchable=\"false\"):\n the options panel owns the whole silhouette */\n.dropdown-header[hidden] {\n display: none;\n}\n.dropdown-header[hidden] ~ .dropdown-options-wrapper .dropdown-options {\n border-top: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: var(--ty-radius-lg);\n}\n.mobile-search-input[hidden],\n.mobile-header-content .dropdown-search-icon[hidden] {\n display: none;\n}\n\n/* Options: vertical list rows fused under the search header.\n No own shadow/animation - the panel appears as one via dialog opacity. */\n.dropdown-options {\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: stretch;\n gap: 0;\n /* Card-style list: rounded rows sit inset from the panel edges */\n padding: var(--ty-spacing-1);\n border-top: none;\n border-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\n box-shadow: none;\n transform: none;\n transition: none;\n /* ~9-10 visible rows before scrolling (custom scrollbar, native hidden) */\n max-height: 24rem;\n}\n.dropdown-dialog.position-below .dropdown-options {\n box-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-options {\n border-top: 1px solid var(--input-border, var(--ty-input-border));\n border-bottom: none;\n border-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n\n/* Loading panel continues the fused silhouette exactly like .dropdown-options \u2014\n the base layer styles it as a floating card (radius + shadow), which left a\n see-through gap under the search header while loading. */\n.dropdown-loading {\n border-top: none;\n border-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\n box-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-loading {\n border-top: 1px solid var(--input-border, var(--ty-input-border));\n border-bottom: none;\n border-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n\n/* Selection tick lives inside ty-option (lucide check on [selected]) */\n\n/* Mobile modal: same vertical list */\n.dropdown-mode-mobile .section-content ::slotted(ty-option) {\n display: block;\n width: 100%;\n}\n";
12
12
  //# sourceMappingURL=select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/styles/select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,YAAY,isOAoOxB,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/styles/select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,YAAY,m3OAsOxB,CAAC"}
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Select Component Styles
3
- * Layered over the shared multiselect styles (popup, mobile modal, search).
3
+ * Layered over the shared select-field styles (popup, mobile modal, search).
4
4
  *
5
5
  * Skins:
6
- * - default FIELD: the base .multiselect-stub already carries the form-field
6
+ * - default FIELD: the base .select-stub already carries the form-field
7
7
  * look (width 100%, --ty-input-* tokens) — only text treatment added here
8
8
  * - .compact: content-hugging trigger for toolbars, count badge
9
9
  * - .custom-trigger (slot="trigger"): all chrome stripped
10
10
  */
11
11
  export const selectStyles = `
12
12
  /* ===== COMPACT skin: hugs content (field skin = base styles) ===== */
13
- .multiselect-stub.compact {
13
+ .select-stub.compact {
14
14
  display: inline-flex;
15
15
  flex-wrap: nowrap;
16
16
  width: auto;
@@ -20,7 +20,7 @@ export const selectStyles = `
20
20
  }
21
21
 
22
22
  /* Consumer-provided trigger (slot="trigger"): no chrome at all */
23
- .multiselect-stub.custom-trigger {
23
+ .select-stub.custom-trigger {
24
24
  display: inline-block;
25
25
  border: none;
26
26
  background: none;
@@ -28,7 +28,7 @@ export const selectStyles = `
28
28
  min-height: 0;
29
29
  border-radius: 0;
30
30
  }
31
- .multiselect-stub.custom-trigger:hover {
31
+ .select-stub.custom-trigger:hover {
32
32
  border: none;
33
33
  }
34
34
 
@@ -41,8 +41,10 @@ export const selectStyles = `
41
41
  height: 1.25rem;
42
42
  padding: 0 0.375rem;
43
43
  border-radius: 9999px;
44
- background: var(--ty-bg-primary-soft);
45
- color: var(--ty-text-primary);
44
+ /* --ty-text-primary never existed as a token — this silently fell back
45
+ to inherited/unset color. Now follows the select's own flavor. */
46
+ background: color-mix(in oklab, var(--select-accent, var(--ty-color-primary)) 15%, transparent);
47
+ color: var(--select-accent-bold, var(--ty-color-primary-strong));
46
48
  font-size: var(--ty-font-xs);
47
49
  font-weight: var(--ty-font-semibold);
48
50
  font-style: normal;
@@ -51,7 +53,7 @@ export const selectStyles = `
51
53
  display: none;
52
54
  }
53
55
  /* Selection text (field skin): single line, ellipsis, input colors */
54
- .multiselect-stub .dropdown-placeholder {
56
+ .select-stub .dropdown-placeholder {
55
57
  font-style: normal;
56
58
  flex: 1 1 auto;
57
59
  min-width: 0;
@@ -62,45 +64,45 @@ export const selectStyles = `
62
64
  }
63
65
 
64
66
  /* Empty state: muted placeholder color */
65
- .multiselect-stub .dropdown-placeholder.placeholder-shown {
67
+ .select-stub .dropdown-placeholder.placeholder-shown {
66
68
  color: var(--input-placeholder, var(--ty-input-placeholder));
67
69
  }
68
- .multiselect-stub .dropdown-placeholder[hidden] {
70
+ .select-stub .dropdown-placeholder[hidden] {
69
71
  display: none;
70
72
  }
71
73
 
72
74
  /* Single-select display clone (slot="selected"): the selected ty-option
73
75
  projected into the stub — its own :host([cloned]) styling strips the
74
76
  list-row chrome; here it just takes the text's flex slot. */
75
- .multiselect-stub slot[name="selected"] {
77
+ .select-stub slot[name="selected"] {
76
78
  display: none;
77
79
  }
78
- .multiselect-stub.has-clone slot[name="selected"] {
80
+ .select-stub.has-clone slot[name="selected"] {
79
81
  display: block;
80
82
  flex: 1 1 auto;
81
83
  min-width: 0;
82
84
  overflow: hidden;
83
85
  }
84
- .multiselect-stub.compact.has-clone slot[name="selected"] {
86
+ .select-stub.compact.has-clone slot[name="selected"] {
85
87
  flex: 0 1 auto;
86
88
  }
87
89
 
88
90
  /* start/end slot content (icons etc.) — spacing comes from the stub's flex
89
91
  gap; muted like ty-input adornments. end sits before the chevron. */
90
- .multiselect-stub ::slotted([slot="start"]),
91
- .multiselect-stub ::slotted([slot="end"]) {
92
+ .select-stub ::slotted([slot="start"]),
93
+ .select-stub ::slotted([slot="end"]) {
92
94
  flex-shrink: 0;
93
95
  color: var(--ty-text-soft);
94
96
  }
95
97
 
96
98
  /* Compact skin: the text IS the trigger label — no grow, regular text color */
97
- .multiselect-stub.compact .dropdown-placeholder {
99
+ .select-stub.compact .dropdown-placeholder {
98
100
  flex-grow: 0;
99
101
  color: var(--ty-text);
100
102
  }
101
103
 
102
- /* Trigger stays visible while the popup is open (multiselect hides it) */
103
- .dropdown-wrapper:has(.dropdown-chevron.open) .multiselect-stub {
104
+ /* Trigger stays visible while the popup is open (the popup hides it) */
105
+ .dropdown-wrapper:has(.dropdown-chevron.open) .select-stub {
104
106
  opacity: 1;
105
107
  pointer-events: auto;
106
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/styles/select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoO3B,CAAC"}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/styles/select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsO3B,CAAC"}
@@ -5,5 +5,7 @@
5
5
  * Reuses input-container/error-message rules from input styles for label
6
6
  * and error layout consistency.
7
7
  */
8
- export declare const switchStyles = "\n\n:host {\n display: block;\n font-family: var(--ty-font-sans);\n width: 100%;\n}\n\n:host([size=\"xl\"]) {\n font-size: 20px;\n}\n\n\n:host([size=\"xs\"]) {\n font-size: 12px;\n}\n\n\n:host([size=\"sm\"]) {\n font-size: 14px;\n}\n\n:host([size=\"lg\"]) {\n font-size: 18px;\n}\n\n.input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\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 display: flex;\n align-items: center;\n}\n\n/* Required indicator - using SVG icon */\n.required-icon {\n display: inline-flex;\n align-items: center;\n color: var(--ty-color-danger);\n width: 12px;\n height: 12px;\n margin-left: 4px;\n vertical-align: middle;\n}\n\n.required-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* ===== INPUT WRAPPER WITH SLOTS ===== */\n\n.input-wrapper {\n display: flex;\n align-items: center;\n gap: 0.5rem; /* No gap by default */\n width: 100%;\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(--input-bg, var(--ty-input-bg)));\n transition: all 0.15s ease-in-out;\n \n /* Default size (md) */\n min-height: 40px;\n padding: 0 12px;\n}\n\n/* Wrapper states */\n.input-wrapper:hover:not(.disabled) {\n border-color: var(--input-border-hover, var(--ty-input-border-hover));\n}\n\n.input-wrapper.focused {\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.input-wrapper.disabled {\n cursor: not-allowed;\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/* ===== SLOT STYLING ===== */\n\n/* Style slotted content directly (no wrappers needed) */\n::slotted([slot=\"start\"]),\n::slotted([slot=\"end\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--ty-color-text-soft);\n}\n\n/* Password reveal toggle (rendered for type=\"password\") */\n.password-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--input-placeholder, var(--ty-input-placeholder));\n transition: color 0.15s ease-in-out;\n}\n.password-toggle:hover {\n color: var(--input-color, var(--ty-input-color));\n}\n.password-toggle:focus-visible {\n outline: 2px solid var(--ty-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n.password-toggle svg {\n width: 1rem;\n height: 1rem;\n}\n\n/* Icon sizing for slotted icons */\n::slotted(ty-icon) {\n width: 1em;\n height: 1em;\n flex-shrink: 0;\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 for wrapper */\n.input-wrapper.error {\n border-color: var(--ty-color-danger);\n background: var(--ty-bg-danger-soft);\n}\n\n.input-wrapper.error.focused {\n border-color: var(--ty-color-danger-bold);\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* ===== INPUT BASE STYLING ===== */\n\ninput {\n /* Reset and base styles \u2014 Linear-paired typography */\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n border: none;\n outline: none;\n background: transparent;\n color: var(--input-color, var(--ty-input-color));\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 font-weight: var(--ty-font-normal);\n padding: 0;\n margin: 0;\n}\n\n/* Remove number input spinner arrows */\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n/* Disabled state */\ninput:disabled {\n cursor: not-allowed;\n color: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\n\n/* Placeholder styling */\ninput::placeholder {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n font-weight: 400;\n}\n\n/* ===== SIZE MODIFIERS ===== */\n\n/* Extra Small */\n.input-wrapper.xs {\n min-height: 32px;\n padding: 0 8px;\n border-radius: var(--ty-input-radius-xs, var(--ty-radius-base));\n}\n\n.input-wrapper.xs input {\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 */\n.input-wrapper.sm {\n min-height: 36px;\n padding: 0 10px;\n border-radius: var(--ty-input-radius-sm, var(--ty-radius-base));\n}\n\n.input-wrapper.sm input {\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) */\n.input-wrapper.md {\n min-height: 40px;\n padding: 0 12px;\n border-radius: var(--ty-input-radius-md, var(--ty-radius-base));\n}\n\n.input-wrapper.md input {\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 */\n.input-wrapper.lg {\n min-height: 44px;\n padding: 0 14px;\n border-radius: var(--ty-input-radius-lg, var(--ty-radius-base));\n}\n\n.input-wrapper.lg input {\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 */\n.input-wrapper.xl {\n min-height: 48px;\n padding: 0 16px;\n border-radius: var(--ty-input-radius-xl, var(--ty-radius-base));\n}\n\n.input-wrapper.xl input {\n font-size: var(--ty-font-lg);\n line-height: var(--ty-leading-lg);\n letter-spacing: var(--ty-tracking-lg);\n}\n\n/* ===== SEMANTIC FLAVOR MODIFIERS ===== */\n\n/* Primary */\n.input-wrapper.primary {\n border-color: var(--ty-input-primary-border, var(--ty-color-primary));\n}\n\n.input-wrapper.primary:hover:not(.disabled) {\n border-color: var(--ty-color-primary-bold);\n}\n\n.input-wrapper.primary.focused {\n border-color: var(--ty-color-primary-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-primary) 15%, transparent);\n}\n\n/* Secondary */\n.input-wrapper.secondary {\n border-color: var(--ty-input-secondary-border, var(--ty-color-secondary));\n}\n\n.input-wrapper.secondary.focused {\n border-color: var(--ty-color-secondary-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-secondary) 15%, transparent);\n}\n\n/* Success */\n.input-wrapper.success {\n border-color: var(--ty-input-success-border);\n}\n\n.input-wrapper.success:hover:not(.disabled) {\n border-color: var(--ty-color-success-bold);\n}\n\n.input-wrapper.success.focused {\n border-color: var(--ty-color-success-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-success) 15%, transparent);\n}\n\n/* Danger */\n.input-wrapper.danger {\n border-color: var(--ty-input-danger-border);\n}\n\n.input-wrapper.danger:hover:not(.disabled) {\n border-color: var(--ty-color-danger-bold);\n}\n\n.input-wrapper.danger.focused {\n border-color: var(--ty-color-danger-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);\n}\n\n/* Warning */\n.input-wrapper.warning {\n border-color: var(--ty-input-warning-border);\n}\n\n.input-wrapper.warning:hover:not(.disabled) {\n border-color: var(--ty-color-warning-bold);\n}\n\n.input-wrapper.warning.focused {\n border-color: var(--ty-color-warning-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-warning) 15%, transparent);\n}\n\n/* Neutral (default) */\n.input-wrapper.neutral.focused {\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/* ===== ACCESSIBILITY ENHANCEMENTS ===== */\n\ninput:focus-visible {\n outline: none;\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .input-wrapper {\n border-width: 2px;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .input-wrapper {\n transition: none;\n }\n}\n\n/* ===== RESPONSIVE BEHAVIOR ===== */\n\n@media (max-width: 640px) {\n .input-wrapper.lg {\n min-height: 40px;\n padding: 0 12px;\n }\n\n .input-wrapper.lg input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n }\n\n .input-wrapper.xl {\n min-height: 44px;\n padding: 0 14px;\n }\n\n .input-wrapper.xl input {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n }\n}\n\n@media (max-width: 480px) {\n .input-wrapper.xl {\n min-height: 40px;\n padding: 0 12px;\n }\n\n .input-wrapper.xl input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n }\n}\n\n\n/* Override input's :host so the switch sizes to its visual */\n:host {\n display: inline-flex;\n width: auto;\n vertical-align: middle;\n}\n\n/* ===== SWITCH CONTAINER (just the visual) ===== */\n.switch-container {\n display: inline-block;\n cursor: pointer;\n user-select: none;\n outline: none;\n vertical-align: middle;\n}\n\n.switch-container.disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.switch-container:focus-visible .switch-track,\n.switch-container.focused .switch-track {\n box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n\n/* ===== TRACK ===== */\n.switch-track {\n position: relative;\n flex-shrink: 0;\n width: 36px;\n height: 20px;\n border-radius: 999px;\n background: var(--ty-color-neutral-soft, var(--ty-input-border));\n transition: background-color 0.18s ease-in-out;\n box-sizing: border-box;\n}\n\n/* ===== THUMB ===== */\n.switch-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: white;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n transition: transform 0.18s ease-in-out, background-color 0.18s ease-in-out;\n}\n\n/* ===== CHECKED STATE ===== */\n.switch-container[aria-checked=\"true\"] .switch-track {\n background: var(--ty-color-primary);\n}\n\n.switch-container[aria-checked=\"true\"] .switch-thumb {\n transform: translateX(16px);\n}\n\n/* ===== SIZE VARIANTS ===== */\n.switch-container.xs .switch-track { width: 26px; height: 14px; }\n.switch-container.xs .switch-thumb { width: 10px; height: 10px; }\n.switch-container.xs[aria-checked=\"true\"] .switch-thumb { transform: translateX(12px); }\n\n.switch-container.sm .switch-track { width: 30px; height: 16px; }\n.switch-container.sm .switch-thumb { width: 12px; height: 12px; }\n.switch-container.sm[aria-checked=\"true\"] .switch-thumb { transform: translateX(14px); }\n\n/* md is default \u2014 already set above */\n\n.switch-container.lg .switch-track { width: 44px; height: 24px; }\n.switch-container.lg .switch-thumb { width: 20px; height: 20px; }\n.switch-container.lg[aria-checked=\"true\"] .switch-thumb { transform: translateX(20px); }\n\n.switch-container.xl .switch-track { width: 52px; height: 28px; }\n.switch-container.xl .switch-thumb { width: 24px; height: 24px; }\n.switch-container.xl[aria-checked=\"true\"] .switch-thumb { transform: translateX(24px); }\n\n/* ===== FLAVOR VARIANTS (checked-state colors) ===== */\n.switch-container.primary[aria-checked=\"true\"] .switch-track { background: var(--ty-color-primary); }\n.switch-container.secondary[aria-checked=\"true\"] .switch-track { background: var(--ty-color-secondary); }\n.switch-container.success[aria-checked=\"true\"] .switch-track { background: var(--ty-color-success); }\n.switch-container.danger[aria-checked=\"true\"] .switch-track { background: var(--ty-color-danger); }\n.switch-container.warning[aria-checked=\"true\"] .switch-track { background: var(--ty-color-warning); }\n.switch-container.neutral[aria-checked=\"true\"] .switch-track { background: var(--ty-color-neutral); }\n\n";
8
+ /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
9
+ export declare const switchCustomFlavorCss: (base: string) => string;
10
+ export declare const switchStyles: string;
9
11
  //# sourceMappingURL=switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/styles/switch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,YAAY,uvYA0FxB,CAAC"}
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/styles/switch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,WAAkC,CAAC;AAErF,eAAO,MAAM,YAAY,QAuFxB,CAAC"}
@@ -5,7 +5,25 @@
5
5
  * Reuses input-container/error-message rules from input styles for label
6
6
  * and error layout consistency.
7
7
  */
8
+ import { FLAVORS } from "../types/common.js";
8
9
  import { inputStyles } from "./input.js";
10
+ /* Flavor rules only set --switch-track; the single checked-state rule below
11
+ consumes it. The var doubles as the per-instance override API:
12
+ `ty-switch { --switch-track: … }` (outer-document host rules beat :host).
13
+ Optional fallback flavor `fb` is used for custom flavors so missing
14
+ tokens degrade to neutral instead of an unstyled track. */
15
+ const switchFlavor = (f, fb) => {
16
+ const tok = (s) => fb
17
+ ? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
18
+ : `var(--ty-color-${f}${s})`;
19
+ return `
20
+ :host([flavor="${f}"]) { --switch-track: ${tok("")}; }
21
+ :host([flavor="${f}+"]) { --switch-track: ${tok("-strong")}; }
22
+ :host([flavor="${f}-"]) { --switch-track: ${tok("-soft")}; }
23
+ `;
24
+ };
25
+ /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
26
+ export const switchCustomFlavorCss = (base) => switchFlavor(base, "neutral");
9
27
  export const switchStyles = `
10
28
  ${inputStyles}
11
29
 
@@ -61,8 +79,10 @@ ${inputStyles}
61
79
  }
62
80
 
63
81
  /* ===== CHECKED STATE ===== */
82
+ /* Default (no flavor attribute) is primary — defaults don't reflect to the
83
+ host attribute, so the base rule's fallback carries the default look. */
64
84
  .switch-container[aria-checked="true"] .switch-track {
65
- background: var(--ty-color-primary);
85
+ background: var(--switch-track, var(--ty-color-primary));
66
86
  }
67
87
 
68
88
  .switch-container[aria-checked="true"] .switch-thumb {
@@ -88,13 +108,8 @@ ${inputStyles}
88
108
  .switch-container.xl .switch-thumb { width: 24px; height: 24px; }
89
109
  .switch-container.xl[aria-checked="true"] .switch-thumb { transform: translateX(24px); }
90
110
 
91
- /* ===== FLAVOR VARIANTS (checked-state colors) ===== */
92
- .switch-container.primary[aria-checked="true"] .switch-track { background: var(--ty-color-primary); }
93
- .switch-container.secondary[aria-checked="true"] .switch-track { background: var(--ty-color-secondary); }
94
- .switch-container.success[aria-checked="true"] .switch-track { background: var(--ty-color-success); }
95
- .switch-container.danger[aria-checked="true"] .switch-track { background: var(--ty-color-danger); }
96
- .switch-container.warning[aria-checked="true"] .switch-track { background: var(--ty-color-warning); }
97
- .switch-container.neutral[aria-checked="true"] .switch-track { background: var(--ty-color-neutral); }
111
+ /* ===== FLAVOR VARIANTS (set --switch-track, consumed above) ===== */
112
+ ${FLAVORS.map((f) => switchFlavor(f)).join("")}
98
113
 
99
114
  `;
100
115
  //# sourceMappingURL=switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/styles/switch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG;EAC1B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFZ,CAAC"}
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/styles/switch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;6DAI6D;AAC7D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAW,EAAE,EAAE;IAC9C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CACxB,EAAE;QACA,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI;QACvD,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,OAAO;iBACQ,CAAC,0BAA0B,GAAG,CAAC,EAAE,CAAC;iBAClC,CAAC,0BAA0B,GAAG,CAAC,SAAS,CAAC;iBACzC,CAAC,0BAA0B,GAAG,CAAC,OAAO,CAAC;CACvD,CAAC;AACF,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,YAAY,GAAG;EAC1B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;CAE7C,CAAC"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Tooltip Styles
3
3
  *
4
- * Bold, button-like tooltips with high contrast and semantic colors.
5
- * Designed to grab attention and provide clear, readable information.
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.
6
8
  */
7
9
  import type { StyleContent } from '../types/common.js';
8
10
  export declare const tooltipStyles: StyleContent;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/styles/tooltip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,YA6H3B,CAAC"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/styles/tooltip.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,YAQ3B,CAAC"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Tooltip Styles
3
3
  *
4
- * Bold, button-like tooltips with high contrast and semantic colors.
5
- * Designed to grab attention and provide clear, readable information.
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.
6
8
  */
7
9
  export const tooltipStyles = {
8
10
  id: 'ty-tooltip',
@@ -11,123 +13,6 @@ export const tooltipStyles = {
11
13
  :host {
12
14
  display: contents;
13
15
  }
14
-
15
- /* Tooltip container - positioned element */
16
- #tooltip-container {
17
- position: fixed;
18
- top: var(--y, 0px);
19
- left: var(--x, 0px);
20
- z-index: var(--ty-z-tooltip, 9999);
21
-
22
- /* Hidden by default */
23
- visibility: hidden;
24
- opacity: 0;
25
- transition: opacity 200ms, visibility 200ms;
26
-
27
- /* Prevent interaction */
28
- pointer-events: none;
29
- user-select: none;
30
- -webkit-user-select: none;
31
-
32
- /* Bold shadow for depth */
33
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2),
34
- 0 4px 6px -4px rgba(0, 0, 0, 0.1);
35
- }
36
-
37
- /* When open */
38
- #tooltip-container.open {
39
- visibility: visible;
40
- opacity: 1;
41
- }
42
-
43
- /* Base tooltip styling - Dark inverted style (like buttons) */
44
- #tooltip-container {
45
- /* Bold, high-contrast styling. Defaults route through the neutral ramp
46
- * so the tooltip inverts cleanly: dark in light mode, light in dark mode.
47
- * Consumers can pin it to a fixed look via --ty-tooltip-bg/-color. */
48
- background: var(--ty-tooltip-bg, var(--ty-color-neutral-strong));
49
- color: var(--ty-tooltip-color, var(--ty-color-neutral-faint));
50
-
51
- /* Comfortable padding */
52
- padding: var(--ty-tooltip-padding, 8px 12px);
53
- border-radius: var(--ty-tooltip-radius, 6px);
54
-
55
- /* No border - solid color provides contrast */
56
- border: none;
57
-
58
- /* Sizing */
59
- max-width: var(--ty-tooltip-max-width, 250px);
60
-
61
- /* Typography - clear and readable */
62
- font-size: var(--ty-font-sm, 14px);
63
- font-weight: var(--ty-font-semibold, 600);
64
- line-height: 1.5;
65
- text-align: center;
66
- }
67
-
68
- /* Content slot */
69
- #tooltip-container ::slotted(*) {
70
- /* Ensure slotted content inherits styles */
71
- color: inherit;
72
- font-size: inherit;
73
- line-height: inherit;
74
- }
75
-
76
- /* ============================================ */
77
- /* Flavor Variants - Bold, Button-like Colors */
78
- /* ============================================ */
79
-
80
- /* Primary - Bold blue (like primary button) */
81
- #tooltip-container[data-flavor="primary"] {
82
- background: var(--ty-color-primary, #3b82f6);
83
- color: #ffffff;
84
- }
85
-
86
- /* Success - Bold green */
87
- #tooltip-container[data-flavor="success"] {
88
- background: var(--ty-color-success, #10b981);
89
- color: #ffffff;
90
- }
91
-
92
- /* Danger - Bold red */
93
- #tooltip-container[data-flavor="danger"] {
94
- background: var(--ty-color-danger, #ef4444);
95
- color: #ffffff;
96
- }
97
-
98
- /* Warning - Bold orange/amber */
99
- #tooltip-container[data-flavor="warning"] {
100
- background: var(--ty-color-warning, #f59e0b);
101
- color: #ffffff;
102
- }
103
-
104
- /* Neutral - Medium gray (default alternative) */
105
- #tooltip-container[data-flavor="neutral"] {
106
- background: var(--ty-color-neutral, #6b7280);
107
- color: #ffffff;
108
- }
109
-
110
- /* Light - For dark backgrounds */
111
- #tooltip-container[data-flavor="light"] {
112
- background: var(--ty-surface-floating, var(--ty-surface-elevated, #ffffff));
113
- color: var(--ty-color-neutral-strong, #111827);
114
- box-shadow: var(--ty-shadow-lg,
115
- 0 10px 15px -3px rgba(0, 0, 0, 0.15),
116
- 0 4px 6px -4px rgba(0, 0, 0, 0.1),
117
- 0 0 0 1px rgba(0, 0, 0, 0.05));
118
- }
119
-
120
- /* Dark - Inverted style (default) */
121
- #tooltip-container[data-flavor="dark"] {
122
- background: var(--ty-tooltip-bg, var(--ty-color-neutral-strong));
123
- color: var(--ty-color-neutral-faint);
124
- }
125
-
126
- /* Secondary - Purple/indigo */
127
- #tooltip-container[data-flavor="secondary"] {
128
- background: var(--ty-color-secondary, #8b5cf6);
129
- color: #ffffff;
130
- }
131
16
  `,
132
17
  };
133
18
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/styles/tooltip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HN;CACA,CAAC"}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/styles/tooltip.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE;;;;;CAKN;CACA,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared inline SVG icons for shadow-DOM components.
3
+ *
4
+ * Kept inline (not the icon registry) because shadow roots must render
5
+ * without registry setup. Styling hooks target the wrapper element
6
+ * (e.g. `.required-icon svg`), never the svg's own classes.
7
+ */
8
+ /** Lucide `asterisk` — required-field indicator. */
9
+ export declare const REQUIRED_ICON_SVG = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 6v12\"/><path d=\"M17.196 9 6.804 15\"/><path d=\"m6.804 9 10.392 6\"/></svg>";
10
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/utils/icons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,4QAAwP,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared inline SVG icons for shadow-DOM components.
3
+ *
4
+ * Kept inline (not the icon registry) because shadow roots must render
5
+ * without registry setup. Styling hooks target the wrapper element
6
+ * (e.g. `.required-icon svg`), never the svg's own classes.
7
+ */
8
+ /** Lucide `asterisk` — required-field indicator. */
9
+ export const REQUIRED_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 6v12"/><path d="M17.196 9 6.804 15"/><path d="m6.804 9 10.392 6"/></svg>`;
10
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/utils/icons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qPAAqP,CAAC"}
@@ -2,8 +2,8 @@
2
2
  * Global loader-icon registry.
3
3
  *
4
4
  * Set once at app bootstrap to override the default spinner SVG used by
5
- * every loading-aware component (`ty-button`, `ty-dropdown`, `ty-multiselect`,
6
- * etc.). Components call `getLoaderSvg()` on every render, so changing the
5
+ * every loading-aware component (`ty-button`, `ty-select`, etc.). Components
6
+ * call `getLoaderSvg()` on every render, so changing the
7
7
  * registered SVG affects future renders.
8
8
  *
9
9
  * The wrapper element rotates the SVG with `transform: rotate()`, so prefer
@@ -2,8 +2,8 @@
2
2
  * Global loader-icon registry.
3
3
  *
4
4
  * Set once at app bootstrap to override the default spinner SVG used by
5
- * every loading-aware component (`ty-button`, `ty-dropdown`, `ty-multiselect`,
6
- * etc.). Components call `getLoaderSvg()` on every render, so changing the
5
+ * every loading-aware component (`ty-button`, `ty-select`, etc.). Components
6
+ * call `getLoaderSvg()` on every render, so changing the
7
7
  * registered SVG affects future renders.
8
8
  *
9
9
  * The wrapper element rotates the SVG with `transform: rotate()`, so prefer
@@ -116,4 +116,31 @@ export declare const placementPreferences: {
116
116
  * Tries all preference placements and returns the one that fits best
117
117
  */
118
118
  export declare function findBestPosition(options: PositionOptions): PositionResult;
119
+ /**
120
+ * Below/above placement for trigger-anchored `<dialog>` popups.
121
+ *
122
+ * Unlike findBestPosition (12-placement engine for non-modal floats), these
123
+ * popups only ever open below or above their trigger, and their CSS anchors
124
+ * with `top:` when below but `bottom:` when above — so both conventions are
125
+ * returned and the caller picks by `below`.
126
+ */
127
+ export interface AnchoredPopupOptions {
128
+ anchorRect: DOMRect | ElementRect;
129
+ popupWidth: number;
130
+ popupHeight: number;
131
+ /** Gap between trigger and popup edge (px, default 4) */
132
+ gap?: number;
133
+ /** Minimum distance from viewport edges (px, default 8) */
134
+ padding?: number;
135
+ }
136
+ export interface AnchoredPopupPosition {
137
+ /** Popup left edge, viewport coords, clamped into view */
138
+ x: number;
139
+ /** CSS `top` value when below */
140
+ topY: number;
141
+ /** CSS `bottom` value when above */
142
+ bottomY: number;
143
+ below: boolean;
144
+ }
145
+ export declare function computeAnchoredPosition(o: AnchoredPopupOptions): AnchoredPopupPosition;
119
146
  //# sourceMappingURL=positioning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../../src/utils/positioning.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,WAAW,GAAG,KAAK,GAAG,SAAS,GAC/B,aAAa,GAAG,OAAO,GAAG,WAAW,GACrC,cAAc,GAAG,QAAQ,GAAG,YAAY,GACxC,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;IAC5B,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AAMnC;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,CAuDzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;aAI1B,SAAS,EAAE;aAIX,SAAS,EAAE;cAIX,SAAS,EAAE;CACjB,CAAC;AA0HF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAuCzE"}
1
+ {"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../../src/utils/positioning.ts"],"names":[],"mappings":"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"}
@@ -219,7 +219,24 @@ export function findBestPosition(options) {
219
219
  }
220
220
  return bestPosition;
221
221
  }
222
- // ============================================================================
223
- // Auto-Update Functionality
224
- // ============================================================================
222
+ export function computeAnchoredPosition(o) {
223
+ const gap = o.gap ?? 4;
224
+ const padding = o.padding ?? 8;
225
+ const vw = window.innerWidth;
226
+ const vh = window.innerHeight;
227
+ const spaceBelow = vh - o.anchorRect.bottom;
228
+ const spaceAbove = o.anchorRect.top;
229
+ // Below when it fits — and when neither side fits, the side with MORE room
230
+ // instead of blindly flipping up (a trigger near the viewport top used to
231
+ // clip the popup off-screen).
232
+ const below = spaceBelow >= o.popupHeight + gap + padding || spaceBelow >= spaceAbove;
233
+ // Anchor to the trigger's left edge, clamped into the viewport
234
+ const x = Math.max(padding, Math.min(o.anchorRect.left, vw - o.popupWidth - padding));
235
+ return {
236
+ x,
237
+ topY: o.anchorRect.bottom + gap,
238
+ bottomY: vh - o.anchorRect.top + gap,
239
+ below,
240
+ };
241
+ }
225
242
  //# sourceMappingURL=positioning.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"positioning.js","sourceRoot":"","sources":["../../src/utils/positioning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"positioning.js","sourceRoot":"","sources":["../../src/utils/positioning.ts"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -4,5 +4,5 @@
4
4
  * This is automatically synced with package.json during build.
5
5
  * Use `npm version` to bump versions.
6
6
  */
7
- export declare const VERSION = "1.0.0-TC30";
7
+ export declare const VERSION = "1.0.0-TC32";
8
8
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -7,5 +7,5 @@
7
7
  * This is automatically synced with package.json during build.
8
8
  * Use `npm version` to bump versions.
9
9
  */
10
- export const VERSION = '1.0.0-TC30';
10
+ export const VERSION = '1.0.0-TC32';
11
11
  //# sourceMappingURL=version.js.map