@sekiui/elements 0.0.81 → 0.0.83

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 (471) hide show
  1. package/dist/cdn/p-BgtjDG0h.js +45 -0
  2. package/dist/cdn/{p-BgpxFAwm.js → p-BuBiWSGh.js} +18 -3
  3. package/dist/cdn/{p-o_nleCju.js → p-Cs0DgQw5.js} +25 -8
  4. package/dist/cdn/p-D50kwTtW.js +160 -0
  5. package/dist/cdn/p-DuJp0Kp6.js +63 -0
  6. package/dist/cdn/seki-accordion-content.js +10 -8
  7. package/dist/cdn/seki-accordion-item.js +12 -10
  8. package/dist/cdn/seki-accordion-trigger.js +12 -10
  9. package/dist/cdn/seki-alert-dialog-action.js +1 -1
  10. package/dist/cdn/seki-alert-dialog-cancel.js +1 -1
  11. package/dist/cdn/seki-alert-dialog-content.js +23 -21
  12. package/dist/cdn/seki-alert-dialog.js +1 -1
  13. package/dist/cdn/seki-button.js +1 -1
  14. package/dist/cdn/seki-calendar.js +1 -1
  15. package/dist/cdn/seki-carousel-dots.js +3 -3
  16. package/dist/cdn/seki-carousel-next.js +3 -3
  17. package/dist/cdn/seki-carousel-previous.js +3 -3
  18. package/dist/cdn/seki-carousel.js +22 -4
  19. package/dist/cdn/seki-collapsible-content.js +9 -5
  20. package/dist/cdn/seki-combobox-item.js +9 -2
  21. package/dist/cdn/seki-command-group.js +9 -7
  22. package/dist/cdn/seki-context-menu-content.js +17 -15
  23. package/dist/cdn/seki-context-menu.js +11 -2
  24. package/dist/cdn/seki-data-table.js +19 -16
  25. package/dist/cdn/seki-date-picker.js +1 -1
  26. package/dist/cdn/seki-dialog-content.js +23 -21
  27. package/dist/cdn/seki-dialog-overlay.js +10 -8
  28. package/dist/cdn/seki-dialog.js +1 -1
  29. package/dist/cdn/seki-dropdown-menu-content.js +23 -68
  30. package/dist/cdn/seki-dropdown-menu-radio.js +11 -9
  31. package/dist/cdn/seki-dropdown-menu-trigger.js +11 -9
  32. package/dist/cdn/seki-dropdown-menu.js +11 -2
  33. package/dist/cdn/seki-menubar-content.js +24 -42
  34. package/dist/cdn/seki-menubar-radio.js +11 -9
  35. package/dist/cdn/seki-menubar-trigger.js +12 -10
  36. package/dist/cdn/seki-menubar.js +11 -2
  37. package/dist/cdn/seki-navigation-menu-content.js +8 -3
  38. package/dist/cdn/seki-navigation-menu-item.js +2 -2
  39. package/dist/cdn/seki-navigation-menu-link.js +8 -3
  40. package/dist/cdn/seki-navigation-menu-list.js +7 -2
  41. package/dist/cdn/seki-navigation-menu-trigger.js +3 -3
  42. package/dist/cdn/seki-navigation-menu.js +5 -5
  43. package/dist/cdn/seki-popover-content.js +20 -65
  44. package/dist/cdn/seki-popover.js +13 -3
  45. package/dist/cdn/seki-scroll-bar.js +6 -2
  46. package/dist/cdn/seki-select-option.js +29 -13
  47. package/dist/cdn/seki-select.js +79 -33
  48. package/dist/cdn/seki-sidebar-menu-sub.js +17 -16
  49. package/dist/cdn/seki-sidebar-provider.js +13 -4
  50. package/dist/cdn/seki-sidebar-rail.js +7 -2
  51. package/dist/cdn/seki-slider.js +36 -4
  52. package/dist/cdn/seki-spinner.js +2 -2
  53. package/dist/cdn/seki-table-body.js +1 -1
  54. package/dist/cdn/seki-table-caption.js +1 -1
  55. package/dist/cdn/seki-table-footer.js +1 -1
  56. package/dist/cdn/seki-table-header.js +1 -1
  57. package/dist/cdn/seki-table-row.js +2 -2
  58. package/dist/cdn/seki-table.js +1 -1
  59. package/dist/cdn/seki-tabs-content.js +12 -10
  60. package/dist/cdn/seki-tabs-list.js +2 -2
  61. package/dist/cdn/seki-tabs-trigger.js +12 -10
  62. package/dist/cdn/seki-tabs.js +2 -2
  63. package/dist/cdn/seki-textarea.js +1 -1
  64. package/dist/cdn/seki-toggle-group.js +1 -1
  65. package/dist/cdn/seki-toggle.js +1 -1
  66. package/dist/cdn/seki-tooltip.js +16 -3
  67. package/dist/cjs/ancestor-attrs-CnUfqtWw.js +47 -0
  68. package/dist/cjs/focus-trap-CFl79SjZ.js +165 -0
  69. package/dist/cjs/loader.cjs.js +1 -1
  70. package/dist/cjs/positioning-LQZBWMS6.js +65 -0
  71. package/dist/cjs/seki-accordion-content.cjs.entry.js +10 -8
  72. package/dist/cjs/seki-accordion-item.cjs.entry.js +12 -10
  73. package/dist/cjs/seki-accordion-trigger.cjs.entry.js +12 -10
  74. package/dist/cjs/seki-alert-dialog-action.cjs.entry.js +1 -1
  75. package/dist/cjs/seki-alert-dialog-cancel.cjs.entry.js +1 -1
  76. package/dist/cjs/seki-alert-dialog-content.cjs.entry.js +23 -21
  77. package/dist/cjs/seki-button.cjs.entry.js +1 -1
  78. package/dist/cjs/seki-calendar.cjs.entry.js +25 -8
  79. package/dist/cjs/seki-carousel-dots.cjs.entry.js +3 -3
  80. package/dist/cjs/seki-carousel-next.cjs.entry.js +3 -3
  81. package/dist/cjs/seki-carousel-previous.cjs.entry.js +3 -3
  82. package/dist/cjs/seki-carousel.cjs.entry.js +22 -4
  83. package/dist/cjs/seki-collapsible-content.cjs.entry.js +9 -5
  84. package/dist/cjs/seki-combobox-item.cjs.entry.js +9 -2
  85. package/dist/cjs/seki-command-group.cjs.entry.js +9 -7
  86. package/dist/cjs/seki-context-menu-content.cjs.entry.js +17 -15
  87. package/dist/cjs/seki-context-menu.cjs.entry.js +11 -2
  88. package/dist/cjs/seki-data-table.cjs.entry.js +19 -16
  89. package/dist/cjs/seki-dialog-content.cjs.entry.js +23 -21
  90. package/dist/cjs/seki-dialog-overlay.cjs.entry.js +10 -8
  91. package/dist/cjs/seki-dialog.cjs.entry.js +15 -2
  92. package/dist/cjs/seki-dropdown-menu-content.cjs.entry.js +23 -68
  93. package/dist/cjs/seki-dropdown-menu-radio.cjs.entry.js +11 -9
  94. package/dist/cjs/seki-dropdown-menu-trigger.cjs.entry.js +11 -9
  95. package/dist/cjs/seki-dropdown-menu.cjs.entry.js +11 -2
  96. package/dist/cjs/seki-menubar-content.cjs.entry.js +24 -42
  97. package/dist/cjs/seki-menubar-radio.cjs.entry.js +11 -9
  98. package/dist/cjs/seki-menubar-trigger.cjs.entry.js +12 -10
  99. package/dist/cjs/seki-menubar.cjs.entry.js +11 -2
  100. package/dist/cjs/seki-navigation-menu-content.cjs.entry.js +8 -3
  101. package/dist/cjs/seki-navigation-menu-item.cjs.entry.js +2 -2
  102. package/dist/cjs/seki-navigation-menu-link.cjs.entry.js +8 -3
  103. package/dist/cjs/seki-navigation-menu-list.cjs.entry.js +7 -2
  104. package/dist/cjs/seki-navigation-menu-trigger.cjs.entry.js +3 -3
  105. package/dist/cjs/seki-navigation-menu.cjs.entry.js +5 -5
  106. package/dist/cjs/seki-popover-content.cjs.entry.js +20 -65
  107. package/dist/cjs/seki-popover.cjs.entry.js +13 -3
  108. package/dist/cjs/seki-scroll-bar.cjs.entry.js +6 -2
  109. package/dist/cjs/seki-select-option.cjs.entry.js +29 -13
  110. package/dist/cjs/seki-select.cjs.entry.js +81 -30
  111. package/dist/cjs/seki-sidebar-menu-sub.cjs.entry.js +17 -16
  112. package/dist/cjs/seki-sidebar-provider.cjs.entry.js +13 -4
  113. package/dist/cjs/seki-sidebar-rail.cjs.entry.js +7 -2
  114. package/dist/cjs/seki-slider.cjs.entry.js +36 -1
  115. package/dist/cjs/seki-spinner.cjs.entry.js +2 -2
  116. package/dist/cjs/seki-table-body.cjs.entry.js +1 -1
  117. package/dist/cjs/seki-table-caption.cjs.entry.js +1 -1
  118. package/dist/cjs/seki-table-footer.cjs.entry.js +1 -1
  119. package/dist/cjs/seki-table-header.cjs.entry.js +1 -1
  120. package/dist/cjs/seki-table-row.cjs.entry.js +2 -2
  121. package/dist/cjs/seki-table.cjs.entry.js +1 -1
  122. package/dist/cjs/seki-tabs-content.cjs.entry.js +12 -10
  123. package/dist/cjs/seki-tabs-list.cjs.entry.js +2 -2
  124. package/dist/cjs/seki-tabs-trigger.cjs.entry.js +12 -10
  125. package/dist/cjs/seki-tabs.cjs.entry.js +2 -2
  126. package/dist/cjs/seki-textarea.cjs.entry.js +1 -1
  127. package/dist/cjs/seki-toggle-group.cjs.entry.js +1 -1
  128. package/dist/cjs/seki-toggle.cjs.entry.js +1 -1
  129. package/dist/cjs/seki-tooltip.cjs.entry.js +16 -3
  130. package/dist/cjs/sekiui.cjs.js +1 -1
  131. package/dist/collection/components/accordion/seki-accordion-content.js +10 -8
  132. package/dist/collection/components/accordion/seki-accordion-item.js +12 -10
  133. package/dist/collection/components/accordion/seki-accordion-trigger.js +12 -10
  134. package/dist/collection/components/alert-dialog/seki-alert-dialog-action.css +5 -5
  135. package/dist/collection/components/alert-dialog/seki-alert-dialog-cancel.css +4 -4
  136. package/dist/collection/components/alert-dialog/seki-alert-dialog-content.js +22 -20
  137. package/dist/collection/components/button/seki-button.css +9 -9
  138. package/dist/collection/components/calendar/seki-calendar.js +14 -5
  139. package/dist/collection/components/carousel/seki-carousel-dots.js +3 -3
  140. package/dist/collection/components/carousel/seki-carousel-next.js +3 -3
  141. package/dist/collection/components/carousel/seki-carousel-previous.js +3 -3
  142. package/dist/collection/components/carousel/seki-carousel.js +22 -4
  143. package/dist/collection/components/collapsible/seki-collapsible-content.js +9 -5
  144. package/dist/collection/components/combobox-item/seki-combobox-item.js +9 -2
  145. package/dist/collection/components/command/seki-command-group.js +9 -7
  146. package/dist/collection/components/context-menu/seki-context-menu-content.js +17 -15
  147. package/dist/collection/components/context-menu/seki-context-menu.js +11 -2
  148. package/dist/collection/components/data-table/seki-data-table.css +5 -5
  149. package/dist/collection/components/data-table/seki-data-table.js +18 -15
  150. package/dist/collection/components/dialog/seki-dialog-content.js +22 -20
  151. package/dist/collection/components/dialog/seki-dialog-overlay.js +10 -8
  152. package/dist/collection/components/dialog/seki-dialog.js +17 -1
  153. package/dist/collection/components/dropdown-menu/seki-dropdown-menu-content.js +23 -68
  154. package/dist/collection/components/dropdown-menu/seki-dropdown-menu-radio.js +11 -9
  155. package/dist/collection/components/dropdown-menu/seki-dropdown-menu-trigger.js +11 -9
  156. package/dist/collection/components/dropdown-menu/seki-dropdown-menu.js +11 -2
  157. package/dist/collection/components/menubar/seki-menubar-content.js +24 -42
  158. package/dist/collection/components/menubar/seki-menubar-radio.js +11 -9
  159. package/dist/collection/components/menubar/seki-menubar-trigger.js +12 -10
  160. package/dist/collection/components/menubar/seki-menubar.js +11 -2
  161. package/dist/collection/components/navigation-menu/seki-navigation-menu-content.css +1 -1
  162. package/dist/collection/components/navigation-menu/seki-navigation-menu-content.js +7 -2
  163. package/dist/collection/components/navigation-menu/seki-navigation-menu-item.js +2 -2
  164. package/dist/collection/components/navigation-menu/seki-navigation-menu-link.css +1 -1
  165. package/dist/collection/components/navigation-menu/seki-navigation-menu-link.js +7 -2
  166. package/dist/collection/components/navigation-menu/seki-navigation-menu-list.css +1 -1
  167. package/dist/collection/components/navigation-menu/seki-navigation-menu-list.js +6 -1
  168. package/dist/collection/components/navigation-menu/seki-navigation-menu-trigger.js +3 -3
  169. package/dist/collection/components/navigation-menu/seki-navigation-menu.js +5 -5
  170. package/dist/collection/components/popover/seki-popover-content.js +20 -65
  171. package/dist/collection/components/popover/seki-popover.js +13 -3
  172. package/dist/collection/components/scroll-area/seki-scroll-bar.css +5 -5
  173. package/dist/collection/components/scroll-area/seki-scroll-bar.js +5 -1
  174. package/dist/collection/components/select/seki-select.js +77 -30
  175. package/dist/collection/components/select-option/seki-select-option.js +29 -13
  176. package/dist/collection/components/sidebar/seki-sidebar-menu-sub.js +17 -16
  177. package/dist/collection/components/sidebar/seki-sidebar-provider.js +13 -4
  178. package/dist/collection/components/sidebar/seki-sidebar-rail.css +6 -6
  179. package/dist/collection/components/sidebar/seki-sidebar-rail.js +6 -1
  180. package/dist/collection/components/slider/seki-slider.js +36 -2
  181. package/dist/collection/components/spinner/seki-spinner.js +2 -2
  182. package/dist/collection/components/table/seki-table-body.js +1 -1
  183. package/dist/collection/components/table/seki-table-caption.js +1 -1
  184. package/dist/collection/components/table/seki-table-footer.js +1 -1
  185. package/dist/collection/components/table/seki-table-header.js +1 -1
  186. package/dist/collection/components/table/seki-table-row.js +2 -2
  187. package/dist/collection/components/table/seki-table.js +1 -1
  188. package/dist/collection/components/tabs/seki-tabs-content.js +12 -10
  189. package/dist/collection/components/tabs/seki-tabs-list.js +2 -2
  190. package/dist/collection/components/tabs/seki-tabs-trigger.js +12 -10
  191. package/dist/collection/components/tabs/seki-tabs.js +2 -2
  192. package/dist/collection/components/textarea/seki-textarea.js +1 -1
  193. package/dist/collection/components/toggle/seki-toggle.js +1 -1
  194. package/dist/collection/components/toggle-group/seki-toggle-group.js +1 -1
  195. package/dist/collection/components/tooltip/seki-tooltip.js +16 -3
  196. package/dist/collection/utils/ancestor-attrs.js +43 -0
  197. package/dist/collection/utils/calendar/date-utils.js +12 -4
  198. package/dist/collection/utils/dialog/focus-trap.js +110 -21
  199. package/dist/collection/utils/positioning.js +61 -0
  200. package/dist/components/p-BgtjDG0h.js +45 -0
  201. package/dist/components/{p-tgCyk_Am.js → p-C87BOunl.js} +18 -3
  202. package/dist/components/p-D50kwTtW.js +160 -0
  203. package/dist/components/{p-DKbSEP4m.js → p-DFfIiiRa.js} +25 -8
  204. package/dist/components/p-DuJp0Kp6.js +63 -0
  205. package/dist/components/seki-accordion-content.js +10 -8
  206. package/dist/components/seki-accordion-item.js +12 -10
  207. package/dist/components/seki-accordion-trigger.js +12 -10
  208. package/dist/components/seki-alert-dialog-action.js +1 -1
  209. package/dist/components/seki-alert-dialog-cancel.js +1 -1
  210. package/dist/components/seki-alert-dialog-content.js +23 -21
  211. package/dist/components/seki-alert-dialog.js +1 -1
  212. package/dist/components/seki-button.js +1 -1
  213. package/dist/components/seki-calendar.js +1 -1
  214. package/dist/components/seki-carousel-dots.js +3 -3
  215. package/dist/components/seki-carousel-next.js +3 -3
  216. package/dist/components/seki-carousel-previous.js +3 -3
  217. package/dist/components/seki-carousel.js +22 -4
  218. package/dist/components/seki-collapsible-content.js +9 -5
  219. package/dist/components/seki-combobox-item.js +9 -2
  220. package/dist/components/seki-command-group.js +9 -7
  221. package/dist/components/seki-context-menu-content.js +17 -15
  222. package/dist/components/seki-context-menu.js +11 -2
  223. package/dist/components/seki-data-table.js +19 -16
  224. package/dist/components/seki-date-picker.js +1 -1
  225. package/dist/components/seki-dialog-content.js +23 -21
  226. package/dist/components/seki-dialog-overlay.js +10 -8
  227. package/dist/components/seki-dialog.js +1 -1
  228. package/dist/components/seki-dropdown-menu-content.js +23 -68
  229. package/dist/components/seki-dropdown-menu-radio.js +11 -9
  230. package/dist/components/seki-dropdown-menu-trigger.js +11 -9
  231. package/dist/components/seki-dropdown-menu.js +11 -2
  232. package/dist/components/seki-menubar-content.js +24 -42
  233. package/dist/components/seki-menubar-radio.js +11 -9
  234. package/dist/components/seki-menubar-trigger.js +12 -10
  235. package/dist/components/seki-menubar.js +11 -2
  236. package/dist/components/seki-navigation-menu-content.js +8 -3
  237. package/dist/components/seki-navigation-menu-item.js +2 -2
  238. package/dist/components/seki-navigation-menu-link.js +8 -3
  239. package/dist/components/seki-navigation-menu-list.js +7 -2
  240. package/dist/components/seki-navigation-menu-trigger.js +3 -3
  241. package/dist/components/seki-navigation-menu.js +5 -5
  242. package/dist/components/seki-popover-content.js +20 -65
  243. package/dist/components/seki-popover.js +13 -3
  244. package/dist/components/seki-scroll-bar.js +6 -2
  245. package/dist/components/seki-select-option.js +29 -13
  246. package/dist/components/seki-select.js +79 -33
  247. package/dist/components/seki-sidebar-menu-sub.js +17 -16
  248. package/dist/components/seki-sidebar-provider.js +13 -4
  249. package/dist/components/seki-sidebar-rail.js +7 -2
  250. package/dist/components/seki-slider.js +36 -4
  251. package/dist/components/seki-spinner.js +2 -2
  252. package/dist/components/seki-table-body.js +1 -1
  253. package/dist/components/seki-table-caption.js +1 -1
  254. package/dist/components/seki-table-footer.js +1 -1
  255. package/dist/components/seki-table-header.js +1 -1
  256. package/dist/components/seki-table-row.js +2 -2
  257. package/dist/components/seki-table.js +1 -1
  258. package/dist/components/seki-tabs-content.js +12 -10
  259. package/dist/components/seki-tabs-list.js +2 -2
  260. package/dist/components/seki-tabs-trigger.js +12 -10
  261. package/dist/components/seki-tabs.js +2 -2
  262. package/dist/components/seki-textarea.js +1 -1
  263. package/dist/components/seki-toggle-group.js +1 -1
  264. package/dist/components/seki-toggle.js +1 -1
  265. package/dist/components/seki-tooltip.js +16 -3
  266. package/dist/esm/ancestor-attrs-BgtjDG0h.js +45 -0
  267. package/dist/esm/focus-trap-D50kwTtW.js +160 -0
  268. package/dist/esm/loader.js +1 -1
  269. package/dist/esm/positioning-DuJp0Kp6.js +63 -0
  270. package/dist/esm/seki-accordion-content.entry.js +10 -8
  271. package/dist/esm/seki-accordion-item.entry.js +12 -10
  272. package/dist/esm/seki-accordion-trigger.entry.js +12 -10
  273. package/dist/esm/seki-alert-dialog-action.entry.js +1 -1
  274. package/dist/esm/seki-alert-dialog-cancel.entry.js +1 -1
  275. package/dist/esm/seki-alert-dialog-content.entry.js +23 -21
  276. package/dist/esm/seki-button.entry.js +1 -1
  277. package/dist/esm/seki-calendar.entry.js +25 -8
  278. package/dist/esm/seki-carousel-dots.entry.js +3 -3
  279. package/dist/esm/seki-carousel-next.entry.js +3 -3
  280. package/dist/esm/seki-carousel-previous.entry.js +3 -3
  281. package/dist/esm/seki-carousel.entry.js +22 -4
  282. package/dist/esm/seki-collapsible-content.entry.js +9 -5
  283. package/dist/esm/seki-combobox-item.entry.js +9 -2
  284. package/dist/esm/seki-command-group.entry.js +9 -7
  285. package/dist/esm/seki-context-menu-content.entry.js +17 -15
  286. package/dist/esm/seki-context-menu.entry.js +11 -2
  287. package/dist/esm/seki-data-table.entry.js +19 -16
  288. package/dist/esm/seki-dialog-content.entry.js +23 -21
  289. package/dist/esm/seki-dialog-overlay.entry.js +10 -8
  290. package/dist/esm/seki-dialog.entry.js +15 -2
  291. package/dist/esm/seki-dropdown-menu-content.entry.js +23 -68
  292. package/dist/esm/seki-dropdown-menu-radio.entry.js +11 -9
  293. package/dist/esm/seki-dropdown-menu-trigger.entry.js +11 -9
  294. package/dist/esm/seki-dropdown-menu.entry.js +11 -2
  295. package/dist/esm/seki-menubar-content.entry.js +24 -42
  296. package/dist/esm/seki-menubar-radio.entry.js +11 -9
  297. package/dist/esm/seki-menubar-trigger.entry.js +12 -10
  298. package/dist/esm/seki-menubar.entry.js +11 -2
  299. package/dist/esm/seki-navigation-menu-content.entry.js +8 -3
  300. package/dist/esm/seki-navigation-menu-item.entry.js +2 -2
  301. package/dist/esm/seki-navigation-menu-link.entry.js +8 -3
  302. package/dist/esm/seki-navigation-menu-list.entry.js +7 -2
  303. package/dist/esm/seki-navigation-menu-trigger.entry.js +3 -3
  304. package/dist/esm/seki-navigation-menu.entry.js +5 -5
  305. package/dist/esm/seki-popover-content.entry.js +20 -65
  306. package/dist/esm/seki-popover.entry.js +13 -3
  307. package/dist/esm/seki-scroll-bar.entry.js +6 -2
  308. package/dist/esm/seki-select-option.entry.js +29 -13
  309. package/dist/esm/seki-select.entry.js +81 -30
  310. package/dist/esm/seki-sidebar-menu-sub.entry.js +17 -16
  311. package/dist/esm/seki-sidebar-provider.entry.js +13 -4
  312. package/dist/esm/seki-sidebar-rail.entry.js +7 -2
  313. package/dist/esm/seki-slider.entry.js +36 -1
  314. package/dist/esm/seki-spinner.entry.js +2 -2
  315. package/dist/esm/seki-table-body.entry.js +1 -1
  316. package/dist/esm/seki-table-caption.entry.js +1 -1
  317. package/dist/esm/seki-table-footer.entry.js +1 -1
  318. package/dist/esm/seki-table-header.entry.js +1 -1
  319. package/dist/esm/seki-table-row.entry.js +2 -2
  320. package/dist/esm/seki-table.entry.js +1 -1
  321. package/dist/esm/seki-tabs-content.entry.js +12 -10
  322. package/dist/esm/seki-tabs-list.entry.js +2 -2
  323. package/dist/esm/seki-tabs-trigger.entry.js +12 -10
  324. package/dist/esm/seki-tabs.entry.js +2 -2
  325. package/dist/esm/seki-textarea.entry.js +1 -1
  326. package/dist/esm/seki-toggle-group.entry.js +1 -1
  327. package/dist/esm/seki-toggle.entry.js +1 -1
  328. package/dist/esm/seki-tooltip.entry.js +16 -3
  329. package/dist/esm/sekiui.js +1 -1
  330. package/dist/sekiui/{p-40458a33.entry.js → p-01420aec.entry.js} +1 -1
  331. package/dist/sekiui/{p-9643e1d8.entry.js → p-021cb880.entry.js} +1 -1
  332. package/dist/sekiui/p-0ab43c7f.entry.js +1 -0
  333. package/dist/sekiui/p-14b6774a.entry.js +1 -0
  334. package/dist/sekiui/{p-d02efcf2.entry.js → p-1b8d2288.entry.js} +1 -1
  335. package/dist/sekiui/{p-67fffcd0.entry.js → p-1eb709fb.entry.js} +1 -1
  336. package/dist/sekiui/{p-24ea0d3d.entry.js → p-2de73747.entry.js} +1 -1
  337. package/dist/sekiui/p-32569d7d.entry.js +1 -0
  338. package/dist/sekiui/p-367d9a7f.entry.js +1 -0
  339. package/dist/sekiui/p-40c40d4f.entry.js +1 -0
  340. package/dist/sekiui/p-4572d290.entry.js +1 -0
  341. package/dist/sekiui/p-49024e9e.entry.js +1 -0
  342. package/dist/sekiui/{p-0c2344d1.entry.js → p-4bf8c2fa.entry.js} +1 -1
  343. package/dist/sekiui/p-4e60d2d0.entry.js +1 -0
  344. package/dist/sekiui/{p-5a853b23.entry.js → p-51b11242.entry.js} +1 -1
  345. package/dist/sekiui/{p-541f1dbb.entry.js → p-57e7685a.entry.js} +1 -1
  346. package/dist/sekiui/p-677a1751.entry.js +1 -0
  347. package/dist/sekiui/{p-66b1c2ac.entry.js → p-695a4986.entry.js} +1 -1
  348. package/dist/sekiui/p-71f6da8b.entry.js +1 -0
  349. package/dist/sekiui/{p-96073eae.entry.js → p-75d46bc7.entry.js} +1 -1
  350. package/dist/sekiui/p-7cd76bbb.entry.js +1 -0
  351. package/dist/sekiui/p-80b79cc0.entry.js +1 -0
  352. package/dist/sekiui/p-835f723b.entry.js +1 -0
  353. package/dist/sekiui/p-851d1c50.entry.js +1 -0
  354. package/dist/sekiui/{p-b664489e.entry.js → p-887b559d.entry.js} +1 -1
  355. package/dist/sekiui/{p-7bf379c4.entry.js → p-8c369957.entry.js} +1 -1
  356. package/dist/sekiui/{p-41f5488e.entry.js → p-8c57364a.entry.js} +1 -1
  357. package/dist/sekiui/p-8d888e3d.entry.js +1 -0
  358. package/dist/sekiui/{p-4c1b29de.entry.js → p-92b0241d.entry.js} +1 -1
  359. package/dist/sekiui/{p-fc6d6133.entry.js → p-966b2358.entry.js} +1 -1
  360. package/dist/sekiui/p-9a00c59c.entry.js +1 -0
  361. package/dist/sekiui/{p-b14ba603.entry.js → p-9af630c4.entry.js} +1 -1
  362. package/dist/sekiui/p-BgtjDG0h.js +1 -0
  363. package/dist/sekiui/p-D50kwTtW.js +1 -0
  364. package/dist/sekiui/p-DuJp0Kp6.js +1 -0
  365. package/dist/sekiui/p-a29160bc.entry.js +1 -0
  366. package/dist/sekiui/p-a6ae5c4b.entry.js +1 -0
  367. package/dist/sekiui/{p-c1bf976b.entry.js → p-b0d1e077.entry.js} +1 -1
  368. package/dist/sekiui/{p-73cbd067.entry.js → p-b2a60e91.entry.js} +1 -1
  369. package/dist/sekiui/{p-a5edaf79.entry.js → p-b43f9720.entry.js} +1 -1
  370. package/dist/sekiui/p-b5c242a0.entry.js +1 -0
  371. package/dist/sekiui/{p-d5b616c5.entry.js → p-bac67676.entry.js} +1 -1
  372. package/dist/sekiui/p-bc611a3d.entry.js +1 -0
  373. package/dist/sekiui/p-c004f467.entry.js +1 -0
  374. package/dist/sekiui/{p-41fae140.entry.js → p-cb657adb.entry.js} +1 -1
  375. package/dist/sekiui/{p-fa9a68be.entry.js → p-cfac56e7.entry.js} +1 -1
  376. package/dist/sekiui/{p-bf52433b.entry.js → p-d1a06cbc.entry.js} +1 -1
  377. package/dist/sekiui/p-d1f6efac.entry.js +1 -0
  378. package/dist/sekiui/{p-67aaf0f1.entry.js → p-d4ed816d.entry.js} +1 -1
  379. package/dist/sekiui/p-eaf626e5.entry.js +1 -0
  380. package/dist/sekiui/p-ed9034e4.entry.js +1 -0
  381. package/dist/sekiui/p-edd02332.entry.js +1 -0
  382. package/dist/sekiui/{p-bd9d106a.entry.js → p-ee40575b.entry.js} +1 -1
  383. package/dist/sekiui/{p-8344563b.entry.js → p-ef3679b0.entry.js} +1 -1
  384. package/dist/sekiui/p-f07b430e.entry.js +1 -0
  385. package/dist/sekiui/p-f3c69359.entry.js +1 -0
  386. package/dist/sekiui/p-f53b37e2.entry.js +1 -0
  387. package/dist/sekiui/p-f587cd57.entry.js +1 -0
  388. package/dist/sekiui/p-f7e1fdf0.entry.js +1 -0
  389. package/dist/sekiui/p-fb1370a9.entry.js +1 -0
  390. package/dist/sekiui/p-fde2877f.entry.js +1 -0
  391. package/dist/sekiui/p-fed3a547.entry.js +1 -0
  392. package/dist/sekiui/sekiui.esm.js +1 -1
  393. package/dist/types/components/accordion/seki-accordion-content.d.ts +2 -0
  394. package/dist/types/components/accordion/seki-accordion-item.d.ts +2 -0
  395. package/dist/types/components/accordion/seki-accordion-trigger.d.ts +2 -0
  396. package/dist/types/components/alert-dialog/seki-alert-dialog-content.d.ts +2 -0
  397. package/dist/types/components/carousel/seki-carousel.d.ts +3 -0
  398. package/dist/types/components/collapsible/seki-collapsible-content.d.ts +2 -0
  399. package/dist/types/components/combobox-item/seki-combobox-item.d.ts +1 -0
  400. package/dist/types/components/command/seki-command-group.d.ts +2 -0
  401. package/dist/types/components/context-menu/seki-context-menu-content.d.ts +2 -0
  402. package/dist/types/components/context-menu/seki-context-menu.d.ts +1 -0
  403. package/dist/types/components/dialog/seki-dialog-content.d.ts +2 -0
  404. package/dist/types/components/dialog/seki-dialog-overlay.d.ts +2 -0
  405. package/dist/types/components/dialog/seki-dialog.d.ts +1 -0
  406. package/dist/types/components/dropdown-menu/seki-dropdown-menu-content.d.ts +2 -0
  407. package/dist/types/components/dropdown-menu/seki-dropdown-menu-radio.d.ts +2 -0
  408. package/dist/types/components/dropdown-menu/seki-dropdown-menu-trigger.d.ts +2 -0
  409. package/dist/types/components/dropdown-menu/seki-dropdown-menu.d.ts +1 -0
  410. package/dist/types/components/menubar/seki-menubar-content.d.ts +2 -0
  411. package/dist/types/components/menubar/seki-menubar-radio.d.ts +2 -0
  412. package/dist/types/components/menubar/seki-menubar-trigger.d.ts +2 -0
  413. package/dist/types/components/menubar/seki-menubar.d.ts +1 -0
  414. package/dist/types/components/navigation-menu/seki-navigation-menu-content.d.ts +1 -0
  415. package/dist/types/components/navigation-menu/seki-navigation-menu-link.d.ts +1 -0
  416. package/dist/types/components/navigation-menu/seki-navigation-menu-list.d.ts +1 -0
  417. package/dist/types/components/popover/seki-popover-content.d.ts +2 -0
  418. package/dist/types/components/popover/seki-popover.d.ts +1 -0
  419. package/dist/types/components/scroll-area/seki-scroll-bar.d.ts +1 -0
  420. package/dist/types/components/select/seki-select.d.ts +8 -1
  421. package/dist/types/components/select-option/seki-select-option.d.ts +3 -1
  422. package/dist/types/components/sidebar/seki-sidebar-menu-sub.d.ts +2 -0
  423. package/dist/types/components/sidebar/seki-sidebar-rail.d.ts +1 -0
  424. package/dist/types/components/slider/seki-slider.d.ts +9 -0
  425. package/dist/types/components/tabs/seki-tabs-content.d.ts +2 -0
  426. package/dist/types/components/tabs/seki-tabs-trigger.d.ts +2 -0
  427. package/dist/types/components/tooltip/seki-tooltip.d.ts +1 -0
  428. package/dist/types/components.d.ts +32 -32
  429. package/dist/types/utils/ancestor-attrs.d.ts +18 -0
  430. package/dist/types/utils/calendar/date-utils.d.ts +9 -0
  431. package/dist/types/utils/dialog/focus-trap.d.ts +18 -7
  432. package/dist/types/utils/positioning.d.ts +34 -0
  433. package/package.json +25 -2
  434. package/dist/cdn/p-CP7ZtKCE.js +0 -71
  435. package/dist/cjs/focus-trap-C7ukllRZ.js +0 -76
  436. package/dist/components/p-CP7ZtKCE.js +0 -71
  437. package/dist/esm/focus-trap-CP7ZtKCE.js +0 -71
  438. package/dist/sekiui/p-107bdce6.entry.js +0 -1
  439. package/dist/sekiui/p-2548d7c3.entry.js +0 -1
  440. package/dist/sekiui/p-307a0de3.entry.js +0 -1
  441. package/dist/sekiui/p-397fb20e.entry.js +0 -1
  442. package/dist/sekiui/p-3e01b3c9.entry.js +0 -1
  443. package/dist/sekiui/p-4617d9c5.entry.js +0 -1
  444. package/dist/sekiui/p-4896a497.entry.js +0 -1
  445. package/dist/sekiui/p-4a47ea19.entry.js +0 -1
  446. package/dist/sekiui/p-4b0ee9e5.entry.js +0 -1
  447. package/dist/sekiui/p-598f9c5b.entry.js +0 -1
  448. package/dist/sekiui/p-635ca5ab.entry.js +0 -1
  449. package/dist/sekiui/p-63b3a53c.entry.js +0 -1
  450. package/dist/sekiui/p-63ffc38a.entry.js +0 -1
  451. package/dist/sekiui/p-6416552b.entry.js +0 -1
  452. package/dist/sekiui/p-66b59a4c.entry.js +0 -1
  453. package/dist/sekiui/p-70f149c3.entry.js +0 -1
  454. package/dist/sekiui/p-79062829.entry.js +0 -1
  455. package/dist/sekiui/p-7bf7ee5f.entry.js +0 -1
  456. package/dist/sekiui/p-8067a8f3.entry.js +0 -1
  457. package/dist/sekiui/p-884bde18.entry.js +0 -1
  458. package/dist/sekiui/p-91d532fa.entry.js +0 -1
  459. package/dist/sekiui/p-95749f03.entry.js +0 -1
  460. package/dist/sekiui/p-9d5b807f.entry.js +0 -1
  461. package/dist/sekiui/p-CP7ZtKCE.js +0 -1
  462. package/dist/sekiui/p-ac321aeb.entry.js +0 -1
  463. package/dist/sekiui/p-adc3cfff.entry.js +0 -1
  464. package/dist/sekiui/p-b945fc54.entry.js +0 -1
  465. package/dist/sekiui/p-bdb2d304.entry.js +0 -1
  466. package/dist/sekiui/p-c0ce45c3.entry.js +0 -1
  467. package/dist/sekiui/p-d2951ab4.entry.js +0 -1
  468. package/dist/sekiui/p-db37e4d2.entry.js +0 -1
  469. package/dist/sekiui/p-e51d76de.entry.js +0 -1
  470. package/dist/sekiui/p-f0bb516d.entry.js +0 -1
  471. package/dist/sekiui/p-f82ead84.entry.js +0 -1
@@ -21,10 +21,10 @@ const SekiTableRow$1 = /*@__PURE__*/ proxyCustomElement(class SekiTableRow exten
21
21
  unregisterThemeSync(this.el);
22
22
  }
23
23
  render() {
24
- return (h("tr", { key: '7064ca866bd0a0efea5552b40be304c98c5221d7', class: {
24
+ return (h("tr", { key: '38970f379cb5701bb4bc65c5136375cbb2e3fc15', class: {
25
25
  'seki-table-row': true,
26
26
  'seki-table-row--selected': this.selected,
27
- }, "data-state": this.selected ? 'selected' : undefined }, h("slot", { key: '2a5e6c2cf9b524f730775e11685f76bf5ae5bdc7' })));
27
+ }, "data-state": this.selected ? 'selected' : undefined }, h("slot", { key: 'af31af867841f0c129a8ae15863703b2d5e28dcc' })));
28
28
  }
29
29
  get el() { return this; }
30
30
  static get style() { return sekiTableRowCss; }
@@ -17,7 +17,7 @@ const SekiTable$1 = /*@__PURE__*/ proxyCustomElement(class SekiTable extends H {
17
17
  unregisterThemeSync(this.el);
18
18
  }
19
19
  render() {
20
- return (h("div", { key: '11d097f420a1e128a1db645f9f9f22654432ab8e', class: "seki-table-container" }, h("table", { key: '284dfa560d84e5984affcab895e981a2ca4feb31', class: "seki-table", role: "table", "aria-label": this.ariaLabel }, h("slot", { key: '321c7ee41d9d3c8ef3b9b7c1f84b96f77dc94ce9' }))));
20
+ return (h("div", { key: 'd70c0835e8f47912319255f805041d34f4554ed9', class: "seki-table-container" }, h("table", { key: 'a686da7245cbf7bc97f2bf6c96e0f7b3f04513fc', class: "seki-table", role: "table", "aria-label": this.ariaLabel }, h("slot", { key: '867c48b3a836259277b9d6f54fd17685bda5bccb' }))));
21
21
  }
22
22
  get el() { return this; }
23
23
  static get style() { return sekiTableCss; }
@@ -10,6 +10,11 @@ const SekiTabsContent$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabsContent
10
10
  }
11
11
  this.__attachShadow();
12
12
  this._isSelected = false;
13
+ this.onTabsValueChange = () => {
14
+ var _a;
15
+ const context = this.getContext();
16
+ this._isSelected = (_a = context === null || context === void 0 ? void 0 : context.isSelected(this.value)) !== null && _a !== void 0 ? _a : false;
17
+ };
13
18
  this.instanceId = ++SekiTabsContent.instanceCount;
14
19
  }
15
20
  getContext() {
@@ -29,28 +34,25 @@ const SekiTabsContent$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabsContent
29
34
  this._isSelected = (_a = context === null || context === void 0 ? void 0 : context.isSelected(this.value)) !== null && _a !== void 0 ? _a : false;
30
35
  }
31
36
  componentDidLoad() {
37
+ var _a, _b;
32
38
  // Listen for value changes from parent tabs
33
- const tabs = this.el.closest('seki-tabs');
34
- if (tabs) {
35
- tabs.addEventListener('sekiValueChange', () => {
36
- var _a;
37
- const context = this.getContext();
38
- this._isSelected = (_a = context === null || context === void 0 ? void 0 : context.isSelected(this.value)) !== null && _a !== void 0 ? _a : false;
39
- });
40
- }
39
+ this.tabsEl = (_a = this.el.closest('seki-tabs')) !== null && _a !== void 0 ? _a : undefined;
40
+ (_b = this.tabsEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiValueChange', this.onTabsValueChange);
41
41
  }
42
42
  connectedCallback() {
43
43
  registerThemeSync(this.el);
44
44
  }
45
45
  disconnectedCallback() {
46
+ var _a;
46
47
  unregisterThemeSync(this.el);
48
+ (_a = this.tabsEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiValueChange', this.onTabsValueChange);
47
49
  }
48
50
  render() {
49
51
  const isSelected = this._isSelected;
50
- return (h(Host, { key: '5a23d8c5925c8defc774709f4cd70938158a2a41', "data-state": isSelected ? 'active' : 'inactive', role: "tabpanel", id: this.panelId, "aria-labelledby": this.triggerId, hidden: !isSelected, tabindex: isSelected ? 0 : -1 }, h("div", { key: 'd3ed6e061c072006e2a0c804d67f21cfd29d8bee', part: "content", class: {
52
+ return (h(Host, { key: '7af297cd54e8bea988a1c9f070993150350d9703', "data-state": isSelected ? 'active' : 'inactive', role: "tabpanel", id: this.panelId, "aria-labelledby": this.triggerId, hidden: !isSelected, tabindex: isSelected ? 0 : -1 }, h("div", { key: '08c864b57ccd71d87470810c9b6cb7599143abae', part: "content", class: {
51
53
  'tabs-content': true,
52
54
  'tabs-content--active': isSelected,
53
- } }, h("slot", { key: 'c53d3801200719e7d73cc0220c0abf7f03b6f597' }))));
55
+ } }, h("slot", { key: '2d19c0f1bf8fbef4ce6f8ab374f921f4f0fa4ac1' }))));
54
56
  }
55
57
  get el() { return this; }
56
58
  static get style() { return sekiTabsContentCss; }
@@ -25,10 +25,10 @@ const SekiTabsList$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabsList exten
25
25
  var _a;
26
26
  const context = this.getContext();
27
27
  const orientation = (_a = context === null || context === void 0 ? void 0 : context.orientation) !== null && _a !== void 0 ? _a : 'horizontal';
28
- return (h(Host, { key: '7c6791eaaa2d7cc1defca94611c41104ae50925c', "data-orientation": orientation }, h("div", { key: '473a1f344b7f491a4d356575391784c52d6e77b6', part: "list", role: "tablist", "aria-orientation": orientation, class: {
28
+ return (h(Host, { key: '32b805b2ce5b203dbd5a939d90dae450999dc409', "data-orientation": orientation }, h("div", { key: '544a4b05e3cd41768e17c276bec94c2b9d33eabc', part: "list", role: "tablist", "aria-orientation": orientation, class: {
29
29
  'tabs-list': true,
30
30
  [`tabs-list--${orientation}`]: true,
31
- } }, h("slot", { key: 'cbd529fd23f8cb23ef239caa1e0da02b635f803b' }))));
31
+ } }, h("slot", { key: '3f6b2bb6f5bcbcfeb2065341e0eedde8c6a967c6' }))));
32
32
  }
33
33
  get el() { return this; }
34
34
  static get style() { return sekiTabsListCss; }
@@ -14,6 +14,11 @@ const SekiTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabsTrigger
14
14
  */
15
15
  this.disabled = false;
16
16
  this._isSelected = false;
17
+ this.onTabsValueChange = () => {
18
+ var _a;
19
+ const context = this.getContext();
20
+ this._isSelected = (_a = context === null || context === void 0 ? void 0 : context.isSelected(this.value)) !== null && _a !== void 0 ? _a : false;
21
+ };
17
22
  this.instanceId = ++SekiTabsTrigger.instanceCount;
18
23
  }
19
24
  getContext() {
@@ -33,15 +38,10 @@ const SekiTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabsTrigger
33
38
  this._isSelected = (_a = context === null || context === void 0 ? void 0 : context.isSelected(this.value)) !== null && _a !== void 0 ? _a : false;
34
39
  }
35
40
  componentDidLoad() {
41
+ var _a, _b;
36
42
  // Listen for value changes from parent tabs
37
- const tabs = this.el.closest('seki-tabs');
38
- if (tabs) {
39
- tabs.addEventListener('sekiValueChange', () => {
40
- var _a;
41
- const context = this.getContext();
42
- this._isSelected = (_a = context === null || context === void 0 ? void 0 : context.isSelected(this.value)) !== null && _a !== void 0 ? _a : false;
43
- });
44
- }
43
+ this.tabsEl = (_a = this.el.closest('seki-tabs')) !== null && _a !== void 0 ? _a : undefined;
44
+ (_b = this.tabsEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiValueChange', this.onTabsValueChange);
45
45
  }
46
46
  handleClick() {
47
47
  if (this.disabled)
@@ -157,14 +157,16 @@ const SekiTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabsTrigger
157
157
  registerThemeSync(this.el);
158
158
  }
159
159
  disconnectedCallback() {
160
+ var _a;
160
161
  unregisterThemeSync(this.el);
162
+ (_a = this.tabsEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiValueChange', this.onTabsValueChange);
161
163
  }
162
164
  render() {
163
165
  const isSelected = this._isSelected;
164
- return (h(Host, { key: '8688d0f344ef4fb56263e3043f341e619ac551cc', "data-state": isSelected ? 'active' : 'inactive', "data-disabled": this.disabled ? '' : undefined, tabindex: this.disabled ? -1 : 0, role: "tab", "aria-selected": isSelected ? 'true' : 'false', "aria-controls": this.panelId }, h("button", { key: 'c95725cb42683bf3661f31129dc92de3c0d24f1f', part: "trigger", type: "button", id: this.triggerId, class: {
166
+ return (h(Host, { key: 'c5ac6f44d2498dc723c082b5a3cf8cc0514345c3', "data-state": isSelected ? 'active' : 'inactive', "data-disabled": this.disabled ? '' : undefined, tabindex: this.disabled ? -1 : 0, role: "tab", "aria-selected": isSelected ? 'true' : 'false', "aria-controls": this.panelId }, h("button", { key: 'd90ac732efef5ed590cbc7c5be482e6173216ed2', part: "trigger", type: "button", id: this.triggerId, class: {
165
167
  'tabs-trigger': true,
166
168
  'tabs-trigger--active': isSelected,
167
- }, disabled: this.disabled, tabindex: -1 }, h("slot", { key: 'df36d5356fea73f4d37a1baee60af4d9ecf87a2a' }))));
169
+ }, disabled: this.disabled, tabindex: -1 }, h("slot", { key: '76ffd78ccd3c355c1dcc41cab0fe0fe59b88bdff' }))));
168
170
  }
169
171
  get el() { return this; }
170
172
  static get style() { return sekiTabsTriggerCss; }
@@ -69,10 +69,10 @@ const SekiTabs$1 = /*@__PURE__*/ proxyCustomElement(class SekiTabs extends H {
69
69
  unregisterThemeSync(this.el);
70
70
  }
71
71
  render() {
72
- return (h(Host, { key: '919f780e7d36995bc1112e8fd1056f4a12d48359', "data-orientation": this.orientation }, h("div", { key: '554012f8ae1584aa85765f2d73ce414a5780ee2d', part: "tabs", class: {
72
+ return (h(Host, { key: '7ad13d3b99af4bbf3c0ca5e843eccc6161a7ca87', "data-orientation": this.orientation }, h("div", { key: '145c03db641722f8f63b65c9e8d5ec92da6f76c3', part: "tabs", class: {
73
73
  'tabs': true,
74
74
  [`tabs--${this.orientation}`]: true,
75
- } }, h("slot", { key: 'd9d9d99a8c4a8c1e943220cded69ab3571099003' }))));
75
+ } }, h("slot", { key: 'd12772fe0afda9d031e1a5ed65ef37226fe09598' }))));
76
76
  }
77
77
  get el() { return this; }
78
78
  static get watchers() { return {
@@ -92,7 +92,7 @@ const SekiTextarea$1 = /*@__PURE__*/ proxyCustomElement(class SekiTextarea exten
92
92
  unregisterThemeSync(this.el);
93
93
  }
94
94
  render() {
95
- return (h("textarea", { key: 'e7c3603f27a938149763b839761630d677d0d348', value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, name: this.name, rows: this.rows, cols: this.cols, minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autocomplete, class: `textarea textarea--resize-${this.resize}${this.invalid ? ' textarea--invalid' : ''}`, "aria-label": this.ariaLabel, "aria-describedby": this.ariaDescribedby, "aria-invalid": this.invalid ? 'true' : null, "aria-disabled": this.disabled ? 'true' : null, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur }));
95
+ return (h("textarea", { key: 'e36fc95f58c1d267267d35db9be1774951c9c1d7', value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, name: this.name, rows: this.rows, cols: this.cols, minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autocomplete, class: `textarea textarea--resize-${this.resize}${this.invalid ? ' textarea--invalid' : ''}`, "aria-label": this.ariaLabel, "aria-describedby": this.ariaDescribedby, "aria-invalid": this.invalid ? 'true' : null, "aria-disabled": this.disabled ? 'true' : null, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur }));
96
96
  }
97
97
  static get formAssociated() { return true; }
98
98
  get el() { return this; }
@@ -156,7 +156,7 @@ const SekiToggleGroup$1 = /*@__PURE__*/ proxyCustomElement(class SekiToggleGroup
156
156
  unregisterThemeSync(this.el);
157
157
  }
158
158
  render() {
159
- return (h(Host, { key: '39631f06ff34ddfff87b1ce6c0262e31695b5d67', role: "group", "aria-label": this.ariaLabel, "aria-orientation": this.orientation }, h("slot", { key: 'd3c8a6a466d60ea36f580824ceacf9d1f74f6c88' })));
159
+ return (h(Host, { key: 'a58fde3e3b41fd41a7f0d11b860ddf0fdd60855c', role: "group", "aria-label": this.ariaLabel, "aria-orientation": this.orientation }, h("slot", { key: '039c82e1a77c6c2c6965c94df169ec000119f833' })));
160
160
  }
161
161
  get el() { return this; }
162
162
  static get watchers() { return {
@@ -154,7 +154,7 @@ const SekiToggle$1 = /*@__PURE__*/ proxyCustomElement(class SekiToggle extends H
154
154
  tabIndex = focusedValue === this.value ? 0 : -1;
155
155
  }
156
156
  }
157
- return (h(Host, { key: 'e6f103071272b08391bd0fae9a41e23bd239f7d6', "data-state": dataState, "data-disabled": effectiveDisabled ? '' : null }, h("button", { key: '4e88b76611c55410f20ec5ea20eed73a32224525', type: "button", class: `toggle toggle--${effectiveVariant} toggle--${effectiveSize}`, part: "toggle", "aria-pressed": isPressed ? 'true' : 'false', "aria-disabled": effectiveDisabled ? 'true' : undefined, "aria-label": this.ariaLabel || undefined, disabled: effectiveDisabled, tabindex: tabIndex, onClick: this.handleClick }, h("slot", { key: '95067bf4c802e8f0ca1990d0448c6476fc514bc6' }))));
157
+ return (h(Host, { key: 'b467caa09837abd63a820bef7a05d64f1e206efe', "data-state": dataState, "data-disabled": effectiveDisabled ? '' : null }, h("button", { key: '617420144589f944253aed3c88556aa0f3db73b7', type: "button", class: `toggle toggle--${effectiveVariant} toggle--${effectiveSize}`, part: "toggle", "aria-pressed": isPressed ? 'true' : 'false', "aria-disabled": effectiveDisabled ? 'true' : undefined, "aria-label": this.ariaLabel || undefined, disabled: effectiveDisabled, tabindex: tabIndex, onClick: this.handleClick }, h("slot", { key: '29ea33cb06d270e999dd41e1fcfe0bd58626f9ce' }))));
158
158
  }
159
159
  get el() { return this; }
160
160
  static get style() { return sekiToggleCss; }
@@ -51,6 +51,7 @@ const SekiTooltip$1 = /*@__PURE__*/ proxyCustomElement(class SekiTooltip extends
51
51
  this.longPressTimer = null;
52
52
  this.touchStartX = 0;
53
53
  this.touchStartY = 0;
54
+ this.hasLoaded = false;
54
55
  /**
55
56
  * Handle mouse enter on trigger
56
57
  */
@@ -305,10 +306,11 @@ const SekiTooltip$1 = /*@__PURE__*/ proxyCustomElement(class SekiTooltip extends
305
306
  trigger.addEventListener('touchend', this.onTriggerTouchEnd);
306
307
  // Escape key on document
307
308
  document.addEventListener('keydown', this.onEscapeKey);
308
- // Apply aria-describedby to trigger
309
+ // Apply aria-describedby to trigger (idempotent — keep the existing id so a
310
+ // re-attach after a DOM move doesn't regenerate it).
309
311
  const contentSlot = this.el.querySelector('[slot="content"]');
310
312
  if (contentSlot) {
311
- const contentId = `tooltip-${Math.random().toString(36).substr(2, 9)}`;
313
+ const contentId = contentSlot.id || `tooltip-${Math.random().toString(36).substr(2, 9)}`;
312
314
  contentSlot.id = contentId;
313
315
  trigger.setAttribute('aria-describedby', contentId);
314
316
  }
@@ -327,12 +329,23 @@ const SekiTooltip$1 = /*@__PURE__*/ proxyCustomElement(class SekiTooltip extends
327
329
  trigger.removeEventListener('touchstart', this.onTriggerTouchStart);
328
330
  trigger.removeEventListener('touchmove', this.onTriggerTouchMove);
329
331
  trigger.removeEventListener('touchend', this.onTriggerTouchEnd);
332
+ // Escape key was registered on document in attachTriggerListeners; remove it
333
+ // here so it does not leak (and keep firing) after the tooltip is detached.
334
+ document.removeEventListener('keydown', this.onEscapeKey);
330
335
  }
331
336
  componentDidLoad() {
337
+ this.hasLoaded = true;
332
338
  this.attachTriggerListeners();
333
339
  }
334
340
  connectedCallback() {
335
341
  registerThemeSync(this.el);
342
+ // Re-attach on reconnect (e.g. the element was moved in the DOM). On first
343
+ // connect this is a no-op because children aren't ready yet — componentDidLoad
344
+ // handles the initial attach. addEventListener with the same handler refs is
345
+ // idempotent, so this never double-binds.
346
+ if (this.hasLoaded) {
347
+ this.attachTriggerListeners();
348
+ }
336
349
  }
337
350
  disconnectedCallback() {
338
351
  unregisterThemeSync(this.el);
@@ -346,7 +359,7 @@ const SekiTooltip$1 = /*@__PURE__*/ proxyCustomElement(class SekiTooltip extends
346
359
  clearTimeout(this.longPressTimer);
347
360
  }
348
361
  render() {
349
- return (h("div", { key: '36ae47199849d6b033529f8af5606d3aa8179812', class: `tooltip ${this.isVisible ? 'tooltip--visible' : ''}`, role: "tooltip" }, h("slot", { key: '5fc103d6e655d53c6cac5740b24d655b13fcf852', name: "content" }), h("div", { key: '78d8fd177fb8965fc19f2fed8790f8e7cfe7baa0', class: "tooltip-arrow" })));
362
+ return (h("div", { key: 'b8f98d6cf19b3bb54b78f2f556055e9bf0333d89', class: `tooltip ${this.isVisible ? 'tooltip--visible' : ''}`, role: "tooltip" }, h("slot", { key: 'fc7995ac5e2570ff72e5e0a66cb014687c9e9c93', name: "content" }), h("div", { key: '553c15d7abdf477ed87d5b5d728b0a26c5a779e5', class: "tooltip-arrow" })));
350
363
  }
351
364
  get el() { return this; }
352
365
  static get style() { return sekiTooltipCss; }
@@ -0,0 +1,45 @@
1
+ const NOOP_MIRROR = { disconnect() { } };
2
+ function mirrorAncestorAttributes(host, ancestorSelector, attributes, options = {}) {
3
+ const ancestor = host.closest(ancestorSelector);
4
+ if (!ancestor)
5
+ return NOOP_MIRROR;
6
+ const sync = () => {
7
+ for (const attr of attributes) {
8
+ const value = ancestor.getAttribute(attr);
9
+ if (value === null) {
10
+ host.removeAttribute(attr);
11
+ }
12
+ else {
13
+ host.setAttribute(attr, value);
14
+ }
15
+ }
16
+ };
17
+ // Reflect current state, then keep it in sync with future attribute changes.
18
+ sync();
19
+ // MutationObserver is absent in non-DOM/test environments; the initial sync
20
+ // still runs, we just skip live updates there.
21
+ let observer;
22
+ if (typeof MutationObserver !== 'undefined') {
23
+ observer = new MutationObserver(sync);
24
+ observer.observe(ancestor, { attributes: true, attributeFilter: attributes });
25
+ }
26
+ let onEnter;
27
+ let onLeave;
28
+ if (options.trackHover) {
29
+ onEnter = () => host.setAttribute('data-parent-hover', '');
30
+ onLeave = () => host.removeAttribute('data-parent-hover');
31
+ ancestor.addEventListener('mouseenter', onEnter);
32
+ ancestor.addEventListener('mouseleave', onLeave);
33
+ }
34
+ return {
35
+ disconnect() {
36
+ observer === null || observer === void 0 ? void 0 : observer.disconnect();
37
+ if (onEnter)
38
+ ancestor.removeEventListener('mouseenter', onEnter);
39
+ if (onLeave)
40
+ ancestor.removeEventListener('mouseleave', onLeave);
41
+ },
42
+ };
43
+ }
44
+
45
+ export { mirrorAncestorAttributes as m };
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Focus trap utility for dialog and modal components.
3
+ *
4
+ * These helpers walk the *composed* (flattened) tree rather than a single
5
+ * shadow root. Dialog content is projected through a `<slot>`, so the actual
6
+ * focusable elements live in the host's light DOM — and custom elements like
7
+ * `seki-button` keep their focusable `<button>` inside their own shadow root.
8
+ * A plain `container.querySelectorAll()` never sees either, which is why the
9
+ * trap previously matched nothing.
10
+ */
11
+ const FOCUSABLE_SELECTOR = [
12
+ 'a[href]',
13
+ 'button:not([disabled])',
14
+ 'input:not([disabled])',
15
+ 'select:not([disabled])',
16
+ 'textarea:not([disabled])',
17
+ '[tabindex]:not([tabindex="-1"])',
18
+ 'audio[controls]',
19
+ 'video[controls]',
20
+ '[contenteditable]:not([contenteditable="false"])',
21
+ ].join(', ');
22
+ function isFocusableCandidate(el) {
23
+ return el instanceof HTMLElement && el.matches(FOCUSABLE_SELECTOR);
24
+ }
25
+ function isHidden(el) {
26
+ return (el.hidden === true ||
27
+ el.getAttribute('aria-hidden') === 'true');
28
+ }
29
+ /**
30
+ * Recursively collect focusable elements in composed-tree (DOM) order,
31
+ * descending through shadow roots and resolving `<slot>` assignments.
32
+ */
33
+ function collectFocusable(node, out) {
34
+ // Resolve slots to their assigned (projected) elements.
35
+ if (node.tagName === 'SLOT') {
36
+ const assigned = node.assignedElements({ flatten: true });
37
+ for (const el of assigned) {
38
+ collectFocusable(el, out);
39
+ }
40
+ return;
41
+ }
42
+ // Skip hidden subtrees entirely.
43
+ if (isHidden(node))
44
+ return;
45
+ if (isFocusableCandidate(node)) {
46
+ out.push(node);
47
+ }
48
+ // When an element hosts a shadow root, its rendered subtree is the shadow
49
+ // tree (light children only surface via slots inside it). Otherwise walk
50
+ // the light children directly.
51
+ const children = node.shadowRoot
52
+ ? Array.from(node.shadowRoot.children)
53
+ : Array.from(node.children);
54
+ for (const child of children) {
55
+ collectFocusable(child, out);
56
+ }
57
+ }
58
+ /**
59
+ * Get all focusable elements within a container, crossing shadow-DOM and slot
60
+ * boundaries so projected content and nested web components are included.
61
+ */
62
+ function getFocusableElements(container) {
63
+ var _a;
64
+ const out = [];
65
+ const root = (_a = container.shadowRoot) !== null && _a !== void 0 ? _a : container;
66
+ for (const child of Array.from(root.children)) {
67
+ collectFocusable(child, out);
68
+ }
69
+ return out;
70
+ }
71
+ /**
72
+ * Resolve the deepest active element, descending into nested shadow roots.
73
+ * `document.activeElement` only reports the outermost shadow host.
74
+ */
75
+ function getDeepActiveElement() {
76
+ var _a;
77
+ let active = document.activeElement;
78
+ while ((_a = active === null || active === void 0 ? void 0 : active.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) {
79
+ active = active.shadowRoot.activeElement;
80
+ }
81
+ return active;
82
+ }
83
+ /**
84
+ * Focus the first focusable element in a container.
85
+ */
86
+ function focusFirst(container) {
87
+ const focusables = getFocusableElements(container);
88
+ if (focusables.length > 0) {
89
+ focusables[0].focus();
90
+ }
91
+ }
92
+ /**
93
+ * Trap focus within a container during Tab key navigation.
94
+ */
95
+ function trapFocus(container, event) {
96
+ if (event.key !== 'Tab')
97
+ return;
98
+ const focusables = getFocusableElements(container);
99
+ if (focusables.length === 0) {
100
+ // Nothing focusable inside — keep focus from escaping the modal.
101
+ event.preventDefault();
102
+ return;
103
+ }
104
+ const first = focusables[0];
105
+ const last = focusables[focusables.length - 1];
106
+ const active = getDeepActiveElement();
107
+ // `contains()` does not cross shadow boundaries, so detect "escaped" focus by
108
+ // membership in the composed focusables list instead.
109
+ const isInside = active !== null && focusables.indexOf(active) !== -1;
110
+ if (event.shiftKey) {
111
+ if (active === first || !isInside) {
112
+ event.preventDefault();
113
+ last.focus();
114
+ }
115
+ }
116
+ else {
117
+ if (active === last || !isInside) {
118
+ event.preventDefault();
119
+ first.focus();
120
+ }
121
+ }
122
+ }
123
+ // ---------------------------------------------------------------------------
124
+ // Body scroll lock (reference-counted so stacked modals don't unlock early).
125
+ // ---------------------------------------------------------------------------
126
+ let scrollLockCount = 0;
127
+ let savedOverflow = '';
128
+ let savedPaddingRight = '';
129
+ /**
130
+ * Lock body scroll when a modal opens. Safe to nest: the lock is only applied
131
+ * on the first call and the original inline styles are restored on the last
132
+ * matching unlock.
133
+ */
134
+ function lockBodyScroll() {
135
+ if (scrollLockCount === 0) {
136
+ savedOverflow = document.body.style.overflow;
137
+ savedPaddingRight = document.body.style.paddingRight;
138
+ const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
139
+ document.body.style.overflow = 'hidden';
140
+ if (scrollbarWidth > 0) {
141
+ document.body.style.paddingRight = `${scrollbarWidth}px`;
142
+ }
143
+ }
144
+ scrollLockCount++;
145
+ }
146
+ /**
147
+ * Unlock body scroll when a modal closes. Only the final unlock restores the
148
+ * original inline styles.
149
+ */
150
+ function unlockBodyScroll() {
151
+ if (scrollLockCount === 0)
152
+ return;
153
+ scrollLockCount--;
154
+ if (scrollLockCount === 0) {
155
+ document.body.style.overflow = savedOverflow;
156
+ document.body.style.paddingRight = savedPaddingRight;
157
+ }
158
+ }
159
+
160
+ export { focusFirst as f, lockBodyScroll as l, trapFocus as t, unlockBodyScroll as u };