@sekiui/elements 0.0.56 → 0.0.57

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 (256) hide show
  1. package/dist/cdn/index.js +1053 -91
  2. package/dist/cdn/p-BJCq8m2o.js +138 -0
  3. package/dist/cdn/p-BfRJQMIU.js +111 -0
  4. package/dist/cdn/{p-bMBhrs0a.js → p-Bp7tjKwQ.js} +427 -7
  5. package/dist/cdn/seki-button.js +1 -1
  6. package/dist/cdn/seki-card-action.js +1 -1
  7. package/dist/cdn/seki-card-content.js +1 -1
  8. package/dist/cdn/seki-card-description.js +1 -1
  9. package/dist/cdn/seki-card-footer.js +1 -1
  10. package/dist/cdn/seki-card-header.js +1 -1
  11. package/dist/cdn/seki-card-title.js +1 -1
  12. package/dist/cdn/seki-card.js +1 -1
  13. package/dist/cdn/seki-field-description.js +1 -1
  14. package/dist/cdn/seki-field-error.js +1 -1
  15. package/dist/cdn/seki-field-group.js +1 -1
  16. package/dist/cdn/seki-field-label.js +1 -1
  17. package/dist/cdn/seki-field-legend.js +1 -1
  18. package/dist/cdn/seki-field.js +1 -1
  19. package/dist/cdn/seki-fieldset.js +1 -1
  20. package/dist/cdn/seki-input.js +1 -1
  21. package/dist/cdn/seki-select-content.js +1 -1
  22. package/dist/cdn/seki-select-group.js +1 -1
  23. package/dist/cdn/seki-select-option.js +1 -1
  24. package/dist/cdn/seki-select-trigger.js +1 -1
  25. package/dist/cdn/seki-select.js +1 -1
  26. package/dist/cdn/seki-sidebar-content.d.ts +11 -0
  27. package/dist/cdn/seki-sidebar-content.js +38 -0
  28. package/dist/cdn/seki-sidebar-footer.d.ts +11 -0
  29. package/dist/cdn/seki-sidebar-footer.js +38 -0
  30. package/dist/cdn/seki-sidebar-group.d.ts +11 -0
  31. package/dist/cdn/seki-sidebar-group.js +131 -0
  32. package/dist/cdn/seki-sidebar-header.d.ts +11 -0
  33. package/dist/cdn/seki-sidebar-header.js +38 -0
  34. package/dist/cdn/seki-sidebar-menu-item.d.ts +11 -0
  35. package/dist/cdn/seki-sidebar-menu-item.js +200 -0
  36. package/dist/cdn/seki-sidebar-menu-sub.d.ts +11 -0
  37. package/dist/cdn/seki-sidebar-menu-sub.js +123 -0
  38. package/dist/cdn/seki-sidebar-menu.d.ts +11 -0
  39. package/dist/cdn/seki-sidebar-menu.js +38 -0
  40. package/dist/cdn/seki-sidebar-trigger.d.ts +11 -0
  41. package/dist/cdn/seki-sidebar-trigger.js +109 -0
  42. package/dist/cdn/seki-sidebar.d.ts +11 -0
  43. package/dist/cdn/seki-sidebar.js +380 -0
  44. package/dist/cdn/seki-skeleton.js +2 -2
  45. package/dist/cdn/seki-switch.js +1 -1
  46. package/dist/cdn/seki-tooltip.js +1 -1
  47. package/dist/cjs/{index-Dd6_-KaR.js → index-tQYksITZ.js} +426 -6
  48. package/dist/cjs/index.cjs.js +1115 -63
  49. package/dist/cjs/keyboard-Cjl5HYES.js +142 -0
  50. package/dist/cjs/loader.cjs.js +2 -2
  51. package/dist/cjs/seki-button.cjs.entry.js +1 -1
  52. package/dist/cjs/seki-card-action.cjs.entry.js +1 -1
  53. package/dist/cjs/seki-card-content.cjs.entry.js +1 -1
  54. package/dist/cjs/seki-card-description.cjs.entry.js +1 -1
  55. package/dist/cjs/seki-card-footer.cjs.entry.js +1 -1
  56. package/dist/cjs/seki-card-header.cjs.entry.js +1 -1
  57. package/dist/cjs/seki-card-title.cjs.entry.js +1 -1
  58. package/dist/cjs/seki-card.cjs.entry.js +1 -1
  59. package/dist/cjs/seki-field-description.cjs.entry.js +1 -1
  60. package/dist/cjs/seki-field-error.cjs.entry.js +1 -1
  61. package/dist/cjs/seki-field-group.cjs.entry.js +1 -1
  62. package/dist/cjs/seki-field-label.cjs.entry.js +1 -1
  63. package/dist/cjs/seki-field-legend.cjs.entry.js +1 -1
  64. package/dist/cjs/seki-field.cjs.entry.js +1 -1
  65. package/dist/cjs/seki-fieldset.cjs.entry.js +1 -1
  66. package/dist/cjs/seki-input.cjs.entry.js +1 -1
  67. package/dist/cjs/seki-select-content.cjs.entry.js +1 -1
  68. package/dist/cjs/seki-select-group.cjs.entry.js +1 -1
  69. package/dist/cjs/seki-select-option.cjs.entry.js +1 -1
  70. package/dist/cjs/seki-select-trigger.cjs.entry.js +1 -1
  71. package/dist/cjs/seki-select.cjs.entry.js +1 -1
  72. package/dist/cjs/seki-sidebar-content.cjs.entry.js +20 -0
  73. package/dist/cjs/seki-sidebar-footer.cjs.entry.js +20 -0
  74. package/dist/cjs/seki-sidebar-group.cjs.entry.js +105 -0
  75. package/dist/cjs/seki-sidebar-header.cjs.entry.js +20 -0
  76. package/dist/cjs/seki-sidebar-menu-item.cjs.entry.js +174 -0
  77. package/dist/cjs/seki-sidebar-menu-sub.cjs.entry.js +99 -0
  78. package/dist/cjs/seki-sidebar-menu.cjs.entry.js +20 -0
  79. package/dist/cjs/seki-sidebar-trigger.cjs.entry.js +86 -0
  80. package/dist/cjs/seki-sidebar.cjs.entry.js +342 -0
  81. package/dist/cjs/seki-skeleton.cjs.entry.js +2 -2
  82. package/dist/cjs/seki-switch.cjs.entry.js +81 -3
  83. package/dist/cjs/seki-tooltip.cjs.entry.js +1 -1
  84. package/dist/cjs/sekiui.cjs.js +2 -2
  85. package/dist/collection/collection-manifest.json +9 -0
  86. package/dist/collection/components/sidebar/seki-sidebar-content.css +82 -0
  87. package/dist/collection/components/sidebar/seki-sidebar-content.js +33 -0
  88. package/dist/collection/components/sidebar/seki-sidebar-footer.css +44 -0
  89. package/dist/collection/components/sidebar/seki-sidebar-footer.js +31 -0
  90. package/dist/collection/components/sidebar/seki-sidebar-group.css +158 -0
  91. package/dist/collection/components/sidebar/seki-sidebar-group.js +300 -0
  92. package/dist/collection/components/sidebar/seki-sidebar-header.css +44 -0
  93. package/dist/collection/components/sidebar/seki-sidebar-header.js +32 -0
  94. package/dist/collection/components/sidebar/seki-sidebar-menu-item.css +196 -0
  95. package/dist/collection/components/sidebar/seki-sidebar-menu-item.js +403 -0
  96. package/dist/collection/components/sidebar/seki-sidebar-menu-sub.css +357 -0
  97. package/dist/collection/components/sidebar/seki-sidebar-menu-sub.js +256 -0
  98. package/dist/collection/components/sidebar/seki-sidebar-menu.css +25 -0
  99. package/dist/collection/components/sidebar/seki-sidebar-menu.js +32 -0
  100. package/dist/collection/components/sidebar/seki-sidebar-trigger.css +68 -0
  101. package/dist/collection/components/sidebar/seki-sidebar-trigger.js +175 -0
  102. package/dist/collection/components/sidebar/seki-sidebar.css +352 -0
  103. package/dist/collection/components/sidebar/seki-sidebar.js +812 -0
  104. package/dist/collection/components/sidebar/types.js +18 -0
  105. package/dist/collection/components/skeleton/seki-skeleton.js +1 -1
  106. package/dist/collection/index.js +7 -0
  107. package/dist/collection/services/focus.js +192 -0
  108. package/dist/collection/services/index.js +7 -0
  109. package/dist/collection/services/keyboard.js +136 -0
  110. package/dist/collection/services/media-query.js +254 -0
  111. package/dist/collection/types.js +41 -0
  112. package/dist/collection/utils/a11y.js +291 -0
  113. package/dist/collection/utils/common.js +286 -0
  114. package/dist/components/index.js +1053 -91
  115. package/dist/components/p-BJCq8m2o.js +138 -0
  116. package/dist/components/{p-QhPshhKB.js → p-BzYKy7d3.js} +427 -7
  117. package/dist/components/p-DwTISp-i.js +111 -0
  118. package/dist/components/seki-button.js +1 -1
  119. package/dist/components/seki-card-action.js +1 -1
  120. package/dist/components/seki-card-content.js +1 -1
  121. package/dist/components/seki-card-description.js +1 -1
  122. package/dist/components/seki-card-footer.js +1 -1
  123. package/dist/components/seki-card-header.js +1 -1
  124. package/dist/components/seki-card-title.js +1 -1
  125. package/dist/components/seki-card.js +1 -1
  126. package/dist/components/seki-field-description.js +1 -1
  127. package/dist/components/seki-field-error.js +1 -1
  128. package/dist/components/seki-field-group.js +1 -1
  129. package/dist/components/seki-field-label.js +1 -1
  130. package/dist/components/seki-field-legend.js +1 -1
  131. package/dist/components/seki-field.js +1 -1
  132. package/dist/components/seki-fieldset.js +1 -1
  133. package/dist/components/seki-input.js +1 -1
  134. package/dist/components/seki-select-content.js +1 -1
  135. package/dist/components/seki-select-group.js +1 -1
  136. package/dist/components/seki-select-option.js +1 -1
  137. package/dist/components/seki-select-trigger.js +1 -1
  138. package/dist/components/seki-select.js +1 -1
  139. package/dist/components/seki-sidebar-content.d.ts +11 -0
  140. package/dist/components/seki-sidebar-content.js +38 -0
  141. package/dist/components/seki-sidebar-footer.d.ts +11 -0
  142. package/dist/components/seki-sidebar-footer.js +38 -0
  143. package/dist/components/seki-sidebar-group.d.ts +11 -0
  144. package/dist/components/seki-sidebar-group.js +131 -0
  145. package/dist/components/seki-sidebar-header.d.ts +11 -0
  146. package/dist/components/seki-sidebar-header.js +38 -0
  147. package/dist/components/seki-sidebar-menu-item.d.ts +11 -0
  148. package/dist/components/seki-sidebar-menu-item.js +200 -0
  149. package/dist/components/seki-sidebar-menu-sub.d.ts +11 -0
  150. package/dist/components/seki-sidebar-menu-sub.js +123 -0
  151. package/dist/components/seki-sidebar-menu.d.ts +11 -0
  152. package/dist/components/seki-sidebar-menu.js +38 -0
  153. package/dist/components/seki-sidebar-trigger.d.ts +11 -0
  154. package/dist/components/seki-sidebar-trigger.js +109 -0
  155. package/dist/components/seki-sidebar.d.ts +11 -0
  156. package/dist/components/seki-sidebar.js +380 -0
  157. package/dist/components/seki-skeleton.js +2 -2
  158. package/dist/components/seki-switch.js +1 -1
  159. package/dist/components/seki-tooltip.js +1 -1
  160. package/dist/esm/{index-CuXbV_yz.js → index-Dfzpqq0a.js} +426 -6
  161. package/dist/esm/index.js +1053 -63
  162. package/dist/esm/keyboard-BJCq8m2o.js +138 -0
  163. package/dist/esm/loader.js +3 -3
  164. package/dist/esm/seki-button.entry.js +1 -1
  165. package/dist/esm/seki-card-action.entry.js +1 -1
  166. package/dist/esm/seki-card-content.entry.js +1 -1
  167. package/dist/esm/seki-card-description.entry.js +1 -1
  168. package/dist/esm/seki-card-footer.entry.js +1 -1
  169. package/dist/esm/seki-card-header.entry.js +1 -1
  170. package/dist/esm/seki-card-title.entry.js +1 -1
  171. package/dist/esm/seki-card.entry.js +1 -1
  172. package/dist/esm/seki-field-description.entry.js +1 -1
  173. package/dist/esm/seki-field-error.entry.js +1 -1
  174. package/dist/esm/seki-field-group.entry.js +1 -1
  175. package/dist/esm/seki-field-label.entry.js +1 -1
  176. package/dist/esm/seki-field-legend.entry.js +1 -1
  177. package/dist/esm/seki-field.entry.js +1 -1
  178. package/dist/esm/seki-fieldset.entry.js +1 -1
  179. package/dist/esm/seki-input.entry.js +1 -1
  180. package/dist/esm/seki-select-content.entry.js +1 -1
  181. package/dist/esm/seki-select-group.entry.js +1 -1
  182. package/dist/esm/seki-select-option.entry.js +1 -1
  183. package/dist/esm/seki-select-trigger.entry.js +1 -1
  184. package/dist/esm/seki-select.entry.js +1 -1
  185. package/dist/esm/seki-sidebar-content.entry.js +18 -0
  186. package/dist/esm/seki-sidebar-footer.entry.js +18 -0
  187. package/dist/esm/seki-sidebar-group.entry.js +103 -0
  188. package/dist/esm/seki-sidebar-header.entry.js +18 -0
  189. package/dist/esm/seki-sidebar-menu-item.entry.js +172 -0
  190. package/dist/esm/seki-sidebar-menu-sub.entry.js +97 -0
  191. package/dist/esm/seki-sidebar-menu.entry.js +18 -0
  192. package/dist/esm/seki-sidebar-trigger.entry.js +84 -0
  193. package/dist/esm/seki-sidebar.entry.js +340 -0
  194. package/dist/esm/seki-skeleton.entry.js +2 -2
  195. package/dist/esm/seki-switch.entry.js +84 -2
  196. package/dist/esm/seki-tooltip.entry.js +1 -1
  197. package/dist/esm/sekiui.js +3 -3
  198. package/dist/sekiui/index.esm.js +1 -1
  199. package/dist/sekiui/p-01cfb4e7.entry.js +1 -0
  200. package/dist/sekiui/{p-97e6e5ce.entry.js → p-042ec460.entry.js} +1 -1
  201. package/dist/sekiui/{p-3e088b5a.entry.js → p-10c008fc.entry.js} +1 -1
  202. package/dist/sekiui/{p-ed440425.entry.js → p-352bd295.entry.js} +1 -1
  203. package/dist/sekiui/p-37c5f4d9.entry.js +1 -0
  204. package/dist/sekiui/p-40fb71d6.entry.js +1 -0
  205. package/dist/sekiui/{p-eefbc037.entry.js → p-44191aed.entry.js} +1 -1
  206. package/dist/sekiui/{p-81709fc2.entry.js → p-4423d621.entry.js} +1 -1
  207. package/dist/sekiui/{p-9af5286b.entry.js → p-4636588f.entry.js} +1 -1
  208. package/dist/sekiui/p-471b97a5.entry.js +1 -0
  209. package/dist/sekiui/{p-0544d787.entry.js → p-56f0d754.entry.js} +1 -1
  210. package/dist/sekiui/{p-43f7c542.entry.js → p-5bc0f5aa.entry.js} +1 -1
  211. package/dist/sekiui/{p-eedf44b5.entry.js → p-6164cd8a.entry.js} +1 -1
  212. package/dist/sekiui/{p-b479935d.entry.js → p-635f4098.entry.js} +1 -1
  213. package/dist/sekiui/{p-35f8f9c4.entry.js → p-743fc6d9.entry.js} +1 -1
  214. package/dist/sekiui/p-83e65cbe.entry.js +1 -0
  215. package/dist/sekiui/p-8b7bd061.entry.js +1 -0
  216. package/dist/sekiui/{p-009183ab.entry.js → p-8d9a4878.entry.js} +1 -1
  217. package/dist/sekiui/p-9cb9cdfe.entry.js +1 -0
  218. package/dist/sekiui/p-9f2d95d7.entry.js +1 -0
  219. package/dist/sekiui/p-BJCq8m2o.js +1 -0
  220. package/dist/sekiui/p-Dfzpqq0a.js +2 -0
  221. package/dist/sekiui/{p-b22df79e.entry.js → p-a1a71958.entry.js} +1 -1
  222. package/dist/sekiui/{p-dd1e3e87.entry.js → p-a71e0c55.entry.js} +1 -1
  223. package/dist/sekiui/{p-1607dc4d.entry.js → p-ae227955.entry.js} +1 -1
  224. package/dist/sekiui/{p-cf11115c.entry.js → p-b365f5fb.entry.js} +1 -1
  225. package/dist/sekiui/{p-6bde807e.entry.js → p-b387a2a5.entry.js} +1 -1
  226. package/dist/sekiui/p-b8590f4d.entry.js +1 -0
  227. package/dist/sekiui/{p-88f91658.entry.js → p-c98b6d6a.entry.js} +1 -1
  228. package/dist/sekiui/{p-e71ad432.entry.js → p-d73cdb9a.entry.js} +1 -1
  229. package/dist/sekiui/{p-b10d81a6.entry.js → p-d96e770e.entry.js} +1 -1
  230. package/dist/sekiui/p-e62dd89b.entry.js +1 -0
  231. package/dist/sekiui/{p-d4c92041.entry.js → p-e7bb140c.entry.js} +1 -1
  232. package/dist/sekiui/{p-6e238adf.entry.js → p-eecc18f3.entry.js} +1 -1
  233. package/dist/sekiui/{p-4d57c6ea.entry.js → p-ff636955.entry.js} +1 -1
  234. package/dist/sekiui/sekiui.esm.js +1 -1
  235. package/dist/types/components/sidebar/seki-sidebar-content.d.ts +18 -0
  236. package/dist/types/components/sidebar/seki-sidebar-footer.d.ts +16 -0
  237. package/dist/types/components/sidebar/seki-sidebar-group.d.ts +81 -0
  238. package/dist/types/components/sidebar/seki-sidebar-header.d.ts +17 -0
  239. package/dist/types/components/sidebar/seki-sidebar-menu-item.d.ts +104 -0
  240. package/dist/types/components/sidebar/seki-sidebar-menu-sub.d.ts +81 -0
  241. package/dist/types/components/sidebar/seki-sidebar-menu.d.ts +17 -0
  242. package/dist/types/components/sidebar/seki-sidebar-trigger.d.ts +53 -0
  243. package/dist/types/components/sidebar/seki-sidebar.d.ts +185 -0
  244. package/dist/types/components/sidebar/types.d.ts +245 -0
  245. package/dist/types/components.d.ts +508 -0
  246. package/dist/types/index.d.ts +4 -0
  247. package/dist/types/services/focus.d.ts +74 -0
  248. package/dist/types/services/index.d.ts +7 -0
  249. package/dist/types/services/keyboard.d.ts +74 -0
  250. package/dist/types/services/media-query.d.ts +121 -0
  251. package/dist/types/types.d.ts +105 -0
  252. package/dist/types/utils/a11y.d.ts +130 -0
  253. package/dist/types/utils/common.d.ts +142 -0
  254. package/package.json +2 -1
  255. package/dist/sekiui/p-9fe07f6e.entry.js +0 -1
  256. package/dist/sekiui/p-CuXbV_yz.js +0 -2
@@ -7,9 +7,11 @@
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
8
  import { Event } from "./stencil-public-runtime";
9
9
  import { SelectChangeEventDetail, SelectOpenChangeEventDetail, SelectPlacement, SelectValidateEventDetail, SelectValue } from "./utils/select";
10
+ import { CollapsedChangeDetail, CollapseModeChangeDetail, MobileStateChangeDetail, NavigateDetail, OpenChangeDetail, SidebarGroupProps, SidebarMenuItemProps, SidebarMenuSubProps, SidebarProps, SidebarState, SidebarTriggerProps, VariantChangeDetail } from "./components/sidebar/types";
10
11
  import { TooltipHideDetail, TooltipPositionedDetail, TooltipShowDetail, TooltipSide } from "./components/tooltip/seki-tooltip";
11
12
  export { Event } from "./stencil-public-runtime";
12
13
  export { SelectChangeEventDetail, SelectOpenChangeEventDetail, SelectPlacement, SelectValidateEventDetail, SelectValue } from "./utils/select";
14
+ export { CollapsedChangeDetail, CollapseModeChangeDetail, MobileStateChangeDetail, NavigateDetail, OpenChangeDetail, SidebarGroupProps, SidebarMenuItemProps, SidebarMenuSubProps, SidebarProps, SidebarState, SidebarTriggerProps, VariantChangeDetail } from "./components/sidebar/types";
13
15
  export { TooltipHideDetail, TooltipPositionedDetail, TooltipShowDetail, TooltipSide } from "./components/tooltip/seki-tooltip";
14
16
  export namespace Components {
15
17
  interface SekiButton {
@@ -416,6 +418,194 @@ export namespace Components {
416
418
  }
417
419
  interface SekiSelectTrigger {
418
420
  }
421
+ interface SekiSidebar {
422
+ /**
423
+ * Close the sidebar (set isOpen=false)
424
+ * @returns
425
+ */
426
+ "close": () => Promise<void>;
427
+ /**
428
+ * Collapse mechanism: offcanvas (slides), icon (shrinks), or none (fixed)
429
+ * @type {'offcanvas' | 'icon' | 'none'}
430
+ * @default 'offcanvas'
431
+ */
432
+ "collapseMode": SidebarProps['collapseMode'];
433
+ /**
434
+ * Initial open/closed state
435
+ * @type {boolean}
436
+ * @default true
437
+ */
438
+ "defaultOpen": boolean;
439
+ /**
440
+ * Get current sidebar state
441
+ * @returns
442
+ */
443
+ "getState": () => Promise<SidebarState>;
444
+ /**
445
+ * Viewport width for mobile detection (px)
446
+ * @type {number}
447
+ * @default 768
448
+ */
449
+ "mobileBreakpoint": number;
450
+ /**
451
+ * Callback fired when open state changes
452
+ */
453
+ "onOpenChange"?: (isOpen: boolean) => void;
454
+ /**
455
+ * Open the sidebar (set isOpen=true)
456
+ * @returns
457
+ */
458
+ "open": () => Promise<void>;
459
+ /**
460
+ * Storage key for persisted state
461
+ * @type {string}
462
+ * @default 'seki-sidebar-state'
463
+ */
464
+ "persistenceKey": string;
465
+ /**
466
+ * Persist state to localStorage
467
+ * @type {boolean}
468
+ * @default false
469
+ */
470
+ "persistent": boolean;
471
+ /**
472
+ * Update sidebar state
473
+ * @param state - Partial state object
474
+ * @returns
475
+ */
476
+ "setState": (state: Partial<SidebarState>) => Promise<void>;
477
+ /**
478
+ * Position: left or right side of viewport
479
+ * @type {'left' | 'right'}
480
+ * @default 'left'
481
+ */
482
+ "side": SidebarProps['side'];
483
+ /**
484
+ * Toggle the sidebar open/closed state
485
+ * @returns
486
+ */
487
+ "toggle": () => Promise<void>;
488
+ /**
489
+ * Layout variant: standard, floating (detached), or inset
490
+ * @type {'sidebar' | 'floating' | 'inset'}
491
+ * @default 'sidebar'
492
+ */
493
+ "variant": SidebarProps['variant'];
494
+ }
495
+ interface SekiSidebarContent {
496
+ }
497
+ interface SekiSidebarFooter {
498
+ }
499
+ interface SekiSidebarGroup {
500
+ /**
501
+ * Optional action button configuration
502
+ * @type {object}
503
+ */
504
+ "action"?: SidebarGroupProps['action'];
505
+ /**
506
+ * Allow collapsing this group
507
+ * @type {boolean}
508
+ * @default false
509
+ */
510
+ "collapsible": boolean;
511
+ /**
512
+ * Initial collapsed state
513
+ * @type {boolean}
514
+ * @default false
515
+ */
516
+ "defaultCollapsed": boolean;
517
+ /**
518
+ * Get current collapsed state
519
+ */
520
+ "isCollapsedState": () => Promise<boolean>;
521
+ /**
522
+ * Set collapsed state
523
+ */
524
+ "setCollapsed": (collapsed: boolean) => Promise<void>;
525
+ /**
526
+ * Section header text (optional)
527
+ * @type {string}
528
+ */
529
+ "title"?: SidebarGroupProps['title'];
530
+ }
531
+ interface SekiSidebarHeader {
532
+ }
533
+ interface SekiSidebarMenu {
534
+ }
535
+ interface SekiSidebarMenuItem {
536
+ /**
537
+ * ARIA current value for active items
538
+ * @type {string}
539
+ * @default 'page'
540
+ */
541
+ "ariaCurrentValue": SidebarMenuItemProps['ariaCurrentValue'];
542
+ /**
543
+ * Accessibility label override
544
+ * @type {string}
545
+ */
546
+ "ariaLabel"?: SidebarMenuItemProps['ariaLabel'];
547
+ /**
548
+ * Badge indicator for the item
549
+ * @type {object}
550
+ */
551
+ "badge"?: SidebarMenuItemProps['badge'];
552
+ /**
553
+ * Disable interaction
554
+ * @type {boolean}
555
+ * @default false
556
+ */
557
+ "disabled": boolean;
558
+ /**
559
+ * Navigation URL (optional)
560
+ * @type {string}
561
+ */
562
+ "href"?: SidebarMenuItemProps['href'];
563
+ /**
564
+ * Highlight as current page
565
+ * @type {boolean}
566
+ * @default false
567
+ */
568
+ "isActive": boolean;
569
+ /**
570
+ * Link target: _blank, _self, etc.
571
+ * @type {string}
572
+ */
573
+ "target"?: SidebarMenuItemProps['target'];
574
+ }
575
+ interface SekiSidebarMenuSub {
576
+ /**
577
+ * Initial collapsed state
578
+ * @type {boolean}
579
+ * @default false
580
+ */
581
+ "defaultCollapsed": boolean;
582
+ /**
583
+ * Get current collapsed state
584
+ */
585
+ "isCollapsedState": () => Promise<boolean>;
586
+ /**
587
+ * Label for the submenu (shown when expanded)
588
+ * @type {string}
589
+ */
590
+ "label"?: SidebarMenuSubProps['label'];
591
+ /**
592
+ * Set collapsed state
593
+ */
594
+ "setCollapsed": (collapsed: boolean) => Promise<void>;
595
+ }
596
+ interface SekiSidebarTrigger {
597
+ /**
598
+ * Accessibility label for the button
599
+ * @type {string}
600
+ * @default 'Toggle sidebar'
601
+ */
602
+ "ariaLabel": SidebarTriggerProps['ariaLabel'];
603
+ /**
604
+ * Icon name or SVG path (optional)
605
+ * @type {string}
606
+ */
607
+ "icon": SidebarTriggerProps['icon'];
608
+ }
419
609
  /**
420
610
  * @component seki-skeleton
421
611
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -534,6 +724,22 @@ export interface SekiSelectOptionCustomEvent<T> extends CustomEvent<T> {
534
724
  detail: T;
535
725
  target: HTMLSekiSelectOptionElement;
536
726
  }
727
+ export interface SekiSidebarCustomEvent<T> extends CustomEvent<T> {
728
+ detail: T;
729
+ target: HTMLSekiSidebarElement;
730
+ }
731
+ export interface SekiSidebarGroupCustomEvent<T> extends CustomEvent<T> {
732
+ detail: T;
733
+ target: HTMLSekiSidebarGroupElement;
734
+ }
735
+ export interface SekiSidebarMenuItemCustomEvent<T> extends CustomEvent<T> {
736
+ detail: T;
737
+ target: HTMLSekiSidebarMenuItemElement;
738
+ }
739
+ export interface SekiSidebarMenuSubCustomEvent<T> extends CustomEvent<T> {
740
+ detail: T;
741
+ target: HTMLSekiSidebarMenuSubElement;
742
+ }
537
743
  export interface SekiSwitchCustomEvent<T> extends CustomEvent<T> {
538
744
  detail: T;
539
745
  target: HTMLSekiSwitchElement;
@@ -762,6 +968,107 @@ declare global {
762
968
  prototype: HTMLSekiSelectTriggerElement;
763
969
  new (): HTMLSekiSelectTriggerElement;
764
970
  };
971
+ interface HTMLSekiSidebarElementEventMap {
972
+ "openChange": OpenChangeDetail;
973
+ "variantChange": VariantChangeDetail;
974
+ "collapseModeChange": CollapseModeChangeDetail;
975
+ "mobileStateChange": MobileStateChangeDetail;
976
+ }
977
+ interface HTMLSekiSidebarElement extends Components.SekiSidebar, HTMLStencilElement {
978
+ addEventListener<K extends keyof HTMLSekiSidebarElementEventMap>(type: K, listener: (this: HTMLSekiSidebarElement, ev: SekiSidebarCustomEvent<HTMLSekiSidebarElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
979
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
980
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
981
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
982
+ removeEventListener<K extends keyof HTMLSekiSidebarElementEventMap>(type: K, listener: (this: HTMLSekiSidebarElement, ev: SekiSidebarCustomEvent<HTMLSekiSidebarElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
983
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
984
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
985
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
986
+ }
987
+ var HTMLSekiSidebarElement: {
988
+ prototype: HTMLSekiSidebarElement;
989
+ new (): HTMLSekiSidebarElement;
990
+ };
991
+ interface HTMLSekiSidebarContentElement extends Components.SekiSidebarContent, HTMLStencilElement {
992
+ }
993
+ var HTMLSekiSidebarContentElement: {
994
+ prototype: HTMLSekiSidebarContentElement;
995
+ new (): HTMLSekiSidebarContentElement;
996
+ };
997
+ interface HTMLSekiSidebarFooterElement extends Components.SekiSidebarFooter, HTMLStencilElement {
998
+ }
999
+ var HTMLSekiSidebarFooterElement: {
1000
+ prototype: HTMLSekiSidebarFooterElement;
1001
+ new (): HTMLSekiSidebarFooterElement;
1002
+ };
1003
+ interface HTMLSekiSidebarGroupElementEventMap {
1004
+ "collapsedChange": CollapsedChangeDetail;
1005
+ }
1006
+ interface HTMLSekiSidebarGroupElement extends Components.SekiSidebarGroup, HTMLStencilElement {
1007
+ addEventListener<K extends keyof HTMLSekiSidebarGroupElementEventMap>(type: K, listener: (this: HTMLSekiSidebarGroupElement, ev: SekiSidebarGroupCustomEvent<HTMLSekiSidebarGroupElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1008
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1009
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1010
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1011
+ removeEventListener<K extends keyof HTMLSekiSidebarGroupElementEventMap>(type: K, listener: (this: HTMLSekiSidebarGroupElement, ev: SekiSidebarGroupCustomEvent<HTMLSekiSidebarGroupElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1012
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1013
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1014
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1015
+ }
1016
+ var HTMLSekiSidebarGroupElement: {
1017
+ prototype: HTMLSekiSidebarGroupElement;
1018
+ new (): HTMLSekiSidebarGroupElement;
1019
+ };
1020
+ interface HTMLSekiSidebarHeaderElement extends Components.SekiSidebarHeader, HTMLStencilElement {
1021
+ }
1022
+ var HTMLSekiSidebarHeaderElement: {
1023
+ prototype: HTMLSekiSidebarHeaderElement;
1024
+ new (): HTMLSekiSidebarHeaderElement;
1025
+ };
1026
+ interface HTMLSekiSidebarMenuElement extends Components.SekiSidebarMenu, HTMLStencilElement {
1027
+ }
1028
+ var HTMLSekiSidebarMenuElement: {
1029
+ prototype: HTMLSekiSidebarMenuElement;
1030
+ new (): HTMLSekiSidebarMenuElement;
1031
+ };
1032
+ interface HTMLSekiSidebarMenuItemElementEventMap {
1033
+ "navigate": NavigateDetail;
1034
+ }
1035
+ interface HTMLSekiSidebarMenuItemElement extends Components.SekiSidebarMenuItem, HTMLStencilElement {
1036
+ addEventListener<K extends keyof HTMLSekiSidebarMenuItemElementEventMap>(type: K, listener: (this: HTMLSekiSidebarMenuItemElement, ev: SekiSidebarMenuItemCustomEvent<HTMLSekiSidebarMenuItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1037
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1038
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1039
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1040
+ removeEventListener<K extends keyof HTMLSekiSidebarMenuItemElementEventMap>(type: K, listener: (this: HTMLSekiSidebarMenuItemElement, ev: SekiSidebarMenuItemCustomEvent<HTMLSekiSidebarMenuItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1041
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1042
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1043
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1044
+ }
1045
+ var HTMLSekiSidebarMenuItemElement: {
1046
+ prototype: HTMLSekiSidebarMenuItemElement;
1047
+ new (): HTMLSekiSidebarMenuItemElement;
1048
+ };
1049
+ interface HTMLSekiSidebarMenuSubElementEventMap {
1050
+ "collapsedChange": CollapsedChangeDetail;
1051
+ }
1052
+ interface HTMLSekiSidebarMenuSubElement extends Components.SekiSidebarMenuSub, HTMLStencilElement {
1053
+ addEventListener<K extends keyof HTMLSekiSidebarMenuSubElementEventMap>(type: K, listener: (this: HTMLSekiSidebarMenuSubElement, ev: SekiSidebarMenuSubCustomEvent<HTMLSekiSidebarMenuSubElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1054
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1055
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1056
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1057
+ removeEventListener<K extends keyof HTMLSekiSidebarMenuSubElementEventMap>(type: K, listener: (this: HTMLSekiSidebarMenuSubElement, ev: SekiSidebarMenuSubCustomEvent<HTMLSekiSidebarMenuSubElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1058
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1059
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1060
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1061
+ }
1062
+ var HTMLSekiSidebarMenuSubElement: {
1063
+ prototype: HTMLSekiSidebarMenuSubElement;
1064
+ new (): HTMLSekiSidebarMenuSubElement;
1065
+ };
1066
+ interface HTMLSekiSidebarTriggerElement extends Components.SekiSidebarTrigger, HTMLStencilElement {
1067
+ }
1068
+ var HTMLSekiSidebarTriggerElement: {
1069
+ prototype: HTMLSekiSidebarTriggerElement;
1070
+ new (): HTMLSekiSidebarTriggerElement;
1071
+ };
765
1072
  /**
766
1073
  * @component seki-skeleton
767
1074
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -851,6 +1158,15 @@ declare global {
851
1158
  "seki-select-group": HTMLSekiSelectGroupElement;
852
1159
  "seki-select-option": HTMLSekiSelectOptionElement;
853
1160
  "seki-select-trigger": HTMLSekiSelectTriggerElement;
1161
+ "seki-sidebar": HTMLSekiSidebarElement;
1162
+ "seki-sidebar-content": HTMLSekiSidebarContentElement;
1163
+ "seki-sidebar-footer": HTMLSekiSidebarFooterElement;
1164
+ "seki-sidebar-group": HTMLSekiSidebarGroupElement;
1165
+ "seki-sidebar-header": HTMLSekiSidebarHeaderElement;
1166
+ "seki-sidebar-menu": HTMLSekiSidebarMenuElement;
1167
+ "seki-sidebar-menu-item": HTMLSekiSidebarMenuItemElement;
1168
+ "seki-sidebar-menu-sub": HTMLSekiSidebarMenuSubElement;
1169
+ "seki-sidebar-trigger": HTMLSekiSidebarTriggerElement;
854
1170
  "seki-skeleton": HTMLSekiSkeletonElement;
855
1171
  "seki-switch": HTMLSekiSwitchElement;
856
1172
  "seki-tooltip": HTMLSekiTooltipElement;
@@ -1261,6 +1577,180 @@ declare namespace LocalJSX {
1261
1577
  }
1262
1578
  interface SekiSelectTrigger {
1263
1579
  }
1580
+ interface SekiSidebar {
1581
+ /**
1582
+ * Collapse mechanism: offcanvas (slides), icon (shrinks), or none (fixed)
1583
+ * @type {'offcanvas' | 'icon' | 'none'}
1584
+ * @default 'offcanvas'
1585
+ */
1586
+ "collapseMode"?: SidebarProps['collapseMode'];
1587
+ /**
1588
+ * Initial open/closed state
1589
+ * @type {boolean}
1590
+ * @default true
1591
+ */
1592
+ "defaultOpen"?: boolean;
1593
+ /**
1594
+ * Viewport width for mobile detection (px)
1595
+ * @type {number}
1596
+ * @default 768
1597
+ */
1598
+ "mobileBreakpoint"?: number;
1599
+ /**
1600
+ * Event fired when collapse mode changes
1601
+ */
1602
+ "onCollapseModeChange"?: (event: SekiSidebarCustomEvent<CollapseModeChangeDetail>) => void;
1603
+ /**
1604
+ * Event fired when mobile state changes
1605
+ */
1606
+ "onMobileStateChange"?: (event: SekiSidebarCustomEvent<MobileStateChangeDetail>) => void;
1607
+ /**
1608
+ * Callback fired when open state changes
1609
+ */
1610
+ "onOpenChange"?: (isOpen: boolean) => void;
1611
+ /**
1612
+ * Event fired when sidebar opens/closes
1613
+ */
1614
+ "onOpenChange"?: (event: SekiSidebarCustomEvent<OpenChangeDetail>) => void;
1615
+ /**
1616
+ * Event fired when variant changes
1617
+ */
1618
+ "onVariantChange"?: (event: SekiSidebarCustomEvent<VariantChangeDetail>) => void;
1619
+ /**
1620
+ * Storage key for persisted state
1621
+ * @type {string}
1622
+ * @default 'seki-sidebar-state'
1623
+ */
1624
+ "persistenceKey"?: string;
1625
+ /**
1626
+ * Persist state to localStorage
1627
+ * @type {boolean}
1628
+ * @default false
1629
+ */
1630
+ "persistent"?: boolean;
1631
+ /**
1632
+ * Position: left or right side of viewport
1633
+ * @type {'left' | 'right'}
1634
+ * @default 'left'
1635
+ */
1636
+ "side"?: SidebarProps['side'];
1637
+ /**
1638
+ * Layout variant: standard, floating (detached), or inset
1639
+ * @type {'sidebar' | 'floating' | 'inset'}
1640
+ * @default 'sidebar'
1641
+ */
1642
+ "variant"?: SidebarProps['variant'];
1643
+ }
1644
+ interface SekiSidebarContent {
1645
+ }
1646
+ interface SekiSidebarFooter {
1647
+ }
1648
+ interface SekiSidebarGroup {
1649
+ /**
1650
+ * Optional action button configuration
1651
+ * @type {object}
1652
+ */
1653
+ "action"?: SidebarGroupProps['action'];
1654
+ /**
1655
+ * Allow collapsing this group
1656
+ * @type {boolean}
1657
+ * @default false
1658
+ */
1659
+ "collapsible"?: boolean;
1660
+ /**
1661
+ * Initial collapsed state
1662
+ * @type {boolean}
1663
+ * @default false
1664
+ */
1665
+ "defaultCollapsed"?: boolean;
1666
+ /**
1667
+ * Event fired when collapsed state changes
1668
+ */
1669
+ "onCollapsedChange"?: (event: SekiSidebarGroupCustomEvent<CollapsedChangeDetail>) => void;
1670
+ /**
1671
+ * Section header text (optional)
1672
+ * @type {string}
1673
+ */
1674
+ "title"?: SidebarGroupProps['title'];
1675
+ }
1676
+ interface SekiSidebarHeader {
1677
+ }
1678
+ interface SekiSidebarMenu {
1679
+ }
1680
+ interface SekiSidebarMenuItem {
1681
+ /**
1682
+ * ARIA current value for active items
1683
+ * @type {string}
1684
+ * @default 'page'
1685
+ */
1686
+ "ariaCurrentValue"?: SidebarMenuItemProps['ariaCurrentValue'];
1687
+ /**
1688
+ * Accessibility label override
1689
+ * @type {string}
1690
+ */
1691
+ "ariaLabel"?: SidebarMenuItemProps['ariaLabel'];
1692
+ /**
1693
+ * Badge indicator for the item
1694
+ * @type {object}
1695
+ */
1696
+ "badge"?: SidebarMenuItemProps['badge'];
1697
+ /**
1698
+ * Disable interaction
1699
+ * @type {boolean}
1700
+ * @default false
1701
+ */
1702
+ "disabled"?: boolean;
1703
+ /**
1704
+ * Navigation URL (optional)
1705
+ * @type {string}
1706
+ */
1707
+ "href"?: SidebarMenuItemProps['href'];
1708
+ /**
1709
+ * Highlight as current page
1710
+ * @type {boolean}
1711
+ * @default false
1712
+ */
1713
+ "isActive"?: boolean;
1714
+ /**
1715
+ * Event fired on item click
1716
+ */
1717
+ "onNavigate"?: (event: SekiSidebarMenuItemCustomEvent<NavigateDetail>) => void;
1718
+ /**
1719
+ * Link target: _blank, _self, etc.
1720
+ * @type {string}
1721
+ */
1722
+ "target"?: SidebarMenuItemProps['target'];
1723
+ }
1724
+ interface SekiSidebarMenuSub {
1725
+ /**
1726
+ * Initial collapsed state
1727
+ * @type {boolean}
1728
+ * @default false
1729
+ */
1730
+ "defaultCollapsed"?: boolean;
1731
+ /**
1732
+ * Label for the submenu (shown when expanded)
1733
+ * @type {string}
1734
+ */
1735
+ "label"?: SidebarMenuSubProps['label'];
1736
+ /**
1737
+ * Event fired when collapsed state changes
1738
+ */
1739
+ "onCollapsedChange"?: (event: SekiSidebarMenuSubCustomEvent<CollapsedChangeDetail>) => void;
1740
+ }
1741
+ interface SekiSidebarTrigger {
1742
+ /**
1743
+ * Accessibility label for the button
1744
+ * @type {string}
1745
+ * @default 'Toggle sidebar'
1746
+ */
1747
+ "ariaLabel"?: SidebarTriggerProps['ariaLabel'];
1748
+ /**
1749
+ * Icon name or SVG path (optional)
1750
+ * @type {string}
1751
+ */
1752
+ "icon"?: SidebarTriggerProps['icon'];
1753
+ }
1264
1754
  /**
1265
1755
  * @component seki-skeleton
1266
1756
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -1390,6 +1880,15 @@ declare namespace LocalJSX {
1390
1880
  "seki-select-group": SekiSelectGroup;
1391
1881
  "seki-select-option": SekiSelectOption;
1392
1882
  "seki-select-trigger": SekiSelectTrigger;
1883
+ "seki-sidebar": SekiSidebar;
1884
+ "seki-sidebar-content": SekiSidebarContent;
1885
+ "seki-sidebar-footer": SekiSidebarFooter;
1886
+ "seki-sidebar-group": SekiSidebarGroup;
1887
+ "seki-sidebar-header": SekiSidebarHeader;
1888
+ "seki-sidebar-menu": SekiSidebarMenu;
1889
+ "seki-sidebar-menu-item": SekiSidebarMenuItem;
1890
+ "seki-sidebar-menu-sub": SekiSidebarMenuSub;
1891
+ "seki-sidebar-trigger": SekiSidebarTrigger;
1393
1892
  "seki-skeleton": SekiSkeleton;
1394
1893
  "seki-switch": SekiSwitch;
1395
1894
  "seki-tooltip": SekiTooltip;
@@ -1474,6 +1973,15 @@ declare module "@stencil/core" {
1474
1973
  "seki-select-group": LocalJSX.SekiSelectGroup & JSXBase.HTMLAttributes<HTMLSekiSelectGroupElement>;
1475
1974
  "seki-select-option": LocalJSX.SekiSelectOption & JSXBase.HTMLAttributes<HTMLSekiSelectOptionElement>;
1476
1975
  "seki-select-trigger": LocalJSX.SekiSelectTrigger & JSXBase.HTMLAttributes<HTMLSekiSelectTriggerElement>;
1976
+ "seki-sidebar": LocalJSX.SekiSidebar & JSXBase.HTMLAttributes<HTMLSekiSidebarElement>;
1977
+ "seki-sidebar-content": LocalJSX.SekiSidebarContent & JSXBase.HTMLAttributes<HTMLSekiSidebarContentElement>;
1978
+ "seki-sidebar-footer": LocalJSX.SekiSidebarFooter & JSXBase.HTMLAttributes<HTMLSekiSidebarFooterElement>;
1979
+ "seki-sidebar-group": LocalJSX.SekiSidebarGroup & JSXBase.HTMLAttributes<HTMLSekiSidebarGroupElement>;
1980
+ "seki-sidebar-header": LocalJSX.SekiSidebarHeader & JSXBase.HTMLAttributes<HTMLSekiSidebarHeaderElement>;
1981
+ "seki-sidebar-menu": LocalJSX.SekiSidebarMenu & JSXBase.HTMLAttributes<HTMLSekiSidebarMenuElement>;
1982
+ "seki-sidebar-menu-item": LocalJSX.SekiSidebarMenuItem & JSXBase.HTMLAttributes<HTMLSekiSidebarMenuItemElement>;
1983
+ "seki-sidebar-menu-sub": LocalJSX.SekiSidebarMenuSub & JSXBase.HTMLAttributes<HTMLSekiSidebarMenuSubElement>;
1984
+ "seki-sidebar-trigger": LocalJSX.SekiSidebarTrigger & JSXBase.HTMLAttributes<HTMLSekiSidebarTriggerElement>;
1477
1985
  /**
1478
1986
  * @component seki-skeleton
1479
1987
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -1,2 +1,6 @@
1
1
  export { Components, JSX } from './components';
2
2
  export { SekiSwitch } from './components/switch/seki-switch';
3
+ export * from './services';
4
+ export * from './utils/common';
5
+ export * from './utils/a11y';
6
+ export * from './types';
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Focus Management Service
3
+ * Provides utilities for focus management, focus traps, and focus restoration
4
+ */
5
+ export interface FocusTrapOptions {
6
+ initialFocus?: HTMLElement;
7
+ restoreFocus?: boolean;
8
+ allowOutsideClick?: boolean;
9
+ }
10
+ /**
11
+ * FocusService - Centralized focus management
12
+ * Provides:
13
+ * - Focus trap implementation
14
+ * - Focus restoration
15
+ * - Focusable element detection
16
+ * - Focus utilities for accessibility
17
+ */
18
+ export declare class FocusService {
19
+ private focusTrapStack;
20
+ private previouslyFocusedElement;
21
+ /**
22
+ * Get all focusable elements within a container
23
+ * Includes buttons, links, inputs, textareas, selects, and elements with tabindex
24
+ */
25
+ getFocusableElements(container?: HTMLElement | Document): HTMLElement[];
26
+ /**
27
+ * Check if an element is focusable
28
+ */
29
+ isFocusable(element: HTMLElement): boolean;
30
+ /**
31
+ * Set focus to an element with optional callbacks
32
+ */
33
+ setFocus(element: HTMLElement | null, options?: {
34
+ preventScroll?: boolean;
35
+ }): boolean;
36
+ /**
37
+ * Trap focus within a container (keyboard navigation stays within bounds)
38
+ * @param container - The element to trap focus within
39
+ * @param options - Focus trap options
40
+ */
41
+ createFocusTrap(container: HTMLElement, options?: FocusTrapOptions): void;
42
+ /**
43
+ * Release focus trap from a container
44
+ */
45
+ releaseFocusTrap(container: HTMLElement, restoreFocus?: boolean): void;
46
+ /**
47
+ * Get the first focusable element in a container
48
+ */
49
+ getFirstFocusable(container?: HTMLElement | Document): HTMLElement | null;
50
+ /**
51
+ * Get the last focusable element in a container
52
+ */
53
+ getLastFocusable(container?: HTMLElement | Document): HTMLElement | null;
54
+ /**
55
+ * Move focus to the next focusable element
56
+ */
57
+ focusNext(container?: HTMLElement | Document): boolean;
58
+ /**
59
+ * Move focus to the previous focusable element
60
+ */
61
+ focusPrevious(container?: HTMLElement | Document): boolean;
62
+ /**
63
+ * Clear all focus traps
64
+ */
65
+ clearFocusTraps(): void;
66
+ }
67
+ /**
68
+ * Get the singleton FocusService instance
69
+ */
70
+ export declare function getFocusService(): FocusService;
71
+ /**
72
+ * Create a new isolated FocusService instance
73
+ */
74
+ export declare function createFocusService(): FocusService;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Services Index
3
+ * Central export point for all application services
4
+ */
5
+ export * from './keyboard';
6
+ export * from './focus';
7
+ export * from './media-query';