@sekiui/elements 0.1.3 → 0.1.4

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 (337) hide show
  1. package/dist/cdn/index.js +1 -1
  2. package/dist/{components/p-Bml9QXVd.js → cdn/p--1ROPZet.js} +22 -12
  3. package/dist/cdn/p-B4SOpX_A.js +155 -0
  4. package/dist/cdn/{p-B7jKUvZz.js → p-C3WFySZp.js} +29 -3
  5. package/dist/cdn/p-COBvV3Rw.js +201 -0
  6. package/dist/cdn/seki-alert-dialog-content.js +10 -24
  7. package/dist/cdn/seki-alert-dialog.js +8 -10
  8. package/dist/cdn/seki-carousel-dots.js +1 -1
  9. package/dist/cdn/seki-carousel-next.js +1 -1
  10. package/dist/cdn/seki-carousel-previous.js +1 -1
  11. package/dist/cdn/seki-collapsible-content.js +23 -40
  12. package/dist/cdn/seki-collapsible-trigger.js +21 -5
  13. package/dist/cdn/seki-collapsible.js +18 -11
  14. package/dist/cdn/seki-combobox-content.js +15 -22
  15. package/dist/cdn/seki-combobox-input.js +1 -1
  16. package/dist/cdn/seki-combobox-item.js +1 -1
  17. package/dist/cdn/seki-combobox.js +1 -1
  18. package/dist/cdn/seki-command-empty.js +6 -22
  19. package/dist/cdn/seki-command-group.js +11 -13
  20. package/dist/cdn/seki-command-input.js +23 -8
  21. package/dist/cdn/seki-command-item.js +17 -0
  22. package/dist/cdn/seki-command.js +58 -57
  23. package/dist/cdn/seki-data-table.js +13 -6
  24. package/dist/cdn/seki-dialog-content.js +10 -25
  25. package/dist/cdn/seki-dialog-description.js +13 -7
  26. package/dist/cdn/seki-dialog-overlay.js +6 -15
  27. package/dist/cdn/seki-dialog-title.js +13 -7
  28. package/dist/cdn/seki-dialog.js +1 -1
  29. package/dist/cdn/seki-drawer-content.js +21 -24
  30. package/dist/cdn/seki-drawer.js +8 -7
  31. package/dist/cdn/seki-field-label.js +28 -2
  32. package/dist/cdn/seki-label.js +1 -1
  33. package/dist/cdn/seki-navigation-menu-content.js +1 -1
  34. package/dist/cdn/seki-navigation-menu-item.js +1 -1
  35. package/dist/cdn/seki-navigation-menu-trigger.js +1 -1
  36. package/dist/cdn/seki-navigation-menu.js +1 -1
  37. package/dist/cdn/seki-popover-content.js +14 -20
  38. package/dist/cdn/seki-popover.js +27 -17
  39. package/dist/cdn/seki-resizable-handle.js +1 -1
  40. package/dist/cdn/seki-resizable-panel-group.js +1 -1
  41. package/dist/cdn/seki-resizable-panel.js +1 -1
  42. package/dist/cdn/seki-select-content.js +14 -17
  43. package/dist/cdn/seki-select-option.js +23 -25
  44. package/dist/cdn/seki-select-trigger.js +32 -38
  45. package/dist/cdn/seki-select.js +30 -7
  46. package/dist/cdn/seki-sheet-content.js +24 -24
  47. package/dist/cdn/seki-sheet.js +8 -7
  48. package/dist/cdn/seki-toggle-group.js +1 -1
  49. package/dist/cdn/seki-toggle.js +1 -1
  50. package/dist/cjs/context-bridge-t3FBhOrW.js +159 -0
  51. package/dist/cjs/index.cjs.js +1 -0
  52. package/dist/cjs/label-association-sgmb4sai.js +203 -0
  53. package/dist/cjs/loader.cjs.js +1 -1
  54. package/dist/cjs/seki-alert-dialog-content.cjs.entry.js +10 -24
  55. package/dist/cjs/seki-alert-dialog.cjs.entry.js +7 -9
  56. package/dist/cjs/seki-carousel-dots.cjs.entry.js +1 -1
  57. package/dist/cjs/seki-carousel-next.cjs.entry.js +1 -1
  58. package/dist/cjs/seki-carousel-previous.cjs.entry.js +1 -1
  59. package/dist/cjs/seki-collapsible-content.cjs.entry.js +20 -39
  60. package/dist/cjs/seki-collapsible-trigger.cjs.entry.js +19 -4
  61. package/dist/cjs/seki-collapsible.cjs.entry.js +16 -10
  62. package/dist/cjs/seki-combobox-content.cjs.entry.js +15 -22
  63. package/dist/cjs/seki-combobox-input.cjs.entry.js +1 -1
  64. package/dist/cjs/seki-combobox-item.cjs.entry.js +1 -1
  65. package/dist/cjs/seki-combobox.cjs.entry.js +1 -1
  66. package/dist/cjs/seki-command-empty.cjs.entry.js +6 -22
  67. package/dist/cjs/seki-command-group.cjs.entry.js +11 -13
  68. package/dist/cjs/seki-command-input.cjs.entry.js +22 -8
  69. package/dist/cjs/seki-command-item.cjs.entry.js +17 -0
  70. package/dist/cjs/seki-command.cjs.entry.js +56 -56
  71. package/dist/cjs/seki-data-table.cjs.entry.js +10 -6
  72. package/dist/cjs/seki-dialog-content.cjs.entry.js +10 -25
  73. package/dist/cjs/seki-dialog-description.cjs.entry.js +10 -6
  74. package/dist/cjs/seki-dialog-overlay.cjs.entry.js +6 -15
  75. package/dist/cjs/seki-dialog-title.cjs.entry.js +10 -6
  76. package/dist/cjs/seki-dialog.cjs.entry.js +21 -12
  77. package/dist/cjs/seki-drawer-content.cjs.entry.js +20 -24
  78. package/dist/cjs/seki-drawer.cjs.entry.js +8 -7
  79. package/dist/cjs/seki-field-label.cjs.entry.js +26 -2
  80. package/dist/cjs/seki-label.cjs.entry.js +27 -3
  81. package/dist/cjs/seki-navigation-menu-content.cjs.entry.js +1 -1
  82. package/dist/cjs/seki-navigation-menu-item.cjs.entry.js +1 -1
  83. package/dist/cjs/seki-navigation-menu-trigger.cjs.entry.js +1 -1
  84. package/dist/cjs/seki-navigation-menu.cjs.entry.js +1 -1
  85. package/dist/cjs/seki-popover-content.cjs.entry.js +14 -20
  86. package/dist/cjs/seki-popover.cjs.entry.js +24 -16
  87. package/dist/cjs/seki-resizable-handle.cjs.entry.js +1 -1
  88. package/dist/cjs/seki-resizable-panel-group.cjs.entry.js +1 -1
  89. package/dist/cjs/seki-resizable-panel.cjs.entry.js +1 -1
  90. package/dist/cjs/seki-select-content.cjs.entry.js +14 -17
  91. package/dist/cjs/seki-select-option.cjs.entry.js +23 -25
  92. package/dist/cjs/seki-select-trigger.cjs.entry.js +32 -38
  93. package/dist/cjs/seki-select.cjs.entry.js +29 -7
  94. package/dist/cjs/seki-sheet-content.cjs.entry.js +22 -24
  95. package/dist/cjs/seki-sheet.cjs.entry.js +8 -7
  96. package/dist/cjs/seki-toggle-group.cjs.entry.js +1 -1
  97. package/dist/cjs/seki-toggle.cjs.entry.js +1 -1
  98. package/dist/cjs/sekiui.cjs.js +1 -1
  99. package/dist/collection/components/alert-dialog/seki-alert-dialog-content.js +10 -24
  100. package/dist/collection/components/alert-dialog/seki-alert-dialog.js +21 -9
  101. package/dist/collection/components/collapsible/seki-collapsible-content.js +23 -40
  102. package/dist/collection/components/collapsible/seki-collapsible-trigger.js +24 -4
  103. package/dist/collection/components/collapsible/seki-collapsible.js +31 -9
  104. package/dist/collection/components/combobox-content/seki-combobox-content.js +15 -22
  105. package/dist/collection/components/command/seki-command-empty.js +6 -22
  106. package/dist/collection/components/command/seki-command-group.js +11 -13
  107. package/dist/collection/components/command/seki-command-input.js +27 -8
  108. package/dist/collection/components/command/seki-command-item.js +17 -0
  109. package/dist/collection/components/command/seki-command.js +71 -55
  110. package/dist/collection/components/data-table/seki-data-table.js +64 -6
  111. package/dist/collection/components/dialog/seki-dialog-content.js +10 -25
  112. package/dist/collection/components/dialog/seki-dialog-description.js +17 -6
  113. package/dist/collection/components/dialog/seki-dialog-overlay.js +6 -15
  114. package/dist/collection/components/dialog/seki-dialog-title.js +17 -6
  115. package/dist/collection/components/dialog/seki-dialog.js +37 -12
  116. package/dist/collection/components/drawer/seki-drawer-content.js +22 -24
  117. package/dist/collection/components/drawer/seki-drawer.js +22 -7
  118. package/dist/collection/components/field-label/seki-field-label.js +39 -3
  119. package/dist/collection/components/label/seki-label.js +40 -4
  120. package/dist/collection/components/popover/seki-popover-content.js +14 -20
  121. package/dist/collection/components/popover/seki-popover.js +41 -15
  122. package/dist/collection/components/select/seki-select.js +30 -6
  123. package/dist/collection/components/select-content/seki-select-content.js +14 -17
  124. package/dist/collection/components/select-option/seki-select-option.js +23 -25
  125. package/dist/collection/components/select-trigger/seki-select-trigger.js +32 -38
  126. package/dist/collection/components/sheet/seki-sheet-content.js +25 -24
  127. package/dist/collection/components/sheet/seki-sheet.js +22 -7
  128. package/dist/collection/utils/context-bridge.js +105 -4
  129. package/dist/collection/utils/label-association.js +199 -0
  130. package/dist/components/index.js +1 -1
  131. package/dist/{cdn/p-Bml9QXVd.js → components/p--1ROPZet.js} +22 -12
  132. package/dist/components/p-B4SOpX_A.js +155 -0
  133. package/dist/components/{p-B7jKUvZz.js → p-C3WFySZp.js} +29 -3
  134. package/dist/components/p-COBvV3Rw.js +201 -0
  135. package/dist/components/seki-alert-dialog-content.js +10 -24
  136. package/dist/components/seki-alert-dialog.js +8 -10
  137. package/dist/components/seki-carousel-dots.js +1 -1
  138. package/dist/components/seki-carousel-next.js +1 -1
  139. package/dist/components/seki-carousel-previous.js +1 -1
  140. package/dist/components/seki-collapsible-content.js +23 -40
  141. package/dist/components/seki-collapsible-trigger.js +21 -5
  142. package/dist/components/seki-collapsible.js +18 -11
  143. package/dist/components/seki-combobox-content.js +15 -22
  144. package/dist/components/seki-combobox-input.js +1 -1
  145. package/dist/components/seki-combobox-item.js +1 -1
  146. package/dist/components/seki-combobox.js +1 -1
  147. package/dist/components/seki-command-empty.js +6 -22
  148. package/dist/components/seki-command-group.js +11 -13
  149. package/dist/components/seki-command-input.js +23 -8
  150. package/dist/components/seki-command-item.js +17 -0
  151. package/dist/components/seki-command.js +58 -57
  152. package/dist/components/seki-data-table.js +13 -6
  153. package/dist/components/seki-dialog-content.js +10 -25
  154. package/dist/components/seki-dialog-description.js +13 -7
  155. package/dist/components/seki-dialog-overlay.js +6 -15
  156. package/dist/components/seki-dialog-title.js +13 -7
  157. package/dist/components/seki-dialog.js +1 -1
  158. package/dist/components/seki-drawer-content.js +21 -24
  159. package/dist/components/seki-drawer.js +8 -7
  160. package/dist/components/seki-field-label.js +28 -2
  161. package/dist/components/seki-label.js +1 -1
  162. package/dist/components/seki-navigation-menu-content.js +1 -1
  163. package/dist/components/seki-navigation-menu-item.js +1 -1
  164. package/dist/components/seki-navigation-menu-trigger.js +1 -1
  165. package/dist/components/seki-navigation-menu.js +1 -1
  166. package/dist/components/seki-popover-content.js +14 -20
  167. package/dist/components/seki-popover.js +27 -17
  168. package/dist/components/seki-resizable-handle.js +1 -1
  169. package/dist/components/seki-resizable-panel-group.js +1 -1
  170. package/dist/components/seki-resizable-panel.js +1 -1
  171. package/dist/components/seki-select-content.js +14 -17
  172. package/dist/components/seki-select-option.js +23 -25
  173. package/dist/components/seki-select-trigger.js +32 -38
  174. package/dist/components/seki-select.js +30 -7
  175. package/dist/components/seki-sheet-content.js +24 -24
  176. package/dist/components/seki-sheet.js +8 -7
  177. package/dist/components/seki-toggle-group.js +1 -1
  178. package/dist/components/seki-toggle.js +1 -1
  179. package/dist/esm/context-bridge-B4SOpX_A.js +155 -0
  180. package/dist/esm/index.js +1 -0
  181. package/dist/esm/label-association-COBvV3Rw.js +201 -0
  182. package/dist/esm/loader.js +1 -1
  183. package/dist/esm/seki-alert-dialog-content.entry.js +10 -24
  184. package/dist/esm/seki-alert-dialog.entry.js +7 -9
  185. package/dist/esm/seki-carousel-dots.entry.js +1 -1
  186. package/dist/esm/seki-carousel-next.entry.js +1 -1
  187. package/dist/esm/seki-carousel-previous.entry.js +1 -1
  188. package/dist/esm/seki-collapsible-content.entry.js +20 -39
  189. package/dist/esm/seki-collapsible-trigger.entry.js +19 -4
  190. package/dist/esm/seki-collapsible.entry.js +16 -10
  191. package/dist/esm/seki-combobox-content.entry.js +15 -22
  192. package/dist/esm/seki-combobox-input.entry.js +1 -1
  193. package/dist/esm/seki-combobox-item.entry.js +1 -1
  194. package/dist/esm/seki-combobox.entry.js +1 -1
  195. package/dist/esm/seki-command-empty.entry.js +6 -22
  196. package/dist/esm/seki-command-group.entry.js +11 -13
  197. package/dist/esm/seki-command-input.entry.js +22 -8
  198. package/dist/esm/seki-command-item.entry.js +17 -0
  199. package/dist/esm/seki-command.entry.js +56 -56
  200. package/dist/esm/seki-data-table.entry.js +10 -6
  201. package/dist/esm/seki-dialog-content.entry.js +10 -25
  202. package/dist/esm/seki-dialog-description.entry.js +10 -6
  203. package/dist/esm/seki-dialog-overlay.entry.js +6 -15
  204. package/dist/esm/seki-dialog-title.entry.js +10 -6
  205. package/dist/esm/seki-dialog.entry.js +21 -12
  206. package/dist/esm/seki-drawer-content.entry.js +20 -24
  207. package/dist/esm/seki-drawer.entry.js +8 -7
  208. package/dist/esm/seki-field-label.entry.js +26 -2
  209. package/dist/esm/seki-label.entry.js +27 -3
  210. package/dist/esm/seki-navigation-menu-content.entry.js +1 -1
  211. package/dist/esm/seki-navigation-menu-item.entry.js +1 -1
  212. package/dist/esm/seki-navigation-menu-trigger.entry.js +1 -1
  213. package/dist/esm/seki-navigation-menu.entry.js +1 -1
  214. package/dist/esm/seki-popover-content.entry.js +14 -20
  215. package/dist/esm/seki-popover.entry.js +24 -16
  216. package/dist/esm/seki-resizable-handle.entry.js +1 -1
  217. package/dist/esm/seki-resizable-panel-group.entry.js +1 -1
  218. package/dist/esm/seki-resizable-panel.entry.js +1 -1
  219. package/dist/esm/seki-select-content.entry.js +14 -17
  220. package/dist/esm/seki-select-option.entry.js +23 -25
  221. package/dist/esm/seki-select-trigger.entry.js +32 -38
  222. package/dist/esm/seki-select.entry.js +29 -7
  223. package/dist/esm/seki-sheet-content.entry.js +22 -24
  224. package/dist/esm/seki-sheet.entry.js +8 -7
  225. package/dist/esm/seki-toggle-group.entry.js +1 -1
  226. package/dist/esm/seki-toggle.entry.js +1 -1
  227. package/dist/esm/sekiui.js +1 -1
  228. package/dist/sekiui/index.esm.js +1 -1
  229. package/dist/sekiui/{p-2459de33.entry.js → p-09131578.entry.js} +1 -1
  230. package/dist/sekiui/p-14ca64d7.entry.js +1 -0
  231. package/dist/sekiui/p-1564ab34.entry.js +1 -0
  232. package/dist/sekiui/p-1b7681eb.entry.js +1 -0
  233. package/dist/sekiui/{p-573fcf7e.entry.js → p-20e5e17a.entry.js} +1 -1
  234. package/dist/sekiui/p-2bd3c250.entry.js +1 -0
  235. package/dist/sekiui/p-2d50d0c2.entry.js +1 -0
  236. package/dist/sekiui/p-31db5c3f.entry.js +1 -0
  237. package/dist/sekiui/p-33dd3d17.entry.js +1 -0
  238. package/dist/sekiui/p-360d7dea.entry.js +1 -0
  239. package/dist/sekiui/p-3c6d6845.entry.js +1 -0
  240. package/dist/sekiui/{p-731740ec.entry.js → p-3cd3f36e.entry.js} +1 -1
  241. package/dist/sekiui/{p-1d173026.entry.js → p-3e456430.entry.js} +1 -1
  242. package/dist/sekiui/{p-e287c9b0.entry.js → p-4191a2cf.entry.js} +1 -1
  243. package/dist/sekiui/{p-b75f801b.entry.js → p-48fe9b46.entry.js} +1 -1
  244. package/dist/sekiui/{p-5a60c7f5.entry.js → p-5132d055.entry.js} +1 -1
  245. package/dist/sekiui/p-5700ac69.entry.js +1 -0
  246. package/dist/sekiui/{p-d2592287.entry.js → p-57e7170b.entry.js} +1 -1
  247. package/dist/sekiui/{p-edac50c7.entry.js → p-5dbd46b4.entry.js} +1 -1
  248. package/dist/sekiui/p-6923d926.entry.js +1 -0
  249. package/dist/sekiui/{p-22daeb37.entry.js → p-6c2e4ae8.entry.js} +1 -1
  250. package/dist/sekiui/p-6edbced1.entry.js +1 -0
  251. package/dist/sekiui/p-7dac94b2.entry.js +1 -0
  252. package/dist/sekiui/p-80dbf1f5.entry.js +1 -0
  253. package/dist/sekiui/p-817af69a.entry.js +1 -0
  254. package/dist/sekiui/{p-ddcdc3da.entry.js → p-8b3bc7c2.entry.js} +1 -1
  255. package/dist/sekiui/p-8fb55d56.entry.js +1 -0
  256. package/dist/sekiui/{p-a575f386.entry.js → p-92b800a2.entry.js} +1 -1
  257. package/dist/sekiui/{p-63e922dc.entry.js → p-938ce866.entry.js} +1 -1
  258. package/dist/sekiui/{p-d0533172.entry.js → p-95501e60.entry.js} +1 -1
  259. package/dist/sekiui/p-979708a0.entry.js +1 -0
  260. package/dist/sekiui/{p-faf09566.entry.js → p-9c921a6c.entry.js} +1 -1
  261. package/dist/sekiui/p-B4SOpX_A.js +1 -0
  262. package/dist/sekiui/p-COBvV3Rw.js +1 -0
  263. package/dist/sekiui/{p-fc6b3691.entry.js → p-a4fc4f1a.entry.js} +1 -1
  264. package/dist/sekiui/{p-d7bd5d5e.entry.js → p-b94e0f1b.entry.js} +1 -1
  265. package/dist/sekiui/{p-1c5fe316.entry.js → p-c6efedab.entry.js} +1 -1
  266. package/dist/sekiui/p-c8da7923.entry.js +1 -0
  267. package/dist/sekiui/p-c97fbaf2.entry.js +1 -0
  268. package/dist/sekiui/p-cb28d764.entry.js +1 -0
  269. package/dist/sekiui/{p-5f52b52d.entry.js → p-cc2ac0f0.entry.js} +1 -1
  270. package/dist/sekiui/{p-acebf429.entry.js → p-d32614a4.entry.js} +1 -1
  271. package/dist/sekiui/p-d3449109.entry.js +1 -0
  272. package/dist/sekiui/p-ddbf98ca.entry.js +1 -0
  273. package/dist/sekiui/p-eb03eb37.entry.js +1 -0
  274. package/dist/sekiui/{p-c57bbe35.entry.js → p-fc9e8583.entry.js} +1 -1
  275. package/dist/sekiui/sekiui.esm.js +1 -1
  276. package/dist/types/components/alert-dialog/seki-alert-dialog-content.d.ts +6 -3
  277. package/dist/types/components/alert-dialog/seki-alert-dialog.d.ts +5 -2
  278. package/dist/types/components/collapsible/seki-collapsible-content.d.ts +4 -5
  279. package/dist/types/components/collapsible/seki-collapsible-trigger.d.ts +11 -0
  280. package/dist/types/components/collapsible/seki-collapsible.d.ts +6 -2
  281. package/dist/types/components/combobox-content/seki-combobox-content.d.ts +3 -4
  282. package/dist/types/components/command/seki-command-empty.d.ts +2 -4
  283. package/dist/types/components/command/seki-command-group.d.ts +2 -3
  284. package/dist/types/components/command/seki-command-input.d.ts +5 -1
  285. package/dist/types/components/command/seki-command-item.d.ts +3 -0
  286. package/dist/types/components/command/seki-command.d.ts +19 -1
  287. package/dist/types/components/command/types.d.ts +9 -1
  288. package/dist/types/components/data-table/seki-data-table.d.ts +7 -2
  289. package/dist/types/components/dialog/seki-dialog-content.d.ts +6 -3
  290. package/dist/types/components/dialog/seki-dialog-description.d.ts +5 -1
  291. package/dist/types/components/dialog/seki-dialog-overlay.d.ts +2 -3
  292. package/dist/types/components/dialog/seki-dialog-title.d.ts +5 -1
  293. package/dist/types/components/dialog/seki-dialog.d.ts +9 -2
  294. package/dist/types/components/drawer/seki-drawer-content.d.ts +8 -3
  295. package/dist/types/components/drawer/seki-drawer.d.ts +5 -1
  296. package/dist/types/components/field-label/seki-field-label.d.ts +9 -1
  297. package/dist/types/components/label/seki-label.d.ts +11 -2
  298. package/dist/types/components/popover/seki-popover-content.d.ts +6 -3
  299. package/dist/types/components/popover/seki-popover.d.ts +7 -1
  300. package/dist/types/components/select/seki-select.d.ts +8 -0
  301. package/dist/types/components/select-content/seki-select-content.d.ts +3 -2
  302. package/dist/types/components/select-option/seki-select-option.d.ts +9 -3
  303. package/dist/types/components/select-trigger/seki-select-trigger.d.ts +10 -4
  304. package/dist/types/components/sheet/seki-sheet-content.d.ts +8 -4
  305. package/dist/types/components/sheet/seki-sheet.d.ts +5 -1
  306. package/dist/types/components.d.ts +61 -6
  307. package/dist/types/utils/context-bridge.d.ts +68 -4
  308. package/dist/types/utils/label-association.d.ts +58 -0
  309. package/package.json +1 -1
  310. package/dist/cdn/p-DJMgrCw3.js +0 -54
  311. package/dist/cjs/context-bridge-CywF7uJm.js +0 -57
  312. package/dist/components/p-DJMgrCw3.js +0 -54
  313. package/dist/esm/context-bridge-DJMgrCw3.js +0 -54
  314. package/dist/sekiui/p-063951fe.entry.js +0 -1
  315. package/dist/sekiui/p-326909c5.entry.js +0 -1
  316. package/dist/sekiui/p-3511d6e5.entry.js +0 -1
  317. package/dist/sekiui/p-4253845a.entry.js +0 -1
  318. package/dist/sekiui/p-565acaf2.entry.js +0 -1
  319. package/dist/sekiui/p-5a55a239.entry.js +0 -1
  320. package/dist/sekiui/p-5fd3b090.entry.js +0 -1
  321. package/dist/sekiui/p-6466865a.entry.js +0 -1
  322. package/dist/sekiui/p-9324d212.entry.js +0 -1
  323. package/dist/sekiui/p-959fef36.entry.js +0 -1
  324. package/dist/sekiui/p-DJMgrCw3.js +0 -1
  325. package/dist/sekiui/p-a55bc3d3.entry.js +0 -1
  326. package/dist/sekiui/p-ab56de7a.entry.js +0 -1
  327. package/dist/sekiui/p-ad62e316.entry.js +0 -1
  328. package/dist/sekiui/p-b8d3aa31.entry.js +0 -1
  329. package/dist/sekiui/p-b99c6433.entry.js +0 -1
  330. package/dist/sekiui/p-c15c21b4.entry.js +0 -1
  331. package/dist/sekiui/p-c529a6b8.entry.js +0 -1
  332. package/dist/sekiui/p-c99961a7.entry.js +0 -1
  333. package/dist/sekiui/p-d61319d6.entry.js +0 -1
  334. package/dist/sekiui/p-da9b3eaa.entry.js +0 -1
  335. package/dist/sekiui/p-eb50f8d5.entry.js +0 -1
  336. package/dist/sekiui/p-f886fe62.entry.js +0 -1
  337. package/dist/sekiui/p-fc288df2.entry.js +0 -1
@@ -54,8 +54,12 @@ export declare class SekiDrawer {
54
54
  * event shape so a consumer can listen to one event name across every overlay.
55
55
  */
56
56
  sekiOpenChange: EventEmitter<boolean>;
57
+ /**
58
+ * Internal: notifies seki-drawer-content that `_drawerContext` changed. Not
59
+ * part of the public API; listen to `sekiOpenChange` instead.
60
+ */
61
+ drawerContextChange: EventEmitter<void>;
57
62
  componentWillLoad(): void;
58
- componentDidLoad(): void;
59
63
  handleOpenPropChange(newValue: boolean): void;
60
64
  /**
61
65
  * Opens the drawer
@@ -2,7 +2,8 @@ export declare class SekiFieldLabel {
2
2
  el: HTMLElement;
3
3
  /**
4
4
  * ID of the form control this label is for
5
- * Sets the `for` attribute on the label element
5
+ * Resolved in the label's own root node (not this component's shadow root), so it
6
+ * reaches light-DOM controls. Falls back to the control nested in the label.
6
7
  */
7
8
  htmlFor?: string;
8
9
  /**
@@ -10,5 +11,12 @@ export declare class SekiFieldLabel {
10
11
  * Displays a required indicator (*) after the label text
11
12
  */
12
13
  required: boolean;
14
+ private binding?;
15
+ onForChange(): void;
16
+ /** Forward clicks to the labelled control (see utils/label-association.ts). */
17
+ onClick(event: MouseEvent): void;
18
+ connectedCallback(): void;
19
+ componentDidLoad(): void;
20
+ disconnectedCallback(): void;
13
21
  render(): any;
14
22
  }
@@ -10,8 +10,10 @@
10
10
  export declare class SekiLabel {
11
11
  el: HTMLElement;
12
12
  /**
13
- * The ID of the form element this label is associated with.
14
- * Maps to the `htmlFor` attribute on the inner `<label>` element.
13
+ * The ID of the form element this label is associated with. Resolved in the
14
+ * label's own root node (document or shadow root), not in this component's
15
+ * shadow root, so it reaches light-DOM controls. Without it, the first control
16
+ * nested inside the label is used.
15
17
  */
16
18
  for?: string;
17
19
  /**
@@ -24,5 +26,12 @@ export declare class SekiLabel {
24
26
  * @default false
25
27
  */
26
28
  disabled?: boolean;
29
+ private binding?;
30
+ onForChange(): void;
31
+ /** Forward clicks to the labelled control (see utils/label-association.ts). */
32
+ onClick(event: MouseEvent): void;
33
+ connectedCallback(): void;
34
+ componentDidLoad(): void;
35
+ disconnectedCallback(): void;
27
36
  render(): any;
28
37
  }
@@ -9,7 +9,11 @@ import type { PopoverSide, PopoverAlign } from './seki-popover';
9
9
  export declare class SekiPopoverContent {
10
10
  el: HTMLElement;
11
11
  private contentRef?;
12
- private popoverEl?;
12
+ private popoverConsumer;
13
+ /**
14
+ * Re-read the parent's context. Runs once on connect (picking up a popover
15
+ * that is already open) and on every publish.
16
+ */
13
17
  private onPopoverOpenChange;
14
18
  /**
15
19
  * Override side from parent
@@ -34,8 +38,7 @@ export declare class SekiPopoverContent {
34
38
  };
35
39
  _actualSide: PopoverSide;
36
40
  private getContext;
37
- componentWillRender(): void;
38
- componentDidLoad(): void;
41
+ connectedCallback(): void;
39
42
  componentDidRender(): void;
40
43
  private updatePosition;
41
44
  disconnectedCallback(): void;
@@ -57,10 +57,16 @@ export declare class SekiPopover {
57
57
  * Emitted when open state changes
58
58
  */
59
59
  sekiOpenChange: EventEmitter<boolean>;
60
+ /**
61
+ * Internal: notifies popover parts that `_popoverContext` changed. Not part
62
+ * of the public API; listen to `sekiOpenChange` instead.
63
+ */
64
+ popoverContextChange: EventEmitter<void>;
60
65
  private clickOutsideHandler?;
61
66
  private clickOutsideTimeout?;
62
67
  componentWillLoad(): void;
63
68
  openChanged(newValue: boolean): void;
69
+ placementChanged(): void;
64
70
  /**
65
71
  * Open the popover
66
72
  */
@@ -79,8 +85,8 @@ export declare class SekiPopover {
79
85
  private setupClickOutside;
80
86
  private removeClickOutside;
81
87
  private getContext;
88
+ private publish;
82
89
  componentDidLoad(): void;
83
- componentDidUpdate(): void;
84
90
  disconnectedCallback(): void;
85
91
  render(): any;
86
92
  }
@@ -74,6 +74,14 @@ export declare class SekiSelect {
74
74
  handleIsOpenChange(): void;
75
75
  handleInternalValueChange(): void;
76
76
  handleDisabledChange(): void;
77
+ /**
78
+ * The trigger's label comes from the registered options, so registering an
79
+ * option must notify the parts. Before #323 this was only a silent property
80
+ * write in componentDidRender, and a trigger that rendered before the
81
+ * selected option registered stayed on the placeholder.
82
+ */
83
+ handleRegisteredOptionsChange(): void;
84
+ private registrationPublishQueued;
77
85
  formResetCallback(): void;
78
86
  formDisabledCallback(disabled: boolean): void;
79
87
  formStateRestoreCallback(state: FormControlState): void;
@@ -5,9 +5,10 @@ export declare class SekiSelectContent {
5
5
  el: HTMLElement;
6
6
  forceUpdate: number;
7
7
  private scrollContainerRef?;
8
- componentDidLoad(): void;
8
+ private selectConsumer;
9
+ connectedCallback(): void;
9
10
  disconnectedCallback(): void;
10
- private handleParentOpenChange;
11
+ private handleParentContextChange;
11
12
  /** Scroll to make an option visible */
12
13
  scrollToOption(optionId: string): Promise<void>;
13
14
  private getSelectContext;
@@ -20,10 +20,16 @@ export declare class SekiSelectOption {
20
20
  value: string | number;
21
21
  }>;
22
22
  private get optionId();
23
- private hasRegistered;
24
- private contextSubscription;
25
- componentDidLoad(): void;
23
+ /**
24
+ * The registerOption function this option last registered through. It is a
25
+ * stable per-select-instance function, so comparing it tells "already
26
+ * registered with this select" apart from "the select published its context
27
+ * for the first time" or "moved to a different select".
28
+ */
29
+ private registeredVia?;
30
+ private selectConsumer;
26
31
  connectedCallback(): void;
32
+ componentDidLoad(): void;
27
33
  disconnectedCallback(): void;
28
34
  /**
29
35
  * Refresh aria-selected/data-selected/data-focused directly on the
@@ -6,11 +6,17 @@ export declare class SekiSelectTrigger {
6
6
  el: HTMLElement;
7
7
  forceUpdate: number;
8
8
  private buttonRef?;
9
- private contextSubscription;
10
- componentDidLoad(): void;
9
+ private selectConsumer;
10
+ connectedCallback(): void;
11
11
  disconnectedCallback(): void;
12
- private handleParentOpenChange;
13
- private handleParentValueChange;
12
+ /**
13
+ * Listeners follow the button element itself: the button only exists once a
14
+ * context is available (the first render may be the "Loading..." fallback
15
+ * when this trigger upgrades before its seki-select), so binding once in
16
+ * componentDidLoad could miss it entirely.
17
+ */
18
+ private setButtonRef;
19
+ private handleParentContextChange;
14
20
  private handleButtonClick;
15
21
  private handleButtonKeyDown;
16
22
  private getSelectContext;
@@ -21,12 +21,16 @@ export declare class SekiSheetContent {
21
21
  * seki-sheet parent (e.g. mounted standalone).
22
22
  */
23
23
  _isOpen: boolean;
24
- private sheetEl?;
24
+ private sheetConsumer;
25
25
  private handleCloseClick;
26
- private onSheetOpenChange;
26
+ /**
27
+ * Re-read the parent's open state. Runs once on connect (picking up a sheet
28
+ * that is already open, e.g. `<seki-sheet open>`) and on every publish.
29
+ */
27
30
  private syncOpenState;
28
- componentWillLoad(): void;
29
- componentDidLoad(): void;
31
+ connectedCallback(): void;
30
32
  disconnectedCallback(): void;
33
+ /** Propagate the side attribute to the parent for CSS targeting. */
34
+ propagateSide(): void;
31
35
  render(): any;
32
36
  }
@@ -45,8 +45,12 @@ export declare class SekiSheet {
45
45
  * event shape so a consumer can listen to one event name across every overlay.
46
46
  */
47
47
  sekiOpenChange: EventEmitter<boolean>;
48
+ /**
49
+ * Internal: notifies seki-sheet-content that `_sheetContext` changed. Not
50
+ * part of the public API; listen to `sekiOpenChange` instead.
51
+ */
52
+ sheetContextChange: EventEmitter<void>;
48
53
  componentWillLoad(): void;
49
- componentDidLoad(): void;
50
54
  handleOpenPropChange(newValue: boolean): void;
51
55
  /**
52
56
  * Opens the sheet
@@ -18,7 +18,7 @@ import { CarouselContext } from "./components/carousel/seki-carousel";
18
18
  import { ChartData, ChartOptions, ChartType } from "./components/chart/chart-types";
19
19
  import { ChartLegendConfig } from "./components/chart-legend/seki-chart-legend";
20
20
  import { ComboboxChangeEventDetail, ComboboxCustomValueEventDetail, ComboboxEmptyReason, ComboboxItem, ComboboxMultiSelectDisplay, ComboboxSearchEventDetail, ComboboxValue } from "./utils/combobox";
21
- import { ColumnDef, ColumnReorderDetail, ColumnResizeDetail, ColumnsChangeDetail, FilterChangeDetail, FilterValue, PageChangeDetail, RowClickDetail, RowExpandDetail, SelectionChangeDetail, SortChangeDetail } from "./components/data-table/interfaces";
21
+ import { ColumnDef, ColumnReorderDetail, ColumnResizeDetail, ColumnsChangeDetail, FetchDataCallback, FilterChangeDetail, FilterValue, PageChangeDetail, RenderExpandedRowCallback, RowClickDetail, RowExpandDetail, SelectionChangeDetail, SortChangeDetail } from "./components/data-table/interfaces";
22
22
  import { DatePickerMode, DateRange as DateRange1 } from "./components/date-picker/seki-date-picker";
23
23
  import { DrawerDirection } from "./components/drawer/seki-drawer-content";
24
24
  import { DropdownMenuAlign, DropdownMenuSide } from "./components/dropdown-menu/seki-dropdown-menu";
@@ -58,7 +58,7 @@ export { CarouselContext } from "./components/carousel/seki-carousel";
58
58
  export { ChartData, ChartOptions, ChartType } from "./components/chart/chart-types";
59
59
  export { ChartLegendConfig } from "./components/chart-legend/seki-chart-legend";
60
60
  export { ComboboxChangeEventDetail, ComboboxCustomValueEventDetail, ComboboxEmptyReason, ComboboxItem, ComboboxMultiSelectDisplay, ComboboxSearchEventDetail, ComboboxValue } from "./utils/combobox";
61
- export { ColumnDef, ColumnReorderDetail, ColumnResizeDetail, ColumnsChangeDetail, FilterChangeDetail, FilterValue, PageChangeDetail, RowClickDetail, RowExpandDetail, SelectionChangeDetail, SortChangeDetail } from "./components/data-table/interfaces";
61
+ export { ColumnDef, ColumnReorderDetail, ColumnResizeDetail, ColumnsChangeDetail, FetchDataCallback, FilterChangeDetail, FilterValue, PageChangeDetail, RenderExpandedRowCallback, RowClickDetail, RowExpandDetail, SelectionChangeDetail, SortChangeDetail } from "./components/data-table/interfaces";
62
62
  export { DatePickerMode, DateRange as DateRange1 } from "./components/date-picker/seki-date-picker";
63
63
  export { DrawerDirection } from "./components/drawer/seki-drawer-content";
64
64
  export { DropdownMenuAlign, DropdownMenuSide } from "./components/dropdown-menu/seki-dropdown-menu";
@@ -1449,6 +1449,11 @@ export namespace Components {
1449
1449
  * @default false
1450
1450
  */
1451
1451
  "expandable": boolean;
1452
+ /**
1453
+ * Callback to fetch data. Set it as a JS property. Assigning or replacing it (re)loads the table. Must be a
1454
+ * @Prop : in the lazy-loader build only decorated members are proxied from the host element to the instance.
1455
+ */
1456
+ "fetchData"?: FetchDataCallback;
1452
1457
  /**
1453
1458
  * Get current filter state
1454
1459
  */
@@ -1485,6 +1490,11 @@ export namespace Components {
1485
1490
  * Refresh data
1486
1491
  */
1487
1492
  "refresh": () => Promise<void>;
1493
+ /**
1494
+ * Callback to render expanded row content (must be a
1495
+ * @Prop , see fetchData)
1496
+ */
1497
+ "renderExpandedRow"?: RenderExpandedRowCallback;
1488
1498
  /**
1489
1499
  * Fixed row height for virtualization
1490
1500
  * @default 48
@@ -2008,7 +2018,7 @@ export namespace Components {
2008
2018
  }
2009
2019
  interface SekiFieldLabel {
2010
2020
  /**
2011
- * ID of the form control this label is for Sets the `for` attribute on the label element
2021
+ * ID of the form control this label is for Resolved in the label's own root node (not this component's shadow root), so it reaches light-DOM controls. Falls back to the control nested in the label.
2012
2022
  */
2013
2023
  "htmlFor"?: string;
2014
2024
  /**
@@ -2359,7 +2369,7 @@ export namespace Components {
2359
2369
  */
2360
2370
  "disabled"?: boolean;
2361
2371
  /**
2362
- * The ID of the form element this label is associated with. Maps to the `htmlFor` attribute on the inner `<label>` element.
2372
+ * The ID of the form element this label is associated with. Resolved in the label's own root node (document or shadow root), not in this component's shadow root, so it reaches light-DOM controls. Without it, the first control nested inside the label is used.
2363
2373
  */
2364
2374
  "for"?: string;
2365
2375
  /**
@@ -4710,6 +4720,7 @@ declare global {
4710
4720
  };
4711
4721
  interface HTMLSekiAlertDialogElementEventMap {
4712
4722
  "sekiOpenChange": boolean;
4723
+ "sekiContextChange": void;
4713
4724
  }
4714
4725
  /**
4715
4726
  * Alert Dialog root component for confirmation dialogs
@@ -5480,6 +5491,7 @@ declare global {
5480
5491
  };
5481
5492
  interface HTMLSekiCollapsibleElementEventMap {
5482
5493
  "sekiOpenChange": boolean;
5494
+ "sekiContextChange": void;
5483
5495
  }
5484
5496
  interface HTMLSekiCollapsibleElement extends Components.SekiCollapsible, HTMLStencilElement {
5485
5497
  addEventListener<K extends keyof HTMLSekiCollapsibleElementEventMap>(type: K, listener: (this: HTMLSekiCollapsibleElement, ev: SekiCollapsibleCustomEvent<HTMLSekiCollapsibleElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -5576,6 +5588,7 @@ declare global {
5576
5588
  interface HTMLSekiCommandElementEventMap {
5577
5589
  "sekiValueChange": string;
5578
5590
  "sekiSelect": string;
5591
+ "sekiContextChange": void;
5579
5592
  }
5580
5593
  /**
5581
5594
  * Command root component - command palette for navigation
@@ -5775,6 +5788,7 @@ declare global {
5775
5788
  };
5776
5789
  interface HTMLSekiDialogElementEventMap {
5777
5790
  "sekiOpenChange": boolean;
5791
+ "sekiContextChange": void;
5778
5792
  }
5779
5793
  /**
5780
5794
  * Dialog root component for modal dialogs
@@ -5927,6 +5941,7 @@ declare global {
5927
5941
  "drawerClose": void;
5928
5942
  "drawerSnap": { point: number };
5929
5943
  "sekiOpenChange": boolean;
5944
+ "sekiContextChange": void;
5930
5945
  }
5931
5946
  /**
5932
5947
  * seki-drawer: Mobile-friendly drawer component with swipe gestures
@@ -7093,6 +7108,7 @@ declare global {
7093
7108
  };
7094
7109
  interface HTMLSekiPopoverElementEventMap {
7095
7110
  "sekiOpenChange": boolean;
7111
+ "sekiContextChange": void;
7096
7112
  }
7097
7113
  /**
7098
7114
  * Popover component - floating content triggered by click
@@ -7388,6 +7404,7 @@ declare global {
7388
7404
  "sheetOpen": void;
7389
7405
  "sheetClose": void;
7390
7406
  "sekiOpenChange": boolean;
7407
+ "sekiContextChange": void;
7391
7408
  }
7392
7409
  /**
7393
7410
  * seki-sheet: Root sheet component (slide-out panel)
@@ -8350,6 +8367,10 @@ declare namespace LocalJSX {
8350
8367
  * @default false
8351
8368
  */
8352
8369
  "defaultOpen"?: boolean;
8370
+ /**
8371
+ * Internal: notifies alert dialog parts that `_alertDialogContext` changed. Not part of the public API; listen to `sekiOpenChange` instead.
8372
+ */
8373
+ "onSekiContextChange"?: (event: SekiAlertDialogCustomEvent<void>) => void;
8353
8374
  /**
8354
8375
  * Emitted when open state changes
8355
8376
  */
@@ -9308,6 +9329,10 @@ declare namespace LocalJSX {
9308
9329
  * @default false
9309
9330
  */
9310
9331
  "disabled"?: boolean;
9332
+ /**
9333
+ * Internal: notifies collapsible parts that `_collapsibleContext` changed. Not part of the public API; listen to `sekiOpenChange` instead.
9334
+ */
9335
+ "onSekiContextChange"?: (event: SekiCollapsibleCustomEvent<void>) => void;
9311
9336
  /**
9312
9337
  * Emitted when open state changes
9313
9338
  */
@@ -9476,6 +9501,10 @@ declare namespace LocalJSX {
9476
9501
  * @default true
9477
9502
  */
9478
9503
  "filter"?: boolean;
9504
+ /**
9505
+ * Internal: notifies command parts (input, items, groups, empty state) that `_commandContext` changed. Not part of the public API; listen to `sekiValueChange` instead.
9506
+ */
9507
+ "onSekiContextChange"?: (event: SekiCommandCustomEvent<void>) => void;
9479
9508
  /**
9480
9509
  * Emitted when an item is selected
9481
9510
  */
@@ -9641,6 +9670,11 @@ declare namespace LocalJSX {
9641
9670
  * @default false
9642
9671
  */
9643
9672
  "expandable"?: boolean;
9673
+ /**
9674
+ * Callback to fetch data. Set it as a JS property. Assigning or replacing it (re)loads the table. Must be a
9675
+ * @Prop : in the lazy-loader build only decorated members are proxied from the host element to the instance.
9676
+ */
9677
+ "fetchData"?: FetchDataCallback;
9644
9678
  /**
9645
9679
  * Show loading state
9646
9680
  * @default false
@@ -9697,6 +9731,11 @@ declare namespace LocalJSX {
9697
9731
  * @default '[25, 50, 100]'
9698
9732
  */
9699
9733
  "pageSizeOptions"?: string | number[];
9734
+ /**
9735
+ * Callback to render expanded row content (must be a
9736
+ * @Prop , see fetchData)
9737
+ */
9738
+ "renderExpandedRow"?: RenderExpandedRowCallback;
9700
9739
  /**
9701
9740
  * Fixed row height for virtualization
9702
9741
  * @default 48
@@ -9839,6 +9878,10 @@ declare namespace LocalJSX {
9839
9878
  * @default true
9840
9879
  */
9841
9880
  "modal"?: boolean;
9881
+ /**
9882
+ * Internal: notifies dialog parts (content, overlay, title, description) that `_dialogContext` changed. Not part of the public API; listen to `sekiOpenChange` instead.
9883
+ */
9884
+ "onSekiContextChange"?: (event: SekiDialogCustomEvent<void>) => void;
9842
9885
  /**
9843
9886
  * Emitted when open state changes
9844
9887
  */
@@ -9950,6 +9993,10 @@ declare namespace LocalJSX {
9950
9993
  * Emitted when the drawer snaps to a point
9951
9994
  */
9952
9995
  "onDrawerSnap"?: (event: SekiDrawerCustomEvent<{ point: number }>) => void;
9996
+ /**
9997
+ * Internal: notifies seki-drawer-content that `_drawerContext` changed. Not part of the public API; listen to `sekiOpenChange` instead.
9998
+ */
9999
+ "onSekiContextChange"?: (event: SekiDrawerCustomEvent<void>) => void;
9953
10000
  /**
9954
10001
  * Emitted whenever the open state changes. Matches the dialog/popover/collapsible event shape so a consumer can listen to one event name across every overlay.
9955
10002
  */
@@ -10225,7 +10272,7 @@ declare namespace LocalJSX {
10225
10272
  }
10226
10273
  interface SekiFieldLabel {
10227
10274
  /**
10228
- * ID of the form control this label is for Sets the `for` attribute on the label element
10275
+ * ID of the form control this label is for Resolved in the label's own root node (not this component's shadow root), so it reaches light-DOM controls. Falls back to the control nested in the label.
10229
10276
  */
10230
10277
  "htmlFor"?: string;
10231
10278
  /**
@@ -10628,7 +10675,7 @@ declare namespace LocalJSX {
10628
10675
  */
10629
10676
  "disabled"?: boolean;
10630
10677
  /**
10631
- * The ID of the form element this label is associated with. Maps to the `htmlFor` attribute on the inner `<label>` element.
10678
+ * The ID of the form element this label is associated with. Resolved in the label's own root node (document or shadow root), not in this component's shadow root, so it reaches light-DOM controls. Without it, the first control nested inside the label is used.
10632
10679
  */
10633
10680
  "for"?: string;
10634
10681
  /**
@@ -11424,6 +11471,10 @@ declare namespace LocalJSX {
11424
11471
  * @default false
11425
11472
  */
11426
11473
  "defaultOpen"?: boolean;
11474
+ /**
11475
+ * Internal: notifies popover parts that `_popoverContext` changed. Not part of the public API; listen to `sekiOpenChange` instead.
11476
+ */
11477
+ "onSekiContextChange"?: (event: SekiPopoverCustomEvent<void>) => void;
11427
11478
  /**
11428
11479
  * Emitted when open state changes
11429
11480
  */
@@ -11864,6 +11915,10 @@ declare namespace LocalJSX {
11864
11915
  * @default false
11865
11916
  */
11866
11917
  "defaultOpen"?: boolean;
11918
+ /**
11919
+ * Internal: notifies seki-sheet-content that `_sheetContext` changed. Not part of the public API; listen to `sekiOpenChange` instead.
11920
+ */
11921
+ "onSekiContextChange"?: (event: SekiSheetCustomEvent<void>) => void;
11867
11922
  /**
11868
11923
  * Emitted whenever the open state changes. Matches the dialog/popover/collapsible event shape so a consumer can listen to one event name across every overlay.
11869
11924
  */
@@ -3,10 +3,25 @@
3
3
  *
4
4
  * Generalizes the "parent publishes state onto its host element + child
5
5
  * subscribes via closest()" pattern used by compound components (select,
6
- * toggle-group, combobox, ...). Each parent calls publishContext() from its
7
- * updateContextOnElement()-equivalent method; each child calls
8
- * subscribeToContextChange() once in componentDidLoad() and the returned
9
- * unsubscribe() in disconnectedCallback().
6
+ * toggle-group, combobox, dialog, popover, ...).
7
+ *
8
+ * Parent (provider) contract:
9
+ * - call publishContext() from componentWillLoad(), so the context exists
10
+ * before any child renders for the first time, and
11
+ * - call it again on every state change, including changes that arrive as a
12
+ * @Prop assignment (@Watch) rather than through a @Method or user input.
13
+ *
14
+ * Child (consumer) contract — use a ContextConsumer:
15
+ * - call connect(this.el) from connectedCallback() (runs before the first
16
+ * render, and again after the element is moved to a new parent), and
17
+ * - call disconnect() from disconnectedCallback().
18
+ * connect() invokes the callback once immediately, so a child that
19
+ * upgrades after its parent already published still starts from the current
20
+ * state; a child that upgrades before its parent (one-module-per-tag
21
+ * loading, #314) hears the parent's first publish from componentWillLoad().
22
+ *
23
+ * subscribeToContextChange() is the older listener-only form (no immediate
24
+ * read, light-DOM closest() only); prefer ContextConsumer for new code.
10
25
  *
11
26
  * Extracted after the same bug (child freezes at mount-time state because
12
27
  * nothing told it the parent changed) was independently fixed three times
@@ -43,3 +58,52 @@ export declare function subscribeToContextChange(el: HTMLElement, parentSelector
43
58
  parent: HTMLElement | null;
44
59
  unsubscribe: () => void;
45
60
  };
61
+ /**
62
+ * Nearest ancestor matching `selector`, continuing past shadow roots: when the
63
+ * element's own tree has no match, the search resumes from the shadow host.
64
+ * This lets a part rendered inside another component's shadow tree still find
65
+ * the provider that wraps that component.
66
+ */
67
+ export declare function findContextProvider(el: Element, selector: string): HTMLElement | null;
68
+ /**
69
+ * Child-side: tracks one provider (see findContextProvider) for a part.
70
+ *
71
+ * private dialog = new ContextConsumer<DialogContext>('seki-dialog', '_dialogContext', () => this.sync());
72
+ * connectedCallback() { this.dialog.connect(this.el); }
73
+ * disconnectedCallback() { this.dialog.disconnect(); }
74
+ *
75
+ * connect() finds the provider, starts listening for its context-change
76
+ * notifications and calls `onChange` once right away, so the part starts from
77
+ * whatever is already published. `parent` and `context` are already set when
78
+ * that first call happens. Calling connect() from connectedCallback runs it
79
+ * before the first render and again after the part is moved to another
80
+ * provider.
81
+ *
82
+ * `onChange` gets no event payload by design (see SEKI_CONTEXT_CHANGE_EVENT):
83
+ * it reads the live `context`. Notifications bubbling up from a nested
84
+ * provider are ignored; only events dispatched by this part's own provider
85
+ * host (or retargeted to it from that host's shadow tree) count.
86
+ *
87
+ * Works whether or not the provider element has been upgraded yet: the
88
+ * listener sits on the element itself, so the provider's first
89
+ * publishContext() from componentWillLoad() reaches it.
90
+ */
91
+ export declare class ContextConsumer<T> {
92
+ private readonly parentSelector;
93
+ private readonly propertyName;
94
+ private readonly onChange;
95
+ private provider;
96
+ constructor(parentSelector: string, propertyName: string, onChange: (context: T | null) => void);
97
+ /** The provider element found by the last connect(), or null. */
98
+ get parent(): HTMLElement | null;
99
+ /** The provider's current context, or null when there is none yet. */
100
+ get context(): T | null;
101
+ connect(host: HTMLElement): void;
102
+ disconnect(): void;
103
+ private handleEvent;
104
+ }
105
+ /**
106
+ * Read a context object a provider published with publishContext(). Returns
107
+ * null when there is no provider or it has not published yet.
108
+ */
109
+ export declare function readContext<T>(parent: Element | null | undefined, propertyName: string): T | null;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Label association for `seki-label` and `seki-field-label`.
3
+ *
4
+ * ## Why this exists
5
+ *
6
+ * Both labels render their text inside a shadow root. A native `<label for>`
7
+ * resolves its `for` id inside the tree the `<label>` lives in, so a `<label>`
8
+ * in our shadow root can never reach a control in the page's light DOM: clicks
9
+ * did nothing and the control had no accessible name (#329).
10
+ *
11
+ * The host element (`<seki-label>`) *does* live in the consumer's tree, so the
12
+ * wiring is done from the host in script, resolving the id against
13
+ * `host.getRootNode()` (the label's own root, which is where an author expects
14
+ * `for` to point, also when the label sits inside another component's shadow
15
+ * root together with its control).
16
+ *
17
+ * ## Behaviour
18
+ *
19
+ * - **Activation**: a click on the label forwards to the target the way a native
20
+ * label would. Toggles (checkbox, switch, radio) are clicked, text-like
21
+ * controls are focused. A click that originated on the control itself (the
22
+ * wrapping form `<seki-label><seki-checkbox/> Text</seki-label>`) is ignored so
23
+ * the control never toggles twice.
24
+ * - **Accessible name**: a shadow-DOM control hides its real focusable element
25
+ * (`<button role="checkbox">`, `<input>`, ...) inside its own shadow root, and
26
+ * an `aria-labelledby` id reference cannot cross a shadow boundary, so
27
+ * pointing the host at the label would not name the inner element. SekiUI
28
+ * controls all forward their `aria-label` attribute to that inner element, so
29
+ * for them the label text is passed through as `aria-label`. For native
30
+ * elements the reference does resolve, so we use `aria-labelledby` and the
31
+ * name tracks the label's live content.
32
+ * Anything the author set explicitly (`aria-label`, `aria-labelledby`) is
33
+ * never overwritten; we only manage values we wrote ourselves, tracked with a
34
+ * marker attribute so they can be updated and cleaned up.
35
+ * `ElementInternals.ariaLabelledByElements` is deliberately not used: it is
36
+ * unavailable in Firefox and older Safari, and cannot reach the inner element
37
+ * of a shadow-DOM control either.
38
+ */
39
+ export declare class LabelBinding {
40
+ private readonly host;
41
+ private readonly getFor;
42
+ private target;
43
+ private observer?;
44
+ constructor(host: HTMLElement, getFor: () => string | undefined);
45
+ /** Resolve the control this label is for, in the label's own root. */
46
+ resolveTarget(): HTMLElement | null;
47
+ /** Label text, without the text of a control nested inside the label. */
48
+ private labelText;
49
+ /** (Re)apply the accessible name. Call on load, `for` change and slot change. */
50
+ sync(): void;
51
+ /** Remove anything this binding wrote on the current target. */
52
+ release(): void;
53
+ /** Re-sync when the control is added after the label (async rendering). */
54
+ observe(): void;
55
+ disconnect(): void;
56
+ /** Forward a click on the label to its control, as a native label would. */
57
+ handleClick(event: Event): void;
58
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sekiui/elements",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Modern, accessible Web Components with shadcn/ui-inspired design",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1,54 +0,0 @@
1
- /**
2
- * Context Bridge Utility
3
- *
4
- * Generalizes the "parent publishes state onto its host element + child
5
- * subscribes via closest()" pattern used by compound components (select,
6
- * toggle-group, combobox, ...). Each parent calls publishContext() from its
7
- * updateContextOnElement()-equivalent method; each child calls
8
- * subscribeToContextChange() once in componentDidLoad() and the returned
9
- * unsubscribe() in disconnectedCallback().
10
- *
11
- * Extracted after the same bug (child freezes at mount-time state because
12
- * nothing told it the parent changed) was independently fixed three times
13
- * for select (#244/#253), toggle-group (#255/#257), and combobox (#258/#259).
14
- */
15
- /**
16
- * One event name shared by every compound-component family. Stencil's
17
- * @Event() emits with { bubbles: true, composed: true } by default, so a
18
- * nested compound (e.g. a toggle-group rendered inside a select) can cause an
19
- * inner parent's event to bubble past an outer parent's own children. This is
20
- * harmless today only because subscribeToContextChange()'s callback takes no
21
- * payload and every handler re-reads its own closest() parent's live context
22
- * rather than trusting event.detail — do not add a payload to this event or
23
- * that bubbling becomes a real cross-family bug.
24
- */
25
- const SEKI_CONTEXT_CHANGE_EVENT = 'sekiContextChange';
26
- /**
27
- * Parent-side: publish a fresh context object onto the host element and
28
- * notify subscribed children. Must assign a plain property, not a class
29
- * accessor of the same name — in the dist-custom-elements build the class
30
- * IS the host element, so an accessor collision throws (#254).
31
- */
32
- function publishContext(el, propertyName, context, emitter) {
33
- el[propertyName] = context;
34
- emitter.emit();
35
- }
36
- /**
37
- * Child-side: find the nearest ancestor matching parentSelector and listen
38
- * for context-change notifications. onChange is called with no payload by
39
- * design — children re-read the live context property via closest() rather
40
- * than trusting a stale event.detail snapshot. No-ops safely (null parent,
41
- * no-op unsubscribe) if no matching parent is found.
42
- */
43
- function subscribeToContextChange(el, parentSelector, onChange) {
44
- const parent = el.closest(parentSelector);
45
- if (parent) {
46
- parent.addEventListener(SEKI_CONTEXT_CHANGE_EVENT, onChange);
47
- }
48
- return {
49
- parent,
50
- unsubscribe: () => parent === null || parent === void 0 ? void 0 : parent.removeEventListener(SEKI_CONTEXT_CHANGE_EVENT, onChange),
51
- };
52
- }
53
-
54
- export { publishContext as p, subscribeToContextChange as s };