@diwacopilot/components 1.0.0 → 1.1.0

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 (467) hide show
  1. package/dist/cjs/diwa-checkbox.cjs.entry.js +1 -3
  2. package/dist/cjs/diwa-checkbox.cjs.entry.js.map +1 -1
  3. package/dist/cjs/diwa-components.cjs.js +1 -1
  4. package/dist/cjs/diwa-heading.cjs.entry.js +126 -0
  5. package/dist/cjs/diwa-heading.cjs.entry.js.map +1 -0
  6. package/dist/cjs/diwa-icon.cjs.entry.js +1 -1
  7. package/dist/cjs/diwa-inline-notification.cjs.entry.js +1 -1
  8. package/dist/cjs/diwa-input-date.cjs.entry.js +1 -1
  9. package/dist/cjs/diwa-input-email.cjs.entry.js +1 -1
  10. package/dist/cjs/diwa-input-month.cjs.entry.js +1 -1
  11. package/dist/cjs/diwa-input-number.cjs.entry.js +1 -1
  12. package/dist/cjs/diwa-input-password.cjs.entry.js +1 -1
  13. package/dist/cjs/diwa-input-search.cjs.entry.js +1 -1
  14. package/dist/cjs/diwa-input-tel.cjs.entry.js +1 -1
  15. package/dist/cjs/diwa-input-text.cjs.entry.js +1 -1
  16. package/dist/cjs/diwa-input-time.cjs.entry.js +1 -1
  17. package/dist/cjs/diwa-input-url.cjs.entry.js +1 -1
  18. package/dist/cjs/diwa-input-week.cjs.entry.js +1 -1
  19. package/dist/cjs/diwa-input.cjs.entry.js +1 -1
  20. package/dist/cjs/diwa-link-pure.cjs.entry.js +1 -1
  21. package/dist/cjs/diwa-link.cjs.entry.js +1 -1
  22. package/dist/cjs/diwa-modal.cjs.entry.js +1 -1
  23. package/dist/cjs/diwa-multi-select-option.cjs.entry.js +1 -1
  24. package/dist/cjs/diwa-multi-select.cjs.entry.js +2 -2
  25. package/dist/cjs/diwa-pagination.cjs.entry.js +1 -1
  26. package/dist/cjs/diwa-pin-code.cjs.entry.js +2 -2
  27. package/dist/cjs/diwa-popover.cjs.entry.js +1 -1
  28. package/dist/cjs/diwa-radio-group-item.cjs.entry.js +2 -3
  29. package/dist/cjs/diwa-radio-group-item.cjs.entry.js.map +1 -1
  30. package/dist/cjs/diwa-radio-group.cjs.entry.js +1 -1
  31. package/dist/cjs/diwa-scroller.cjs.entry.js +23 -13
  32. package/dist/cjs/diwa-scroller.cjs.entry.js.map +1 -1
  33. package/dist/cjs/diwa-segmented-control-item.cjs.entry.js +1 -1
  34. package/dist/cjs/diwa-segmented-control.cjs.entry.js +1 -1
  35. package/dist/cjs/diwa-select-option.cjs.entry.js +24 -10
  36. package/dist/cjs/diwa-select-option.cjs.entry.js.map +1 -1
  37. package/dist/cjs/diwa-select.cjs.entry.js +15 -1
  38. package/dist/cjs/diwa-select.cjs.entry.js.map +1 -1
  39. package/dist/cjs/diwa-spinner.cjs.entry.js +1 -1
  40. package/dist/cjs/diwa-stepper-horizontal-item.cjs.entry.js +1 -1
  41. package/dist/cjs/diwa-stepper-horizontal.cjs.entry.js +1 -1
  42. package/dist/cjs/diwa-switch.cjs.entry.js +1 -1
  43. package/dist/cjs/diwa-table-body.cjs.entry.js +1 -1
  44. package/dist/cjs/diwa-table-cell.cjs.entry.js +15 -15
  45. package/dist/cjs/diwa-table-cell.cjs.entry.js.map +1 -1
  46. package/dist/cjs/diwa-table-head-cell.cjs.entry.js +64 -53
  47. package/dist/cjs/diwa-table-head-cell.cjs.entry.js.map +1 -1
  48. package/dist/cjs/diwa-table-head.cjs.entry.js +16 -11
  49. package/dist/cjs/diwa-table-head.cjs.entry.js.map +1 -1
  50. package/dist/cjs/diwa-table-row.cjs.entry.js +11 -10
  51. package/dist/cjs/diwa-table-row.cjs.entry.js.map +1 -1
  52. package/dist/cjs/diwa-table.cjs.entry.js +83 -43
  53. package/dist/cjs/diwa-table.cjs.entry.js.map +1 -1
  54. package/dist/cjs/diwa-tabs-bar.cjs.entry.js +1 -1
  55. package/dist/cjs/diwa-tabs-item.cjs.entry.js +1 -1
  56. package/dist/cjs/diwa-tabs.cjs.entry.js +12 -12
  57. package/dist/cjs/diwa-tabs.cjs.entry.js.map +1 -1
  58. package/dist/cjs/diwa-tag-dismissible.cjs.entry.js +6 -8
  59. package/dist/cjs/diwa-tag-dismissible.cjs.entry.js.map +1 -1
  60. package/dist/cjs/diwa-tag.cjs.entry.js +2 -2
  61. package/dist/cjs/diwa-tag.cjs.entry.js.map +1 -1
  62. package/dist/cjs/diwa-text-list-item.cjs.entry.js +1 -1
  63. package/dist/cjs/diwa-text-list.cjs.entry.js +1 -1
  64. package/dist/cjs/diwa-text.cjs.entry.js +1 -1
  65. package/dist/cjs/diwa-textarea.cjs.entry.js +1 -1
  66. package/dist/cjs/diwa-toast-item.cjs.entry.js +1 -1
  67. package/dist/cjs/diwa-toast.cjs.entry.js +111 -17
  68. package/dist/cjs/diwa-toast.cjs.entry.js.map +1 -1
  69. package/dist/cjs/loader.cjs.js +1 -1
  70. package/dist/collection/collection-manifest.json +1 -0
  71. package/dist/collection/components/diwa-checkbox/diwa-checkbox-styles.js +1 -3
  72. package/dist/collection/components/diwa-checkbox/diwa-checkbox-styles.js.map +1 -1
  73. package/dist/collection/components/diwa-heading/diwa-heading-styles.js +53 -0
  74. package/dist/collection/components/diwa-heading/diwa-heading-styles.js.map +1 -0
  75. package/dist/collection/components/diwa-heading/diwa-heading-utils.js +26 -0
  76. package/dist/collection/components/diwa-heading/diwa-heading-utils.js.map +1 -0
  77. package/dist/collection/components/diwa-heading/diwa-heading.js +235 -0
  78. package/dist/collection/components/diwa-heading/diwa-heading.js.map +1 -0
  79. package/dist/collection/components/diwa-heading/types.js +2 -0
  80. package/dist/collection/components/diwa-heading/types.js.map +1 -0
  81. package/dist/collection/components/diwa-icon/diwa-icon.js +1 -1
  82. package/dist/collection/components/diwa-inline-notification/diwa-inline-notification.js +1 -1
  83. package/dist/collection/components/diwa-input/diwa-input.js +1 -1
  84. package/dist/collection/components/diwa-input-date/diwa-input-date.js +1 -1
  85. package/dist/collection/components/diwa-input-email/diwa-input-email.js +1 -1
  86. package/dist/collection/components/diwa-input-month/diwa-input-month.js +1 -1
  87. package/dist/collection/components/diwa-input-number/diwa-input-number.js +1 -1
  88. package/dist/collection/components/diwa-input-password/diwa-input-password.js +1 -1
  89. package/dist/collection/components/diwa-input-search/diwa-input-search.js +1 -1
  90. package/dist/collection/components/diwa-input-tel/diwa-input-tel.js +1 -1
  91. package/dist/collection/components/diwa-input-text/diwa-input-text.js +1 -1
  92. package/dist/collection/components/diwa-input-time/diwa-input-time.js +1 -1
  93. package/dist/collection/components/diwa-input-url/diwa-input-url.js +1 -1
  94. package/dist/collection/components/diwa-input-week/diwa-input-week.js +1 -1
  95. package/dist/collection/components/diwa-link/diwa-link.js +1 -1
  96. package/dist/collection/components/diwa-link-pure/diwa-link-pure.js +1 -1
  97. package/dist/collection/components/diwa-modal/diwa-modal.js +1 -1
  98. package/dist/collection/components/diwa-multi-select/diwa-multi-select.js +2 -2
  99. package/dist/collection/components/diwa-multi-select-option/diwa-multi-select-option.js +1 -1
  100. package/dist/collection/components/diwa-pagination/diwa-pagination.js +1 -1
  101. package/dist/collection/components/diwa-pin-code/diwa-pin-code.js +2 -2
  102. package/dist/collection/components/diwa-popover/diwa-popover.js +1 -1
  103. package/dist/collection/components/diwa-radio-group/diwa-radio-group.js +1 -1
  104. package/dist/collection/components/diwa-radio-group-item/diwa-radio-group-item-styles.js +1 -2
  105. package/dist/collection/components/diwa-radio-group-item/diwa-radio-group-item-styles.js.map +1 -1
  106. package/dist/collection/components/diwa-radio-group-item/diwa-radio-group-item.js +1 -1
  107. package/dist/collection/components/diwa-scroller/diwa-scroller-styles.js +14 -9
  108. package/dist/collection/components/diwa-scroller/diwa-scroller-styles.js.map +1 -1
  109. package/dist/collection/components/diwa-scroller/diwa-scroller.js +9 -13
  110. package/dist/collection/components/diwa-scroller/diwa-scroller.js.map +1 -1
  111. package/dist/collection/components/diwa-segmented-control/diwa-segmented-control.js +1 -1
  112. package/dist/collection/components/diwa-segmented-control-item/diwa-segmented-control-item.js +1 -1
  113. package/dist/collection/components/diwa-select/diwa-select.js +17 -1
  114. package/dist/collection/components/diwa-select/diwa-select.js.map +1 -1
  115. package/dist/collection/components/diwa-select-option/diwa-select-option-styles.js +21 -9
  116. package/dist/collection/components/diwa-select-option/diwa-select-option-styles.js.map +1 -1
  117. package/dist/collection/components/diwa-select-option/diwa-select-option.js +23 -1
  118. package/dist/collection/components/diwa-select-option/diwa-select-option.js.map +1 -1
  119. package/dist/collection/components/diwa-spinner/diwa-spinner.js +1 -1
  120. package/dist/collection/components/diwa-stepper-horizontal/diwa-stepper-horizontal.js +1 -1
  121. package/dist/collection/components/diwa-stepper-horizontal-item/diwa-stepper-horizontal-item.js +1 -1
  122. package/dist/collection/components/diwa-switch/diwa-switch.js +1 -1
  123. package/dist/collection/components/diwa-table/diwa-table-styles.js +81 -42
  124. package/dist/collection/components/diwa-table/diwa-table-styles.js.map +1 -1
  125. package/dist/collection/components/diwa-table/diwa-table.js +3 -2
  126. package/dist/collection/components/diwa-table/diwa-table.js.map +1 -1
  127. package/dist/collection/components/diwa-table-body/diwa-table-body.js +1 -1
  128. package/dist/collection/components/diwa-table-cell/diwa-table-cell-styles.js +14 -14
  129. package/dist/collection/components/diwa-table-cell/diwa-table-cell-styles.js.map +1 -1
  130. package/dist/collection/components/diwa-table-cell/diwa-table-cell.js +1 -1
  131. package/dist/collection/components/diwa-table-cell/diwa-table-cell.js.map +1 -1
  132. package/dist/collection/components/diwa-table-head/diwa-table-head-styles.js +15 -10
  133. package/dist/collection/components/diwa-table-head/diwa-table-head-styles.js.map +1 -1
  134. package/dist/collection/components/diwa-table-head/diwa-table-head.js +1 -1
  135. package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell-styles.js +60 -49
  136. package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell-styles.js.map +1 -1
  137. package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell.js +4 -4
  138. package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell.js.map +1 -1
  139. package/dist/collection/components/diwa-table-row/diwa-table-row-styles.js +10 -9
  140. package/dist/collection/components/diwa-table-row/diwa-table-row-styles.js.map +1 -1
  141. package/dist/collection/components/diwa-table-row/diwa-table-row.js +1 -1
  142. package/dist/collection/components/diwa-tabs/diwa-tabs-styles.js +11 -11
  143. package/dist/collection/components/diwa-tabs/diwa-tabs-styles.js.map +1 -1
  144. package/dist/collection/components/diwa-tabs/diwa-tabs.js +1 -1
  145. package/dist/collection/components/diwa-tabs-bar/diwa-tabs-bar.js +1 -1
  146. package/dist/collection/components/diwa-tabs-item/diwa-tabs-item.js +1 -1
  147. package/dist/collection/components/diwa-tag/diwa-tag-styles.js +1 -1
  148. package/dist/collection/components/diwa-tag/diwa-tag-styles.js.map +1 -1
  149. package/dist/collection/components/diwa-tag/diwa-tag.js +1 -1
  150. package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible-styles.js +5 -6
  151. package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible-styles.js.map +1 -1
  152. package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible.js +1 -2
  153. package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible.js.map +1 -1
  154. package/dist/collection/components/diwa-text/diwa-text.js +1 -1
  155. package/dist/collection/components/diwa-text-list/diwa-text-list.js +1 -1
  156. package/dist/collection/components/diwa-text-list-item/diwa-text-list-item.js +1 -1
  157. package/dist/collection/components/diwa-textarea/diwa-textarea.js +1 -1
  158. package/dist/collection/components/diwa-toast/diwa-toast-manager.js +96 -0
  159. package/dist/collection/components/diwa-toast/diwa-toast-manager.js.map +1 -0
  160. package/dist/collection/components/diwa-toast/diwa-toast.js +24 -25
  161. package/dist/collection/components/diwa-toast/diwa-toast.js.map +1 -1
  162. package/dist/collection/components/diwa-toast-item/diwa-toast-item.js +1 -1
  163. package/dist/diwa-components/diwa-components.css +2 -2
  164. package/dist/diwa-components/diwa-components.esm.js +1 -1
  165. package/dist/diwa-components/diwa-components.esm.js.map +1 -1
  166. package/dist/diwa-components/{p-2b54c761.entry.js → p-09f2e643.entry.js} +2 -2
  167. package/dist/diwa-components/{p-4ac5a26e.entry.js → p-117dc41d.entry.js} +2 -2
  168. package/dist/diwa-components/p-117dc41d.entry.js.map +1 -0
  169. package/dist/diwa-components/{p-1022a474.entry.js → p-1250d0c7.entry.js} +2 -2
  170. package/dist/diwa-components/{p-1a1bd7ed.entry.js → p-13e71247.entry.js} +2 -2
  171. package/dist/diwa-components/p-1830772d.entry.js +2 -0
  172. package/dist/diwa-components/{p-f4a589b5.entry.js → p-1d708e1e.entry.js} +2 -2
  173. package/dist/diwa-components/{p-bb04cdd6.entry.js → p-238da82a.entry.js} +2 -2
  174. package/dist/diwa-components/p-29419c9a.entry.js +2 -0
  175. package/dist/diwa-components/p-29419c9a.entry.js.map +1 -0
  176. package/dist/diwa-components/{p-c896dfa5.entry.js → p-3269a4b7.entry.js} +2 -2
  177. package/dist/diwa-components/p-35b69160.entry.js +2 -0
  178. package/dist/diwa-components/p-35b69160.entry.js.map +1 -0
  179. package/dist/diwa-components/{p-fbe73240.entry.js → p-3660b09a.entry.js} +2 -2
  180. package/dist/diwa-components/{p-c37374ab.entry.js → p-36b004e9.entry.js} +2 -2
  181. package/dist/diwa-components/p-37e1bea3.entry.js +2 -0
  182. package/dist/diwa-components/p-37e1bea3.entry.js.map +1 -0
  183. package/dist/diwa-components/{p-851cbfb8.entry.js → p-3b38fa01.entry.js} +2 -2
  184. package/dist/diwa-components/p-3fb5cc30.entry.js +2 -0
  185. package/dist/diwa-components/p-429c596d.entry.js +2 -0
  186. package/dist/diwa-components/p-429c596d.entry.js.map +1 -0
  187. package/dist/diwa-components/p-50866c5a.entry.js +2 -0
  188. package/dist/diwa-components/p-50866c5a.entry.js.map +1 -0
  189. package/dist/diwa-components/p-5a597e27.entry.js +2 -0
  190. package/dist/diwa-components/p-5f9139bc.entry.js +2 -0
  191. package/dist/diwa-components/p-5f9139bc.entry.js.map +1 -0
  192. package/dist/diwa-components/p-66c15f66.entry.js +2 -0
  193. package/dist/diwa-components/p-66c53adc.entry.js +2 -0
  194. package/dist/diwa-components/p-66c53adc.entry.js.map +1 -0
  195. package/dist/diwa-components/{p-6253fff6.entry.js → p-71c45961.entry.js} +2 -2
  196. package/dist/diwa-components/{p-358e1177.entry.js → p-78b16866.entry.js} +2 -2
  197. package/dist/diwa-components/p-7a99a2aa.entry.js +2 -0
  198. package/dist/diwa-components/p-7a99a2aa.entry.js.map +1 -0
  199. package/dist/diwa-components/p-7dc7291f.entry.js +2 -0
  200. package/dist/diwa-components/{p-09a9e0a0.entry.js → p-8369c48e.entry.js} +2 -2
  201. package/dist/diwa-components/{p-c0614fb1.entry.js → p-8506ea0c.entry.js} +2 -2
  202. package/dist/diwa-components/p-863c88a4.entry.js +2 -0
  203. package/dist/diwa-components/{p-339f6ba7.entry.js.map → p-863c88a4.entry.js.map} +1 -1
  204. package/dist/diwa-components/{p-ba1ffa71.entry.js → p-87932af2.entry.js} +2 -2
  205. package/dist/diwa-components/{p-48009a79.entry.js → p-926e283b.entry.js} +2 -2
  206. package/dist/diwa-components/p-952af214.entry.js +2 -0
  207. package/dist/diwa-components/p-952af214.entry.js.map +1 -0
  208. package/dist/diwa-components/{p-4ff58224.entry.js → p-95b0fdea.entry.js} +2 -2
  209. package/dist/diwa-components/p-9910d570.entry.js +2 -0
  210. package/dist/diwa-components/p-9910d570.entry.js.map +1 -0
  211. package/dist/diwa-components/{p-20fd1505.entry.js → p-998dd88e.entry.js} +2 -2
  212. package/dist/diwa-components/p-9ade0403.entry.js +2 -0
  213. package/dist/diwa-components/{p-57db0c31.entry.js → p-9c89e586.entry.js} +2 -2
  214. package/dist/diwa-components/p-b072ff72.entry.js +2 -0
  215. package/dist/diwa-components/p-b072ff72.entry.js.map +1 -0
  216. package/dist/diwa-components/{p-565f623e.entry.js → p-bd501daa.entry.js} +2 -2
  217. package/dist/diwa-components/{p-c1c85f9e.entry.js → p-c6ca8d8b.entry.js} +2 -2
  218. package/dist/diwa-components/{p-53e21a74.entry.js → p-c78591ce.entry.js} +2 -2
  219. package/dist/diwa-components/{p-996f7110.entry.js → p-cc0e1662.entry.js} +2 -2
  220. package/dist/diwa-components/{p-711e295e.entry.js → p-d25377eb.entry.js} +2 -2
  221. package/dist/diwa-components/{p-7f0ce623.entry.js → p-d917625e.entry.js} +2 -2
  222. package/dist/diwa-components/{p-d0762292.entry.js → p-db70e030.entry.js} +2 -2
  223. package/dist/diwa-components/p-db70e030.entry.js.map +1 -0
  224. package/dist/diwa-components/p-def36bc4.entry.js +2 -0
  225. package/dist/diwa-components/p-def36bc4.entry.js.map +1 -0
  226. package/dist/diwa-components/p-e137afc9.entry.js +2 -0
  227. package/dist/diwa-components/{p-666844e0.entry.js → p-e1935375.entry.js} +2 -2
  228. package/dist/diwa-components/{p-87ea8001.entry.js → p-e602c199.entry.js} +2 -2
  229. package/dist/diwa-components/{p-9f140e14.entry.js → p-e9673253.entry.js} +2 -2
  230. package/dist/diwa-components/p-f44d4091.entry.js +2 -0
  231. package/dist/diwa-components/p-f44d4091.entry.js.map +1 -0
  232. package/dist/diwa-components/p-f60f1d81.entry.js +2 -0
  233. package/dist/diwa-components/p-fae653f7.entry.js +2 -0
  234. package/dist/esm/diwa-checkbox.entry.js +1 -3
  235. package/dist/esm/diwa-checkbox.entry.js.map +1 -1
  236. package/dist/esm/diwa-components.js +1 -1
  237. package/dist/esm/diwa-heading.entry.js +122 -0
  238. package/dist/esm/diwa-heading.entry.js.map +1 -0
  239. package/dist/esm/diwa-icon.entry.js +1 -1
  240. package/dist/esm/diwa-inline-notification.entry.js +1 -1
  241. package/dist/esm/diwa-input-date.entry.js +1 -1
  242. package/dist/esm/diwa-input-email.entry.js +1 -1
  243. package/dist/esm/diwa-input-month.entry.js +1 -1
  244. package/dist/esm/diwa-input-number.entry.js +1 -1
  245. package/dist/esm/diwa-input-password.entry.js +1 -1
  246. package/dist/esm/diwa-input-search.entry.js +1 -1
  247. package/dist/esm/diwa-input-tel.entry.js +1 -1
  248. package/dist/esm/diwa-input-text.entry.js +1 -1
  249. package/dist/esm/diwa-input-time.entry.js +1 -1
  250. package/dist/esm/diwa-input-url.entry.js +1 -1
  251. package/dist/esm/diwa-input-week.entry.js +1 -1
  252. package/dist/esm/diwa-input.entry.js +1 -1
  253. package/dist/esm/diwa-link-pure.entry.js +1 -1
  254. package/dist/esm/diwa-link.entry.js +1 -1
  255. package/dist/esm/diwa-modal.entry.js +1 -1
  256. package/dist/esm/diwa-multi-select-option.entry.js +1 -1
  257. package/dist/esm/diwa-multi-select.entry.js +2 -2
  258. package/dist/esm/diwa-pagination.entry.js +1 -1
  259. package/dist/esm/diwa-pin-code.entry.js +2 -2
  260. package/dist/esm/diwa-popover.entry.js +1 -1
  261. package/dist/esm/diwa-radio-group-item.entry.js +2 -3
  262. package/dist/esm/diwa-radio-group-item.entry.js.map +1 -1
  263. package/dist/esm/diwa-radio-group.entry.js +1 -1
  264. package/dist/esm/diwa-scroller.entry.js +23 -13
  265. package/dist/esm/diwa-scroller.entry.js.map +1 -1
  266. package/dist/esm/diwa-segmented-control-item.entry.js +1 -1
  267. package/dist/esm/diwa-segmented-control.entry.js +1 -1
  268. package/dist/esm/diwa-select-option.entry.js +24 -10
  269. package/dist/esm/diwa-select-option.entry.js.map +1 -1
  270. package/dist/esm/diwa-select.entry.js +15 -1
  271. package/dist/esm/diwa-select.entry.js.map +1 -1
  272. package/dist/esm/diwa-spinner.entry.js +1 -1
  273. package/dist/esm/diwa-stepper-horizontal-item.entry.js +1 -1
  274. package/dist/esm/diwa-stepper-horizontal.entry.js +1 -1
  275. package/dist/esm/diwa-switch.entry.js +1 -1
  276. package/dist/esm/diwa-table-body.entry.js +1 -1
  277. package/dist/esm/diwa-table-cell.entry.js +15 -15
  278. package/dist/esm/diwa-table-cell.entry.js.map +1 -1
  279. package/dist/esm/diwa-table-head-cell.entry.js +64 -53
  280. package/dist/esm/diwa-table-head-cell.entry.js.map +1 -1
  281. package/dist/esm/diwa-table-head.entry.js +16 -11
  282. package/dist/esm/diwa-table-head.entry.js.map +1 -1
  283. package/dist/esm/diwa-table-row.entry.js +11 -10
  284. package/dist/esm/diwa-table-row.entry.js.map +1 -1
  285. package/dist/esm/diwa-table.entry.js +83 -43
  286. package/dist/esm/diwa-table.entry.js.map +1 -1
  287. package/dist/esm/diwa-tabs-bar.entry.js +1 -1
  288. package/dist/esm/diwa-tabs-item.entry.js +1 -1
  289. package/dist/esm/diwa-tabs.entry.js +12 -12
  290. package/dist/esm/diwa-tabs.entry.js.map +1 -1
  291. package/dist/esm/diwa-tag-dismissible.entry.js +6 -8
  292. package/dist/esm/diwa-tag-dismissible.entry.js.map +1 -1
  293. package/dist/esm/diwa-tag.entry.js +2 -2
  294. package/dist/esm/diwa-tag.entry.js.map +1 -1
  295. package/dist/esm/diwa-text-list-item.entry.js +1 -1
  296. package/dist/esm/diwa-text-list.entry.js +1 -1
  297. package/dist/esm/diwa-text.entry.js +1 -1
  298. package/dist/esm/diwa-textarea.entry.js +1 -1
  299. package/dist/esm/diwa-toast-item.entry.js +1 -1
  300. package/dist/esm/diwa-toast.entry.js +111 -17
  301. package/dist/esm/diwa-toast.entry.js.map +1 -1
  302. package/dist/esm/loader.js +1 -1
  303. package/dist/types/components/diwa-heading/diwa-heading-styles.d.ts +3 -0
  304. package/dist/types/components/diwa-heading/diwa-heading-utils.d.ts +10 -0
  305. package/dist/types/components/diwa-heading/diwa-heading.d.ts +49 -0
  306. package/dist/types/components/diwa-heading/types.d.ts +17 -0
  307. package/dist/types/components/diwa-scroller/diwa-scroller-styles.d.ts +1 -1
  308. package/dist/types/components/diwa-scroller/diwa-scroller.d.ts +2 -1
  309. package/dist/types/components/diwa-select/diwa-select.d.ts +2 -0
  310. package/dist/types/components/diwa-select-option/diwa-select-option.d.ts +2 -0
  311. package/dist/types/components/diwa-table/diwa-table.d.ts +1 -1
  312. package/dist/types/components/diwa-toast/diwa-toast-manager.d.ts +34 -0
  313. package/dist/types/components/diwa-toast/diwa-toast.d.ts +12 -12
  314. package/dist/types/components.d.ts +144 -25
  315. package/dist-custom-elements/diwa-accordion.js +1 -1
  316. package/dist-custom-elements/diwa-button-pure.js +1 -1
  317. package/dist-custom-elements/diwa-button.js +1 -1
  318. package/dist-custom-elements/diwa-checkbox.js +1 -3
  319. package/dist-custom-elements/diwa-checkbox.js.map +1 -1
  320. package/dist-custom-elements/diwa-flyout.js +2 -2
  321. package/dist-custom-elements/diwa-heading.d.ts +11 -0
  322. package/dist-custom-elements/diwa-heading.js +149 -0
  323. package/dist-custom-elements/diwa-heading.js.map +1 -0
  324. package/dist-custom-elements/diwa-icon.js +1 -1
  325. package/dist-custom-elements/diwa-inline-notification.js +3 -3
  326. package/dist-custom-elements/diwa-input-date.js +1 -1
  327. package/dist-custom-elements/diwa-input-email.js +1 -1
  328. package/dist-custom-elements/diwa-input-month.js +1 -1
  329. package/dist-custom-elements/diwa-input-number.js +1 -1
  330. package/dist-custom-elements/diwa-input-password.js +2 -2
  331. package/dist-custom-elements/diwa-input-search.js +2 -2
  332. package/dist-custom-elements/diwa-input-tel.js +1 -1
  333. package/dist-custom-elements/diwa-input-text.js +1 -1
  334. package/dist-custom-elements/diwa-input-time.js +1 -1
  335. package/dist-custom-elements/diwa-input-url.js +1 -1
  336. package/dist-custom-elements/diwa-input-week.js +1 -1
  337. package/dist-custom-elements/diwa-input.js +1 -1
  338. package/dist-custom-elements/diwa-link-pure.js +2 -2
  339. package/dist-custom-elements/diwa-link.js +2 -2
  340. package/dist-custom-elements/diwa-modal.js +1 -1
  341. package/dist-custom-elements/diwa-multi-select-option.js +1 -1
  342. package/dist-custom-elements/diwa-multi-select.js +2 -2
  343. package/dist-custom-elements/diwa-pagination.js +1 -1
  344. package/dist-custom-elements/diwa-pin-code.js +2 -2
  345. package/dist-custom-elements/diwa-popover.js +1 -1
  346. package/dist-custom-elements/diwa-radio-group-item.js +2 -3
  347. package/dist-custom-elements/diwa-radio-group-item.js.map +1 -1
  348. package/dist-custom-elements/diwa-radio-group.js +1 -1
  349. package/dist-custom-elements/diwa-scroller.js +24 -14
  350. package/dist-custom-elements/diwa-scroller.js.map +1 -1
  351. package/dist-custom-elements/diwa-segmented-control-item.js +1 -1
  352. package/dist-custom-elements/diwa-segmented-control.js +1 -1
  353. package/dist-custom-elements/diwa-select-option.js +25 -10
  354. package/dist-custom-elements/diwa-select-option.js.map +1 -1
  355. package/dist-custom-elements/diwa-select.js +16 -1
  356. package/dist-custom-elements/diwa-select.js.map +1 -1
  357. package/dist-custom-elements/diwa-spinner.js +1 -1
  358. package/dist-custom-elements/diwa-stepper-horizontal-item.js +1 -1
  359. package/dist-custom-elements/diwa-stepper-horizontal.js +1 -1
  360. package/dist-custom-elements/diwa-switch.js +2 -2
  361. package/dist-custom-elements/diwa-table-body.js +1 -1
  362. package/dist-custom-elements/diwa-table-cell.js +15 -15
  363. package/dist-custom-elements/diwa-table-cell.js.map +1 -1
  364. package/dist-custom-elements/diwa-table-head-cell.js +64 -53
  365. package/dist-custom-elements/diwa-table-head-cell.js.map +1 -1
  366. package/dist-custom-elements/diwa-table-head.js +16 -11
  367. package/dist-custom-elements/diwa-table-head.js.map +1 -1
  368. package/dist-custom-elements/diwa-table-row.js +11 -10
  369. package/dist-custom-elements/diwa-table-row.js.map +1 -1
  370. package/dist-custom-elements/diwa-table.js +83 -43
  371. package/dist-custom-elements/diwa-table.js.map +1 -1
  372. package/dist-custom-elements/diwa-tabs-bar.js +1 -1
  373. package/dist-custom-elements/diwa-tabs-item.js +1 -1
  374. package/dist-custom-elements/diwa-tabs.js +12 -12
  375. package/dist-custom-elements/diwa-tabs.js.map +1 -1
  376. package/dist-custom-elements/diwa-tag-dismissible.js +6 -8
  377. package/dist-custom-elements/diwa-tag-dismissible.js.map +1 -1
  378. package/dist-custom-elements/diwa-tag.js +3 -3
  379. package/dist-custom-elements/diwa-tag.js.map +1 -1
  380. package/dist-custom-elements/diwa-text-list-item.js +1 -1
  381. package/dist-custom-elements/diwa-text-list.js +1 -1
  382. package/dist-custom-elements/diwa-text.js +1 -1
  383. package/dist-custom-elements/diwa-textarea.js +1 -1
  384. package/dist-custom-elements/diwa-toast-item.js +1 -1
  385. package/dist-custom-elements/diwa-toast.js +113 -19
  386. package/dist-custom-elements/diwa-toast.js.map +1 -1
  387. package/dist-custom-elements/{p-54e5b3fb.js → p-105f3f97.js} +2 -2
  388. package/dist-custom-elements/{p-54e5b3fb.js.map → p-105f3f97.js.map} +1 -1
  389. package/dist-custom-elements/{p-f480bce8.js → p-7c951f7f.js} +2 -2
  390. package/dist-custom-elements/{p-f480bce8.js.map → p-7c951f7f.js.map} +1 -1
  391. package/dist-custom-elements/{p-302af10d.js → p-8972ae69.js} +2 -2
  392. package/dist-custom-elements/{p-302af10d.js.map → p-8972ae69.js.map} +1 -1
  393. package/dist-custom-elements/{p-ed901570.js → p-b7255dc4.js} +2 -2
  394. package/dist-custom-elements/{p-ed901570.js.map → p-b7255dc4.js.map} +1 -1
  395. package/package.json +9 -8
  396. package/dist/diwa-components/p-043e3e19.entry.js +0 -2
  397. package/dist/diwa-components/p-05988905.entry.js +0 -2
  398. package/dist/diwa-components/p-08c584fb.entry.js +0 -2
  399. package/dist/diwa-components/p-08c584fb.entry.js.map +0 -1
  400. package/dist/diwa-components/p-0cbe8ed4.entry.js +0 -2
  401. package/dist/diwa-components/p-0cbe8ed4.entry.js.map +0 -1
  402. package/dist/diwa-components/p-139f619d.entry.js +0 -2
  403. package/dist/diwa-components/p-139f619d.entry.js.map +0 -1
  404. package/dist/diwa-components/p-178d18c2.entry.js +0 -2
  405. package/dist/diwa-components/p-178d18c2.entry.js.map +0 -1
  406. package/dist/diwa-components/p-2b72a324.entry.js +0 -2
  407. package/dist/diwa-components/p-339f6ba7.entry.js +0 -2
  408. package/dist/diwa-components/p-3b7a1431.entry.js +0 -2
  409. package/dist/diwa-components/p-3b7a1431.entry.js.map +0 -1
  410. package/dist/diwa-components/p-4a84fee8.entry.js +0 -2
  411. package/dist/diwa-components/p-4ac5a26e.entry.js.map +0 -1
  412. package/dist/diwa-components/p-51673c06.entry.js +0 -2
  413. package/dist/diwa-components/p-51673c06.entry.js.map +0 -1
  414. package/dist/diwa-components/p-5c2325aa.entry.js +0 -2
  415. package/dist/diwa-components/p-5cd79382.entry.js +0 -2
  416. package/dist/diwa-components/p-67950f59.entry.js +0 -2
  417. package/dist/diwa-components/p-67950f59.entry.js.map +0 -1
  418. package/dist/diwa-components/p-8012c384.entry.js +0 -2
  419. package/dist/diwa-components/p-8012c384.entry.js.map +0 -1
  420. package/dist/diwa-components/p-9088f057.entry.js +0 -2
  421. package/dist/diwa-components/p-94f603c2.entry.js +0 -2
  422. package/dist/diwa-components/p-94f603c2.entry.js.map +0 -1
  423. package/dist/diwa-components/p-b7132ea7.entry.js +0 -2
  424. package/dist/diwa-components/p-b7132ea7.entry.js.map +0 -1
  425. package/dist/diwa-components/p-b988c5b3.entry.js +0 -2
  426. package/dist/diwa-components/p-b988c5b3.entry.js.map +0 -1
  427. package/dist/diwa-components/p-bc2eecd2.entry.js +0 -2
  428. package/dist/diwa-components/p-cf960cf6.entry.js +0 -2
  429. package/dist/diwa-components/p-d0762292.entry.js.map +0 -1
  430. package/dist/diwa-components/p-f22b6145.entry.js +0 -2
  431. package/dist/diwa-components/p-f22b6145.entry.js.map +0 -1
  432. /package/dist/diwa-components/{p-2b54c761.entry.js.map → p-09f2e643.entry.js.map} +0 -0
  433. /package/dist/diwa-components/{p-1022a474.entry.js.map → p-1250d0c7.entry.js.map} +0 -0
  434. /package/dist/diwa-components/{p-1a1bd7ed.entry.js.map → p-13e71247.entry.js.map} +0 -0
  435. /package/dist/diwa-components/{p-711e295e.entry.js.map → p-1830772d.entry.js.map} +0 -0
  436. /package/dist/diwa-components/{p-f4a589b5.entry.js.map → p-1d708e1e.entry.js.map} +0 -0
  437. /package/dist/diwa-components/{p-bb04cdd6.entry.js.map → p-238da82a.entry.js.map} +0 -0
  438. /package/dist/diwa-components/{p-c896dfa5.entry.js.map → p-3269a4b7.entry.js.map} +0 -0
  439. /package/dist/diwa-components/{p-fbe73240.entry.js.map → p-3660b09a.entry.js.map} +0 -0
  440. /package/dist/diwa-components/{p-c37374ab.entry.js.map → p-36b004e9.entry.js.map} +0 -0
  441. /package/dist/diwa-components/{p-851cbfb8.entry.js.map → p-3b38fa01.entry.js.map} +0 -0
  442. /package/dist/diwa-components/{p-4a84fee8.entry.js.map → p-3fb5cc30.entry.js.map} +0 -0
  443. /package/dist/diwa-components/{p-5cd79382.entry.js.map → p-5a597e27.entry.js.map} +0 -0
  444. /package/dist/diwa-components/{p-043e3e19.entry.js.map → p-66c15f66.entry.js.map} +0 -0
  445. /package/dist/diwa-components/{p-6253fff6.entry.js.map → p-71c45961.entry.js.map} +0 -0
  446. /package/dist/diwa-components/{p-358e1177.entry.js.map → p-78b16866.entry.js.map} +0 -0
  447. /package/dist/diwa-components/{p-05988905.entry.js.map → p-7dc7291f.entry.js.map} +0 -0
  448. /package/dist/diwa-components/{p-09a9e0a0.entry.js.map → p-8369c48e.entry.js.map} +0 -0
  449. /package/dist/diwa-components/{p-bc2eecd2.entry.js.map → p-8506ea0c.entry.js.map} +0 -0
  450. /package/dist/diwa-components/{p-ba1ffa71.entry.js.map → p-87932af2.entry.js.map} +0 -0
  451. /package/dist/diwa-components/{p-48009a79.entry.js.map → p-926e283b.entry.js.map} +0 -0
  452. /package/dist/diwa-components/{p-4ff58224.entry.js.map → p-95b0fdea.entry.js.map} +0 -0
  453. /package/dist/diwa-components/{p-20fd1505.entry.js.map → p-998dd88e.entry.js.map} +0 -0
  454. /package/dist/diwa-components/{p-5c2325aa.entry.js.map → p-9ade0403.entry.js.map} +0 -0
  455. /package/dist/diwa-components/{p-57db0c31.entry.js.map → p-9c89e586.entry.js.map} +0 -0
  456. /package/dist/diwa-components/{p-565f623e.entry.js.map → p-bd501daa.entry.js.map} +0 -0
  457. /package/dist/diwa-components/{p-c1c85f9e.entry.js.map → p-c6ca8d8b.entry.js.map} +0 -0
  458. /package/dist/diwa-components/{p-53e21a74.entry.js.map → p-c78591ce.entry.js.map} +0 -0
  459. /package/dist/diwa-components/{p-996f7110.entry.js.map → p-cc0e1662.entry.js.map} +0 -0
  460. /package/dist/diwa-components/{p-9088f057.entry.js.map → p-d25377eb.entry.js.map} +0 -0
  461. /package/dist/diwa-components/{p-7f0ce623.entry.js.map → p-d917625e.entry.js.map} +0 -0
  462. /package/dist/diwa-components/{p-2b72a324.entry.js.map → p-e137afc9.entry.js.map} +0 -0
  463. /package/dist/diwa-components/{p-666844e0.entry.js.map → p-e1935375.entry.js.map} +0 -0
  464. /package/dist/diwa-components/{p-87ea8001.entry.js.map → p-e602c199.entry.js.map} +0 -0
  465. /package/dist/diwa-components/{p-9f140e14.entry.js.map → p-e9673253.entry.js.map} +0 -0
  466. /package/dist/diwa-components/{p-cf960cf6.entry.js.map → p-f60f1d81.entry.js.map} +0 -0
  467. /package/dist/diwa-components/{p-c0614fb1.entry.js.map → p-fae653f7.entry.js.map} +0 -0
@@ -43,7 +43,7 @@ const DiwaInputUrl = class {
43
43
  const inputId = 'input';
44
44
  const descId = 'desc';
45
45
  const msgId = 'msg';
46
- return (h(Host, { key: 'a65beb62cdb31c1aabe439f9b8f6f2dc6966380b', "data-theme": this.theme }, h("style", { key: 'ff59c6e404d17c7676ce59133a4560a217c65114', innerHTML: getInputCss(this.state, this.disabled, this.readonly, this.compact, this._hasStart, this._hasEnd, false) }), h("div", { key: 'd1ebf45cf487eb3d49d61d591f59500a12d92731', class: "root" }, !this.hideLabel && this.label && (h("div", { key: 'd7bc5c83a4c307e73fac55332f56c7cf17dd32fd', class: "label-row" }, h("label", { key: '714e2799d06afffb41ac6ac10680d16cf67d4a52', class: "label", htmlFor: inputId }, this.label, this.required && h("span", { key: 'f06a988f6b0afdf34825994c43e4b9b4cb9b2010', class: "required", "aria-hidden": "true" }, " *")), h("slot", { key: 'b916cfcfc7e064704b1e8643fe758b0f78f2b73d', name: "label-after" }))), h("div", { key: '51af50d3630a0f48eb111df4493d1787ff618534', class: "input-wrapper" }, this._hasStart && h("div", { key: '571d43f905d552089338b5066f7c20d28bd6a2d5', class: "slot-start" }, h("slot", { key: 'f8dfa7cc9fe16dca29d122c655371e17faad8a09', name: "start" })), h("input", { key: 'cb5abcccfe70433832fabc2094b071d781b592fc', id: inputId, class: "input", type: "url", name: this.name || undefined, value: this.value, placeholder: this.placeholder || undefined, disabled: this.disabled, required: this.required, readOnly: this.readonly, autocomplete: this.autoComplete, "aria-label": this.hideLabel && this.label ? this.label : undefined, "aria-invalid": this.state === 'error' ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": this.message ? msgId : this.description ? descId : undefined, onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus }), this._hasEnd && h("div", { key: '21b3380362ba71f8ec69b884450c3dc609a10f70', class: "slot-end" }, h("slot", { key: 'bdab4ba41c29734be286db913292eaf6a859d48c', name: "end" }))), !this.message && this.description && (h("p", { key: '60f3d1857a4a7f2f553ecd322727ddc822c52d0b', id: descId, class: "description" }, this.description)), this.message && (h("p", { key: 'b4fedae59dade9ed51363d0e124a61e71b45f923', id: msgId, class: "message" }, this.message)))));
46
+ return (h(Host, { key: '815dcda1917ab3e09996cc7256e93fa03af6859c', "data-theme": this.theme }, h("style", { key: 'f818456b7051d7a3118f822280f366382ba0bd2e', innerHTML: getInputCss(this.state, this.disabled, this.readonly, this.compact, this._hasStart, this._hasEnd, false) }), h("div", { key: '64b4a3aad57983fb3a1d5fc90fd5a229054f421c', class: "root" }, !this.hideLabel && this.label && (h("div", { key: '4c2ada03a986cab360e69472b68992c368397302', class: "label-row" }, h("label", { key: '4d66497d69d4913f76c48f3979f468e764700de6', class: "label", htmlFor: inputId }, this.label, this.required && h("span", { key: '0a1202881294392b03533ea4fb773786e4b86207', class: "required", "aria-hidden": "true" }, " *")), h("slot", { key: '0ccb378aa36f76ea46e52770f5802c38005faa36', name: "label-after" }))), h("div", { key: 'f630f867b7d3140402c67fca4dbe34c26d4b941b', class: "input-wrapper" }, this._hasStart && h("div", { key: '87be8ff03fb503cf698318e582a582a16a462c2f', class: "slot-start" }, h("slot", { key: 'd72b709ca7b7ac5207f5e880a91d8082672f7d98', name: "start" })), h("input", { key: '6bfeef03dba3617a4a8962f3582bfbdc5e5e57dd', id: inputId, class: "input", type: "url", name: this.name || undefined, value: this.value, placeholder: this.placeholder || undefined, disabled: this.disabled, required: this.required, readOnly: this.readonly, autocomplete: this.autoComplete, "aria-label": this.hideLabel && this.label ? this.label : undefined, "aria-invalid": this.state === 'error' ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": this.message ? msgId : this.description ? descId : undefined, onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus }), this._hasEnd && h("div", { key: '9f362881037e57edd4936993e0f32f812b755140', class: "slot-end" }, h("slot", { key: 'e72701b8bbd28fc0b1aabfe133c17c89f8432604', name: "end" }))), !this.message && this.description && (h("p", { key: 'b791d25314effb37d79b2cb0dca08d23bdf4be3d', id: descId, class: "description" }, this.description)), this.message && (h("p", { key: '47d96a0725dd01efef0158c5e256191d6a30d417', id: msgId, class: "message" }, this.message)))));
47
47
  }
48
48
  static get delegatesFocus() { return true; }
49
49
  get el() { return getElement(this); }
@@ -43,7 +43,7 @@ const DiwaInputWeek = class {
43
43
  const inputId = 'input';
44
44
  const descId = 'desc';
45
45
  const msgId = 'msg';
46
- return (h(Host, { key: '4cc5cc85ed8fa8c773fe7ad750e673a0ff389777', "data-theme": this.theme }, h("style", { key: 'b0fc511131f99c953540dc5a4dcd92dc5cb91a1b', innerHTML: getInputCss(this.state, this.disabled, this.readonly, this.compact, this._hasStart, this._hasEnd, false) }), h("div", { key: '38afefa33e9182fc1b351bb0ce9add0a894a9fc9', class: "root" }, !this.hideLabel && this.label && (h("div", { key: '9d04a0e49c5d6d8feef7e07ea0ad2ce5c8b8af1f', class: "label-row" }, h("label", { key: 'efa91862e70ee8243ec263081b8bd69921bf0abb', class: "label", htmlFor: inputId }, this.label, this.required && h("span", { key: 'a0d6c9a259482afe4a32e0694e40303099575c55', class: "required", "aria-hidden": "true" }, " *")), h("slot", { key: '765b374e9621bb3a293ddd06c101cb768b34fdcf', name: "label-after" }))), h("div", { key: '0502e169ef872e6a9d1c3701d63d58134d4fd8e9', class: "input-wrapper" }, this._hasStart && h("div", { key: '0d84de18ab5090b6cebad6bdbc386454a27595f2', class: "slot-start" }, h("slot", { key: '33cae6bc089ac29d8061637eca7cac6765f28588', name: "start" })), h("input", { key: '386306bf52e25ef77f18d1c2536292308ddad8ad', id: inputId, class: "input", type: "week", name: this.name || undefined, value: this.value, disabled: this.disabled, required: this.required, readOnly: this.readonly, min: this.min, max: this.max, autocomplete: this.autoComplete, "aria-label": this.hideLabel && this.label ? this.label : undefined, "aria-invalid": this.state === 'error' ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": this.message ? msgId : this.description ? descId : undefined, onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus }), this._hasEnd && h("div", { key: '5dd8446e2aef07d0c4a6fd573fc72a36791fde9d', class: "slot-end" }, h("slot", { key: 'c7576d8d1fa8b964d6dc1890deef7f896787cfe5', name: "end" }))), !this.message && this.description && (h("p", { key: '512432dd6a79d71b6a7739bd1680fb7dd3f7fbdf', id: descId, class: "description" }, this.description)), this.message && (h("p", { key: 'af74243593034242f83cc8c745bbb5223daca0da', id: msgId, class: "message" }, this.message)))));
46
+ return (h(Host, { key: 'b2e62b6ebe5a56ed9620ec7fca5f1d7a7e81460b', "data-theme": this.theme }, h("style", { key: 'a638a4f4726f062889a190f97bff942f48d6f1d2', innerHTML: getInputCss(this.state, this.disabled, this.readonly, this.compact, this._hasStart, this._hasEnd, false) }), h("div", { key: 'c1a9ec3da64ddd4e834afb897dd0323dc076b02d', class: "root" }, !this.hideLabel && this.label && (h("div", { key: '606302a7436a401cd3a636a587e1741fdfafb0d4', class: "label-row" }, h("label", { key: '569bab43ec04b919c0c9bb4ccdebe734daf63c23', class: "label", htmlFor: inputId }, this.label, this.required && h("span", { key: '13aadb282c3e0479895c6a66bbe85ecfce393fb8', class: "required", "aria-hidden": "true" }, " *")), h("slot", { key: '17000b6bf4cd3e63fe7bb6a2919e40092883fac2', name: "label-after" }))), h("div", { key: 'e5d271956dc4084a53de67a9a4343aff72f07685', class: "input-wrapper" }, this._hasStart && h("div", { key: 'd9fabf419d808c27852d0168c6c463b5cb038562', class: "slot-start" }, h("slot", { key: '8b296314bf7a12d604e3410adafa6ccfca1c81dd', name: "start" })), h("input", { key: 'c833d8b9412da6d72f979233c7c25878ed25c766', id: inputId, class: "input", type: "week", name: this.name || undefined, value: this.value, disabled: this.disabled, required: this.required, readOnly: this.readonly, min: this.min, max: this.max, autocomplete: this.autoComplete, "aria-label": this.hideLabel && this.label ? this.label : undefined, "aria-invalid": this.state === 'error' ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": this.message ? msgId : this.description ? descId : undefined, onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus }), this._hasEnd && h("div", { key: 'ee2fd8dce634707092c6fd91a998cca609859f33', class: "slot-end" }, h("slot", { key: '5ecc37cb93d82d514ee9a2243e45b393277727ba', name: "end" }))), !this.message && this.description && (h("p", { key: 'df2a4edb4734385a4c8107f261ef95f7a96472f2', id: descId, class: "description" }, this.description)), this.message && (h("p", { key: '1194dfd983f4113f9accf0a84938b378f30687f1', id: msgId, class: "message" }, this.message)))));
47
47
  }
48
48
  static get delegatesFocus() { return true; }
49
49
  get el() { return getElement(this); }
@@ -225,7 +225,7 @@ const DiwaInput = class {
225
225
  render() {
226
226
  const { resolvedId, hintId } = this;
227
227
  const hasHint = !!this.hint;
228
- return (h(Host, { key: '78f8165d0ec522cc7c39b1305710322f373935b1', "data-theme": this.theme }, h("style", { key: '55ead2ca683d3b95e818227bac4befc820d17e43', innerHTML: getComponentCss() }), this.label && (h("label", { key: 'a371be6cb2fae92aab0536cdcc145dde89130aca', class: "label", part: "label", htmlFor: resolvedId }, this.label, this.required && (h("span", { key: 'b0a997bd0673abe864346b6c9b207da285ee9227', class: "required", "aria-hidden": "true" }, " ", "*")))), h("div", { key: '1449172e3374f27c9305566008974fca8e53f998', class: "wrapper", part: "wrapper" }, h("span", { key: '82c809cfc30968c60530b5e7e7091f1573398a02', class: "prefix", part: "prefix" }, h("slot", { key: 'b591bf5c11847e20d6cbceb36d16c6135726d80e', name: "prefix" })), h("input", { key: '95f9596afb2d1fd1c54d2ae5768da54289c5781e', id: resolvedId, part: "input", class: "input", type: this.type, name: this.name, value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, autocomplete: this.autocomplete, "aria-required": this.required ? "true" : undefined, "aria-invalid": this.state === "error" ? "true" : undefined, "aria-describedby": hasHint ? hintId : undefined, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur }), h("span", { key: 'c6cb1c62381e07cd2ce8b31c8329eff9544bc079', class: "suffix", part: "suffix" }, h("slot", { key: '309d70266c2d3164f9170e1da66c5fa47d38a14c', name: "suffix" }))), hasHint && (h("span", { key: '8a2fd5a30044f3d8232efc36b23b9f4206130837', id: hintId, class: "hint", part: "hint", "aria-live": this.state === "error" ? "polite" : undefined }, this.hint))));
228
+ return (h(Host, { key: '2f5e9982ad07294f702ebf0bea111b70d89595f5', "data-theme": this.theme }, h("style", { key: 'a5ff0895928b24e7704f88b4d4601b071ce13c22', innerHTML: getComponentCss() }), this.label && (h("label", { key: '11dfacae24599abc35a73ebc763fca8f95db78d2', class: "label", part: "label", htmlFor: resolvedId }, this.label, this.required && (h("span", { key: 'ec6b9d71eefce529cfb04aef396a730758f6f79d', class: "required", "aria-hidden": "true" }, " ", "*")))), h("div", { key: '9abda93e51de4c01be826f147ea094e8d418d6ab', class: "wrapper", part: "wrapper" }, h("span", { key: '619b7e65a10c04043ae68abdfa0d0321b3681585', class: "prefix", part: "prefix" }, h("slot", { key: 'e61f1fbf6f7d6a06961100dfd867e4456bc1eb6e', name: "prefix" })), h("input", { key: '42ab4539c89bee785df13cb9bff484003c7299b0', id: resolvedId, part: "input", class: "input", type: this.type, name: this.name, value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, autocomplete: this.autocomplete, "aria-required": this.required ? "true" : undefined, "aria-invalid": this.state === "error" ? "true" : undefined, "aria-describedby": hasHint ? hintId : undefined, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur }), h("span", { key: '270db977c40f074cf99378dcb27e9959470a7f2d', class: "suffix", part: "suffix" }, h("slot", { key: '36dbff474dafd6b3b46303d7745f754a5d413433', name: "suffix" }))), hasHint && (h("span", { key: 'bff0ddc5cf92a6d9ec9ddc64b5138ebd2cfe7632', id: hintId, class: "hint", part: "hint", "aria-live": this.state === "error" ? "polite" : undefined }, this.hint))));
229
229
  }
230
230
  static get delegatesFocus() { return true; }
231
231
  };
@@ -167,7 +167,7 @@ const DiwaLinkPure = class {
167
167
  const iconSize = this.size === "sm" ? 14 : this.size === "lg" ? 20 : 16;
168
168
  const anchorProps = isAnchor
169
169
  ? Object.assign({ href: this.href, target: this.target, download: this.download, rel: (_a = this.rel) !== null && _a !== void 0 ? _a : (this.target === "_blank" ? "noopener noreferrer" : undefined) }, (this.label ? { "aria-label": this.label } : {})) : {};
170
- return (h(Host, { key: '761192365523187da4022afc17ddcd42eacd6fd1', "data-theme": this.theme }, h("style", { key: 'dcaf58e09c4bf9e728acc480748650235d005fb9', innerHTML: getComponentCss() }), h(Tag, Object.assign({ key: '9669b20ef6fcd90c86244205b9b1dd7c59f6143c', class: "root" }, anchorProps, { part: "base" }), hasIcon && (h("span", { key: '11a2c4828484693962c83ea800ec5ab17b6f1c77', class: "icon", "aria-hidden": "true" }, h("diwa-icon", { key: 'ce1521f41513d709c51292db263c6e8252ea91a5', name: this.icon, size: iconSize }))), h("span", { key: '61d7962e751fdd6e84630fe27d5f4fb1ed1c2de0', class: `label${this.hideLabel ? " label--hidden" : ""}`, part: "label" }, h("slot", { key: 'd585bfadb227cf240719d2958a3b6a52a1429410' })))));
170
+ return (h(Host, { key: '0e0d05c3d75ed6a26dd20de637c53590732d9644', "data-theme": this.theme }, h("style", { key: '1e28cd8c47349664fa39e5e232f36d3f860e9e45', innerHTML: getComponentCss() }), h(Tag, Object.assign({ key: '98d380c84bb6f5a2e0ea475b0ba0e958567da554', class: "root" }, anchorProps, { part: "base" }), hasIcon && (h("span", { key: 'bc73de7dc37ae05c8da660681e118c3130e58a54', class: "icon", "aria-hidden": "true" }, h("diwa-icon", { key: '657f77e2f0403f80c0433570349ba3221edeb3f2', name: this.icon, size: iconSize }))), h("span", { key: '65ab163880ea086929465145915fa8e20d14ee53', class: `label${this.hideLabel ? " label--hidden" : ""}`, part: "label" }, h("slot", { key: '243b92cd0e03e04e05cc38dcc2ecf47297f6db94' })))));
171
171
  }
172
172
  static get delegatesFocus() { return true; }
173
173
  get host() { return getElement(this); }
@@ -210,7 +210,7 @@ const DiwaLink = class {
210
210
  const iconSize = this.compact ? 16 : 20;
211
211
  const anchorProps = isAnchor
212
212
  ? Object.assign(Object.assign({ href: this.href, target: this.target, download: this.download, rel: (_a = this.rel) !== null && _a !== void 0 ? _a : (this.target === "_blank" ? "noopener noreferrer" : undefined) }, (this.label ? { "aria-label": this.label } : {})), (this.disabled ? { "aria-disabled": "true", tabIndex: -1 } : {})) : {};
213
- return (h(Host, { key: '776e06394ce0ae72d3b17839f3b6c03a8b9d8d87', "data-theme": this.theme }, h("style", { key: 'c839450ec4fe0c4e887b0ca0ca20d98b72353c18', innerHTML: getComponentCss() }), h(Tag, Object.assign({ key: 'ffcf734b9978340a43f6e85fbbce99692a1a948e', class: "inner" }, anchorProps, { part: "base" }), hasIcon && (h("span", { key: '8eaa121076b37556d334d441cf538b878bc682b5', class: "icon", "aria-hidden": "true" }, h("diwa-icon", { key: '69b02d7412041c9f3ec276f84b2bdecc1882725b', name: this.icon, size: iconSize }))), h("span", { key: '99ffcd1bd80c6ddabb6cd99b75ce6c83f94afe00', class: `label${this.hideLabel ? " label--hidden" : ""}`, part: "label" }, h("slot", { key: '8057fd1012fbd5d5651fb2fe82f6d1fc0366a240' })))));
213
+ return (h(Host, { key: '9cf2fd4d0d5ce43e75c3a222131b34d9c478e421', "data-theme": this.theme }, h("style", { key: 'a0063d4bf08a30a185c7bf27a2f5a5cf9ce26a44', innerHTML: getComponentCss() }), h(Tag, Object.assign({ key: 'ff842bd79914c7b175a197e9c502aba455de6c91', class: "inner" }, anchorProps, { part: "base" }), hasIcon && (h("span", { key: '71e88edb6edd441d0ee452deba9644312186c990', class: "icon", "aria-hidden": "true" }, h("diwa-icon", { key: '87cdae9c8fd9bff6331325a9d88e8c86041ca5f2', name: this.icon, size: iconSize }))), h("span", { key: 'dbfe2d4cdf1c060be2012bf37671286de3527017', class: `label${this.hideLabel ? " label--hidden" : ""}`, part: "label" }, h("slot", { key: 'c5ccd67b6b2978ac0d6be79bd951b3030a44a787' })))));
214
214
  }
215
215
  static get delegatesFocus() { return true; }
216
216
  get host() { return getElement(this); }
@@ -387,7 +387,7 @@ const DiwaModal = class {
387
387
  // ──────────────────────────────────────────────────────────────
388
388
  render() {
389
389
  const { open, heading, dismissButton, backdrop, _hasFooter, _hasHeader } = this;
390
- return (h(Host, { key: 'c1acc99174aa04a60711f8e96c6097d55b9efd14', "data-theme": this.theme }, h("style", { key: '21667f36c24c814ea163defa911f038684563d9c' }, getComponentCss(open, backdrop, dismissButton, _hasFooter)), h("div", { key: 'a393f68968ef8eca8007af0204831627114f0150', class: "backdrop", "aria-hidden": "true", onClick: this.handleBackdropClick }), h("div", { key: '34e2f0b1ceffc8f1e8255198714ee1273cafb945', class: "modal", role: "dialog", "aria-modal": "true", "aria-labelledby": heading ? this._headingId : undefined, "aria-label": !heading ? 'Dialog' : undefined, "aria-hidden": open ? undefined : 'true', tabIndex: -1, ref: (el) => { this._modalEl = el; } }, h("div", { key: 'b7f3afe1849b84edd7689bf854bfb88724b80126', class: "header" }, h("div", { key: 'c149b170f6b9fc010c7095b72393a6c52786cc56', class: "header-top" }, heading && (h("h2", { key: '8766cbba30a6baec983d76c2ea2103a0ce72d8cd', class: "heading", id: this._headingId }, heading)), dismissButton && (h("button", { key: '33427160a356fa8d5d6fb80ac386f4aaa2086bb9', class: "dismiss", type: "button", "aria-label": "Close dialog", onClick: this.handleDismiss }, h("svg", { key: 'c0a8aa78dadf6146151f24193eb06bae00ba9291', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", width: "16", height: "16", "aria-hidden": "true" }, h("path", { key: '21b404d32024b640a2687a9589c4783357a22aa6', d: "M18 6 6 18M6 6l12 12" }))))), _hasHeader && (h("div", { key: 'cd981d16141149103a2309b20d49fc6a01b5570b', class: "header-sub" }, h("slot", { key: '108ead5c96a73eeb0afae549d8ee3bcf6b06d305', name: "header" })))), h("div", { key: '56aa2c8ce6090086af76f4f039637e4d3274c9ca', class: "body" }, h("slot", { key: '784eb1571c6d68bdc6f01e413f3d549bc70ad2ea' })), _hasFooter && (h("div", { key: '1aa5c7bbdb0cfc86a3319bd9faa778da78a18a98', class: "footer" }, h("slot", { key: 'ada3b858cf5e2f6c46c175518773398e519d5aff', name: "footer" }))))));
390
+ return (h(Host, { key: 'a7c4c46ac2022eff1f585955d327e8b5614b268a', "data-theme": this.theme }, h("style", { key: 'd4fd6c7649e8a6cacef20de25e1545dde2a7c89e' }, getComponentCss(open, backdrop, dismissButton, _hasFooter)), h("div", { key: '2aa898b9fc1136a36f8e2f9b15180d7f0573002c', class: "backdrop", "aria-hidden": "true", onClick: this.handleBackdropClick }), h("div", { key: '0c61a254601a455b6082e15d797d15f09b7d0393', class: "modal", role: "dialog", "aria-modal": "true", "aria-labelledby": heading ? this._headingId : undefined, "aria-label": !heading ? 'Dialog' : undefined, "aria-hidden": open ? undefined : 'true', tabIndex: -1, ref: (el) => { this._modalEl = el; } }, h("div", { key: '7dd4938654021ff4e7002e0944bb3c630fa475a0', class: "header" }, h("div", { key: 'd2b1302f27595ba0cac1284486bc9a4ae2d4f6e2', class: "header-top" }, heading && (h("h2", { key: '35ee9c3a96497b3ab7787bdcb22758b5225db485', class: "heading", id: this._headingId }, heading)), dismissButton && (h("button", { key: '83452c628da2141bada1153e6cea6224027a2862', class: "dismiss", type: "button", "aria-label": "Close dialog", onClick: this.handleDismiss }, h("svg", { key: '87ce4e4636ab5a191b4f6928b78ad75ef31ffa3b', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", width: "16", height: "16", "aria-hidden": "true" }, h("path", { key: '940d065be71549f24cfc2f94b9407b80f8819f08', d: "M18 6 6 18M6 6l12 12" }))))), _hasHeader && (h("div", { key: '65484bca3079d7707c52da339291dddbf1d3f427', class: "header-sub" }, h("slot", { key: '4653c0604f79201777fdb247562da2b712ef67d7', name: "header" })))), h("div", { key: '1516ef5894e7bd58708c63dffca0bd0cd83b250f', class: "body" }, h("slot", { key: '0f5692e741ddc5ba6c68e556efbcec420339890e' })), _hasFooter && (h("div", { key: '96eba8b23a345cecb3a18356cae02dd257daa185', class: "footer" }, h("slot", { key: 'ac9d27e700733b3124392cc7ee9331d2b864f5b4', name: "footer" }))))));
391
391
  }
392
392
  static get delegatesFocus() { return true; }
393
393
  get host() { return getElement(this); }
@@ -152,7 +152,7 @@ const DiwaMultiSelectOption = class {
152
152
  (_a = this.optionEl) === null || _a === void 0 ? void 0 : _a.focus();
153
153
  }
154
154
  render() {
155
- return (h(Host, { key: 'b4d48c6bb6968502a8ae2a6c1981db145332ce83', "data-theme": this.theme }, h("style", { key: 'c69088cc9414ff1b6edc4fa064abc6fded70226b', innerHTML: getComponentCss(this.compact) }), h("div", { key: 'f5ecb4d1dda04a18735594105ee436544f210c95', class: "option", role: "option", "aria-selected": this.selected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, onClick: this.handleClick, onKeyDown: this.handleKeyDown, ref: (el) => (this.optionEl = el), part: "option" }, h("span", { key: '3d2e4211d015355332a3ac44204d7a907659a465', class: "checkbox", "aria-hidden": "true", part: "checkbox" }), h("span", { key: '86ca6452ad32e685f944511f4c862c848d0bf493', class: "label", part: "label" }, h("slot", { key: '3caa3fafd6bdb4c3426d8ef989f8de34fc05a853' })))));
155
+ return (h(Host, { key: 'cd154bf05b1c5524ef8757d49a538f5b71dcf0f7', "data-theme": this.theme }, h("style", { key: 'e79192f92ab4f5a3965a5c41617208d5ba0586bb', innerHTML: getComponentCss(this.compact) }), h("div", { key: 'bdb6539019761a38a79c825d0c10eb035da493d1', class: "option", role: "option", "aria-selected": this.selected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, onClick: this.handleClick, onKeyDown: this.handleKeyDown, ref: (el) => (this.optionEl = el), part: "option" }, h("span", { key: '778df214b22f9e64859f56fe25cb4ed71ad4896f', class: "checkbox", "aria-hidden": "true", part: "checkbox" }), h("span", { key: '153a68043083905a2c2b328e6e00504a312cf659', class: "label", part: "label" }, h("slot", { key: '803a21e44bdc6162c648f1fbd90267f9bc3d4c89' })))));
156
156
  }
157
157
  static get delegatesFocus() { return true; }
158
158
  get host() { return getElement(this); }
@@ -620,10 +620,10 @@ const DiwaMultiSelect = class {
620
620
  const hintId = `${this.internalId}-hint`;
621
621
  const hasMessage = !!this.message && this.state !== 'none';
622
622
  const hasValue = this.value.length > 0;
623
- return (h(Host, { key: 'b64a8c41ae771f58d8ca8778ddb3f943f1e2cac4', "data-theme": this.theme }, h("style", { key: 'd8cc4112b8378f11e5a91874adc6ae3f1e422fa4', innerHTML: getComponentCss(this.isOpen, this.disabled, this.state, this.compact, this.dropdownClass.includes('--up')) }), (this.label || this.host.querySelector('[slot="label"]')) && (h("span", { key: '53f49aa986fd9f05e73314cc650995afa8b97bb2', class: "label", id: labelId, part: "label" }, h("slot", { key: '7c2f4c19f4d25ca64bfa28f4a4a3f5234594c763', name: "label" }, this.label), this.required && h("span", { key: 'bbd11f3b58d7821ca7ab7ebc8eb0a05e3618a5e9', class: "label__required", "aria-hidden": "true" }, "*"))), (this.description || this.host.querySelector('[slot="description"]')) && (h("span", { key: '92a55e0597c3802a2f986d0b9ba10d41ed33356a', class: "description", part: "description" }, h("slot", { key: '0365a7975834cb125e1b65ce482874d99f69af2a', name: "description" }, this.description))), h("div", { key: '293c6bd35a70f57a7e2b0efa930fa61578ab3752', class: "trigger", role: "combobox", "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-controls": listboxId, "aria-labelledby": this.label ? labelId : undefined, "aria-required": this.required ? 'true' : undefined, "aria-invalid": this.state === 'error' ? 'true' : undefined, "aria-describedby": hasMessage ? hintId : undefined, tabIndex: this.disabled ? -1 : 0, onClick: this.onTriggerClick, onKeyDown: this.onTriggerKeyDown, ref: (el) => (this.triggerEl = el), part: "trigger" }, h("span", { key: '146365e26a7513974361dfa9dc26410e5e174fd8', class: `trigger__value${!hasValue ? ' trigger__placeholder' : ''}`, part: "value" }, this.hasCustomSelectedSlot ? (h("slot", { name: "selected" })) : hasValue ? (this.selectedLabels) : (this.label || 'Select options')), hasValue && (h("button", { key: 'b1a5018fb507d2d4d4d822af191bef24c6fa558e', class: "trigger__reset", type: "button", "aria-label": "Reset selection", onClick: this.onResetClick, onKeyDown: (e) => {
623
+ return (h(Host, { key: 'd1870eb6329fdced85adc9165c58e7060370c5ac', "data-theme": this.theme }, h("style", { key: 'f7c5db3277aab64cdfb0457133ed1d6da7a345c7', innerHTML: getComponentCss(this.isOpen, this.disabled, this.state, this.compact, this.dropdownClass.includes('--up')) }), (this.label || this.host.querySelector('[slot="label"]')) && (h("span", { key: '07d54b9aff11c23e21f656b0d2d045bdd0998e60', class: "label", id: labelId, part: "label" }, h("slot", { key: '8bf102a8b193fd0273726309615ea722fcce0b14', name: "label" }, this.label), this.required && h("span", { key: '07ac8efaae3785897ca2537961acb4bded9e8d40', class: "label__required", "aria-hidden": "true" }, "*"))), (this.description || this.host.querySelector('[slot="description"]')) && (h("span", { key: '9f105c5c644b0d9c5c8f560e2bc7f28b76adc944', class: "description", part: "description" }, h("slot", { key: 'f90b49ec602ed3b50ecbdadd51860d08a71878cb', name: "description" }, this.description))), h("div", { key: '32b0d40cfd3ff3704a2133ddb49b19f2e65fea0c', class: "trigger", role: "combobox", "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-controls": listboxId, "aria-labelledby": this.label ? labelId : undefined, "aria-required": this.required ? 'true' : undefined, "aria-invalid": this.state === 'error' ? 'true' : undefined, "aria-describedby": hasMessage ? hintId : undefined, tabIndex: this.disabled ? -1 : 0, onClick: this.onTriggerClick, onKeyDown: this.onTriggerKeyDown, ref: (el) => (this.triggerEl = el), part: "trigger" }, h("span", { key: '746b9ef493c0d06da003282805cb5dfee6526761', class: `trigger__value${!hasValue ? ' trigger__placeholder' : ''}`, part: "value" }, this.hasCustomSelectedSlot ? (h("slot", { name: "selected" })) : hasValue ? (this.selectedLabels) : (this.label || 'Select options')), hasValue && (h("button", { key: '482962199782f1b35ee38cded409ca99592a314d', class: "trigger__reset", type: "button", "aria-label": "Reset selection", onClick: this.onResetClick, onKeyDown: (e) => {
624
624
  if (e.key === 'Tab')
625
625
  this.isOpen = false;
626
- }, part: "reset" }, "\u2715")), h("span", { key: '4dbbf50468fc96323e3bd9c92b25e3f34e2ad344', class: "trigger__chevron", "aria-hidden": "true", part: "chevron" }, h("svg", { key: '0b4f50afe6b0cd6d1ffccb3a8acf5709a8734477', viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '1c582d3bcf18af529b1d8b2a581f9ef7ad13858e', d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("div", { key: 'f98fd7dd9d6325a2eafb21880d10d12f4517dc4e', class: this.dropdownClass, role: "dialog", "aria-label": this.label, "aria-hidden": this.isOpen ? undefined : 'true', part: "dropdown" }, this.hasCustomFilterSlot ? (h("div", { class: "filter" }, h("slot", { name: "filter" }))) : (h("div", { class: "filter" }, h("input", { class: "filter__input", type: "text", placeholder: "Filter options\u2026", "aria-label": "Filter options", autocomplete: "off", value: this.filterText, onInput: this.onFilterInput, onKeyDown: this.onTriggerKeyDown, ref: (el) => (this.filterInputEl = el), part: "filter-input" }))), h("div", { key: 'edd1c19900c332574d972424a62d117d10cbcda6', class: "options", id: listboxId, role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", part: "options" }, !this.hasFilterResults && (h("div", { key: 'e03ac0ea8790a73bcc15f71fee27c773a1e323f9', class: "no-results", role: "alert", "aria-live": "polite" }, "No results found")), h("slot", { key: '71bd34a1ca8e20245f7bf87bf4cd7be8c5814556', name: "options-status" }), h("slot", { key: 'a7c8ebb35860740c3c19b5f8910b18bf923bc7ff', onSlotchange: () => this.onSlotChange() }))), hasMessage && (h("span", { key: '671515ab8d44ac2fef5cd5f5a398c945de4b2b6e', id: hintId, class: "message", part: "message", "aria-live": this.state === 'error' ? 'polite' : undefined }, h("slot", { key: 'f93922457797ae8cfeb378b3338b537907267c93', name: "message" }, this.message)))));
626
+ }, part: "reset" }, "\u2715")), h("span", { key: 'd045c0e7d87ae202687241504a0544047e68f986', class: "trigger__chevron", "aria-hidden": "true", part: "chevron" }, h("svg", { key: '987e79ae7ef8f316dd50513e3cc6b910596fdc33', viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '8c38ce669650bdb480c242a9c7ea0aa2a1926207', d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("div", { key: 'bdeeca7bb9bb54446af37bbf83a64bdacac380cb', class: this.dropdownClass, role: "dialog", "aria-label": this.label, "aria-hidden": this.isOpen ? undefined : 'true', part: "dropdown" }, this.hasCustomFilterSlot ? (h("div", { class: "filter" }, h("slot", { name: "filter" }))) : (h("div", { class: "filter" }, h("input", { class: "filter__input", type: "text", placeholder: "Filter options\u2026", "aria-label": "Filter options", autocomplete: "off", value: this.filterText, onInput: this.onFilterInput, onKeyDown: this.onTriggerKeyDown, ref: (el) => (this.filterInputEl = el), part: "filter-input" }))), h("div", { key: '4073abc69ecf2e4204aae127fc07662d4f6d663a', class: "options", id: listboxId, role: "listbox", "aria-label": this.label, "aria-multiselectable": "true", part: "options" }, !this.hasFilterResults && (h("div", { key: 'b4415ca3b2e043bab5a01835bb6097c15ecada81', class: "no-results", role: "alert", "aria-live": "polite" }, "No results found")), h("slot", { key: '9362401ed428d356b65d4506d38ea23470b8ab0c', name: "options-status" }), h("slot", { key: '3aa042ec8c156478053fa1dd36c7cecf09ff2151', onSlotchange: () => this.onSlotChange() }))), hasMessage && (h("span", { key: '07652c69895dbbd71f4cab8fa05122a74ddc2be5', id: hintId, class: "message", part: "message", "aria-live": this.state === 'error' ? 'polite' : undefined }, h("slot", { key: '9e0180e1cc8f2757371a3a10e1e12d236e4c07ed', name: "message" }, this.message)))));
627
627
  }
628
628
  static get delegatesFocus() { return true; }
629
629
  get host() { return getElement(this); }
@@ -279,7 +279,7 @@ const DiwaPagination = class {
279
279
  const prevLabel = (_c = intl.prev) !== null && _c !== void 0 ? _c : 'Previous page';
280
280
  const nextLabel = (_d = intl.next) !== null && _d !== void 0 ? _d : 'Next page';
281
281
  const pageLabel = (_e = intl.page) !== null && _e !== void 0 ? _e : 'Page';
282
- return (h(Host, { key: '5ab4f9042518982631f8b0276acc3de703344ab7', "data-theme": this.theme }, h("style", { key: '83777127af3cd7fba90bcf359c0727ecb478019d', innerHTML: getComponentCss() }), h("nav", { key: '9ba68ea091b61589dd7ef2b9bda3fab01f841efd', "aria-label": rootLabel, class: "nav" }, h("ul", { key: '819b9d7b344ec50b2a15241278438e18bb20cdfb', class: "list" }, items.map((item, index) => {
282
+ return (h(Host, { key: '4fa5cadb5296b7e23cc779e5ec159244fcde6c4a', "data-theme": this.theme }, h("style", { key: '64ecd996a2a54cad3762f31430dfc1c8ef6a8b8f', innerHTML: getComponentCss() }), h("nav", { key: 'a8ff37dbf716a7c270e5493539418da43ae94b5f', "aria-label": rootLabel, class: "nav" }, h("ul", { key: '3a980124988ec73d6a4c0becbe76351b66522544', class: "list" }, items.map((item, index) => {
283
283
  const { type, isActive, value } = item;
284
284
  if (type === ItemType.PREVIOUS) {
285
285
  return (h("li", { key: "prev" }, h("button", { class: "btn", disabled: !isActive, "aria-label": prevLabel, onClick: () => isActive && this.handleClick(value) }, h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("polyline", { points: "15 18 9 12 15 6" })))));
@@ -174,10 +174,10 @@ const DiwaPinCode = class {
174
174
  const valueChars = this.value.padEnd(safeLength, '').slice(0, safeLength);
175
175
  const descId = 'desc';
176
176
  const msgId = 'msg';
177
- return (h(Host, { key: 'ce75d110bb3a2805f659bcb7134d5d634dcc70de', "data-theme": this.theme }, h("style", { key: 'e9c07d76495bdec903746bd91eda7837c9c295f1', innerHTML: getComponentCss(this.state, this.disabled, this.compact) }), h("div", { key: 'f592254bd71d2ee7f9146343c5da9313c7078478', class: "root" }, !this.hideLabel && this.label && (h("div", { key: 'cc40bfd72a5b9e338778de362fbe544748e0fc51', class: "label-row" }, h("span", { key: '18abb5940e763b390be780d465ac5c97daecc73e', class: "label" }, this.label, this.required && h("span", { key: '5d1fb8d02a8f774840338a52a3db1b8ca82b667b', class: "required", "aria-hidden": "true" }, " *")))), h("div", { key: 'b47022b7e3c7b04b13918c534b39ed67aea6855b', class: "boxes", role: "group", "aria-label": this.hideLabel && this.label ? this.label : undefined }, Array.from({ length: safeLength }).map((_, i) => {
177
+ return (h(Host, { key: 'fd84239857264ac7ff2d70388a1b57ed28c139e1', "data-theme": this.theme }, h("style", { key: '8ca52e841f42b85be9b805443f76636e67108b00', innerHTML: getComponentCss(this.state, this.disabled, this.compact) }), h("div", { key: 'b9295c2b897c58294b87e069e874682f6882c526', class: "root" }, !this.hideLabel && this.label && (h("div", { key: 'f53aa0736441db633eb7756c57091f5c86932781', class: "label-row" }, h("span", { key: '95e0e0bf33034fe78d914046450a5eaddfdefadc', class: "label" }, this.label, this.required && h("span", { key: '8197798944a90f35349b68537d90670949451034', class: "required", "aria-hidden": "true" }, " *")))), h("div", { key: '8e7638e8c78f0f1b4ae673828d8c14682d39a76a', class: "boxes", role: "group", "aria-label": this.hideLabel && this.label ? this.label : undefined }, Array.from({ length: safeLength }).map((_, i) => {
178
178
  var _a;
179
179
  return (h("input", { key: i, class: "box", type: this.type === 'password' ? 'password' : 'text', inputMode: this.type === 'number' ? 'numeric' : 'text', maxLength: 1, value: (_a = valueChars[i]) !== null && _a !== void 0 ? _a : '', disabled: this.disabled, required: this.required && i === 0, "aria-label": `Digit ${i + 1} of ${safeLength}`, "aria-describedby": i === 0 ? (this.message ? msgId : this.description ? descId : undefined) : undefined, onInput: (e) => this.handleInput(e, i), onKeyDown: (e) => this.handleKeyDown(e, i), onPaste: i === 0 ? this.handlePaste : undefined, onFocus: (e) => e.target.select(), autocomplete: i === 0 ? 'one-time-code' : 'off' }));
180
- })), !this.message && this.description && (h("p", { key: '81acb4b960a629cccf26db9cbab200acdbbd4079', id: descId, class: "description" }, this.description)), this.message && (h("p", { key: 'fb3b87870b07324e635a8442c1e68959f23e3b4b', id: msgId, class: "message" }, this.message)))));
180
+ })), !this.message && this.description && (h("p", { key: 'e596640dd57e61edcc854a19671d417c3fd1bf1d', id: descId, class: "description" }, this.description)), this.message && (h("p", { key: '33741de2a6c5fa2e7d1072d5bf8d846cc54b6ddf', id: msgId, class: "message" }, this.message)))));
181
181
  }
182
182
  static get delegatesFocus() { return true; }
183
183
  get host() { return getElement(this); }
@@ -87,7 +87,7 @@ const DiwaPopover = class {
87
87
  }
88
88
  }
89
89
  render() {
90
- return (h(Host, { key: '29f28c2151f2472cd116e14239de1aeeb9d046c5', "data-theme": this.theme }, h("style", { key: '35ba788b9f4c625e864a8aa6ca0b4b4366b13d30', innerHTML: getComponentCss(this.isOpen, this.direction) }), h("slot", { key: 'd253876442f93e392b63bd1345dd39ea72c56926', name: "button" }, h("button", { key: '756b2d3b46770bea764bb3e29de4421c20f58523', class: "trigger", type: "button", "aria-expanded": String(this.isOpen), "aria-haspopup": "true", onClick: this.toggle }, h("svg", { key: '79808b6b95b48df821d2f73a75c25acc91c93e25', xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("circle", { key: 'f1ae6d761a15e38ea29d0a3fb41edde1022fd1af', cx: "12", cy: "12", r: "10" }), h("line", { key: '2d115de15f3558053fe928470262235a0740990f', x1: "12", y1: "8", x2: "12", y2: "12" }), h("line", { key: '5e59843ffa9c7eb1e7f536b4dbcefa83686fa19e', x1: "12", y1: "16", x2: "12.01", y2: "16" })))), h("div", { key: '58abbaa997097e8ba2b6394cdb7e4f34a516f027', class: "panel", role: "tooltip", "aria-hidden": String(!this.isOpen) }, this.description && h("p", { key: '7a2dcca65d61ad04e8bffc3b6af4dc5759f88449' }, this.description), h("slot", { key: '8dcc3f2f287fa5a194decb4d6585cd64e58a00ca' }))));
90
+ return (h(Host, { key: '706d73f1ad8a20082daca4acfc0758ba50542169', "data-theme": this.theme }, h("style", { key: '331793aabac4e2555201b5242133f7d28e7fd484', innerHTML: getComponentCss(this.isOpen, this.direction) }), h("slot", { key: 'f79a4057076d939012b8e27c92e9883f3335a40f', name: "button" }, h("button", { key: 'c42272766f4a5c80b5120ce5f53a1f0d8634e2e1', class: "trigger", type: "button", "aria-expanded": String(this.isOpen), "aria-haspopup": "true", onClick: this.toggle }, h("svg", { key: 'a93a6cb15e2ea6c146129a3373e9a2e69b71dde2', xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("circle", { key: '62d9118c2f344d2fbb5ca97989f336e9e1368d90', cx: "12", cy: "12", r: "10" }), h("line", { key: '2f31265ac9c896eb36f53ee73271340543b5cba4', x1: "12", y1: "8", x2: "12", y2: "12" }), h("line", { key: 'a9c6ff1a17ecd8694d0fef23dc3c5b79bab49b20', x1: "12", y1: "16", x2: "12.01", y2: "16" })))), h("div", { key: '0da742535b53bd3c40a6ee20e611c7740ce53e75', class: "panel", role: "tooltip", "aria-hidden": String(!this.isOpen) }, this.description && h("p", { key: '8fcbb3c865aa604e9d1c13aa814ed453903fc341' }, this.description), h("slot", { key: '51c6c0d6ca50f4a6444e8768d88203fa54cf4132' }))));
91
91
  }
92
92
  static get delegatesFocus() { return true; }
93
93
  get host() { return getElement(this); }
@@ -17,7 +17,7 @@ const getComponentCss = (checked, disabled, compact) => {
17
17
 
18
18
  .wrapper {
19
19
  display: inline-flex;
20
- align-items: flex-start;
20
+ align-items: center;
21
21
  gap: var(--diwa-space-3);
22
22
  cursor: pointer;
23
23
  }
@@ -31,7 +31,6 @@ const getComponentCss = (checked, disabled, compact) => {
31
31
  flex-shrink: 0;
32
32
  width: ${boxSize};
33
33
  height: ${boxSize};
34
- margin-top: calc((1.5em - ${boxSize}) / 2);
35
34
  }
36
35
 
37
36
  input[type="radio"] {
@@ -119,7 +118,7 @@ const DiwaRadioGroupItem = class {
119
118
  }
120
119
  render() {
121
120
  const labelId = `diwa-rgi-${this.value || Math.random().toString(36).slice(2, 7)}`;
122
- return (h(Host, { key: '601466853aeddd1ff2903f879e7231e408434bf3' }, h("style", { key: '81305a16ccf6c2c50384dc6f1fa5055f4a529a66', innerHTML: getComponentCss(this.checked, this.disabled, this.compact) }), h("label", { key: '19ac3315bb5f8505001633e1fe1f9463f2d5df63', class: "wrapper" }, h("span", { key: 'f24bb10f78a1096212bd8fb49c164e21f64d6d28', class: "input-container" }, h("input", { key: '95e29f346d1ef84f50ca00565394580ec57f8473', id: labelId, type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, onChange: this.handleChange, "aria-checked": this.checked ? 'true' : 'false' })), h("span", { key: '5d0e84e14ae2778bdf5bc3a1c80be6aa41cbe098', class: "label-text" }, h("slot", { key: '20243975c3f1c7f372e1e0c081fd92f2067c0b47' })))));
121
+ return (h(Host, { key: 'd8bc41d5cf9885195ca2e1579aa74abcf93c9fb2' }, h("style", { key: 'b303d2b29a49f4445eaed221470ccb6bd1020150', innerHTML: getComponentCss(this.checked, this.disabled, this.compact) }), h("label", { key: 'd2a931fd4754cb93c02dcc833a5f08fa1ce5f1ea', class: "wrapper" }, h("span", { key: '237f63b74e3aa3be54cdfc1f8027b819b93c8276', class: "input-container" }, h("input", { key: '37e09b73b7d904847fa8e4194a97309e9e07a4de', id: labelId, type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, onChange: this.handleChange, "aria-checked": this.checked ? 'true' : 'false' })), h("span", { key: '85a9799f4ac065d7d8167b44a0dc3d667511730d', class: "label-text" }, h("slot", { key: '8fda0f7afd5dbffee2047668f1245439c4650b3e' })))));
123
122
  }
124
123
  static get delegatesFocus() { return true; }
125
124
  get host() { return getElement(this); }
@@ -1 +1 @@
1
- {"file":"diwa-radio-group-item.entry.js","mappings":";;;AAEO,MAAM,eAAe,GAAG,CAC7B,OAAgB,EAChB,QAAiB,EACjB,OAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IAExC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;aAyBI,OAAO;cACN,OAAO;gCACW,OAAO;;;;;;;;;;;;;;oDAca,OAAO,GAAG,oBAAoB,GAAG,oBAAoB;kBACvF,OAAO,GAAG,oBAAoB,GAAG,aAAa;;;;;;;;;IAS5D,aAAa,CAAC,qBAAqB,CAAC;;;;;;;;;aAS3B,OAAO;cACN,OAAO;;;eAGN,OAAO,GAAG,GAAG,GAAG,GAAG;;;;;;;;;;;;;;;;IAgB9B,qBAAqB,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;GACxE,CAAC;AACJ,CAAC;;MC1EY,kBAAkB;IAJ/B;;;;QAQ2B,UAAK,GAAU,MAAM,CAAC;;QAGtB,UAAK,GAAW,EAAE,CAAC;;QAGJ,YAAO,GAAY,KAAK,CAAC;;QAGzB,SAAI,GAAW,EAAE,CAAC;;QAGjC,aAAQ,GAAY,KAAK,CAAC;;QAG1B,YAAO,GAAY,KAAK,CAAC;QAe1C,iBAAY,GAAG;YACrB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SAC9C,CAAC;KA4BH;IArCC,mBAAmB,CAAC,MAAe;;QACjC,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,KAAK;YAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KACnC;IAQD,MAAM;QACJ,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAEnF,QACE,EAAC,IAAI,uDACH,8DAAO,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAI,EAChF,8DAAO,KAAK,EAAC,SAAS,IACpB,6DAAM,KAAK,EAAC,iBAAiB,IAC3B,8DACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,YAAY,kBACb,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,GAC7C,CACG,EACP,6DAAM,KAAK,EAAC,YAAY,IACtB,8DAAQ,CACH,CACD,CACH,EACP;KACH;;;;;;;;;;","names":[],"sources":["src/components/diwa-radio-group-item/diwa-radio-group-item-styles.ts","src/components/diwa-radio-group-item/diwa-radio-group-item.tsx"],"sourcesContent":["import { getFocusStyle, getReducedMotionStyle } from '../../utils/styles';\r\n\r\nexport const getComponentCss = (\r\n checked: boolean,\r\n disabled: boolean,\r\n compact: boolean,\r\n): string => {\r\n const boxSize = compact ? '14px' : '18px';\r\n const dotSize = compact ? '6px' : '8px';\r\n\r\n return `\r\n :host {\r\n display: block;\r\n font-family: var(--diwa-font-family-base);\r\n outline: none;\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n .wrapper {\r\n display: inline-flex;\r\n align-items: flex-start;\r\n gap: var(--diwa-space-3);\r\n cursor: pointer;\r\n }\r\n\r\n :host([disabled]) .wrapper {\r\n cursor: not-allowed;\r\n }\r\n\r\n .input-container {\r\n position: relative;\r\n flex-shrink: 0;\r\n width: ${boxSize};\r\n height: ${boxSize};\r\n margin-top: calc((1.5em - ${boxSize}) / 2);\r\n }\r\n\r\n input[type=\"radio\"] {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n border-radius: 50%;\r\n border: var(--diwa-border-width-medium) solid ${checked ? 'var(--diwa-accent)' : 'var(--diwa-border)'};\r\n background: ${checked ? 'var(--diwa-accent)' : 'transparent'};\r\n transition: border-color var(--diwa-transition-base), background var(--diwa-transition-base);\r\n }\r\n\r\n input[type=\"radio\"]:disabled {\r\n cursor: not-allowed;\r\n opacity: 0.4;\r\n }\r\n\r\n ${getFocusStyle('input[type=\"radio\"]')}\r\n\r\n /* Dot indicator when checked */\r\n .input-container::after {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: ${dotSize};\r\n height: ${dotSize};\r\n border-radius: 50%;\r\n background: var(--diwa-text-on-accent, #fff);\r\n opacity: ${checked ? '1' : '0'};\r\n pointer-events: none;\r\n transition: opacity var(--diwa-transition-base);\r\n }\r\n\r\n .label-text {\r\n font-size: var(--diwa-font-size-base);\r\n color: var(--diwa-text-primary);\r\n line-height: 1.5;\r\n user-select: none;\r\n }\r\n\r\n :host([disabled]) .label-text {\r\n color: var(--diwa-text-muted);\r\n }\r\n\r\n ${getReducedMotionStyle('input[type=\"radio\"]', '.input-container::after')}\r\n `;\r\n};\r\n","import { Component, Element, Event, type EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-radio-group-item-styles';\r\n\r\n/**\r\n * @component diwa-radio-group-item\r\n *\r\n * A single radio option used inside `diwa-radio-group`.\r\n * The group sets `checked`, `name`, and `disabled` automatically — you\r\n * only need to provide `value` and the label via the default slot.\r\n *\r\n * Usage:\r\n * <diwa-radio-group-item value=\"s\">Small</diwa-radio-group-item>\r\n */\r\n@Component({\r\n tag: 'diwa-radio-group-item',\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DiwaRadioGroupItem {\r\n @Element() host!: HTMLDiwaRadioGroupItemElement;\r\n\r\n /** Per-component theme override. */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n /** The value submitted/emitted when this item is selected. */\r\n @Prop({ reflect: true }) value: string = '';\r\n\r\n /** Set by the parent diwa-radio-group — do not set directly. */\r\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\r\n\r\n /** Native name — set automatically by the parent group. */\r\n @Prop({ mutable: true, reflect: true }) name: string = '';\r\n\r\n /** Whether this option is disabled. Also set by the parent group when the whole group is disabled. */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n\r\n /** Reduces size for denser layouts. */\r\n @Prop({ reflect: true }) compact: boolean = false;\r\n\r\n /**\r\n * Internal event dispatched to the parent group when the user selects this item.\r\n * Consumers should listen to the parent group's `update` event instead.\r\n */\r\n @Event({ bubbles: true, composed: true, eventName: 'diwa-radio-select' })\r\n radioSelect!: EventEmitter<{ value: string }>;\r\n\r\n @Watch('checked')\r\n handleCheckedChange(newVal: boolean) {\r\n const input = this.host.shadowRoot?.querySelector('input');\r\n if (input) input.checked = newVal;\r\n }\r\n\r\n private handleChange = () => {\r\n if (this.disabled) return;\r\n this.checked = true;\r\n this.radioSelect.emit({ value: this.value });\r\n };\r\n\r\n render() {\r\n const labelId = `diwa-rgi-${this.value || Math.random().toString(36).slice(2, 7)}`;\r\n\r\n return (\r\n <Host>\r\n <style innerHTML={getComponentCss(this.checked, this.disabled, this.compact)} />\r\n <label class=\"wrapper\">\r\n <span class=\"input-container\">\r\n <input\r\n id={labelId}\r\n type=\"radio\"\r\n name={this.name}\r\n value={this.value}\r\n checked={this.checked}\r\n disabled={this.disabled}\r\n onChange={this.handleChange}\r\n aria-checked={this.checked ? 'true' : 'false'}\r\n />\r\n </span>\r\n <span class=\"label-text\">\r\n <slot />\r\n </span>\r\n </label>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"diwa-radio-group-item.entry.js","mappings":";;;AAEO,MAAM,eAAe,GAAG,CAC7B,OAAgB,EAChB,QAAiB,EACjB,OAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IAExC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;aAyBI,OAAO;cACN,OAAO;;;;;;;;;;;;;;oDAc+B,OAAO,GAAG,oBAAoB,GAAG,oBAAoB;kBACvF,OAAO,GAAG,oBAAoB,GAAG,aAAa;;;;;;;;;IAS5D,aAAa,CAAC,qBAAqB,CAAC;;;;;;;;;aAS3B,OAAO;cACN,OAAO;;;eAGN,OAAO,GAAG,GAAG,GAAG,GAAG;;;;;;;;;;;;;;;;IAgB9B,qBAAqB,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;GACxE,CAAC;AACJ,CAAC;;MCzEY,kBAAkB;IAJ/B;;;;QAQ2B,UAAK,GAAU,MAAM,CAAC;;QAGtB,UAAK,GAAW,EAAE,CAAC;;QAGJ,YAAO,GAAY,KAAK,CAAC;;QAGzB,SAAI,GAAW,EAAE,CAAC;;QAGjC,aAAQ,GAAY,KAAK,CAAC;;QAG1B,YAAO,GAAY,KAAK,CAAC;QAe1C,iBAAY,GAAG;YACrB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SAC9C,CAAC;KA4BH;IArCC,mBAAmB,CAAC,MAAe;;QACjC,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,KAAK;YAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KACnC;IAQD,MAAM;QACJ,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAEnF,QACE,EAAC,IAAI,uDACH,8DAAO,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAI,EAChF,8DAAO,KAAK,EAAC,SAAS,IACpB,6DAAM,KAAK,EAAC,iBAAiB,IAC3B,8DACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,YAAY,kBACb,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,GAC7C,CACG,EACP,6DAAM,KAAK,EAAC,YAAY,IACtB,8DAAQ,CACH,CACD,CACH,EACP;KACH;;;;;;;;;;","names":[],"sources":["src/components/diwa-radio-group-item/diwa-radio-group-item-styles.ts","src/components/diwa-radio-group-item/diwa-radio-group-item.tsx"],"sourcesContent":["import { getFocusStyle, getReducedMotionStyle } from '../../utils/styles';\r\n\r\nexport const getComponentCss = (\r\n checked: boolean,\r\n disabled: boolean,\r\n compact: boolean,\r\n): string => {\r\n const boxSize = compact ? '14px' : '18px';\r\n const dotSize = compact ? '6px' : '8px';\r\n\r\n return `\r\n :host {\r\n display: block;\r\n font-family: var(--diwa-font-family-base);\r\n outline: none;\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n .wrapper {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--diwa-space-3);\r\n cursor: pointer;\r\n }\r\n\r\n :host([disabled]) .wrapper {\r\n cursor: not-allowed;\r\n }\r\n\r\n .input-container {\r\n position: relative;\r\n flex-shrink: 0;\r\n width: ${boxSize};\r\n height: ${boxSize};\r\n }\r\n\r\n input[type=\"radio\"] {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n border-radius: 50%;\r\n border: var(--diwa-border-width-medium) solid ${checked ? 'var(--diwa-accent)' : 'var(--diwa-border)'};\r\n background: ${checked ? 'var(--diwa-accent)' : 'transparent'};\r\n transition: border-color var(--diwa-transition-base), background var(--diwa-transition-base);\r\n }\r\n\r\n input[type=\"radio\"]:disabled {\r\n cursor: not-allowed;\r\n opacity: 0.4;\r\n }\r\n\r\n ${getFocusStyle('input[type=\"radio\"]')}\r\n\r\n /* Dot indicator when checked */\r\n .input-container::after {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: ${dotSize};\r\n height: ${dotSize};\r\n border-radius: 50%;\r\n background: var(--diwa-text-on-accent, #fff);\r\n opacity: ${checked ? '1' : '0'};\r\n pointer-events: none;\r\n transition: opacity var(--diwa-transition-base);\r\n }\r\n\r\n .label-text {\r\n font-size: var(--diwa-font-size-base);\r\n color: var(--diwa-text-primary);\r\n line-height: 1.5;\r\n user-select: none;\r\n }\r\n\r\n :host([disabled]) .label-text {\r\n color: var(--diwa-text-muted);\r\n }\r\n\r\n ${getReducedMotionStyle('input[type=\"radio\"]', '.input-container::after')}\r\n `;\r\n};\r\n","import { Component, Element, Event, type EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-radio-group-item-styles';\r\n\r\n/**\r\n * @component diwa-radio-group-item\r\n *\r\n * A single radio option used inside `diwa-radio-group`.\r\n * The group sets `checked`, `name`, and `disabled` automatically — you\r\n * only need to provide `value` and the label via the default slot.\r\n *\r\n * Usage:\r\n * <diwa-radio-group-item value=\"s\">Small</diwa-radio-group-item>\r\n */\r\n@Component({\r\n tag: 'diwa-radio-group-item',\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DiwaRadioGroupItem {\r\n @Element() host!: HTMLDiwaRadioGroupItemElement;\r\n\r\n /** Per-component theme override. */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n /** The value submitted/emitted when this item is selected. */\r\n @Prop({ reflect: true }) value: string = '';\r\n\r\n /** Set by the parent diwa-radio-group — do not set directly. */\r\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\r\n\r\n /** Native name — set automatically by the parent group. */\r\n @Prop({ mutable: true, reflect: true }) name: string = '';\r\n\r\n /** Whether this option is disabled. Also set by the parent group when the whole group is disabled. */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n\r\n /** Reduces size for denser layouts. */\r\n @Prop({ reflect: true }) compact: boolean = false;\r\n\r\n /**\r\n * Internal event dispatched to the parent group when the user selects this item.\r\n * Consumers should listen to the parent group's `update` event instead.\r\n */\r\n @Event({ bubbles: true, composed: true, eventName: 'diwa-radio-select' })\r\n radioSelect!: EventEmitter<{ value: string }>;\r\n\r\n @Watch('checked')\r\n handleCheckedChange(newVal: boolean) {\r\n const input = this.host.shadowRoot?.querySelector('input');\r\n if (input) input.checked = newVal;\r\n }\r\n\r\n private handleChange = () => {\r\n if (this.disabled) return;\r\n this.checked = true;\r\n this.radioSelect.emit({ value: this.value });\r\n };\r\n\r\n render() {\r\n const labelId = `diwa-rgi-${this.value || Math.random().toString(36).slice(2, 7)}`;\r\n\r\n return (\r\n <Host>\r\n <style innerHTML={getComponentCss(this.checked, this.disabled, this.compact)} />\r\n <label class=\"wrapper\">\r\n <span class=\"input-container\">\r\n <input\r\n id={labelId}\r\n type=\"radio\"\r\n name={this.name}\r\n value={this.value}\r\n checked={this.checked}\r\n disabled={this.disabled}\r\n onChange={this.handleChange}\r\n aria-checked={this.checked ? 'true' : 'false'}\r\n />\r\n </span>\r\n <span class=\"label-text\">\r\n <slot />\r\n </span>\r\n </label>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -136,7 +136,7 @@ const DiwaRadioGroup = class {
136
136
  const id = `diwa-rg-${this.host.id || Math.random().toString(36).slice(2, 7)}`;
137
137
  const descId = this.description ? `${id}-desc` : undefined;
138
138
  const msgId = this.message && this.state !== 'none' ? `${id}-msg` : undefined;
139
- return (h(Host, { key: '1d941ee37ba22144fb183834b0936c7b067a2178', "data-theme": this.theme }, h("style", { key: 'a7c6eab2f362a5f9f1db1a4b2afc7acb34316932', innerHTML: getComponentCss(this.state, this.direction, this.disabled, this.compact) }), h("div", { key: '35948be2f142b22241ebdce442610a92c4562638', class: "root", role: "radiogroup", "aria-labelledby": this.label ? `${id}-label` : undefined, "aria-describedby": [descId, msgId].filter(Boolean).join(' ') || undefined, "aria-required": this.required ? 'true' : undefined }, this.label && (h("span", { key: '8a8bc2e1aa6bae52d8d61b2a079e7e92680f9490', id: `${id}-label`, class: `label${this.hideLabel ? ' label-visually-hidden' : ''}` }, this.label, this.required && h("span", { key: '3274f34ca78ac7d9fee78d77d1de04852d49fa32', class: "label-required", "aria-hidden": "true" }, " *"))), this.description && (h("span", { key: 'c77537f4956c41d4ad526ea665550b17c7b9181c', id: descId, class: "description" }, this.description)), h("div", { key: 'e80a0285ea5ab1272c8df3c86fdf1495e5337107', class: "options" }, h("slot", { key: '73933e21541199a09c92e3ddf1d0cb250a941b1e' })), h("span", { key: '55f8cf4fd5145c9798dfe0a3f81099b38b611432', id: msgId, class: "message", hidden: !msgId }, this.message))));
139
+ return (h(Host, { key: '32637e2660123b9ab13929e9f6bf72ecd1c62ea3', "data-theme": this.theme }, h("style", { key: '56e3db8486007a85e2c6c2541247f5c95ce5d000', innerHTML: getComponentCss(this.state, this.direction, this.disabled, this.compact) }), h("div", { key: '2353868f8aa1d4c507e7b9a39abc80a42e43a746', class: "root", role: "radiogroup", "aria-labelledby": this.label ? `${id}-label` : undefined, "aria-describedby": [descId, msgId].filter(Boolean).join(' ') || undefined, "aria-required": this.required ? 'true' : undefined }, this.label && (h("span", { key: 'be82c40317e75d25bf7a301b0c558fbae3462197', id: `${id}-label`, class: `label${this.hideLabel ? ' label-visually-hidden' : ''}` }, this.label, this.required && h("span", { key: 'a971a5fa7153287a91b7f5285963b5d209e90a20', class: "label-required", "aria-hidden": "true" }, " *"))), this.description && (h("span", { key: 'cc429975145668e59143f3eb8418b9e0e18bf9a7', id: descId, class: "description" }, this.description)), h("div", { key: 'df706b4c3265b81adc189299a3745d024c584622', class: "options" }, h("slot", { key: 'ce4b20e7f9a24885887d0b6b660da8a3a6440e25' })), h("span", { key: '84182d0942ee8b3561b943e940053da9e8f756d5', id: msgId, class: "message", hidden: !msgId }, this.message))));
140
140
  }
141
141
  get host() { return getElement(this); }
142
142
  };
@@ -6,7 +6,7 @@ const ALIGN_MAP = {
6
6
  center: 'center',
7
7
  bottom: 'flex-end',
8
8
  };
9
- const getComponentCss = (scrollbar, alignScrollIndicator, hasOverflow) => {
9
+ const getComponentCss = (scrollbar, alignScrollIndicator, hasOverflow, canScrollLeft, canScrollRight) => {
10
10
  const alignItems = ALIGN_MAP[alignScrollIndicator];
11
11
  return `
12
12
  :host {
@@ -49,9 +49,14 @@ const getComponentCss = (scrollbar, alignScrollIndicator, hasOverflow) => {
49
49
  display: none;
50
50
  }
51
51
  ${getFocusStyle('.scroll-button')}
52
+ ${getFocusStyle('.scroll-area')}
53
+ .scroll-wrapper {
54
+ position: relative;
55
+ min-width: 0;
56
+ overflow: hidden;
57
+ }
52
58
  .scroll-area {
53
59
  display: flex;
54
- position: relative;
55
60
  align-items: ${alignItems};
56
61
  overflow-x: auto;
57
62
  overflow-y: hidden;
@@ -67,25 +72,25 @@ const getComponentCss = (scrollbar, alignScrollIndicator, hasOverflow) => {
67
72
  display: none;
68
73
  }
69
74
  ` : ''}
70
- /* Fade-out gradient masks at the edges */
71
- .scroll-area::before,
72
- .scroll-area::after {
73
- content: '';
75
+ /* Fade-out gradient masks — fixed at the visible edges via scroll-wrapper */
76
+ .fade {
74
77
  position: absolute;
75
78
  top: 0;
76
79
  bottom: 0;
77
80
  width: var(--diwa-scroller-fade-width);
78
81
  pointer-events: none;
79
82
  z-index: 1;
80
- opacity: ${hasOverflow ? '1' : '0'};
83
+ transition: opacity var(--diwa-transition-fast);
81
84
  }
82
- .scroll-area::before {
85
+ .fade--start {
83
86
  left: 0;
84
87
  background: var(--diwa-gradient-scrim-right);
88
+ opacity: ${canScrollLeft ? '1' : '0'};
85
89
  }
86
- .scroll-area::after {
90
+ .fade--end {
87
91
  right: 0;
88
92
  background: var(--diwa-gradient-scrim-left);
93
+ opacity: ${canScrollRight ? '1' : '0'};
89
94
  }
90
95
  `;
91
96
  };
@@ -122,11 +127,16 @@ const DiwaScroller = class {
122
127
  });
123
128
  };
124
129
  }
125
- handleWindowResize() {
126
- this.updateScrollState();
127
- }
128
130
  componentDidLoad() {
129
131
  this.updateScrollState();
132
+ if (this.scrollAreaEl) {
133
+ this.resizeObserver = new ResizeObserver(() => this.updateScrollState());
134
+ this.resizeObserver.observe(this.scrollAreaEl);
135
+ }
136
+ }
137
+ disconnectedCallback() {
138
+ var _a;
139
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
130
140
  }
131
141
  updateScrollState() {
132
142
  const el = this.scrollAreaEl;
@@ -140,7 +150,7 @@ const DiwaScroller = class {
140
150
  this.canScrollRight = currentScrollLeft < maxScrollLeft - epsilon;
141
151
  }
142
152
  render() {
143
- return (h(Host, { key: '643614f02efd65645b30e84ca2e2df2d54dba30c', "data-theme": this.theme }, h("style", { key: '4cef13fba65f9343955f1a183fd09a2ddd7d322b', innerHTML: getComponentCss(this.scrollbar, this.alignScrollIndicator, this.hasOverflow) }), h("div", { key: '441066c0c3f32216a5c6a0c43e0edb205e559356', class: "scroller" }, h("button", { key: '9839234ed27ab6d8f0afe9679dfe190a56055bff', type: "button", class: "scroll-button scroll-button--start", "aria-label": "Scroll left", disabled: !this.canScrollLeft, hidden: !this.hasOverflow, onClick: () => this.scrollByPage('start') }, h("svg", { key: '896a859726a6e3c576e76e565eceb67a1f48ad0a', viewBox: "0 0 16 16", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("path", { key: 'f986a71e860fe2c2a36c1dea537e4e506e0c6441', d: "M10 3.5 5 8l5 4.5" }))), h("div", { key: 'f719058341223bc9fea62b6769a86e0f2a238a06', class: "scroll-area", onScroll: this.handleScroll, ref: this.setScrollAreaRef }, h("slot", { key: 'c4139a8885d3fa7fba2ecb4c911a87d31a692b85', onSlotchange: this.handleSlotChange })), h("button", { key: '5ea25f1b0b0f45b73c1c775a06546b33815510d8', type: "button", class: "scroll-button scroll-button--end", "aria-label": "Scroll right", disabled: !this.canScrollRight, hidden: !this.hasOverflow, onClick: () => this.scrollByPage('end') }, h("svg", { key: '37b414293ec9cc708bdece7d9884202a2ba842f6', viewBox: "0 0 16 16", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("path", { key: 'bac8253b0e9e7c7ea88da607a7f47b505082916a', d: "M6 3.5 11 8l-5 4.5" }))))));
153
+ return (h(Host, { key: '45f4f99a3620911a3c082174ca774e45ea873e4d', "data-theme": this.theme }, h("style", { key: 'c8ef4daca35a71b53e14fc7bfebbff0675924fca', innerHTML: getComponentCss(this.scrollbar, this.alignScrollIndicator, this.hasOverflow, this.canScrollLeft, this.canScrollRight) }), h("div", { key: '5238cd797598390d8f9dc4dee119a40415dbfc4a', class: "scroller" }, h("button", { key: '6518c1d1a3afaebf619b6c8eae48c4e382c6a9d9', type: "button", class: "scroll-button scroll-button--start", "aria-label": "Scroll left", disabled: !this.canScrollLeft, hidden: !this.hasOverflow, onClick: () => this.scrollByPage('start') }, h("svg", { key: '7f9fb5f92a32bd36262d92a8d91f91dd9f2c0944', viewBox: "0 0 16 16", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("path", { key: '0a7a19e7be0d4522042f19a316dc95eb1a6eaab3', d: "M10 3.5 5 8l5 4.5" }))), h("div", { key: '7388a4c9a666c5d0427af95a1ff7f1f614042f44', class: "scroll-wrapper" }, h("div", { key: '74dde4823c6bb81ae2709c3c605c9670f29ca5b2', class: "scroll-area", tabIndex: this.hasOverflow ? 0 : undefined, role: this.hasOverflow ? 'region' : undefined, "aria-label": this.hasOverflow ? 'Scrollable content' : undefined, onScroll: this.handleScroll, ref: this.setScrollAreaRef }, h("slot", { key: '88077bcfbeeefdb356b3b9dd4fa4f8fe49cb33ec', onSlotchange: this.handleSlotChange })), h("div", { key: '6058d245a910c7edc139789b10627c55366b0767', class: "fade fade--start", "aria-hidden": "true" }), h("div", { key: '2353970bea7c49c8d689ee7115cbbf0c580ef065', class: "fade fade--end", "aria-hidden": "true" })), h("button", { key: '0f51472148bf56d3a1f24406fe8a8b9b560be666', type: "button", class: "scroll-button scroll-button--end", "aria-label": "Scroll right", disabled: !this.canScrollRight, hidden: !this.hasOverflow, onClick: () => this.scrollByPage('end') }, h("svg", { key: 'c74842bea946222b5939bc85336315e276daf4d0', viewBox: "0 0 16 16", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("path", { key: 'cdf90c5eb1036fb911153f3f2fc6adda2ced7afc', d: "M6 3.5 11 8l-5 4.5" }))))));
144
154
  }
145
155
  };
146
156
 
@@ -1 +1 @@
1
- {"file":"diwa-scroller.entry.js","mappings":"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","names":[],"sources":["src/components/diwa-scroller/diwa-scroller-styles.ts","src/components/diwa-scroller/diwa-scroller.tsx"],"sourcesContent":["import { getFocusStyle } from '../../utils/styles';\r\nimport type { ScrollerScrollIndicatorPosition } from './types';\r\n\r\nconst ALIGN_MAP: Record<ScrollerScrollIndicatorPosition, string> = {\r\n top: 'flex-start',\r\n center: 'center',\r\n bottom: 'flex-end',\r\n};\r\n\r\nexport const getComponentCss = (\r\n scrollbar: boolean,\r\n alignScrollIndicator: ScrollerScrollIndicatorPosition,\r\n hasOverflow: boolean,\r\n): string => {\r\n const alignItems = ALIGN_MAP[alignScrollIndicator];\r\n\r\n return `\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n .scroller {\r\n display: grid;\r\n grid-template-columns: ${hasOverflow ? 'auto minmax(0, 1fr) auto' : 'minmax(0, 1fr)'};\r\n align-items: ${alignItems};\r\n gap: var(--diwa-space-2);\r\n }\r\n .scroll-button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--diwa-space-8);\r\n height: var(--diwa-space-8);\r\n padding: 0;\r\n border: var(--diwa-border-width-thin) solid var(--diwa-border);\r\n border-radius: var(--diwa-radius-full);\r\n background: var(--diwa-bg-surface);\r\n color: var(--diwa-text-secondary);\r\n cursor: pointer;\r\n transition: var(--diwa-transition-colors), box-shadow var(--diwa-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n .scroll-button:hover:not(:disabled) {\r\n color: var(--diwa-text-primary);\r\n background: var(--diwa-bg-hover);\r\n }\r\n .scroll-button:disabled {\r\n opacity: var(--diwa-opacity-disabled);\r\n cursor: not-allowed;\r\n }\r\n .scroll-button[hidden] {\r\n display: none;\r\n }\r\n ${getFocusStyle('.scroll-button')}\r\n .scroll-area {\r\n display: flex;\r\n position: relative;\r\n align-items: ${alignItems};\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n scroll-behavior: smooth;\r\n -webkit-overflow-scrolling: touch;\r\n ${scrollbar ? '' : 'scrollbar-width: none;'}\r\n }\r\n ::slotted(*) {\r\n flex: 0 0 auto;\r\n }\r\n ${!scrollbar ? `\r\n .scroll-area::-webkit-scrollbar {\r\n display: none;\r\n }\r\n ` : ''}\r\n /* Fade-out gradient masks at the edges */\r\n .scroll-area::before,\r\n .scroll-area::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n width: var(--diwa-scroller-fade-width);\r\n pointer-events: none;\r\n z-index: 1;\r\n opacity: ${hasOverflow ? '1' : '0'};\r\n }\r\n .scroll-area::before {\r\n left: 0;\r\n background: var(--diwa-gradient-scrim-right);\r\n }\r\n .scroll-area::after {\r\n right: 0;\r\n background: var(--diwa-gradient-scrim-left);\r\n }\r\n `;\r\n};\r\n","import { Component, Host, Listen, Prop, State, h } from '@stencil/core';\r\nimport type { Theme } from '../../utils/styles';\r\nimport type { ScrollerScrollIndicatorPosition } from './types';\r\nimport { getComponentCss } from './diwa-scroller-styles';\r\n\r\n/**\r\n * @slot default — Items to be scrolled horizontally.\r\n */\r\n@Component({\r\n tag: 'diwa-scroller',\r\n shadow: true,\r\n})\r\nexport class DiwaScroller {\r\n /** Position of gradient fade indicators relative to the scroll area. */\r\n @Prop() alignScrollIndicator: ScrollerScrollIndicatorPosition = 'center';\r\n\r\n /** Whether to show the native horizontal scrollbar. */\r\n @Prop() scrollbar: boolean = false;\r\n\r\n /** Adapts the color when used on a light or dark background. */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n @State() private hasOverflow: boolean = false;\r\n @State() private canScrollLeft: boolean = false;\r\n @State() private canScrollRight: boolean = false;\r\n\r\n private scrollAreaEl?: HTMLDivElement;\r\n\r\n @Listen('resize', { target: 'window' })\r\n handleWindowResize(): void {\r\n this.updateScrollState();\r\n }\r\n\r\n componentDidLoad(): void {\r\n this.updateScrollState();\r\n }\r\n\r\n private setScrollAreaRef = (el?: HTMLDivElement): void => {\r\n this.scrollAreaEl = el;\r\n };\r\n\r\n private handleScroll = (): void => {\r\n this.updateScrollState();\r\n };\r\n\r\n private handleSlotChange = (): void => {\r\n requestAnimationFrame(() => this.updateScrollState());\r\n };\r\n\r\n private updateScrollState(): void {\r\n const el = this.scrollAreaEl;\r\n if (!el) return;\r\n\r\n const maxScrollLeft = Math.max(0, el.scrollWidth - el.clientWidth);\r\n const currentScrollLeft = el.scrollLeft;\r\n const epsilon = 1;\r\n\r\n this.hasOverflow = maxScrollLeft > epsilon;\r\n this.canScrollLeft = currentScrollLeft > epsilon;\r\n this.canScrollRight = currentScrollLeft < maxScrollLeft - epsilon;\r\n }\r\n\r\n private scrollByPage = (direction: 'start' | 'end'): void => {\r\n const el = this.scrollAreaEl;\r\n if (!el) return;\r\n\r\n const distance = Math.max(el.clientWidth * 0.8, 1);\r\n el.scrollBy({\r\n left: direction === 'start' ? -distance : distance,\r\n behavior: 'smooth',\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style innerHTML={getComponentCss(this.scrollbar, this.alignScrollIndicator, this.hasOverflow)} />\r\n <div class=\"scroller\">\r\n <button\r\n type=\"button\"\r\n class=\"scroll-button scroll-button--start\"\r\n aria-label=\"Scroll left\"\r\n disabled={!this.canScrollLeft}\r\n hidden={!this.hasOverflow}\r\n onClick={() => this.scrollByPage('start')}\r\n >\r\n <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n <path d=\"M10 3.5 5 8l5 4.5\" />\r\n </svg>\r\n </button>\r\n\r\n <div class=\"scroll-area\" onScroll={this.handleScroll} ref={this.setScrollAreaRef}>\r\n <slot onSlotchange={this.handleSlotChange} />\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"scroll-button scroll-button--end\"\r\n aria-label=\"Scroll right\"\r\n disabled={!this.canScrollRight}\r\n hidden={!this.hasOverflow}\r\n onClick={() => this.scrollByPage('end')}\r\n >\r\n <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n <path d=\"M6 3.5 11 8l-5 4.5\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"diwa-scroller.entry.js","mappings":"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","names":[],"sources":["src/components/diwa-scroller/diwa-scroller-styles.ts","src/components/diwa-scroller/diwa-scroller.tsx"],"sourcesContent":["import { getFocusStyle } from '../../utils/styles';\r\nimport type { ScrollerScrollIndicatorPosition } from './types';\r\n\r\nconst ALIGN_MAP: Record<ScrollerScrollIndicatorPosition, string> = {\r\n top: 'flex-start',\r\n center: 'center',\r\n bottom: 'flex-end',\r\n};\r\n\r\nexport const getComponentCss = (\r\n scrollbar: boolean,\r\n alignScrollIndicator: ScrollerScrollIndicatorPosition,\r\n hasOverflow: boolean,\r\n canScrollLeft: boolean,\r\n canScrollRight: boolean,\r\n): string => {\r\n const alignItems = ALIGN_MAP[alignScrollIndicator];\r\n\r\n return `\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n .scroller {\r\n display: grid;\r\n grid-template-columns: ${hasOverflow ? 'auto minmax(0, 1fr) auto' : 'minmax(0, 1fr)'};\r\n align-items: ${alignItems};\r\n gap: var(--diwa-space-2);\r\n }\r\n .scroll-button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--diwa-space-8);\r\n height: var(--diwa-space-8);\r\n padding: 0;\r\n border: var(--diwa-border-width-thin) solid var(--diwa-border);\r\n border-radius: var(--diwa-radius-full);\r\n background: var(--diwa-bg-surface);\r\n color: var(--diwa-text-secondary);\r\n cursor: pointer;\r\n transition: var(--diwa-transition-colors), box-shadow var(--diwa-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n .scroll-button:hover:not(:disabled) {\r\n color: var(--diwa-text-primary);\r\n background: var(--diwa-bg-hover);\r\n }\r\n .scroll-button:disabled {\r\n opacity: var(--diwa-opacity-disabled);\r\n cursor: not-allowed;\r\n }\r\n .scroll-button[hidden] {\r\n display: none;\r\n }\r\n ${getFocusStyle('.scroll-button')}\r\n ${getFocusStyle('.scroll-area')}\r\n .scroll-wrapper {\r\n position: relative;\r\n min-width: 0;\r\n overflow: hidden;\r\n }\r\n .scroll-area {\r\n display: flex;\r\n align-items: ${alignItems};\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n scroll-behavior: smooth;\r\n -webkit-overflow-scrolling: touch;\r\n ${scrollbar ? '' : 'scrollbar-width: none;'}\r\n }\r\n ::slotted(*) {\r\n flex: 0 0 auto;\r\n }\r\n ${!scrollbar ? `\r\n .scroll-area::-webkit-scrollbar {\r\n display: none;\r\n }\r\n ` : ''}\r\n /* Fade-out gradient masks — fixed at the visible edges via scroll-wrapper */\r\n .fade {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n width: var(--diwa-scroller-fade-width);\r\n pointer-events: none;\r\n z-index: 1;\r\n transition: opacity var(--diwa-transition-fast);\r\n }\r\n .fade--start {\r\n left: 0;\r\n background: var(--diwa-gradient-scrim-right);\r\n opacity: ${canScrollLeft ? '1' : '0'};\r\n }\r\n .fade--end {\r\n right: 0;\r\n background: var(--diwa-gradient-scrim-left);\r\n opacity: ${canScrollRight ? '1' : '0'};\r\n }\r\n `;\r\n};\r\n","import { Component, Host, Prop, State, h } from '@stencil/core';\r\nimport type { Theme } from '../../utils/styles';\r\nimport type { ScrollerScrollIndicatorPosition } from './types';\r\nimport { getComponentCss } from './diwa-scroller-styles';\r\n\r\n/**\r\n * @slot default — Items to be scrolled horizontally.\r\n */\r\n@Component({\r\n tag: 'diwa-scroller',\r\n shadow: true,\r\n})\r\nexport class DiwaScroller {\r\n /** Position of gradient fade indicators relative to the scroll area. */\r\n @Prop() alignScrollIndicator: ScrollerScrollIndicatorPosition = 'center';\r\n\r\n /** Whether to show the native horizontal scrollbar. */\r\n @Prop() scrollbar: boolean = false;\r\n\r\n /** Adapts the color when used on a light or dark background. */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n @State() private hasOverflow: boolean = false;\r\n @State() private canScrollLeft: boolean = false;\r\n @State() private canScrollRight: boolean = false;\r\n\r\n private scrollAreaEl?: HTMLDivElement;\r\n private resizeObserver?: ResizeObserver;\r\n\r\n componentDidLoad(): void {\r\n this.updateScrollState();\r\n if (this.scrollAreaEl) {\r\n this.resizeObserver = new ResizeObserver(() => this.updateScrollState());\r\n this.resizeObserver.observe(this.scrollAreaEl);\r\n }\r\n }\r\n\r\n disconnectedCallback(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n private setScrollAreaRef = (el?: HTMLDivElement): void => {\r\n this.scrollAreaEl = el;\r\n };\r\n\r\n private handleScroll = (): void => {\r\n this.updateScrollState();\r\n };\r\n\r\n private handleSlotChange = (): void => {\r\n requestAnimationFrame(() => this.updateScrollState());\r\n };\r\n\r\n private updateScrollState(): void {\r\n const el = this.scrollAreaEl;\r\n if (!el) return;\r\n\r\n const maxScrollLeft = Math.max(0, el.scrollWidth - el.clientWidth);\r\n const currentScrollLeft = el.scrollLeft;\r\n const epsilon = 1;\r\n\r\n this.hasOverflow = maxScrollLeft > epsilon;\r\n this.canScrollLeft = currentScrollLeft > epsilon;\r\n this.canScrollRight = currentScrollLeft < maxScrollLeft - epsilon;\r\n }\r\n\r\n private scrollByPage = (direction: 'start' | 'end'): void => {\r\n const el = this.scrollAreaEl;\r\n if (!el) return;\r\n\r\n const distance = Math.max(el.clientWidth * 0.8, 1);\r\n el.scrollBy({\r\n left: direction === 'start' ? -distance : distance,\r\n behavior: 'smooth',\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style innerHTML={getComponentCss(\r\n this.scrollbar,\r\n this.alignScrollIndicator,\r\n this.hasOverflow,\r\n this.canScrollLeft,\r\n this.canScrollRight,\r\n )} />\r\n <div class=\"scroller\">\r\n <button\r\n type=\"button\"\r\n class=\"scroll-button scroll-button--start\"\r\n aria-label=\"Scroll left\"\r\n disabled={!this.canScrollLeft}\r\n hidden={!this.hasOverflow}\r\n onClick={() => this.scrollByPage('start')}\r\n >\r\n <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n <path d=\"M10 3.5 5 8l5 4.5\" />\r\n </svg>\r\n </button>\r\n\r\n <div class=\"scroll-wrapper\">\r\n <div\r\n class=\"scroll-area\"\r\n tabIndex={this.hasOverflow ? 0 : undefined}\r\n role={this.hasOverflow ? 'region' : undefined}\r\n aria-label={this.hasOverflow ? 'Scrollable content' : undefined}\r\n onScroll={this.handleScroll}\r\n ref={this.setScrollAreaRef}\r\n >\r\n <slot onSlotchange={this.handleSlotChange} />\r\n </div>\r\n <div class=\"fade fade--start\" aria-hidden=\"true\" />\r\n <div class=\"fade fade--end\" aria-hidden=\"true\" />\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"scroll-button scroll-button--end\"\r\n aria-label=\"Scroll right\"\r\n disabled={!this.canScrollRight}\r\n hidden={!this.hasOverflow}\r\n onClick={() => this.scrollByPage('end')}\r\n >\r\n <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n <path d=\"M6 3.5 11 8l-5 4.5\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -62,7 +62,7 @@ const DiwaSegmentedControlItem = class {
62
62
  };
63
63
  }
64
64
  render() {
65
- return (h(Host, { key: '197c164463018b07f0dd5561dabaff80b1017d55' }, h("style", { key: '2d89019033de3d1bc1e818806af44aa0737aa7f4', innerHTML: getComponentCss(this.selected, this.disabled, this.compact) }), h("button", { key: 'ef28f2800562f06d42d772d35fd7ce4815b067cd', class: "btn", type: "button", disabled: this.disabled, "aria-pressed": this.selected ? 'true' : 'false', onClick: this.handleClick }, h("slot", { key: '6ec68f67dfd5b386c24eeeb4108a84d94e933dd4' }))));
65
+ return (h(Host, { key: '2a0ee21e2203bc962d2cb1156ebe70b0cbc30d1e' }, h("style", { key: 'e8ff2c5b70860cc872cad97d689e16cf9c82c064', innerHTML: getComponentCss(this.selected, this.disabled, this.compact) }), h("button", { key: '112f93b906318888f5113417fdfddf0ce1aad3a8', class: "btn", type: "button", disabled: this.disabled, "aria-pressed": this.selected ? 'true' : 'false', onClick: this.handleClick }, h("slot", { key: 'bd6ef60d2fc09a59cfd8108377f1981aaefc991c' }))));
66
66
  }
67
67
  static get delegatesFocus() { return true; }
68
68
  get host() { return getElement(this); }
@@ -54,7 +54,7 @@ const DiwaSegmentedControl = class {
54
54
  });
55
55
  }
56
56
  render() {
57
- return (h(Host, { key: '76204fa4c9d01d59662b63db9f210070ddce8ccd', role: "group", "data-theme": this.theme }, h("style", { key: '3da53b702c0488e0748df0d1930d81a3898abfee', innerHTML: getComponentCss() }), h("div", { key: '1ac0445d78a3c27f3db0bb979ff3d6a2aa3cafa3', class: "track" }, h("slot", { key: '21dd1e37da86b714671f6dabac080bee4e1e1abb' }))));
57
+ return (h(Host, { key: 'a234c388f48d3c866ffdab8c6eadc9b8bb5af4c8', role: "group", "data-theme": this.theme }, h("style", { key: 'bfad2e8a1da5a8395b9dcc3662913ff13f4607fe', innerHTML: getComponentCss() }), h("div", { key: 'f08d1b1bdd31d095333e51ac72ae3f40ebd27812', class: "track" }, h("slot", { key: 'b5ff001d635e09aa097cd8b3b6b32500490a19da' }))));
58
58
  }
59
59
  get host() { return getElement(this); }
60
60
  };
@@ -59,15 +59,15 @@ const getComponentCss = () => `
59
59
 
60
60
  /* ── Highlighted (keyboard / hover) ─────────────────────────────────── */
61
61
 
62
- :host([highlighted]) .option {
63
- background-color: var(--diwa-bg-hover);
64
- }
65
-
66
- @media (hover: hover) and (pointer: fine) {
67
- .option:hover {
68
- background-color: var(--diwa-bg-hover);
69
- }
70
- }
62
+ :host([highlighted]) .option {
63
+ background-color: var(--diwa-bg-hover);
64
+ }
65
+
66
+ @media (hover: hover) and (pointer: fine) {
67
+ .option:hover {
68
+ background-color: var(--diwa-bg-hover);
69
+ }
70
+ }
71
71
 
72
72
  /* ── Label text ─────────────────────────────────────────────────────── */
73
73
 
@@ -79,6 +79,18 @@ const getComponentCss = () => `
79
79
  white-space: nowrap;
80
80
  }
81
81
 
82
+ /* ── Compact ────────────────────────────────────────────────────────── */
83
+
84
+ :host([compact]) .option {
85
+ padding: var(--diwa-space-1) var(--diwa-space-2);
86
+ font-size: var(--diwa-font-size-md);
87
+ min-height: 0;
88
+ }
89
+
90
+ :host([compact]) .check {
91
+ font-size: var(--diwa-font-size-md);
92
+ }
93
+
82
94
  /* ── Disabled ───────────────────────────────────────────────────────── */
83
95
 
84
96
  :host([disabled]) {
@@ -113,6 +125,8 @@ const DiwaSelectOption = class {
113
125
  this.highlighted = false;
114
126
  /** Theme — inherited from the parent diwa-select. */
115
127
  this.theme = 'dark';
128
+ /** Compact mode — inherited from the parent diwa-select. */
129
+ this.compact = false;
116
130
  this.handleClick = () => {
117
131
  if (this.disabled)
118
132
  return;
@@ -133,7 +147,7 @@ const DiwaSelectOption = class {
133
147
  (_a = this.optionEl) === null || _a === void 0 ? void 0 : _a.focus();
134
148
  }
135
149
  render() {
136
- return (h(Host, { key: 'a247949923bad9061915c5e2c85713e396ee6503', "data-theme": this.theme }, h("style", { key: '5e979d5a31b9d1bd3f745de3613282114be80402', innerHTML: getComponentCss() }), h("div", { key: 'a72bd683daec24c92c3e327c1d83f49f383dafde', class: "option", role: "option", "aria-selected": this.selected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, onClick: this.handleClick, onKeyDown: this.handleKeyDown, ref: (el) => (this.optionEl = el), part: "option" }, h("span", { key: '38bb5d53e00fc6bac010da4f1096469405d9e782', class: "check", "aria-hidden": "true", part: "check" }, "\u2713"), h("span", { key: '7d15f4d7e6db5c56dcbcb5a6c1feff7128550209', class: "label", part: "label" }, h("slot", { key: 'a09a35aa00ed8c417e1ad6a514c9ba548685887b' })))));
150
+ return (h(Host, { key: '86c5dd52dbfc96056c5031be22e751c4c741527f', "data-theme": this.theme }, h("style", { key: '903154a75ff36b77647ee2c769717e5f1df574e6', innerHTML: getComponentCss() }), h("div", { key: 'c95e357baac1fd10642383cb4259d29dd356825e', class: "option", role: "option", "aria-selected": this.selected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, onClick: this.handleClick, onKeyDown: this.handleKeyDown, ref: (el) => (this.optionEl = el), part: "option" }, h("span", { key: '902e2a17f8bbff2e450349f5e2ef1df3d5b54df7', class: "check", "aria-hidden": "true", part: "check" }, "\u2713"), h("span", { key: '535f939bb208a6dad985b803ef18ebb240cd2c30', class: "label", part: "label" }, h("slot", { key: '055c66f037f5783f2aad7256a15dbfae034b5796' })))));
137
151
  }
138
152
  static get delegatesFocus() { return true; }
139
153
  get host() { return getElement(this); }
@@ -1 +1 @@
1
- {"file":"diwa-select-option.entry.js","mappings":";;;AAEO,MAAM,eAAe,GAAG,MAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCzC,aAAa,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DxB,qBAAqB,CAAC,SAAS,CAAC;CACnC;;MCzEY,gBAAgB;IAJ7B;;;;QAW2B,aAAQ,GAAY,KAAK,CAAC;;;;;QAMX,aAAQ,GAAY,KAAK,CAAC;;;;;QAM1B,gBAAW,GAAY,KAAK,CAAC;;QAG5C,UAAK,GAAU,MAAM,CAAC;QAiBvC,gBAAW,GAAG;YACpB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzD,CAAC;QAEM,kBAAa,GAAG,CAAC,CAAgB;YACvC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;gBACtC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;aACzD;SACF,CAAC;KAyBH;;IA1CC,MAAM,QAAQ;;QACZ,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,EAAE,CAAC;KACxB;IAiBD,MAAM;QACJ,QACE,EAAC,IAAI,mEAAa,IAAI,CAAC,KAAK,IAC1B,8DAAO,SAAS,EAAE,eAAe,EAAE,GAAI,EACvC,4DACE,KAAK,EAAC,QAAQ,EACd,IAAI,EAAC,QAAQ,mBACE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,mBAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,EAChC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAoB,CAAC,EACnD,IAAI,EAAC,QAAQ,IAEb,6DAAM,KAAK,EAAC,OAAO,iBAAa,MAAM,EAAC,IAAI,EAAC,OAAO,aAAS,EAC5D,6DAAM,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,IAC9B,8DAAQ,CACH,CACH,CACD,EACP;KACH;;;;;;;","names":[],"sources":["src/components/diwa-select-option/diwa-select-option-styles.ts","src/components/diwa-select-option/diwa-select-option.tsx"],"sourcesContent":["import { getFocusStyle, getReducedMotionStyle } from '../../utils/styles';\r\n\r\nexport const getComponentCss = (): string => `\r\n /* ── Host ──────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n display: block;\r\n font-family: var(--diwa-font-family-base);\r\n outline: none;\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n /* ── Option row ─────────────────────────────────────────────────────── */\r\n\r\n .option {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--diwa-space-3);\r\n padding: var(--diwa-space-2) var(--diwa-space-3);\r\n min-height: var(--diwa-select-option-min-height);\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n user-select: none;\r\n -webkit-font-smoothing: antialiased;\r\n color: var(--diwa-text-primary);\r\n font-size: var(--diwa-font-size-base);\r\n font-weight: var(--diwa-font-weight-normal);\r\n line-height: 1.4;\r\n border-radius: var(--diwa-radius-sm);\r\n transition: background-color var(--diwa-transition-fast);\r\n }\r\n\r\n ${getFocusStyle('.option')}\r\n\r\n /* ── Check mark ─────────────────────────────────────────────────────── */\r\n\r\n .check {\r\n flex-shrink: 0;\r\n width: var(--diwa-icon-size-md);\r\n height: var(--diwa-icon-size-md);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: var(--diwa-accent);\r\n font-size: var(--diwa-font-size-base);\r\n line-height: 1;\r\n visibility: hidden;\r\n }\r\n\r\n /* ── Selected state ─────────────────────────────────────────────────── */\r\n\r\n :host([selected]) .check {\r\n visibility: visible;\r\n }\r\n\r\n /* ── Highlighted (keyboard / hover) ─────────────────────────────────── */\r\n\r\n :host([highlighted]) .option {\n background-color: var(--diwa-bg-hover);\n }\n\n @media (hover: hover) and (pointer: fine) {\n .option:hover {\n background-color: var(--diwa-bg-hover);\n }\n }\n\r\n /* ── Label text ─────────────────────────────────────────────────────── */\r\n\r\n .label {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n /* ── Disabled ───────────────────────────────────────────────────────── */\r\n\r\n :host([disabled]) {\r\n pointer-events: none;\r\n }\r\n\r\n :host([disabled]) .option {\r\n opacity: var(--diwa-opacity-disabled);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ── Reduced motion ─────────────────────────────────────────────────── */\r\n\r\n ${getReducedMotionStyle('.option')}\r\n`;\r\n","import { Component, Element, Event, type EventEmitter, Host, Method, Prop, h } from '@stencil/core';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-select-option-styles';\r\n\r\n/**\r\n * @component diwa-select-option\r\n *\r\n * Individual option element for use inside <diwa-select>.\r\n * Renders a row with a checkmark indicator and label text.\r\n *\r\n * Not intended for standalone use — must be slotted into <diwa-select>.\r\n *\r\n * Provide an option without a value to allow deselection / show a placeholder:\r\n * <diwa-select-option>Please select…</diwa-select-option>\r\n *\r\n * @slot default — Option label text (plain text or inline phrasing content)\r\n */\r\n@Component({\r\n tag: 'diwa-select-option',\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DiwaSelectOption {\r\n @Element() host!: HTMLDiwaSelectOptionElement;\r\n\r\n /** The value submitted/emitted when this option is selected. */\r\n @Prop({ reflect: true }) value?: string;\r\n\r\n /** Disables the option — it cannot be selected. */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n\r\n /**\r\n * Whether the option is currently selected.\r\n * Maintained by the parent <diwa-select>.\r\n */\r\n @Prop({ mutable: true, reflect: true }) selected: boolean = false;\r\n\r\n /**\r\n * Whether the option is currently keyboard-highlighted.\r\n * Set exclusively by the parent component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) highlighted: boolean = false;\r\n\r\n /** Theme — inherited from the parent diwa-select. */\r\n @Prop({ mutable: true }) theme: Theme = 'dark';\r\n\r\n /**\r\n * Emitted when the user clicks or presses Enter on the option.\r\n * Bubbles and crosses Shadow DOM so the parent can catch it via @Listen.\r\n */\r\n @Event({ bubbles: true, composed: true })\r\n diwaSelectOptionUpdate!: EventEmitter<{ value: string | undefined }>;\r\n\r\n /** Focuses the inner option element. */\r\n @Method()\r\n async setFocus(): Promise<void> {\r\n this.optionEl?.focus();\r\n }\r\n\r\n private optionEl?: HTMLDivElement;\r\n\r\n private handleClick = (): void => {\r\n if (this.disabled) return;\r\n this.diwaSelectOptionUpdate.emit({ value: this.value });\r\n };\r\n\r\n private handleKeyDown = (e: KeyboardEvent): void => {\r\n if (this.disabled) return;\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n this.diwaSelectOptionUpdate.emit({ value: this.value });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style innerHTML={getComponentCss()} />\r\n <div\r\n class=\"option\"\r\n role=\"option\"\r\n aria-selected={this.selected ? 'true' : 'false'}\r\n aria-disabled={this.disabled ? 'true' : undefined}\r\n tabIndex={this.disabled ? -1 : 0}\r\n onClick={this.handleClick}\r\n onKeyDown={this.handleKeyDown}\r\n ref={(el) => (this.optionEl = el as HTMLDivElement)}\r\n part=\"option\"\r\n >\r\n <span class=\"check\" aria-hidden=\"true\" part=\"check\">✓</span>\r\n <span class=\"label\" part=\"label\">\r\n <slot />\r\n </span>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"diwa-select-option.entry.js","mappings":";;;AAEO,MAAM,eAAe,GAAG,MAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCzC,aAAa,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsExB,qBAAqB,CAAC,SAAS,CAAC;CACnC;;MCrFY,gBAAgB;IAJ7B;;;;QAW2B,aAAQ,GAAY,KAAK,CAAC;;;;;QAMX,aAAQ,GAAY,KAAK,CAAC;;;;;QAM1B,gBAAW,GAAY,KAAK,CAAC;;QAG5C,UAAK,GAAU,MAAM,CAAC;;QAGP,YAAO,GAAY,KAAK,CAAC;QAiBzD,gBAAW,GAAG;YACpB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzD,CAAC;QAEM,kBAAa,GAAG,CAAC,CAAgB;YACvC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;gBACtC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;aACzD;SACF,CAAC;KAyBH;;IA1CC,MAAM,QAAQ;;QACZ,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,EAAE,CAAC;KACxB;IAiBD,MAAM;QACJ,QACE,EAAC,IAAI,mEAAa,IAAI,CAAC,KAAK,IAC1B,8DAAO,SAAS,EAAE,eAAe,EAAE,GAAI,EACvC,4DACE,KAAK,EAAC,QAAQ,EACd,IAAI,EAAC,QAAQ,mBACE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,mBAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,EAChC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAoB,CAAC,EACnD,IAAI,EAAC,QAAQ,IAEb,6DAAM,KAAK,EAAC,OAAO,iBAAa,MAAM,EAAC,IAAI,EAAC,OAAO,aAAS,EAC5D,6DAAM,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,IAC9B,8DAAQ,CACH,CACH,CACD,EACP;KACH;;;;;;;","names":[],"sources":["src/components/diwa-select-option/diwa-select-option-styles.ts","src/components/diwa-select-option/diwa-select-option.tsx"],"sourcesContent":["import { getFocusStyle, getReducedMotionStyle } from '../../utils/styles';\r\n\r\nexport const getComponentCss = (): string => `\r\n /* ── Host ──────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n display: block;\r\n font-family: var(--diwa-font-family-base);\r\n outline: none;\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n /* ── Option row ─────────────────────────────────────────────────────── */\r\n\r\n .option {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--diwa-space-3);\r\n padding: var(--diwa-space-2) var(--diwa-space-3);\r\n min-height: var(--diwa-select-option-min-height);\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n user-select: none;\r\n -webkit-font-smoothing: antialiased;\r\n color: var(--diwa-text-primary);\r\n font-size: var(--diwa-font-size-base);\r\n font-weight: var(--diwa-font-weight-normal);\r\n line-height: 1.4;\r\n border-radius: var(--diwa-radius-sm);\r\n transition: background-color var(--diwa-transition-fast);\r\n }\r\n\r\n ${getFocusStyle('.option')}\r\n\r\n /* ── Check mark ─────────────────────────────────────────────────────── */\r\n\r\n .check {\r\n flex-shrink: 0;\r\n width: var(--diwa-icon-size-md);\r\n height: var(--diwa-icon-size-md);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: var(--diwa-accent);\r\n font-size: var(--diwa-font-size-base);\r\n line-height: 1;\r\n visibility: hidden;\r\n }\r\n\r\n /* ── Selected state ─────────────────────────────────────────────────── */\r\n\r\n :host([selected]) .check {\r\n visibility: visible;\r\n }\r\n\r\n /* ── Highlighted (keyboard / hover) ─────────────────────────────────── */\r\n\r\n :host([highlighted]) .option {\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n @media (hover: hover) and (pointer: fine) {\r\n .option:hover {\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n }\r\n\r\n /* ── Label text ─────────────────────────────────────────────────────── */\r\n\r\n .label {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n /* ── Compact ────────────────────────────────────────────────────────── */\r\n\r\n :host([compact]) .option {\r\n padding: var(--diwa-space-1) var(--diwa-space-2);\r\n font-size: var(--diwa-font-size-md);\r\n min-height: 0;\r\n }\r\n\r\n :host([compact]) .check {\r\n font-size: var(--diwa-font-size-md);\r\n }\r\n\r\n /* ── Disabled ───────────────────────────────────────────────────────── */\r\n\r\n :host([disabled]) {\r\n pointer-events: none;\r\n }\r\n\r\n :host([disabled]) .option {\r\n opacity: var(--diwa-opacity-disabled);\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ── Reduced motion ─────────────────────────────────────────────────── */\r\n\r\n ${getReducedMotionStyle('.option')}\r\n`;\r\n","import { Component, Element, Event, type EventEmitter, Host, Method, Prop, h } from '@stencil/core';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-select-option-styles';\r\n\r\n/**\r\n * @component diwa-select-option\r\n *\r\n * Individual option element for use inside <diwa-select>.\r\n * Renders a row with a checkmark indicator and label text.\r\n *\r\n * Not intended for standalone use — must be slotted into <diwa-select>.\r\n *\r\n * Provide an option without a value to allow deselection / show a placeholder:\r\n * <diwa-select-option>Please select…</diwa-select-option>\r\n *\r\n * @slot default — Option label text (plain text or inline phrasing content)\r\n */\r\n@Component({\r\n tag: 'diwa-select-option',\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DiwaSelectOption {\r\n @Element() host!: HTMLDiwaSelectOptionElement;\r\n\r\n /** The value submitted/emitted when this option is selected. */\r\n @Prop({ reflect: true }) value?: string;\r\n\r\n /** Disables the option — it cannot be selected. */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n\r\n /**\r\n * Whether the option is currently selected.\r\n * Maintained by the parent <diwa-select>.\r\n */\r\n @Prop({ mutable: true, reflect: true }) selected: boolean = false;\r\n\r\n /**\r\n * Whether the option is currently keyboard-highlighted.\r\n * Set exclusively by the parent component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) highlighted: boolean = false;\r\n\r\n /** Theme — inherited from the parent diwa-select. */\r\n @Prop({ mutable: true }) theme: Theme = 'dark';\r\n\r\n /** Compact mode — inherited from the parent diwa-select. */\r\n @Prop({ mutable: true, reflect: true }) compact: boolean = false;\r\n\r\n /**\r\n * Emitted when the user clicks or presses Enter on the option.\r\n * Bubbles and crosses Shadow DOM so the parent can catch it via @Listen.\r\n */\r\n @Event({ bubbles: true, composed: true })\r\n diwaSelectOptionUpdate!: EventEmitter<{ value: string | undefined }>;\r\n\r\n /** Focuses the inner option element. */\r\n @Method()\r\n async setFocus(): Promise<void> {\r\n this.optionEl?.focus();\r\n }\r\n\r\n private optionEl?: HTMLDivElement;\r\n\r\n private handleClick = (): void => {\r\n if (this.disabled) return;\r\n this.diwaSelectOptionUpdate.emit({ value: this.value });\r\n };\r\n\r\n private handleKeyDown = (e: KeyboardEvent): void => {\r\n if (this.disabled) return;\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n this.diwaSelectOptionUpdate.emit({ value: this.value });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style innerHTML={getComponentCss()} />\r\n <div\r\n class=\"option\"\r\n role=\"option\"\r\n aria-selected={this.selected ? 'true' : 'false'}\r\n aria-disabled={this.disabled ? 'true' : undefined}\r\n tabIndex={this.disabled ? -1 : 0}\r\n onClick={this.handleClick}\r\n onKeyDown={this.handleKeyDown}\r\n ref={(el) => (this.optionEl = el as HTMLDivElement)}\r\n part=\"option\"\r\n >\r\n <span class=\"check\" aria-hidden=\"true\" part=\"check\">✓</span>\r\n <span class=\"label\" part=\"label\">\r\n <slot />\r\n </span>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}