tyrell-components 1.0.0-RC13 → 1.0.0-RC15

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 (358) hide show
  1. package/README.md +10 -2
  2. package/css/tyrell-theme.css +192 -180
  3. package/css/tyrell.css +23 -0
  4. package/dist/tyrell-colors-static.css +1 -316
  5. package/dist/tyrell-theme.css +1 -1454
  6. package/dist/tyrell.css +1 -1371
  7. package/dist/tyrell.js +1 -1
  8. package/lib/base/ty-component.d.ts +20 -10
  9. package/lib/base/ty-component.js +196 -319
  10. package/lib/components/button.d.ts +3 -17
  11. package/lib/components/button.js +261 -295
  12. package/lib/components/calendar-month.d.ts +4 -50
  13. package/lib/components/calendar-month.js +443 -582
  14. package/lib/components/calendar-navigation.d.ts +3 -48
  15. package/lib/components/calendar-navigation.js +239 -362
  16. package/lib/components/calendar.d.ts +8 -83
  17. package/lib/components/calendar.js +616 -829
  18. package/lib/components/checkbox.d.ts +5 -72
  19. package/lib/components/checkbox.js +273 -416
  20. package/lib/components/copy.d.ts +4 -57
  21. package/lib/components/copy.js +280 -397
  22. package/lib/components/date-picker.d.ts +21 -163
  23. package/lib/components/date-picker.js +1143 -1674
  24. package/lib/components/file-upload.d.ts +9 -15
  25. package/lib/components/file-upload.js +404 -426
  26. package/lib/components/icon.d.ts +3 -24
  27. package/lib/components/icon.js +141 -230
  28. package/lib/components/input.d.ts +8 -108
  29. package/lib/components/input.js +593 -784
  30. package/lib/components/modal.d.ts +17 -26
  31. package/lib/components/modal.js +340 -484
  32. package/lib/components/option.d.ts +2 -9
  33. package/lib/components/option.js +168 -216
  34. package/lib/components/popup.d.ts +2 -17
  35. package/lib/components/popup.js +249 -380
  36. package/lib/components/radio.d.ts +5 -25
  37. package/lib/components/radio.js +407 -461
  38. package/lib/components/resize-observer.d.ts +3 -30
  39. package/lib/components/resize-observer.js +69 -103
  40. package/lib/components/scroll-container.d.ts +2 -12
  41. package/lib/components/scroll-container.js +293 -338
  42. package/lib/components/select.d.ts +87 -159
  43. package/lib/components/select.js +1609 -2090
  44. package/lib/components/selected-tags.d.ts +5 -48
  45. package/lib/components/selected-tags.js +188 -276
  46. package/lib/components/step.d.ts +1 -6
  47. package/lib/components/step.js +62 -68
  48. package/lib/components/switch.d.ts +1 -12
  49. package/lib/components/switch.js +214 -247
  50. package/lib/components/tab.d.ts +1 -6
  51. package/lib/components/tab.js +62 -69
  52. package/lib/components/tabs.d.ts +6 -63
  53. package/lib/components/tabs.js +545 -777
  54. package/lib/components/tag.d.ts +3 -37
  55. package/lib/components/tag.js +236 -335
  56. package/lib/components/textarea.d.ts +7 -87
  57. package/lib/components/textarea.js +457 -627
  58. package/lib/components/tooltip.d.ts +3 -11
  59. package/lib/components/tooltip.js +307 -443
  60. package/lib/components/wizard.d.ts +6 -54
  61. package/lib/components/wizard.js +405 -618
  62. package/lib/icons/fontawesome/brands.d.ts +0 -1
  63. package/lib/icons/fontawesome/brands.js +0 -8
  64. package/lib/icons/fontawesome/regular.d.ts +0 -1
  65. package/lib/icons/fontawesome/regular.js +0 -8
  66. package/lib/icons/fontawesome/solid.d.ts +0 -1
  67. package/lib/icons/fontawesome/solid.js +0 -8
  68. package/lib/icons/heroicons/micro.d.ts +0 -1
  69. package/lib/icons/heroicons/micro.js +392 -400
  70. package/lib/icons/heroicons/mini.d.ts +0 -1
  71. package/lib/icons/heroicons/mini.js +382 -390
  72. package/lib/icons/heroicons/outline.d.ts +0 -1
  73. package/lib/icons/heroicons/outline.js +337 -345
  74. package/lib/icons/heroicons/solid.d.ts +0 -1
  75. package/lib/icons/heroicons/solid.js +407 -415
  76. package/lib/icons/lucide.d.ts +0 -1
  77. package/lib/icons/lucide.js +24479 -26351
  78. package/lib/icons/material/filled.d.ts +0 -1
  79. package/lib/icons/material/filled.js +9653 -9663
  80. package/lib/icons/material/outlined.d.ts +0 -1
  81. package/lib/icons/material/outlined.js +10271 -10281
  82. package/lib/icons/material/round.d.ts +0 -1
  83. package/lib/icons/material/round.js +10495 -10505
  84. package/lib/icons/material/sharp.d.ts +0 -1
  85. package/lib/icons/material/sharp.js +9905 -9915
  86. package/lib/icons/material/two-tone.d.ts +0 -1
  87. package/lib/icons/material/two-tone.js +12792 -12802
  88. package/lib/index.d.ts +0 -1
  89. package/lib/index.js +21 -41
  90. package/lib/styles/button.d.ts +2 -20
  91. package/lib/styles/button.js +202 -404
  92. package/lib/styles/calendar-month.d.ts +1 -5
  93. package/lib/styles/calendar-month.js +127 -244
  94. package/lib/styles/calendar-navigation.d.ts +2 -6
  95. package/lib/styles/calendar-navigation.js +64 -104
  96. package/lib/styles/calendar.d.ts +1 -2
  97. package/lib/styles/calendar.js +9 -22
  98. package/lib/styles/checkbox.d.ts +0 -1
  99. package/lib/styles/checkbox.js +45 -94
  100. package/lib/styles/copy.d.ts +0 -1
  101. package/lib/styles/copy.js +67 -106
  102. package/lib/styles/custom-scrollbar.d.ts +1 -2
  103. package/lib/styles/custom-scrollbar.js +80 -115
  104. package/lib/styles/date-picker.d.ts +1 -5
  105. package/lib/styles/date-picker.js +261 -335
  106. package/lib/styles/field-size.d.ts +6 -0
  107. package/lib/styles/field-size.js +91 -0
  108. package/lib/styles/file-upload.d.ts +1 -2
  109. package/lib/styles/file-upload.js +143 -188
  110. package/lib/styles/icon.d.ts +2 -6
  111. package/lib/styles/icon.js +92 -170
  112. package/lib/styles/input.d.ts +1 -6
  113. package/lib/styles/input.js +125 -290
  114. package/lib/styles/modal.d.ts +1 -2
  115. package/lib/styles/modal.js +71 -108
  116. package/lib/styles/option.d.ts +2 -6
  117. package/lib/styles/option.js +49 -64
  118. package/lib/styles/popup.d.ts +1 -2
  119. package/lib/styles/popup.js +42 -77
  120. package/lib/styles/radio.d.ts +0 -1
  121. package/lib/styles/radio.js +69 -110
  122. package/lib/styles/resize-observer.d.ts +1 -2
  123. package/lib/styles/resize-observer.js +2 -12
  124. package/lib/styles/scroll-container.d.ts +1 -2
  125. package/lib/styles/scroll-container.js +100 -149
  126. package/lib/styles/select-base.d.ts +0 -1
  127. package/lib/styles/select-base.js +597 -785
  128. package/lib/styles/select.d.ts +1 -2
  129. package/lib/styles/select.js +140 -236
  130. package/lib/styles/step.d.ts +1 -2
  131. package/lib/styles/step.js +22 -33
  132. package/lib/styles/switch.d.ts +0 -1
  133. package/lib/styles/switch.js +34 -73
  134. package/lib/styles/tab.d.ts +1 -2
  135. package/lib/styles/tab.js +22 -34
  136. package/lib/styles/tabs.d.ts +3 -11
  137. package/lib/styles/tabs.js +190 -222
  138. package/lib/styles/tag.d.ts +1 -5
  139. package/lib/styles/tag.js +136 -218
  140. package/lib/styles/textarea.d.ts +1 -2
  141. package/lib/styles/textarea.js +210 -319
  142. package/lib/styles/tooltip.d.ts +0 -1
  143. package/lib/styles/tooltip.js +3 -13
  144. package/lib/styles/wizard.d.ts +5 -21
  145. package/lib/styles/wizard.js +170 -306
  146. package/lib/types/common.d.ts +2 -2
  147. package/lib/types/common.js +6 -17
  148. package/lib/utils/calendar-utils.d.ts +4 -21
  149. package/lib/utils/calendar-utils.js +100 -273
  150. package/lib/utils/custom-scrollbar.d.ts +6 -20
  151. package/lib/utils/custom-scrollbar.js +273 -317
  152. package/lib/utils/flavor-sheet.d.ts +0 -1
  153. package/lib/utils/flavor-sheet.js +14 -37
  154. package/lib/utils/icon-registry.d.ts +0 -2
  155. package/lib/utils/icon-registry.js +137 -243
  156. package/lib/utils/icons.d.ts +0 -1
  157. package/lib/utils/icons.js +0 -9
  158. package/lib/utils/loader-registry.d.ts +0 -1
  159. package/lib/utils/loader-registry.js +3 -35
  160. package/lib/utils/locale.d.ts +2 -23
  161. package/lib/utils/locale.js +34 -120
  162. package/lib/utils/mobile.d.ts +0 -1
  163. package/lib/utils/mobile.js +1 -18
  164. package/lib/utils/number-format.d.ts +6 -3
  165. package/lib/utils/number-format.js +54 -110
  166. package/lib/utils/positioning.d.ts +50 -7
  167. package/lib/utils/positioning.js +224 -234
  168. package/lib/utils/property-capture.d.ts +5 -27
  169. package/lib/utils/property-capture.js +36 -144
  170. package/lib/utils/property-manager.d.ts +0 -1
  171. package/lib/utils/property-manager.js +126 -196
  172. package/lib/utils/resize-observer.d.ts +0 -1
  173. package/lib/utils/resize-observer.js +23 -59
  174. package/lib/utils/scroll-lock.d.ts +4 -11
  175. package/lib/utils/scroll-lock.js +65 -172
  176. package/lib/utils/styles.d.ts +0 -1
  177. package/lib/utils/styles.js +17 -41
  178. package/lib/version.d.ts +1 -2
  179. package/lib/version.js +1 -11
  180. package/package.json +4 -4
  181. package/lib/base/ty-component.d.ts.map +0 -1
  182. package/lib/base/ty-component.js.map +0 -1
  183. package/lib/components/button.d.ts.map +0 -1
  184. package/lib/components/button.js.map +0 -1
  185. package/lib/components/calendar-month.d.ts.map +0 -1
  186. package/lib/components/calendar-month.js.map +0 -1
  187. package/lib/components/calendar-navigation.d.ts.map +0 -1
  188. package/lib/components/calendar-navigation.js.map +0 -1
  189. package/lib/components/calendar.d.ts.map +0 -1
  190. package/lib/components/calendar.js.map +0 -1
  191. package/lib/components/checkbox.d.ts.map +0 -1
  192. package/lib/components/checkbox.js.map +0 -1
  193. package/lib/components/copy.d.ts.map +0 -1
  194. package/lib/components/copy.js.map +0 -1
  195. package/lib/components/date-picker.d.ts.map +0 -1
  196. package/lib/components/date-picker.js.map +0 -1
  197. package/lib/components/file-upload.d.ts.map +0 -1
  198. package/lib/components/file-upload.js.map +0 -1
  199. package/lib/components/icon.d.ts.map +0 -1
  200. package/lib/components/icon.js.map +0 -1
  201. package/lib/components/input.d.ts.map +0 -1
  202. package/lib/components/input.js.map +0 -1
  203. package/lib/components/modal.d.ts.map +0 -1
  204. package/lib/components/modal.js.map +0 -1
  205. package/lib/components/option.d.ts.map +0 -1
  206. package/lib/components/option.js.map +0 -1
  207. package/lib/components/popup.d.ts.map +0 -1
  208. package/lib/components/popup.js.map +0 -1
  209. package/lib/components/radio.d.ts.map +0 -1
  210. package/lib/components/radio.js.map +0 -1
  211. package/lib/components/resize-observer.d.ts.map +0 -1
  212. package/lib/components/resize-observer.js.map +0 -1
  213. package/lib/components/scroll-container.d.ts.map +0 -1
  214. package/lib/components/scroll-container.js.map +0 -1
  215. package/lib/components/select.d.ts.map +0 -1
  216. package/lib/components/select.js.map +0 -1
  217. package/lib/components/selected-tags.d.ts.map +0 -1
  218. package/lib/components/selected-tags.js.map +0 -1
  219. package/lib/components/step.d.ts.map +0 -1
  220. package/lib/components/step.js.map +0 -1
  221. package/lib/components/switch.d.ts.map +0 -1
  222. package/lib/components/switch.js.map +0 -1
  223. package/lib/components/tab.d.ts.map +0 -1
  224. package/lib/components/tab.js.map +0 -1
  225. package/lib/components/tabs.d.ts.map +0 -1
  226. package/lib/components/tabs.js.map +0 -1
  227. package/lib/components/tag.d.ts.map +0 -1
  228. package/lib/components/tag.js.map +0 -1
  229. package/lib/components/textarea.d.ts.map +0 -1
  230. package/lib/components/textarea.js.map +0 -1
  231. package/lib/components/tooltip.d.ts.map +0 -1
  232. package/lib/components/tooltip.js.map +0 -1
  233. package/lib/components/wizard.d.ts.map +0 -1
  234. package/lib/components/wizard.js.map +0 -1
  235. package/lib/icons/fontawesome/brands.d.ts.map +0 -1
  236. package/lib/icons/fontawesome/brands.js.map +0 -1
  237. package/lib/icons/fontawesome/regular.d.ts.map +0 -1
  238. package/lib/icons/fontawesome/regular.js.map +0 -1
  239. package/lib/icons/fontawesome/solid.d.ts.map +0 -1
  240. package/lib/icons/fontawesome/solid.js.map +0 -1
  241. package/lib/icons/heroicons/micro.d.ts.map +0 -1
  242. package/lib/icons/heroicons/micro.js.map +0 -1
  243. package/lib/icons/heroicons/mini.d.ts.map +0 -1
  244. package/lib/icons/heroicons/mini.js.map +0 -1
  245. package/lib/icons/heroicons/outline.d.ts.map +0 -1
  246. package/lib/icons/heroicons/outline.js.map +0 -1
  247. package/lib/icons/heroicons/solid.d.ts.map +0 -1
  248. package/lib/icons/heroicons/solid.js.map +0 -1
  249. package/lib/icons/lucide.d.ts.map +0 -1
  250. package/lib/icons/lucide.js.map +0 -1
  251. package/lib/icons/material/filled.d.ts.map +0 -1
  252. package/lib/icons/material/filled.js.map +0 -1
  253. package/lib/icons/material/outlined.d.ts.map +0 -1
  254. package/lib/icons/material/outlined.js.map +0 -1
  255. package/lib/icons/material/round.d.ts.map +0 -1
  256. package/lib/icons/material/round.js.map +0 -1
  257. package/lib/icons/material/sharp.d.ts.map +0 -1
  258. package/lib/icons/material/sharp.js.map +0 -1
  259. package/lib/icons/material/two-tone.d.ts.map +0 -1
  260. package/lib/icons/material/two-tone.js.map +0 -1
  261. package/lib/index.d.ts.map +0 -1
  262. package/lib/index.js.map +0 -1
  263. package/lib/styles/button.d.ts.map +0 -1
  264. package/lib/styles/button.js.map +0 -1
  265. package/lib/styles/calendar-month.d.ts.map +0 -1
  266. package/lib/styles/calendar-month.js.map +0 -1
  267. package/lib/styles/calendar-navigation.d.ts.map +0 -1
  268. package/lib/styles/calendar-navigation.js.map +0 -1
  269. package/lib/styles/calendar.d.ts.map +0 -1
  270. package/lib/styles/calendar.js.map +0 -1
  271. package/lib/styles/checkbox.d.ts.map +0 -1
  272. package/lib/styles/checkbox.js.map +0 -1
  273. package/lib/styles/copy.d.ts.map +0 -1
  274. package/lib/styles/copy.js.map +0 -1
  275. package/lib/styles/custom-scrollbar.d.ts.map +0 -1
  276. package/lib/styles/custom-scrollbar.js.map +0 -1
  277. package/lib/styles/date-picker.d.ts.map +0 -1
  278. package/lib/styles/date-picker.js.map +0 -1
  279. package/lib/styles/file-upload.d.ts.map +0 -1
  280. package/lib/styles/file-upload.js.map +0 -1
  281. package/lib/styles/icon.d.ts.map +0 -1
  282. package/lib/styles/icon.js.map +0 -1
  283. package/lib/styles/input.d.ts.map +0 -1
  284. package/lib/styles/input.js.map +0 -1
  285. package/lib/styles/modal.d.ts.map +0 -1
  286. package/lib/styles/modal.js.map +0 -1
  287. package/lib/styles/multiselect.d.ts +0 -8
  288. package/lib/styles/multiselect.d.ts.map +0 -1
  289. package/lib/styles/multiselect.js +0 -849
  290. package/lib/styles/multiselect.js.map +0 -1
  291. package/lib/styles/option.d.ts.map +0 -1
  292. package/lib/styles/option.js.map +0 -1
  293. package/lib/styles/popup.d.ts.map +0 -1
  294. package/lib/styles/popup.js.map +0 -1
  295. package/lib/styles/radio.d.ts.map +0 -1
  296. package/lib/styles/radio.js.map +0 -1
  297. package/lib/styles/resize-observer.d.ts.map +0 -1
  298. package/lib/styles/resize-observer.js.map +0 -1
  299. package/lib/styles/scroll-container.d.ts.map +0 -1
  300. package/lib/styles/scroll-container.js.map +0 -1
  301. package/lib/styles/select-base.d.ts.map +0 -1
  302. package/lib/styles/select-base.js.map +0 -1
  303. package/lib/styles/select.d.ts.map +0 -1
  304. package/lib/styles/select.js.map +0 -1
  305. package/lib/styles/step.d.ts.map +0 -1
  306. package/lib/styles/step.js.map +0 -1
  307. package/lib/styles/switch.d.ts.map +0 -1
  308. package/lib/styles/switch.js.map +0 -1
  309. package/lib/styles/tab.d.ts.map +0 -1
  310. package/lib/styles/tab.js.map +0 -1
  311. package/lib/styles/tabs.d.ts.map +0 -1
  312. package/lib/styles/tabs.js.map +0 -1
  313. package/lib/styles/tag.d.ts.map +0 -1
  314. package/lib/styles/tag.js.map +0 -1
  315. package/lib/styles/textarea.d.ts.map +0 -1
  316. package/lib/styles/textarea.js.map +0 -1
  317. package/lib/styles/tooltip.d.ts.map +0 -1
  318. package/lib/styles/tooltip.js.map +0 -1
  319. package/lib/styles/wizard.d.ts.map +0 -1
  320. package/lib/styles/wizard.js.map +0 -1
  321. package/lib/types/common.d.ts.map +0 -1
  322. package/lib/types/common.js.map +0 -1
  323. package/lib/utils/calendar-utils.d.ts.map +0 -1
  324. package/lib/utils/calendar-utils.js.map +0 -1
  325. package/lib/utils/custom-scrollbar.d.ts.map +0 -1
  326. package/lib/utils/custom-scrollbar.js.map +0 -1
  327. package/lib/utils/flavor-sheet.d.ts.map +0 -1
  328. package/lib/utils/flavor-sheet.js.map +0 -1
  329. package/lib/utils/icon-registry.d.ts.map +0 -1
  330. package/lib/utils/icon-registry.js.map +0 -1
  331. package/lib/utils/icons.d.ts.map +0 -1
  332. package/lib/utils/icons.js.map +0 -1
  333. package/lib/utils/loader-registry.d.ts.map +0 -1
  334. package/lib/utils/loader-registry.js.map +0 -1
  335. package/lib/utils/locale.d.ts.map +0 -1
  336. package/lib/utils/locale.js.map +0 -1
  337. package/lib/utils/mobile.d.ts.map +0 -1
  338. package/lib/utils/mobile.js.map +0 -1
  339. package/lib/utils/number-format.d.ts.map +0 -1
  340. package/lib/utils/number-format.js.map +0 -1
  341. package/lib/utils/parse-boolean.d.ts +0 -39
  342. package/lib/utils/parse-boolean.d.ts.map +0 -1
  343. package/lib/utils/parse-boolean.js +0 -58
  344. package/lib/utils/parse-boolean.js.map +0 -1
  345. package/lib/utils/positioning.d.ts.map +0 -1
  346. package/lib/utils/positioning.js.map +0 -1
  347. package/lib/utils/property-capture.d.ts.map +0 -1
  348. package/lib/utils/property-capture.js.map +0 -1
  349. package/lib/utils/property-manager.d.ts.map +0 -1
  350. package/lib/utils/property-manager.js.map +0 -1
  351. package/lib/utils/resize-observer.d.ts.map +0 -1
  352. package/lib/utils/resize-observer.js.map +0 -1
  353. package/lib/utils/scroll-lock.d.ts.map +0 -1
  354. package/lib/utils/scroll-lock.js.map +0 -1
  355. package/lib/utils/styles.d.ts.map +0 -1
  356. package/lib/utils/styles.js.map +0 -1
  357. package/lib/version.d.ts.map +0 -1
  358. package/lib/version.js.map +0 -1
@@ -1,163 +1,122 @@
1
- /**
2
- * Radio Group + Radio Styles
3
- *
4
- * ty-radio-group: optional label + vertical/horizontal stack of radios + error message
5
- * ty-radio: circle with inner dot when checked
6
- */
7
1
  import { FLAVORS } from "../types/common.js";
8
2
  import { inputStyles } from "./input.js";
9
- /* Flavor rules only set --radio-color (checked border + inner dot); base
10
- rules below consume it. Doubles as the per-instance override API:
11
- `ty-radio { --radio-color: … }`. Fallback flavor `fb` is used for custom
12
- flavors so missing tokens degrade to neutral. */
13
3
  const radioFlavor = (f, fb) => {
14
- const tok = (s) => fb
15
- ? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
16
- : `var(--ty-color-${f}${s})`;
17
- return `
4
+ const tok = (s) => fb
5
+ ? `var(--ty-color-${f}${s}, var(--ty-color-${fb}${s}))`
6
+ : `var(--ty-color-${f}${s})`;
7
+ return `
18
8
  :host([flavor="${f}"]) { --radio-color: ${tok("")}; }
19
9
  :host([flavor="${f}+"]) { --radio-color: ${tok("-strong")}; }
20
10
  :host([flavor="${f}-"]) { --radio-color: ${tok("-soft")}; }
21
11
  `;
22
12
  };
23
- /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
24
13
  export const radioCustomFlavorCss = (base) => radioFlavor(base, "neutral");
25
14
  export const radioStyles = `
26
15
  ${inputStyles}
27
-
28
- /* Override input's :host. ty-radio is just the circle (inline);
29
- ty-radio-group is a form-field block. */
30
16
  :host(ty-radio) {
31
- display: inline-flex;
32
- width: auto;
33
- vertical-align: middle;
17
+ display: inline-flex;
18
+ width: auto;
19
+ vertical-align: middle;
34
20
  }
35
-
36
21
  :host(ty-radio-group) {
37
- display: block;
38
- width: 100%;
22
+ display: block;
23
+ width: 100%;
39
24
  }
40
-
41
- /* ===== RADIO GROUP ===== */
42
25
  .radio-group-container {
43
- display: flex;
44
- flex-direction: column;
45
- gap: 0.4rem;
46
- font-family: var(--ty-font-sans);
47
- color: var(--ty-color-text);
26
+ display: flex;
27
+ flex-direction: column;
28
+ gap: 0.4rem;
29
+ font-family: inherit;
30
+ color: var(--ty-color-text);
48
31
  }
49
-
50
32
  .radio-group-label {
51
- font-size: var(--ty-font-sm);
52
- line-height: var(--ty-leading-sm);
53
- font-weight: var(--ty-font-medium);
54
- color: var(--ty-color-text);
55
- display: flex;
56
- align-items: center;
57
- gap: 0.25rem;
58
- }
59
-
33
+ font-size: var(--ty-font-sm);
34
+ line-height: var(--ty-leading-sm);
35
+ font-weight: var(--ty-font-medium);
36
+ color: var(--ty-color-text);
37
+ display: flex;
38
+ align-items: center;
39
+ gap: 0.25rem;
40
+ }
60
41
  .radio-group-list {
61
- display: flex;
62
- gap: 0.6rem;
63
- align-items: flex-start;
42
+ display: flex;
43
+ gap: 0.6rem;
44
+ align-items: flex-start;
64
45
  }
65
-
66
46
  .radio-group-list.vertical {
67
- flex-direction: column;
68
- align-items: flex-start;
47
+ flex-direction: column;
48
+ align-items: flex-start;
69
49
  }
70
-
71
50
  .radio-group-list.horizontal {
72
- flex-direction: row;
73
- flex-wrap: wrap;
74
- align-items: center;
51
+ flex-direction: row;
52
+ flex-wrap: wrap;
53
+ align-items: center;
75
54
  }
76
-
77
55
  .radio-group-error {
78
- font-size: var(--ty-font-xs);
79
- line-height: var(--ty-leading-xs);
80
- color: var(--ty-color-danger);
56
+ font-size: var(--ty-font-xs);
57
+ line-height: var(--ty-leading-xs);
58
+ color: var(--ty-color-danger);
81
59
  }
82
-
83
60
  .radio-group-container .required-icon {
84
- width: 0.65em;
85
- height: 0.65em;
86
- color: var(--ty-color-danger);
61
+ width: 0.65em;
62
+ height: 0.65em;
63
+ color: var(--ty-color-danger);
87
64
  }
88
65
  .radio-group-container .required-icon svg {
89
- width: 100%;
90
- height: 100%;
66
+ width: 100%;
67
+ height: 100%;
91
68
  }
92
-
93
- /* ===== RADIO ITEM (just the circle) ===== */
94
69
  .radio-container {
95
- display: inline-block;
96
- cursor: pointer;
97
- user-select: none;
98
- outline: none;
99
- vertical-align: middle;
70
+ display: inline-block;
71
+ cursor: pointer;
72
+ user-select: none;
73
+ outline: none;
74
+ vertical-align: middle;
100
75
  }
101
-
102
76
  .radio-container.disabled {
103
- cursor: not-allowed;
104
- opacity: 0.55;
77
+ cursor: not-allowed;
78
+ opacity: 0.55;
105
79
  }
106
-
107
80
  .radio-container:focus-visible .radio-circle,
108
81
  .radio-container.focused .radio-circle {
109
- box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);
82
+ box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);
110
83
  }
111
-
112
84
  .radio-circle {
113
- position: relative;
114
- flex-shrink: 0;
115
- width: 18px;
116
- height: 18px;
117
- border-radius: 50%;
118
- border: 2px solid var(--ty-input-border);
119
- background: var(--ty-input-bg);
120
- box-sizing: border-box;
121
- transition: var(--ty-local-transition, border-color 0.15s ease-in-out);
122
- }
123
-
124
- /* Default (no flavor attribute) is primary — defaults don't reflect to the
125
- host attribute, so the base rules' fallback carries the default look. */
85
+ position: relative;
86
+ flex-shrink: 0;
87
+ width: 18px;
88
+ height: 18px;
89
+ border-radius: 50%;
90
+ border: 2px solid var(--ty-input-border);
91
+ background: var(--ty-input-bg);
92
+ box-sizing: border-box;
93
+ transition: var(--ty-local-transition, border-color 0.15s ease-in-out);
94
+ }
126
95
  .radio-circle::after {
127
- content: "";
128
- position: absolute;
129
- top: 50%;
130
- left: 50%;
131
- width: 8px;
132
- height: 8px;
133
- border-radius: 50%;
134
- background: var(--radio-color, var(--ty-color-primary));
135
- transform: translate(-50%, -50%) scale(0);
136
- transition: transform 0.15s ease-in-out;
137
- }
138
-
96
+ content: "";
97
+ position: absolute;
98
+ top: 50%;
99
+ left: 50%;
100
+ width: 8px;
101
+ height: 8px;
102
+ border-radius: 50%;
103
+ background: var(--radio-color, var(--ty-color-primary));
104
+ transform: translate(-50%, -50%) scale(0);
105
+ transition: transform 0.15s ease-in-out;
106
+ }
139
107
  .radio-container[aria-checked="true"] .radio-circle {
140
- border-color: var(--radio-color, var(--ty-color-primary));
108
+ border-color: var(--radio-color, var(--ty-color-primary));
141
109
  }
142
-
143
110
  .radio-container[aria-checked="true"] .radio-circle::after {
144
- transform: translate(-50%, -50%) scale(1);
111
+ transform: translate(-50%, -50%) scale(1);
145
112
  }
146
-
147
- /* Size variants */
148
113
  .radio-container.xs .radio-circle { width: 14px; height: 14px; }
149
114
  .radio-container.xs .radio-circle::after { width: 6px; height: 6px; }
150
-
151
115
  .radio-container.sm .radio-circle { width: 16px; height: 16px; }
152
116
  .radio-container.sm .radio-circle::after { width: 7px; height: 7px; }
153
-
154
117
  .radio-container.lg .radio-circle { width: 22px; height: 22px; }
155
118
  .radio-container.lg .radio-circle::after { width: 10px; height: 10px; }
156
-
157
119
  .radio-container.xl .radio-circle { width: 26px; height: 26px; }
158
120
  .radio-container.xl .radio-circle::after { width: 12px; height: 12px; }
159
-
160
- /* Flavor variants — set --radio-color, consumed by the base rules above */
161
121
  ${FLAVORS.map((f) => radioFlavor(f)).join("")}
162
122
  `;
163
- //# sourceMappingURL=radio.js.map
@@ -2,5 +2,4 @@
2
2
  * TyResizeObserver styles
3
3
  * Minimal styling - just ensures component participates in layout
4
4
  */
5
- export declare const resizeObserverStyles = "\n:host {\n /* Default to block display, user can override */\n display: block;\n /* Ensure the component can participate in layout */\n position: relative;\n}\n\n/* Slot content styling */\n::slotted(*) {\n /* No default styling - preserve natural layout */\n}\n";
6
- //# sourceMappingURL=resize-observer.d.ts.map
5
+ export declare const resizeObserverStyles = "\n:host {\n /* Default to block display, user can override */\n display: block;\n position: relative;\n}\n\n::slotted(*) {\n /* No default styling - preserve natural layout */\n}\n";
@@ -1,18 +1,8 @@
1
- /**
2
- * TyResizeObserver styles
3
- * Minimal styling - just ensures component participates in layout
4
- */
5
1
  export const resizeObserverStyles = `
6
2
  :host {
7
- /* Default to block display, user can override */
8
- display: block;
9
- /* Ensure the component can participate in layout */
10
- position: relative;
3
+ display: block;
4
+ position: relative;
11
5
  }
12
-
13
- /* Slot content styling */
14
6
  ::slotted(*) {
15
- /* No default styling - preserve natural layout */
16
7
  }
17
8
  `;
18
- //# sourceMappingURL=resize-observer.js.map
@@ -2,5 +2,4 @@
2
2
  * TyScrollContainer styles
3
3
  * Component-specific styles + shared custom scrollbar styles
4
4
  */
5
- export declare const scrollContainerStyles = "\n:host {\n display: block;\n position: relative;\n overflow: hidden;\n}\n\n.scroll-wrapper {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Allow horizontal scrolling when enabled */\n:host([overflow-x]) .scroll-wrapper {\n overflow-x: auto;\n}\n\n:host([max-height]) .scroll-wrapper {\n max-height: var(--scroll-max-height);\n}\n\n/* ===================================== */\n/* hide-scrollbar: hides native, no custom */\n/* ===================================== */\n\n:host([hide-scrollbar]) .scroll-wrapper {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n:host([hide-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: none;\n}\n\n/* scroll-anchoring: we manage scroll position in JS, so turn off the browser's\n native scroll anchoring to avoid double-compensation. */\n:host([scroll-anchoring]) .scroll-wrapper {\n overflow-anchor: none;\n}\n\n/* ===================================== */\n/* custom-scrollbar: hides native */\n/* ===================================== */\n\n:host([custom-scrollbar]) .scroll-wrapper {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: none;\n}\n\n/* Show scrollbar tracks on host hover */\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {\n opacity: 1;\n}\n\n/* Corner gap when both axes are present */\n:host([custom-scrollbar][overflow-x]) .ty-scrollbar-track-y {\n bottom: var(--ty-scrollbar-width, 8px);\n}\n\n:host([custom-scrollbar]) .ty-scrollbar-track-x {\n right: var(--ty-scrollbar-width, 8px);\n}\n\n/* ===================================== */\n/* Shadow Indicators */\n/* ===================================== */\n\n.shadow-overlay {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\n position: absolute;\n opacity: 0;\n transition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);\n pointer-events: none;\n}\n\n.shadow-top {\n top: -40px;\n left: 0;\n right: 0;\n height: 80px;\n background: var(--ty-scroll-shadow-top, radial-gradient(\n ellipse 100% 30% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(50% 0 0 0);\n}\n\n.shadow-bottom {\n bottom: -30px;\n left: 0;\n right: 0;\n height: 60px;\n background: var(--ty-scroll-shadow-bottom, radial-gradient(\n ellipse 100% 20% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 0 50% 0);\n}\n\n.shadow-left {\n left: -30px;\n top: 0;\n bottom: 0;\n width: 60px;\n background: var(--ty-scroll-shadow-left, radial-gradient(\n ellipse 30% 100% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 0 0 50%);\n}\n\n.shadow-right {\n right: -30px;\n top: 0;\n bottom: 0;\n width: 60px;\n background: var(--ty-scroll-shadow-right, radial-gradient(\n ellipse 30% 100% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 50% 0 0);\n}\n\n.shadow-left,\n.shadow-right {\n display: none;\n}\n\n:host([overflow-x]) .shadow-left,\n:host([overflow-x]) .shadow-right {\n display: block;\n}\n\n.shadow-top.visible,\n.shadow-bottom.visible,\n.shadow-left.visible,\n.shadow-right.visible {\n opacity: 1;\n}\n\n:host([shadow=\"false\"]) .shadow-overlay {\n display: none;\n}\n\n/* Touch devices - restore native scrollbar */\n@media (pointer: coarse) and (hover: none) {\n :host([custom-scrollbar]) .scroll-wrapper {\n scrollbar-width: thin;\n scrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;\n }\n :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: block;\n width: 4px;\n height: 4px;\n }\n :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {\n background: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));\n border-radius: 2px;\n }\n}\n\n/* Respect reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .shadow-top,\n .shadow-bottom,\n .shadow-left,\n .shadow-right {\n transition-duration: 0ms !important;\n }\n}\n\n/* Shared scrollbar styles */\n\n/* ===================================== */\n/* Custom Scrollbar - Vertical Track */\n/* ===================================== */\n\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/* ===================================== */\n/* Custom Scrollbar - Horizontal Track */\n/* ===================================== */\n\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/* ===================================== */\n/* Touch devices - hide custom scrollbar */\n/* ===================================== */\n\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/* Respect reduced motion */\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";
6
- //# sourceMappingURL=scroll-container.d.ts.map
5
+ export declare const scrollContainerStyles = "\n:host {\n display: block;\n position: relative;\n overflow: hidden;\n}\n\n.scroll-wrapper {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n:host([overflow-x]) .scroll-wrapper {\n overflow-x: auto;\n}\n\n:host([max-height]) .scroll-wrapper {\n max-height: var(--scroll-max-height);\n}\n\n/* hide-scrollbar: hides native, no custom */\n:host([hide-scrollbar]) .scroll-wrapper {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n:host([hide-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: none;\n}\n\n/* scroll-anchoring: we manage scroll position in JS, so turn off the browser's\n native scroll anchoring to avoid double-compensation. */\n:host([scroll-anchoring]) .scroll-wrapper {\n overflow-anchor: none;\n}\n\n/* custom-scrollbar: hides native */\n:host([custom-scrollbar]) .scroll-wrapper {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: none;\n}\n\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {\n opacity: 1;\n}\n\n/* Corner gap when both axes are present */\n:host([custom-scrollbar][overflow-x]) .ty-scrollbar-track-y {\n bottom: var(--ty-scrollbar-width, 8px);\n}\n\n:host([custom-scrollbar]) .ty-scrollbar-track-x {\n right: var(--ty-scrollbar-width, 8px);\n}\n\n.shadow-overlay {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\n position: absolute;\n opacity: 0;\n transition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);\n pointer-events: none;\n}\n\n.shadow-top {\n top: -40px;\n left: 0;\n right: 0;\n height: 80px;\n background: var(--ty-scroll-shadow-top, radial-gradient(\n ellipse 100% 30% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(50% 0 0 0);\n}\n\n.shadow-bottom {\n bottom: -30px;\n left: 0;\n right: 0;\n height: 60px;\n background: var(--ty-scroll-shadow-bottom, radial-gradient(\n ellipse 100% 20% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 0 50% 0);\n}\n\n.shadow-left {\n left: -30px;\n top: 0;\n bottom: 0;\n width: 60px;\n background: var(--ty-scroll-shadow-left, radial-gradient(\n ellipse 30% 100% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 0 0 50%);\n}\n\n.shadow-right {\n right: -30px;\n top: 0;\n bottom: 0;\n width: 60px;\n background: var(--ty-scroll-shadow-right, radial-gradient(\n ellipse 30% 100% at center,\n color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\n transparent,\n transparent\n ));\n clip-path: inset(0 50% 0 0);\n}\n\n.shadow-left,\n.shadow-right {\n display: none;\n}\n\n:host([overflow-x]) .shadow-left,\n:host([overflow-x]) .shadow-right {\n display: block;\n}\n\n.shadow-top.visible,\n.shadow-bottom.visible,\n.shadow-left.visible,\n.shadow-right.visible {\n opacity: 1;\n}\n\n:host([shadow=\"false\"]) .shadow-overlay {\n display: none;\n}\n\n/* Touch devices - restore native scrollbar */\n@media (pointer: coarse) and (hover: none) {\n :host([custom-scrollbar]) .scroll-wrapper {\n scrollbar-width: thin;\n scrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;\n }\n :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\n display: block;\n width: 4px;\n height: 4px;\n }\n :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {\n background: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));\n border-radius: 2px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .shadow-top,\n .shadow-bottom,\n .shadow-left,\n .shadow-right {\n transition-duration: 0ms !important;\n }\n}\n\n\n/* Vertical track */\n.ty-scrollbar-track-y {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-y.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-y.has-overflow:hover,\n.ty-scrollbar-track-y.has-overflow.scrolling,\n.ty-scrollbar-track-y.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-y::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-y:hover::before,\n.ty-scrollbar-track-y.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-y {\n position: absolute;\n right: 0;\n width: 100%;\n min-height: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: var(--ty-local-transition, background 0.15s ease-out);\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-y:hover,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-y:active,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* Horizontal track */\n.ty-scrollbar-track-x {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--ty-scrollbar-width, 8px);\n z-index: 3;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.25s ease-out;\n cursor: pointer;\n}\n\n.ty-scrollbar-track-x.has-overflow {\n pointer-events: auto;\n}\n\n.ty-scrollbar-track-x.has-overflow:hover,\n.ty-scrollbar-track-x.has-overflow.scrolling,\n.ty-scrollbar-track-x.dragging {\n opacity: 1;\n}\n\n.ty-scrollbar-track-x::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--ty-scrollbar-track, transparent);\n border-radius: var(--ty-scrollbar-radius, 4px);\n opacity: 0;\n transition: opacity 0.15s ease-out;\n}\n\n.ty-scrollbar-track-x:hover::before,\n.ty-scrollbar-track-x.dragging::before {\n opacity: 1;\n background: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n\n.ty-scrollbar-thumb-x {\n position: absolute;\n bottom: 0;\n height: 100%;\n min-width: var(--ty-scrollbar-thumb-min-height, 30px);\n background: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\n border-radius: var(--ty-scrollbar-radius, 4px);\n transition: var(--ty-local-transition, background 0.15s ease-out);\n box-sizing: border-box;\n border: 1px solid transparent;\n}\n\n.ty-scrollbar-thumb-x:hover,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n\n.ty-scrollbar-thumb-x:active,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\n background: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n\n/* Touch devices: hide the custom scrollbar */\n@media (pointer: coarse) and (hover: none) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x {\n display: none !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ty-scrollbar-track-y,\n .ty-scrollbar-track-x,\n .ty-scrollbar-thumb-y,\n .ty-scrollbar-thumb-x {\n transition-duration: 0ms !important;\n }\n}\n\n";
@@ -1,204 +1,155 @@
1
- /**
2
- * TyScrollContainer styles
3
- * Component-specific styles + shared custom scrollbar styles
4
- */
5
1
  import { customScrollbarStyles } from './custom-scrollbar.js';
6
2
  export const scrollContainerStyles = `
7
3
  :host {
8
- display: block;
9
- position: relative;
10
- overflow: hidden;
4
+ display: block;
5
+ position: relative;
6
+ overflow: hidden;
11
7
  }
12
-
13
8
  .scroll-wrapper {
14
- width: 100%;
15
- height: 100%;
16
- overflow-y: auto;
17
- overflow-x: hidden;
9
+ width: 100%;
10
+ height: 100%;
11
+ overflow-y: auto;
12
+ overflow-x: hidden;
18
13
  }
19
-
20
- /* Allow horizontal scrolling when enabled */
21
14
  :host([overflow-x]) .scroll-wrapper {
22
- overflow-x: auto;
15
+ overflow-x: auto;
23
16
  }
24
-
25
17
  :host([max-height]) .scroll-wrapper {
26
- max-height: var(--scroll-max-height);
18
+ max-height: var(--scroll-max-height);
27
19
  }
28
-
29
- /* ===================================== */
30
- /* hide-scrollbar: hides native, no custom */
31
- /* ===================================== */
32
-
33
20
  :host([hide-scrollbar]) .scroll-wrapper {
34
- scrollbar-width: none;
35
- -ms-overflow-style: none;
21
+ scrollbar-width: none;
22
+ -ms-overflow-style: none;
36
23
  }
37
-
38
24
  :host([hide-scrollbar]) .scroll-wrapper::-webkit-scrollbar {
39
- display: none;
25
+ display: none;
40
26
  }
41
-
42
- /* scroll-anchoring: we manage scroll position in JS, so turn off the browser's
43
- native scroll anchoring to avoid double-compensation. */
44
27
  :host([scroll-anchoring]) .scroll-wrapper {
45
- overflow-anchor: none;
28
+ overflow-anchor: none;
46
29
  }
47
-
48
- /* ===================================== */
49
- /* custom-scrollbar: hides native */
50
- /* ===================================== */
51
-
52
30
  :host([custom-scrollbar]) .scroll-wrapper {
53
- scrollbar-width: none;
54
- -ms-overflow-style: none;
31
+ scrollbar-width: none;
32
+ -ms-overflow-style: none;
55
33
  }
56
-
57
34
  :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {
58
- display: none;
35
+ display: none;
59
36
  }
60
-
61
- /* Show scrollbar tracks on host hover */
62
37
  :host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,
63
38
  :host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {
64
- opacity: 1;
39
+ opacity: 1;
65
40
  }
66
-
67
- /* Corner gap when both axes are present */
68
41
  :host([custom-scrollbar][overflow-x]) .ty-scrollbar-track-y {
69
- bottom: var(--ty-scrollbar-width, 8px);
42
+ bottom: var(--ty-scrollbar-width, 8px);
70
43
  }
71
-
72
44
  :host([custom-scrollbar]) .ty-scrollbar-track-x {
73
- right: var(--ty-scrollbar-width, 8px);
45
+ right: var(--ty-scrollbar-width, 8px);
74
46
  }
75
-
76
- /* ===================================== */
77
- /* Shadow Indicators */
78
- /* ===================================== */
79
-
80
47
  .shadow-overlay {
81
- position: absolute;
82
- inset: 0;
83
- pointer-events: none;
84
- z-index: 2;
48
+ position: absolute;
49
+ inset: 0;
50
+ pointer-events: none;
51
+ z-index: 2;
85
52
  }
86
-
87
53
  .shadow-top,
88
54
  .shadow-bottom,
89
55
  .shadow-left,
90
56
  .shadow-right {
91
- position: absolute;
92
- opacity: 0;
93
- transition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);
94
- pointer-events: none;
57
+ position: absolute;
58
+ opacity: 0;
59
+ transition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);
60
+ pointer-events: none;
95
61
  }
96
-
97
62
  .shadow-top {
98
- top: -40px;
99
- left: 0;
100
- right: 0;
101
- height: 80px;
102
- background: var(--ty-scroll-shadow-top, radial-gradient(
103
- ellipse 100% 30% at center,
104
- color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),
105
- transparent,
106
- transparent
107
- ));
108
- clip-path: inset(50% 0 0 0);
109
- }
110
-
63
+ top: -40px;
64
+ left: 0;
65
+ right: 0;
66
+ height: 80px;
67
+ background: var(--ty-scroll-shadow-top, radial-gradient(
68
+ ellipse 100% 30% at center,
69
+ color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),
70
+ transparent,
71
+ transparent
72
+ ));
73
+ clip-path: inset(50% 0 0 0);
74
+ }
111
75
  .shadow-bottom {
112
- bottom: -30px;
113
- left: 0;
114
- right: 0;
115
- height: 60px;
116
- background: var(--ty-scroll-shadow-bottom, radial-gradient(
117
- ellipse 100% 20% at center,
118
- color-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),
119
- transparent,
120
- transparent
121
- ));
122
- clip-path: inset(0 0 50% 0);
123
- }
124
-
76
+ bottom: -30px;
77
+ left: 0;
78
+ right: 0;
79
+ height: 60px;
80
+ background: var(--ty-scroll-shadow-bottom, radial-gradient(
81
+ ellipse 100% 20% at center,
82
+ color-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),
83
+ transparent,
84
+ transparent
85
+ ));
86
+ clip-path: inset(0 0 50% 0);
87
+ }
125
88
  .shadow-left {
126
- left: -30px;
127
- top: 0;
128
- bottom: 0;
129
- width: 60px;
130
- background: var(--ty-scroll-shadow-left, radial-gradient(
131
- ellipse 30% 100% at center,
132
- color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),
133
- transparent,
134
- transparent
135
- ));
136
- clip-path: inset(0 0 0 50%);
137
- }
138
-
89
+ left: -30px;
90
+ top: 0;
91
+ bottom: 0;
92
+ width: 60px;
93
+ background: var(--ty-scroll-shadow-left, radial-gradient(
94
+ ellipse 30% 100% at center,
95
+ color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),
96
+ transparent,
97
+ transparent
98
+ ));
99
+ clip-path: inset(0 0 0 50%);
100
+ }
139
101
  .shadow-right {
140
- right: -30px;
141
- top: 0;
142
- bottom: 0;
143
- width: 60px;
144
- background: var(--ty-scroll-shadow-right, radial-gradient(
145
- ellipse 30% 100% at center,
146
- color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),
147
- transparent,
148
- transparent
149
- ));
150
- clip-path: inset(0 50% 0 0);
151
- }
152
-
102
+ right: -30px;
103
+ top: 0;
104
+ bottom: 0;
105
+ width: 60px;
106
+ background: var(--ty-scroll-shadow-right, radial-gradient(
107
+ ellipse 30% 100% at center,
108
+ color-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),
109
+ transparent,
110
+ transparent
111
+ ));
112
+ clip-path: inset(0 50% 0 0);
113
+ }
153
114
  .shadow-left,
154
115
  .shadow-right {
155
- display: none;
116
+ display: none;
156
117
  }
157
-
158
118
  :host([overflow-x]) .shadow-left,
159
119
  :host([overflow-x]) .shadow-right {
160
- display: block;
120
+ display: block;
161
121
  }
162
-
163
122
  .shadow-top.visible,
164
123
  .shadow-bottom.visible,
165
124
  .shadow-left.visible,
166
125
  .shadow-right.visible {
167
- opacity: 1;
126
+ opacity: 1;
168
127
  }
169
-
170
128
  :host([shadow="false"]) .shadow-overlay {
171
- display: none;
129
+ display: none;
172
130
  }
173
-
174
- /* Touch devices - restore native scrollbar */
175
131
  @media (pointer: coarse) and (hover: none) {
176
- :host([custom-scrollbar]) .scroll-wrapper {
177
- scrollbar-width: thin;
178
- scrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;
179
- }
180
- :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {
181
- display: block;
182
- width: 4px;
183
- height: 4px;
184
- }
185
- :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {
186
- background: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));
187
- border-radius: 2px;
188
- }
189
- }
190
-
191
- /* Respect reduced motion */
132
+ :host([custom-scrollbar]) .scroll-wrapper {
133
+ scrollbar-width: thin;
134
+ scrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;
135
+ }
136
+ :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {
137
+ display: block;
138
+ width: 4px;
139
+ height: 4px;
140
+ }
141
+ :host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {
142
+ background: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));
143
+ border-radius: 2px;
144
+ }
145
+ }
192
146
  @media (prefers-reduced-motion: reduce) {
193
- .shadow-top,
194
- .shadow-bottom,
195
- .shadow-left,
196
- .shadow-right {
197
- transition-duration: 0ms !important;
198
- }
199
- }
200
-
201
- /* Shared scrollbar styles */
147
+ .shadow-top,
148
+ .shadow-bottom,
149
+ .shadow-left,
150
+ .shadow-right {
151
+ transition-duration: 0ms !important;
152
+ }
153
+ }
202
154
  ${customScrollbarStyles}
203
155
  `;
204
- //# sourceMappingURL=scroll-container.js.map
@@ -6,4 +6,3 @@
6
6
  /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
7
7
  export declare const selectCustomFlavorCss: (base: string) => string;
8
8
  export declare const selectBaseStyles: string;
9
- //# sourceMappingURL=select-base.d.ts.map