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,9 +1,6 @@
1
1
  /**
2
- * TyOption Web Component
3
- * PORTED FROM: clj/ty/components/option.cljs
4
- *
5
- * Ty Option Web Component - Rich HTML alternative to native <option>
6
- * Enhanced with robust property-attribute synchronization for framework compatibility.
2
+ * TyOption Web Component - rich HTML alternative to native <option>.
3
+ * Property-attribute synchronization keeps it compatible with frameworks.
7
4
  */
8
5
  import type { TyOptionElement } from '../types/common.js';
9
6
  export declare class TyOption extends HTMLElement implements TyOptionElement {
@@ -31,9 +28,5 @@ export declare class TyOption extends HTMLElement implements TyOptionElement {
31
28
  set highlighted(value: boolean);
32
29
  get hidden(): boolean;
33
30
  set hidden(value: boolean);
34
- /**
35
- * Render the option component with rich HTML content and property sync
36
- */
37
31
  private render;
38
32
  }
39
- //# sourceMappingURL=option.d.ts.map
@@ -1,223 +1,175 @@
1
- /**
2
- * TyOption Web Component
3
- * PORTED FROM: clj/ty/components/option.cljs
4
- *
5
- * Ty Option Web Component - Rich HTML alternative to native <option>
6
- * Enhanced with robust property-attribute synchronization for framework compatibility.
7
- */
8
1
  import { ensureStyles } from '../utils/styles.js';
9
2
  import { optionStyles } from '../styles/option.js';
10
- /**
11
- * Ty Option Component
12
- *
13
- * Rich HTML alternative to native <option> element.
14
- * Supports HTML content, styling, and framework property binding.
15
- *
16
- * @example
17
- * ```html
18
- * <ty-option value="1">Simple Option</ty-option>
19
- * <ty-option value="2" selected>Selected Option</ty-option>
20
- * <ty-option value="3" disabled>Disabled Option</ty-option>
21
- * <ty-option value="4">
22
- * <strong>Rich</strong> <em>HTML</em> Content
23
- * </ty-option>
24
- * ```
25
- */
26
- /** Lucide `check` — shown on selected options (kept inline: shadow DOM can't rely on the icon registry) */
27
3
  const CHECK_SVG = `
28
- <svg class="option-check" viewBox="0 0 24 24" fill="none" stroke="currentColor"
29
- stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
30
- <path d="M20 6 9 17l-5-5" />
31
- </svg>
4
+ <svg class="option-check" viewBox="0 0 24 24" fill="none" stroke="currentColor"
5
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
6
+ <path d="M20 6 9 17l-5-5" />
7
+ </svg>
32
8
  `;
33
9
  export class TyOption extends HTMLElement {
34
- constructor() {
35
- super();
36
- this._value = undefined;
37
- this._selected = false;
38
- this._disabled = false;
39
- this._highlighted = false;
40
- this._hidden = false;
41
- const shadow = this.attachShadow({ mode: 'open' });
42
- ensureStyles(shadow, { css: optionStyles, id: 'ty-option' });
43
- this.render();
44
- }
45
- static get observedAttributes() {
46
- return ['value', 'disabled', 'selected', 'highlighted', 'hidden'];
47
- }
48
- connectedCallback() {
49
- // CRITICAL: Reagent/React may set properties BEFORE the element is constructed
50
- // Check if value was set directly on the instance before our getter/setter was available
51
- const instanceValue = Object.getOwnPropertyDescriptor(this, 'value');
52
- if (instanceValue && instanceValue.value !== undefined) {
53
- this._value = instanceValue.value;
54
- // Clean up the instance property so our getter/setter works
55
- delete this.value;
56
- }
57
- this.render();
58
- }
59
- attributeChangedCallback(name, oldValue, newValue) {
60
- if (oldValue === newValue)
61
- return;
62
- switch (name) {
63
- case 'value':
64
- this._value = newValue || undefined;
65
- break;
66
- case 'selected':
67
- this._selected = newValue !== null;
68
- break;
69
- case 'disabled':
70
- this._disabled = newValue !== null;
71
- break;
72
- case 'highlighted':
73
- this._highlighted = newValue !== null;
74
- break;
75
- case 'hidden':
76
- this._hidden = newValue !== null;
77
- break;
78
- }
79
- this.render();
80
- }
81
- /**
82
- * Get value from either property or attribute, with textContent fallback.
83
- * Property takes precedence (for framework compatibility).
84
- */
85
- getOptionValue() {
86
- // Explicit priority: property > attribute > textContent
87
- // This correctly handles empty strings
88
- if (this._value !== undefined) {
89
- return this._value;
90
- }
91
- const attrValue = this.getAttribute('value');
92
- if (attrValue !== null) {
93
- return attrValue;
94
- }
95
- return this.textContent?.trim() || '';
96
- }
97
- // Public API - Getters/Setters
98
- // NOTE: All setters trigger re-render to support property changes from frameworks like React
99
- get value() {
100
- return this.getOptionValue();
101
- }
102
- set value(val) {
103
- if (this._value !== val) {
104
- this._value = val;
105
- if (val !== undefined) {
106
- this.setAttribute('value', val);
107
- }
108
- else {
109
- this.removeAttribute('value');
110
- }
111
- this.render();
112
- }
113
- }
114
- get selected() {
115
- return this._selected;
116
- }
117
- set selected(value) {
118
- if (this._selected !== value) {
119
- this._selected = value;
120
- if (value) {
121
- this.setAttribute('selected', '');
122
- }
123
- else {
124
- this.removeAttribute('selected');
125
- }
126
- this.render();
127
- }
128
- }
129
- get disabled() {
130
- return this._disabled;
131
- }
132
- set disabled(value) {
133
- if (this._disabled !== value) {
134
- this._disabled = value;
135
- if (value) {
136
- this.setAttribute('disabled', '');
137
- }
138
- else {
139
- this.removeAttribute('disabled');
140
- }
141
- this.render();
142
- }
143
- }
144
- get highlighted() {
145
- return this._highlighted;
146
- }
147
- set highlighted(value) {
148
- if (this._highlighted !== value) {
149
- this._highlighted = value;
150
- if (value) {
151
- this.setAttribute('highlighted', '');
152
- }
153
- else {
154
- this.removeAttribute('highlighted');
155
- }
156
- this.render();
157
- }
158
- }
159
- get hidden() {
160
- return this._hidden;
161
- }
162
- set hidden(value) {
163
- if (this._hidden !== value) {
164
- this._hidden = value;
165
- if (value) {
166
- this.setAttribute('hidden', '');
167
- }
168
- else {
169
- this.removeAttribute('hidden');
170
- }
171
- this.render();
172
- }
173
- }
174
- /**
175
- * Render the option component with rich HTML content and property sync
176
- */
177
- render() {
178
- const shadow = this.shadowRoot;
179
- // Create wrapper once — the check icon alone communicates selection;
180
- // clicking a selected option again deselects it (see select.ts), so no
181
- // separate clear affordance is needed on mobile.
182
- if (!shadow.querySelector('.option-content')) {
183
- shadow.innerHTML = `<div class="option-content"><slot></slot>${CHECK_SVG}</div>`;
184
- }
185
- // Update content wrapper attributes
186
- const content = shadow.querySelector('.option-content');
187
- if (content) {
188
- // Disabled state
189
- if (this._disabled) {
190
- content.setAttribute('disabled', '');
191
- }
192
- else {
193
- content.removeAttribute('disabled');
194
- }
195
- // Selected state
196
- if (this._selected) {
197
- content.setAttribute('selected', '');
198
- }
199
- else {
200
- content.removeAttribute('selected');
201
- }
202
- // Highlighted state
203
- if (this._highlighted) {
204
- content.setAttribute('highlighted', '');
205
- }
206
- else {
207
- content.removeAttribute('highlighted');
208
- }
209
- // Hidden state
210
- if (this._hidden) {
211
- content.setAttribute('hidden', '');
212
- }
213
- else {
214
- content.removeAttribute('hidden');
215
- }
216
- }
217
- }
218
- }
219
- // Register the custom element
10
+ constructor() {
11
+ super();
12
+ this._value = undefined;
13
+ this._selected = false;
14
+ this._disabled = false;
15
+ this._highlighted = false;
16
+ this._hidden = false;
17
+ const shadow = this.attachShadow({ mode: 'open' });
18
+ ensureStyles(shadow, { css: optionStyles, id: 'ty-option' });
19
+ this.render();
20
+ }
21
+ static get observedAttributes() {
22
+ return ['value', 'disabled', 'selected', 'highlighted', 'hidden'];
23
+ }
24
+ connectedCallback() {
25
+ const instanceValue = Object.getOwnPropertyDescriptor(this, 'value');
26
+ if (instanceValue) {
27
+ this._value = instanceValue.value;
28
+ delete this.value;
29
+ }
30
+ this.render();
31
+ }
32
+ attributeChangedCallback(name, oldValue, newValue) {
33
+ if (oldValue === newValue)
34
+ return;
35
+ switch (name) {
36
+ case 'value':
37
+ this._value = newValue || undefined;
38
+ break;
39
+ case 'selected':
40
+ this._selected = newValue !== null;
41
+ break;
42
+ case 'disabled':
43
+ this._disabled = newValue !== null;
44
+ break;
45
+ case 'highlighted':
46
+ this._highlighted = newValue !== null;
47
+ break;
48
+ case 'hidden':
49
+ this._hidden = newValue !== null;
50
+ break;
51
+ }
52
+ this.render();
53
+ }
54
+ getOptionValue() {
55
+ if (this._value !== undefined) {
56
+ return this._value;
57
+ }
58
+ const attrValue = this.getAttribute('value');
59
+ if (attrValue !== null) {
60
+ return attrValue;
61
+ }
62
+ return this.textContent?.trim() || '';
63
+ }
64
+ get value() {
65
+ return this.getOptionValue();
66
+ }
67
+ set value(val) {
68
+ if (this._value !== val) {
69
+ this._value = val;
70
+ if (val !== undefined) {
71
+ this.setAttribute('value', val);
72
+ }
73
+ else {
74
+ this.removeAttribute('value');
75
+ }
76
+ this.render();
77
+ }
78
+ }
79
+ get selected() {
80
+ return this._selected;
81
+ }
82
+ set selected(value) {
83
+ if (this._selected !== value) {
84
+ this._selected = value;
85
+ if (value) {
86
+ this.setAttribute('selected', '');
87
+ }
88
+ else {
89
+ this.removeAttribute('selected');
90
+ }
91
+ this.render();
92
+ }
93
+ }
94
+ get disabled() {
95
+ return this._disabled;
96
+ }
97
+ set disabled(value) {
98
+ if (this._disabled !== value) {
99
+ this._disabled = value;
100
+ if (value) {
101
+ this.setAttribute('disabled', '');
102
+ }
103
+ else {
104
+ this.removeAttribute('disabled');
105
+ }
106
+ this.render();
107
+ }
108
+ }
109
+ get highlighted() {
110
+ return this._highlighted;
111
+ }
112
+ set highlighted(value) {
113
+ if (this._highlighted !== value) {
114
+ this._highlighted = value;
115
+ if (value) {
116
+ this.setAttribute('highlighted', '');
117
+ }
118
+ else {
119
+ this.removeAttribute('highlighted');
120
+ }
121
+ this.render();
122
+ }
123
+ }
124
+ get hidden() {
125
+ return this._hidden;
126
+ }
127
+ set hidden(value) {
128
+ if (this._hidden !== value) {
129
+ this._hidden = value;
130
+ if (value) {
131
+ this.setAttribute('hidden', '');
132
+ }
133
+ else {
134
+ this.removeAttribute('hidden');
135
+ }
136
+ this.render();
137
+ }
138
+ }
139
+ render() {
140
+ const shadow = this.shadowRoot;
141
+ if (!shadow.querySelector('.option-content')) {
142
+ shadow.innerHTML = `<div class="option-content"><slot></slot>${CHECK_SVG}</div>`;
143
+ }
144
+ const content = shadow.querySelector('.option-content');
145
+ if (content) {
146
+ if (this._disabled) {
147
+ content.setAttribute('disabled', '');
148
+ }
149
+ else {
150
+ content.removeAttribute('disabled');
151
+ }
152
+ if (this._selected) {
153
+ content.setAttribute('selected', '');
154
+ }
155
+ else {
156
+ content.removeAttribute('selected');
157
+ }
158
+ if (this._highlighted) {
159
+ content.setAttribute('highlighted', '');
160
+ }
161
+ else {
162
+ content.removeAttribute('highlighted');
163
+ }
164
+ if (this._hidden) {
165
+ content.setAttribute('hidden', '');
166
+ }
167
+ else {
168
+ content.removeAttribute('hidden');
169
+ }
170
+ }
171
+ }
172
+ }
220
173
  if (!customElements.get('ty-option')) {
221
- customElements.define('ty-option', TyOption);
174
+ customElements.define('ty-option', TyOption);
222
175
  }
223
- //# sourceMappingURL=option.js.map
@@ -1,19 +1,6 @@
1
1
  /**
2
- * Popup Component
3
- *
4
- * Interactive popup component with dropdown-like behavior and tooltip positioning.
5
- * Uses parent-child relationship - popup opens on click, stays open for interaction,
6
- * closes on outside click or ESC key.
7
- *
8
- * @example
9
- * <button>
10
- * Click me
11
- * <ty-popup placement="bottom" offset="8">
12
- * <div class="ty-elevated p-4 rounded-lg">
13
- * Popup content here
14
- * </div>
15
- * </ty-popup>
16
- * </button>
2
+ * Popup Component - click-triggered popup positioned against its PARENT element
3
+ * (the anchor). Stays open for interaction; closes on outside click or ESC.
17
4
  */
18
5
  import { type Placement } from '../utils/positioning.js';
19
6
  /**
@@ -33,11 +20,9 @@ export declare class TyPopup extends HTMLElement {
33
20
  closePopup?: () => void;
34
21
  openPopup?: () => void;
35
22
  togglePopup?: () => void;
36
- /** Observed attributes */
37
23
  static get observedAttributes(): string[];
38
24
  constructor();
39
25
  connectedCallback(): void;
40
26
  disconnectedCallback(): void;
41
27
  attributeChangedCallback(name: string, _oldValue: string | null, _newValue: string | null): void;
42
28
  }
43
- //# sourceMappingURL=popup.d.ts.map