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,400 +1,326 @@
1
- /**
2
- * Date Picker Component Styles
3
- * PORTED FROM: cljs/ty/components/date_picker.css
4
- */
5
1
  import { FLAVORS } from "../types/common.js";
6
- /* Flavor rules only set --date-picker-accent (border), -accent-bold
7
- (hover/focus border), and -ring (focus shadow); the stub base rules
8
- consume them. Doubles as the per-instance override API. Neutral is
9
- skipped — the 'default' flavor is the unstyled --ty-date-picker-* chrome.
10
- Fallback flavor `fb` is used for custom flavors (suffixed tokens fall
11
- back to the custom base color, then neutral). */
2
+ import { fieldSizeVars } from "./field-size.js";
12
3
  const datePickerFlavor = (f, fb) => {
13
- const c = (s) => fb
14
- ? s
15
- ? `var(--ty-color-${f}${s}, var(--ty-color-${f}, var(--ty-color-${fb}${s})))`
16
- : `var(--ty-color-${f}, var(--ty-color-${fb}))`
17
- : s
18
- ? `var(--ty-color-${f}${s}, var(--ty-color-${f}))`
19
- : `var(--ty-color-${f})`;
20
- return `
4
+ const c = (s) => fb
5
+ ? s
6
+ ? `var(--ty-color-${f}${s}, var(--ty-color-${f}, var(--ty-color-${fb}${s})))`
7
+ : `var(--ty-color-${f}, var(--ty-color-${fb}))`
8
+ : s
9
+ ? `var(--ty-color-${f}${s}, var(--ty-color-${f}))`
10
+ : `var(--ty-color-${f})`;
11
+ return `
21
12
  :host([flavor="${f}"]) {
22
- --date-picker-accent: var(--ty-input-${f}-border, ${c("-soft")});
23
- --date-picker-accent-bold: ${c("")};
24
- --date-picker-ring: color-mix(in oklab, ${c("")} 15%, transparent);
13
+ --date-picker-accent: var(--ty-input-${f}-border, ${c("-soft")});
14
+ --date-picker-accent-bold: ${c("")};
15
+ --date-picker-ring: color-mix(in oklab, ${c("")} 15%, transparent);
25
16
  }
26
17
  :host([flavor="${f}+"]) {
27
- --date-picker-accent: ${c("")};
28
- --date-picker-accent-bold: ${c("-strong")};
29
- --date-picker-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
18
+ --date-picker-accent: ${c("")};
19
+ --date-picker-accent-bold: ${c("-strong")};
20
+ --date-picker-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
30
21
  }
31
22
  :host([flavor="${f}-"]) {
32
- --date-picker-accent: ${c("-faint")};
33
- --date-picker-accent-bold: ${c("-soft")};
34
- --date-picker-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
23
+ --date-picker-accent: ${c("-faint")};
24
+ --date-picker-accent-bold: ${c("-soft")};
25
+ --date-picker-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
35
26
  }
36
27
  `;
37
28
  };
38
- /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
39
29
  export const datePickerCustomFlavorCss = (base) => datePickerFlavor(base, "neutral");
40
30
  export const datePickerStyles = `
41
- /* Date Picker Component Styles */
31
+ ${fieldSizeVars}
42
32
  :host {
43
- display: block;
44
- width: auto;
45
- min-width: 200px;
46
- font-family: var(--ty-font-sans);
47
-
48
- /* ==========================================================================
49
- Theming Tokens — Date Picker Stub
50
- Thin shim over --ty-input-*. Override these to retheme just the date-picker
51
- trigger without affecting other inputs.
52
- ========================================================================== */
53
- --ty-date-picker-bg: var(--ty-input-bg);
54
- --ty-date-picker-color: var(--ty-input-color);
55
- --ty-date-picker-placeholder: var(--ty-input-placeholder);
56
- --ty-date-picker-border: var(--ty-input-border);
57
- --ty-date-picker-border-hover: var(--ty-input-border-hover);
58
- --ty-date-picker-border-focus: var(--ty-input-border-focus);
59
- --ty-date-picker-shadow-focus: var(--ty-input-shadow-focus);
60
- --ty-date-picker-disabled-bg: var(--ty-input-disabled-bg);
61
- --ty-date-picker-disabled-color: var(--ty-input-disabled-color);
62
- --ty-date-picker-radius: var(--ty-radius-md);
63
-
64
- /* ==========================================================================
65
- Theming Tokens — Calendar Popup Surface
66
- Shared with ty-calendar / ty-calendar-month theming.
67
- ========================================================================== */
68
- --ty-calendar-surface-bg: var(--ty-surface-floating);
69
- --ty-calendar-surface-border: var(--ty-input-border);
70
- --ty-calendar-surface-shadow: var(--ty-shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.1));
71
- --ty-calendar-surface-radius: var(--ty-radius-lg);
72
-
73
- /* ==========================================================================
74
- Theming Tokens — Time Section
75
- ========================================================================== */
76
- --ty-calendar-time-bg: transparent;
77
- --ty-calendar-time-border: var(--ty-border-faint);
78
- --ty-calendar-time-label-color: var(--ty-color-neutral);
79
- --ty-calendar-time-input-color: var(--ty-input-color);
80
- --ty-calendar-time-placeholder-color: var(--ty-input-placeholder);
81
- --ty-calendar-time-icon-color: var(--ty-color-neutral-soft);
82
- }
83
-
84
- /* Container structure (reuses dropdown patterns) */
33
+ display: block;
34
+ width: auto;
35
+ min-width: 200px;
36
+ font-family: inherit;
37
+ --ty-date-picker-bg: var(--ty-input-bg);
38
+ --ty-date-picker-color: var(--ty-input-color);
39
+ --ty-date-picker-placeholder: var(--ty-input-placeholder);
40
+ --ty-date-picker-border: var(--ty-input-border);
41
+ --ty-date-picker-border-hover: var(--ty-input-border-hover);
42
+ --ty-date-picker-border-focus: var(--ty-input-border-focus);
43
+ --ty-date-picker-shadow-focus: var(--ty-input-shadow-focus);
44
+ --ty-date-picker-disabled-bg: var(--ty-input-disabled-bg);
45
+ --ty-date-picker-disabled-color: var(--ty-input-disabled-color);
46
+ --ty-date-picker-radius: var(--ty-radius-md);
47
+ --ty-calendar-surface-bg: var(--ty-surface-floating);
48
+ --ty-calendar-surface-border: var(--ty-input-border);
49
+ --ty-calendar-surface-shadow: var(--ty-shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.1));
50
+ --ty-calendar-surface-radius: var(--ty-radius-lg);
51
+ --ty-calendar-time-bg: transparent;
52
+ --ty-calendar-time-border: var(--ty-border-faint);
53
+ --ty-calendar-time-label-color: var(--ty-color-neutral);
54
+ --ty-calendar-time-input-color: var(--ty-input-color);
55
+ --ty-calendar-time-placeholder-color: var(--ty-input-placeholder);
56
+ --ty-calendar-time-icon-color: var(--ty-color-neutral-soft);
57
+ }
85
58
  .dropdown-container {
86
- display: flex;
87
- flex-direction: column;
88
- width: 100%;
89
- box-sizing: border-box;
59
+ display: flex;
60
+ flex-direction: column;
61
+ width: 100%;
62
+ box-sizing: border-box;
90
63
  }
91
-
92
64
  .ty-field-label {
93
- font-size: var(--ty-font-sm);
94
- line-height: var(--ty-leading-sm);
95
- letter-spacing: var(--ty-tracking-sm);
96
- font-weight: var(--ty-font-medium);
97
- color: var(--ty-label-color);
98
- margin-bottom: 6px;
99
- padding-left: 12px;
100
- display: flex;
101
- align-items: center;
102
- }
103
-
65
+ font-size: var(--ty-field-label-font);
66
+ line-height: var(--ty-field-label-leading);
67
+ letter-spacing: var(--ty-tracking-sm);
68
+ font-weight: var(--ty-font-medium);
69
+ color: var(--ty-label-color);
70
+ margin-bottom: var(--ty-field-label-gap);
71
+ padding-left: var(--ty-field-outer-pad-x);
72
+ display: flex;
73
+ align-items: center;
74
+ }
104
75
  .required-icon {
105
- display: inline-flex;
106
- align-items: center;
107
- color: #ef4444;
108
- width: 12px;
109
- height: 12px;
110
- vertical-align: middle;
111
- margin-left: 4px;
112
- }
113
-
76
+ display: inline-flex;
77
+ align-items: center;
78
+ color: #ef4444;
79
+ width: 12px;
80
+ height: 12px;
81
+ vertical-align: middle;
82
+ margin-left: 4px;
83
+ }
114
84
  .dropdown-wrapper {
115
- position: relative;
116
- display: block;
117
- width: 100%;
85
+ position: relative;
86
+ display: block;
87
+ width: 100%;
118
88
  }
119
-
120
- /* Start-slot icon (leading content inside the date-picker stub) */
121
89
  .date-picker-stub ::slotted([slot="start"]) {
122
- display: flex;
123
- align-items: center;
124
- justify-content: center;
125
- flex-shrink: 0;
126
- margin-right: 0.5rem;
127
- color: var(--ty-color-text-soft);
128
- }
129
-
90
+ display: flex;
91
+ align-items: center;
92
+ justify-content: center;
93
+ flex-shrink: 0;
94
+ margin-right: 0.5rem;
95
+ color: var(--ty-color-text-soft);
96
+ }
130
97
  .date-picker-stub ::slotted(ty-icon[slot="start"]) {
131
- width: 1em;
132
- height: 1em;
98
+ width: 1em;
99
+ height: 1em;
133
100
  }
134
-
135
- /* Date picker stub (styled like dropdown) */
136
101
  .date-picker-stub {
137
- width: 100%;
138
- cursor: pointer;
139
- box-sizing: border-box;
140
- position: relative;
141
- display: flex;
142
- align-items: center;
143
- background: var(--ty-date-picker-bg);
144
- color: var(--ty-date-picker-color);
145
- border: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));
146
- border-radius: var(--ty-date-picker-radius);
147
- font-family: var(--ty-font-sans);
148
- font-size: var(--ty-font-sm);
149
- font-weight: var(--ty-font-normal);
150
- line-height: var(--ty-line-height-tight);
151
- min-height: var(--ty-size-md);
152
- padding: var(--ty-spacing-2) var(--ty-spacing-3);
153
- padding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));
154
- transition: var(--ty-transition-all), opacity 0.2s ease;
155
- outline: none;
156
- }
157
-
102
+ width: 100%;
103
+ cursor: pointer;
104
+ box-sizing: border-box;
105
+ position: relative;
106
+ display: flex;
107
+ align-items: center;
108
+ background: var(--ty-date-picker-bg);
109
+ color: var(--ty-date-picker-color);
110
+ border: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));
111
+ border-radius: var(--ty-date-picker-radius);
112
+ font-family: inherit;
113
+ font-size: var(--ty-field-font);
114
+ font-weight: var(--ty-font-normal);
115
+ line-height: var(--ty-field-leading);
116
+ min-height: var(--ty-field-height);
117
+ padding: 0 var(--ty-field-pad-x);
118
+ padding-right: calc(var(--ty-field-pad-x) + 1rem + var(--ty-field-pad-x));
119
+ transition: var(--ty-transition-all), opacity 0.2s ease;
120
+ outline: none;
121
+ }
158
122
  .date-picker-stub:hover:not([disabled]):not(.open) {
159
- border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));
123
+ border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));
160
124
  }
161
-
162
125
  .date-picker-stub[disabled] {
163
- background-color: var(--ty-date-picker-disabled-bg);
164
- color: var(--ty-date-picker-disabled-color);
165
- cursor: not-allowed;
166
- opacity: 0.6;
126
+ background-color: var(--ty-date-picker-disabled-bg);
127
+ color: var(--ty-date-picker-disabled-color);
128
+ cursor: not-allowed;
129
+ opacity: 0.6;
167
130
  }
168
-
169
131
  .date-picker-stub:focus,
170
132
  .date-picker-stub.open {
171
- border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
172
- box-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));
173
- }
174
-
175
- /* Size variants */
176
- .date-picker-stub.sm {
177
- min-height: var(--ty-size-sm);
178
- font-size: var(--ty-font-xs);
179
- padding: var(--ty-spacing-1) var(--ty-spacing-2);
180
- padding-right: calc(var(--ty-spacing-2) + 0.875rem + var(--ty-spacing-1));
181
- }
182
-
183
- .date-picker-stub.lg {
184
- min-height: var(--ty-size-lg);
185
- font-size: var(--ty-font-base);
186
- padding: var(--ty-spacing-2) var(--ty-spacing-4);
187
- padding-right: calc(var(--ty-spacing-4) + 1.125rem + var(--ty-spacing-2));
188
- }
189
-
190
- /* Flavor variants — set --date-picker-accent*, consumed by the stub rules above */
133
+ border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
134
+ box-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));
135
+ }
191
136
  ${FLAVORS.filter((f) => f !== "neutral").map((f) => datePickerFlavor(f)).join("")}
192
-
193
- /* Text content */
194
137
  .stub-text {
195
- flex: 1;
196
- white-space: nowrap;
197
- overflow: hidden;
198
- text-overflow: ellipsis;
199
- user-select: none;
200
- color: inherit;
201
- pointer-events: none;
202
- }
203
-
138
+ flex: 1;
139
+ white-space: nowrap;
140
+ overflow: hidden;
141
+ text-overflow: ellipsis;
142
+ user-select: none;
143
+ color: inherit;
144
+ pointer-events: none;
145
+ }
204
146
  .stub-text.placeholder {
205
- color: var(--ty-date-picker-placeholder);
147
+ color: var(--ty-date-picker-placeholder);
206
148
  }
207
-
208
- /* Icons */
209
149
  .stub-icons {
210
- display: flex;
211
- align-items: center;
212
- gap: var(--ty-spacing-1);
213
- position: absolute;
214
- right: var(--ty-spacing-3);
215
- top: 50%;
216
- transform: translateY(-50%);
217
- height: 1rem;
218
- pointer-events: none;
219
- z-index: 2;
220
- }
221
-
150
+ display: flex;
151
+ align-items: center;
152
+ gap: var(--ty-spacing-1);
153
+ position: absolute;
154
+ right: var(--ty-spacing-3);
155
+ top: 50%;
156
+ transform: translateY(-50%);
157
+ height: 1rem;
158
+ pointer-events: none;
159
+ z-index: 2;
160
+ }
222
161
  .stub-clear {
223
- display: flex;
224
- align-items: center;
225
- justify-content: center;
226
- width: 1rem;
227
- height: 1rem;
228
- padding: 0;
229
- border: none;
230
- background: none;
231
- color: var(--ty-color-neutral-soft);
232
- cursor: pointer;
233
- border-radius: var(--ty-radius-sm);
234
- transition: var(--ty-local-transition, all 0.15s ease);
235
- pointer-events: auto;
236
- }
237
-
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ width: 1rem;
166
+ height: 1rem;
167
+ padding: 0;
168
+ border: none;
169
+ background: none;
170
+ color: var(--ty-color-neutral-soft);
171
+ cursor: pointer;
172
+ border-radius: var(--ty-radius-sm);
173
+ transition: var(--ty-local-transition, all 0.15s ease);
174
+ pointer-events: auto;
175
+ }
238
176
  .stub-clear:hover {
239
- /* Clear is a destructive utility action, not the field's semantic flavor
240
- — it stays neutral at rest and always warns danger-red on hover,
241
- regardless of the field's own flavor. (--ty-color-negative/
242
- --ty-bg-negative-faint used here previously don't exist as tokens —
243
- this silently fell back to unstyled inherited color.) */
244
- color: var(--ty-color-danger);
245
- background-color: var(--ty-bg-danger-soft);
246
- }
247
-
177
+ color: var(--ty-color-danger);
178
+ background-color: var(--ty-bg-danger-soft);
179
+ }
248
180
  .stub-arrow {
249
- display: flex;
250
- align-items: center;
251
- justify-content: center;
252
- width: 1rem;
253
- height: 1rem;
254
- color: var(--date-picker-accent, var(--ty-color-neutral-soft));
255
- }
256
-
181
+ display: flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ width: 1rem;
185
+ height: 1rem;
186
+ color: var(--date-picker-accent, var(--ty-color-neutral-soft));
187
+ }
257
188
  .date-picker-stub:hover .stub-arrow {
258
- color: var(--date-picker-accent-bold, var(--ty-color-neutral));
189
+ color: var(--date-picker-accent-bold, var(--ty-color-neutral));
259
190
  }
260
-
261
191
  .date-picker-stub:focus .stub-arrow,
262
192
  .date-picker-stub.open .stub-arrow {
263
- color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
193
+ color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
264
194
  }
265
-
266
- /* Calendar dialog (showModal positioning system) */
267
195
  .calendar-dialog {
268
- position: fixed;
269
- flex-direction: column;
270
- max-width: 90vw;
271
- margin: 0;
272
- padding: 0;
273
- border: none;
274
- background: transparent;
275
- box-sizing: border-box;
276
- padding: var(--calendar-padding, 8px);
277
-
278
- /* Hidden by default */
279
- opacity: 0;
280
- transition: opacity 200ms ease;
281
-
282
- transform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));
283
- top: -1000px;
284
- left: -1000px;
285
- }
286
-
287
- /* Direction-based positioning with CSS classes */
196
+ position: fixed;
197
+ flex-direction: column;
198
+ max-width: 90vw;
199
+ margin: 0;
200
+ padding: 0;
201
+ border: none;
202
+ background: transparent;
203
+ box-sizing: border-box;
204
+ padding: var(--calendar-padding, 8px);
205
+ opacity: 0;
206
+ scale: 0.96;
207
+ translate: 0 -6px;
208
+ transform-origin: top center;
209
+ transition:
210
+ opacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
211
+ scale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
212
+ translate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));
213
+ transform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));
214
+ top: -1000px;
215
+ left: -1000px;
216
+ }
288
217
  .calendar-dialog.position-below {
289
- left: var(--calendar-x);
290
- top: var(--calendar-y);
218
+ left: var(--calendar-x);
219
+ top: var(--calendar-y);
291
220
  }
292
-
293
221
  .calendar-dialog.position-above {
294
- left: var(--calendar-x);
295
- bottom: var(--calendar-y);
296
- top: auto;
297
- flex-direction: column-reverse;
222
+ left: var(--calendar-x);
223
+ bottom: var(--calendar-y);
224
+ top: auto;
225
+ flex-direction: column-reverse;
226
+ translate: 0 6px;
227
+ transform-origin: bottom center;
228
+ }
229
+ .calendar-dialog.open {
230
+ opacity: 1;
231
+ scale: 1;
232
+ translate: 0 0;
298
233
  }
299
-
234
+ @starting-style {
300
235
  .calendar-dialog.open {
301
- opacity: 1;
236
+ opacity: 0;
237
+ scale: 0.96;
238
+ translate: 0 -6px;
239
+ }
240
+ .calendar-dialog.open.position-above {
241
+ translate: 0 6px;
242
+ }
302
243
  }
303
-
304
244
  .calendar-dialog::backdrop {
305
- background: transparent
245
+ background: transparent
306
246
  }
307
-
308
- /* Calendar content container */
309
247
  .calendar-content {
310
- background-color: var(--ty-calendar-surface-bg);
311
- border: 1px solid var(--ty-calendar-surface-border);
312
- border-radius: var(--ty-calendar-surface-radius);
313
- box-shadow: var(--ty-calendar-surface-shadow);
314
- overflow: hidden;
315
- display: flex;
316
- flex-direction: column;
317
- align-items: center;
318
- }
319
-
320
- /* Native date input for mobile */
321
- /* Native input is invisible — used only to trigger the OS picker */
248
+ background-color: var(--ty-calendar-surface-bg);
249
+ border: 1px solid var(--ty-calendar-surface-border);
250
+ border-radius: var(--ty-calendar-surface-radius);
251
+ box-shadow: var(--ty-calendar-surface-shadow);
252
+ overflow: hidden;
253
+ display: flex;
254
+ flex-direction: column;
255
+ align-items: center;
256
+ }
322
257
  .native-date-input {
323
- position: absolute;
324
- inset: 0;
325
- opacity: 0;
326
- width: 100%;
327
- height: 100%;
328
- margin: 0;
329
- padding: 0;
330
- border: none;
331
- cursor: pointer;
332
- z-index: 1;
333
- }
334
-
258
+ position: absolute;
259
+ inset: 0;
260
+ opacity: 0;
261
+ width: 100%;
262
+ height: 100%;
263
+ margin: 0;
264
+ padding: 0;
265
+ border: none;
266
+ cursor: pointer;
267
+ z-index: 1;
268
+ }
335
269
  .native-date-input::-webkit-calendar-picker-indicator {
336
- position: absolute;
337
- inset: 0;
338
- width: 100%;
339
- height: 100%;
340
- margin: 0;
341
- padding: 0;
342
- cursor: pointer;
343
- }
344
-
345
- /* Time input section */
270
+ position: absolute;
271
+ inset: 0;
272
+ width: 100%;
273
+ height: 100%;
274
+ margin: 0;
275
+ padding: 0;
276
+ cursor: pointer;
277
+ }
346
278
  .time-section {
347
- display: flex;
348
- min-height: 2.5rem;
349
- align-items: center;
350
- justify-content: center;
351
- gap: 0.5rem;
352
- padding: 0.5rem 1rem;
353
- border-top: 1px solid var(--ty-calendar-time-border);
354
- background-color: var(--ty-calendar-time-bg);
355
- width: 100%;
356
- box-sizing: border-box;
357
- position: relative;
358
- }
359
-
279
+ display: flex;
280
+ min-height: 2.5rem;
281
+ align-items: center;
282
+ justify-content: center;
283
+ gap: 0.5rem;
284
+ padding: 0.5rem 1rem;
285
+ border-top: 1px solid var(--ty-calendar-time-border);
286
+ background-color: var(--ty-calendar-time-bg);
287
+ width: 100%;
288
+ box-sizing: border-box;
289
+ position: relative;
290
+ }
360
291
  .time-label {
361
- font-size: var(--ty-font-sm);
362
- font-weight: 500;
363
- color: var(--ty-calendar-time-label-color);
364
- flex-shrink: 0;
292
+ font-size: var(--ty-font-sm);
293
+ font-weight: 500;
294
+ color: var(--ty-calendar-time-label-color);
295
+ flex-shrink: 0;
365
296
  }
366
-
367
297
  .time-input {
368
- width: 3.5rem;
369
- border: 1px solid var(--ty-input-border);
370
- border-radius: var(--ty-radius-sm);
371
- background: var(--ty-input-bg);
372
- color: var(--ty-calendar-time-input-color);
373
- font-family: var(--ty-font-sans);
374
- font-size: var(--ty-font-sm);
375
- font-variant-numeric: tabular-nums;
376
- text-align: center;
377
- padding: 0.25rem 0.375rem;
378
- outline: none;
379
- transition: var(--ty-transition-all);
380
- }
381
-
298
+ width: 3.5rem;
299
+ border: 1px solid var(--ty-input-border);
300
+ border-radius: var(--ty-radius-sm);
301
+ background: var(--ty-input-bg);
302
+ color: var(--ty-calendar-time-input-color);
303
+ font-family: inherit;
304
+ font-size: var(--ty-font-sm);
305
+ font-variant-numeric: tabular-nums;
306
+ text-align: center;
307
+ padding: 0.25rem 0.375rem;
308
+ outline: none;
309
+ transition: var(--ty-transition-all);
310
+ }
382
311
  .time-input:focus {
383
- border-color: var(--ty-input-border-focus);
384
- box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);
312
+ border-color: var(--ty-input-border-focus);
313
+ box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);
385
314
  }
386
-
387
315
  .time-input::placeholder {
388
- color: var(--ty-calendar-time-placeholder-color);
316
+ color: var(--ty-calendar-time-placeholder-color);
389
317
  }
390
-
391
318
  .time-icon {
392
- display: flex;
393
- align-items: center;
394
- color: var(--ty-calendar-time-icon-color);
395
- width: 1rem;
396
- height: 1rem;
397
- flex-shrink: 0;
319
+ display: flex;
320
+ align-items: center;
321
+ color: var(--ty-calendar-time-icon-color);
322
+ width: 1rem;
323
+ height: 1rem;
324
+ flex-shrink: 0;
398
325
  }
399
326
  `;
400
- //# sourceMappingURL=date-picker.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Field Size Ladder
3
+ * One source of truth for how `size` scales every field component.
4
+ * Components consume the --ty-field-* vars; nothing hardcodes a size.
5
+ */
6
+ export declare const fieldSizeVars = "\n:host {\n --ty-field-height: var(--ty-size-sm, 2rem);\n --ty-field-pad-x: 10px;\n --ty-field-font: var(--ty-font-sm);\n --ty-field-leading: 20px;\n --ty-field-tracking: var(--ty-tracking-sm);\n --ty-field-label-font: var(--ty-font-xs);\n --ty-field-label-leading: var(--ty-leading-xs);\n --ty-field-label-gap: 5px;\n /* Text that sits OUTSIDE the field box (label, error message) has to line up\n with the value INSIDE it. The value is inset by the wrapper's 1px border\n plus --ty-field-pad-x; outside text only ever cleared the padding, so it\n started exactly 1px to the left of the value it labelled \u2014 at every rung,\n on every field. Resolved per rung: the calc reads whichever --ty-field-pad-x\n is winning on the host. */\n --ty-field-outer-pad-x: calc(var(--ty-field-pad-x) + 1px);\n --ty-field-control: 24px;\n --ty-field-icon: 16px;\n}\n\n:host([size=\"xs\"]) {\n --ty-field-height: var(--ty-size-xs, 1.75rem);\n --ty-field-pad-x: 8px;\n --ty-field-font: var(--ty-font-xs);\n --ty-field-leading: 16px;\n --ty-field-tracking: var(--ty-tracking-xs);\n --ty-field-label-font: var(--ty-font-xs);\n --ty-field-label-leading: var(--ty-leading-xs);\n --ty-field-label-gap: 4px;\n --ty-field-control: 20px;\n --ty-field-icon: 14px;\n}\n\n:host([size=\"md\"]) {\n --ty-field-height: var(--ty-size-md, 2.25rem);\n --ty-field-pad-x: 12px;\n --ty-field-font: var(--ty-font-sm);\n --ty-field-leading: 20px;\n --ty-field-tracking: var(--ty-tracking-sm);\n --ty-field-label-font: var(--ty-font-sm);\n --ty-field-label-leading: var(--ty-leading-sm);\n --ty-field-label-gap: 6px;\n --ty-field-control: 28px;\n --ty-field-icon: 18px;\n}\n\n:host([size=\"lg\"]) {\n --ty-field-height: var(--ty-size-lg, 2.5rem);\n --ty-field-pad-x: 14px;\n --ty-field-font: var(--ty-font-base);\n --ty-field-leading: 24px;\n --ty-field-tracking: var(--ty-tracking-base);\n --ty-field-label-font: var(--ty-font-sm);\n --ty-field-label-leading: var(--ty-leading-sm);\n --ty-field-label-gap: 6px;\n --ty-field-control: 32px;\n --ty-field-icon: 20px;\n}\n\n:host([size=\"xl\"]) {\n --ty-field-height: var(--ty-size-xl, 2.75rem);\n --ty-field-pad-x: 16px;\n --ty-field-font: var(--ty-font-lg);\n --ty-field-leading: 28px;\n --ty-field-tracking: var(--ty-tracking-base);\n --ty-field-label-font: var(--ty-font-base);\n --ty-field-label-leading: var(--ty-leading-base);\n --ty-field-label-gap: 8px;\n --ty-field-control: 36px;\n --ty-field-icon: 22px;\n}\n\n/* Narrow viewports drop the two biggest rungs one step \u2014 same ladder, no\n component-specific overrides.\n\n A stepped-down rung must carry the WHOLE rung: --ty-field-control is the\n in-field button box (ty-copy's copy button, the date-picker's icon), and it\n sets the wrapper's content height. Leave it at the original rung and the\n field ends up taller than --ty-field-height \u2014 the ladder silently breaks on\n exactly one component. */\n@media (max-width: 640px) {\n :host([size=\"lg\"]) {\n --ty-field-height: var(--ty-size-md, 2.25rem);\n --ty-field-pad-x: 12px;\n --ty-field-font: var(--ty-font-sm);\n --ty-field-leading: 20px;\n --ty-field-control: 28px;\n --ty-field-icon: 18px;\n }\n\n :host([size=\"xl\"]) {\n --ty-field-height: var(--ty-size-lg, 2.5rem);\n --ty-field-pad-x: 14px;\n --ty-field-font: var(--ty-font-base);\n --ty-field-leading: 24px;\n --ty-field-control: 32px;\n --ty-field-icon: 20px;\n }\n}\n\n@media (max-width: 480px) {\n :host([size=\"xl\"]) {\n --ty-field-height: var(--ty-size-md, 2.25rem);\n --ty-field-pad-x: 12px;\n --ty-field-font: var(--ty-font-sm);\n --ty-field-leading: 20px;\n --ty-field-control: 28px;\n --ty-field-icon: 18px;\n }\n}\n";