@sekiui/elements 0.0.55 → 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 (298) 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.d.ts +11 -0
  7. package/dist/cdn/seki-card-action.js +38 -0
  8. package/dist/cdn/seki-card-content.d.ts +11 -0
  9. package/dist/cdn/seki-card-content.js +38 -0
  10. package/dist/cdn/seki-card-description.d.ts +11 -0
  11. package/dist/cdn/seki-card-description.js +38 -0
  12. package/dist/cdn/seki-card-footer.d.ts +11 -0
  13. package/dist/cdn/seki-card-footer.js +44 -0
  14. package/dist/cdn/seki-card-header.d.ts +11 -0
  15. package/dist/cdn/seki-card-header.js +38 -0
  16. package/dist/cdn/seki-card-title.d.ts +11 -0
  17. package/dist/cdn/seki-card-title.js +59 -0
  18. package/dist/cdn/seki-card.d.ts +11 -0
  19. package/dist/cdn/seki-card.js +39 -0
  20. package/dist/cdn/seki-field-description.js +2 -2
  21. package/dist/cdn/seki-field-error.js +2 -2
  22. package/dist/cdn/seki-field-group.js +2 -2
  23. package/dist/cdn/seki-field-label.js +2 -2
  24. package/dist/cdn/seki-field-legend.js +2 -2
  25. package/dist/cdn/seki-field.js +2 -2
  26. package/dist/cdn/seki-fieldset.js +2 -2
  27. package/dist/cdn/seki-input.js +2 -2
  28. package/dist/cdn/seki-select-content.js +1 -1
  29. package/dist/cdn/seki-select-group.js +2 -2
  30. package/dist/cdn/seki-select-option.js +2 -2
  31. package/dist/cdn/seki-select-trigger.js +1 -1
  32. package/dist/cdn/seki-select.js +2 -2
  33. package/dist/cdn/seki-sidebar-content.d.ts +11 -0
  34. package/dist/cdn/seki-sidebar-content.js +38 -0
  35. package/dist/cdn/seki-sidebar-footer.d.ts +11 -0
  36. package/dist/cdn/seki-sidebar-footer.js +38 -0
  37. package/dist/cdn/seki-sidebar-group.d.ts +11 -0
  38. package/dist/cdn/seki-sidebar-group.js +131 -0
  39. package/dist/cdn/seki-sidebar-header.d.ts +11 -0
  40. package/dist/cdn/seki-sidebar-header.js +38 -0
  41. package/dist/cdn/seki-sidebar-menu-item.d.ts +11 -0
  42. package/dist/cdn/seki-sidebar-menu-item.js +200 -0
  43. package/dist/cdn/seki-sidebar-menu-sub.d.ts +11 -0
  44. package/dist/cdn/seki-sidebar-menu-sub.js +123 -0
  45. package/dist/cdn/seki-sidebar-menu.d.ts +11 -0
  46. package/dist/cdn/seki-sidebar-menu.js +38 -0
  47. package/dist/cdn/seki-sidebar-trigger.d.ts +11 -0
  48. package/dist/cdn/seki-sidebar-trigger.js +109 -0
  49. package/dist/cdn/seki-sidebar.d.ts +11 -0
  50. package/dist/cdn/seki-sidebar.js +380 -0
  51. package/dist/cdn/seki-skeleton.js +2 -2
  52. package/dist/cdn/seki-switch.js +1 -1
  53. package/dist/cdn/seki-tooltip.js +1 -1
  54. package/dist/cjs/{index-Dd6_-KaR.js → index-tQYksITZ.js} +426 -6
  55. package/dist/cjs/index.cjs.js +1115 -63
  56. package/dist/cjs/keyboard-Cjl5HYES.js +142 -0
  57. package/dist/cjs/loader.cjs.js +2 -2
  58. package/dist/cjs/seki-button.cjs.entry.js +1 -1
  59. package/dist/cjs/seki-card-action.cjs.entry.js +17 -0
  60. package/dist/cjs/seki-card-content.cjs.entry.js +17 -0
  61. package/dist/cjs/seki-card-description.cjs.entry.js +17 -0
  62. package/dist/cjs/seki-card-footer.cjs.entry.js +22 -0
  63. package/dist/cjs/seki-card-header.cjs.entry.js +17 -0
  64. package/dist/cjs/seki-card-title.cjs.entry.js +37 -0
  65. package/dist/cjs/seki-card.cjs.entry.js +17 -0
  66. package/dist/cjs/seki-field-description.cjs.entry.js +2 -2
  67. package/dist/cjs/seki-field-error.cjs.entry.js +2 -2
  68. package/dist/cjs/seki-field-group.cjs.entry.js +2 -2
  69. package/dist/cjs/seki-field-label.cjs.entry.js +2 -2
  70. package/dist/cjs/seki-field-legend.cjs.entry.js +2 -2
  71. package/dist/cjs/seki-field.cjs.entry.js +2 -2
  72. package/dist/cjs/seki-fieldset.cjs.entry.js +2 -2
  73. package/dist/cjs/seki-input.cjs.entry.js +2 -2
  74. package/dist/cjs/seki-select-content.cjs.entry.js +1 -1
  75. package/dist/cjs/seki-select-group.cjs.entry.js +2 -2
  76. package/dist/cjs/seki-select-option.cjs.entry.js +2 -2
  77. package/dist/cjs/seki-select-trigger.cjs.entry.js +1 -1
  78. package/dist/cjs/seki-select.cjs.entry.js +2 -2
  79. package/dist/cjs/seki-sidebar-content.cjs.entry.js +20 -0
  80. package/dist/cjs/seki-sidebar-footer.cjs.entry.js +20 -0
  81. package/dist/cjs/seki-sidebar-group.cjs.entry.js +105 -0
  82. package/dist/cjs/seki-sidebar-header.cjs.entry.js +20 -0
  83. package/dist/cjs/seki-sidebar-menu-item.cjs.entry.js +174 -0
  84. package/dist/cjs/seki-sidebar-menu-sub.cjs.entry.js +99 -0
  85. package/dist/cjs/seki-sidebar-menu.cjs.entry.js +20 -0
  86. package/dist/cjs/seki-sidebar-trigger.cjs.entry.js +86 -0
  87. package/dist/cjs/seki-sidebar.cjs.entry.js +342 -0
  88. package/dist/cjs/seki-skeleton.cjs.entry.js +2 -2
  89. package/dist/cjs/seki-switch.cjs.entry.js +81 -3
  90. package/dist/cjs/seki-tooltip.cjs.entry.js +1 -1
  91. package/dist/cjs/sekiui.cjs.js +2 -2
  92. package/dist/collection/collection-manifest.json +16 -0
  93. package/dist/collection/components/card/seki-card-action.js +50 -0
  94. package/dist/collection/components/card/seki-card-content.js +51 -0
  95. package/dist/collection/components/card/seki-card-description.js +48 -0
  96. package/dist/collection/components/card/seki-card-footer.js +83 -0
  97. package/dist/collection/components/card/seki-card-header.js +54 -0
  98. package/dist/collection/components/card/seki-card-title.js +95 -0
  99. package/dist/collection/components/card/seki-card.a11y.js +363 -0
  100. package/dist/collection/components/card/seki-card.css +608 -0
  101. package/dist/collection/components/card/seki-card.js +72 -0
  102. package/dist/collection/components/field/seki-field.js +1 -1
  103. package/dist/collection/components/field-description/seki-field-description.js +1 -1
  104. package/dist/collection/components/field-error/seki-field-error.js +1 -1
  105. package/dist/collection/components/field-group/seki-field-group.js +1 -1
  106. package/dist/collection/components/field-label/seki-field-label.js +1 -1
  107. package/dist/collection/components/field-legend/seki-field-legend.js +1 -1
  108. package/dist/collection/components/fieldset/seki-fieldset.js +1 -1
  109. package/dist/collection/components/input/seki-input.js +1 -1
  110. package/dist/collection/components/select/seki-select.js +1 -1
  111. package/dist/collection/components/select-group/seki-select-group.js +1 -1
  112. package/dist/collection/components/select-option/seki-select-option.js +1 -1
  113. package/dist/collection/components/sidebar/seki-sidebar-content.css +82 -0
  114. package/dist/collection/components/sidebar/seki-sidebar-content.js +33 -0
  115. package/dist/collection/components/sidebar/seki-sidebar-footer.css +44 -0
  116. package/dist/collection/components/sidebar/seki-sidebar-footer.js +31 -0
  117. package/dist/collection/components/sidebar/seki-sidebar-group.css +158 -0
  118. package/dist/collection/components/sidebar/seki-sidebar-group.js +300 -0
  119. package/dist/collection/components/sidebar/seki-sidebar-header.css +44 -0
  120. package/dist/collection/components/sidebar/seki-sidebar-header.js +32 -0
  121. package/dist/collection/components/sidebar/seki-sidebar-menu-item.css +196 -0
  122. package/dist/collection/components/sidebar/seki-sidebar-menu-item.js +403 -0
  123. package/dist/collection/components/sidebar/seki-sidebar-menu-sub.css +357 -0
  124. package/dist/collection/components/sidebar/seki-sidebar-menu-sub.js +256 -0
  125. package/dist/collection/components/sidebar/seki-sidebar-menu.css +25 -0
  126. package/dist/collection/components/sidebar/seki-sidebar-menu.js +32 -0
  127. package/dist/collection/components/sidebar/seki-sidebar-trigger.css +68 -0
  128. package/dist/collection/components/sidebar/seki-sidebar-trigger.js +175 -0
  129. package/dist/collection/components/sidebar/seki-sidebar.css +352 -0
  130. package/dist/collection/components/sidebar/seki-sidebar.js +812 -0
  131. package/dist/collection/components/sidebar/types.js +18 -0
  132. package/dist/collection/components/skeleton/seki-skeleton.js +1 -1
  133. package/dist/collection/index.js +7 -0
  134. package/dist/collection/services/focus.js +192 -0
  135. package/dist/collection/services/index.js +7 -0
  136. package/dist/collection/services/keyboard.js +136 -0
  137. package/dist/collection/services/media-query.js +254 -0
  138. package/dist/collection/types.js +41 -0
  139. package/dist/collection/utils/a11y.js +291 -0
  140. package/dist/collection/utils/common.js +286 -0
  141. package/dist/components/index.js +1053 -91
  142. package/dist/components/p-BJCq8m2o.js +138 -0
  143. package/dist/components/{p-QhPshhKB.js → p-BzYKy7d3.js} +427 -7
  144. package/dist/components/p-DwTISp-i.js +111 -0
  145. package/dist/components/seki-button.js +1 -1
  146. package/dist/components/seki-card-action.d.ts +11 -0
  147. package/dist/components/seki-card-action.js +38 -0
  148. package/dist/components/seki-card-content.d.ts +11 -0
  149. package/dist/components/seki-card-content.js +38 -0
  150. package/dist/components/seki-card-description.d.ts +11 -0
  151. package/dist/components/seki-card-description.js +38 -0
  152. package/dist/components/seki-card-footer.d.ts +11 -0
  153. package/dist/components/seki-card-footer.js +44 -0
  154. package/dist/components/seki-card-header.d.ts +11 -0
  155. package/dist/components/seki-card-header.js +38 -0
  156. package/dist/components/seki-card-title.d.ts +11 -0
  157. package/dist/components/seki-card-title.js +59 -0
  158. package/dist/components/seki-card.d.ts +11 -0
  159. package/dist/components/seki-card.js +39 -0
  160. package/dist/components/seki-field-description.js +2 -2
  161. package/dist/components/seki-field-error.js +2 -2
  162. package/dist/components/seki-field-group.js +2 -2
  163. package/dist/components/seki-field-label.js +2 -2
  164. package/dist/components/seki-field-legend.js +2 -2
  165. package/dist/components/seki-field.js +2 -2
  166. package/dist/components/seki-fieldset.js +2 -2
  167. package/dist/components/seki-input.js +2 -2
  168. package/dist/components/seki-select-content.js +1 -1
  169. package/dist/components/seki-select-group.js +2 -2
  170. package/dist/components/seki-select-option.js +2 -2
  171. package/dist/components/seki-select-trigger.js +1 -1
  172. package/dist/components/seki-select.js +2 -2
  173. package/dist/components/seki-sidebar-content.d.ts +11 -0
  174. package/dist/components/seki-sidebar-content.js +38 -0
  175. package/dist/components/seki-sidebar-footer.d.ts +11 -0
  176. package/dist/components/seki-sidebar-footer.js +38 -0
  177. package/dist/components/seki-sidebar-group.d.ts +11 -0
  178. package/dist/components/seki-sidebar-group.js +131 -0
  179. package/dist/components/seki-sidebar-header.d.ts +11 -0
  180. package/dist/components/seki-sidebar-header.js +38 -0
  181. package/dist/components/seki-sidebar-menu-item.d.ts +11 -0
  182. package/dist/components/seki-sidebar-menu-item.js +200 -0
  183. package/dist/components/seki-sidebar-menu-sub.d.ts +11 -0
  184. package/dist/components/seki-sidebar-menu-sub.js +123 -0
  185. package/dist/components/seki-sidebar-menu.d.ts +11 -0
  186. package/dist/components/seki-sidebar-menu.js +38 -0
  187. package/dist/components/seki-sidebar-trigger.d.ts +11 -0
  188. package/dist/components/seki-sidebar-trigger.js +109 -0
  189. package/dist/components/seki-sidebar.d.ts +11 -0
  190. package/dist/components/seki-sidebar.js +380 -0
  191. package/dist/components/seki-skeleton.js +2 -2
  192. package/dist/components/seki-switch.js +1 -1
  193. package/dist/components/seki-tooltip.js +1 -1
  194. package/dist/esm/{index-CuXbV_yz.js → index-Dfzpqq0a.js} +426 -6
  195. package/dist/esm/index.js +1053 -63
  196. package/dist/esm/keyboard-BJCq8m2o.js +138 -0
  197. package/dist/esm/loader.js +3 -3
  198. package/dist/esm/seki-button.entry.js +1 -1
  199. package/dist/esm/seki-card-action.entry.js +15 -0
  200. package/dist/esm/seki-card-content.entry.js +15 -0
  201. package/dist/esm/seki-card-description.entry.js +15 -0
  202. package/dist/esm/seki-card-footer.entry.js +20 -0
  203. package/dist/esm/seki-card-header.entry.js +15 -0
  204. package/dist/esm/seki-card-title.entry.js +35 -0
  205. package/dist/esm/seki-card.entry.js +15 -0
  206. package/dist/esm/seki-field-description.entry.js +2 -2
  207. package/dist/esm/seki-field-error.entry.js +2 -2
  208. package/dist/esm/seki-field-group.entry.js +2 -2
  209. package/dist/esm/seki-field-label.entry.js +2 -2
  210. package/dist/esm/seki-field-legend.entry.js +2 -2
  211. package/dist/esm/seki-field.entry.js +2 -2
  212. package/dist/esm/seki-fieldset.entry.js +2 -2
  213. package/dist/esm/seki-input.entry.js +2 -2
  214. package/dist/esm/seki-select-content.entry.js +1 -1
  215. package/dist/esm/seki-select-group.entry.js +2 -2
  216. package/dist/esm/seki-select-option.entry.js +2 -2
  217. package/dist/esm/seki-select-trigger.entry.js +1 -1
  218. package/dist/esm/seki-select.entry.js +2 -2
  219. package/dist/esm/seki-sidebar-content.entry.js +18 -0
  220. package/dist/esm/seki-sidebar-footer.entry.js +18 -0
  221. package/dist/esm/seki-sidebar-group.entry.js +103 -0
  222. package/dist/esm/seki-sidebar-header.entry.js +18 -0
  223. package/dist/esm/seki-sidebar-menu-item.entry.js +172 -0
  224. package/dist/esm/seki-sidebar-menu-sub.entry.js +97 -0
  225. package/dist/esm/seki-sidebar-menu.entry.js +18 -0
  226. package/dist/esm/seki-sidebar-trigger.entry.js +84 -0
  227. package/dist/esm/seki-sidebar.entry.js +340 -0
  228. package/dist/esm/seki-skeleton.entry.js +2 -2
  229. package/dist/esm/seki-switch.entry.js +84 -2
  230. package/dist/esm/seki-tooltip.entry.js +1 -1
  231. package/dist/esm/sekiui.js +3 -3
  232. package/dist/sekiui/index.esm.js +1 -1
  233. package/dist/sekiui/p-01cfb4e7.entry.js +1 -0
  234. package/dist/sekiui/{p-431f46a1.entry.js → p-042ec460.entry.js} +1 -1
  235. package/dist/sekiui/{p-a36f1ac4.entry.js → p-10c008fc.entry.js} +1 -1
  236. package/dist/sekiui/p-352bd295.entry.js +1 -0
  237. package/dist/sekiui/p-37c5f4d9.entry.js +1 -0
  238. package/dist/sekiui/p-40fb71d6.entry.js +1 -0
  239. package/dist/sekiui/{p-eefbc037.entry.js → p-44191aed.entry.js} +1 -1
  240. package/dist/sekiui/{p-81709fc2.entry.js → p-4423d621.entry.js} +1 -1
  241. package/dist/sekiui/{p-e679d501.entry.js → p-4636588f.entry.js} +1 -1
  242. package/dist/sekiui/p-471b97a5.entry.js +1 -0
  243. package/dist/sekiui/{p-de4735fb.entry.js → p-56f0d754.entry.js} +1 -1
  244. package/dist/sekiui/p-5bc0f5aa.entry.js +1 -0
  245. package/dist/sekiui/p-6164cd8a.entry.js +1 -0
  246. package/dist/sekiui/{p-0fba4e2d.entry.js → p-635f4098.entry.js} +1 -1
  247. package/dist/sekiui/{p-434be19f.entry.js → p-743fc6d9.entry.js} +1 -1
  248. package/dist/sekiui/p-83e65cbe.entry.js +1 -0
  249. package/dist/sekiui/p-8b7bd061.entry.js +1 -0
  250. package/dist/sekiui/p-8d9a4878.entry.js +1 -0
  251. package/dist/sekiui/p-9cb9cdfe.entry.js +1 -0
  252. package/dist/sekiui/p-9f2d95d7.entry.js +1 -0
  253. package/dist/sekiui/p-BJCq8m2o.js +1 -0
  254. package/dist/sekiui/p-Dfzpqq0a.js +2 -0
  255. package/dist/sekiui/p-a1a71958.entry.js +1 -0
  256. package/dist/sekiui/{p-bf942ad5.entry.js → p-a71e0c55.entry.js} +1 -1
  257. package/dist/sekiui/{p-6ff91f7f.entry.js → p-ae227955.entry.js} +1 -1
  258. package/dist/sekiui/{p-80a41058.entry.js → p-b365f5fb.entry.js} +1 -1
  259. package/dist/sekiui/{p-6bde807e.entry.js → p-b387a2a5.entry.js} +1 -1
  260. package/dist/sekiui/p-b8590f4d.entry.js +1 -0
  261. package/dist/sekiui/p-c98b6d6a.entry.js +1 -0
  262. package/dist/sekiui/{p-7c2245be.entry.js → p-d73cdb9a.entry.js} +1 -1
  263. package/dist/sekiui/{p-a56602b3.entry.js → p-d96e770e.entry.js} +1 -1
  264. package/dist/sekiui/p-e62dd89b.entry.js +1 -0
  265. package/dist/sekiui/{p-386c00ac.entry.js → p-e7bb140c.entry.js} +1 -1
  266. package/dist/sekiui/{p-6e238adf.entry.js → p-eecc18f3.entry.js} +1 -1
  267. package/dist/sekiui/p-ff636955.entry.js +1 -0
  268. package/dist/sekiui/sekiui.esm.js +1 -1
  269. package/dist/types/components/card/seki-card-action.d.ts +16 -0
  270. package/dist/types/components/card/seki-card-content.d.ts +17 -0
  271. package/dist/types/components/card/seki-card-description.d.ts +14 -0
  272. package/dist/types/components/card/seki-card-footer.d.ts +24 -0
  273. package/dist/types/components/card/seki-card-header.d.ts +20 -0
  274. package/dist/types/components/card/seki-card-title.d.ts +20 -0
  275. package/dist/types/components/card/seki-card.a11y.d.ts +1 -0
  276. package/dist/types/components/card/seki-card.d.ts +23 -0
  277. package/dist/types/components/sidebar/seki-sidebar-content.d.ts +18 -0
  278. package/dist/types/components/sidebar/seki-sidebar-footer.d.ts +16 -0
  279. package/dist/types/components/sidebar/seki-sidebar-group.d.ts +81 -0
  280. package/dist/types/components/sidebar/seki-sidebar-header.d.ts +17 -0
  281. package/dist/types/components/sidebar/seki-sidebar-menu-item.d.ts +104 -0
  282. package/dist/types/components/sidebar/seki-sidebar-menu-sub.d.ts +81 -0
  283. package/dist/types/components/sidebar/seki-sidebar-menu.d.ts +17 -0
  284. package/dist/types/components/sidebar/seki-sidebar-trigger.d.ts +53 -0
  285. package/dist/types/components/sidebar/seki-sidebar.d.ts +185 -0
  286. package/dist/types/components/sidebar/types.d.ts +245 -0
  287. package/dist/types/components.d.ts +899 -0
  288. package/dist/types/index.d.ts +4 -0
  289. package/dist/types/services/focus.d.ts +74 -0
  290. package/dist/types/services/index.d.ts +7 -0
  291. package/dist/types/services/keyboard.d.ts +74 -0
  292. package/dist/types/services/media-query.d.ts +121 -0
  293. package/dist/types/types.d.ts +105 -0
  294. package/dist/types/utils/a11y.d.ts +130 -0
  295. package/dist/types/utils/common.d.ts +142 -0
  296. package/package.json +2 -1
  297. package/dist/sekiui/p-9fe07f6e.entry.js +0 -1
  298. package/dist/sekiui/p-CuXbV_yz.js +0 -2
@@ -0,0 +1,81 @@
1
+ /**
2
+ * SekiSidebarGroup Component
3
+ * @description Group container for organizing sidebar menu items
4
+ * Optionally provides a collapsible section with title and action button
5
+ * @component
6
+ * @example
7
+ * <seki-sidebar-group title="Navigation" collapsible>
8
+ * <seki-sidebar-menu>
9
+ * <seki-sidebar-menu-item href="/">Home</seki-sidebar-menu-item>
10
+ * </seki-sidebar-menu>
11
+ * </seki-sidebar-group>
12
+ */
13
+ import { EventEmitter } from '../../stencil-public-runtime';
14
+ import { SidebarGroupProps, CollapsedChangeDetail } from './types';
15
+ export declare class SekiSidebarGroup {
16
+ /**
17
+ * Reference to the element
18
+ */
19
+ el: HTMLElement;
20
+ /**
21
+ * Section header text (optional)
22
+ * @type {string}
23
+ */
24
+ title?: SidebarGroupProps['title'];
25
+ /**
26
+ * Allow collapsing this group
27
+ * @type {boolean}
28
+ * @default false
29
+ */
30
+ collapsible: boolean;
31
+ /**
32
+ * Initial collapsed state
33
+ * @type {boolean}
34
+ * @default false
35
+ */
36
+ defaultCollapsed: boolean;
37
+ /**
38
+ * Optional action button configuration
39
+ * @type {object}
40
+ */
41
+ action?: SidebarGroupProps['action'];
42
+ /**
43
+ * Internal state: whether group is collapsed
44
+ */
45
+ isCollapsed: boolean;
46
+ /**
47
+ * Event fired when collapsed state changes
48
+ */
49
+ collapsedChange: EventEmitter<CollapsedChangeDetail>;
50
+ /**
51
+ * Component lifecycle: initialize state
52
+ */
53
+ componentWillLoad(): void;
54
+ /**
55
+ * Get current collapsed state
56
+ */
57
+ isCollapsedState(): Promise<boolean>;
58
+ /**
59
+ * Set collapsed state
60
+ */
61
+ setCollapsed(collapsed: boolean): Promise<void>;
62
+ /**
63
+ * Toggle collapsed state
64
+ */
65
+ private handleToggle;
66
+ /**
67
+ * Handle keyboard navigation on toggle button
68
+ * - Enter/Space: toggle group
69
+ * - ArrowLeft: collapse group
70
+ * - ArrowRight: expand group
71
+ */
72
+ private handleToggleKeyDown;
73
+ /**
74
+ * Handle action button click
75
+ */
76
+ private handleAction;
77
+ /**
78
+ * Render the component
79
+ */
80
+ render(): any;
81
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SekiSidebarHeader Component
3
+ * @description Sticky header section at the top of the sidebar
4
+ * Provides a slot for header content (logo, title, trigger button)
5
+ * @component
6
+ * @example
7
+ * <seki-sidebar-header>
8
+ * <div class="sidebar-header-content">Logo</div>
9
+ * <seki-sidebar-trigger></seki-sidebar-trigger>
10
+ * </seki-sidebar-header>
11
+ */
12
+ export declare class SekiSidebarHeader {
13
+ /**
14
+ * Render the component
15
+ */
16
+ render(): any;
17
+ }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * SekiSidebarMenuItem Component
3
+ * @description Navigation menu item within the sidebar menu
4
+ * Supports icons, badges, active states, and keyboard navigation
5
+ * @component
6
+ * @example
7
+ * <seki-sidebar-menu-item href="/dashboard" is-active>Dashboard</seki-sidebar-menu-item>
8
+ */
9
+ import { EventEmitter } from '../../stencil-public-runtime';
10
+ import { SidebarMenuItemProps, NavigateDetail } from './types';
11
+ export declare class SekiSidebarMenuItem {
12
+ /**
13
+ * Reference to the element
14
+ */
15
+ el: HTMLElement;
16
+ /**
17
+ * Navigation URL (optional)
18
+ * @type {string}
19
+ */
20
+ href?: SidebarMenuItemProps['href'];
21
+ /**
22
+ * Link target: _blank, _self, etc.
23
+ * @type {string}
24
+ */
25
+ target?: SidebarMenuItemProps['target'];
26
+ /**
27
+ * Disable interaction
28
+ * @type {boolean}
29
+ * @default false
30
+ */
31
+ disabled: boolean;
32
+ /**
33
+ * Highlight as current page
34
+ * @type {boolean}
35
+ * @default false
36
+ */
37
+ isActive: boolean;
38
+ /**
39
+ * Badge indicator for the item
40
+ * @type {object}
41
+ */
42
+ badge?: SidebarMenuItemProps['badge'];
43
+ /**
44
+ * Accessibility label override
45
+ * @type {string}
46
+ */
47
+ ariaLabel?: SidebarMenuItemProps['ariaLabel'];
48
+ /**
49
+ * ARIA current value for active items
50
+ * @type {string}
51
+ */
52
+ ariaCurrentValue: SidebarMenuItemProps['ariaCurrentValue'];
53
+ /**
54
+ * Event fired on item click
55
+ */
56
+ navigate: EventEmitter<NavigateDetail>;
57
+ /**
58
+ * Handle item click
59
+ */
60
+ private handleClick;
61
+ /**
62
+ * Handle keyboard navigation
63
+ * - Enter/Space: activate item
64
+ * - ArrowDown: focus next menu item
65
+ * - ArrowUp: focus previous menu item
66
+ * - ArrowRight: expand parent submenu (if collapsed)
67
+ * - ArrowLeft: collapse parent submenu (if expanded)
68
+ * - Home: focus first menu item
69
+ * - End: focus last menu item
70
+ */
71
+ private handleKeyDown;
72
+ /**
73
+ * Get all enabled menu items
74
+ */
75
+ private getEnabledItems;
76
+ /**
77
+ * Focus next menu item in the menu
78
+ */
79
+ private focusNextItem;
80
+ /**
81
+ * Focus previous menu item in the menu
82
+ */
83
+ private focusPreviousItem;
84
+ /**
85
+ * Focus first menu item in the menu
86
+ */
87
+ private focusFirstItem;
88
+ /**
89
+ * Focus last menu item in the menu
90
+ */
91
+ private focusLastItem;
92
+ /**
93
+ * Expand parent submenu if collapsed
94
+ */
95
+ private expandParentSubmenu;
96
+ /**
97
+ * Collapse parent submenu if expanded
98
+ */
99
+ private collapseParentSubmenu;
100
+ /**
101
+ * Render the component
102
+ */
103
+ render(): any;
104
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * SekiSidebarMenuSub Component
3
+ * @description Nested submenu container for collapsible menu items
4
+ * Provides expandable/collapsible sub-navigation structure with support for:
5
+ * - Multi-level nesting (unlimited depth)
6
+ * - Smooth animations (200ms transitions)
7
+ * - Icon-only display when parent sidebar is collapsed
8
+ * - Tooltip support for collapsed state
9
+ * - Full keyboard navigation and accessibility
10
+ * @component
11
+ * @example
12
+ * <seki-sidebar-menu-item>
13
+ * <span slot="icon">⚙️</span>
14
+ * Settings
15
+ * <seki-sidebar-menu-sub slot="submenu">
16
+ * <seki-sidebar-menu-item href="/settings/profile">
17
+ * <span slot="icon">👤</span>
18
+ * Profile
19
+ * </seki-sidebar-menu-item>
20
+ * <seki-sidebar-menu-item href="/settings/security">
21
+ * <span slot="icon">🔒</span>
22
+ * Security
23
+ * </seki-sidebar-menu-item>
24
+ * </seki-sidebar-menu-sub>
25
+ * </seki-sidebar-menu-item>
26
+ */
27
+ import { EventEmitter } from '../../stencil-public-runtime';
28
+ import { SidebarMenuSubProps, CollapsedChangeDetail } from './types';
29
+ export declare class SekiSidebarMenuSub {
30
+ /**
31
+ * Reference to the element
32
+ */
33
+ el: HTMLElement;
34
+ /**
35
+ * Label for the submenu (shown when expanded)
36
+ * @type {string}
37
+ */
38
+ label?: SidebarMenuSubProps['label'];
39
+ /**
40
+ * Initial collapsed state
41
+ * @type {boolean}
42
+ * @default false
43
+ */
44
+ defaultCollapsed: boolean;
45
+ /**
46
+ * Internal state: whether submenu is collapsed
47
+ */
48
+ isCollapsed: boolean;
49
+ /**
50
+ * Event fired when collapsed state changes
51
+ */
52
+ collapsedChange: EventEmitter<CollapsedChangeDetail>;
53
+ /**
54
+ * Component lifecycle: initialize state
55
+ */
56
+ componentWillLoad(): void;
57
+ /**
58
+ * Get current collapsed state
59
+ */
60
+ isCollapsedState(): Promise<boolean>;
61
+ /**
62
+ * Set collapsed state
63
+ */
64
+ setCollapsed(collapsed: boolean): Promise<void>;
65
+ /**
66
+ * Toggle collapsed state
67
+ */
68
+ private handleToggle;
69
+ /**
70
+ * Handle keyboard navigation
71
+ * - Enter: toggle submenu
72
+ * - ArrowDown: focus next submenu item
73
+ * - ArrowUp: focus previous submenu item
74
+ * - Escape: close submenu
75
+ */
76
+ private handleKeyDown;
77
+ /**
78
+ * Render the component
79
+ */
80
+ render(): any;
81
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SekiSidebarMenu Component
3
+ * @description List container for menu items within a sidebar
4
+ * Provides semantic menu structure with proper ARIA attributes
5
+ * @component
6
+ * @example
7
+ * <seki-sidebar-menu>
8
+ * <seki-sidebar-menu-item href="/dashboard">Dashboard</seki-sidebar-menu-item>
9
+ * <seki-sidebar-menu-item href="/settings">Settings</seki-sidebar-menu-item>
10
+ * </seki-sidebar-menu>
11
+ */
12
+ export declare class SekiSidebarMenu {
13
+ /**
14
+ * Render the component
15
+ */
16
+ render(): any;
17
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * SekiSidebarTrigger Component
3
+ * @description Toggle button for opening/closing the sidebar
4
+ * Manages focus, keyboard activation (Space, Enter), and ARIA attributes
5
+ * @component
6
+ * @example
7
+ * <seki-sidebar-trigger aria-label="Toggle sidebar"></seki-sidebar-trigger>
8
+ */
9
+ import { SidebarTriggerProps } from './types';
10
+ export declare class SekiSidebarTrigger {
11
+ /**
12
+ * Accessibility label for the button
13
+ * @type {string}
14
+ * @default 'Toggle sidebar'
15
+ */
16
+ ariaLabel: SidebarTriggerProps['ariaLabel'];
17
+ /**
18
+ * Icon name or SVG path (optional)
19
+ * @type {string}
20
+ */
21
+ icon: SidebarTriggerProps['icon'];
22
+ el: HTMLElement;
23
+ /**
24
+ * Track the sidebar's open state for aria-expanded attribute
25
+ */
26
+ isOpen: boolean;
27
+ /**
28
+ * Reference to parent sidebar
29
+ */
30
+ private parentSidebar;
31
+ /**
32
+ * Initialize - find parent sidebar and listen to state changes
33
+ */
34
+ connectedCallback(): void;
35
+ /**
36
+ * Listen to openChange event from parent sidebar
37
+ */
38
+ handleOpenChange(event: CustomEvent<{
39
+ isOpen: boolean;
40
+ }>): void;
41
+ /**
42
+ * Handle button click - finds parent seki-sidebar or nearest sidebar in document
43
+ */
44
+ private handleClick;
45
+ /**
46
+ * Handle keyboard activation (Space, Enter)
47
+ */
48
+ private handleKeyDown;
49
+ /**
50
+ * Render the component
51
+ */
52
+ render(): any;
53
+ }
@@ -0,0 +1,185 @@
1
+ /**
2
+ * SekiSidebar Component
3
+ * @description Main sidebar container component managing collapse state, layout variant,
4
+ * and responsive configuration. Provides context to child components.
5
+ * @component
6
+ * @example
7
+ * <seki-sidebar variant="sidebar" collapse-mode="icon" persistent>
8
+ * <seki-sidebar-header>Header Content</seki-sidebar-header>
9
+ * <seki-sidebar-content>Menu content</seki-sidebar-content>
10
+ * <seki-sidebar-footer>Footer content</seki-sidebar-footer>
11
+ * </seki-sidebar>
12
+ */
13
+ import { EventEmitter } from '../../stencil-public-runtime';
14
+ import { SidebarProps, SidebarState, OpenChangeDetail, VariantChangeDetail, CollapseModeChangeDetail, MobileStateChangeDetail } from './types';
15
+ export declare class SekiSidebar {
16
+ /**
17
+ * Layout variant: standard, floating (detached), or inset
18
+ * @type {'sidebar' | 'floating' | 'inset'}
19
+ * @default 'sidebar'
20
+ */
21
+ variant: SidebarProps['variant'];
22
+ /**
23
+ * Collapse mechanism: offcanvas (slides), icon (shrinks), or none (fixed)
24
+ * @type {'offcanvas' | 'icon' | 'none'}
25
+ * @default 'offcanvas'
26
+ */
27
+ collapseMode: SidebarProps['collapseMode'];
28
+ /**
29
+ * Initial open/closed state
30
+ * @type {boolean}
31
+ * @default true
32
+ */
33
+ defaultOpen: boolean;
34
+ /**
35
+ * Persist state to localStorage
36
+ * @type {boolean}
37
+ * @default false
38
+ */
39
+ persistent: boolean;
40
+ /**
41
+ * Viewport width for mobile detection (px)
42
+ * @type {number}
43
+ * @default 768
44
+ */
45
+ mobileBreakpoint: number;
46
+ /**
47
+ * Position: left or right side of viewport
48
+ * @type {'left' | 'right'}
49
+ * @default 'left'
50
+ */
51
+ side: SidebarProps['side'];
52
+ /**
53
+ * Storage key for persisted state
54
+ * @type {string}
55
+ * @default 'seki-sidebar-state'
56
+ */
57
+ persistenceKey: string;
58
+ /**
59
+ * Callback fired when open state changes
60
+ */
61
+ onOpenChange?: (isOpen: boolean) => void;
62
+ el: HTMLElement;
63
+ /**
64
+ * Internal state: whether sidebar is open/expanded
65
+ */
66
+ isOpen: boolean;
67
+ /**
68
+ * Internal state: whether viewport is mobile
69
+ */
70
+ isMobile: boolean;
71
+ /**
72
+ * Event fired when sidebar opens/closes
73
+ */
74
+ openChange: EventEmitter<OpenChangeDetail>;
75
+ /**
76
+ * Event fired when variant changes
77
+ */
78
+ variantChange: EventEmitter<VariantChangeDetail>;
79
+ /**
80
+ * Event fired when collapse mode changes
81
+ */
82
+ collapseModeChange: EventEmitter<CollapseModeChangeDetail>;
83
+ /**
84
+ * Event fired when mobile state changes
85
+ */
86
+ mobileStateChange: EventEmitter<MobileStateChangeDetail>;
87
+ /**
88
+ * Note: Context distribution to child components via parent-child DOM hierarchy
89
+ * Child components use closest('seki-sidebar') to access parent methods
90
+ */
91
+ private resizeObserver;
92
+ private mediaQueryList;
93
+ private keyboardShortcutId;
94
+ /**
95
+ * Component lifecycle: initialize state
96
+ */
97
+ componentWillLoad(): void;
98
+ /**
99
+ * Watch for variant changes
100
+ */
101
+ watchVariant(newValue: SidebarProps['variant'] | undefined): void;
102
+ /**
103
+ * Watch for collapse mode changes
104
+ */
105
+ watchCollapseMode(newValue: SidebarProps['collapseMode'] | undefined): void;
106
+ /**
107
+ * Component lifecycle: after render
108
+ */
109
+ componentDidLoad(): void;
110
+ /**
111
+ * Component lifecycle: on prop changes
112
+ */
113
+ componentWillUpdate(): void;
114
+ /**
115
+ * Component lifecycle: cleanup
116
+ */
117
+ disconnectedCallback(): void;
118
+ /**
119
+ * Listen for variant prop changes
120
+ */
121
+ onVariantChange(newVariant: string): void;
122
+ /**
123
+ * Listen for collapseMode prop changes
124
+ */
125
+ onCollapseModeChange(newMode: string): void;
126
+ /**
127
+ * Handle media query changes for mobile detection
128
+ */
129
+ private handleMediaQueryChange;
130
+ /**
131
+ * Detect if viewport is mobile
132
+ */
133
+ private detectMobileState;
134
+ /**
135
+ * Setup resize detection using ResizeObserver
136
+ */
137
+ private setupResizeDetection;
138
+ /**
139
+ * Setup keyboard shortcut for toggling sidebar (Ctrl+B or Cmd+B)
140
+ * Uses the KeyboardService for centralized event handling
141
+ */
142
+ private setupKeyboardShortcut;
143
+ /**
144
+ * Note: Context updates handled via event emissions and state changes
145
+ */
146
+ private updateContext;
147
+ /**
148
+ * Get current state synchronously
149
+ */
150
+ private getStateSync;
151
+ /**
152
+ * Open the sidebar (set isOpen=true)
153
+ * @returns {Promise<void>}
154
+ */
155
+ open(): Promise<void>;
156
+ /**
157
+ * Close the sidebar (set isOpen=false)
158
+ * @returns {Promise<void>}
159
+ */
160
+ close(): Promise<void>;
161
+ /**
162
+ * Toggle the sidebar open/closed state
163
+ * @returns {Promise<void>}
164
+ */
165
+ toggle(): Promise<void>;
166
+ /**
167
+ * Get current sidebar state
168
+ * @returns {Promise<SidebarState>}
169
+ */
170
+ getState(): Promise<SidebarState>;
171
+ /**
172
+ * Update sidebar state
173
+ * @param {Partial<SidebarState>} state - Partial state object
174
+ * @returns {Promise<void>}
175
+ */
176
+ setState(state: Partial<SidebarState>): Promise<void>;
177
+ /**
178
+ * Persist state to localStorage if persistent=true
179
+ */
180
+ private persistState;
181
+ /**
182
+ * Render the component
183
+ */
184
+ render(): any;
185
+ }