@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
@@ -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 {
@@ -38,6 +40,116 @@ export namespace Components {
38
40
  */
39
41
  "variant": 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link';
40
42
  }
43
+ /**
44
+ * Flexible container for organizing related content with optional header,
45
+ * content, and footer sections. Composition-based using subcomponents.
46
+ * @example <seki-card>
47
+ * <seki-card-header>
48
+ * <seki-card-title>Title</seki-card-title>
49
+ * </seki-card-header>
50
+ * <seki-card-content>Content here</seki-card-content>
51
+ * </seki-card>
52
+ */
53
+ interface SekiCard {
54
+ /**
55
+ * Optional CSS class for custom styling hooks
56
+ */
57
+ "class"?: string;
58
+ /**
59
+ * Optional data attribute for testing
60
+ */
61
+ "dataTestid"?: string;
62
+ }
63
+ /**
64
+ * Optional action area within card header for buttons or menus.
65
+ * Provides flex layout with automatic right-alignment.
66
+ * @example <seki-card-action>
67
+ * <button icon>⋯</button>
68
+ * </seki-card-action>
69
+ */
70
+ interface SekiCardAction {
71
+ /**
72
+ * Optional CSS class
73
+ */
74
+ "class"?: string;
75
+ }
76
+ /**
77
+ * Main content body of the card.
78
+ * Flexible container for any content (text, forms, lists, etc.)
79
+ * @example <seki-card-content>
80
+ * <input type="text" placeholder="Email" />
81
+ * <input type="password" placeholder="Password" />
82
+ * </seki-card-content>
83
+ */
84
+ interface SekiCardContent {
85
+ /**
86
+ * Optional CSS class
87
+ */
88
+ "class"?: string;
89
+ }
90
+ /**
91
+ * Secondary descriptive text below the card title.
92
+ * Renders as paragraph with muted text color.
93
+ * @example <seki-card-description>Description text</seki-card-description>
94
+ */
95
+ interface SekiCardDescription {
96
+ /**
97
+ * Optional CSS class
98
+ */
99
+ "class"?: string;
100
+ }
101
+ /**
102
+ * Bottom section of a card for action buttons or footer content.
103
+ * Provides flex layout with optional alignment control.
104
+ * @example <seki-card-footer alignment="flex-end">
105
+ * <button>Cancel</button>
106
+ * <button primary>Submit</button>
107
+ * </seki-card-footer>
108
+ */
109
+ interface SekiCardFooter {
110
+ /**
111
+ * Flex alignment for footer items. Default: flex-start Options: flex-start, center, flex-end
112
+ * @default 'flex-start'
113
+ */
114
+ "alignment": Alignment;
115
+ /**
116
+ * Optional CSS class
117
+ */
118
+ "class"?: string;
119
+ }
120
+ /**
121
+ * Header section of a card, typically containing title and description.
122
+ * Provides flex layout for arranging title + action elements.
123
+ * @example <seki-card-header>
124
+ * <seki-card-title>Title</seki-card-title>
125
+ * <seki-card-description>Description</seki-card-description>
126
+ * <seki-card-action>
127
+ * <button>Action</button>
128
+ * </seki-card-action>
129
+ * </seki-card-header>
130
+ */
131
+ interface SekiCardHeader {
132
+ /**
133
+ * Optional CSS class for custom styling
134
+ */
135
+ "class"?: string;
136
+ }
137
+ /**
138
+ * Primary heading text within a card header.
139
+ * Renders as semantic heading (h1-h6) with typography tokens.
140
+ * @example <seki-card-title level="h2">My Card Title</seki-card-title>
141
+ */
142
+ interface SekiCardTitle {
143
+ /**
144
+ * Optional CSS class
145
+ */
146
+ "class"?: string;
147
+ /**
148
+ * Semantic heading level (h1-h6). Default: h2
149
+ * @default 'h2'
150
+ */
151
+ "level": HeadingLevel;
152
+ }
41
153
  interface SekiField {
42
154
  /**
43
155
  * Whether the field is in an invalid/error state Applies data-invalid attribute for styling
@@ -306,6 +418,194 @@ export namespace Components {
306
418
  }
307
419
  interface SekiSelectTrigger {
308
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
+ }
309
609
  /**
310
610
  * @component seki-skeleton
311
611
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -424,6 +724,22 @@ export interface SekiSelectOptionCustomEvent<T> extends CustomEvent<T> {
424
724
  detail: T;
425
725
  target: HTMLSekiSelectOptionElement;
426
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
+ }
427
743
  export interface SekiSwitchCustomEvent<T> extends CustomEvent<T> {
428
744
  detail: T;
429
745
  target: HTMLSekiSwitchElement;
@@ -439,6 +755,102 @@ declare global {
439
755
  prototype: HTMLSekiButtonElement;
440
756
  new (): HTMLSekiButtonElement;
441
757
  };
758
+ /**
759
+ * Flexible container for organizing related content with optional header,
760
+ * content, and footer sections. Composition-based using subcomponents.
761
+ * @example <seki-card>
762
+ * <seki-card-header>
763
+ * <seki-card-title>Title</seki-card-title>
764
+ * </seki-card-header>
765
+ * <seki-card-content>Content here</seki-card-content>
766
+ * </seki-card>
767
+ */
768
+ interface HTMLSekiCardElement extends Components.SekiCard, HTMLStencilElement {
769
+ }
770
+ var HTMLSekiCardElement: {
771
+ prototype: HTMLSekiCardElement;
772
+ new (): HTMLSekiCardElement;
773
+ };
774
+ /**
775
+ * Optional action area within card header for buttons or menus.
776
+ * Provides flex layout with automatic right-alignment.
777
+ * @example <seki-card-action>
778
+ * <button icon>⋯</button>
779
+ * </seki-card-action>
780
+ */
781
+ interface HTMLSekiCardActionElement extends Components.SekiCardAction, HTMLStencilElement {
782
+ }
783
+ var HTMLSekiCardActionElement: {
784
+ prototype: HTMLSekiCardActionElement;
785
+ new (): HTMLSekiCardActionElement;
786
+ };
787
+ /**
788
+ * Main content body of the card.
789
+ * Flexible container for any content (text, forms, lists, etc.)
790
+ * @example <seki-card-content>
791
+ * <input type="text" placeholder="Email" />
792
+ * <input type="password" placeholder="Password" />
793
+ * </seki-card-content>
794
+ */
795
+ interface HTMLSekiCardContentElement extends Components.SekiCardContent, HTMLStencilElement {
796
+ }
797
+ var HTMLSekiCardContentElement: {
798
+ prototype: HTMLSekiCardContentElement;
799
+ new (): HTMLSekiCardContentElement;
800
+ };
801
+ /**
802
+ * Secondary descriptive text below the card title.
803
+ * Renders as paragraph with muted text color.
804
+ * @example <seki-card-description>Description text</seki-card-description>
805
+ */
806
+ interface HTMLSekiCardDescriptionElement extends Components.SekiCardDescription, HTMLStencilElement {
807
+ }
808
+ var HTMLSekiCardDescriptionElement: {
809
+ prototype: HTMLSekiCardDescriptionElement;
810
+ new (): HTMLSekiCardDescriptionElement;
811
+ };
812
+ /**
813
+ * Bottom section of a card for action buttons or footer content.
814
+ * Provides flex layout with optional alignment control.
815
+ * @example <seki-card-footer alignment="flex-end">
816
+ * <button>Cancel</button>
817
+ * <button primary>Submit</button>
818
+ * </seki-card-footer>
819
+ */
820
+ interface HTMLSekiCardFooterElement extends Components.SekiCardFooter, HTMLStencilElement {
821
+ }
822
+ var HTMLSekiCardFooterElement: {
823
+ prototype: HTMLSekiCardFooterElement;
824
+ new (): HTMLSekiCardFooterElement;
825
+ };
826
+ /**
827
+ * Header section of a card, typically containing title and description.
828
+ * Provides flex layout for arranging title + action elements.
829
+ * @example <seki-card-header>
830
+ * <seki-card-title>Title</seki-card-title>
831
+ * <seki-card-description>Description</seki-card-description>
832
+ * <seki-card-action>
833
+ * <button>Action</button>
834
+ * </seki-card-action>
835
+ * </seki-card-header>
836
+ */
837
+ interface HTMLSekiCardHeaderElement extends Components.SekiCardHeader, HTMLStencilElement {
838
+ }
839
+ var HTMLSekiCardHeaderElement: {
840
+ prototype: HTMLSekiCardHeaderElement;
841
+ new (): HTMLSekiCardHeaderElement;
842
+ };
843
+ /**
844
+ * Primary heading text within a card header.
845
+ * Renders as semantic heading (h1-h6) with typography tokens.
846
+ * @example <seki-card-title level="h2">My Card Title</seki-card-title>
847
+ */
848
+ interface HTMLSekiCardTitleElement extends Components.SekiCardTitle, HTMLStencilElement {
849
+ }
850
+ var HTMLSekiCardTitleElement: {
851
+ prototype: HTMLSekiCardTitleElement;
852
+ new (): HTMLSekiCardTitleElement;
853
+ };
442
854
  interface HTMLSekiFieldElement extends Components.SekiField, HTMLStencilElement {
443
855
  }
444
856
  var HTMLSekiFieldElement: {
@@ -556,6 +968,107 @@ declare global {
556
968
  prototype: HTMLSekiSelectTriggerElement;
557
969
  new (): HTMLSekiSelectTriggerElement;
558
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
+ };
559
1072
  /**
560
1073
  * @component seki-skeleton
561
1074
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -625,6 +1138,13 @@ declare global {
625
1138
  };
626
1139
  interface HTMLElementTagNameMap {
627
1140
  "seki-button": HTMLSekiButtonElement;
1141
+ "seki-card": HTMLSekiCardElement;
1142
+ "seki-card-action": HTMLSekiCardActionElement;
1143
+ "seki-card-content": HTMLSekiCardContentElement;
1144
+ "seki-card-description": HTMLSekiCardDescriptionElement;
1145
+ "seki-card-footer": HTMLSekiCardFooterElement;
1146
+ "seki-card-header": HTMLSekiCardHeaderElement;
1147
+ "seki-card-title": HTMLSekiCardTitleElement;
628
1148
  "seki-field": HTMLSekiFieldElement;
629
1149
  "seki-field-description": HTMLSekiFieldDescriptionElement;
630
1150
  "seki-field-error": HTMLSekiFieldErrorElement;
@@ -638,6 +1158,15 @@ declare global {
638
1158
  "seki-select-group": HTMLSekiSelectGroupElement;
639
1159
  "seki-select-option": HTMLSekiSelectOptionElement;
640
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;
641
1170
  "seki-skeleton": HTMLSekiSkeletonElement;
642
1171
  "seki-switch": HTMLSekiSwitchElement;
643
1172
  "seki-tooltip": HTMLSekiTooltipElement;
@@ -670,6 +1199,116 @@ declare namespace LocalJSX {
670
1199
  */
671
1200
  "variant"?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link';
672
1201
  }
1202
+ /**
1203
+ * Flexible container for organizing related content with optional header,
1204
+ * content, and footer sections. Composition-based using subcomponents.
1205
+ * @example <seki-card>
1206
+ * <seki-card-header>
1207
+ * <seki-card-title>Title</seki-card-title>
1208
+ * </seki-card-header>
1209
+ * <seki-card-content>Content here</seki-card-content>
1210
+ * </seki-card>
1211
+ */
1212
+ interface SekiCard {
1213
+ /**
1214
+ * Optional CSS class for custom styling hooks
1215
+ */
1216
+ "class"?: string;
1217
+ /**
1218
+ * Optional data attribute for testing
1219
+ */
1220
+ "dataTestid"?: string;
1221
+ }
1222
+ /**
1223
+ * Optional action area within card header for buttons or menus.
1224
+ * Provides flex layout with automatic right-alignment.
1225
+ * @example <seki-card-action>
1226
+ * <button icon>⋯</button>
1227
+ * </seki-card-action>
1228
+ */
1229
+ interface SekiCardAction {
1230
+ /**
1231
+ * Optional CSS class
1232
+ */
1233
+ "class"?: string;
1234
+ }
1235
+ /**
1236
+ * Main content body of the card.
1237
+ * Flexible container for any content (text, forms, lists, etc.)
1238
+ * @example <seki-card-content>
1239
+ * <input type="text" placeholder="Email" />
1240
+ * <input type="password" placeholder="Password" />
1241
+ * </seki-card-content>
1242
+ */
1243
+ interface SekiCardContent {
1244
+ /**
1245
+ * Optional CSS class
1246
+ */
1247
+ "class"?: string;
1248
+ }
1249
+ /**
1250
+ * Secondary descriptive text below the card title.
1251
+ * Renders as paragraph with muted text color.
1252
+ * @example <seki-card-description>Description text</seki-card-description>
1253
+ */
1254
+ interface SekiCardDescription {
1255
+ /**
1256
+ * Optional CSS class
1257
+ */
1258
+ "class"?: string;
1259
+ }
1260
+ /**
1261
+ * Bottom section of a card for action buttons or footer content.
1262
+ * Provides flex layout with optional alignment control.
1263
+ * @example <seki-card-footer alignment="flex-end">
1264
+ * <button>Cancel</button>
1265
+ * <button primary>Submit</button>
1266
+ * </seki-card-footer>
1267
+ */
1268
+ interface SekiCardFooter {
1269
+ /**
1270
+ * Flex alignment for footer items. Default: flex-start Options: flex-start, center, flex-end
1271
+ * @default 'flex-start'
1272
+ */
1273
+ "alignment"?: Alignment;
1274
+ /**
1275
+ * Optional CSS class
1276
+ */
1277
+ "class"?: string;
1278
+ }
1279
+ /**
1280
+ * Header section of a card, typically containing title and description.
1281
+ * Provides flex layout for arranging title + action elements.
1282
+ * @example <seki-card-header>
1283
+ * <seki-card-title>Title</seki-card-title>
1284
+ * <seki-card-description>Description</seki-card-description>
1285
+ * <seki-card-action>
1286
+ * <button>Action</button>
1287
+ * </seki-card-action>
1288
+ * </seki-card-header>
1289
+ */
1290
+ interface SekiCardHeader {
1291
+ /**
1292
+ * Optional CSS class for custom styling
1293
+ */
1294
+ "class"?: string;
1295
+ }
1296
+ /**
1297
+ * Primary heading text within a card header.
1298
+ * Renders as semantic heading (h1-h6) with typography tokens.
1299
+ * @example <seki-card-title level="h2">My Card Title</seki-card-title>
1300
+ */
1301
+ interface SekiCardTitle {
1302
+ /**
1303
+ * Optional CSS class
1304
+ */
1305
+ "class"?: string;
1306
+ /**
1307
+ * Semantic heading level (h1-h6). Default: h2
1308
+ * @default 'h2'
1309
+ */
1310
+ "level"?: HeadingLevel;
1311
+ }
673
1312
  interface SekiField {
674
1313
  /**
675
1314
  * Whether the field is in an invalid/error state Applies data-invalid attribute for styling
@@ -938,6 +1577,180 @@ declare namespace LocalJSX {
938
1577
  }
939
1578
  interface SekiSelectTrigger {
940
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
+ }
941
1754
  /**
942
1755
  * @component seki-skeleton
943
1756
  * @description A loading placeholder component that displays an animated skeleton while content is loading
@@ -1047,6 +1860,13 @@ declare namespace LocalJSX {
1047
1860
  }
1048
1861
  interface IntrinsicElements {
1049
1862
  "seki-button": SekiButton;
1863
+ "seki-card": SekiCard;
1864
+ "seki-card-action": SekiCardAction;
1865
+ "seki-card-content": SekiCardContent;
1866
+ "seki-card-description": SekiCardDescription;
1867
+ "seki-card-footer": SekiCardFooter;
1868
+ "seki-card-header": SekiCardHeader;
1869
+ "seki-card-title": SekiCardTitle;
1050
1870
  "seki-field": SekiField;
1051
1871
  "seki-field-description": SekiFieldDescription;
1052
1872
  "seki-field-error": SekiFieldError;
@@ -1060,6 +1880,15 @@ declare namespace LocalJSX {
1060
1880
  "seki-select-group": SekiSelectGroup;
1061
1881
  "seki-select-option": SekiSelectOption;
1062
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;
1063
1892
  "seki-skeleton": SekiSkeleton;
1064
1893
  "seki-switch": SekiSwitch;
1065
1894
  "seki-tooltip": SekiTooltip;
@@ -1070,6 +1899,67 @@ declare module "@stencil/core" {
1070
1899
  export namespace JSX {
1071
1900
  interface IntrinsicElements {
1072
1901
  "seki-button": LocalJSX.SekiButton & JSXBase.HTMLAttributes<HTMLSekiButtonElement>;
1902
+ /**
1903
+ * Flexible container for organizing related content with optional header,
1904
+ * content, and footer sections. Composition-based using subcomponents.
1905
+ * @example <seki-card>
1906
+ * <seki-card-header>
1907
+ * <seki-card-title>Title</seki-card-title>
1908
+ * </seki-card-header>
1909
+ * <seki-card-content>Content here</seki-card-content>
1910
+ * </seki-card>
1911
+ */
1912
+ "seki-card": LocalJSX.SekiCard & JSXBase.HTMLAttributes<HTMLSekiCardElement>;
1913
+ /**
1914
+ * Optional action area within card header for buttons or menus.
1915
+ * Provides flex layout with automatic right-alignment.
1916
+ * @example <seki-card-action>
1917
+ * <button icon>⋯</button>
1918
+ * </seki-card-action>
1919
+ */
1920
+ "seki-card-action": LocalJSX.SekiCardAction & JSXBase.HTMLAttributes<HTMLSekiCardActionElement>;
1921
+ /**
1922
+ * Main content body of the card.
1923
+ * Flexible container for any content (text, forms, lists, etc.)
1924
+ * @example <seki-card-content>
1925
+ * <input type="text" placeholder="Email" />
1926
+ * <input type="password" placeholder="Password" />
1927
+ * </seki-card-content>
1928
+ */
1929
+ "seki-card-content": LocalJSX.SekiCardContent & JSXBase.HTMLAttributes<HTMLSekiCardContentElement>;
1930
+ /**
1931
+ * Secondary descriptive text below the card title.
1932
+ * Renders as paragraph with muted text color.
1933
+ * @example <seki-card-description>Description text</seki-card-description>
1934
+ */
1935
+ "seki-card-description": LocalJSX.SekiCardDescription & JSXBase.HTMLAttributes<HTMLSekiCardDescriptionElement>;
1936
+ /**
1937
+ * Bottom section of a card for action buttons or footer content.
1938
+ * Provides flex layout with optional alignment control.
1939
+ * @example <seki-card-footer alignment="flex-end">
1940
+ * <button>Cancel</button>
1941
+ * <button primary>Submit</button>
1942
+ * </seki-card-footer>
1943
+ */
1944
+ "seki-card-footer": LocalJSX.SekiCardFooter & JSXBase.HTMLAttributes<HTMLSekiCardFooterElement>;
1945
+ /**
1946
+ * Header section of a card, typically containing title and description.
1947
+ * Provides flex layout for arranging title + action elements.
1948
+ * @example <seki-card-header>
1949
+ * <seki-card-title>Title</seki-card-title>
1950
+ * <seki-card-description>Description</seki-card-description>
1951
+ * <seki-card-action>
1952
+ * <button>Action</button>
1953
+ * </seki-card-action>
1954
+ * </seki-card-header>
1955
+ */
1956
+ "seki-card-header": LocalJSX.SekiCardHeader & JSXBase.HTMLAttributes<HTMLSekiCardHeaderElement>;
1957
+ /**
1958
+ * Primary heading text within a card header.
1959
+ * Renders as semantic heading (h1-h6) with typography tokens.
1960
+ * @example <seki-card-title level="h2">My Card Title</seki-card-title>
1961
+ */
1962
+ "seki-card-title": LocalJSX.SekiCardTitle & JSXBase.HTMLAttributes<HTMLSekiCardTitleElement>;
1073
1963
  "seki-field": LocalJSX.SekiField & JSXBase.HTMLAttributes<HTMLSekiFieldElement>;
1074
1964
  "seki-field-description": LocalJSX.SekiFieldDescription & JSXBase.HTMLAttributes<HTMLSekiFieldDescriptionElement>;
1075
1965
  "seki-field-error": LocalJSX.SekiFieldError & JSXBase.HTMLAttributes<HTMLSekiFieldErrorElement>;
@@ -1083,6 +1973,15 @@ declare module "@stencil/core" {
1083
1973
  "seki-select-group": LocalJSX.SekiSelectGroup & JSXBase.HTMLAttributes<HTMLSekiSelectGroupElement>;
1084
1974
  "seki-select-option": LocalJSX.SekiSelectOption & JSXBase.HTMLAttributes<HTMLSekiSelectOptionElement>;
1085
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>;
1086
1985
  /**
1087
1986
  * @component seki-skeleton
1088
1987
  * @description A loading placeholder component that displays an animated skeleton while content is loading