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,359 +1,194 @@
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
1
  import { FLAVORS } from "../types/common.js";
7
- /* Flavor rules only set --input-accent (border), --input-accent-bold
8
- (hover/focus border), and --input-ring (focus shadow); the wrapper base
9
- rules consume them. They double as the per-instance override API:
10
- `ty-input { --input-accent: … }`. Neutral is skipped — it IS the default
11
- chrome (--ty-input-* tokens), and input's auto-danger-on-error logic
12
- relies on neutral being the unstyled state.
13
-
14
- Fallback flavor `fb` is used for custom flavors: suffixed tokens fall
15
- back to the custom base color first (a flavor defining only
16
- --ty-color-X still gets sensible hover/focus), then to neutral.
17
-
18
- Emphasis ladder mirrors the neutral chrome (faint rest → soft hover →
19
- focus + ring): a flavored field rests on its -soft shade and only
20
- escalates to the full color on hover/focus — a resting field shouldn't
21
- shout its full-saturation border (tones shift the whole ladder). */
2
+ import { fieldSizeVars } from "./field-size.js";
22
3
  const inputFlavor = (f, fb) => {
23
- const c = (s) => fb
24
- ? s
25
- ? `var(--ty-color-${f}${s}, var(--ty-color-${f}, var(--ty-color-${fb}${s})))`
26
- : `var(--ty-color-${f}, var(--ty-color-${fb}))`
27
- : s
28
- ? `var(--ty-color-${f}${s}, var(--ty-color-${f}))`
29
- : `var(--ty-color-${f})`;
30
- 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 `
31
12
  :host([flavor="${f}"]) {
32
- --input-accent: var(--ty-input-${f}-border, ${c("-soft")});
33
- --input-accent-bold: ${c("")};
34
- --input-ring: color-mix(in oklab, ${c("")} 15%, transparent);
13
+ --input-accent: var(--ty-input-${f}-border, ${c("-soft")});
14
+ --input-accent-bold: ${c("")};
15
+ --input-ring: color-mix(in oklab, ${c("")} 15%, transparent);
35
16
  }
36
17
  :host([flavor="${f}+"]) {
37
- --input-accent: ${c("")};
38
- --input-accent-bold: ${c("-strong")};
39
- --input-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
18
+ --input-accent: ${c("")};
19
+ --input-accent-bold: ${c("-strong")};
20
+ --input-ring: color-mix(in oklab, ${c("-strong")} 15%, transparent);
40
21
  }
41
22
  :host([flavor="${f}-"]) {
42
- --input-accent: ${c("-faint")};
43
- --input-accent-bold: ${c("-soft")};
44
- --input-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
23
+ --input-accent: ${c("-faint")};
24
+ --input-accent-bold: ${c("-soft")};
25
+ --input-ring: color-mix(in oklab, ${c("-soft")} 15%, transparent);
45
26
  }
46
27
  `;
47
28
  };
48
- /** Rules for one custom (non-built-in) flavor — see utils/flavor-sheet.ts. */
49
29
  export const inputCustomFlavorCss = (base) => inputFlavor(base, "neutral");
50
30
  export const inputStyles = `
31
+ ${fieldSizeVars}
51
32
  :host {
52
- display: block;
53
- font-family: var(--ty-font-sans);
54
- width: 100%;
33
+ display: block;
34
+ font-family: inherit;
35
+ width: 100%;
55
36
  }
56
-
57
- :host([size="sm"]) {
58
- font-size: 14px;
59
- }
60
-
61
- :host([size="lg"]) {
62
- font-size: 18px;
63
- }
64
-
65
37
  .input-container {
66
- display: flex;
67
- flex-direction: column;
68
- width: 100%;
69
- box-sizing: border-box;
38
+ display: flex;
39
+ flex-direction: column;
40
+ width: 100%;
41
+ box-sizing: border-box;
70
42
  }
71
-
72
- /* ===== LABEL STYLING ===== */
73
-
74
43
  .ty-field-label {
75
- font-size: var(--ty-font-sm);
76
- line-height: var(--ty-leading-sm);
77
- letter-spacing: var(--ty-tracking-sm);
78
- font-weight: var(--ty-font-medium);
79
- color: var(--ty-label-color);
80
- margin-bottom: 6px;
81
- padding-left: 12px;
82
- display: flex;
83
- align-items: center;
44
+ font-size: var(--ty-field-label-font);
45
+ line-height: var(--ty-field-label-leading);
46
+ letter-spacing: var(--ty-tracking-sm);
47
+ font-weight: var(--ty-font-medium);
48
+ color: var(--ty-label-color);
49
+ margin-bottom: var(--ty-field-label-gap);
50
+ padding-left: var(--ty-field-outer-pad-x);
51
+ display: flex;
52
+ align-items: center;
84
53
  }
85
-
86
- /* Required indicator - using SVG icon */
87
54
  .required-icon {
88
- display: inline-flex;
89
- align-items: center;
90
- color: var(--ty-color-danger);
91
- width: 12px;
92
- height: 12px;
93
- margin-left: 4px;
94
- vertical-align: middle;
55
+ display: inline-flex;
56
+ align-items: center;
57
+ color: var(--ty-color-danger);
58
+ width: 12px;
59
+ height: 12px;
60
+ margin-left: 4px;
61
+ vertical-align: middle;
95
62
  }
96
-
97
63
  .required-icon svg {
98
- width: 100%;
99
- height: 100%;
64
+ width: 100%;
65
+ height: 100%;
100
66
  }
101
-
102
- /* ===== INPUT WRAPPER WITH SLOTS ===== */
103
-
104
67
  .input-wrapper {
105
- display: flex;
106
- align-items: center;
107
- gap: 0.5rem; /* No gap by default */
108
- width: 100%;
109
- box-sizing: border-box;
110
- border: 1px solid var(--input-accent, var(--input-border, var(--ty-input-border)));
111
- border-radius: var(--ty-radius-base);
112
- background: var(--input-bg, var(--input-bg, var(--ty-input-bg)));
113
- transition: var(--ty-local-transition, all 0.15s ease-in-out);
114
-
115
- /* Default size (md) */
116
- min-height: var(--ty-size-md);
117
- padding: 0 12px;
68
+ display: flex;
69
+ align-items: center;
70
+ gap: 0.5rem;
71
+ width: 100%;
72
+ box-sizing: border-box;
73
+ border: 1px solid var(--input-accent, var(--input-border, var(--ty-input-border)));
74
+ border-radius: var(--ty-radius-base);
75
+ background: var(--input-bg, var(--input-bg, var(--ty-input-bg)));
76
+ transition: var(--ty-local-transition, all 0.15s ease-in-out);
77
+ min-height: var(--ty-field-height);
78
+ padding: 0 var(--ty-field-pad-x);
118
79
  }
119
-
120
- /* Wrapper states — --input-accent* are set by the flavor rules below;
121
- without a flavor attribute they're unset and the default chrome chain
122
- (per-instance --input-* var, then --ty-input-* token) applies. */
123
- /* :not(.focused) — hover must never override focus. Without the guard this
124
- rule out-ranks .focused by specificity, so hovering a FOCUSED unflavored
125
- input swapped its primary focus border for the dimmer neutral hover
126
- border (focus ring stayed, border dimmed — read as a glitch). Same
127
- pattern as date-picker's :hover:not(.open). */
128
80
  .input-wrapper:hover:not(.disabled):not(.focused) {
129
- border-color: var(--input-accent-bold, var(--input-border-hover, var(--ty-input-border-hover)));
81
+ border-color: var(--input-accent-bold, var(--input-border-hover, var(--ty-input-border-hover)));
130
82
  }
131
-
132
83
  .input-wrapper.focused {
133
- border-color: var(--input-accent-bold, var(--input-border-focus, var(--ty-input-border-focus)));
134
- box-shadow: 0 0 0 3px var(--input-ring, var(--input-shadow-focus, var(--ty-input-shadow-focus)));
84
+ border-color: var(--input-accent-bold, var(--input-border-focus, var(--ty-input-border-focus)));
85
+ box-shadow: 0 0 0 3px var(--input-ring, var(--input-shadow-focus, var(--ty-input-shadow-focus)));
135
86
  }
136
-
137
87
  .input-wrapper.disabled {
138
- cursor: not-allowed;
139
- opacity: 0.5;
140
- background: var(--input-disabled-bg, var(--ty-input-disabled-bg));
141
- border-color: var(--input-disabled-border, var(--ty-input-disabled-border));
88
+ cursor: not-allowed;
89
+ opacity: 0.5;
90
+ background: var(--input-disabled-bg, var(--ty-input-disabled-bg));
91
+ border-color: var(--input-disabled-border, var(--ty-input-disabled-border));
142
92
  }
143
-
144
- /* ===== SLOT STYLING ===== */
145
-
146
- /* Style slotted content directly (no wrappers needed) */
147
93
  ::slotted([slot="start"]),
148
94
  ::slotted([slot="end"]) {
149
- display: flex;
150
- align-items: center;
151
- justify-content: center;
152
- flex-shrink: 0;
153
- color: var(--ty-color-text-soft);
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ flex-shrink: 0;
99
+ color: var(--ty-color-text-soft);
154
100
  }
155
-
156
- /* Password reveal toggle (rendered for type="password") */
157
101
  .password-toggle {
158
- display: flex;
159
- align-items: center;
160
- justify-content: center;
161
- flex-shrink: 0;
162
- width: 1.25rem;
163
- height: 1.25rem;
164
- padding: 0;
165
- border: none;
166
- background: none;
167
- cursor: pointer;
168
- color: var(--input-placeholder, var(--ty-input-placeholder));
169
- transition: var(--ty-local-transition, color 0.15s ease-in-out);
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: center;
105
+ flex-shrink: 0;
106
+ width: 1.25rem;
107
+ height: 1.25rem;
108
+ padding: 0;
109
+ border: none;
110
+ background: none;
111
+ cursor: pointer;
112
+ color: var(--input-placeholder, var(--ty-input-placeholder));
113
+ transition: var(--ty-local-transition, color 0.15s ease-in-out);
170
114
  }
171
115
  .password-toggle:hover {
172
- color: var(--input-color, var(--ty-input-color));
116
+ color: var(--input-color, var(--ty-input-color));
173
117
  }
174
118
  .password-toggle:focus-visible {
175
- outline: 2px solid var(--input-accent, var(--ty-color-primary));
176
- outline-offset: 2px;
177
- border-radius: 2px;
119
+ outline: 2px solid var(--input-accent, var(--ty-color-primary));
120
+ outline-offset: 2px;
121
+ border-radius: 2px;
178
122
  }
179
123
  .password-toggle svg {
180
- width: 1rem;
181
- height: 1rem;
124
+ width: 1rem;
125
+ height: 1rem;
182
126
  }
183
-
184
- /* Icon sizing for slotted icons */
185
127
  ::slotted(ty-icon) {
186
- width: 1em;
187
- height: 1em;
188
- flex-shrink: 0;
128
+ width: 1em;
129
+ height: 1em;
130
+ flex-shrink: 0;
189
131
  }
190
-
191
- /* ===== ERROR MESSAGE STYLING ===== */
192
-
193
132
  .error-message {
194
- font-size: var(--ty-font-xs);
195
- line-height: var(--ty-leading-xs);
196
- letter-spacing: var(--ty-tracking-xs);
197
- color: var(--ty-color-danger);
198
- margin-top: 4px;
199
- padding-left: 12px;
133
+ font-size: var(--ty-font-xs);
134
+ line-height: var(--ty-leading-xs);
135
+ letter-spacing: var(--ty-tracking-xs);
136
+ color: var(--ty-color-danger);
137
+ margin-top: 4px;
138
+ padding-left: var(--ty-field-outer-pad-x);
200
139
  }
201
-
202
- /* Error state for wrapper */
203
140
  .input-wrapper.error {
204
- border-color: var(--ty-color-danger);
205
- background: var(--ty-bg-danger-soft);
141
+ border-color: var(--ty-color-danger);
142
+ background: var(--ty-bg-danger-soft);
206
143
  }
207
-
208
144
  .input-wrapper.error.focused {
209
- border-color: var(--ty-color-danger-bold);
210
- box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));
145
+ border-color: var(--ty-color-danger-bold);
146
+ box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));
211
147
  }
212
-
213
- /* ===== INPUT BASE STYLING ===== */
214
-
215
148
  input {
216
- /* Reset and base styles — Linear-paired typography */
217
- flex: 1;
218
- min-width: 0;
219
- box-sizing: border-box;
220
- border: none;
221
- outline: none;
222
- background: transparent;
223
- color: var(--input-color, var(--ty-input-color));
224
- font-family: inherit;
225
- font-size: var(--ty-font-sm);
226
- line-height: var(--ty-leading-sm);
227
- letter-spacing: var(--ty-tracking-sm);
228
- font-weight: var(--ty-font-normal);
229
- padding: 0;
230
- margin: 0;
149
+ flex: 1;
150
+ min-width: 0;
151
+ box-sizing: border-box;
152
+ border: none;
153
+ outline: none;
154
+ background: transparent;
155
+ color: var(--input-color, var(--ty-input-color));
156
+ font-family: inherit;
157
+ font-size: var(--ty-field-font);
158
+ line-height: var(--ty-field-leading);
159
+ letter-spacing: var(--ty-field-tracking);
160
+ font-weight: var(--ty-font-normal);
161
+ padding: 0;
162
+ margin: 0;
231
163
  }
232
-
233
- /* Remove number input spinner arrows */
234
164
  input[type="number"]::-webkit-outer-spin-button,
235
165
  input[type="number"]::-webkit-inner-spin-button {
236
- -webkit-appearance: none;
237
- margin: 0;
166
+ -webkit-appearance: none;
167
+ margin: 0;
238
168
  }
239
-
240
169
  input[type="number"] {
241
- -moz-appearance: textfield;
170
+ -moz-appearance: textfield;
242
171
  }
243
-
244
- /* Disabled state */
245
172
  input:disabled {
246
- cursor: not-allowed;
247
- color: var(--input-disabled-color, var(--ty-input-disabled-color));
173
+ cursor: not-allowed;
174
+ color: var(--input-disabled-color, var(--ty-input-disabled-color));
248
175
  }
249
-
250
- /* Placeholder styling */
251
176
  input::placeholder {
252
- color: var(--input-placeholder, var(--ty-input-placeholder));
253
- font-weight: 400;
254
- }
255
-
256
- /* ===== SIZE MODIFIERS ===== */
257
-
258
- /* Small */
259
- .input-wrapper.sm {
260
- min-height: var(--ty-size-sm);
261
- padding: 0 10px;
262
- border-radius: var(--ty-input-radius-sm, var(--ty-radius-base));
263
- }
264
-
265
- .input-wrapper.sm input {
266
- font-size: var(--ty-font-sm);
267
- line-height: var(--ty-leading-sm);
268
- letter-spacing: var(--ty-tracking-sm);
269
- }
270
-
271
- /* Medium (default) */
272
- .input-wrapper.md {
273
- min-height: var(--ty-size-md);
274
- padding: 0 12px;
275
- border-radius: var(--ty-input-radius-md, var(--ty-radius-base));
276
- }
277
-
278
- .input-wrapper.md input {
279
- font-size: var(--ty-font-sm);
280
- line-height: var(--ty-leading-sm);
281
- letter-spacing: var(--ty-tracking-sm);
177
+ color: var(--input-placeholder, var(--ty-input-placeholder));
178
+ font-weight: 400;
282
179
  }
283
-
284
- /* Large */
285
- .input-wrapper.lg {
286
- min-height: var(--ty-size-lg);
287
- padding: 0 14px;
288
- border-radius: var(--ty-input-radius-lg, var(--ty-radius-base));
289
- }
290
-
291
- .input-wrapper.lg input {
292
- font-size: var(--ty-font-base);
293
- line-height: var(--ty-leading-base);
294
- letter-spacing: var(--ty-tracking-base);
295
- }
296
-
297
- /* ===== SEMANTIC FLAVOR MODIFIERS (set --input-accent*, consumed above) ===== */
298
180
  ${FLAVORS.filter((f) => f !== "neutral").map((f) => inputFlavor(f)).join("")}
299
-
300
- /* ===== ACCESSIBILITY ENHANCEMENTS ===== */
301
-
302
181
  input:focus-visible {
303
- outline: none;
182
+ outline: none;
304
183
  }
305
-
306
- /* High contrast mode support */
307
184
  @media (prefers-contrast: high) {
308
- .input-wrapper {
309
- border-width: 2px;
310
- }
185
+ .input-wrapper {
186
+ border-width: 2px;
311
187
  }
312
-
313
- /* Reduced motion support */
314
- @media (prefers-reduced-motion: reduce) {
315
- .input-wrapper {
316
- transition: none;
317
- }
318
188
  }
319
-
320
- /* ===== RESPONSIVE BEHAVIOR ===== */
321
-
322
- @media (max-width: 640px) {
323
- .input-wrapper.lg {
324
- min-height: 40px;
325
- padding: 0 12px;
326
- }
327
-
328
- .input-wrapper.lg input {
329
- font-size: var(--ty-font-sm);
330
- line-height: var(--ty-leading-sm);
331
- letter-spacing: var(--ty-tracking-sm);
332
- }
333
-
334
- .input-wrapper.xl {
335
- min-height: 44px;
336
- padding: 0 14px;
337
- }
338
-
339
- .input-wrapper.xl input {
340
- font-size: var(--ty-font-base);
341
- line-height: var(--ty-leading-base);
342
- letter-spacing: var(--ty-tracking-base);
343
- }
189
+ @media (prefers-reduced-motion: reduce) {
190
+ .input-wrapper {
191
+ transition: none;
344
192
  }
345
-
346
- @media (max-width: 480px) {
347
- .input-wrapper.xl {
348
- min-height: 40px;
349
- padding: 0 12px;
350
- }
351
-
352
- .input-wrapper.xl input {
353
- font-size: var(--ty-font-sm);
354
- line-height: var(--ty-leading-sm);
355
- letter-spacing: var(--ty-tracking-sm);
356
- }
357
193
  }
358
194
  `;
359
- //# sourceMappingURL=input.js.map
@@ -4,5 +4,4 @@
4
4
  * CSS for the modal component wrapper.
5
5
  * The modal is a pure wrapper - all content styling is user-defined.
6
6
  */
7
- export declare const modalStyles = "\n/* Modal Host Styling */\n:host {\n display: contents;\n /* Don't interfere with layout */\n /* CSS variables are now auto-generated via the with-vars? option */\n}\n\n/* ===== CLOSE BUTTON STYLING ===== */\n/* This is part of the modal wrapper functionality, not user content styling */\n\n.close-button {\n position: absolute;\n top: -8px;\n right: -8px;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n transition: var(--ty-transition-colors);\n z-index: 1;\n color: #d8d8d8;\n\n /* Remove all default browser styling that could cause outlines/borders */\n outline: none;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n\n /* Remove mobile tap highlights and focus rings */\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.close-button:hover {\n color: white;\n}\n\n/* Explicitly remove focus and active states for all interaction modes */\n.close-button:focus,\n.close-button:focus-visible,\n.close-button:focus-within,\n.close-button:active {\n outline: none !important;\n box-shadow: none !important;\n border: none !important;\n background: transparent !important;\n}\n\n/* Override hover color even in focus/active states */\n.close-button:hover,\n.close-button:focus:hover,\n.close-button:active:hover {\n color: white;\n}\n\n.close-button.hide {\n visibility: hidden;\n}\n\n/* ===== DIALOG ELEMENT - PURE WRAPPER ===== */\n/* Modal dialog - provides only essential modal functionality without styling user content */\n\n.ty-modal-dialog {\n /* Reset default dialog styles */\n padding: 18px;\n border: none;\n margin: 0;\n background: transparent;\n\n /* Modal positioning - centered */\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n /* Layer management */\n z-index: 1000;\n overflow: hidden;\n\n /* No sizing - let user content determine size */\n max-width: 85vw;\n max-height: 90vh;\n\n outline: none;\n}\n\n/* ===== BACKDROP STYLING ===== */\n/* Backdrop is part of modal functionality, not user content */\n\n.ty-modal-dialog::backdrop {\n background: var(--ty-modal-backdrop, rgba(0, 0, 0, 0.5));\n backdrop-filter: var(--ty-modal-backdrop-blur, blur(2px));\n animation: ty-modal-backdrop-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n\n/* When backdrop is disabled */\n.ty-modal-dialog:not([data-backdrop])::backdrop {\n background: transparent;\n backdrop-filter: none;\n}\n\n/* ===== MODAL CONTENT CONTAINER ===== */\n/* Minimal container - no styling imposed on user content */\n\n.modal-content {\n color: var(--ty-text);\n}\n\n/* ===== ANIMATION KEYFRAMES ===== */\n\n@keyframes ty-modal-backdrop-enter {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n";
8
- //# sourceMappingURL=modal.d.ts.map
7
+ export declare const modalStyles = "\n:host {\n display: contents;\n /* Don't interfere with layout */\n}\n\n/* Part of the modal wrapper functionality, not user content styling */\n.close-button {\n position: absolute;\n top: -8px;\n right: -8px;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n transition: var(--ty-transition-colors);\n z-index: 1;\n color: #d8d8d8;\n\n /* Remove all default browser styling that could cause outlines/borders */\n outline: none;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n\n /* Remove mobile tap highlights and focus rings */\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.close-button:hover {\n color: white;\n}\n\n/* Explicitly remove focus and active states for all interaction modes */\n.close-button:focus,\n.close-button:focus-visible,\n.close-button:focus-within,\n.close-button:active {\n outline: none !important;\n box-shadow: none !important;\n border: none !important;\n background: transparent !important;\n}\n\n/* Override hover color even in focus/active states */\n.close-button:hover,\n.close-button:focus:hover,\n.close-button:active:hover {\n color: white;\n}\n\n.close-button.hide {\n visibility: hidden;\n}\n\n/* Pure wrapper: only essential modal functionality, no styling of user content */\n.ty-modal-dialog {\n /* Reset default dialog styles */\n padding: 18px;\n border: none;\n margin: 0;\n background: transparent;\n\n /* Centered */\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n z-index: 1000;\n overflow: hidden;\n\n /* No sizing - let user content determine size */\n max-width: 85vw;\n max-height: 90vh;\n\n outline: none;\n}\n\n/* Panel zoom-in synced with the backdrop fade (shadcn-style zoom-in-95).\n Enter-only: animating exit on a native <dialog> means delaying close(). */\n.ty-modal-dialog[open] {\n animation: ty-modal-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n\n@keyframes ty-modal-enter {\n from {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.93);\n }\n\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n/* Backdrop is part of modal functionality, not user content */\n.ty-modal-dialog::backdrop {\n background: var(--ty-modal-backdrop, rgba(0, 0, 0, 0.5));\n backdrop-filter: var(--ty-modal-backdrop-blur, blur(2px));\n animation: ty-modal-backdrop-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n\n/* When backdrop is disabled */\n.ty-modal-dialog:not([data-backdrop])::backdrop {\n background: transparent;\n backdrop-filter: none;\n}\n\n/* Minimal container - no styling imposed on user content */\n.modal-content {\n color: var(--ty-text);\n}\n\n@keyframes ty-modal-backdrop-enter {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n";