tyrell-components 1.0.0-TC44 → 1.0.0-TC46

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 (350) hide show
  1. package/dist/tyrell.js +1 -1
  2. package/lib/base/ty-component.d.ts +12 -7
  3. package/lib/base/ty-component.js +8 -139
  4. package/lib/components/button.d.ts +2 -16
  5. package/lib/components/button.js +0 -36
  6. package/lib/components/calendar-month.d.ts +2 -48
  7. package/lib/components/calendar-month.js +4 -166
  8. package/lib/components/calendar-navigation.d.ts +3 -48
  9. package/lib/components/calendar-navigation.js +3 -126
  10. package/lib/components/calendar.d.ts +3 -80
  11. package/lib/components/calendar.js +8 -230
  12. package/lib/components/checkbox.d.ts +4 -71
  13. package/lib/components/checkbox.js +7 -151
  14. package/lib/components/copy.d.ts +3 -56
  15. package/lib/components/copy.js +1 -120
  16. package/lib/components/date-picker.d.ts +10 -160
  17. package/lib/components/date-picker.js +31 -577
  18. package/lib/components/file-upload.d.ts +3 -15
  19. package/lib/components/file-upload.js +0 -37
  20. package/lib/components/icon.d.ts +3 -24
  21. package/lib/components/icon.js +1 -90
  22. package/lib/components/input.d.ts +7 -107
  23. package/lib/components/input.js +4 -193
  24. package/lib/components/modal.d.ts +3 -26
  25. package/lib/components/modal.js +1 -188
  26. package/lib/components/option.d.ts +2 -9
  27. package/lib/components/option.js +0 -48
  28. package/lib/components/popup.d.ts +2 -17
  29. package/lib/components/popup.js +3 -130
  30. package/lib/components/radio.d.ts +3 -23
  31. package/lib/components/radio.js +0 -63
  32. package/lib/components/resize-observer.d.ts +2 -30
  33. package/lib/components/resize-observer.js +0 -45
  34. package/lib/components/scroll-container.d.ts +2 -12
  35. package/lib/components/scroll-container.js +3 -46
  36. package/lib/components/select.d.ts +43 -150
  37. package/lib/components/select.js +68 -558
  38. package/lib/components/selected-tags.d.ts +4 -47
  39. package/lib/components/selected-tags.js +0 -94
  40. package/lib/components/step.d.ts +1 -6
  41. package/lib/components/step.js +0 -6
  42. package/lib/components/switch.d.ts +0 -11
  43. package/lib/components/switch.js +2 -36
  44. package/lib/components/tab.d.ts +1 -6
  45. package/lib/components/tab.js +0 -7
  46. package/lib/components/tabs.d.ts +3 -63
  47. package/lib/components/tabs.js +2 -282
  48. package/lib/components/tag.d.ts +2 -36
  49. package/lib/components/tag.js +5 -105
  50. package/lib/components/textarea.d.ts +6 -86
  51. package/lib/components/textarea.js +2 -173
  52. package/lib/components/tooltip.d.ts +3 -11
  53. package/lib/components/tooltip.js +0 -154
  54. package/lib/components/wizard.d.ts +4 -54
  55. package/lib/components/wizard.js +0 -228
  56. package/lib/icons/fontawesome/brands.d.ts +0 -1
  57. package/lib/icons/fontawesome/brands.js +0 -8
  58. package/lib/icons/fontawesome/regular.d.ts +0 -1
  59. package/lib/icons/fontawesome/regular.js +0 -8
  60. package/lib/icons/fontawesome/solid.d.ts +0 -1
  61. package/lib/icons/fontawesome/solid.js +0 -8
  62. package/lib/icons/heroicons/micro.d.ts +0 -1
  63. package/lib/icons/heroicons/micro.js +0 -8
  64. package/lib/icons/heroicons/mini.d.ts +0 -1
  65. package/lib/icons/heroicons/mini.js +0 -8
  66. package/lib/icons/heroicons/outline.d.ts +0 -1
  67. package/lib/icons/heroicons/outline.js +0 -8
  68. package/lib/icons/heroicons/solid.d.ts +0 -1
  69. package/lib/icons/heroicons/solid.js +0 -8
  70. package/lib/icons/lucide.d.ts +0 -1
  71. package/lib/icons/lucide.js +0 -1872
  72. package/lib/icons/material/filled.d.ts +0 -1
  73. package/lib/icons/material/filled.js +0 -10
  74. package/lib/icons/material/outlined.d.ts +0 -1
  75. package/lib/icons/material/outlined.js +0 -10
  76. package/lib/icons/material/round.d.ts +0 -1
  77. package/lib/icons/material/round.js +0 -10
  78. package/lib/icons/material/sharp.d.ts +0 -1
  79. package/lib/icons/material/sharp.js +0 -10
  80. package/lib/icons/material/two-tone.d.ts +0 -1
  81. package/lib/icons/material/two-tone.js +0 -10
  82. package/lib/index.d.ts +0 -1
  83. package/lib/index.js +0 -20
  84. package/lib/styles/button.d.ts +2 -20
  85. package/lib/styles/button.js +13 -120
  86. package/lib/styles/calendar-month.d.ts +1 -5
  87. package/lib/styles/calendar-month.js +3 -60
  88. package/lib/styles/calendar-navigation.d.ts +2 -6
  89. package/lib/styles/calendar-navigation.js +1 -26
  90. package/lib/styles/calendar.d.ts +1 -2
  91. package/lib/styles/calendar.js +0 -13
  92. package/lib/styles/checkbox.d.ts +0 -1
  93. package/lib/styles/checkbox.js +1 -23
  94. package/lib/styles/copy.d.ts +0 -1
  95. package/lib/styles/copy.js +2 -17
  96. package/lib/styles/custom-scrollbar.d.ts +1 -2
  97. package/lib/styles/custom-scrollbar.js +3 -18
  98. package/lib/styles/date-picker.d.ts +1 -5
  99. package/lib/styles/date-picker.js +5 -35
  100. package/lib/styles/file-upload.d.ts +1 -2
  101. package/lib/styles/file-upload.js +0 -15
  102. package/lib/styles/icon.d.ts +2 -6
  103. package/lib/styles/icon.js +1 -26
  104. package/lib/styles/input.d.ts +1 -6
  105. package/lib/styles/input.js +3 -53
  106. package/lib/styles/modal.d.ts +1 -2
  107. package/lib/styles/modal.js +3 -23
  108. package/lib/styles/option.d.ts +2 -6
  109. package/lib/styles/option.js +1 -11
  110. package/lib/styles/popup.d.ts +1 -2
  111. package/lib/styles/popup.js +4 -25
  112. package/lib/styles/radio.d.ts +0 -1
  113. package/lib/styles/radio.js +1 -15
  114. package/lib/styles/resize-observer.d.ts +1 -2
  115. package/lib/styles/resize-observer.js +0 -7
  116. package/lib/styles/scroll-container.d.ts +1 -2
  117. package/lib/styles/scroll-container.js +0 -19
  118. package/lib/styles/select-base.d.ts +0 -1
  119. package/lib/styles/select-base.js +9 -70
  120. package/lib/styles/select.d.ts +1 -2
  121. package/lib/styles/select.js +50 -18
  122. package/lib/styles/step.d.ts +1 -2
  123. package/lib/styles/step.js +0 -4
  124. package/lib/styles/switch.d.ts +0 -1
  125. package/lib/styles/switch.js +2 -20
  126. package/lib/styles/tab.d.ts +1 -2
  127. package/lib/styles/tab.js +0 -5
  128. package/lib/styles/tabs.d.ts +3 -11
  129. package/lib/styles/tabs.js +4 -47
  130. package/lib/styles/tag.d.ts +1 -5
  131. package/lib/styles/tag.js +2 -31
  132. package/lib/styles/textarea.d.ts +1 -2
  133. package/lib/styles/textarea.js +0 -44
  134. package/lib/styles/tooltip.d.ts +0 -1
  135. package/lib/styles/tooltip.js +0 -10
  136. package/lib/styles/wizard.d.ts +5 -21
  137. package/lib/styles/wizard.js +5 -85
  138. package/lib/types/common.d.ts +0 -2
  139. package/lib/types/common.js +0 -12
  140. package/lib/utils/calendar-utils.d.ts +4 -21
  141. package/lib/utils/calendar-utils.js +4 -177
  142. package/lib/utils/custom-scrollbar.d.ts +6 -20
  143. package/lib/utils/custom-scrollbar.js +1 -45
  144. package/lib/utils/flavor-sheet.d.ts +0 -1
  145. package/lib/utils/flavor-sheet.js +0 -23
  146. package/lib/utils/icon-registry.d.ts +0 -2
  147. package/lib/utils/icon-registry.js +1 -107
  148. package/lib/utils/icons.d.ts +0 -1
  149. package/lib/utils/icons.js +0 -9
  150. package/lib/utils/loader-registry.d.ts +0 -1
  151. package/lib/utils/loader-registry.js +0 -32
  152. package/lib/utils/locale.d.ts +2 -23
  153. package/lib/utils/locale.js +0 -86
  154. package/lib/utils/mobile.d.ts +0 -1
  155. package/lib/utils/mobile.js +0 -17
  156. package/lib/utils/number-format.d.ts +0 -2
  157. package/lib/utils/number-format.js +2 -65
  158. package/lib/utils/positioning.d.ts +4 -2
  159. package/lib/utils/positioning.js +2 -54
  160. package/lib/utils/property-capture.d.ts +5 -27
  161. package/lib/utils/property-capture.js +0 -108
  162. package/lib/utils/property-manager.d.ts +0 -1
  163. package/lib/utils/property-manager.js +0 -70
  164. package/lib/utils/resize-observer.d.ts +0 -1
  165. package/lib/utils/resize-observer.js +0 -36
  166. package/lib/utils/scroll-lock.d.ts +4 -11
  167. package/lib/utils/scroll-lock.js +0 -107
  168. package/lib/utils/styles.d.ts +0 -1
  169. package/lib/utils/styles.js +0 -24
  170. package/lib/version.d.ts +1 -2
  171. package/lib/version.js +1 -11
  172. package/package.json +2 -2
  173. package/lib/base/ty-component.d.ts.map +0 -1
  174. package/lib/base/ty-component.js.map +0 -1
  175. package/lib/components/button.d.ts.map +0 -1
  176. package/lib/components/button.js.map +0 -1
  177. package/lib/components/calendar-month.d.ts.map +0 -1
  178. package/lib/components/calendar-month.js.map +0 -1
  179. package/lib/components/calendar-navigation.d.ts.map +0 -1
  180. package/lib/components/calendar-navigation.js.map +0 -1
  181. package/lib/components/calendar.d.ts.map +0 -1
  182. package/lib/components/calendar.js.map +0 -1
  183. package/lib/components/checkbox.d.ts.map +0 -1
  184. package/lib/components/checkbox.js.map +0 -1
  185. package/lib/components/copy.d.ts.map +0 -1
  186. package/lib/components/copy.js.map +0 -1
  187. package/lib/components/date-picker.d.ts.map +0 -1
  188. package/lib/components/date-picker.js.map +0 -1
  189. package/lib/components/file-upload.d.ts.map +0 -1
  190. package/lib/components/file-upload.js.map +0 -1
  191. package/lib/components/icon.d.ts.map +0 -1
  192. package/lib/components/icon.js.map +0 -1
  193. package/lib/components/input.d.ts.map +0 -1
  194. package/lib/components/input.js.map +0 -1
  195. package/lib/components/modal.d.ts.map +0 -1
  196. package/lib/components/modal.js.map +0 -1
  197. package/lib/components/option.d.ts.map +0 -1
  198. package/lib/components/option.js.map +0 -1
  199. package/lib/components/popup.d.ts.map +0 -1
  200. package/lib/components/popup.js.map +0 -1
  201. package/lib/components/radio.d.ts.map +0 -1
  202. package/lib/components/radio.js.map +0 -1
  203. package/lib/components/resize-observer.d.ts.map +0 -1
  204. package/lib/components/resize-observer.js.map +0 -1
  205. package/lib/components/scroll-container.d.ts.map +0 -1
  206. package/lib/components/scroll-container.js.map +0 -1
  207. package/lib/components/select.d.ts.map +0 -1
  208. package/lib/components/select.js.map +0 -1
  209. package/lib/components/selected-tags.d.ts.map +0 -1
  210. package/lib/components/selected-tags.js.map +0 -1
  211. package/lib/components/step.d.ts.map +0 -1
  212. package/lib/components/step.js.map +0 -1
  213. package/lib/components/switch.d.ts.map +0 -1
  214. package/lib/components/switch.js.map +0 -1
  215. package/lib/components/tab.d.ts.map +0 -1
  216. package/lib/components/tab.js.map +0 -1
  217. package/lib/components/tabs.d.ts.map +0 -1
  218. package/lib/components/tabs.js.map +0 -1
  219. package/lib/components/tag.d.ts.map +0 -1
  220. package/lib/components/tag.js.map +0 -1
  221. package/lib/components/textarea.d.ts.map +0 -1
  222. package/lib/components/textarea.js.map +0 -1
  223. package/lib/components/tooltip.d.ts.map +0 -1
  224. package/lib/components/tooltip.js.map +0 -1
  225. package/lib/components/wizard.d.ts.map +0 -1
  226. package/lib/components/wizard.js.map +0 -1
  227. package/lib/icons/fontawesome/brands.d.ts.map +0 -1
  228. package/lib/icons/fontawesome/brands.js.map +0 -1
  229. package/lib/icons/fontawesome/regular.d.ts.map +0 -1
  230. package/lib/icons/fontawesome/regular.js.map +0 -1
  231. package/lib/icons/fontawesome/solid.d.ts.map +0 -1
  232. package/lib/icons/fontawesome/solid.js.map +0 -1
  233. package/lib/icons/heroicons/micro.d.ts.map +0 -1
  234. package/lib/icons/heroicons/micro.js.map +0 -1
  235. package/lib/icons/heroicons/mini.d.ts.map +0 -1
  236. package/lib/icons/heroicons/mini.js.map +0 -1
  237. package/lib/icons/heroicons/outline.d.ts.map +0 -1
  238. package/lib/icons/heroicons/outline.js.map +0 -1
  239. package/lib/icons/heroicons/solid.d.ts.map +0 -1
  240. package/lib/icons/heroicons/solid.js.map +0 -1
  241. package/lib/icons/lucide.d.ts.map +0 -1
  242. package/lib/icons/lucide.js.map +0 -1
  243. package/lib/icons/material/filled.d.ts.map +0 -1
  244. package/lib/icons/material/filled.js.map +0 -1
  245. package/lib/icons/material/outlined.d.ts.map +0 -1
  246. package/lib/icons/material/outlined.js.map +0 -1
  247. package/lib/icons/material/round.d.ts.map +0 -1
  248. package/lib/icons/material/round.js.map +0 -1
  249. package/lib/icons/material/sharp.d.ts.map +0 -1
  250. package/lib/icons/material/sharp.js.map +0 -1
  251. package/lib/icons/material/two-tone.d.ts.map +0 -1
  252. package/lib/icons/material/two-tone.js.map +0 -1
  253. package/lib/index.d.ts.map +0 -1
  254. package/lib/index.js.map +0 -1
  255. package/lib/styles/button.d.ts.map +0 -1
  256. package/lib/styles/button.js.map +0 -1
  257. package/lib/styles/calendar-month.d.ts.map +0 -1
  258. package/lib/styles/calendar-month.js.map +0 -1
  259. package/lib/styles/calendar-navigation.d.ts.map +0 -1
  260. package/lib/styles/calendar-navigation.js.map +0 -1
  261. package/lib/styles/calendar.d.ts.map +0 -1
  262. package/lib/styles/calendar.js.map +0 -1
  263. package/lib/styles/checkbox.d.ts.map +0 -1
  264. package/lib/styles/checkbox.js.map +0 -1
  265. package/lib/styles/copy.d.ts.map +0 -1
  266. package/lib/styles/copy.js.map +0 -1
  267. package/lib/styles/custom-scrollbar.d.ts.map +0 -1
  268. package/lib/styles/custom-scrollbar.js.map +0 -1
  269. package/lib/styles/date-picker.d.ts.map +0 -1
  270. package/lib/styles/date-picker.js.map +0 -1
  271. package/lib/styles/file-upload.d.ts.map +0 -1
  272. package/lib/styles/file-upload.js.map +0 -1
  273. package/lib/styles/icon.d.ts.map +0 -1
  274. package/lib/styles/icon.js.map +0 -1
  275. package/lib/styles/input.d.ts.map +0 -1
  276. package/lib/styles/input.js.map +0 -1
  277. package/lib/styles/modal.d.ts.map +0 -1
  278. package/lib/styles/modal.js.map +0 -1
  279. package/lib/styles/multiselect.d.ts +0 -8
  280. package/lib/styles/multiselect.d.ts.map +0 -1
  281. package/lib/styles/multiselect.js +0 -849
  282. package/lib/styles/multiselect.js.map +0 -1
  283. package/lib/styles/option.d.ts.map +0 -1
  284. package/lib/styles/option.js.map +0 -1
  285. package/lib/styles/popup.d.ts.map +0 -1
  286. package/lib/styles/popup.js.map +0 -1
  287. package/lib/styles/radio.d.ts.map +0 -1
  288. package/lib/styles/radio.js.map +0 -1
  289. package/lib/styles/resize-observer.d.ts.map +0 -1
  290. package/lib/styles/resize-observer.js.map +0 -1
  291. package/lib/styles/scroll-container.d.ts.map +0 -1
  292. package/lib/styles/scroll-container.js.map +0 -1
  293. package/lib/styles/select-base.d.ts.map +0 -1
  294. package/lib/styles/select-base.js.map +0 -1
  295. package/lib/styles/select.d.ts.map +0 -1
  296. package/lib/styles/select.js.map +0 -1
  297. package/lib/styles/step.d.ts.map +0 -1
  298. package/lib/styles/step.js.map +0 -1
  299. package/lib/styles/switch.d.ts.map +0 -1
  300. package/lib/styles/switch.js.map +0 -1
  301. package/lib/styles/tab.d.ts.map +0 -1
  302. package/lib/styles/tab.js.map +0 -1
  303. package/lib/styles/tabs.d.ts.map +0 -1
  304. package/lib/styles/tabs.js.map +0 -1
  305. package/lib/styles/tag.d.ts.map +0 -1
  306. package/lib/styles/tag.js.map +0 -1
  307. package/lib/styles/textarea.d.ts.map +0 -1
  308. package/lib/styles/textarea.js.map +0 -1
  309. package/lib/styles/tooltip.d.ts.map +0 -1
  310. package/lib/styles/tooltip.js.map +0 -1
  311. package/lib/styles/wizard.d.ts.map +0 -1
  312. package/lib/styles/wizard.js.map +0 -1
  313. package/lib/types/common.d.ts.map +0 -1
  314. package/lib/types/common.js.map +0 -1
  315. package/lib/utils/calendar-utils.d.ts.map +0 -1
  316. package/lib/utils/calendar-utils.js.map +0 -1
  317. package/lib/utils/custom-scrollbar.d.ts.map +0 -1
  318. package/lib/utils/custom-scrollbar.js.map +0 -1
  319. package/lib/utils/flavor-sheet.d.ts.map +0 -1
  320. package/lib/utils/flavor-sheet.js.map +0 -1
  321. package/lib/utils/icon-registry.d.ts.map +0 -1
  322. package/lib/utils/icon-registry.js.map +0 -1
  323. package/lib/utils/icons.d.ts.map +0 -1
  324. package/lib/utils/icons.js.map +0 -1
  325. package/lib/utils/loader-registry.d.ts.map +0 -1
  326. package/lib/utils/loader-registry.js.map +0 -1
  327. package/lib/utils/locale.d.ts.map +0 -1
  328. package/lib/utils/locale.js.map +0 -1
  329. package/lib/utils/mobile.d.ts.map +0 -1
  330. package/lib/utils/mobile.js.map +0 -1
  331. package/lib/utils/number-format.d.ts.map +0 -1
  332. package/lib/utils/number-format.js.map +0 -1
  333. package/lib/utils/parse-boolean.d.ts +0 -39
  334. package/lib/utils/parse-boolean.d.ts.map +0 -1
  335. package/lib/utils/parse-boolean.js +0 -58
  336. package/lib/utils/parse-boolean.js.map +0 -1
  337. package/lib/utils/positioning.d.ts.map +0 -1
  338. package/lib/utils/positioning.js.map +0 -1
  339. package/lib/utils/property-capture.d.ts.map +0 -1
  340. package/lib/utils/property-capture.js.map +0 -1
  341. package/lib/utils/property-manager.d.ts.map +0 -1
  342. package/lib/utils/property-manager.js.map +0 -1
  343. package/lib/utils/resize-observer.d.ts.map +0 -1
  344. package/lib/utils/resize-observer.js.map +0 -1
  345. package/lib/utils/scroll-lock.d.ts.map +0 -1
  346. package/lib/utils/scroll-lock.js.map +0 -1
  347. package/lib/utils/styles.d.ts.map +0 -1
  348. package/lib/utils/styles.js.map +0 -1
  349. package/lib/version.d.ts.map +0 -1
  350. package/lib/version.js.map +0 -1
@@ -1,18 +1,7 @@
1
1
  /**
2
- * TyFileUpload Web Component
3
- *
4
- * Drop zone + file picker primitive. Replaces `<input type="file">` with
5
- * a styleable, drag-and-drop-capable equivalent that works everywhere.
6
- *
7
- * - Click to browse or drag-and-drop
8
- * - Multiple file support
9
- * - Accept filter passed to the underlying file input
10
- * - Emits `change` with `{ files, names }` on every selection
11
- * - Form-associated: participates in FormData and form.reset()
12
- *
13
- * @example
14
- * <ty-file-upload name="avatar" accept="image/*" label="Profile photo"></ty-file-upload>
15
- * <ty-file-upload name="docs" multiple accept=".pdf,.docx" label="Attachments"></ty-file-upload>
2
+ * TyFileUpload Web Component — drop zone + file picker primitive. Replaces
3
+ * `<input type="file">` with a styleable, drag-and-drop-capable equivalent.
4
+ * Form-associated: participates in FormData and form.reset().
16
5
  */
17
6
  import { TyComponent } from "../base/ty-component.js";
18
7
  import type { PropertyChange } from "../utils/property-manager.js";
@@ -118,4 +107,3 @@ export declare class TyFileUpload extends TyComponent<FileUploadState> implement
118
107
  protected render(): void;
119
108
  }
120
109
  export {};
121
- //# sourceMappingURL=file-upload.d.ts.map
@@ -1,19 +1,3 @@
1
- /**
2
- * TyFileUpload Web Component
3
- *
4
- * Drop zone + file picker primitive. Replaces `<input type="file">` with
5
- * a styleable, drag-and-drop-capable equivalent that works everywhere.
6
- *
7
- * - Click to browse or drag-and-drop
8
- * - Multiple file support
9
- * - Accept filter passed to the underlying file input
10
- * - Emits `change` with `{ files, names }` on every selection
11
- * - Form-associated: participates in FormData and form.reset()
12
- *
13
- * @example
14
- * <ty-file-upload name="avatar" accept="image/*" label="Profile photo"></ty-file-upload>
15
- * <ty-file-upload name="docs" multiple accept=".pdf,.docx" label="Attachments"></ty-file-upload>
16
- */
17
1
  import { TyComponent } from "../base/ty-component.js";
18
2
  import { ensureStyles } from "../utils/styles.js";
19
3
  import { fileUploadStyles } from "../styles/file-upload.js";
@@ -69,9 +53,6 @@ export class TyFileUpload extends TyComponent {
69
53
  }
70
54
  return fd;
71
55
  }
72
- // ============================================================================
73
- // PUBLIC API
74
- // ============================================================================
75
56
  get files() {
76
57
  return [...this._files];
77
58
  }
@@ -126,9 +107,6 @@ export class TyFileUpload extends TyComponent {
126
107
  get form() {
127
108
  return this._internals.form;
128
109
  }
129
- // ============================================================================
130
- // INTERNAL FILE MANAGEMENT
131
- // ============================================================================
132
110
  setFiles(newFiles) {
133
111
  this._files = this.multiple ? newFiles : newFiles.slice(0, 1);
134
112
  this.updateFormValue();
@@ -150,9 +128,6 @@ export class TyFileUpload extends TyComponent {
150
128
  if (fileInput)
151
129
  fileInput.value = "";
152
130
  }
153
- // ============================================================================
154
- // EVENT LISTENERS
155
- // ============================================================================
156
131
  setupEventListeners() {
157
132
  if (this._listenersSetup)
158
133
  return;
@@ -251,9 +226,6 @@ export class TyFileUpload extends TyComponent {
251
226
  fileInput.removeEventListener("change", this._inputChangeHandler);
252
227
  this._listenersSetup = false;
253
228
  }
254
- // ============================================================================
255
- // RENDERING
256
- // ============================================================================
257
229
  buildDropZoneClasses() {
258
230
  const classes = ["drop-zone"];
259
231
  if (this._isDragging)
@@ -336,7 +308,6 @@ export class TyFileUpload extends TyComponent {
336
308
  shadow.appendChild(container);
337
309
  this.setupEventListeners();
338
310
  }
339
- // Label
340
311
  const labelEl = container.querySelector(".upload-label");
341
312
  if (this.label) {
342
313
  labelEl.style.display = "";
@@ -353,21 +324,17 @@ export class TyFileUpload extends TyComponent {
353
324
  else {
354
325
  labelEl.style.display = "none";
355
326
  }
356
- // Drop zone
357
327
  const dropZone = container.querySelector(".drop-zone");
358
328
  dropZone.className = this.buildDropZoneClasses();
359
329
  dropZone.tabIndex = this.disabled ? -1 : 0;
360
330
  dropZone.setAttribute("aria-disabled", String(this.disabled));
361
331
  dropZone.setAttribute("aria-label", this.placeholder || "Upload files");
362
- // File input
363
332
  const fileInput = container.querySelector(".file-input");
364
333
  fileInput.multiple = this.multiple;
365
334
  fileInput.accept = this.accept;
366
335
  fileInput.disabled = this.disabled;
367
- // Upload icon — hide once files are selected to give room to the compact zone
368
336
  const uploadIcon = container.querySelector(".upload-icon");
369
337
  uploadIcon.style.display = this._files.length > 0 ? "none" : "";
370
- // Hint text
371
338
  const hintEl = container.querySelector(".upload-hint");
372
339
  if (this._files.length > 0) {
373
340
  hintEl.innerHTML = `<strong>${this._files.length} file${this._files.length !== 1 ? "s" : ""} selected</strong>`;
@@ -375,7 +342,6 @@ export class TyFileUpload extends TyComponent {
375
342
  else {
376
343
  hintEl.innerHTML = `Drop files here or <span class="browse-link">click to browse</span>`;
377
344
  }
378
- // Sub-hint
379
345
  const subHintEl = container.querySelector(".upload-sub-hint");
380
346
  if (this.accept && this._files.length === 0) {
381
347
  subHintEl.textContent = `Accepted: ${this.accept}`;
@@ -384,10 +350,8 @@ export class TyFileUpload extends TyComponent {
384
350
  else {
385
351
  subHintEl.style.display = "none";
386
352
  }
387
- // File list
388
353
  const fileList = container.querySelector(".file-list");
389
354
  this.renderFileList(fileList);
390
- // Error message
391
355
  const errorEl = container.querySelector(".error-message");
392
356
  errorEl.textContent = this.error;
393
357
  errorEl.style.display = this.error ? "" : "none";
@@ -438,4 +402,3 @@ TyFileUpload.properties = {
438
402
  if (!customElements.get("ty-file-upload")) {
439
403
  customElements.define("ty-file-upload", TyFileUpload);
440
404
  }
441
- //# sourceMappingURL=file-upload.js.map
@@ -1,7 +1,5 @@
1
1
  /**
2
- * TyIcon Web Component
3
- * PORTED FROM: clj/ty/components/icon.cljs
4
- * SVG icon component with size variants and animations
2
+ * TyIcon Web Component — SVG icon with size variants and animations.
5
3
  */
6
4
  import type { IconSize, IconTempo, TyIconElement } from '../types/common.js';
7
5
  import { TyComponent } from '../base/ty-component.js';
@@ -19,13 +17,6 @@ interface IconState {
19
17
  }
20
18
  /**
21
19
  * Ty Icon Component
22
- *
23
- * @example
24
- * ```html
25
- * <ty-icon name="check"></ty-icon>
26
- * <ty-icon name="spinner" spin></ty-icon>
27
- * <ty-icon name="heart" size="xl"></ty-icon>
28
- * ```
29
20
  */
30
21
  export declare class TyIcon extends TyComponent<IconState> implements TyIconElement {
31
22
  static formAssociated: boolean;
@@ -69,13 +60,7 @@ export declare class TyIcon extends TyComponent<IconState> implements TyIconElem
69
60
  */
70
61
  private _slot;
71
62
  constructor();
72
- /**
73
- * Called when component connects to DOM
74
- */
75
63
  protected onConnect(): void;
76
- /**
77
- * Called when component disconnects from DOM
78
- */
79
64
  protected onDisconnect(): void;
80
65
  /**
81
66
  * Handle property changes - called BEFORE render
@@ -97,13 +82,8 @@ export declare class TyIcon extends TyComponent<IconState> implements TyIconElem
97
82
  /** Update host element classes */
98
83
  private updateClasses;
99
84
  /**
100
- * Render the icon SVG
101
- * Smart rendering strategy:
102
- * 1. Check memory registry (instant)
103
- * 2. If found in memory -> render immediately
104
- * 3. If not in memory -> show NOT_FOUND_ICON immediately (prevents empty state)
105
- * 4. Then check cache asynchronously and replace if found
106
- * 5. Only re-render if SVG actually changed
85
+ * Render the icon SVG. Unknown/unset names fall back to NOT_FOUND_ICON
86
+ * immediately rather than rendering nothing (prevents layout shift).
107
87
  */
108
88
  protected render(): void;
109
89
  /**
@@ -115,4 +95,3 @@ export declare class TyIcon extends TyComponent<IconState> implements TyIconElem
115
95
  private renderSvg;
116
96
  }
117
97
  export { IconRegistry };
118
- //# sourceMappingURL=icon.d.ts.map
@@ -1,101 +1,49 @@
1
- /**
2
- * TyIcon Web Component
3
- * PORTED FROM: clj/ty/components/icon.cljs
4
- * SVG icon component with size variants and animations
5
- */
6
1
  import { TyComponent } from '../base/ty-component.js';
7
2
  import { ensureStyles } from '../utils/styles.js';
8
3
  import { iconStyles } from '../styles/icon.js';
9
4
  import * as IconRegistry from '../utils/icon-registry.js';
10
5
  let _iconIdCounter = 0;
11
- /** Fallback SVG for missing icons - More visible to prevent layout shift */
12
6
  const NOT_FOUND_ICON = `<svg xmlns="http://www.w3.org/2000/svg"
13
7
  viewBox="0 0 512 512"
14
8
  fill="currentColor"
15
9
  opacity="0.2">
16
10
  <path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"/>
17
11
  </svg>`;
18
- /**
19
- * Ty Icon Component
20
- *
21
- * @example
22
- * ```html
23
- * <ty-icon name="check"></ty-icon>
24
- * <ty-icon name="spinner" spin></ty-icon>
25
- * <ty-icon name="heart" size="xl"></ty-icon>
26
- * ```
27
- */
28
12
  export class TyIcon extends TyComponent {
29
13
  constructor() {
30
- super(); // TyComponent handles attachInternals() and attachShadow()
31
- // ============================================================================
32
- // INTERNAL STATE - Not managed by PropertyManager
33
- // ============================================================================
14
+ super();
34
15
  this._watchId = null;
35
- /** Track currently rendered SVG to avoid unnecessary re-renders */
36
16
  this._currentSvg = '';
37
- /**
38
- * Single shadow-DOM <slot> that holds either:
39
- * - light-DOM children supplied by the user (server-side path: pasted SVG), or
40
- * - fallback content driven by the registry (`name=`) or NOT_FOUND_ICON.
41
- *
42
- * Browser slot semantics handle precedence: when the host has assigned nodes,
43
- * the slot's fallback content is hidden automatically — no detection logic needed.
44
- */
45
17
  this._slot = null;
46
- // Apply styles to shadow root
47
18
  ensureStyles(this.shadowRoot, { css: iconStyles, id: 'ty-icon' });
48
- // Build the slot once. Fallback content shows when no light-DOM children are slotted.
49
19
  this._slot = document.createElement('slot');
50
20
  this._slot.innerHTML = NOT_FOUND_ICON;
51
21
  this._currentSvg = NOT_FOUND_ICON;
52
22
  this.shadowRoot.appendChild(this._slot);
53
23
  }
54
- // observedAttributes auto-generated by TyComponent from properties config
55
- // ============================================================================
56
- // TYCOMPONENT LIFECYCLE HOOKS
57
- // ============================================================================
58
- /**
59
- * Called when component connects to DOM
60
- */
61
24
  onConnect() {
62
- // Generate unique watch ID
63
25
  this._watchId = `ty-icon-${++_iconIdCounter}`;
64
- // Watch for registry changes that affect this icon
65
26
  if (this.name) {
66
27
  IconRegistry.addWatcher(this._watchId, this.name, (changedIcons) => {
67
- // Re-render if our icon changed
68
28
  if (this.name && changedIcons.has(this.name)) {
69
29
  this.render();
70
30
  }
71
31
  });
72
32
  }
73
- // Update host element classes
74
33
  this.updateClasses();
75
- // TyComponent will call render() automatically after this hook
76
34
  }
77
- /**
78
- * Called when component disconnects from DOM
79
- */
80
35
  onDisconnect() {
81
- // Clean up watcher
82
36
  if (this._watchId) {
83
37
  IconRegistry.removeWatcher(this._watchId);
84
38
  this._watchId = null;
85
39
  }
86
40
  }
87
- /**
88
- * Handle property changes - called BEFORE render
89
- * Detects name changes to update icon registry watcher
90
- */
91
41
  onPropertiesChanged(changes) {
92
42
  for (const change of changes) {
93
43
  if (change.name === 'name') {
94
- // Remove old watcher
95
44
  if (this._watchId) {
96
45
  IconRegistry.removeWatcher(this._watchId);
97
46
  }
98
- // Re-add watcher for new name
99
47
  const newName = change.newValue || '';
100
48
  if (newName && this.isConnected) {
101
49
  this._watchId = `ty-icon-${++_iconIdCounter}`;
@@ -107,12 +55,8 @@ export class TyIcon extends TyComponent {
107
55
  }
108
56
  }
109
57
  }
110
- // Update host element classes for any visual change
111
58
  this.updateClasses();
112
59
  }
113
- // ============================================================================
114
- // PROPERTY ACCESSORS - Simple wrappers (no logic!)
115
- // ============================================================================
116
60
  get name() {
117
61
  return this.getProperty('name');
118
62
  }
@@ -145,32 +89,23 @@ export class TyIcon extends TyComponent {
145
89
  set tempo(value) {
146
90
  this.setProperty('tempo', value || '');
147
91
  }
148
- // ============================================================================
149
- // RENDERING
150
- // ============================================================================
151
- /** Build CSS classes for the host element */
152
92
  buildClasses() {
153
93
  const classes = [];
154
- // Size class
155
94
  const size = this.getProperty('size');
156
95
  if (size) {
157
96
  classes.push(`icon-${size}`);
158
97
  }
159
- // Animation classes
160
98
  if (this.getProperty('spin')) {
161
99
  classes.push('icon-spin');
162
100
  }
163
101
  if (this.getProperty('pulse')) {
164
102
  classes.push('icon-pulse');
165
103
  }
166
- // Tempo class
167
104
  const tempo = this.getProperty('tempo');
168
105
  if (tempo && (this.getProperty('spin') || this.getProperty('pulse'))) {
169
106
  classes.push(`icon-tempo-${tempo}`);
170
107
  }
171
- // Preserve user-added classes that don't conflict
172
108
  const currentClasses = this.className.split(/\s+/).filter(cls => {
173
- // Filter out component-managed classes
174
109
  return cls &&
175
110
  !cls.startsWith('icon-') &&
176
111
  cls !== 'icon-spin' &&
@@ -178,29 +113,18 @@ export class TyIcon extends TyComponent {
178
113
  });
179
114
  return [...classes, ...currentClasses];
180
115
  }
181
- /** Update host element classes */
182
116
  updateClasses() {
183
117
  const newClasses = this.buildClasses().join(' ');
184
118
  if (this.className !== newClasses) {
185
119
  this.className = newClasses;
186
120
  }
187
121
  }
188
- /**
189
- * Render the icon SVG
190
- * Smart rendering strategy:
191
- * 1. Check memory registry (instant)
192
- * 2. If found in memory -> render immediately
193
- * 3. If not in memory -> show NOT_FOUND_ICON immediately (prevents empty state)
194
- * 4. Then check cache asynchronously and replace if found
195
- * 5. Only re-render if SVG actually changed
196
- */
197
122
  render() {
198
123
  const name = this.getProperty('name');
199
124
  if (!name) {
200
125
  this.renderSvg(NOT_FOUND_ICON);
201
126
  return;
202
127
  }
203
- // Fast path: Check memory registry first
204
128
  const memorySvg = IconRegistry.getIcon(name);
205
129
  if (memorySvg) {
206
130
  this.renderSvg(memorySvg);
@@ -208,14 +132,7 @@ export class TyIcon extends TyComponent {
208
132
  }
209
133
  this.renderSvg(NOT_FOUND_ICON);
210
134
  }
211
- /**
212
- * Update the slot's fallback content.
213
- * If the user has slotted light-DOM children (e.g., raw <svg>), the browser
214
- * shows those instead and the fallback stays hidden — but we still keep it
215
- * up to date so removing the children reveals the right registry/fallback SVG.
216
- */
217
135
  renderSvg(svg) {
218
- // Only render if content actually changed
219
136
  if (this._currentSvg === svg) {
220
137
  return;
221
138
  }
@@ -226,9 +143,6 @@ export class TyIcon extends TyComponent {
226
143
  }
227
144
  }
228
145
  TyIcon.formAssociated = false;
229
- // ============================================================================
230
- // PROPERTY CONFIGURATION - Declarative property lifecycle
231
- // ============================================================================
232
146
  TyIcon.properties = {
233
147
  name: { type: 'string', visual: true, default: '' },
234
148
  size: { type: 'string', visual: true, default: '' },
@@ -236,10 +150,7 @@ TyIcon.properties = {
236
150
  pulse: { type: 'boolean', visual: true, default: false },
237
151
  tempo: { type: 'string', visual: true, default: '' },
238
152
  };
239
- // Register the custom element
240
153
  if (!customElements.get('ty-icon')) {
241
154
  customElements.define('ty-icon', TyIcon);
242
155
  }
243
- // Export for use in other modules
244
156
  export { IconRegistry };
245
- //# sourceMappingURL=icon.js.map
@@ -1,63 +1,11 @@
1
1
  /**
2
- * TyInput Web Component
3
- * PORTED FROM: clj/ty/components/input.cljs
4
- * Phase D: Complete with debounce feature for input and change events
5
- *
6
- * Enhanced input component with:
7
- * - Label, error messages, semantic styling
8
- * - Icon slots (start/end)
9
- * - Numeric formatting with shadow values
10
- * - Currency, percent, compact notation
11
- * - Format-on-blur / raw-on-focus behavior
12
- * - Debounce (0-5000ms) for input/change events
13
- * - Immediate event firing on blur (cancels pending debounce)
14
- *
15
- * NOTE: Checkbox functionality is in separate ty-checkbox component
2
+ * TyInput Web Component - text input with label, error, icon slots and
3
+ * locale-aware numeric formatting (format-on-blur / raw-on-focus via a parsed
4
+ * "shadow value"). Debounce 0-5000ms; blur flushes any pending debounced event.
16
5
  */
17
6
  import type { Flavor, Size, InputType, TyInputElement } from '../types/common.js';
18
7
  import { TyComponent } from '../base/ty-component.js';
19
8
  import type { PropertyChange } from '../utils/property-manager.js';
20
- /**
21
- * Ty Input Component (Phase D - Complete with Debounce)
22
- *
23
- * @example
24
- * ```html
25
- * <!-- Basic input -->
26
- * <ty-input label="Email" type="email" placeholder="Enter email" required></ty-input>
27
- *
28
- * <!-- With icons -->
29
- * <ty-input label="Search">
30
- * <ty-icon slot="start" name="search"></ty-icon>
31
- * </ty-input>
32
- *
33
- * <!-- With debounce (500ms) -->
34
- * <ty-input
35
- * label="Search"
36
- * debounce="500"
37
- * placeholder="Type to search...">
38
- * </ty-input>
39
- *
40
- * <!-- Currency formatting -->
41
- * <ty-input
42
- * label="Price"
43
- * type="currency"
44
- * currency="USD"
45
- * locale="en-US"
46
- * value="1234.56">
47
- * </ty-input>
48
- *
49
- * <!-- Percent formatting -->
50
- * <ty-input
51
- * label="Tax Rate"
52
- * type="percent"
53
- * value="15"
54
- * precision="2">
55
- * </ty-input>
56
- * ```
57
- */
58
- /**
59
- * Internal state interface for TyInput component
60
- */
61
9
  interface InputState {
62
10
  shadowValue: number | string | null;
63
11
  isFocused: boolean;
@@ -165,51 +113,23 @@ export declare class TyInput extends TyComponent<InputState> implements TyInputE
165
113
  private _changeDebounceTimer;
166
114
  private _localeObserver?;
167
115
  constructor();
168
- /**
169
- * Called when component connects to DOM
170
- * TyComponent already handled pre-connection property capture
171
- */
116
+ /** TyComponent already handled pre-connection property capture. */
172
117
  protected onConnect(): void;
173
118
  /** Custom (non-built-in) flavors — see utils/flavor-sheet.ts. */
174
119
  private _syncCustomFlavor;
175
- /**
176
- * Called when component disconnects from DOM
177
- */
178
120
  protected onDisconnect(): void;
179
- /**
180
- * Handle property changes - called BEFORE render
181
- * This replaces the old attributeChangedCallback logic
182
- */
121
+ /** Handle property changes — called BEFORE render. */
183
122
  protected onPropertiesChanged(changes: PropertyChange[]): void;
184
- /**
185
- * Hook: Called when form is reset
186
- * Clear shadow value and focus state
187
- */
188
123
  protected onFormReset(): void;
189
124
  /**
190
125
  * Override form value to return shadow value
191
126
  * This ensures numeric types submit their parsed values
192
127
  */
193
128
  protected getFormValue(): FormDataEntryValue | null;
194
- /**
195
- * Initialize shadow value from the initial value attribute
196
- */
197
129
  private initializeShadowValue;
198
- /**
199
- * Parse a string value to the appropriate shadow value type
200
- */
201
130
  private parseShadowValue;
202
- /**
203
- * Check if current input should format numbers
204
- */
205
131
  private shouldFormat;
206
- /**
207
- * Get the format configuration for current input
208
- */
209
132
  private getFormatConfig;
210
- /**
211
- * Get the display value (formatted or raw)
212
- */
213
133
  private getDisplayValue;
214
134
  get type(): InputType;
215
135
  set type(v: InputType);
@@ -240,32 +160,13 @@ export declare class TyInput extends TyComponent<InputState> implements TyInputE
240
160
  get debounce(): number;
241
161
  set debounce(v: number | string);
242
162
  get form(): HTMLFormElement | null;
243
- /**
244
- * Build CSS class list for input wrapper
245
- */
246
163
  private buildClassList;
247
- /**
248
- * Dispatch input event (helper method for debouncing)
249
- */
250
164
  private dispatchInputEvent;
251
- /**
252
- * Dispatch change event (helper method for debouncing)
253
- */
254
165
  private dispatchChangeEvent;
255
- /**
256
- * Remove event listeners for cleanup
257
- */
258
166
  private removeEventListeners;
259
- /**
260
- * Setup event listeners for input element
261
- * IMPORTANT: Only called ONCE, not on every render (like ClojureScript)
262
- */
167
+ /** IMPORTANT: Only called ONCE, not on every render. */
263
168
  private setupEventListeners;
264
- /**
265
- * Render the input component with wrapper and slots
266
- * Phase C: Uses getDisplayValue() for formatted output
267
- *
268
- */
169
+ /** Render the input component with wrapper and slots. */
269
170
  render(): void;
270
171
  /**
271
172
  * Wire the password reveal toggle (rendered only for type="password").
@@ -282,4 +183,3 @@ export declare class TyInput extends TyComponent<InputState> implements TyInputE
282
183
  private updateValidity;
283
184
  }
284
185
  export {};
285
- //# sourceMappingURL=input.d.ts.map