@sekiui/elements 0.0.82 → 0.0.84

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 (846) 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-Dj6GD4nq.js → p-CM3W2ecZ.js} +1 -1
  4. package/dist/cdn/{p-o_nleCju.js → p-Cs0DgQw5.js} +25 -8
  5. package/dist/cdn/p-D50kwTtW.js +160 -0
  6. package/dist/cdn/{p-m-89tckl.js → p-Df_mX3oj.js} +2 -2
  7. package/dist/cdn/p-DuJp0Kp6.js +63 -0
  8. package/dist/cdn/seki-accordion-content.js +10 -8
  9. package/dist/cdn/seki-accordion-item.js +12 -10
  10. package/dist/cdn/seki-accordion-trigger.js +12 -10
  11. package/dist/cdn/seki-alert-dialog-action.js +1 -1
  12. package/dist/cdn/seki-alert-dialog-cancel.js +1 -1
  13. package/dist/cdn/seki-alert-dialog-content.js +23 -21
  14. package/dist/cdn/seki-alert-dialog.js +1 -1
  15. package/dist/cdn/seki-button.js +1 -1
  16. package/dist/cdn/seki-calendar.js +1 -1
  17. package/dist/cdn/seki-carousel-dots.js +3 -3
  18. package/dist/cdn/seki-carousel-next.js +3 -3
  19. package/dist/cdn/seki-carousel-previous.js +3 -3
  20. package/dist/cdn/seki-carousel.js +22 -4
  21. package/dist/cdn/seki-collapsible-content.js +9 -5
  22. package/dist/cdn/seki-combobox-item.js +9 -2
  23. package/dist/cdn/seki-command-group.js +9 -7
  24. package/dist/cdn/seki-context-menu-content.js +17 -15
  25. package/dist/cdn/seki-context-menu.js +11 -2
  26. package/dist/cdn/seki-data-table.js +19 -16
  27. package/dist/cdn/seki-date-picker.js +1 -1
  28. package/dist/cdn/seki-dialog-content.js +23 -21
  29. package/dist/cdn/seki-dialog-overlay.js +10 -8
  30. package/dist/cdn/seki-dialog.js +1 -1
  31. package/dist/cdn/seki-dropdown-menu-content.js +23 -68
  32. package/dist/cdn/seki-dropdown-menu-radio.js +11 -9
  33. package/dist/cdn/seki-dropdown-menu-trigger.js +11 -9
  34. package/dist/cdn/seki-dropdown-menu.js +11 -2
  35. package/dist/cdn/seki-marker-content.d.ts +11 -0
  36. package/dist/cdn/seki-marker-content.js +55 -0
  37. package/dist/cdn/seki-marker-icon.d.ts +11 -0
  38. package/dist/cdn/seki-marker-icon.js +43 -0
  39. package/dist/cdn/seki-marker.d.ts +11 -0
  40. package/dist/cdn/seki-marker.js +60 -0
  41. package/dist/cdn/seki-menubar-checkbox.js +2 -2
  42. package/dist/cdn/seki-menubar-content.js +24 -42
  43. package/dist/cdn/seki-menubar-group.js +1 -1
  44. package/dist/cdn/seki-menubar-item.js +2 -2
  45. package/dist/cdn/seki-menubar-menu.js +1 -1
  46. package/dist/cdn/seki-menubar-radio-group.js +1 -1
  47. package/dist/cdn/seki-menubar-radio.js +11 -9
  48. package/dist/cdn/seki-menubar-separator.js +1 -1
  49. package/dist/cdn/seki-menubar-shortcut.js +1 -1
  50. package/dist/cdn/seki-menubar-sub-trigger.js +2 -2
  51. package/dist/cdn/seki-menubar-sub.js +1 -1
  52. package/dist/cdn/seki-menubar-trigger.js +12 -10
  53. package/dist/cdn/seki-menubar.js +11 -2
  54. package/dist/cdn/seki-native-select.js +1 -1
  55. package/dist/cdn/seki-navigation-menu-content.js +8 -3
  56. package/dist/cdn/seki-navigation-menu-item.js +2 -2
  57. package/dist/cdn/seki-navigation-menu-link.js +8 -3
  58. package/dist/cdn/seki-navigation-menu-list.js +7 -2
  59. package/dist/cdn/seki-navigation-menu-trigger.js +3 -3
  60. package/dist/cdn/seki-navigation-menu-viewport.js +1 -1
  61. package/dist/cdn/seki-navigation-menu.js +6 -6
  62. package/dist/cdn/seki-pagination-content.js +1 -1
  63. package/dist/cdn/seki-pagination-ellipsis.js +1 -1
  64. package/dist/cdn/seki-pagination-item.js +1 -1
  65. package/dist/cdn/seki-pagination-link.js +2 -2
  66. package/dist/cdn/seki-pagination-next.js +2 -2
  67. package/dist/cdn/seki-pagination-previous.js +2 -2
  68. package/dist/cdn/seki-pagination.js +1 -1
  69. package/dist/cdn/seki-popover-close.js +1 -1
  70. package/dist/cdn/seki-popover-content.js +20 -65
  71. package/dist/cdn/seki-popover-trigger.js +1 -1
  72. package/dist/cdn/seki-popover.js +13 -3
  73. package/dist/cdn/seki-progress.js +1 -1
  74. package/dist/cdn/seki-radio-group-item.js +1 -1
  75. package/dist/cdn/seki-radio-group.js +1 -1
  76. package/dist/cdn/seki-resizable-handle.js +2 -2
  77. package/dist/cdn/seki-resizable-panel-group.js +2 -2
  78. package/dist/cdn/seki-resizable-panel.js +3 -3
  79. package/dist/cdn/seki-scroll-area.js +1 -1
  80. package/dist/cdn/seki-scroll-bar.js +6 -2
  81. package/dist/cdn/seki-select-group.js +1 -1
  82. package/dist/cdn/seki-select-option.js +29 -13
  83. package/dist/cdn/seki-select.js +79 -33
  84. package/dist/cdn/seki-separator.js +1 -1
  85. package/dist/cdn/seki-sheet-close.js +1 -1
  86. package/dist/cdn/seki-sheet-description.js +1 -1
  87. package/dist/cdn/seki-sheet-footer.js +1 -1
  88. package/dist/cdn/seki-sheet-header.js +1 -1
  89. package/dist/cdn/seki-sheet-title.js +1 -1
  90. package/dist/cdn/seki-sheet-trigger.js +1 -1
  91. package/dist/cdn/seki-sheet.js +2 -2
  92. package/dist/cdn/seki-sidebar-content.js +1 -1
  93. package/dist/cdn/seki-sidebar-footer.js +1 -1
  94. package/dist/cdn/seki-sidebar-group-action.js +1 -1
  95. package/dist/cdn/seki-sidebar-group-content.js +1 -1
  96. package/dist/cdn/seki-sidebar-group-label.js +1 -1
  97. package/dist/cdn/seki-sidebar-group.js +2 -2
  98. package/dist/cdn/seki-sidebar-header.js +1 -1
  99. package/dist/cdn/seki-sidebar-inset.js +1 -1
  100. package/dist/cdn/seki-sidebar-menu-action.js +1 -1
  101. package/dist/cdn/seki-sidebar-menu-badge.js +1 -1
  102. package/dist/cdn/seki-sidebar-menu-button.js +1 -1
  103. package/dist/cdn/seki-sidebar-menu-item.js +1 -1
  104. package/dist/cdn/seki-sidebar-menu-skeleton.js +1 -1
  105. package/dist/cdn/seki-sidebar-menu-sub-button.js +2 -2
  106. package/dist/cdn/seki-sidebar-menu-sub-item.js +1 -1
  107. package/dist/cdn/seki-sidebar-menu-sub.js +17 -16
  108. package/dist/cdn/seki-sidebar-menu.js +1 -1
  109. package/dist/cdn/seki-sidebar-provider.js +13 -4
  110. package/dist/cdn/seki-sidebar-rail.js +7 -2
  111. package/dist/cdn/seki-sidebar-separator.js +1 -1
  112. package/dist/cdn/seki-sidebar-trigger.js +1 -1
  113. package/dist/cdn/seki-sidebar.js +2 -2
  114. package/dist/cdn/seki-skeleton.js +1 -1
  115. package/dist/cdn/seki-slider.js +36 -4
  116. package/dist/cdn/seki-spinner.js +2 -2
  117. package/dist/cdn/seki-table-body.js +1 -1
  118. package/dist/cdn/seki-table-caption.js +1 -1
  119. package/dist/cdn/seki-table-footer.js +1 -1
  120. package/dist/cdn/seki-table-header.js +1 -1
  121. package/dist/cdn/seki-table-row.js +2 -2
  122. package/dist/cdn/seki-table.js +1 -1
  123. package/dist/cdn/seki-tabs-content.js +12 -10
  124. package/dist/cdn/seki-tabs-list.js +2 -2
  125. package/dist/cdn/seki-tabs-trigger.js +12 -10
  126. package/dist/cdn/seki-tabs.js +2 -2
  127. package/dist/cdn/seki-textarea.js +1 -1
  128. package/dist/cdn/seki-toggle-group.js +1 -1
  129. package/dist/cdn/seki-toggle.js +1 -1
  130. package/dist/cdn/seki-tooltip.js +16 -3
  131. package/dist/cjs/ancestor-attrs-CnUfqtWw.js +47 -0
  132. package/dist/cjs/focus-trap-CFl79SjZ.js +165 -0
  133. package/dist/cjs/loader.cjs.js +1 -1
  134. package/dist/cjs/positioning-LQZBWMS6.js +65 -0
  135. package/dist/cjs/seki-accordion-content.cjs.entry.js +10 -8
  136. package/dist/cjs/seki-accordion-item.cjs.entry.js +12 -10
  137. package/dist/cjs/seki-accordion-trigger.cjs.entry.js +12 -10
  138. package/dist/cjs/seki-alert-dialog-action.cjs.entry.js +1 -1
  139. package/dist/cjs/seki-alert-dialog-cancel.cjs.entry.js +1 -1
  140. package/dist/cjs/seki-alert-dialog-content.cjs.entry.js +23 -21
  141. package/dist/cjs/seki-button.cjs.entry.js +1 -1
  142. package/dist/cjs/seki-calendar.cjs.entry.js +25 -8
  143. package/dist/cjs/seki-carousel-dots.cjs.entry.js +3 -3
  144. package/dist/cjs/seki-carousel-next.cjs.entry.js +3 -3
  145. package/dist/cjs/seki-carousel-previous.cjs.entry.js +3 -3
  146. package/dist/cjs/seki-carousel.cjs.entry.js +22 -4
  147. package/dist/cjs/seki-collapsible-content.cjs.entry.js +9 -5
  148. package/dist/cjs/seki-combobox-item.cjs.entry.js +9 -2
  149. package/dist/cjs/seki-command-group.cjs.entry.js +9 -7
  150. package/dist/cjs/seki-context-menu-content.cjs.entry.js +17 -15
  151. package/dist/cjs/seki-context-menu.cjs.entry.js +11 -2
  152. package/dist/cjs/seki-data-table.cjs.entry.js +19 -16
  153. package/dist/cjs/seki-dialog-content.cjs.entry.js +23 -21
  154. package/dist/cjs/seki-dialog-overlay.cjs.entry.js +10 -8
  155. package/dist/cjs/seki-dialog.cjs.entry.js +15 -2
  156. package/dist/cjs/seki-dropdown-menu-content.cjs.entry.js +23 -68
  157. package/dist/cjs/seki-dropdown-menu-radio.cjs.entry.js +11 -9
  158. package/dist/cjs/seki-dropdown-menu-trigger.cjs.entry.js +11 -9
  159. package/dist/cjs/seki-dropdown-menu.cjs.entry.js +11 -2
  160. package/dist/cjs/seki-marker-content.cjs.entry.js +35 -0
  161. package/dist/cjs/seki-marker-icon.cjs.entry.js +25 -0
  162. package/dist/cjs/seki-marker.cjs.entry.js +40 -0
  163. package/dist/cjs/seki-menubar-checkbox.cjs.entry.js +2 -2
  164. package/dist/cjs/seki-menubar-content.cjs.entry.js +24 -42
  165. package/dist/cjs/seki-menubar-group.cjs.entry.js +1 -1
  166. package/dist/cjs/seki-menubar-item.cjs.entry.js +2 -2
  167. package/dist/cjs/seki-menubar-menu.cjs.entry.js +1 -1
  168. package/dist/cjs/seki-menubar-radio-group.cjs.entry.js +1 -1
  169. package/dist/cjs/seki-menubar-radio.cjs.entry.js +11 -9
  170. package/dist/cjs/seki-menubar-separator.cjs.entry.js +1 -1
  171. package/dist/cjs/seki-menubar-shortcut.cjs.entry.js +1 -1
  172. package/dist/cjs/seki-menubar-sub-trigger.cjs.entry.js +2 -2
  173. package/dist/cjs/seki-menubar-sub.cjs.entry.js +1 -1
  174. package/dist/cjs/seki-menubar-trigger.cjs.entry.js +12 -10
  175. package/dist/cjs/seki-menubar.cjs.entry.js +11 -2
  176. package/dist/cjs/seki-native-select.cjs.entry.js +1 -1
  177. package/dist/cjs/seki-navigation-menu-content.cjs.entry.js +8 -3
  178. package/dist/cjs/seki-navigation-menu-item.cjs.entry.js +2 -2
  179. package/dist/cjs/seki-navigation-menu-link.cjs.entry.js +8 -3
  180. package/dist/cjs/seki-navigation-menu-list.cjs.entry.js +7 -2
  181. package/dist/cjs/seki-navigation-menu-trigger.cjs.entry.js +3 -3
  182. package/dist/cjs/seki-navigation-menu-viewport.cjs.entry.js +2 -2
  183. package/dist/cjs/seki-navigation-menu.cjs.entry.js +5 -5
  184. package/dist/cjs/seki-pagination-content.cjs.entry.js +1 -1
  185. package/dist/cjs/seki-pagination-ellipsis.cjs.entry.js +1 -1
  186. package/dist/cjs/seki-pagination-item.cjs.entry.js +1 -1
  187. package/dist/cjs/seki-pagination-link.cjs.entry.js +2 -2
  188. package/dist/cjs/seki-pagination-next.cjs.entry.js +2 -2
  189. package/dist/cjs/seki-pagination-previous.cjs.entry.js +2 -2
  190. package/dist/cjs/seki-pagination.cjs.entry.js +1 -1
  191. package/dist/cjs/seki-popover-close.cjs.entry.js +1 -1
  192. package/dist/cjs/seki-popover-content.cjs.entry.js +20 -65
  193. package/dist/cjs/seki-popover-trigger.cjs.entry.js +1 -1
  194. package/dist/cjs/seki-popover.cjs.entry.js +13 -3
  195. package/dist/cjs/seki-progress.cjs.entry.js +1 -1
  196. package/dist/cjs/seki-radio-group-item.cjs.entry.js +1 -1
  197. package/dist/cjs/seki-radio-group.cjs.entry.js +1 -1
  198. package/dist/cjs/seki-resizable-handle.cjs.entry.js +2 -2
  199. package/dist/cjs/seki-resizable-panel-group.cjs.entry.js +2 -2
  200. package/dist/cjs/seki-resizable-panel.cjs.entry.js +3 -3
  201. package/dist/cjs/seki-scroll-area.cjs.entry.js +1 -1
  202. package/dist/cjs/seki-scroll-bar.cjs.entry.js +6 -2
  203. package/dist/cjs/seki-select-group.cjs.entry.js +1 -1
  204. package/dist/cjs/seki-select-option.cjs.entry.js +29 -13
  205. package/dist/cjs/seki-select.cjs.entry.js +81 -30
  206. package/dist/cjs/seki-separator.cjs.entry.js +1 -1
  207. package/dist/cjs/seki-sheet-close.cjs.entry.js +1 -1
  208. package/dist/cjs/seki-sheet-description.cjs.entry.js +1 -1
  209. package/dist/cjs/seki-sheet-footer.cjs.entry.js +1 -1
  210. package/dist/cjs/seki-sheet-header.cjs.entry.js +1 -1
  211. package/dist/cjs/seki-sheet-title.cjs.entry.js +1 -1
  212. package/dist/cjs/seki-sheet-trigger.cjs.entry.js +1 -1
  213. package/dist/cjs/seki-sheet.cjs.entry.js +2 -2
  214. package/dist/cjs/seki-sidebar-content.cjs.entry.js +1 -1
  215. package/dist/cjs/seki-sidebar-footer.cjs.entry.js +1 -1
  216. package/dist/cjs/seki-sidebar-group-action.cjs.entry.js +1 -1
  217. package/dist/cjs/seki-sidebar-group-content.cjs.entry.js +1 -1
  218. package/dist/cjs/seki-sidebar-group-label.cjs.entry.js +1 -1
  219. package/dist/cjs/seki-sidebar-group.cjs.entry.js +1 -1
  220. package/dist/cjs/seki-sidebar-header.cjs.entry.js +1 -1
  221. package/dist/cjs/seki-sidebar-inset.cjs.entry.js +1 -1
  222. package/dist/cjs/seki-sidebar-menu-action.cjs.entry.js +1 -1
  223. package/dist/cjs/seki-sidebar-menu-badge.cjs.entry.js +1 -1
  224. package/dist/cjs/seki-sidebar-menu-button.cjs.entry.js +1 -1
  225. package/dist/cjs/seki-sidebar-menu-item.cjs.entry.js +1 -1
  226. package/dist/cjs/seki-sidebar-menu-skeleton.cjs.entry.js +1 -1
  227. package/dist/cjs/seki-sidebar-menu-sub-button.cjs.entry.js +2 -2
  228. package/dist/cjs/seki-sidebar-menu-sub-item.cjs.entry.js +1 -1
  229. package/dist/cjs/seki-sidebar-menu-sub.cjs.entry.js +17 -16
  230. package/dist/cjs/seki-sidebar-menu.cjs.entry.js +1 -1
  231. package/dist/cjs/seki-sidebar-provider.cjs.entry.js +13 -4
  232. package/dist/cjs/seki-sidebar-rail.cjs.entry.js +7 -2
  233. package/dist/cjs/seki-sidebar-separator.cjs.entry.js +1 -1
  234. package/dist/cjs/seki-sidebar-trigger.cjs.entry.js +1 -1
  235. package/dist/cjs/seki-sidebar.cjs.entry.js +2 -2
  236. package/dist/cjs/seki-skeleton.cjs.entry.js +1 -1
  237. package/dist/cjs/seki-slider.cjs.entry.js +36 -1
  238. package/dist/cjs/seki-spinner.cjs.entry.js +2 -2
  239. package/dist/cjs/seki-table-body.cjs.entry.js +1 -1
  240. package/dist/cjs/seki-table-caption.cjs.entry.js +1 -1
  241. package/dist/cjs/seki-table-footer.cjs.entry.js +1 -1
  242. package/dist/cjs/seki-table-header.cjs.entry.js +1 -1
  243. package/dist/cjs/seki-table-row.cjs.entry.js +2 -2
  244. package/dist/cjs/seki-table.cjs.entry.js +1 -1
  245. package/dist/cjs/seki-tabs-content.cjs.entry.js +12 -10
  246. package/dist/cjs/seki-tabs-list.cjs.entry.js +2 -2
  247. package/dist/cjs/seki-tabs-trigger.cjs.entry.js +12 -10
  248. package/dist/cjs/seki-tabs.cjs.entry.js +2 -2
  249. package/dist/cjs/seki-textarea.cjs.entry.js +1 -1
  250. package/dist/cjs/seki-toggle-group.cjs.entry.js +1 -1
  251. package/dist/cjs/seki-toggle.cjs.entry.js +1 -1
  252. package/dist/cjs/seki-tooltip.cjs.entry.js +16 -3
  253. package/dist/cjs/sekiui.cjs.js +1 -1
  254. package/dist/collection/collection-manifest.json +3 -0
  255. package/dist/collection/components/accordion/seki-accordion-content.js +10 -8
  256. package/dist/collection/components/accordion/seki-accordion-item.js +12 -10
  257. package/dist/collection/components/accordion/seki-accordion-trigger.js +12 -10
  258. package/dist/collection/components/alert-dialog/seki-alert-dialog-action.css +5 -5
  259. package/dist/collection/components/alert-dialog/seki-alert-dialog-cancel.css +4 -4
  260. package/dist/collection/components/alert-dialog/seki-alert-dialog-content.js +22 -20
  261. package/dist/collection/components/button/seki-button.css +9 -9
  262. package/dist/collection/components/calendar/seki-calendar.js +14 -5
  263. package/dist/collection/components/carousel/seki-carousel-dots.js +3 -3
  264. package/dist/collection/components/carousel/seki-carousel-next.js +3 -3
  265. package/dist/collection/components/carousel/seki-carousel-previous.js +3 -3
  266. package/dist/collection/components/carousel/seki-carousel.js +22 -4
  267. package/dist/collection/components/collapsible/seki-collapsible-content.js +9 -5
  268. package/dist/collection/components/combobox-item/seki-combobox-item.js +9 -2
  269. package/dist/collection/components/command/seki-command-group.js +9 -7
  270. package/dist/collection/components/context-menu/seki-context-menu-content.js +17 -15
  271. package/dist/collection/components/context-menu/seki-context-menu.js +11 -2
  272. package/dist/collection/components/data-table/seki-data-table.css +5 -5
  273. package/dist/collection/components/data-table/seki-data-table.js +18 -15
  274. package/dist/collection/components/dialog/seki-dialog-content.js +22 -20
  275. package/dist/collection/components/dialog/seki-dialog-overlay.js +10 -8
  276. package/dist/collection/components/dialog/seki-dialog.js +17 -1
  277. package/dist/collection/components/dropdown-menu/seki-dropdown-menu-content.js +23 -68
  278. package/dist/collection/components/dropdown-menu/seki-dropdown-menu-radio.js +11 -9
  279. package/dist/collection/components/dropdown-menu/seki-dropdown-menu-trigger.js +11 -9
  280. package/dist/collection/components/dropdown-menu/seki-dropdown-menu.js +11 -2
  281. package/dist/collection/components/marker/seki-marker-content.css +819 -0
  282. package/dist/collection/components/marker/seki-marker-content.js +74 -0
  283. package/dist/collection/components/marker/seki-marker-icon.css +781 -0
  284. package/dist/collection/components/marker/seki-marker-icon.js +36 -0
  285. package/dist/collection/components/marker/seki-marker.css +828 -0
  286. package/dist/collection/components/marker/seki-marker.interface.js +1 -0
  287. package/dist/collection/components/marker/seki-marker.js +94 -0
  288. package/dist/collection/components/menubar/seki-menubar-checkbox.js +2 -2
  289. package/dist/collection/components/menubar/seki-menubar-content.js +24 -42
  290. package/dist/collection/components/menubar/seki-menubar-group.js +1 -1
  291. package/dist/collection/components/menubar/seki-menubar-item.js +2 -2
  292. package/dist/collection/components/menubar/seki-menubar-menu.js +1 -1
  293. package/dist/collection/components/menubar/seki-menubar-radio-group.js +1 -1
  294. package/dist/collection/components/menubar/seki-menubar-radio.js +11 -9
  295. package/dist/collection/components/menubar/seki-menubar-separator.js +1 -1
  296. package/dist/collection/components/menubar/seki-menubar-shortcut.js +1 -1
  297. package/dist/collection/components/menubar/seki-menubar-sub-trigger.js +2 -2
  298. package/dist/collection/components/menubar/seki-menubar-sub.js +1 -1
  299. package/dist/collection/components/menubar/seki-menubar-trigger.js +12 -10
  300. package/dist/collection/components/menubar/seki-menubar.js +11 -2
  301. package/dist/collection/components/native-select/seki-native-select.js +1 -1
  302. package/dist/collection/components/navigation-menu/seki-navigation-menu-content.css +1 -1
  303. package/dist/collection/components/navigation-menu/seki-navigation-menu-content.js +7 -2
  304. package/dist/collection/components/navigation-menu/seki-navigation-menu-item.js +2 -2
  305. package/dist/collection/components/navigation-menu/seki-navigation-menu-link.css +1 -1
  306. package/dist/collection/components/navigation-menu/seki-navigation-menu-link.js +7 -2
  307. package/dist/collection/components/navigation-menu/seki-navigation-menu-list.css +1 -1
  308. package/dist/collection/components/navigation-menu/seki-navigation-menu-list.js +6 -1
  309. package/dist/collection/components/navigation-menu/seki-navigation-menu-trigger.js +3 -3
  310. package/dist/collection/components/navigation-menu/seki-navigation-menu-viewport.js +2 -2
  311. package/dist/collection/components/navigation-menu/seki-navigation-menu.js +5 -5
  312. package/dist/collection/components/pagination/seki-pagination-content.js +1 -1
  313. package/dist/collection/components/pagination/seki-pagination-ellipsis.js +1 -1
  314. package/dist/collection/components/pagination/seki-pagination-item.js +1 -1
  315. package/dist/collection/components/pagination/seki-pagination-link.js +2 -2
  316. package/dist/collection/components/pagination/seki-pagination-next.js +2 -2
  317. package/dist/collection/components/pagination/seki-pagination-previous.js +2 -2
  318. package/dist/collection/components/pagination/seki-pagination.js +1 -1
  319. package/dist/collection/components/popover/seki-popover-close.js +1 -1
  320. package/dist/collection/components/popover/seki-popover-content.js +20 -65
  321. package/dist/collection/components/popover/seki-popover-trigger.js +1 -1
  322. package/dist/collection/components/popover/seki-popover.js +13 -3
  323. package/dist/collection/components/progress/seki-progress.js +1 -1
  324. package/dist/collection/components/radio-group/seki-radio-group-item.js +1 -1
  325. package/dist/collection/components/radio-group/seki-radio-group.js +1 -1
  326. package/dist/collection/components/resizable/seki-resizable-handle.js +2 -2
  327. package/dist/collection/components/resizable/seki-resizable-panel-group.js +2 -2
  328. package/dist/collection/components/resizable/seki-resizable-panel.js +3 -3
  329. package/dist/collection/components/scroll-area/seki-scroll-area.js +1 -1
  330. package/dist/collection/components/scroll-area/seki-scroll-bar.css +5 -5
  331. package/dist/collection/components/scroll-area/seki-scroll-bar.js +5 -1
  332. package/dist/collection/components/select/seki-select.js +77 -30
  333. package/dist/collection/components/select-group/seki-select-group.js +1 -1
  334. package/dist/collection/components/select-option/seki-select-option.js +29 -13
  335. package/dist/collection/components/separator/seki-separator.js +1 -1
  336. package/dist/collection/components/sheet/seki-sheet-close.js +1 -1
  337. package/dist/collection/components/sheet/seki-sheet-description.js +1 -1
  338. package/dist/collection/components/sheet/seki-sheet-footer.js +1 -1
  339. package/dist/collection/components/sheet/seki-sheet-header.js +1 -1
  340. package/dist/collection/components/sheet/seki-sheet-title.js +1 -1
  341. package/dist/collection/components/sheet/seki-sheet-trigger.js +1 -1
  342. package/dist/collection/components/sheet/seki-sheet.js +2 -2
  343. package/dist/collection/components/sidebar/seki-sidebar-content.js +1 -1
  344. package/dist/collection/components/sidebar/seki-sidebar-footer.js +1 -1
  345. package/dist/collection/components/sidebar/seki-sidebar-group-action.js +1 -1
  346. package/dist/collection/components/sidebar/seki-sidebar-group-content.js +1 -1
  347. package/dist/collection/components/sidebar/seki-sidebar-group-label.js +1 -1
  348. package/dist/collection/components/sidebar/seki-sidebar-group.js +1 -1
  349. package/dist/collection/components/sidebar/seki-sidebar-header.js +1 -1
  350. package/dist/collection/components/sidebar/seki-sidebar-inset.js +1 -1
  351. package/dist/collection/components/sidebar/seki-sidebar-menu-action.js +1 -1
  352. package/dist/collection/components/sidebar/seki-sidebar-menu-badge.js +1 -1
  353. package/dist/collection/components/sidebar/seki-sidebar-menu-button.js +1 -1
  354. package/dist/collection/components/sidebar/seki-sidebar-menu-item.js +1 -1
  355. package/dist/collection/components/sidebar/seki-sidebar-menu-skeleton.js +1 -1
  356. package/dist/collection/components/sidebar/seki-sidebar-menu-sub-button.js +2 -2
  357. package/dist/collection/components/sidebar/seki-sidebar-menu-sub-item.js +1 -1
  358. package/dist/collection/components/sidebar/seki-sidebar-menu-sub.js +17 -16
  359. package/dist/collection/components/sidebar/seki-sidebar-menu.js +1 -1
  360. package/dist/collection/components/sidebar/seki-sidebar-provider.js +13 -4
  361. package/dist/collection/components/sidebar/seki-sidebar-rail.css +6 -6
  362. package/dist/collection/components/sidebar/seki-sidebar-rail.js +6 -1
  363. package/dist/collection/components/sidebar/seki-sidebar-separator.js +1 -1
  364. package/dist/collection/components/sidebar/seki-sidebar-trigger.js +1 -1
  365. package/dist/collection/components/sidebar/seki-sidebar.js +2 -2
  366. package/dist/collection/components/skeleton/seki-skeleton.js +1 -1
  367. package/dist/collection/components/slider/seki-slider.js +36 -2
  368. package/dist/collection/components/spinner/seki-spinner.js +2 -2
  369. package/dist/collection/components/table/seki-table-body.js +1 -1
  370. package/dist/collection/components/table/seki-table-caption.js +1 -1
  371. package/dist/collection/components/table/seki-table-footer.js +1 -1
  372. package/dist/collection/components/table/seki-table-header.js +1 -1
  373. package/dist/collection/components/table/seki-table-row.js +2 -2
  374. package/dist/collection/components/table/seki-table.js +1 -1
  375. package/dist/collection/components/tabs/seki-tabs-content.js +12 -10
  376. package/dist/collection/components/tabs/seki-tabs-list.js +2 -2
  377. package/dist/collection/components/tabs/seki-tabs-trigger.js +12 -10
  378. package/dist/collection/components/tabs/seki-tabs.js +2 -2
  379. package/dist/collection/components/textarea/seki-textarea.js +1 -1
  380. package/dist/collection/components/toggle/seki-toggle.js +1 -1
  381. package/dist/collection/components/toggle-group/seki-toggle-group.js +1 -1
  382. package/dist/collection/components/tooltip/seki-tooltip.js +16 -3
  383. package/dist/collection/utils/ancestor-attrs.js +43 -0
  384. package/dist/collection/utils/calendar/date-utils.js +12 -4
  385. package/dist/collection/utils/dialog/focus-trap.js +110 -21
  386. package/dist/collection/utils/positioning.js +61 -0
  387. package/dist/components/p-BgtjDG0h.js +45 -0
  388. package/dist/components/{p-tgCyk_Am.js → p-C87BOunl.js} +18 -3
  389. package/dist/components/{p-JT4r_mV0.js → p-CSf6znuo.js} +2 -2
  390. package/dist/components/p-D50kwTtW.js +160 -0
  391. package/dist/components/{p-DKbSEP4m.js → p-DFfIiiRa.js} +25 -8
  392. package/dist/components/p-DuJp0Kp6.js +63 -0
  393. package/dist/components/{p-XaV1Vzwc.js → p-N19kpeHI.js} +1 -1
  394. package/dist/components/seki-accordion-content.js +10 -8
  395. package/dist/components/seki-accordion-item.js +12 -10
  396. package/dist/components/seki-accordion-trigger.js +12 -10
  397. package/dist/components/seki-alert-dialog-action.js +1 -1
  398. package/dist/components/seki-alert-dialog-cancel.js +1 -1
  399. package/dist/components/seki-alert-dialog-content.js +23 -21
  400. package/dist/components/seki-alert-dialog.js +1 -1
  401. package/dist/components/seki-button.js +1 -1
  402. package/dist/components/seki-calendar.js +1 -1
  403. package/dist/components/seki-carousel-dots.js +3 -3
  404. package/dist/components/seki-carousel-next.js +3 -3
  405. package/dist/components/seki-carousel-previous.js +3 -3
  406. package/dist/components/seki-carousel.js +22 -4
  407. package/dist/components/seki-collapsible-content.js +9 -5
  408. package/dist/components/seki-combobox-item.js +9 -2
  409. package/dist/components/seki-command-group.js +9 -7
  410. package/dist/components/seki-context-menu-content.js +17 -15
  411. package/dist/components/seki-context-menu.js +11 -2
  412. package/dist/components/seki-data-table.js +19 -16
  413. package/dist/components/seki-date-picker.js +1 -1
  414. package/dist/components/seki-dialog-content.js +23 -21
  415. package/dist/components/seki-dialog-overlay.js +10 -8
  416. package/dist/components/seki-dialog.js +1 -1
  417. package/dist/components/seki-dropdown-menu-content.js +23 -68
  418. package/dist/components/seki-dropdown-menu-radio.js +11 -9
  419. package/dist/components/seki-dropdown-menu-trigger.js +11 -9
  420. package/dist/components/seki-dropdown-menu.js +11 -2
  421. package/dist/components/seki-marker-content.d.ts +11 -0
  422. package/dist/components/seki-marker-content.js +55 -0
  423. package/dist/components/seki-marker-icon.d.ts +11 -0
  424. package/dist/components/seki-marker-icon.js +43 -0
  425. package/dist/components/seki-marker.d.ts +11 -0
  426. package/dist/components/seki-marker.js +60 -0
  427. package/dist/components/seki-menubar-checkbox.js +2 -2
  428. package/dist/components/seki-menubar-content.js +24 -42
  429. package/dist/components/seki-menubar-group.js +1 -1
  430. package/dist/components/seki-menubar-item.js +2 -2
  431. package/dist/components/seki-menubar-menu.js +1 -1
  432. package/dist/components/seki-menubar-radio-group.js +1 -1
  433. package/dist/components/seki-menubar-radio.js +11 -9
  434. package/dist/components/seki-menubar-separator.js +1 -1
  435. package/dist/components/seki-menubar-shortcut.js +1 -1
  436. package/dist/components/seki-menubar-sub-trigger.js +2 -2
  437. package/dist/components/seki-menubar-sub.js +1 -1
  438. package/dist/components/seki-menubar-trigger.js +12 -10
  439. package/dist/components/seki-menubar.js +11 -2
  440. package/dist/components/seki-native-select.js +1 -1
  441. package/dist/components/seki-navigation-menu-content.js +8 -3
  442. package/dist/components/seki-navigation-menu-item.js +2 -2
  443. package/dist/components/seki-navigation-menu-link.js +8 -3
  444. package/dist/components/seki-navigation-menu-list.js +7 -2
  445. package/dist/components/seki-navigation-menu-trigger.js +3 -3
  446. package/dist/components/seki-navigation-menu-viewport.js +1 -1
  447. package/dist/components/seki-navigation-menu.js +6 -6
  448. package/dist/components/seki-pagination-content.js +1 -1
  449. package/dist/components/seki-pagination-ellipsis.js +1 -1
  450. package/dist/components/seki-pagination-item.js +1 -1
  451. package/dist/components/seki-pagination-link.js +2 -2
  452. package/dist/components/seki-pagination-next.js +2 -2
  453. package/dist/components/seki-pagination-previous.js +2 -2
  454. package/dist/components/seki-pagination.js +1 -1
  455. package/dist/components/seki-popover-close.js +1 -1
  456. package/dist/components/seki-popover-content.js +20 -65
  457. package/dist/components/seki-popover-trigger.js +1 -1
  458. package/dist/components/seki-popover.js +13 -3
  459. package/dist/components/seki-progress.js +1 -1
  460. package/dist/components/seki-radio-group-item.js +1 -1
  461. package/dist/components/seki-radio-group.js +1 -1
  462. package/dist/components/seki-resizable-handle.js +2 -2
  463. package/dist/components/seki-resizable-panel-group.js +2 -2
  464. package/dist/components/seki-resizable-panel.js +3 -3
  465. package/dist/components/seki-scroll-area.js +1 -1
  466. package/dist/components/seki-scroll-bar.js +6 -2
  467. package/dist/components/seki-select-group.js +1 -1
  468. package/dist/components/seki-select-option.js +29 -13
  469. package/dist/components/seki-select.js +79 -33
  470. package/dist/components/seki-separator.js +1 -1
  471. package/dist/components/seki-sheet-close.js +1 -1
  472. package/dist/components/seki-sheet-description.js +1 -1
  473. package/dist/components/seki-sheet-footer.js +1 -1
  474. package/dist/components/seki-sheet-header.js +1 -1
  475. package/dist/components/seki-sheet-title.js +1 -1
  476. package/dist/components/seki-sheet-trigger.js +1 -1
  477. package/dist/components/seki-sheet.js +2 -2
  478. package/dist/components/seki-sidebar-content.js +1 -1
  479. package/dist/components/seki-sidebar-footer.js +1 -1
  480. package/dist/components/seki-sidebar-group-action.js +1 -1
  481. package/dist/components/seki-sidebar-group-content.js +1 -1
  482. package/dist/components/seki-sidebar-group-label.js +1 -1
  483. package/dist/components/seki-sidebar-group.js +2 -2
  484. package/dist/components/seki-sidebar-header.js +1 -1
  485. package/dist/components/seki-sidebar-inset.js +1 -1
  486. package/dist/components/seki-sidebar-menu-action.js +1 -1
  487. package/dist/components/seki-sidebar-menu-badge.js +1 -1
  488. package/dist/components/seki-sidebar-menu-button.js +1 -1
  489. package/dist/components/seki-sidebar-menu-item.js +1 -1
  490. package/dist/components/seki-sidebar-menu-skeleton.js +1 -1
  491. package/dist/components/seki-sidebar-menu-sub-button.js +2 -2
  492. package/dist/components/seki-sidebar-menu-sub-item.js +1 -1
  493. package/dist/components/seki-sidebar-menu-sub.js +17 -16
  494. package/dist/components/seki-sidebar-menu.js +1 -1
  495. package/dist/components/seki-sidebar-provider.js +13 -4
  496. package/dist/components/seki-sidebar-rail.js +7 -2
  497. package/dist/components/seki-sidebar-separator.js +1 -1
  498. package/dist/components/seki-sidebar-trigger.js +1 -1
  499. package/dist/components/seki-sidebar.js +2 -2
  500. package/dist/components/seki-skeleton.js +1 -1
  501. package/dist/components/seki-slider.js +36 -4
  502. package/dist/components/seki-spinner.js +2 -2
  503. package/dist/components/seki-table-body.js +1 -1
  504. package/dist/components/seki-table-caption.js +1 -1
  505. package/dist/components/seki-table-footer.js +1 -1
  506. package/dist/components/seki-table-header.js +1 -1
  507. package/dist/components/seki-table-row.js +2 -2
  508. package/dist/components/seki-table.js +1 -1
  509. package/dist/components/seki-tabs-content.js +12 -10
  510. package/dist/components/seki-tabs-list.js +2 -2
  511. package/dist/components/seki-tabs-trigger.js +12 -10
  512. package/dist/components/seki-tabs.js +2 -2
  513. package/dist/components/seki-textarea.js +1 -1
  514. package/dist/components/seki-toggle-group.js +1 -1
  515. package/dist/components/seki-toggle.js +1 -1
  516. package/dist/components/seki-tooltip.js +16 -3
  517. package/dist/esm/ancestor-attrs-BgtjDG0h.js +45 -0
  518. package/dist/esm/focus-trap-D50kwTtW.js +160 -0
  519. package/dist/esm/loader.js +1 -1
  520. package/dist/esm/positioning-DuJp0Kp6.js +63 -0
  521. package/dist/esm/seki-accordion-content.entry.js +10 -8
  522. package/dist/esm/seki-accordion-item.entry.js +12 -10
  523. package/dist/esm/seki-accordion-trigger.entry.js +12 -10
  524. package/dist/esm/seki-alert-dialog-action.entry.js +1 -1
  525. package/dist/esm/seki-alert-dialog-cancel.entry.js +1 -1
  526. package/dist/esm/seki-alert-dialog-content.entry.js +23 -21
  527. package/dist/esm/seki-button.entry.js +1 -1
  528. package/dist/esm/seki-calendar.entry.js +25 -8
  529. package/dist/esm/seki-carousel-dots.entry.js +3 -3
  530. package/dist/esm/seki-carousel-next.entry.js +3 -3
  531. package/dist/esm/seki-carousel-previous.entry.js +3 -3
  532. package/dist/esm/seki-carousel.entry.js +22 -4
  533. package/dist/esm/seki-collapsible-content.entry.js +9 -5
  534. package/dist/esm/seki-combobox-item.entry.js +9 -2
  535. package/dist/esm/seki-command-group.entry.js +9 -7
  536. package/dist/esm/seki-context-menu-content.entry.js +17 -15
  537. package/dist/esm/seki-context-menu.entry.js +11 -2
  538. package/dist/esm/seki-data-table.entry.js +19 -16
  539. package/dist/esm/seki-dialog-content.entry.js +23 -21
  540. package/dist/esm/seki-dialog-overlay.entry.js +10 -8
  541. package/dist/esm/seki-dialog.entry.js +15 -2
  542. package/dist/esm/seki-dropdown-menu-content.entry.js +23 -68
  543. package/dist/esm/seki-dropdown-menu-radio.entry.js +11 -9
  544. package/dist/esm/seki-dropdown-menu-trigger.entry.js +11 -9
  545. package/dist/esm/seki-dropdown-menu.entry.js +11 -2
  546. package/dist/esm/seki-marker-content.entry.js +33 -0
  547. package/dist/esm/seki-marker-icon.entry.js +23 -0
  548. package/dist/esm/seki-marker.entry.js +38 -0
  549. package/dist/esm/seki-menubar-checkbox.entry.js +2 -2
  550. package/dist/esm/seki-menubar-content.entry.js +24 -42
  551. package/dist/esm/seki-menubar-group.entry.js +1 -1
  552. package/dist/esm/seki-menubar-item.entry.js +2 -2
  553. package/dist/esm/seki-menubar-menu.entry.js +1 -1
  554. package/dist/esm/seki-menubar-radio-group.entry.js +1 -1
  555. package/dist/esm/seki-menubar-radio.entry.js +11 -9
  556. package/dist/esm/seki-menubar-separator.entry.js +1 -1
  557. package/dist/esm/seki-menubar-shortcut.entry.js +1 -1
  558. package/dist/esm/seki-menubar-sub-trigger.entry.js +2 -2
  559. package/dist/esm/seki-menubar-sub.entry.js +1 -1
  560. package/dist/esm/seki-menubar-trigger.entry.js +12 -10
  561. package/dist/esm/seki-menubar.entry.js +11 -2
  562. package/dist/esm/seki-native-select.entry.js +1 -1
  563. package/dist/esm/seki-navigation-menu-content.entry.js +8 -3
  564. package/dist/esm/seki-navigation-menu-item.entry.js +2 -2
  565. package/dist/esm/seki-navigation-menu-link.entry.js +8 -3
  566. package/dist/esm/seki-navigation-menu-list.entry.js +7 -2
  567. package/dist/esm/seki-navigation-menu-trigger.entry.js +3 -3
  568. package/dist/esm/seki-navigation-menu-viewport.entry.js +2 -2
  569. package/dist/esm/seki-navigation-menu.entry.js +5 -5
  570. package/dist/esm/seki-pagination-content.entry.js +1 -1
  571. package/dist/esm/seki-pagination-ellipsis.entry.js +1 -1
  572. package/dist/esm/seki-pagination-item.entry.js +1 -1
  573. package/dist/esm/seki-pagination-link.entry.js +2 -2
  574. package/dist/esm/seki-pagination-next.entry.js +2 -2
  575. package/dist/esm/seki-pagination-previous.entry.js +2 -2
  576. package/dist/esm/seki-pagination.entry.js +1 -1
  577. package/dist/esm/seki-popover-close.entry.js +1 -1
  578. package/dist/esm/seki-popover-content.entry.js +20 -65
  579. package/dist/esm/seki-popover-trigger.entry.js +1 -1
  580. package/dist/esm/seki-popover.entry.js +13 -3
  581. package/dist/esm/seki-progress.entry.js +1 -1
  582. package/dist/esm/seki-radio-group-item.entry.js +1 -1
  583. package/dist/esm/seki-radio-group.entry.js +1 -1
  584. package/dist/esm/seki-resizable-handle.entry.js +2 -2
  585. package/dist/esm/seki-resizable-panel-group.entry.js +2 -2
  586. package/dist/esm/seki-resizable-panel.entry.js +3 -3
  587. package/dist/esm/seki-scroll-area.entry.js +1 -1
  588. package/dist/esm/seki-scroll-bar.entry.js +6 -2
  589. package/dist/esm/seki-select-group.entry.js +1 -1
  590. package/dist/esm/seki-select-option.entry.js +29 -13
  591. package/dist/esm/seki-select.entry.js +81 -30
  592. package/dist/esm/seki-separator.entry.js +1 -1
  593. package/dist/esm/seki-sheet-close.entry.js +1 -1
  594. package/dist/esm/seki-sheet-description.entry.js +1 -1
  595. package/dist/esm/seki-sheet-footer.entry.js +1 -1
  596. package/dist/esm/seki-sheet-header.entry.js +1 -1
  597. package/dist/esm/seki-sheet-title.entry.js +1 -1
  598. package/dist/esm/seki-sheet-trigger.entry.js +1 -1
  599. package/dist/esm/seki-sheet.entry.js +2 -2
  600. package/dist/esm/seki-sidebar-content.entry.js +1 -1
  601. package/dist/esm/seki-sidebar-footer.entry.js +1 -1
  602. package/dist/esm/seki-sidebar-group-action.entry.js +1 -1
  603. package/dist/esm/seki-sidebar-group-content.entry.js +1 -1
  604. package/dist/esm/seki-sidebar-group-label.entry.js +1 -1
  605. package/dist/esm/seki-sidebar-group.entry.js +1 -1
  606. package/dist/esm/seki-sidebar-header.entry.js +1 -1
  607. package/dist/esm/seki-sidebar-inset.entry.js +1 -1
  608. package/dist/esm/seki-sidebar-menu-action.entry.js +1 -1
  609. package/dist/esm/seki-sidebar-menu-badge.entry.js +1 -1
  610. package/dist/esm/seki-sidebar-menu-button.entry.js +1 -1
  611. package/dist/esm/seki-sidebar-menu-item.entry.js +1 -1
  612. package/dist/esm/seki-sidebar-menu-skeleton.entry.js +1 -1
  613. package/dist/esm/seki-sidebar-menu-sub-button.entry.js +2 -2
  614. package/dist/esm/seki-sidebar-menu-sub-item.entry.js +1 -1
  615. package/dist/esm/seki-sidebar-menu-sub.entry.js +17 -16
  616. package/dist/esm/seki-sidebar-menu.entry.js +1 -1
  617. package/dist/esm/seki-sidebar-provider.entry.js +13 -4
  618. package/dist/esm/seki-sidebar-rail.entry.js +7 -2
  619. package/dist/esm/seki-sidebar-separator.entry.js +1 -1
  620. package/dist/esm/seki-sidebar-trigger.entry.js +1 -1
  621. package/dist/esm/seki-sidebar.entry.js +2 -2
  622. package/dist/esm/seki-skeleton.entry.js +1 -1
  623. package/dist/esm/seki-slider.entry.js +36 -1
  624. package/dist/esm/seki-spinner.entry.js +2 -2
  625. package/dist/esm/seki-table-body.entry.js +1 -1
  626. package/dist/esm/seki-table-caption.entry.js +1 -1
  627. package/dist/esm/seki-table-footer.entry.js +1 -1
  628. package/dist/esm/seki-table-header.entry.js +1 -1
  629. package/dist/esm/seki-table-row.entry.js +2 -2
  630. package/dist/esm/seki-table.entry.js +1 -1
  631. package/dist/esm/seki-tabs-content.entry.js +12 -10
  632. package/dist/esm/seki-tabs-list.entry.js +2 -2
  633. package/dist/esm/seki-tabs-trigger.entry.js +12 -10
  634. package/dist/esm/seki-tabs.entry.js +2 -2
  635. package/dist/esm/seki-textarea.entry.js +1 -1
  636. package/dist/esm/seki-toggle-group.entry.js +1 -1
  637. package/dist/esm/seki-toggle.entry.js +1 -1
  638. package/dist/esm/seki-tooltip.entry.js +16 -3
  639. package/dist/esm/sekiui.js +1 -1
  640. package/dist/sekiui/{p-9643e1d8.entry.js → p-021cb880.entry.js} +1 -1
  641. package/dist/sekiui/p-066335d1.entry.js +1 -0
  642. package/dist/sekiui/{p-91d532fa.entry.js → p-0814fbc8.entry.js} +1 -1
  643. package/dist/sekiui/{p-e5b6e371.entry.js → p-08692454.entry.js} +1 -1
  644. package/dist/sekiui/p-0ab43c7f.entry.js +1 -0
  645. package/dist/sekiui/{p-9f686359.entry.js → p-0bbfe090.entry.js} +1 -1
  646. package/dist/sekiui/{p-e8fb6780.entry.js → p-0f551417.entry.js} +1 -1
  647. package/dist/sekiui/{p-41f5488e.entry.js → p-106d6d5d.entry.js} +1 -1
  648. package/dist/sekiui/{p-b664489e.entry.js → p-10fb3df9.entry.js} +1 -1
  649. package/dist/sekiui/p-1322c161.entry.js +1 -0
  650. package/dist/sekiui/{p-c2084566.entry.js → p-166024da.entry.js} +1 -1
  651. package/dist/sekiui/{p-3059ebb5.entry.js → p-1aecea25.entry.js} +1 -1
  652. package/dist/sekiui/{p-d02efcf2.entry.js → p-1b8d2288.entry.js} +1 -1
  653. package/dist/sekiui/{p-ab3f43f4.entry.js → p-1db10de9.entry.js} +1 -1
  654. package/dist/sekiui/{p-08a65cc0.entry.js → p-1dfe4e59.entry.js} +1 -1
  655. package/dist/sekiui/{p-430350fa.entry.js → p-1efbd2cc.entry.js} +1 -1
  656. package/dist/sekiui/{p-9889afcd.entry.js → p-27ff2f8a.entry.js} +1 -1
  657. package/dist/sekiui/p-29403139.entry.js +1 -0
  658. package/dist/sekiui/{p-173c36ae.entry.js → p-2a9e0bbb.entry.js} +1 -1
  659. package/dist/sekiui/{p-e6631daa.entry.js → p-2cb4156a.entry.js} +1 -1
  660. package/dist/sekiui/{p-a60699ea.entry.js → p-2d2194ee.entry.js} +1 -1
  661. package/dist/sekiui/p-2de73747.entry.js +1 -0
  662. package/dist/sekiui/{p-5968bc31.entry.js → p-306728c1.entry.js} +1 -1
  663. package/dist/sekiui/{p-a5edaf79.entry.js → p-320bb24e.entry.js} +1 -1
  664. package/dist/sekiui/p-32569d7d.entry.js +1 -0
  665. package/dist/sekiui/p-367d9a7f.entry.js +1 -0
  666. package/dist/sekiui/p-3892c6af.entry.js +1 -0
  667. package/dist/sekiui/p-4267d0fc.entry.js +1 -0
  668. package/dist/sekiui/{p-f05f830a.entry.js → p-42e1f027.entry.js} +1 -1
  669. package/dist/sekiui/{p-894d0adc.entry.js → p-44aed379.entry.js} +1 -1
  670. package/dist/sekiui/p-49024e9e.entry.js +1 -0
  671. package/dist/sekiui/p-4a2843e3.entry.js +1 -0
  672. package/dist/sekiui/{p-0c2344d1.entry.js → p-4bf8c2fa.entry.js} +1 -1
  673. package/dist/sekiui/{p-b14ba603.entry.js → p-4cd3eb61.entry.js} +1 -1
  674. package/dist/sekiui/p-4ce03f18.entry.js +1 -0
  675. package/dist/sekiui/p-4e60d2d0.entry.js +1 -0
  676. package/dist/sekiui/p-5230348b.entry.js +1 -0
  677. package/dist/sekiui/{p-61bc6d26.entry.js → p-56ea6a48.entry.js} +1 -1
  678. package/dist/sekiui/{p-541f1dbb.entry.js → p-57e7685a.entry.js} +1 -1
  679. package/dist/sekiui/p-5bb3aeb5.entry.js +1 -0
  680. package/dist/sekiui/{p-3003d573.entry.js → p-5cd6cb04.entry.js} +1 -1
  681. package/dist/sekiui/{p-2c763d0e.entry.js → p-60c7a8af.entry.js} +1 -1
  682. package/dist/sekiui/{p-d88390d7.entry.js → p-62fd375a.entry.js} +1 -1
  683. package/dist/sekiui/{p-c3d1dc4c.entry.js → p-66f986d4.entry.js} +1 -1
  684. package/dist/sekiui/{p-e2ca8e81.entry.js → p-6767bd6c.entry.js} +1 -1
  685. package/dist/sekiui/{p-c1bf976b.entry.js → p-692a285f.entry.js} +1 -1
  686. package/dist/sekiui/{p-3a7b862a.entry.js → p-6ada6c09.entry.js} +1 -1
  687. package/dist/sekiui/{p-bd9d106a.entry.js → p-6c516e05.entry.js} +1 -1
  688. package/dist/sekiui/{p-85e0ad8d.entry.js → p-7110a631.entry.js} +1 -1
  689. package/dist/sekiui/{p-96073eae.entry.js → p-75d46bc7.entry.js} +1 -1
  690. package/dist/sekiui/{p-a4a5f457.entry.js → p-7657eae6.entry.js} +1 -1
  691. package/dist/sekiui/{p-6288801d.entry.js → p-7826af1f.entry.js} +1 -1
  692. package/dist/sekiui/p-7a264cf2.entry.js +1 -0
  693. package/dist/sekiui/p-7cd76bbb.entry.js +1 -0
  694. package/dist/sekiui/p-80b79cc0.entry.js +1 -0
  695. package/dist/sekiui/p-835f723b.entry.js +1 -0
  696. package/dist/sekiui/{p-f5c7a1fb.entry.js → p-84ac24a3.entry.js} +1 -1
  697. package/dist/sekiui/{p-c2e6ca4d.entry.js → p-87db7107.entry.js} +1 -1
  698. package/dist/sekiui/{p-8344563b.entry.js → p-8877c41b.entry.js} +1 -1
  699. package/dist/sekiui/{p-9dfa69b2.entry.js → p-88a81c85.entry.js} +1 -1
  700. package/dist/sekiui/{p-84a8301f.entry.js → p-8b96a324.entry.js} +1 -1
  701. package/dist/sekiui/{p-7bf379c4.entry.js → p-8c369957.entry.js} +1 -1
  702. package/dist/sekiui/p-8d888e3d.entry.js +1 -0
  703. package/dist/sekiui/{p-3e01b3c9.entry.js → p-92b0241d.entry.js} +1 -1
  704. package/dist/sekiui/{p-30aa2790.entry.js → p-932b9be7.entry.js} +1 -1
  705. package/dist/sekiui/{p-4e7809d4.entry.js → p-94257ae8.entry.js} +1 -1
  706. package/dist/sekiui/p-945f6c37.entry.js +1 -0
  707. package/dist/sekiui/{p-646de69e.entry.js → p-948403e2.entry.js} +1 -1
  708. package/dist/sekiui/{p-fc6d6133.entry.js → p-966b2358.entry.js} +1 -1
  709. package/dist/sekiui/{p-40458a33.entry.js → p-97490dae.entry.js} +1 -1
  710. package/dist/sekiui/{p-4c9ab985.entry.js → p-98e730ec.entry.js} +1 -1
  711. package/dist/sekiui/{p-5ccd6a77.entry.js → p-9a6332aa.entry.js} +1 -1
  712. package/dist/sekiui/{p-3e3b7706.entry.js → p-9aa6ff08.entry.js} +1 -1
  713. package/dist/sekiui/p-BgtjDG0h.js +1 -0
  714. package/dist/sekiui/p-D50kwTtW.js +1 -0
  715. package/dist/sekiui/p-DuJp0Kp6.js +1 -0
  716. package/dist/sekiui/{p-044401c6.entry.js → p-a22bbd5d.entry.js} +1 -1
  717. package/dist/sekiui/p-a29160bc.entry.js +1 -0
  718. package/dist/sekiui/p-a2e2356a.entry.js +1 -0
  719. package/dist/sekiui/p-a6ae5c4b.entry.js +1 -0
  720. package/dist/sekiui/{p-7b13dd19.entry.js → p-a7d64ac6.entry.js} +1 -1
  721. package/dist/sekiui/p-b195501f.entry.js +1 -0
  722. package/dist/sekiui/{p-73cbd067.entry.js → p-b2a60e91.entry.js} +1 -1
  723. package/dist/sekiui/{p-6d052d09.entry.js → p-b83366e6.entry.js} +1 -1
  724. package/dist/sekiui/{p-66b1c2ac.entry.js → p-ba77c385.entry.js} +1 -1
  725. package/dist/sekiui/{p-d5b616c5.entry.js → p-bac67676.entry.js} +1 -1
  726. package/dist/sekiui/{p-2716f5fc.entry.js → p-c5b5908d.entry.js} +1 -1
  727. package/dist/sekiui/{p-1e69968f.entry.js → p-c6740b25.entry.js} +1 -1
  728. package/dist/sekiui/{p-c39f1cc0.entry.js → p-c8098bcc.entry.js} +1 -1
  729. package/dist/sekiui/{p-41fae140.entry.js → p-cb657adb.entry.js} +1 -1
  730. package/dist/sekiui/{p-13cbff44.entry.js → p-ccaaddff.entry.js} +1 -1
  731. package/dist/sekiui/p-cf63f5a6.entry.js +1 -0
  732. package/dist/sekiui/{p-fa9a68be.entry.js → p-cfac56e7.entry.js} +1 -1
  733. package/dist/sekiui/{p-ddb4b545.entry.js → p-d0389d4f.entry.js} +1 -1
  734. package/dist/sekiui/p-d112d16c.entry.js +1 -0
  735. package/dist/sekiui/p-d1338ac4.entry.js +1 -0
  736. package/dist/sekiui/p-d1f6efac.entry.js +1 -0
  737. package/dist/sekiui/p-d4d88be4.entry.js +1 -0
  738. package/dist/sekiui/{p-0ec8b378.entry.js → p-d68f4cef.entry.js} +1 -1
  739. package/dist/sekiui/{p-d973c5cc.entry.js → p-d8bcb9e9.entry.js} +1 -1
  740. package/dist/sekiui/{p-877dec15.entry.js → p-d918ec38.entry.js} +1 -1
  741. package/dist/sekiui/{p-fd508d82.entry.js → p-da58d699.entry.js} +1 -1
  742. package/dist/sekiui/{p-a0578037.entry.js → p-df3d0679.entry.js} +1 -1
  743. package/dist/sekiui/p-e1e0e982.entry.js +1 -0
  744. package/dist/sekiui/{p-bf52433b.entry.js → p-e2401619.entry.js} +1 -1
  745. package/dist/sekiui/{p-6a8cc4b5.entry.js → p-e2e20093.entry.js} +1 -1
  746. package/dist/sekiui/{p-7ef4fb97.entry.js → p-e35b8b6e.entry.js} +1 -1
  747. package/dist/sekiui/{p-7592fd90.entry.js → p-e7b8973e.entry.js} +1 -1
  748. package/dist/sekiui/{p-5a853b23.entry.js → p-ea2a01dd.entry.js} +1 -1
  749. package/dist/sekiui/p-eaf626e5.entry.js +1 -0
  750. package/dist/sekiui/p-ed9034e4.entry.js +1 -0
  751. package/dist/sekiui/p-edd02332.entry.js +1 -0
  752. package/dist/sekiui/p-f07b430e.entry.js +1 -0
  753. package/dist/sekiui/{p-0a2b760b.entry.js → p-f0e4d07c.entry.js} +1 -1
  754. package/dist/sekiui/{p-b9db3fb8.entry.js → p-f161655d.entry.js} +1 -1
  755. package/dist/sekiui/{p-67fffcd0.entry.js → p-f2859501.entry.js} +1 -1
  756. package/dist/sekiui/p-f3c69359.entry.js +1 -0
  757. package/dist/sekiui/p-f587cd57.entry.js +1 -0
  758. package/dist/sekiui/{p-eb0440ec.entry.js → p-fa27d255.entry.js} +1 -1
  759. package/dist/sekiui/p-fde2877f.entry.js +1 -0
  760. package/dist/sekiui/{p-d7589960.entry.js → p-fe067937.entry.js} +1 -1
  761. package/dist/sekiui/sekiui.esm.js +1 -1
  762. package/dist/types/components/accordion/seki-accordion-content.d.ts +2 -0
  763. package/dist/types/components/accordion/seki-accordion-item.d.ts +2 -0
  764. package/dist/types/components/accordion/seki-accordion-trigger.d.ts +2 -0
  765. package/dist/types/components/alert-dialog/seki-alert-dialog-content.d.ts +2 -0
  766. package/dist/types/components/carousel/seki-carousel.d.ts +3 -0
  767. package/dist/types/components/collapsible/seki-collapsible-content.d.ts +2 -0
  768. package/dist/types/components/combobox-item/seki-combobox-item.d.ts +1 -0
  769. package/dist/types/components/command/seki-command-group.d.ts +2 -0
  770. package/dist/types/components/context-menu/seki-context-menu-content.d.ts +2 -0
  771. package/dist/types/components/context-menu/seki-context-menu.d.ts +1 -0
  772. package/dist/types/components/dialog/seki-dialog-content.d.ts +2 -0
  773. package/dist/types/components/dialog/seki-dialog-overlay.d.ts +2 -0
  774. package/dist/types/components/dialog/seki-dialog.d.ts +1 -0
  775. package/dist/types/components/dropdown-menu/seki-dropdown-menu-content.d.ts +2 -0
  776. package/dist/types/components/dropdown-menu/seki-dropdown-menu-radio.d.ts +2 -0
  777. package/dist/types/components/dropdown-menu/seki-dropdown-menu-trigger.d.ts +2 -0
  778. package/dist/types/components/dropdown-menu/seki-dropdown-menu.d.ts +1 -0
  779. package/dist/types/components/marker/seki-marker-content.d.ts +22 -0
  780. package/dist/types/components/marker/seki-marker-icon.d.ts +16 -0
  781. package/dist/types/components/marker/seki-marker.d.ts +32 -0
  782. package/dist/types/components/marker/seki-marker.interface.d.ts +7 -0
  783. package/dist/types/components/menubar/seki-menubar-content.d.ts +2 -0
  784. package/dist/types/components/menubar/seki-menubar-radio.d.ts +2 -0
  785. package/dist/types/components/menubar/seki-menubar-trigger.d.ts +2 -0
  786. package/dist/types/components/menubar/seki-menubar.d.ts +1 -0
  787. package/dist/types/components/navigation-menu/seki-navigation-menu-content.d.ts +1 -0
  788. package/dist/types/components/navigation-menu/seki-navigation-menu-link.d.ts +1 -0
  789. package/dist/types/components/navigation-menu/seki-navigation-menu-list.d.ts +1 -0
  790. package/dist/types/components/popover/seki-popover-content.d.ts +2 -0
  791. package/dist/types/components/popover/seki-popover.d.ts +1 -0
  792. package/dist/types/components/scroll-area/seki-scroll-bar.d.ts +1 -0
  793. package/dist/types/components/select/seki-select.d.ts +8 -1
  794. package/dist/types/components/select-option/seki-select-option.d.ts +3 -1
  795. package/dist/types/components/sidebar/seki-sidebar-menu-sub.d.ts +2 -0
  796. package/dist/types/components/sidebar/seki-sidebar-rail.d.ts +1 -0
  797. package/dist/types/components/slider/seki-slider.d.ts +9 -0
  798. package/dist/types/components/tabs/seki-tabs-content.d.ts +2 -0
  799. package/dist/types/components/tabs/seki-tabs-trigger.d.ts +2 -0
  800. package/dist/types/components/tooltip/seki-tooltip.d.ts +1 -0
  801. package/dist/types/components.d.ts +213 -32
  802. package/dist/types/utils/ancestor-attrs.d.ts +18 -0
  803. package/dist/types/utils/calendar/date-utils.d.ts +9 -0
  804. package/dist/types/utils/dialog/focus-trap.d.ts +18 -7
  805. package/dist/types/utils/positioning.d.ts +34 -0
  806. package/package.json +25 -2
  807. package/dist/cdn/p-CP7ZtKCE.js +0 -71
  808. package/dist/cjs/focus-trap-C7ukllRZ.js +0 -76
  809. package/dist/components/p-CP7ZtKCE.js +0 -71
  810. package/dist/esm/focus-trap-CP7ZtKCE.js +0 -71
  811. package/dist/sekiui/p-107bdce6.entry.js +0 -1
  812. package/dist/sekiui/p-24ea0d3d.entry.js +0 -1
  813. package/dist/sekiui/p-2548d7c3.entry.js +0 -1
  814. package/dist/sekiui/p-307a0de3.entry.js +0 -1
  815. package/dist/sekiui/p-397fb20e.entry.js +0 -1
  816. package/dist/sekiui/p-4617d9c5.entry.js +0 -1
  817. package/dist/sekiui/p-4896a497.entry.js +0 -1
  818. package/dist/sekiui/p-4a47ea19.entry.js +0 -1
  819. package/dist/sekiui/p-4b0ee9e5.entry.js +0 -1
  820. package/dist/sekiui/p-4c1b29de.entry.js +0 -1
  821. package/dist/sekiui/p-598f9c5b.entry.js +0 -1
  822. package/dist/sekiui/p-635ca5ab.entry.js +0 -1
  823. package/dist/sekiui/p-63b3a53c.entry.js +0 -1
  824. package/dist/sekiui/p-63ffc38a.entry.js +0 -1
  825. package/dist/sekiui/p-6416552b.entry.js +0 -1
  826. package/dist/sekiui/p-66b59a4c.entry.js +0 -1
  827. package/dist/sekiui/p-67aaf0f1.entry.js +0 -1
  828. package/dist/sekiui/p-70f149c3.entry.js +0 -1
  829. package/dist/sekiui/p-79062829.entry.js +0 -1
  830. package/dist/sekiui/p-7bf7ee5f.entry.js +0 -1
  831. package/dist/sekiui/p-8067a8f3.entry.js +0 -1
  832. package/dist/sekiui/p-884bde18.entry.js +0 -1
  833. package/dist/sekiui/p-95749f03.entry.js +0 -1
  834. package/dist/sekiui/p-9d5b807f.entry.js +0 -1
  835. package/dist/sekiui/p-CP7ZtKCE.js +0 -1
  836. package/dist/sekiui/p-a24ea8af.entry.js +0 -1
  837. package/dist/sekiui/p-ac321aeb.entry.js +0 -1
  838. package/dist/sekiui/p-adc3cfff.entry.js +0 -1
  839. package/dist/sekiui/p-b945fc54.entry.js +0 -1
  840. package/dist/sekiui/p-bdb2d304.entry.js +0 -1
  841. package/dist/sekiui/p-c0ce45c3.entry.js +0 -1
  842. package/dist/sekiui/p-d2951ab4.entry.js +0 -1
  843. package/dist/sekiui/p-db37e4d2.entry.js +0 -1
  844. package/dist/sekiui/p-e51d76de.entry.js +0 -1
  845. package/dist/sekiui/p-f0bb516d.entry.js +0 -1
  846. package/dist/sekiui/p-f82ead84.entry.js +0 -1
@@ -11,6 +11,17 @@ export function getWeekDays(weekStartsOn = 0) {
11
11
  }
12
12
  return days;
13
13
  }
14
+ /**
15
+ * Whether a date is disabled by the min/max bounds or the explicit disabled list.
16
+ * Single source of truth shared by the grid generator and keyboard handlers.
17
+ */
18
+ export function isDateDisabled(date, options = {}) {
19
+ const { minDate = null, maxDate = null, disabledDates = [] } = options;
20
+ const disabledByRange = (minDate && isBefore(date, startOfDay(minDate))) ||
21
+ (maxDate && isAfter(date, startOfDay(maxDate)));
22
+ const disabledByList = disabledDates.some(d => isSameDay(date, d));
23
+ return Boolean(disabledByRange || disabledByList);
24
+ }
14
25
  /**
15
26
  * Get all days to display in a calendar month grid (6 weeks)
16
27
  */
@@ -24,9 +35,6 @@ export function getCalendarDays(month, options = {}) {
24
35
  const weeks = [];
25
36
  let currentWeek = [];
26
37
  for (const date of allDays) {
27
- const isDisabledByRange = (minDate && isBefore(date, startOfDay(minDate))) ||
28
- (maxDate && isAfter(date, startOfDay(maxDate)));
29
- const isDisabledByList = disabledDates.some(d => isSameDay(date, d));
30
38
  const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;
31
39
  let isInRange = false;
32
40
  let isRangeStart = false;
@@ -50,7 +58,7 @@ export function getCalendarDays(month, options = {}) {
50
58
  isInRange,
51
59
  isRangeStart,
52
60
  isRangeEnd,
53
- isDisabled: isDisabledByRange || isDisabledByList,
61
+ isDisabled: isDateDisabled(date, { minDate, maxDate, disabledDates }),
54
62
  };
55
63
  currentWeek.push(day);
56
64
  if (currentWeek.length === 7) {
@@ -1,23 +1,87 @@
1
1
  /**
2
- * Focus trap utility for dialog and modal components
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.
3
10
  */
4
11
  const FOCUSABLE_SELECTOR = [
12
+ 'a[href]',
5
13
  'button:not([disabled])',
6
- '[href]',
7
14
  'input:not([disabled])',
8
15
  'select:not([disabled])',
9
16
  'textarea:not([disabled])',
10
17
  '[tabindex]:not([tabindex="-1"])',
18
+ 'audio[controls]',
19
+ 'video[controls]',
20
+ '[contenteditable]:not([contenteditable="false"])',
11
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
+ }
12
58
  /**
13
- * Get all focusable elements within a container
59
+ * Get all focusable elements within a container, crossing shadow-DOM and slot
60
+ * boundaries so projected content and nested web components are included.
14
61
  */
15
62
  export function getFocusableElements(container) {
16
- const elements = Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR));
17
- return elements.filter(el => !el.closest('[hidden]') && !el.closest('[aria-hidden="true"]'));
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;
18
82
  }
19
83
  /**
20
- * Focus the first focusable element in a container
84
+ * Focus the first focusable element in a container.
21
85
  */
22
86
  export function focusFirst(container) {
23
87
  const focusables = getFocusableElements(container);
@@ -26,7 +90,7 @@ export function focusFirst(container) {
26
90
  }
27
91
  }
28
92
  /**
29
- * Focus the last focusable element in a container
93
+ * Focus the last focusable element in a container.
30
94
  */
31
95
  export function focusLast(container) {
32
96
  const focusables = getFocusableElements(container);
@@ -35,44 +99,69 @@ export function focusLast(container) {
35
99
  }
36
100
  }
37
101
  /**
38
- * Trap focus within a container during Tab key navigation
102
+ * Trap focus within a container during Tab key navigation.
39
103
  */
40
104
  export function trapFocus(container, event) {
41
105
  if (event.key !== 'Tab')
42
106
  return;
43
107
  const focusables = getFocusableElements(container);
44
- if (focusables.length === 0)
108
+ if (focusables.length === 0) {
109
+ // Nothing focusable inside — keep focus from escaping the modal.
110
+ event.preventDefault();
45
111
  return;
112
+ }
46
113
  const first = focusables[0];
47
114
  const last = focusables[focusables.length - 1];
48
- const active = document.activeElement;
115
+ const active = getDeepActiveElement();
116
+ // `contains()` does not cross shadow boundaries, so detect "escaped" focus by
117
+ // membership in the composed focusables list instead.
118
+ const isInside = active !== null && focusables.indexOf(active) !== -1;
49
119
  if (event.shiftKey) {
50
- // Shift+Tab: if on first element, go to last
51
- if (active === first || !container.contains(active)) {
120
+ if (active === first || !isInside) {
52
121
  event.preventDefault();
53
122
  last.focus();
54
123
  }
55
124
  }
56
125
  else {
57
- // Tab: if on last element, go to first
58
- if (active === last || !container.contains(active)) {
126
+ if (active === last || !isInside) {
59
127
  event.preventDefault();
60
128
  first.focus();
61
129
  }
62
130
  }
63
131
  }
132
+ // ---------------------------------------------------------------------------
133
+ // Body scroll lock (reference-counted so stacked modals don't unlock early).
134
+ // ---------------------------------------------------------------------------
135
+ let scrollLockCount = 0;
136
+ let savedOverflow = '';
137
+ let savedPaddingRight = '';
64
138
  /**
65
- * Lock body scroll when modal is open
139
+ * Lock body scroll when a modal opens. Safe to nest: the lock is only applied
140
+ * on the first call and the original inline styles are restored on the last
141
+ * matching unlock.
66
142
  */
67
143
  export function lockBodyScroll() {
68
- const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
69
- document.body.style.overflow = 'hidden';
70
- document.body.style.paddingRight = `${scrollbarWidth}px`;
144
+ if (scrollLockCount === 0) {
145
+ savedOverflow = document.body.style.overflow;
146
+ savedPaddingRight = document.body.style.paddingRight;
147
+ const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
148
+ document.body.style.overflow = 'hidden';
149
+ if (scrollbarWidth > 0) {
150
+ document.body.style.paddingRight = `${scrollbarWidth}px`;
151
+ }
152
+ }
153
+ scrollLockCount++;
71
154
  }
72
155
  /**
73
- * Unlock body scroll when modal is closed
156
+ * Unlock body scroll when a modal closes. Only the final unlock restores the
157
+ * original inline styles.
74
158
  */
75
159
  export function unlockBodyScroll() {
76
- document.body.style.overflow = '';
77
- document.body.style.paddingRight = '';
160
+ if (scrollLockCount === 0)
161
+ return;
162
+ scrollLockCount--;
163
+ if (scrollLockCount === 0) {
164
+ document.body.style.overflow = savedOverflow;
165
+ document.body.style.paddingRight = savedPaddingRight;
166
+ }
78
167
  }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Shared anchored-positioning math for popover-like overlays (popover,
3
+ * dropdown-menu, menubar content). Computes a fixed-position {top,left} for a
4
+ * floating element relative to a trigger, given a side + alignment + offsets,
5
+ * then clamps the result into the viewport.
6
+ *
7
+ * This is the simple "place + clamp" strategy (no side flipping). Components
8
+ * that flip based on available space (e.g. hover-card, tooltip 'auto') keep
9
+ * their own collision logic.
10
+ */
11
+ export function computeAnchoredPosition(triggerRect, contentRect, options) {
12
+ const { side, align, sideOffset = 0, alignOffset = 0, viewport = { width: window.innerWidth, height: window.innerHeight }, margin = 8, } = options;
13
+ let top = 0;
14
+ let left = 0;
15
+ // Position along the side axis.
16
+ switch (side) {
17
+ case 'top':
18
+ top = triggerRect.top - contentRect.height - sideOffset;
19
+ break;
20
+ case 'bottom':
21
+ top = triggerRect.bottom + sideOffset;
22
+ break;
23
+ case 'left':
24
+ left = triggerRect.left - contentRect.width - sideOffset;
25
+ break;
26
+ case 'right':
27
+ left = triggerRect.right + sideOffset;
28
+ break;
29
+ }
30
+ // Position along the alignment (cross) axis.
31
+ if (side === 'top' || side === 'bottom') {
32
+ switch (align) {
33
+ case 'start':
34
+ left = triggerRect.left + alignOffset;
35
+ break;
36
+ case 'center':
37
+ left = triggerRect.left + (triggerRect.width - contentRect.width) / 2 + alignOffset;
38
+ break;
39
+ case 'end':
40
+ left = triggerRect.right - contentRect.width + alignOffset;
41
+ break;
42
+ }
43
+ }
44
+ else {
45
+ switch (align) {
46
+ case 'start':
47
+ top = triggerRect.top + alignOffset;
48
+ break;
49
+ case 'center':
50
+ top = triggerRect.top + (triggerRect.height - contentRect.height) / 2 + alignOffset;
51
+ break;
52
+ case 'end':
53
+ top = triggerRect.bottom - contentRect.height + alignOffset;
54
+ break;
55
+ }
56
+ }
57
+ // Clamp into the viewport.
58
+ left = Math.max(margin, Math.min(left, viewport.width - contentRect.width - margin));
59
+ top = Math.max(margin, Math.min(top, viewport.height - contentRect.height - margin));
60
+ return { top, left, side };
61
+ }
@@ -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 };
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, d as registerThemeSync, u as unregisterThemeSync, h, e as Host } from './p-CmYbI_bV.js';
2
- import { l as lockBodyScroll, u as unlockBodyScroll } from './p-CP7ZtKCE.js';
2
+ import { l as lockBodyScroll, u as unlockBodyScroll } from './p-D50kwTtW.js';
3
3
 
4
4
  const sekiDialogCss = ":host{--seki-neutral-50:hsl(0, 0%, 98%);--seki-neutral-100:hsl(0, 0%, 96.1%);--seki-neutral-200:hsl(0, 0%, 89.8%);--seki-neutral-300:hsl(0, 0%, 83.1%);--seki-neutral-400:hsl(0, 0%, 63.9%);--seki-neutral-500:hsl(0, 0%, 45.1%);--seki-neutral-600:hsl(0, 0%, 32.2%);--seki-neutral-700:hsl(0, 0%, 25.1%);--seki-neutral-800:hsl(0, 0%, 14.9%);--seki-neutral-900:hsl(0, 0%, 9%);--seki-neutral-950:hsl(0, 0%, 3.9%);--seki-primary-50:hsl(210, 100%, 97%);--seki-primary-100:hsl(210, 95%, 93%);--seki-primary-200:hsl(210, 95%, 85%);--seki-primary-300:hsl(210, 90%, 73%);--seki-primary-400:hsl(210, 85%, 58%);--seki-primary-500:hsl(210, 80%, 48%);--seki-primary-600:hsl(210, 75%, 40%);--seki-primary-700:hsl(210, 70%, 32%);--seki-primary-800:hsl(210, 65%, 25%);--seki-primary-900:hsl(210, 60%, 18%);--seki-primary-950:hsl(210, 55%, 10%);--seki-success-500:hsl(142, 71%, 45%);--seki-success-600:hsl(142, 71%, 35%);--seki-warning-500:hsl(38, 92%, 50%);--seki-warning-600:hsl(38, 92%, 40%);--seki-destructive-500:hsl(0, 84.2%, 60.2%);--seki-destructive-600:hsl(0, 72%, 41%);--seki-chart-1:hsl(12, 76%, 61%);--seki-chart-2:hsl(173, 58%, 39%);--seki-chart-3:hsl(197, 37%, 24%);--seki-chart-4:hsl(43, 74%, 66%);--seki-chart-5:hsl(27, 87%, 67%)}:host{--seki-background:hsl(0, 0%, 100%);--seki-foreground:hsl(0, 0%, 3.9%);--seki-muted:hsl(0, 0%, 96.1%);--seki-muted-foreground:hsl(0, 0%, 45.1%);--seki-card:hsl(0, 0%, 100%);--seki-card-foreground:hsl(0, 0%, 3.9%);--seki-popover:hsl(0, 0%, 100%);--seki-popover-foreground:hsl(0, 0%, 3.9%);--seki-border:hsl(0, 0%, 89.8%);--seki-input:hsl(0, 0%, 89.8%);--seki-primary:hsl(0, 0%, 9%);--seki-primary-foreground:hsl(0, 0%, 98%);--seki-secondary:hsl(0, 0%, 96.1%);--seki-secondary-foreground:hsl(0, 0%, 9%);--seki-accent:hsl(0, 0%, 96.1%);--seki-accent-foreground:hsl(0, 0%, 9%);--seki-destructive:hsl(0, 84.2%, 60.2%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 3.9%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-400);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-300)}:host([data-theme='dark']){--seki-background:hsl(0, 0%, 3.9%);--seki-foreground:hsl(0, 0%, 98%);--seki-muted:hsl(0, 0%, 14.9%);--seki-muted-foreground:hsl(0, 0%, 63.9%);--seki-card:hsl(0, 0%, 3.9%);--seki-card-foreground:hsl(0, 0%, 98%);--seki-popover:hsl(0, 0%, 3.9%);--seki-popover-foreground:hsl(0, 0%, 98%);--seki-border:hsl(0, 0%, 14.9%);--seki-input:hsl(0, 0%, 14.9%);--seki-primary:hsl(0, 0%, 98%);--seki-primary-foreground:hsl(0, 0%, 9%);--seki-secondary:hsl(0, 0%, 14.9%);--seki-secondary-foreground:hsl(0, 0%, 98%);--seki-accent:hsl(0, 0%, 14.9%);--seki-accent-foreground:hsl(0, 0%, 98%);--seki-destructive:hsl(0, 62.8%, 30.6%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 83.1%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-600);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-700);--seki-button-primary-hover-bg:hsl(0, 0%, 98%, 0.9);--seki-button-secondary-hover-bg:hsl(0, 0%, 14.9%, 0.8)}:host{--seki-button-primary-bg:var(--seki-primary);--seki-button-primary-text:var(--seki-primary-foreground);--seki-button-primary-border:transparent;--seki-button-primary-hover-bg:hsl(0, 0%, 9%, 0.9);--seki-button-primary-hover-text:var(--seki-primary-foreground);--seki-button-primary-hover-border:transparent;--seki-button-secondary-bg:var(--seki-secondary);--seki-button-secondary-text:var(--seki-secondary-foreground);--seki-button-secondary-border:transparent;--seki-button-secondary-hover-bg:hsl(0, 0%, 96.1%, 0.8);--seki-button-secondary-hover-text:var(--seki-secondary-foreground);--seki-button-secondary-hover-border:transparent;--seki-button-outline-bg:transparent;--seki-button-outline-text:var(--seki-foreground);--seki-button-outline-border:var(--seki-input);--seki-button-outline-hover-bg:var(--seki-accent);--seki-button-outline-hover-text:var(--seki-accent-foreground);--seki-button-outline-hover-border:var(--seki-input);--seki-button-ghost-bg:transparent;--seki-button-ghost-text:var(--seki-foreground);--seki-button-ghost-border:transparent;--seki-button-ghost-hover-bg:var(--seki-accent);--seki-button-ghost-hover-text:var(--seki-accent-foreground);--seki-button-ghost-hover-border:transparent;--seki-button-destructive-bg:var(--seki-destructive);--seki-button-destructive-text:var(--seki-destructive-foreground);--seki-button-destructive-border:transparent;--seki-button-destructive-hover-bg:hsl(0, 84.2%, 60.2%, 0.9);--seki-button-destructive-hover-border:transparent;--seki-button-sm-padding-x:var(--seki-spacing-3, 0.75rem);--seki-button-sm-padding-y:0.375rem;--seki-button-sm-font-size:var(--seki-text-sm, 0.875rem);--seki-button-sm-height:2.25rem;--seki-button-md-padding-x:var(--seki-spacing-4, 1rem);--seki-button-md-padding-y:var(--seki-spacing-2, 0.5rem);--seki-button-md-font-size:var(--seki-text-base, 1rem);--seki-button-md-height:2.5rem;--seki-button-lg-padding-x:2rem;--seki-button-lg-padding-y:0.5rem;--seki-button-lg-font-size:1rem;--seki-button-lg-height:2.75rem;--seki-button-icon-sm-size:2rem;--seki-button-icon-size:2.5rem;--seki-button-icon-lg-size:3rem;--seki-button-icon-gap:0.5rem;--seki-button-link-bg:transparent;--seki-button-link-text:var(--seki-primary);--seki-button-link-border:transparent;--seki-button-link-hover-bg:transparent;--seki-button-link-hover-text:var(--seki-primary);--seki-button-link-hover-border:transparent;--seki-button-radius:var(--seki-radius-md, 0.375rem);--seki-button-font-weight:var(--seki-font-medium, 500);--seki-button-transition-duration:150ms;--seki-button-transition-timing:ease-in-out;--seki-button-shadow:var(--seki-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));--seki-button-shadow-hover:var(--seki-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));--seki-button-disabled-opacity:0.5;--seki-input-bg:var(--seki-background);--seki-input-border:var(--seki-border);--seki-input-text:var(--seki-foreground);--seki-input-placeholder:var(--seki-muted-foreground);--seki-input-ring:var(--seki-ring);--seki-input-invalid-border:var(--seki-destructive);--seki-input-invalid-ring:var(--seki-destructive);--seki-input-disabled-opacity:0.5;--seki-input-radius:var(--seki-radius-md);--seki-input-ring-offset:2px;--seki-select-trigger-bg:var(--seki-background);--seki-select-trigger-border:1px solid var(--seki-border);--seki-select-trigger-bg-hover:var(--seki-muted);--seki-select-trigger-radius:var(--seki-radius-md);--seki-select-trigger-min-height:2.5rem;--seki-select-trigger-padding:0.5rem 0.75rem;--seki-select-trigger-gap:0.5rem;--seki-select-content-bg:var(--seki-popover);--seki-select-content-border:1px solid var(--seki-border);--seki-select-content-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1);--seki-select-content-radius:var(--seki-radius-md);--seki-select-content-padding:0.5rem 0;--seki-select-option-padding:0.5rem 0.75rem;--seki-select-option-gap:0.5rem;--seki-select-option-radius:var(--seki-radius-sm);--seki-select-option-bg-hover:var(--seki-muted);--seki-select-option-bg-selected:var(--seki-muted);--seki-select-group-label-padding:0.5rem 0.75rem;--seki-select-group-label-font-size:var(--seki-font-size-xs);--seki-select-group-label-font-weight:var(--seki-font-semibold);--seki-select-group-label-color:var(--seki-muted-foreground);--seki-select-group-separator:1px solid var(--seki-border)}:host{--seki-spacing-0:0;--seki-spacing-0-5:0.125rem;--seki-spacing-1:0.25rem;--seki-spacing-1-5:0.375rem;--seki-spacing-2:0.5rem;--seki-spacing-2-5:0.625rem;--seki-spacing-3:0.75rem;--seki-spacing-3-5:0.875rem;--seki-spacing-4:1rem;--seki-spacing-5:1.25rem;--seki-spacing-6:1.5rem;--seki-spacing-8:2rem;--seki-spacing-10:2.5rem;--seki-spacing-12:3rem;--seki-spacing-16:4rem;--seki-spacing-20:5rem;--seki-spacing-24:6rem;--seki-input-height-sm:2rem;--seki-input-height-md:2.5rem;--seki-input-height-lg:3rem;--seki-input-padding-x:0.75rem;--seki-input-padding-y:0.5rem;--seki-input-font-size:0.875rem;--seki-input-ring-offset:2px}:host{--seki-shadow-sm:0 1px 2px 0 rgb(0 0 0 / 0.05);--seki-shadow-md:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--seki-shadow-lg:0 10px 15px -3px rgb(0 0 0 / 0.15), 0 4px 6px -4px rgb(0 0 0 / 0.1)}:host{--seki-font-sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;--seki-font-mono:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;--seki-text-xs:0.75rem;--seki-text-sm:0.875rem;--seki-text-base:1rem;--seki-text-lg:1.125rem;--seki-text-xl:1.25rem;--seki-text-2xl:1.5rem;--seki-text-3xl:1.875rem;--seki-text-4xl:2.25rem;--seki-font-normal:400;--seki-font-medium:500;--seki-font-semibold:600;--seki-font-bold:700;--seki-leading-none:1;--seki-leading-tight:1.25;--seki-leading-normal:1.5;--seki-leading-relaxed:1.75}:host{--seki-radius-sm:0.25rem;--seki-radius-md:0.375rem;--seki-radius-lg:0.5rem;--seki-radius-xl:1rem;}:host{--seki-sidebar-width:16rem;--seki-sidebar-width-icon:3rem;--seki-sidebar-width-mobile:18rem;--seki-sidebar-background:hsl(0, 0%, 98%);--seki-sidebar-foreground:hsl(240, 5.3%, 26.1%);--seki-sidebar-primary:hsl(240, 5.9%, 10%);--seki-sidebar-primary-foreground:hsl(0, 0%, 98%);--seki-sidebar-accent:hsl(240, 4.8%, 95.9%);--seki-sidebar-accent-foreground:hsl(240, 5.9%, 10%);--seki-sidebar-border:hsl(220, 13%, 91%);--seki-sidebar-ring:hsl(217.2, 91.2%, 59.8%);--seki-sidebar-muted-foreground:hsl(240, 3.8%, 46.1%);--seki-sidebar-menu-button-height:2rem;--seki-sidebar-menu-button-height-lg:3rem;--seki-sidebar-menu-button-padding:0.5rem;--seki-sidebar-menu-button-gap:0.5rem;--seki-sidebar-menu-button-radius:var(--seki-radius-md, 0.375rem);--seki-sidebar-menu-sub-padding-left:1.75rem;--seki-sidebar-menu-sub-border-width:1px;--seki-sidebar-group-padding:0.5rem;--seki-sidebar-group-label-height:2rem;--seki-sidebar-group-label-padding:0.5rem;--seki-sidebar-header-height:auto;--seki-sidebar-footer-height:auto;--seki-sidebar-header-padding:0.5rem;--seki-sidebar-footer-padding:0.5rem;--seki-sidebar-content-padding:0.5rem;--seki-sidebar-rail-width:1rem;--seki-sidebar-transition-duration:200ms;--seki-sidebar-transition-timing:ease-in-out;--seki-sidebar-mobile-breakpoint:768px;--seki-sidebar-overlay-bg:hsla(0, 0%, 0%, 0.8)}:host([data-theme='dark']){--seki-sidebar-background:hsl(240, 5.9%, 10%);--seki-sidebar-foreground:hsl(240, 4.8%, 95.9%);--seki-sidebar-primary:hsl(0, 0%, 98%);--seki-sidebar-primary-foreground:hsl(240, 5.9%, 10%);--seki-sidebar-accent:hsl(240, 3.7%, 15.9%);--seki-sidebar-accent-foreground:hsl(240, 4.8%, 95.9%);--seki-sidebar-border:hsl(240, 3.7%, 15.9%);--seki-sidebar-ring:hsl(217.2, 91.2%, 59.8%);--seki-sidebar-muted-foreground:hsl(240, 5%, 64.9%)}:host{--seki-animation-fast:150ms;--seki-animation-normal:200ms;--seki-animation-slow:300ms;--seki-ease-in:cubic-bezier(0.4, 0, 1, 1);--seki-ease-out:cubic-bezier(0, 0, 0.2, 1);--seki-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--seki-accordion-content-height:auto}@keyframes seki-fade-in{from{opacity:0}to{opacity:1}}@keyframes seki-fade-out{from{opacity:1}to{opacity:0}}@keyframes seki-scale-in{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}@keyframes seki-scale-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.95)}}@keyframes seki-slide-in-from-top{from{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes seki-slide-out-to-top{from{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes seki-slide-in-from-bottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes seki-slide-out-to-bottom{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes seki-slide-in-from-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes seki-slide-out-to-left{from{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes seki-slide-in-from-right{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes seki-slide-out-to-right{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes seki-accordion-down{from{height:0;opacity:0}to{height:var(--seki-accordion-content-height);opacity:1}}@keyframes seki-accordion-up{from{height:var(--seki-accordion-content-height);opacity:1}to{height:0;opacity:0}}@keyframes seki-zoom-in{from{opacity:0;transform:scale(0.96)}to{opacity:1;transform:scale(1)}}@keyframes seki-zoom-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.96)}}@keyframes seki-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes seki-pulse{0%,100%{opacity:1}50%{opacity:0.5}}@keyframes seki-bounce{0%,100%{transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8, 0, 1, 1)}50%{transform:translateY(0);animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}}@keyframes seki-collapsible-open{from{height:0;overflow:hidden}to{height:var(--seki-collapsible-content-height, auto)}}@keyframes seki-collapsible-close{from{height:var(--seki-collapsible-content-height, auto)}to{height:0;overflow:hidden}}@keyframes seki-toast-slide-in-right{from{transform:translateX(calc(100% + 1rem))}to{transform:translateX(0)}}@keyframes seki-toast-slide-out-right{from{transform:translateX(0)}to{transform:translateX(calc(100% + 1rem))}}@keyframes seki-toast-swipe-out{from{transform:translateX(var(--seki-toast-swipe-end-x, 0))}to{transform:translateX(calc(100% + 1rem))}}.seki-animate-fade-in{animation:seki-fade-in var(--seki-animation-normal) var(--seki-ease-out)}.seki-animate-fade-out{animation:seki-fade-out var(--seki-animation-normal) var(--seki-ease-in)}.seki-animate-scale-in{animation:seki-scale-in var(--seki-animation-normal) var(--seki-ease-out)}.seki-animate-scale-out{animation:seki-scale-out var(--seki-animation-normal) var(--seki-ease-in)}.seki-animate-spin{animation:seki-spin 1s linear infinite}.seki-animate-pulse{animation:seki-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.seki-animate-bounce{animation:seki-bounce 1s infinite}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}}:host{display:contents}.dialog{display:contents}";
5
5
 
@@ -32,6 +32,16 @@ const SekiDialog = /*@__PURE__*/ proxyCustomElement(class SekiDialog extends H {
32
32
  componentWillLoad() {
33
33
  this._isOpen = this.open || this.defaultOpen;
34
34
  }
35
+ handleOpenPropChange(newValue) {
36
+ // Honour controlled `open` updates after first render. Without this, setting
37
+ // dialog.open = true later did nothing (open was only read in componentWillLoad).
38
+ if (newValue && !this._isOpen) {
39
+ this.openDialog();
40
+ }
41
+ else if (!newValue && this._isOpen) {
42
+ this.closeDialog();
43
+ }
44
+ }
35
45
  get titleId() {
36
46
  return `seki-dialog-title-${this.instanceId}`;
37
47
  }
@@ -105,9 +115,12 @@ const SekiDialog = /*@__PURE__*/ proxyCustomElement(class SekiDialog extends H {
105
115
  }
106
116
  }
107
117
  render() {
108
- return (h(Host, { key: 'b26d6665d7cbd7cb94f53e78855c7e0018c38c8d', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: '416347fc9cd44970c3a5dec4bc562692f36562d4', part: "dialog", class: "dialog" }, h("slot", { key: '116af2368448782b7c65af0bf039a8f2186d508c' }))));
118
+ return (h(Host, { key: '185a05b13663a81dc152b76009f9befd201ec8db', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: 'b172f05f25d1ee05dc43e2b50e95a6c1c0e8ad60', part: "dialog", class: "dialog" }, h("slot", { key: '5d73235cd76ea9b95b793661940553bc0685ed96' }))));
109
119
  }
110
120
  get el() { return this; }
121
+ static get watchers() { return {
122
+ "open": ["handleOpenPropChange"]
123
+ }; }
111
124
  static get style() { return sekiDialogCss; }
112
125
  }, [257, "seki-dialog", {
113
126
  "open": [1540],
@@ -116,7 +129,9 @@ const SekiDialog = /*@__PURE__*/ proxyCustomElement(class SekiDialog extends H {
116
129
  "_isOpen": [32],
117
130
  "openDialog": [64],
118
131
  "closeDialog": [64]
119
- }, [[0, "sekiDialogTriggerClick", "handleTriggerClick"], [0, "sekiDialogClose", "handleCloseRequest"]]]);
132
+ }, [[0, "sekiDialogTriggerClick", "handleTriggerClick"], [0, "sekiDialogClose", "handleCloseRequest"]], {
133
+ "open": ["handleOpenPropChange"]
134
+ }]);
120
135
  SekiDialog.instanceCount = 0;
121
136
  function defineCustomElement() {
122
137
  if (typeof customElements === "undefined") {
@@ -150,14 +150,14 @@ const SekiNavigationMenuViewport = /*@__PURE__*/ proxyCustomElement(class SekiNa
150
150
  return h("slot", null);
151
151
  }
152
152
  render() {
153
- return (h(Host, { key: 'd6488e7ee474b8a5c14bda3c4354a18c8f95e2bd', class: {
153
+ return (h(Host, { key: 'c863186fc1f5fa38f62d722497f1eca6564175ff', class: {
154
154
  'navigation-menu-viewport': true,
155
155
  'navigation-menu-viewport--visible': this.isVisible,
156
156
  }, style: {
157
157
  '--indicator-left': `${this.indicatorLeft}px`,
158
158
  '--content-offset': `${this.contentOffset}px`,
159
159
  '--content-height': `${this.contentHeight}px`,
160
- } }, h("div", { key: 'c154a11e43e35c612c8516ce48e90ce963f120cd', class: "navigation-menu-viewport__indicator" }, h("svg", { key: '20963cf39499036ed89db44f1b34cf6b3064e3c8', width: "20", height: "10", viewBox: "0 0 20 10", fill: "currentColor" }, h("polygon", { key: 'd69af8e0581c22acf673595deef3bdce3aa12189', points: "10,0 20,10 0,10" }))), h("div", { key: '558cd698c2a894070a80b137e36dc62d25977043', ref: el => (this.contentRef = el), class: "navigation-menu-viewport__content" }, this.renderContent())));
160
+ } }, h("div", { key: '558ad311e9ee87bce50b1caaebbd438ef4f4ffa0', class: "navigation-menu-viewport__indicator" }, h("svg", { key: '187cb7822a78f9ec991c403c1c0d255ef1c93434', width: "20", height: "10", viewBox: "0 0 20 10", fill: "currentColor" }, h("polygon", { key: '6a2cb9eb92b18a5815dfc433066f24bc4bb80d76', points: "10,0 20,10 0,10" }))), h("div", { key: '2aaa62ba0e22c828ef21bc4196b78ef78f60faf9', ref: el => (this.contentRef = el), class: "navigation-menu-viewport__content" }, this.renderContent())));
161
161
  }
162
162
  get el() { return this; }
163
163
  static get watchers() { return {
@@ -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 };