tyrell-components 1.0.0-RC12 → 1.0.0-RC14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/README.md +2 -1
  2. package/css/tyrell-colors-static.css +316 -0
  3. package/css/tyrell-theme.css +1443 -0
  4. package/css/tyrell.css +127 -423
  5. package/dist/tyrell-colors-static.css +316 -0
  6. package/dist/tyrell-theme.css +1443 -0
  7. package/dist/tyrell.css +127 -423
  8. package/dist/tyrell.js +1 -1
  9. package/lib/base/ty-component.d.ts +20 -10
  10. package/lib/base/ty-component.js +21 -144
  11. package/lib/components/button.d.ts +9 -16
  12. package/lib/components/button.js +12 -37
  13. package/lib/components/calendar-month.d.ts +17 -46
  14. package/lib/components/calendar-month.js +97 -145
  15. package/lib/components/calendar-navigation.d.ts +3 -48
  16. package/lib/components/calendar-navigation.js +3 -126
  17. package/lib/components/calendar.d.ts +6 -81
  18. package/lib/components/calendar.js +24 -236
  19. package/lib/components/checkbox.d.ts +8 -74
  20. package/lib/components/checkbox.js +21 -177
  21. package/lib/components/copy.d.ts +7 -59
  22. package/lib/components/copy.js +19 -137
  23. package/lib/components/date-picker.d.ts +23 -161
  24. package/lib/components/date-picker.js +127 -588
  25. package/lib/components/file-upload.d.ts +9 -15
  26. package/lib/components/file-upload.js +19 -41
  27. package/lib/components/icon.d.ts +3 -24
  28. package/lib/components/icon.js +1 -90
  29. package/lib/components/input.d.ts +10 -109
  30. package/lib/components/input.js +24 -209
  31. package/lib/components/modal.d.ts +17 -26
  32. package/lib/components/modal.js +67 -192
  33. package/lib/components/option.d.ts +2 -20
  34. package/lib/components/option.js +1 -148
  35. package/lib/components/popup.d.ts +2 -17
  36. package/lib/components/popup.js +35 -132
  37. package/lib/components/radio.d.ts +7 -24
  38. package/lib/components/radio.js +24 -68
  39. package/lib/components/resize-observer.d.ts +3 -30
  40. package/lib/components/resize-observer.js +12 -46
  41. package/lib/components/scroll-container.d.ts +2 -12
  42. package/lib/components/scroll-container.js +3 -46
  43. package/lib/components/select.d.ts +130 -151
  44. package/lib/components/select.js +327 -516
  45. package/lib/components/selected-tags.d.ts +8 -38
  46. package/lib/components/selected-tags.js +20 -78
  47. package/lib/components/step.d.ts +1 -6
  48. package/lib/components/step.js +0 -6
  49. package/lib/components/switch.d.ts +4 -14
  50. package/lib/components/switch.js +15 -61
  51. package/lib/components/tab.d.ts +1 -6
  52. package/lib/components/tab.js +0 -7
  53. package/lib/components/tabs.d.ts +5 -63
  54. package/lib/components/tabs.js +159 -267
  55. package/lib/components/tag.d.ts +2 -36
  56. package/lib/components/tag.js +5 -105
  57. package/lib/components/textarea.d.ts +6 -86
  58. package/lib/components/textarea.js +2 -173
  59. package/lib/components/tooltip.d.ts +7 -13
  60. package/lib/components/tooltip.js +83 -180
  61. package/lib/components/wizard.d.ts +6 -54
  62. package/lib/components/wizard.js +27 -221
  63. package/lib/icons/fontawesome/brands.d.ts +0 -1
  64. package/lib/icons/fontawesome/brands.js +0 -8
  65. package/lib/icons/fontawesome/regular.d.ts +0 -1
  66. package/lib/icons/fontawesome/regular.js +0 -8
  67. package/lib/icons/fontawesome/solid.d.ts +0 -1
  68. package/lib/icons/fontawesome/solid.js +0 -8
  69. package/lib/icons/heroicons/micro.d.ts +0 -1
  70. package/lib/icons/heroicons/micro.js +0 -8
  71. package/lib/icons/heroicons/mini.d.ts +0 -1
  72. package/lib/icons/heroicons/mini.js +0 -8
  73. package/lib/icons/heroicons/outline.d.ts +0 -1
  74. package/lib/icons/heroicons/outline.js +0 -8
  75. package/lib/icons/heroicons/solid.d.ts +0 -1
  76. package/lib/icons/heroicons/solid.js +0 -8
  77. package/lib/icons/lucide.d.ts +0 -1
  78. package/lib/icons/lucide.js +0 -1872
  79. package/lib/icons/material/filled.d.ts +0 -1
  80. package/lib/icons/material/filled.js +0 -10
  81. package/lib/icons/material/outlined.d.ts +0 -1
  82. package/lib/icons/material/outlined.js +0 -10
  83. package/lib/icons/material/round.d.ts +0 -1
  84. package/lib/icons/material/round.js +0 -10
  85. package/lib/icons/material/sharp.d.ts +0 -1
  86. package/lib/icons/material/sharp.js +0 -10
  87. package/lib/icons/material/two-tone.d.ts +0 -1
  88. package/lib/icons/material/two-tone.js +0 -10
  89. package/lib/index.d.ts +2 -2
  90. package/lib/index.js +2 -21
  91. package/lib/styles/button.d.ts +19 -7
  92. package/lib/styles/button.js +180 -77
  93. package/lib/styles/calendar-month.d.ts +4 -6
  94. package/lib/styles/calendar-month.js +57 -59
  95. package/lib/styles/calendar-navigation.d.ts +2 -6
  96. package/lib/styles/calendar-navigation.js +3 -28
  97. package/lib/styles/calendar.d.ts +1 -2
  98. package/lib/styles/calendar.js +1 -14
  99. package/lib/styles/checkbox.d.ts +3 -2
  100. package/lib/styles/checkbox.js +24 -68
  101. package/lib/styles/copy.d.ts +3 -2
  102. package/lib/styles/copy.js +25 -17
  103. package/lib/styles/custom-scrollbar.d.ts +1 -2
  104. package/lib/styles/custom-scrollbar.js +5 -20
  105. package/lib/styles/date-picker.d.ts +4 -6
  106. package/lib/styles/date-picker.js +80 -130
  107. package/lib/styles/file-upload.d.ts +1 -2
  108. package/lib/styles/file-upload.js +4 -19
  109. package/lib/styles/icon.d.ts +2 -6
  110. package/lib/styles/icon.js +7 -21
  111. package/lib/styles/input.d.ts +4 -7
  112. package/lib/styles/input.js +55 -160
  113. package/lib/styles/modal.d.ts +1 -2
  114. package/lib/styles/modal.js +21 -23
  115. package/lib/styles/option.d.ts +2 -6
  116. package/lib/styles/option.js +17 -63
  117. package/lib/styles/popup.d.ts +1 -2
  118. package/lib/styles/popup.js +26 -30
  119. package/lib/styles/radio.d.ts +3 -2
  120. package/lib/styles/radio.js +21 -32
  121. package/lib/styles/resize-observer.d.ts +1 -2
  122. package/lib/styles/resize-observer.js +0 -7
  123. package/lib/styles/scroll-container.d.ts +1 -2
  124. package/lib/styles/scroll-container.js +0 -19
  125. package/lib/styles/select-base.d.ts +8 -0
  126. package/lib/styles/{multiselect.js → select-base.js} +264 -127
  127. package/lib/styles/select.d.ts +3 -4
  128. package/lib/styles/select.js +103 -43
  129. package/lib/styles/step.d.ts +1 -2
  130. package/lib/styles/step.js +0 -4
  131. package/lib/styles/switch.d.ts +3 -2
  132. package/lib/styles/switch.js +20 -23
  133. package/lib/styles/tab.d.ts +1 -2
  134. package/lib/styles/tab.js +0 -5
  135. package/lib/styles/tabs.d.ts +3 -11
  136. package/lib/styles/tabs.js +77 -45
  137. package/lib/styles/tag.d.ts +1 -5
  138. package/lib/styles/tag.js +6 -32
  139. package/lib/styles/textarea.d.ts +1 -2
  140. package/lib/styles/textarea.js +7 -50
  141. package/lib/styles/tooltip.d.ts +4 -3
  142. package/lib/styles/tooltip.js +0 -125
  143. package/lib/styles/wizard.d.ts +5 -21
  144. package/lib/styles/wizard.js +23 -91
  145. package/lib/types/common.d.ts +1 -3
  146. package/lib/types/common.js +0 -10
  147. package/lib/utils/calendar-utils.d.ts +4 -21
  148. package/lib/utils/calendar-utils.js +4 -177
  149. package/lib/utils/custom-scrollbar.d.ts +6 -20
  150. package/lib/utils/custom-scrollbar.js +1 -45
  151. package/lib/utils/flavor-sheet.d.ts +0 -1
  152. package/lib/utils/flavor-sheet.js +0 -23
  153. package/lib/utils/icon-registry.d.ts +0 -2
  154. package/lib/utils/icon-registry.js +1 -107
  155. package/lib/utils/icons.d.ts +9 -0
  156. package/lib/utils/icons.js +1 -0
  157. package/lib/utils/loader-registry.d.ts +2 -3
  158. package/lib/utils/loader-registry.js +0 -32
  159. package/lib/utils/locale.d.ts +2 -23
  160. package/lib/utils/locale.js +0 -86
  161. package/lib/utils/mobile.d.ts +0 -1
  162. package/lib/utils/mobile.js +0 -17
  163. package/lib/utils/number-format.d.ts +6 -3
  164. package/lib/utils/number-format.js +11 -67
  165. package/lib/utils/positioning.d.ts +77 -3
  166. package/lib/utils/positioning.js +67 -58
  167. package/lib/utils/property-capture.d.ts +5 -27
  168. package/lib/utils/property-capture.js +0 -108
  169. package/lib/utils/property-manager.d.ts +0 -1
  170. package/lib/utils/property-manager.js +0 -70
  171. package/lib/utils/resize-observer.d.ts +0 -1
  172. package/lib/utils/resize-observer.js +0 -36
  173. package/lib/utils/scroll-lock.d.ts +4 -11
  174. package/lib/utils/scroll-lock.js +0 -107
  175. package/lib/utils/styles.d.ts +0 -1
  176. package/lib/utils/styles.js +0 -24
  177. package/lib/version.d.ts +1 -2
  178. package/lib/version.js +1 -11
  179. package/package.json +8 -5
  180. package/css/tyrell-brand.css +0 -1015
  181. package/dist/tyrell-brand.css +0 -1015
  182. package/lib/base/ty-component.d.ts.map +0 -1
  183. package/lib/base/ty-component.js.map +0 -1
  184. package/lib/components/button.d.ts.map +0 -1
  185. package/lib/components/button.js.map +0 -1
  186. package/lib/components/calendar-month.d.ts.map +0 -1
  187. package/lib/components/calendar-month.js.map +0 -1
  188. package/lib/components/calendar-navigation.d.ts.map +0 -1
  189. package/lib/components/calendar-navigation.js.map +0 -1
  190. package/lib/components/calendar.d.ts.map +0 -1
  191. package/lib/components/calendar.js.map +0 -1
  192. package/lib/components/checkbox.d.ts.map +0 -1
  193. package/lib/components/checkbox.js.map +0 -1
  194. package/lib/components/copy.d.ts.map +0 -1
  195. package/lib/components/copy.js.map +0 -1
  196. package/lib/components/date-picker.d.ts.map +0 -1
  197. package/lib/components/date-picker.js.map +0 -1
  198. package/lib/components/file-upload.d.ts.map +0 -1
  199. package/lib/components/file-upload.js.map +0 -1
  200. package/lib/components/icon.d.ts.map +0 -1
  201. package/lib/components/icon.js.map +0 -1
  202. package/lib/components/input.d.ts.map +0 -1
  203. package/lib/components/input.js.map +0 -1
  204. package/lib/components/modal.d.ts.map +0 -1
  205. package/lib/components/modal.js.map +0 -1
  206. package/lib/components/option.d.ts.map +0 -1
  207. package/lib/components/option.js.map +0 -1
  208. package/lib/components/popup.d.ts.map +0 -1
  209. package/lib/components/popup.js.map +0 -1
  210. package/lib/components/radio.d.ts.map +0 -1
  211. package/lib/components/radio.js.map +0 -1
  212. package/lib/components/resize-observer.d.ts.map +0 -1
  213. package/lib/components/resize-observer.js.map +0 -1
  214. package/lib/components/scroll-container.d.ts.map +0 -1
  215. package/lib/components/scroll-container.js.map +0 -1
  216. package/lib/components/select.d.ts.map +0 -1
  217. package/lib/components/select.js.map +0 -1
  218. package/lib/components/selected-tags.d.ts.map +0 -1
  219. package/lib/components/selected-tags.js.map +0 -1
  220. package/lib/components/step.d.ts.map +0 -1
  221. package/lib/components/step.js.map +0 -1
  222. package/lib/components/switch.d.ts.map +0 -1
  223. package/lib/components/switch.js.map +0 -1
  224. package/lib/components/tab.d.ts.map +0 -1
  225. package/lib/components/tab.js.map +0 -1
  226. package/lib/components/tabs.d.ts.map +0 -1
  227. package/lib/components/tabs.js.map +0 -1
  228. package/lib/components/tag.d.ts.map +0 -1
  229. package/lib/components/tag.js.map +0 -1
  230. package/lib/components/textarea.d.ts.map +0 -1
  231. package/lib/components/textarea.js.map +0 -1
  232. package/lib/components/tooltip.d.ts.map +0 -1
  233. package/lib/components/tooltip.js.map +0 -1
  234. package/lib/components/wizard.d.ts.map +0 -1
  235. package/lib/components/wizard.js.map +0 -1
  236. package/lib/icons/fontawesome/brands.d.ts.map +0 -1
  237. package/lib/icons/fontawesome/brands.js.map +0 -1
  238. package/lib/icons/fontawesome/regular.d.ts.map +0 -1
  239. package/lib/icons/fontawesome/regular.js.map +0 -1
  240. package/lib/icons/fontawesome/solid.d.ts.map +0 -1
  241. package/lib/icons/fontawesome/solid.js.map +0 -1
  242. package/lib/icons/heroicons/micro.d.ts.map +0 -1
  243. package/lib/icons/heroicons/micro.js.map +0 -1
  244. package/lib/icons/heroicons/mini.d.ts.map +0 -1
  245. package/lib/icons/heroicons/mini.js.map +0 -1
  246. package/lib/icons/heroicons/outline.d.ts.map +0 -1
  247. package/lib/icons/heroicons/outline.js.map +0 -1
  248. package/lib/icons/heroicons/solid.d.ts.map +0 -1
  249. package/lib/icons/heroicons/solid.js.map +0 -1
  250. package/lib/icons/lucide.d.ts.map +0 -1
  251. package/lib/icons/lucide.js.map +0 -1
  252. package/lib/icons/material/filled.d.ts.map +0 -1
  253. package/lib/icons/material/filled.js.map +0 -1
  254. package/lib/icons/material/outlined.d.ts.map +0 -1
  255. package/lib/icons/material/outlined.js.map +0 -1
  256. package/lib/icons/material/round.d.ts.map +0 -1
  257. package/lib/icons/material/round.js.map +0 -1
  258. package/lib/icons/material/sharp.d.ts.map +0 -1
  259. package/lib/icons/material/sharp.js.map +0 -1
  260. package/lib/icons/material/two-tone.d.ts.map +0 -1
  261. package/lib/icons/material/two-tone.js.map +0 -1
  262. package/lib/index.d.ts.map +0 -1
  263. package/lib/index.js.map +0 -1
  264. package/lib/styles/button.d.ts.map +0 -1
  265. package/lib/styles/button.js.map +0 -1
  266. package/lib/styles/calendar-month.d.ts.map +0 -1
  267. package/lib/styles/calendar-month.js.map +0 -1
  268. package/lib/styles/calendar-navigation.d.ts.map +0 -1
  269. package/lib/styles/calendar-navigation.js.map +0 -1
  270. package/lib/styles/calendar.d.ts.map +0 -1
  271. package/lib/styles/calendar.js.map +0 -1
  272. package/lib/styles/checkbox.d.ts.map +0 -1
  273. package/lib/styles/checkbox.js.map +0 -1
  274. package/lib/styles/copy.d.ts.map +0 -1
  275. package/lib/styles/copy.js.map +0 -1
  276. package/lib/styles/custom-scrollbar.d.ts.map +0 -1
  277. package/lib/styles/custom-scrollbar.js.map +0 -1
  278. package/lib/styles/date-picker.d.ts.map +0 -1
  279. package/lib/styles/date-picker.js.map +0 -1
  280. package/lib/styles/file-upload.d.ts.map +0 -1
  281. package/lib/styles/file-upload.js.map +0 -1
  282. package/lib/styles/icon.d.ts.map +0 -1
  283. package/lib/styles/icon.js.map +0 -1
  284. package/lib/styles/input.d.ts.map +0 -1
  285. package/lib/styles/input.js.map +0 -1
  286. package/lib/styles/modal.d.ts.map +0 -1
  287. package/lib/styles/modal.js.map +0 -1
  288. package/lib/styles/multiselect.d.ts +0 -6
  289. package/lib/styles/multiselect.d.ts.map +0 -1
  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.d.ts.map +0 -1
  302. package/lib/styles/select.js.map +0 -1
  303. package/lib/styles/step.d.ts.map +0 -1
  304. package/lib/styles/step.js.map +0 -1
  305. package/lib/styles/switch.d.ts.map +0 -1
  306. package/lib/styles/switch.js.map +0 -1
  307. package/lib/styles/tab.d.ts.map +0 -1
  308. package/lib/styles/tab.js.map +0 -1
  309. package/lib/styles/tabs.d.ts.map +0 -1
  310. package/lib/styles/tabs.js.map +0 -1
  311. package/lib/styles/tag.d.ts.map +0 -1
  312. package/lib/styles/tag.js.map +0 -1
  313. package/lib/styles/textarea.d.ts.map +0 -1
  314. package/lib/styles/textarea.js.map +0 -1
  315. package/lib/styles/tooltip.d.ts.map +0 -1
  316. package/lib/styles/tooltip.js.map +0 -1
  317. package/lib/styles/wizard.d.ts.map +0 -1
  318. package/lib/styles/wizard.js.map +0 -1
  319. package/lib/types/common.d.ts.map +0 -1
  320. package/lib/types/common.js.map +0 -1
  321. package/lib/utils/calendar-utils.d.ts.map +0 -1
  322. package/lib/utils/calendar-utils.js.map +0 -1
  323. package/lib/utils/custom-scrollbar.d.ts.map +0 -1
  324. package/lib/utils/custom-scrollbar.js.map +0 -1
  325. package/lib/utils/flavor-sheet.d.ts.map +0 -1
  326. package/lib/utils/flavor-sheet.js.map +0 -1
  327. package/lib/utils/icon-registry.d.ts.map +0 -1
  328. package/lib/utils/icon-registry.js.map +0 -1
  329. package/lib/utils/loader-registry.d.ts.map +0 -1
  330. package/lib/utils/loader-registry.js.map +0 -1
  331. package/lib/utils/locale.d.ts.map +0 -1
  332. package/lib/utils/locale.js.map +0 -1
  333. package/lib/utils/mobile.d.ts.map +0 -1
  334. package/lib/utils/mobile.js.map +0 -1
  335. package/lib/utils/number-format.d.ts.map +0 -1
  336. package/lib/utils/number-format.js.map +0 -1
  337. package/lib/utils/parse-boolean.d.ts +0 -39
  338. package/lib/utils/parse-boolean.d.ts.map +0 -1
  339. package/lib/utils/parse-boolean.js +0 -58
  340. package/lib/utils/parse-boolean.js.map +0 -1
  341. package/lib/utils/positioning.d.ts.map +0 -1
  342. package/lib/utils/positioning.js.map +0 -1
  343. package/lib/utils/property-capture.d.ts.map +0 -1
  344. package/lib/utils/property-capture.js.map +0 -1
  345. package/lib/utils/property-manager.d.ts.map +0 -1
  346. package/lib/utils/property-manager.js.map +0 -1
  347. package/lib/utils/resize-observer.d.ts.map +0 -1
  348. package/lib/utils/resize-observer.js.map +0 -1
  349. package/lib/utils/scroll-lock.d.ts.map +0 -1
  350. package/lib/utils/scroll-lock.js.map +0 -1
  351. package/lib/utils/styles.d.ts.map +0 -1
  352. package/lib/utils/styles.js.map +0 -1
  353. package/lib/version.d.ts.map +0 -1
  354. package/lib/version.js.map +0 -1
@@ -1,19 +1,40 @@
1
- /**
2
- * Date Picker Component Styles
3
- * PORTED FROM: cljs/ty/components/date_picker.css
4
- */
1
+ import { FLAVORS } from "../types/common.js";
2
+ const datePickerFlavor = (f, fb) => {
3
+ const c = (s) => fb
4
+ ? s
5
+ ? `var(--ty-color-${f}${s}, var(--ty-color-${f}, var(--ty-color-${fb}${s})))`
6
+ : `var(--ty-color-${f}, var(--ty-color-${fb}))`
7
+ : s
8
+ ? `var(--ty-color-${f}${s}, var(--ty-color-${f}))`
9
+ : `var(--ty-color-${f})`;
10
+ return `
11
+ :host([flavor="${f}"]) {
12
+ --date-picker-accent: var(--ty-input-${f}-border, ${c("-soft")});
13
+ --date-picker-accent-bold: ${c("")};
14
+ --date-picker-ring: color-mix(in oklab, ${c("")} 15%, transparent);
15
+ }
16
+ :host([flavor="${f}+"]) {
17
+ --date-picker-accent: ${c("")};
18
+ --date-picker-accent-bold: ${c("-strong")};
19
+ --date-picker-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
20
+ }
21
+ :host([flavor="${f}-"]) {
22
+ --date-picker-accent: ${c("-faint")};
23
+ --date-picker-accent-bold: ${c("-soft")};
24
+ --date-picker-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
25
+ }
26
+ `;
27
+ };
28
+ export const datePickerCustomFlavorCss = (base) => datePickerFlavor(base, "neutral");
5
29
  export const datePickerStyles = `
6
- /* Date Picker Component Styles */
7
30
  :host {
8
31
  display: block;
9
32
  width: auto;
10
33
  min-width: 200px;
34
+ font-family: inherit;
11
35
 
12
- /* ==========================================================================
13
- Theming Tokens — Date Picker Stub
14
- Thin shim over --ty-input-*. Override these to retheme just the date-picker
15
- trigger without affecting other inputs.
16
- ========================================================================== */
36
+ /* Theming tokens — date-picker stub. Thin shim over --ty-input-*: override
37
+ these to retheme just the date-picker trigger, not other inputs. */
17
38
  --ty-date-picker-bg: var(--ty-input-bg);
18
39
  --ty-date-picker-color: var(--ty-input-color);
19
40
  --ty-date-picker-placeholder: var(--ty-input-placeholder);
@@ -25,18 +46,14 @@ export const datePickerStyles = `
25
46
  --ty-date-picker-disabled-color: var(--ty-input-disabled-color);
26
47
  --ty-date-picker-radius: var(--ty-radius-md);
27
48
 
28
- /* ==========================================================================
29
- Theming Tokens — Calendar Popup Surface
30
- Shared with ty-calendar / ty-calendar-month theming.
31
- ========================================================================== */
49
+ /* Theming tokens — calendar popup surface. Shared with ty-calendar /
50
+ ty-calendar-month theming. */
32
51
  --ty-calendar-surface-bg: var(--ty-surface-floating);
33
52
  --ty-calendar-surface-border: var(--ty-input-border);
34
53
  --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));
35
54
  --ty-calendar-surface-radius: var(--ty-radius-lg);
36
55
 
37
- /* ==========================================================================
38
- Theming Tokens — Time Section
39
- ========================================================================== */
56
+ /* Theming tokens — time section */
40
57
  --ty-calendar-time-bg: transparent;
41
58
  --ty-calendar-time-border: var(--ty-border-faint);
42
59
  --ty-calendar-time-label-color: var(--ty-color-neutral);
@@ -81,7 +98,6 @@ export const datePickerStyles = `
81
98
  width: 100%;
82
99
  }
83
100
 
84
- /* Start-slot icon (leading content inside the date-picker stub) */
85
101
  .date-picker-stub ::slotted([slot="start"]) {
86
102
  display: flex;
87
103
  align-items: center;
@@ -96,7 +112,6 @@ export const datePickerStyles = `
96
112
  height: 1em;
97
113
  }
98
114
 
99
- /* Date picker stub (styled like dropdown) */
100
115
  .date-picker-stub {
101
116
  width: 100%;
102
117
  cursor: pointer;
@@ -106,9 +121,9 @@ export const datePickerStyles = `
106
121
  align-items: center;
107
122
  background: var(--ty-date-picker-bg);
108
123
  color: var(--ty-date-picker-color);
109
- border: 1px solid var(--ty-date-picker-border);
124
+ border: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));
110
125
  border-radius: var(--ty-date-picker-radius);
111
- font-family: var(--ty-font-sans);
126
+ font-family: inherit;
112
127
  font-size: var(--ty-font-sm);
113
128
  font-weight: var(--ty-font-normal);
114
129
  line-height: var(--ty-line-height-tight);
@@ -120,7 +135,7 @@ export const datePickerStyles = `
120
135
  }
121
136
 
122
137
  .date-picker-stub:hover:not([disabled]):not(.open) {
123
- border-color: var(--ty-date-picker-border-hover);
138
+ border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));
124
139
  }
125
140
 
126
141
  .date-picker-stub[disabled] {
@@ -132,16 +147,8 @@ export const datePickerStyles = `
132
147
 
133
148
  .date-picker-stub:focus,
134
149
  .date-picker-stub.open {
135
- border-color: var(--ty-date-picker-border-focus);
136
- box-shadow: 0 0 0 3px var(--ty-date-picker-shadow-focus);
137
- }
138
-
139
- /* Size variants */
140
- .date-picker-stub.xs {
141
- min-height: var(--ty-size-xs);
142
- font-size: var(--ty-font-xs);
143
- padding: var(--ty-spacing-1) var(--ty-spacing-2);
144
- padding-right: calc(var(--ty-spacing-2) + 0.875rem + var(--ty-spacing-1));
150
+ border-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
151
+ box-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));
145
152
  }
146
153
 
147
154
  .date-picker-stub.sm {
@@ -158,90 +165,9 @@ export const datePickerStyles = `
158
165
  padding-right: calc(var(--ty-spacing-4) + 1.125rem + var(--ty-spacing-2));
159
166
  }
160
167
 
161
- .date-picker-stub.xl {
162
- min-height: var(--ty-size-xl);
163
- font-size: var(--ty-font-lg);
164
- padding: var(--ty-spacing-3) var(--ty-spacing-4);
165
- padding-right: calc(var(--ty-spacing-4) + 1.25rem + var(--ty-spacing-3));
166
- }
167
-
168
- /* Flavor variants */
169
- /* Primary - Main brand focus state */
170
- .date-picker-stub.primary {
171
- border-color: var(--ty-input-primary-border, var(--ty-color-primary));
172
- }
173
-
174
- .date-picker-stub.primary:hover:not([disabled]) {
175
- border-color: var(--ty-color-primary-bold);
176
- }
177
-
178
- .date-picker-stub.primary:focus,
179
- .date-picker-stub.primary.open {
180
- border-color: var(--ty-color-primary-bold);
181
- box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-primary) 15%, transparent);
182
- }
183
-
184
- /* Secondary - Supporting action focus state */
185
- .date-picker-stub.secondary {
186
- border-color: var(--ty-input-secondary-border, var(--ty-color-secondary));
187
- }
188
-
189
- .date-picker-stub.secondary:hover:not([disabled]) {
190
- border-color: var(--ty-color-secondary-bold);
191
- }
192
-
193
- .date-picker-stub.secondary:focus,
194
- .date-picker-stub.secondary.open {
195
- border-color: var(--ty-color-secondary-bold);
196
- box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-secondary) 15%, transparent);
197
- }
198
-
199
- /* Success - Valid/confirmed input state */
200
- .date-picker-stub.success {
201
- border-color: var(--ty-input-success-border, var(--ty-color-success));
202
- }
203
-
204
- .date-picker-stub.success:hover:not([disabled]) {
205
- border-color: var(--ty-color-success-bold);
206
- }
207
-
208
- .date-picker-stub.success:focus,
209
- .date-picker-stub.success.open {
210
- border-color: var(--ty-color-success-bold);
211
- box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-success) 15%, transparent);
212
- }
213
-
214
- /* Danger - Error/invalid input state */
215
- .date-picker-stub.danger {
216
- border-color: var(--ty-input-danger-border, var(--ty-color-danger));
217
- }
218
-
219
- .date-picker-stub.danger:hover:not([disabled]) {
220
- border-color: var(--ty-color-danger-bold);
221
- }
222
-
223
- .date-picker-stub.danger:focus,
224
- .date-picker-stub.danger.open {
225
- border-color: var(--ty-color-danger-bold);
226
- box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);
227
- }
168
+ /* Flavor variants — set --date-picker-accent*, consumed by the stub rules above */
169
+ ${FLAVORS.filter((f) => f !== "neutral").map((f) => datePickerFlavor(f)).join("")}
228
170
 
229
- /* Warning - Caution/attention needed input state */
230
- .date-picker-stub.warning {
231
- border-color: var(--ty-input-warning-border, var(--ty-color-warning));
232
- }
233
-
234
- .date-picker-stub.warning:hover:not([disabled]) {
235
- border-color: var(--ty-color-warning-bold);
236
- }
237
-
238
- .date-picker-stub.warning:focus,
239
- .date-picker-stub.warning.open {
240
- border-color: var(--ty-color-warning-bold);
241
- box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-warning) 15%, transparent);
242
- }
243
-
244
- /* Text content */
245
171
  .stub-text {
246
172
  flex: 1;
247
173
  white-space: nowrap;
@@ -256,7 +182,6 @@ export const datePickerStyles = `
256
182
  color: var(--ty-date-picker-placeholder);
257
183
  }
258
184
 
259
- /* Icons */
260
185
  .stub-icons {
261
186
  display: flex;
262
187
  align-items: center;
@@ -282,13 +207,18 @@ export const datePickerStyles = `
282
207
  color: var(--ty-color-neutral-soft);
283
208
  cursor: pointer;
284
209
  border-radius: var(--ty-radius-sm);
285
- transition: all 0.15s ease;
210
+ transition: var(--ty-local-transition, all 0.15s ease);
286
211
  pointer-events: auto;
287
212
  }
288
213
 
289
214
  .stub-clear:hover {
290
- color: var(--ty-color-negative);
291
- background-color: var(--ty-bg-negative-faint);
215
+ /* Clear is a destructive utility action, not the field's semantic flavor
216
+ — it stays neutral at rest and always warns danger-red on hover,
217
+ regardless of the field's own flavor. (--ty-color-negative/
218
+ --ty-bg-negative-faint used here previously don't exist as tokens —
219
+ this silently fell back to unstyled inherited color.) */
220
+ color: var(--ty-color-danger);
221
+ background-color: var(--ty-bg-danger-soft);
292
222
  }
293
223
 
294
224
  .stub-arrow {
@@ -297,16 +227,16 @@ export const datePickerStyles = `
297
227
  justify-content: center;
298
228
  width: 1rem;
299
229
  height: 1rem;
300
- color: var(--ty-color-neutral-soft);
230
+ color: var(--date-picker-accent, var(--ty-color-neutral-soft));
301
231
  }
302
232
 
303
233
  .date-picker-stub:hover .stub-arrow {
304
- color: var(--ty-color-neutral);
234
+ color: var(--date-picker-accent-bold, var(--ty-color-neutral));
305
235
  }
306
236
 
307
237
  .date-picker-stub:focus .stub-arrow,
308
238
  .date-picker-stub.open .stub-arrow {
309
- color: var(--ty-date-picker-border-focus);
239
+ color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));
310
240
  }
311
241
 
312
242
  /* Calendar dialog (showModal positioning system) */
@@ -321,16 +251,22 @@ export const datePickerStyles = `
321
251
  box-sizing: border-box;
322
252
  padding: var(--calendar-padding, 8px);
323
253
 
324
- /* Hidden by default */
325
254
  opacity: 0;
326
- transition: opacity 200ms ease;
255
+ /* Entrance motion uses the individual scale/translate properties so it
256
+ composes with the collision-shift transform below (they apply first). */
257
+ scale: 0.96;
258
+ translate: 0 -6px;
259
+ transform-origin: top center;
260
+ transition:
261
+ opacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
262
+ scale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),
263
+ translate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));
327
264
 
328
265
  transform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));
329
266
  top: -1000px;
330
267
  left: -1000px;
331
268
  }
332
269
 
333
- /* Direction-based positioning with CSS classes */
334
270
  .calendar-dialog.position-below {
335
271
  left: var(--calendar-x);
336
272
  top: var(--calendar-y);
@@ -341,17 +277,34 @@ export const datePickerStyles = `
341
277
  bottom: var(--calendar-y);
342
278
  top: auto;
343
279
  flex-direction: column-reverse;
280
+ translate: 0 6px;
281
+ transform-origin: bottom center;
344
282
  }
345
283
 
346
284
  .calendar-dialog.open {
347
285
  opacity: 1;
286
+ scale: 1;
287
+ translate: 0 0;
288
+ }
289
+
290
+ /* First-frame "from" values — see select-base.ts: transitions can't start on
291
+ an element that was display:none last frame; @starting-style fixes that. */
292
+ @starting-style {
293
+ .calendar-dialog.open {
294
+ opacity: 0;
295
+ scale: 0.96;
296
+ translate: 0 -6px;
297
+ }
298
+
299
+ .calendar-dialog.open.position-above {
300
+ translate: 0 6px;
301
+ }
348
302
  }
349
303
 
350
304
  .calendar-dialog::backdrop {
351
305
  background: transparent
352
306
  }
353
307
 
354
- /* Calendar content container */
355
308
  .calendar-content {
356
309
  background-color: var(--ty-calendar-surface-bg);
357
310
  border: 1px solid var(--ty-calendar-surface-border);
@@ -363,7 +316,6 @@ export const datePickerStyles = `
363
316
  align-items: center;
364
317
  }
365
318
 
366
- /* Native date input for mobile */
367
319
  /* Native input is invisible — used only to trigger the OS picker */
368
320
  .native-date-input {
369
321
  position: absolute;
@@ -388,7 +340,6 @@ export const datePickerStyles = `
388
340
  cursor: pointer;
389
341
  }
390
342
 
391
- /* Time input section */
392
343
  .time-section {
393
344
  display: flex;
394
345
  min-height: 2.5rem;
@@ -416,7 +367,7 @@ export const datePickerStyles = `
416
367
  border-radius: var(--ty-radius-sm);
417
368
  background: var(--ty-input-bg);
418
369
  color: var(--ty-calendar-time-input-color);
419
- font-family: var(--ty-font-sans);
370
+ font-family: inherit;
420
371
  font-size: var(--ty-font-sm);
421
372
  font-variant-numeric: tabular-nums;
422
373
  text-align: center;
@@ -443,4 +394,3 @@ export const datePickerStyles = `
443
394
  flex-shrink: 0;
444
395
  }
445
396
  `;
446
- //# sourceMappingURL=date-picker.js.map
@@ -1,2 +1 @@
1
- export declare const fileUploadStyles = "\n:host {\n display: block;\n font-family: var(--ty-font-sans);\n width: 100%;\n}\n\n.file-upload-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n/* ===== LABEL ===== */\n\n.upload-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 4px;\n display: flex;\n align-items: center;\n}\n\n.required-icon {\n color: var(--ty-color-danger);\n margin-left: 4px;\n font-size: 0.75rem;\n line-height: 1;\n}\n\n/* ===== DROP ZONE ===== */\n\n.drop-zone {\n border: 2px dashed var(--ty-border);\n border-radius: var(--ty-radius-base);\n padding: 2rem 1.5rem;\n text-align: center;\n cursor: pointer;\n transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;\n outline: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n min-height: 140px;\n user-select: none;\n}\n\n.drop-zone:hover:not(.disabled) {\n border-color: var(--ty-input-border-hover);\n background: var(--ty-surface-content);\n}\n\n.drop-zone.focused {\n border-color: var(--ty-input-border-focus);\n box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n\n.drop-zone.drag-active {\n border-color: var(--ty-color-primary);\n border-style: solid;\n background: var(--ty-bg-primary-);\n}\n\n.drop-zone.drag-active .upload-icon {\n color: var(--ty-color-primary);\n transform: translateY(-2px);\n}\n\n.drop-zone.has-files {\n min-height: 80px;\n padding: 1.25rem 1.5rem;\n}\n\n.drop-zone.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.drop-zone.error {\n border-color: var(--ty-color-danger);\n}\n\n.drop-zone.error:not(.disabled) {\n background: var(--ty-bg-danger-);\n}\n\n/* ===== UPLOAD ICON ===== */\n\n.upload-icon {\n color: var(--ty-text-faint);\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: color 0.15s ease, transform 0.15s ease;\n pointer-events: none;\n}\n\n.upload-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* ===== HINT TEXT ===== */\n\n.upload-hint {\n color: var(--ty-text-soft);\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n pointer-events: none;\n}\n\n.browse-link {\n color: var(--ty-color-primary);\n font-weight: var(--ty-font-medium);\n}\n\n.upload-sub-hint {\n color: var(--ty-text-faint);\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n pointer-events: none;\n}\n\n/* ===== FILE LIST ===== */\n\n.file-list {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-top: 0.5rem;\n}\n\n.file-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n border-radius: var(--ty-radius-base);\n background: var(--ty-surface-content);\n border: 1px solid var(--ty-border-soft);\n}\n\n.file-icon {\n color: var(--ty-text-faint);\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n}\n\n.file-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.file-name {\n flex: 1;\n font-size: var(--ty-font-sm);\n color: var(--ty-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n.file-size {\n font-size: var(--ty-font-xs);\n color: var(--ty-text-faint);\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n}\n\n.file-remove {\n flex-shrink: 0;\n cursor: pointer;\n color: var(--ty-text-faint);\n width: 1.25rem;\n height: 1.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transition: color 0.15s ease, background-color 0.15s ease;\n border: none;\n background: none;\n padding: 0;\n outline: none;\n}\n\n.file-remove:hover {\n color: var(--ty-color-danger);\n background: var(--ty-bg-danger-);\n}\n\n.file-remove:focus-visible {\n box-shadow: 0 0 0 2px var(--ty-color-danger);\n}\n\n.file-remove svg {\n width: 12px;\n height: 12px;\n}\n\n/* ===== ERROR MESSAGE ===== */\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 4px;\n}\n\n/* ===== ACCESSIBILITY ===== */\n\n@media (prefers-reduced-motion: reduce) {\n .drop-zone,\n .upload-icon,\n .file-remove {\n transition: none;\n }\n}\n\n@media (prefers-contrast: high) {\n .drop-zone {\n border-width: 3px;\n }\n}\n";
2
- //# sourceMappingURL=file-upload.d.ts.map
1
+ export declare const fileUploadStyles = "\n:host {\n display: block;\n font-family: inherit;\n width: 100%;\n}\n\n.file-upload-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.upload-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 4px;\n display: flex;\n align-items: center;\n}\n\n.required-icon {\n color: var(--ty-color-danger);\n margin-left: 4px;\n font-size: 0.75rem;\n line-height: 1;\n}\n\n.drop-zone {\n border: 2px dashed var(--ty-border);\n border-radius: var(--ty-radius-base);\n padding: 2rem 1.5rem;\n text-align: center;\n cursor: pointer;\n transition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);\n outline: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n min-height: 140px;\n user-select: none;\n}\n\n.drop-zone:hover:not(.disabled) {\n border-color: var(--ty-input-border-hover);\n background: var(--ty-surface-content);\n}\n\n.drop-zone.focused {\n border-color: var(--ty-input-border-focus);\n box-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n\n.drop-zone.drag-active {\n border-color: var(--ty-color-primary);\n border-style: solid;\n background: var(--ty-bg-primary-);\n}\n\n.drop-zone.drag-active .upload-icon {\n color: var(--ty-color-primary);\n transform: translateY(-2px);\n}\n\n.drop-zone.has-files {\n min-height: 80px;\n padding: 1.25rem 1.5rem;\n}\n\n.drop-zone.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.drop-zone.error {\n border-color: var(--ty-color-danger);\n}\n\n.drop-zone.error:not(.disabled) {\n background: var(--ty-bg-danger-);\n}\n\n.upload-icon {\n color: var(--ty-text-faint);\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);\n pointer-events: none;\n}\n\n.upload-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.upload-hint {\n color: var(--ty-text-soft);\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n pointer-events: none;\n}\n\n.browse-link {\n color: var(--ty-color-primary);\n font-weight: var(--ty-font-medium);\n}\n\n.upload-sub-hint {\n color: var(--ty-text-faint);\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n pointer-events: none;\n}\n\n.file-list {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-top: 0.5rem;\n}\n\n.file-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n border-radius: var(--ty-radius-base);\n background: var(--ty-surface-content);\n border: 1px solid var(--ty-border-soft);\n}\n\n.file-icon {\n color: var(--ty-text-faint);\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n}\n\n.file-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.file-name {\n flex: 1;\n font-size: var(--ty-font-sm);\n color: var(--ty-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n.file-size {\n font-size: var(--ty-font-xs);\n color: var(--ty-text-faint);\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n}\n\n.file-remove {\n flex-shrink: 0;\n cursor: pointer;\n color: var(--ty-text-faint);\n width: 1.25rem;\n height: 1.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);\n border: none;\n background: none;\n padding: 0;\n outline: none;\n}\n\n.file-remove:hover {\n color: var(--ty-color-danger);\n background: var(--ty-bg-danger-);\n}\n\n.file-remove:focus-visible {\n box-shadow: 0 0 0 2px var(--ty-color-danger);\n}\n\n.file-remove svg {\n width: 12px;\n height: 12px;\n}\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 4px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .drop-zone,\n .upload-icon,\n .file-remove {\n transition: none;\n }\n}\n\n@media (prefers-contrast: high) {\n .drop-zone {\n border-width: 3px;\n }\n}\n";
@@ -1,7 +1,7 @@
1
1
  export const fileUploadStyles = `
2
2
  :host {
3
3
  display: block;
4
- font-family: var(--ty-font-sans);
4
+ font-family: inherit;
5
5
  width: 100%;
6
6
  }
7
7
 
@@ -12,8 +12,6 @@ export const fileUploadStyles = `
12
12
  box-sizing: border-box;
13
13
  }
14
14
 
15
- /* ===== LABEL ===== */
16
-
17
15
  .upload-label {
18
16
  font-size: var(--ty-font-sm);
19
17
  line-height: var(--ty-leading-sm);
@@ -33,15 +31,13 @@ export const fileUploadStyles = `
33
31
  line-height: 1;
34
32
  }
35
33
 
36
- /* ===== DROP ZONE ===== */
37
-
38
34
  .drop-zone {
39
35
  border: 2px dashed var(--ty-border);
40
36
  border-radius: var(--ty-radius-base);
41
37
  padding: 2rem 1.5rem;
42
38
  text-align: center;
43
39
  cursor: pointer;
44
- transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
40
+ transition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);
45
41
  outline: none;
46
42
  display: flex;
47
43
  flex-direction: column;
@@ -92,8 +88,6 @@ export const fileUploadStyles = `
92
88
  background: var(--ty-bg-danger-);
93
89
  }
94
90
 
95
- /* ===== UPLOAD ICON ===== */
96
-
97
91
  .upload-icon {
98
92
  color: var(--ty-text-faint);
99
93
  width: 2.5rem;
@@ -101,7 +95,7 @@ export const fileUploadStyles = `
101
95
  display: flex;
102
96
  align-items: center;
103
97
  justify-content: center;
104
- transition: color 0.15s ease, transform 0.15s ease;
98
+ transition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);
105
99
  pointer-events: none;
106
100
  }
107
101
 
@@ -110,8 +104,6 @@ export const fileUploadStyles = `
110
104
  height: 100%;
111
105
  }
112
106
 
113
- /* ===== HINT TEXT ===== */
114
-
115
107
  .upload-hint {
116
108
  color: var(--ty-text-soft);
117
109
  font-size: var(--ty-font-sm);
@@ -131,8 +123,6 @@ export const fileUploadStyles = `
131
123
  pointer-events: none;
132
124
  }
133
125
 
134
- /* ===== FILE LIST ===== */
135
-
136
126
  .file-list {
137
127
  display: flex;
138
128
  flex-direction: column;
@@ -191,7 +181,7 @@ export const fileUploadStyles = `
191
181
  align-items: center;
192
182
  justify-content: center;
193
183
  border-radius: 50%;
194
- transition: color 0.15s ease, background-color 0.15s ease;
184
+ transition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);
195
185
  border: none;
196
186
  background: none;
197
187
  padding: 0;
@@ -212,8 +202,6 @@ export const fileUploadStyles = `
212
202
  height: 12px;
213
203
  }
214
204
 
215
- /* ===== ERROR MESSAGE ===== */
216
-
217
205
  .error-message {
218
206
  font-size: var(--ty-font-xs);
219
207
  line-height: var(--ty-leading-xs);
@@ -222,8 +210,6 @@ export const fileUploadStyles = `
222
210
  padding-left: 4px;
223
211
  }
224
212
 
225
- /* ===== ACCESSIBILITY ===== */
226
-
227
213
  @media (prefers-reduced-motion: reduce) {
228
214
  .drop-zone,
229
215
  .upload-icon,
@@ -238,4 +224,3 @@ export const fileUploadStyles = `
238
224
  }
239
225
  }
240
226
  `;
241
- //# sourceMappingURL=file-upload.js.map
@@ -1,6 +1,2 @@
1
- /**
2
- * Icon Component Styles
3
- * PORTED FROM: clj/ty/components/icon.css
4
- */
5
- export declare const iconStyles = "\n:host {\n /* Display & Layout - CRITICAL: No containment to prevent paint deferral */\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n \n /* Dimensions with CSS variable support for flexibility */\n width: var(--ty-icon-size, 1em);\n height: var(--ty-icon-size, 1em);\n \n /* Enforce square aspect ratio */\n aspect-ratio: 1 / 1;\n \n \n /* Color & Transitions */\n color: inherit;\n transition: color var(--ty-transition-fast);\n \n /* Flex Behavior */\n flex-shrink: 0;\n \n /* Visibility - Force immediate rendering */\n visibility: visible !important;\n opacity: 1;\n \n /* ANTI-FLICKER: Force browser to paint immediately */\n will-change: contents;\n \n /* Prevent any sub-pixel rendering issues */\n transform: translateZ(0);\n -webkit-font-smoothing: antialiased;\n}\n\n/* The SVG element inside shadow DOM (registry / fallback path) */\n:host svg {\n width: 100%;\n height: 100%;\n display: block;\n\n /* Force immediate SVG rendering */\n will-change: auto;\n transform: translateZ(0);\n}\n\n/* Slotted SVG (server-side path: <ty-icon><svg>...</svg></ty-icon>).\n ::slotted() targets light-DOM children so they fill the host the same way\n shadow-DOM SVG does. Color is inherited from :host via currentColor. */\n::slotted(svg),\n::slotted(img) {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* When used in slots, ensure proper display */\n:host([slot]) {\n display: inline-flex;\n}\n\n/* Size variants via CSS classes on the host */\n:host(.icon-xs) {\n width: 0.75em;\n height: 0.75em;\n}\n\n:host(.icon-sm) {\n width: 0.875em;\n height: 0.875em;\n}\n\n:host(.icon-md) {\n width: 1em;\n height: 1em;\n}\n\n:host(.icon-lg) {\n width: 1.25em;\n height: 1.25em;\n}\n\n:host(.icon-xl) {\n width: 1.5em;\n height: 1.5em;\n}\n\n:host(.icon-2xl) {\n width: 2em;\n height: 2em;\n}\n\n/* Fixed pixel sizes */\n:host(.icon-12) {\n width: 12px;\n height: 12px;\n}\n\n:host(.icon-14) {\n width: 14px;\n height: 14px;\n}\n\n:host(.icon-16) {\n width: 16px;\n height: 16px;\n}\n\n:host(.icon-18) {\n width: 18px;\n height: 18px;\n}\n\n:host(.icon-20) {\n width: 20px;\n height: 20px;\n}\n\n:host(.icon-24) {\n width: 24px;\n height: 24px;\n}\n\n:host(.icon-32) {\n width: 32px;\n height: 32px;\n}\n\n:host(.icon-48) {\n width: 48px;\n height: 48px;\n}\n\n:host(.icon-64) {\n width: 64px;\n height: 64px;\n}\n\n:host(.icon-80) {\n width: 80px;\n height: 80px;\n}\n\n:host(.icon-96) {\n width: 96px;\n height: 96px;\n}\n\n/* Spinning animation - default tempo */\n:host(.icon-spin) {\n animation: icon-spin 1s linear infinite;\n}\n\n/* Spinning animation - slow tempo */\n:host(.icon-spin.icon-tempo-slow) {\n animation: icon-spin 2s linear infinite;\n}\n\n/* Spinning animation - fast tempo */\n:host(.icon-spin.icon-tempo-fast) {\n animation: icon-spin 0.5s linear infinite;\n}\n\n@keyframes icon-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Pulse animation - default tempo */\n:host(.icon-pulse) {\n animation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n/* Pulse animation - slow tempo */\n:host(.icon-pulse.icon-tempo-slow) {\n animation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n/* Pulse animation - fast tempo */\n:host(.icon-pulse.icon-tempo-fast) {\n animation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes icon-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n}\n\n/* Accessibility: ensure icons are not announced by screen readers by default */\n:host {\n -webkit-user-select: none;\n user-select: none;\n}\n\n/* Allow pointer events to pass through by default */\n:host(:not(.icon-clickable)) {\n pointer-events: none;\n}\n\n/* Clickable icons */\n:host(.icon-clickable) {\n cursor: pointer;\n pointer-events: auto;\n transition: color var(--ty-transition-fast), transform var(--ty-transition-fast);\n}\n\n:host(.icon-clickable:hover) {\n transform: scale(1.1);\n}\n\n:host(.icon-clickable:active) {\n transform: scale(0.95);\n}\n\n/* Disabled state */\n:host(.icon-disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Block display variant */\n:host(.icon-block) {\n display: block;\n}\n";
6
- //# sourceMappingURL=icon.d.ts.map
1
+ /** Icon Component Styles */
2
+ export declare const iconStyles = "\n:host {\n /* Display & Layout - CRITICAL: No containment to prevent paint deferral */\n /* Block-level flex, NOT inline-flex: as an inline box the icon generates a\n line box in its parent, so a shrink-wrapping wrapper (badge, .rounded-full\n chip) inherits the parent's line-height strut and renders taller than wide\n \u2014 a 12px icon in a 24px-line-height badge becomes a 22x34 oval. To place an\n icon inline with text, make the *text wrapper* inline-flex instead. */\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n \n width: var(--ty-icon-size, 1em);\n height: var(--ty-icon-size, 1em);\n \n aspect-ratio: 1 / 1;\n \n \n color: inherit;\n transition: color var(--ty-transition-fast);\n \n flex-shrink: 0;\n \n /* Visibility - Force immediate rendering */\n visibility: visible !important;\n opacity: 1;\n \n /* ANTI-FLICKER: Force browser to paint immediately */\n will-change: contents;\n \n /* Prevent any sub-pixel rendering issues */\n transform: translateZ(0);\n -webkit-font-smoothing: antialiased;\n}\n\n/* The SVG element inside shadow DOM (registry / fallback path) */\n:host svg {\n width: 100%;\n height: 100%;\n display: block;\n\n /* Force immediate SVG rendering */\n will-change: auto;\n transform: translateZ(0);\n}\n\n/* Slotted SVG (server-side path: <ty-icon><svg>...</svg></ty-icon>).\n ::slotted() targets light-DOM children so they fill the host the same way\n shadow-DOM SVG does. Color is inherited from :host via currentColor. */\n::slotted(svg),\n::slotted(img) {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* In a named slot the icon sits alongside text (button start/end), so inline\n layout is what the host expects there. */\n:host([slot]) {\n display: inline-flex;\n}\n\n:host(.icon-xs) {\n width: 0.75em;\n height: 0.75em;\n}\n\n:host(.icon-sm) {\n width: 0.875em;\n height: 0.875em;\n}\n\n:host(.icon-md) {\n width: 1em;\n height: 1em;\n}\n\n:host(.icon-lg) {\n width: 1.25em;\n height: 1.25em;\n}\n\n:host(.icon-xl) {\n width: 1.5em;\n height: 1.5em;\n}\n\n:host(.icon-2xl) {\n width: 2em;\n height: 2em;\n}\n\n/* Fixed pixel sizes */\n:host(.icon-12) {\n width: 12px;\n height: 12px;\n}\n\n:host(.icon-14) {\n width: 14px;\n height: 14px;\n}\n\n:host(.icon-16) {\n width: 16px;\n height: 16px;\n}\n\n:host(.icon-18) {\n width: 18px;\n height: 18px;\n}\n\n:host(.icon-20) {\n width: 20px;\n height: 20px;\n}\n\n:host(.icon-24) {\n width: 24px;\n height: 24px;\n}\n\n:host(.icon-32) {\n width: 32px;\n height: 32px;\n}\n\n:host(.icon-48) {\n width: 48px;\n height: 48px;\n}\n\n:host(.icon-64) {\n width: 64px;\n height: 64px;\n}\n\n:host(.icon-80) {\n width: 80px;\n height: 80px;\n}\n\n:host(.icon-96) {\n width: 96px;\n height: 96px;\n}\n\n:host(.icon-spin) {\n animation: icon-spin 1s linear infinite;\n}\n\n:host(.icon-spin.icon-tempo-slow) {\n animation: icon-spin 2s linear infinite;\n}\n\n:host(.icon-spin.icon-tempo-fast) {\n animation: icon-spin 0.5s linear infinite;\n}\n\n@keyframes icon-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n:host(.icon-pulse) {\n animation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n:host(.icon-pulse.icon-tempo-slow) {\n animation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n:host(.icon-pulse.icon-tempo-fast) {\n animation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes icon-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n}\n\n/* Accessibility: ensure icons are not announced by screen readers by default */\n:host {\n -webkit-user-select: none;\n user-select: none;\n}\n\n:host(:not(.icon-clickable)) {\n pointer-events: none;\n}\n\n:host(.icon-clickable) {\n cursor: pointer;\n pointer-events: auto;\n transition: color var(--ty-transition-fast), transform var(--ty-transition-fast);\n}\n\n:host(.icon-clickable:hover) {\n transform: scale(1.1);\n}\n\n:host(.icon-clickable:active) {\n transform: scale(0.95);\n}\n\n:host(.icon-disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host(.icon-block) {\n display: block;\n}\n";
@@ -1,28 +1,25 @@
1
- /**
2
- * Icon Component Styles
3
- * PORTED FROM: clj/ty/components/icon.css
4
- */
5
1
  export const iconStyles = `
6
2
  :host {
7
3
  /* Display & Layout - CRITICAL: No containment to prevent paint deferral */
4
+ /* Block-level flex, NOT inline-flex: as an inline box the icon generates a
5
+ line box in its parent, so a shrink-wrapping wrapper (badge, .rounded-full
6
+ chip) inherits the parent's line-height strut and renders taller than wide
7
+ — a 12px icon in a 24px-line-height badge becomes a 22x34 oval. To place an
8
+ icon inline with text, make the *text wrapper* inline-flex instead. */
8
9
  display: flex;
9
10
  align-items: center;
10
11
  justify-content: center;
11
12
  line-height: 0;
12
13
 
13
- /* Dimensions with CSS variable support for flexibility */
14
14
  width: var(--ty-icon-size, 1em);
15
15
  height: var(--ty-icon-size, 1em);
16
16
 
17
- /* Enforce square aspect ratio */
18
17
  aspect-ratio: 1 / 1;
19
18
 
20
19
 
21
- /* Color & Transitions */
22
20
  color: inherit;
23
21
  transition: color var(--ty-transition-fast);
24
22
 
25
- /* Flex Behavior */
26
23
  flex-shrink: 0;
27
24
 
28
25
  /* Visibility - Force immediate rendering */
@@ -58,12 +55,12 @@ export const iconStyles = `
58
55
  display: block;
59
56
  }
60
57
 
61
- /* When used in slots, ensure proper display */
58
+ /* In a named slot the icon sits alongside text (button start/end), so inline
59
+ layout is what the host expects there. */
62
60
  :host([slot]) {
63
61
  display: inline-flex;
64
62
  }
65
63
 
66
- /* Size variants via CSS classes on the host */
67
64
  :host(.icon-xs) {
68
65
  width: 0.75em;
69
66
  height: 0.75em;
@@ -150,17 +147,14 @@ export const iconStyles = `
150
147
  height: 96px;
151
148
  }
152
149
 
153
- /* Spinning animation - default tempo */
154
150
  :host(.icon-spin) {
155
151
  animation: icon-spin 1s linear infinite;
156
152
  }
157
153
 
158
- /* Spinning animation - slow tempo */
159
154
  :host(.icon-spin.icon-tempo-slow) {
160
155
  animation: icon-spin 2s linear infinite;
161
156
  }
162
157
 
163
- /* Spinning animation - fast tempo */
164
158
  :host(.icon-spin.icon-tempo-fast) {
165
159
  animation: icon-spin 0.5s linear infinite;
166
160
  }
@@ -175,17 +169,14 @@ export const iconStyles = `
175
169
  }
176
170
  }
177
171
 
178
- /* Pulse animation - default tempo */
179
172
  :host(.icon-pulse) {
180
173
  animation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
181
174
  }
182
175
 
183
- /* Pulse animation - slow tempo */
184
176
  :host(.icon-pulse.icon-tempo-slow) {
185
177
  animation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
186
178
  }
187
179
 
188
- /* Pulse animation - fast tempo */
189
180
  :host(.icon-pulse.icon-tempo-fast) {
190
181
  animation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;
191
182
  }
@@ -207,12 +198,10 @@ export const iconStyles = `
207
198
  user-select: none;
208
199
  }
209
200
 
210
- /* Allow pointer events to pass through by default */
211
201
  :host(:not(.icon-clickable)) {
212
202
  pointer-events: none;
213
203
  }
214
204
 
215
- /* Clickable icons */
216
205
  :host(.icon-clickable) {
217
206
  cursor: pointer;
218
207
  pointer-events: auto;
@@ -227,15 +216,12 @@ export const iconStyles = `
227
216
  transform: scale(0.95);
228
217
  }
229
218
 
230
- /* Disabled state */
231
219
  :host(.icon-disabled) {
232
220
  opacity: 0.5;
233
221
  cursor: not-allowed;
234
222
  }
235
223
 
236
- /* Block display variant */
237
224
  :host(.icon-block) {
238
225
  display: block;
239
226
  }
240
227
  `;
241
- //# sourceMappingURL=icon.js.map
@@ -1,7 +1,4 @@
1
- /**
2
- * Input Component Styles
3
- * PORTED FROM: clj/ty/components/input.css
4
- * Phase A: Regular input styles only (no checkbox, no numeric formatting)
5
- */
6
- export declare const inputStyles = "\n:host {\n display: block;\n font-family: var(--ty-font-sans);\n width: 100%;\n}\n\n:host([size=\"xl\"]) {\n font-size: 20px;\n}\n\n\n:host([size=\"xs\"]) {\n font-size: 12px;\n}\n\n\n:host([size=\"sm\"]) {\n font-size: 14px;\n}\n\n:host([size=\"lg\"]) {\n font-size: 18px;\n}\n\n.input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n/* ===== LABEL STYLING ===== */\n\n.ty-field-label {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-medium);\n color: var(--ty-label-color);\n margin-bottom: 6px;\n padding-left: 12px;\n display: flex;\n align-items: center;\n}\n\n/* Required indicator - using SVG icon */\n.required-icon {\n display: inline-flex;\n align-items: center;\n color: var(--ty-color-danger);\n width: 12px;\n height: 12px;\n margin-left: 4px;\n vertical-align: middle;\n}\n\n.required-icon svg {\n width: 100%;\n height: 100%;\n}\n\n/* ===== INPUT WRAPPER WITH SLOTS ===== */\n\n.input-wrapper {\n display: flex;\n align-items: center;\n gap: 0.5rem; /* No gap by default */\n width: 100%;\n box-sizing: border-box;\n border: 1px solid var(--input-border, var(--ty-input-border));\n border-radius: var(--ty-radius-base);\n background: var(--input-bg, var(--input-bg, var(--ty-input-bg)));\n transition: all 0.15s ease-in-out;\n \n /* Default size (md) */\n min-height: 40px;\n padding: 0 12px;\n}\n\n/* Wrapper states */\n.input-wrapper:hover:not(.disabled) {\n border-color: var(--input-border-hover, var(--ty-input-border-hover));\n}\n\n.input-wrapper.focused {\n border-color: var(--input-border-focus, var(--ty-input-border-focus));\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n.input-wrapper.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n background: var(--input-disabled-bg, var(--ty-input-disabled-bg));\n border-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n\n/* ===== SLOT STYLING ===== */\n\n/* Style slotted content directly (no wrappers needed) */\n::slotted([slot=\"start\"]),\n::slotted([slot=\"end\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--ty-color-text-soft);\n}\n\n/* Password reveal toggle (rendered for type=\"password\") */\n.password-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--input-placeholder, var(--ty-input-placeholder));\n transition: color 0.15s ease-in-out;\n}\n.password-toggle:hover {\n color: var(--input-color, var(--ty-input-color));\n}\n.password-toggle:focus-visible {\n outline: 2px solid var(--ty-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n.password-toggle svg {\n width: 1rem;\n height: 1rem;\n}\n\n/* Icon sizing for slotted icons */\n::slotted(ty-icon) {\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n}\n\n/* ===== ERROR MESSAGE STYLING ===== */\n\n.error-message {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n color: var(--ty-color-danger);\n margin-top: 4px;\n padding-left: 12px;\n}\n\n/* Error state for wrapper */\n.input-wrapper.error {\n border-color: var(--ty-color-danger);\n background: var(--ty-bg-danger-soft);\n}\n\n.input-wrapper.error.focused {\n border-color: var(--ty-color-danger-bold);\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* ===== INPUT BASE STYLING ===== */\n\ninput {\n /* Reset and base styles \u2014 Linear-paired typography */\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n border: none;\n outline: none;\n background: transparent;\n color: var(--input-color, var(--ty-input-color));\n font-family: inherit;\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n font-weight: var(--ty-font-normal);\n padding: 0;\n margin: 0;\n}\n\n/* Remove number input spinner arrows */\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n/* Disabled state */\ninput:disabled {\n cursor: not-allowed;\n color: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\n\n/* Placeholder styling */\ninput::placeholder {\n color: var(--input-placeholder, var(--ty-input-placeholder));\n font-weight: 400;\n}\n\n/* ===== SIZE MODIFIERS ===== */\n\n/* Extra Small */\n.input-wrapper.xs {\n min-height: 32px;\n padding: 0 8px;\n border-radius: var(--ty-input-radius-xs, var(--ty-radius-base));\n}\n\n.input-wrapper.xs input {\n font-size: var(--ty-font-xs);\n line-height: var(--ty-leading-xs);\n letter-spacing: var(--ty-tracking-xs);\n}\n\n/* Small */\n.input-wrapper.sm {\n min-height: 36px;\n padding: 0 10px;\n border-radius: var(--ty-input-radius-sm, var(--ty-radius-base));\n}\n\n.input-wrapper.sm input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\n/* Medium (default) */\n.input-wrapper.md {\n min-height: 40px;\n padding: 0 12px;\n border-radius: var(--ty-input-radius-md, var(--ty-radius-base));\n}\n\n.input-wrapper.md input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n}\n\n/* Large */\n.input-wrapper.lg {\n min-height: 44px;\n padding: 0 14px;\n border-radius: var(--ty-input-radius-lg, var(--ty-radius-base));\n}\n\n.input-wrapper.lg input {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n}\n\n/* Extra Large */\n.input-wrapper.xl {\n min-height: 48px;\n padding: 0 16px;\n border-radius: var(--ty-input-radius-xl, var(--ty-radius-base));\n}\n\n.input-wrapper.xl input {\n font-size: var(--ty-font-lg);\n line-height: var(--ty-leading-lg);\n letter-spacing: var(--ty-tracking-lg);\n}\n\n/* ===== SEMANTIC FLAVOR MODIFIERS ===== */\n\n/* Primary */\n.input-wrapper.primary {\n border-color: var(--ty-input-primary-border, var(--ty-color-primary));\n}\n\n.input-wrapper.primary:hover:not(.disabled) {\n border-color: var(--ty-color-primary-bold);\n}\n\n.input-wrapper.primary.focused {\n border-color: var(--ty-color-primary-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-primary) 15%, transparent);\n}\n\n/* Secondary */\n.input-wrapper.secondary {\n border-color: var(--ty-input-secondary-border, var(--ty-color-secondary));\n}\n\n.input-wrapper.secondary.focused {\n border-color: var(--ty-color-secondary-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-secondary) 15%, transparent);\n}\n\n/* Success */\n.input-wrapper.success {\n border-color: var(--ty-input-success-border);\n}\n\n.input-wrapper.success:hover:not(.disabled) {\n border-color: var(--ty-color-success-bold);\n}\n\n.input-wrapper.success.focused {\n border-color: var(--ty-color-success-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-success) 15%, transparent);\n}\n\n/* Danger */\n.input-wrapper.danger {\n border-color: var(--ty-input-danger-border);\n}\n\n.input-wrapper.danger:hover:not(.disabled) {\n border-color: var(--ty-color-danger-bold);\n}\n\n.input-wrapper.danger.focused {\n border-color: var(--ty-color-danger-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);\n}\n\n/* Warning */\n.input-wrapper.warning {\n border-color: var(--ty-input-warning-border);\n}\n\n.input-wrapper.warning:hover:not(.disabled) {\n border-color: var(--ty-color-warning-bold);\n}\n\n.input-wrapper.warning.focused {\n border-color: var(--ty-color-warning-bold);\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-warning) 15%, transparent);\n}\n\n/* Neutral (default) */\n.input-wrapper.neutral.focused {\n border-color: var(--input-border-focus, var(--ty-input-border-focus));\n box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n\n/* ===== ACCESSIBILITY ENHANCEMENTS ===== */\n\ninput:focus-visible {\n outline: none;\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .input-wrapper {\n border-width: 2px;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .input-wrapper {\n transition: none;\n }\n}\n\n/* ===== RESPONSIVE BEHAVIOR ===== */\n\n@media (max-width: 640px) {\n .input-wrapper.lg {\n min-height: 40px;\n padding: 0 12px;\n }\n\n .input-wrapper.lg input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n }\n\n .input-wrapper.xl {\n min-height: 44px;\n padding: 0 14px;\n }\n\n .input-wrapper.xl input {\n font-size: var(--ty-font-base);\n line-height: var(--ty-leading-base);\n letter-spacing: var(--ty-tracking-base);\n }\n}\n\n@media (max-width: 480px) {\n .input-wrapper.xl {\n min-height: 40px;\n padding: 0 12px;\n }\n\n .input-wrapper.xl input {\n font-size: var(--ty-font-sm);\n line-height: var(--ty-leading-sm);\n letter-spacing: var(--ty-tracking-sm);\n }\n}\n";
7
- //# sourceMappingURL=input.d.ts.map
1
+ /** Input Component Styles */
2
+ /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
3
+ export declare const inputCustomFlavorCss: (base: string) => string;
4
+ export declare const inputStyles: string;