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,384 +1,275 @@
1
- /**
2
- * Styles for ty-textarea component
3
- * Enhanced textarea with auto-resize functionality
4
- */
1
+ import { fieldSizeVars } from './field-size.js';
5
2
  export const textareaStyles = `
3
+ ${fieldSizeVars}
6
4
  :host {
7
- display: block;
8
- font-family: var(--ty-font-sans);
9
- width: 100%;
5
+ display: block;
6
+ font-family: inherit;
7
+ width: 100%;
10
8
  }
11
-
12
9
  .textarea-container {
13
- display: flex;
14
- flex-direction: column;
15
- width: 100%;
16
- box-sizing: border-box;
17
- position: relative;
18
- /* For absolute positioned dummy element */
19
- }
20
-
21
- /* Bordered container — owns the border + active state (composer layout):
22
- header (top slot) · textarea (borderless) · footer (bottom slot). */
10
+ display: flex;
11
+ flex-direction: column;
12
+ width: 100%;
13
+ box-sizing: border-box;
14
+ position: relative;
15
+ }
23
16
  .textarea-wrapper {
24
- position: relative;
25
- width: 100%;
26
- display: flex;
27
- flex-direction: column;
28
- box-sizing: border-box;
29
- border: 1px solid var(--input-border, var(--ty-input-border));
30
- border-radius: var(--ty-radius-base);
31
- background: var(--input-bg, var(--ty-input-bg));
32
- transition: var(--ty-local-transition, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out);
33
- }
34
-
35
- /* Active ring tied to the TEXTAREA specifically (not :focus-within) so tabbing
36
- to a footer button doesn't make the whole field look focused. */
17
+ position: relative;
18
+ width: 100%;
19
+ display: flex;
20
+ flex-direction: column;
21
+ box-sizing: border-box;
22
+ border: 1px solid var(--input-border, var(--ty-input-border));
23
+ border-radius: var(--ty-radius-base);
24
+ background: var(--input-bg, var(--ty-input-bg));
25
+ transition: var(--ty-local-transition, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out);
26
+ }
37
27
  .textarea-wrapper:has(textarea:focus) {
38
- border-color: var(--input-border-focus, var(--ty-input-border-focus));
39
- box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));
28
+ border-color: var(--input-border-focus, var(--ty-input-border-focus));
29
+ box-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));
40
30
  }
41
-
42
- /* Error + disabled reflected from the inner textarea (both in shadow DOM, so
43
- :has is reliable here — unlike slotted content). */
44
31
  .textarea-wrapper:has(textarea.error) {
45
- border-color: var(--ty-color-danger);
46
- background: var(--ty-bg-danger-soft);
32
+ border-color: var(--ty-color-danger);
33
+ background: var(--ty-bg-danger-soft);
47
34
  }
48
35
  .textarea-wrapper:has(textarea.error):has(textarea:focus) {
49
- border-color: var(--ty-color-danger-bold);
36
+ border-color: var(--ty-color-danger-bold);
50
37
  }
51
38
  .textarea-wrapper:has(textarea:disabled) {
52
- opacity: 0.5;
53
- background: var(--input-disabled-bg, var(--ty-input-disabled-bg));
54
- border-color: var(--input-disabled-border, var(--ty-input-disabled-border));
39
+ opacity: 0.5;
40
+ background: var(--input-disabled-bg, var(--ty-input-disabled-bg));
41
+ border-color: var(--input-disabled-border, var(--ty-input-disabled-border));
55
42
  }
56
-
57
- /* Scroll region wraps just the textarea so the custom scrollbar never overlaps
58
- the header/footer. */
59
43
  .textarea-scroll {
60
- position: relative;
61
- flex: 1 1 auto;
62
- min-height: 0;
63
- display: flex;
44
+ position: relative;
45
+ flex: 1 1 auto;
46
+ min-height: 0;
47
+ display: flex;
64
48
  }
65
-
66
- /* Custom scrollbar track positioned to the scroll region (textarea edges) */
67
49
  .textarea-scroll .ty-scrollbar-track-y {
68
- top: 2px;
69
- right: 2px;
70
- bottom: 2px;
71
- border-radius: 0 4px 4px 0;
72
- }
73
-
74
- /* Header / footer slot regions — zero footprint until they have content
75
- (the component toggles .has-content via slotchange). footer defaults to
76
- space-between so "tools … submit" works; a single wide button fills it. */
50
+ top: 2px;
51
+ right: 2px;
52
+ bottom: 2px;
53
+ border-radius: 0 4px 4px 0;
54
+ }
77
55
  .textarea-header,
78
56
  .textarea-footer {
79
- display: flex;
80
- align-items: center;
81
- gap: 0.5rem;
57
+ display: flex;
58
+ align-items: center;
59
+ gap: 0.5rem;
82
60
  }
83
61
  .textarea-footer { justify-content: space-between; }
84
62
  .textarea-header.has-content {
85
- padding: 6px 10px;
86
- border-bottom: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));
63
+ padding: 6px 10px;
64
+ border-bottom: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));
87
65
  }
88
66
  .textarea-footer.has-content {
89
- padding: 6px 10px;
90
- border-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));
67
+ padding: 6px 10px;
68
+ border-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));
91
69
  }
92
-
93
- /* ===== LABEL STYLING ===== */
94
-
95
70
  .ty-field-label {
96
- font-size: var(--ty-font-sm);
97
- line-height: var(--ty-leading-sm);
98
- letter-spacing: var(--ty-tracking-sm);
99
- font-weight: var(--ty-font-medium);
100
- color: var(--ty-label-color);
101
- margin-bottom: 6px;
102
- padding-left: 12px;
103
- }
104
-
105
- /* Required indicator - using SVG icon instead of CSS */
71
+ font-size: var(--ty-field-label-font);
72
+ line-height: var(--ty-field-label-leading);
73
+ letter-spacing: var(--ty-tracking-sm);
74
+ font-weight: var(--ty-font-medium);
75
+ color: var(--ty-label-color);
76
+ margin-bottom: var(--ty-field-label-gap);
77
+ padding-left: var(--ty-field-outer-pad-x);
78
+ }
106
79
  .required-icon {
107
- display: inline-flex;
108
- align-items: center;
109
- color: var(--ty-color-danger);
110
- width: 12px;
111
- height: 12px;
112
- vertical-align: middle;
113
- }
114
-
115
- /* ===== ERROR MESSAGE STYLING ===== */
116
-
80
+ display: inline-flex;
81
+ align-items: center;
82
+ color: var(--ty-color-danger);
83
+ width: 12px;
84
+ height: 12px;
85
+ vertical-align: middle;
86
+ }
117
87
  .error-message {
118
- font-size: var(--ty-font-xs);
119
- line-height: var(--ty-leading-xs);
120
- letter-spacing: var(--ty-tracking-xs);
121
- color: var(--ty-color-danger);
122
- margin-top: 4px;
123
- padding-left: 12px;
124
- }
125
-
126
- /* Error state is reflected on .textarea-wrapper (see above). */
127
-
128
- /* ===== TEXTAREA BASE STYLING ===== */
129
-
88
+ font-size: var(--ty-font-xs);
89
+ line-height: var(--ty-leading-xs);
90
+ letter-spacing: var(--ty-tracking-xs);
91
+ color: var(--ty-color-danger);
92
+ margin-top: 4px;
93
+ padding-left: var(--ty-field-outer-pad-x);
94
+ }
130
95
  textarea {
131
- /* Borderless — the .textarea-wrapper owns the border/background now. */
132
- box-sizing: border-box;
133
- width: 100%;
134
- flex: 1 1 auto;
135
- border: none;
136
- background: transparent;
137
- color: var(--input-color, var(--ty-input-color));
138
- font-family: inherit;
139
- /* Linear-paired typography */
140
- font-size: var(--ty-font-sm);
141
- line-height: var(--ty-leading-sm);
142
- letter-spacing: var(--ty-tracking-sm);
143
- font-weight: var(--ty-font-normal);
144
- outline: none;
145
-
146
- /* Default size (md) - refined spacing */
147
- min-height: 80px;
148
- /* Larger than input for multiline */
149
- padding: 12px 12px;
150
- /* Slightly larger padding for text areas */
151
-
152
- /* Auto-resize specific styles */
153
- overflow: hidden;
154
- /* Hide scrollbars since we're auto-resizing */
155
- resize: none;
156
- /* Disable manual resize by default */
157
-
158
- /* Ensure consistent text wrapping */
159
- white-space: pre-wrap;
160
- word-wrap: break-word;
161
- }
162
-
163
- /* Hide native scrollbar for webkit when custom scrollbar is active
164
- (scrollbar-width: none handles Firefox; this handles Chrome/Safari) */
96
+ font-family: inherit;
97
+ box-sizing: border-box;
98
+ width: 100%;
99
+ flex: 1 1 auto;
100
+ border: none;
101
+ background: transparent;
102
+ color: var(--input-color, var(--ty-input-color));
103
+ font-family: inherit;
104
+ font-size: var(--ty-font-sm);
105
+ line-height: var(--ty-leading-sm);
106
+ letter-spacing: var(--ty-tracking-sm);
107
+ font-weight: var(--ty-font-normal);
108
+ outline: none;
109
+ min-height: 80px;
110
+ padding: 12px 12px;
111
+ overflow: hidden;
112
+ resize: none;
113
+ white-space: pre-wrap;
114
+ word-wrap: break-word;
115
+ }
165
116
  :host([data-custom-scroll]) textarea::-webkit-scrollbar {
166
- display: none;
117
+ display: none;
167
118
  }
168
-
169
- /* Disabled — visual state lives on the wrapper; just the cursor/text here. */
170
119
  textarea:disabled {
171
- cursor: not-allowed;
172
- color: var(--input-disabled-color, var(--ty-input-disabled-color));
120
+ cursor: not-allowed;
121
+ color: var(--input-disabled-color, var(--ty-input-disabled-color));
173
122
  }
174
-
175
- /* Placeholder styling - subtle and elegant */
176
123
  textarea::placeholder {
177
- color: var(--input-placeholder, var(--ty-input-placeholder));
178
- font-weight: 400;
124
+ color: var(--input-placeholder, var(--ty-input-placeholder));
125
+ font-weight: 400;
179
126
  }
180
-
181
- /* ===== RESIZE CONTROL OPTIONS ===== */
182
-
183
- /* Allow manual resizing */
184
127
  textarea.resize-both {
185
- resize: both;
128
+ resize: both;
186
129
  }
187
-
188
130
  textarea.resize-horizontal {
189
- resize: horizontal;
131
+ resize: horizontal;
190
132
  }
191
-
192
133
  textarea.resize-vertical {
193
- resize: vertical;
134
+ resize: vertical;
194
135
  }
195
-
196
136
  textarea.resize-none {
197
- resize: none;
137
+ resize: none;
198
138
  }
199
-
200
- /* Auto-resize mode (default) disables manual resize */
201
139
  textarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {
202
- resize: none;
140
+ resize: none;
203
141
  }
204
-
205
- /* ===== DUMMY ELEMENT FOR AUTO-RESIZE ===== */
206
-
207
142
  .textarea-dummy {
208
- /* Hidden element that measures text height */
209
- position: absolute !important;
210
- top: 0 !important;
211
- left: 0 !important;
212
- visibility: hidden !important;
213
- white-space: pre-wrap !important;
214
- word-break: break-word !important;
215
- box-sizing: border-box !important;
216
- overflow: hidden !important;
217
- pointer-events: none !important;
218
- z-index: -1 !important;
219
-
220
- /* Ensure it has the same text behavior as textarea */
221
- word-wrap: break-word !important;
222
- overflow-wrap: break-word !important;
223
- }
224
-
225
- /* ===== SIZE MODIFIERS ===== */
226
-
227
- /* Extra Small */
143
+ position: absolute !important;
144
+ top: 0 !important;
145
+ left: 0 !important;
146
+ visibility: hidden !important;
147
+ white-space: pre-wrap !important;
148
+ word-break: break-word !important;
149
+ box-sizing: border-box !important;
150
+ overflow: hidden !important;
151
+ pointer-events: none !important;
152
+ z-index: -1 !important;
153
+ word-wrap: break-word !important;
154
+ overflow-wrap: break-word !important;
155
+ }
228
156
  textarea.xs {
229
- min-height: 64px;
230
- padding: 8px 10px;
231
- font-size: var(--ty-font-xs);
232
- line-height: var(--ty-leading-xs);
233
- letter-spacing: var(--ty-tracking-xs);
234
- }
235
-
236
- /* Small */
157
+ min-height: 64px;
158
+ padding: 8px var(--ty-field-pad-x);
159
+ font-size: var(--ty-font-xs);
160
+ line-height: var(--ty-leading-xs);
161
+ letter-spacing: var(--ty-tracking-xs);
162
+ }
237
163
  textarea.sm {
238
- min-height: 72px;
239
- padding: 10px 10px;
240
- font-size: var(--ty-font-sm);
241
- line-height: var(--ty-leading-sm);
242
- letter-spacing: var(--ty-tracking-sm);
243
- }
244
-
245
- /* Medium (default) */
164
+ min-height: 72px;
165
+ padding: 10px var(--ty-field-pad-x);
166
+ font-size: var(--ty-font-sm);
167
+ line-height: var(--ty-leading-sm);
168
+ letter-spacing: var(--ty-tracking-sm);
169
+ }
246
170
  textarea.md {
247
- min-height: 80px;
248
- padding: 12px 12px;
249
- font-size: var(--ty-font-sm);
250
- line-height: var(--ty-leading-sm);
251
- letter-spacing: var(--ty-tracking-sm);
252
- }
253
-
254
- /* Large */
171
+ min-height: 80px;
172
+ padding: 12px var(--ty-field-pad-x);
173
+ font-size: var(--ty-font-sm);
174
+ line-height: var(--ty-leading-sm);
175
+ letter-spacing: var(--ty-tracking-sm);
176
+ }
255
177
  textarea.lg {
256
- min-height: 96px;
257
- padding: 14px 14px;
258
- font-size: var(--ty-font-base);
259
- line-height: var(--ty-leading-base);
260
- letter-spacing: var(--ty-tracking-base);
261
- }
262
-
263
- /* Extra Large */
178
+ min-height: 96px;
179
+ padding: 14px var(--ty-field-pad-x);
180
+ font-size: var(--ty-font-base);
181
+ line-height: var(--ty-leading-base);
182
+ letter-spacing: var(--ty-tracking-base);
183
+ }
264
184
  textarea.xl {
265
- min-height: 112px;
266
- padding: 16px 16px;
267
- font-size: var(--ty-font-lg);
268
- line-height: var(--ty-leading-lg);
269
- letter-spacing: var(--ty-tracking-lg);
270
- }
271
-
272
- /* ===== ACCESSIBILITY ENHANCEMENTS ===== */
273
-
185
+ min-height: 112px;
186
+ padding: 16px var(--ty-field-pad-x);
187
+ font-size: var(--ty-font-lg);
188
+ line-height: var(--ty-leading-lg);
189
+ letter-spacing: var(--ty-tracking-lg);
190
+ }
274
191
  textarea:focus-visible {
275
- outline: none;
276
- /* We use box-shadow instead */
192
+ outline: none;
277
193
  }
278
-
279
- /* High contrast mode support */
280
194
  @media (prefers-contrast: high) {
281
- textarea {
282
- border-width: 2px;
283
- }
195
+ textarea {
196
+ border-width: 2px;
197
+ }
284
198
  }
285
-
286
- /* Reduced motion support */
287
199
  @media (prefers-reduced-motion: reduce) {
288
- textarea {
289
- transition: none;
290
- }
291
-
292
- .textarea-dummy {
293
- transition: none;
294
- }
295
- }
296
-
297
- /* ===== CONTAINER-AWARE RESPONSIVE BEHAVIOR ===== */
298
-
299
- /* Scale down on smaller containers using container queries */
200
+ textarea {
201
+ transition: none;
202
+ }
203
+ .textarea-dummy {
204
+ transition: none;
205
+ }
206
+ }
300
207
  @container (max-width: 480px) {
301
- textarea.lg {
302
- font-size: var(--ty-font-sm);
303
- line-height: var(--ty-leading-sm);
304
- letter-spacing: var(--ty-tracking-sm);
305
- padding: 12px 12px;
306
- min-height: 80px;
307
- }
308
-
309
- textarea.xl {
310
- font-size: var(--ty-font-base);
311
- line-height: var(--ty-leading-base);
312
- letter-spacing: var(--ty-tracking-base);
313
- padding: 14px 14px;
314
- min-height: 96px;
315
- }
316
- }
317
-
208
+ textarea.lg {
209
+ font-size: var(--ty-font-sm);
210
+ line-height: var(--ty-leading-sm);
211
+ letter-spacing: var(--ty-tracking-sm);
212
+ padding: 12px var(--ty-field-pad-x);
213
+ min-height: 80px;
214
+ }
215
+ textarea.xl {
216
+ font-size: var(--ty-font-base);
217
+ line-height: var(--ty-leading-base);
218
+ letter-spacing: var(--ty-tracking-base);
219
+ padding: 14px var(--ty-field-pad-x);
220
+ min-height: 96px;
221
+ }
222
+ }
318
223
  @container (max-width: 320px) {
319
- textarea.xl {
320
- font-size: var(--ty-font-sm);
321
- line-height: var(--ty-leading-sm);
322
- letter-spacing: var(--ty-tracking-sm);
323
- padding: 12px 12px;
324
- min-height: 80px;
325
- }
326
- }
327
-
328
- /* Fallback for browsers without container query support */
224
+ textarea.xl {
225
+ font-size: var(--ty-font-sm);
226
+ line-height: var(--ty-leading-sm);
227
+ letter-spacing: var(--ty-tracking-sm);
228
+ padding: 12px var(--ty-field-pad-x);
229
+ min-height: 80px;
230
+ }
231
+ }
329
232
  @media (max-width: 640px) {
330
- textarea.lg {
331
- font-size: var(--ty-font-sm);
332
- line-height: var(--ty-leading-sm);
333
- letter-spacing: var(--ty-tracking-sm);
334
- padding: 12px 12px;
335
- min-height: 80px;
336
- }
337
-
338
- textarea.xl {
339
- font-size: var(--ty-font-base);
340
- line-height: var(--ty-leading-base);
341
- letter-spacing: var(--ty-tracking-base);
342
- padding: 14px 14px;
343
- min-height: 96px;
344
- }
345
- }
346
-
233
+ textarea.lg {
234
+ font-size: var(--ty-font-sm);
235
+ line-height: var(--ty-leading-sm);
236
+ letter-spacing: var(--ty-tracking-sm);
237
+ padding: 12px var(--ty-field-pad-x);
238
+ min-height: 80px;
239
+ }
240
+ textarea.xl {
241
+ font-size: var(--ty-font-base);
242
+ line-height: var(--ty-leading-base);
243
+ letter-spacing: var(--ty-tracking-base);
244
+ padding: 14px var(--ty-field-pad-x);
245
+ min-height: 96px;
246
+ }
247
+ }
347
248
  @media (max-width: 480px) {
348
- textarea.xl {
349
- font-size: var(--ty-font-sm);
350
- line-height: var(--ty-leading-sm);
351
- letter-spacing: var(--ty-tracking-sm);
352
- padding: 12px 12px;
353
- min-height: 80px;
354
- }
355
- }
356
-
357
- /* ===== ANIMATION AND TRANSITIONS ===== */
358
-
359
- /* Smooth height transitions for auto-resize */
249
+ textarea.xl {
250
+ font-size: var(--ty-font-sm);
251
+ line-height: var(--ty-leading-sm);
252
+ letter-spacing: var(--ty-tracking-sm);
253
+ padding: 12px var(--ty-field-pad-x);
254
+ min-height: 80px;
255
+ }
256
+ }
360
257
  textarea {
361
- transition: var(--ty-local-transition,
362
- border-color 0.15s ease-in-out,
363
- box-shadow 0.15s ease-in-out,
364
- background-color 0.15s ease-in-out,
365
- height 0.1s ease-out);
366
- /* Smooth height changes */
367
- }
368
-
369
- /* Disable height transition on focus to avoid jarring effect */
258
+ transition: var(--ty-local-transition,
259
+ border-color 0.15s ease-in-out,
260
+ box-shadow 0.15s ease-in-out,
261
+ background-color 0.15s ease-in-out,
262
+ height 0.1s ease-out);
263
+ }
370
264
  textarea:focus {
371
- transition: var(--ty-local-transition,
372
- border-color 0.15s ease-in-out,
373
- box-shadow 0.15s ease-in-out,
374
- background-color 0.15s ease-in-out);
265
+ transition: var(--ty-local-transition,
266
+ border-color 0.15s ease-in-out,
267
+ box-shadow 0.15s ease-in-out,
268
+ background-color 0.15s ease-in-out);
375
269
  }
376
-
377
- /* For users who prefer reduced motion, disable height transitions */
378
270
  @media (prefers-reduced-motion: reduce) {
379
- textarea {
380
- transition: none;
381
- }
271
+ textarea {
272
+ transition: none;
273
+ }
382
274
  }
383
275
  `;
384
- //# sourceMappingURL=textarea.js.map
@@ -8,4 +8,3 @@
8
8
  */
9
9
  import type { StyleContent } from '../types/common.js';
10
10
  export declare const tooltipStyles: StyleContent;
11
- //# sourceMappingURL=tooltip.d.ts.map
@@ -1,18 +1,8 @@
1
- /**
2
- * Tooltip Styles
3
- *
4
- * The tooltip popover is created in document.body (top-layer Popover API)
5
- * and styled inline by the component — see applyFlavorStyles() in
6
- * components/tooltip.ts. The shadow root only needs the host to not affect
7
- * layout.
8
- */
9
1
  export const tooltipStyles = {
10
- id: 'ty-tooltip',
11
- css: `
12
- /* Tooltip host element - display contents to not affect layout */
2
+ id: 'ty-tooltip',
3
+ css: `
13
4
  :host {
14
- display: contents;
5
+ display: contents;
15
6
  }
16
7
  `,
17
8
  };
18
- //# sourceMappingURL=tooltip.js.map