luxen-ui 0.6.2 → 0.8.0

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 (270) hide show
  1. package/bin/cli.mjs +54 -10
  2. package/cdn/chunks/decorate.js +1 -1
  3. package/cdn/chunks/floating-ui.dom.js +2 -0
  4. package/cdn/chunks/floating-ui.dom.js.map +1 -0
  5. package/cdn/chunks/lit-html.js +3 -0
  6. package/cdn/chunks/lit-html.js.map +1 -0
  7. package/cdn/chunks/lit.js +1 -2
  8. package/cdn/chunks/lit.js.map +1 -1
  9. package/cdn/chunks/module.js +717 -0
  10. package/cdn/chunks/module.js.map +1 -0
  11. package/cdn/chunks/native.js +2 -0
  12. package/cdn/chunks/native.js.map +1 -0
  13. package/cdn/chunks/static-html.js +2 -0
  14. package/cdn/chunks/static-html.js.map +1 -0
  15. package/cdn/custom-elements.json +1412 -12629
  16. package/cdn/elements/avatar/avatar.d.ts +5 -0
  17. package/cdn/elements/avatar/avatar.d.ts.map +1 -1
  18. package/cdn/elements/avatar/avatar.js +5 -5
  19. package/cdn/elements/avatar/avatar.js.map +1 -1
  20. package/cdn/elements/button/button.meta.d.ts +33 -0
  21. package/cdn/elements/button/button.meta.d.ts.map +1 -0
  22. package/cdn/elements/button/button.meta.js +0 -0
  23. package/cdn/elements/carousel/carousel.d.ts +6 -0
  24. package/cdn/elements/carousel/carousel.d.ts.map +1 -1
  25. package/cdn/elements/carousel/carousel.js +1 -1
  26. package/cdn/elements/carousel/carousel.js.map +1 -1
  27. package/cdn/elements/carousel-item/carousel-item.d.ts +2 -0
  28. package/cdn/elements/carousel-item/carousel-item.d.ts.map +1 -1
  29. package/cdn/elements/carousel-item/carousel-item.js +1 -1
  30. package/cdn/elements/carousel-item/carousel-item.js.map +1 -1
  31. package/cdn/elements/close-button/close-button.meta.d.ts +24 -0
  32. package/cdn/elements/close-button/close-button.meta.d.ts.map +1 -0
  33. package/cdn/elements/close-button/close-button.meta.js +0 -0
  34. package/cdn/elements/dialog/dialog.d.ts +12 -6
  35. package/cdn/elements/dialog/dialog.d.ts.map +1 -1
  36. package/cdn/elements/dialog/dialog.js +8 -5
  37. package/cdn/elements/dialog/dialog.js.map +1 -1
  38. package/cdn/elements/dialog/dialog.styles.js +1 -1
  39. package/cdn/elements/dialog/dialog.styles.js.map +1 -1
  40. package/cdn/elements/disclosure/disclosure.meta.d.ts +28 -0
  41. package/cdn/elements/disclosure/disclosure.meta.d.ts.map +1 -0
  42. package/cdn/elements/disclosure/disclosure.meta.js +0 -0
  43. package/cdn/elements/divider/divider.d.ts +1 -1
  44. package/cdn/elements/divider/divider.js.map +1 -1
  45. package/cdn/elements/drawer/drawer.d.ts +5 -0
  46. package/cdn/elements/drawer/drawer.d.ts.map +1 -1
  47. package/cdn/elements/drawer/drawer.js +1 -1
  48. package/cdn/elements/drawer/drawer.js.map +1 -1
  49. package/cdn/elements/dropdown/dropdown.d.ts +2 -0
  50. package/cdn/elements/dropdown/dropdown.d.ts.map +1 -1
  51. package/cdn/elements/dropdown/dropdown.js +1 -1
  52. package/cdn/elements/dropdown/dropdown.js.map +1 -1
  53. package/cdn/elements/dropdown-item/dropdown-item.d.ts +2 -0
  54. package/cdn/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
  55. package/cdn/elements/dropdown-item/dropdown-item.js +1 -1
  56. package/cdn/elements/dropdown-item/dropdown-item.js.map +1 -1
  57. package/cdn/elements/icon/icon.js +1 -1
  58. package/cdn/elements/icon/icon.js.map +1 -1
  59. package/cdn/elements/input-otp/input-otp.d.ts +2 -0
  60. package/cdn/elements/input-otp/input-otp.d.ts.map +1 -1
  61. package/cdn/elements/input-otp/input-otp.js.map +1 -1
  62. package/cdn/elements/input-stepper/input-stepper.d.ts +2 -0
  63. package/cdn/elements/input-stepper/input-stepper.d.ts.map +1 -1
  64. package/cdn/elements/input-stepper/input-stepper.js +1 -1
  65. package/cdn/elements/input-stepper/input-stepper.js.map +1 -1
  66. package/cdn/elements/kbd/kbd.meta.d.ts +14 -0
  67. package/cdn/elements/kbd/kbd.meta.d.ts.map +1 -0
  68. package/cdn/elements/kbd/kbd.meta.js +0 -0
  69. package/cdn/elements/popover/popover.js +1 -1
  70. package/cdn/elements/popover/popover.js.map +1 -1
  71. package/cdn/elements/progress/progress.meta.d.ts +22 -0
  72. package/cdn/elements/progress/progress.meta.d.ts.map +1 -0
  73. package/cdn/elements/progress/progress.meta.js +0 -0
  74. package/cdn/elements/prose-editor/index.d.ts +2 -0
  75. package/cdn/elements/prose-editor/index.d.ts.map +1 -0
  76. package/cdn/elements/prose-editor/index.js +2 -0
  77. package/cdn/elements/prose-editor/index.js.map +1 -0
  78. package/cdn/elements/prose-editor/prose-editor.d.ts +113 -0
  79. package/cdn/elements/prose-editor/prose-editor.d.ts.map +1 -0
  80. package/cdn/elements/prose-editor/prose-editor.js +180 -0
  81. package/cdn/elements/prose-editor/prose-editor.js.map +1 -0
  82. package/cdn/elements/rating/rating.d.ts +2 -0
  83. package/cdn/elements/rating/rating.d.ts.map +1 -1
  84. package/cdn/elements/rating/rating.js +1 -1
  85. package/cdn/elements/rating/rating.js.map +1 -1
  86. package/cdn/elements/select/select.meta.d.ts +28 -0
  87. package/cdn/elements/select/select.meta.d.ts.map +1 -0
  88. package/cdn/elements/select/select.meta.js +0 -0
  89. package/cdn/elements/skeleton/skeleton.d.ts +3 -0
  90. package/cdn/elements/skeleton/skeleton.d.ts.map +1 -1
  91. package/cdn/elements/skeleton/skeleton.js.map +1 -1
  92. package/cdn/elements/spinner/spinner.js +1 -1
  93. package/cdn/elements/spinner/spinner.js.map +1 -1
  94. package/cdn/elements/sticky-bar/sticky-bar.js +1 -1
  95. package/cdn/elements/sticky-bar/sticky-bar.js.map +1 -1
  96. package/cdn/elements/stories-viewer/stories-viewer.d.ts +1 -1
  97. package/cdn/elements/stories-viewer/stories-viewer.d.ts.map +1 -1
  98. package/cdn/elements/stories-viewer/stories-viewer.js +26 -26
  99. package/cdn/elements/stories-viewer/stories-viewer.js.map +1 -1
  100. package/cdn/elements/story/story.d.ts +10 -1
  101. package/cdn/elements/story/story.d.ts.map +1 -1
  102. package/cdn/elements/story/story.js +20 -20
  103. package/cdn/elements/story/story.js.map +1 -1
  104. package/cdn/elements/toast/toast.d.ts +5 -0
  105. package/cdn/elements/toast/toast.d.ts.map +1 -1
  106. package/cdn/elements/toast/toast.js.map +1 -1
  107. package/cdn/elements/tooltip/tooltip.js +1 -1
  108. package/cdn/elements/tooltip/tooltip.js.map +1 -1
  109. package/cdn/elements/tree/tree.d.ts +2 -0
  110. package/cdn/elements/tree/tree.d.ts.map +1 -1
  111. package/cdn/elements/tree/tree.js +1 -1
  112. package/cdn/elements/tree/tree.js.map +1 -1
  113. package/cdn/elements/tree-item/tree-item.d.ts +2 -0
  114. package/cdn/elements/tree-item/tree-item.d.ts.map +1 -1
  115. package/cdn/elements/tree-item/tree-item.js +1 -1
  116. package/cdn/elements/tree-item/tree-item.js.map +1 -1
  117. package/cdn/registry.d.ts +1 -1
  118. package/cdn/registry.d.ts.map +1 -1
  119. package/cdn/registry.js.map +1 -1
  120. package/cdn/shared/controllers/has-slot-controller.d.ts +37 -0
  121. package/cdn/shared/controllers/has-slot-controller.d.ts.map +1 -0
  122. package/cdn/shared/controllers/has-slot-controller.js +2 -0
  123. package/cdn/shared/controllers/has-slot-controller.js.map +1 -0
  124. package/cdn/shared/controllers/popover.js +1 -1
  125. package/cdn/shared/controllers/popover.js.map +1 -1
  126. package/cdn/shared/styles/host.styles.js +1 -1
  127. package/cdn/standalone.css +132 -1
  128. package/cdn/standalone.js +25743 -191
  129. package/cdn/standalone.js.map +1 -1
  130. package/cdn/static-tag.d.ts +17 -0
  131. package/cdn/static-tag.d.ts.map +1 -0
  132. package/cdn/static-tag.js +2 -0
  133. package/cdn/static-tag.js.map +1 -0
  134. package/cdn/styles/elements/prose-editor.css +129 -0
  135. package/cdn/styles/elements/toast.css +1 -1
  136. package/dist/css/elements/prose-editor.css +129 -0
  137. package/dist/css/elements/toast.css +1 -1
  138. package/dist/custom-elements.json +1412 -12629
  139. package/dist/elements/avatar/avatar.d.ts +5 -0
  140. package/dist/elements/avatar/avatar.d.ts.map +1 -1
  141. package/dist/elements/avatar/avatar.js +5 -0
  142. package/dist/elements/button/button.meta.d.ts +33 -0
  143. package/dist/elements/button/button.meta.d.ts.map +1 -0
  144. package/dist/elements/button/button.meta.js +44 -0
  145. package/dist/elements/carousel/carousel.d.ts +6 -0
  146. package/dist/elements/carousel/carousel.d.ts.map +1 -1
  147. package/dist/elements/carousel/carousel.js +6 -0
  148. package/dist/elements/carousel-item/carousel-item.d.ts +2 -0
  149. package/dist/elements/carousel-item/carousel-item.d.ts.map +1 -1
  150. package/dist/elements/carousel-item/carousel-item.js +2 -0
  151. package/dist/elements/close-button/close-button.meta.d.ts +24 -0
  152. package/dist/elements/close-button/close-button.meta.d.ts.map +1 -0
  153. package/dist/elements/close-button/close-button.meta.js +30 -0
  154. package/dist/elements/dialog/dialog.css +15 -0
  155. package/dist/elements/dialog/dialog.d.ts +12 -6
  156. package/dist/elements/dialog/dialog.d.ts.map +1 -1
  157. package/dist/elements/dialog/dialog.js +21 -7
  158. package/dist/elements/disclosure/disclosure.meta.d.ts +28 -0
  159. package/dist/elements/disclosure/disclosure.meta.d.ts.map +1 -0
  160. package/dist/elements/disclosure/disclosure.meta.js +34 -0
  161. package/dist/elements/divider/divider.d.ts +1 -1
  162. package/dist/elements/divider/divider.js +1 -1
  163. package/dist/elements/drawer/drawer.d.ts +5 -0
  164. package/dist/elements/drawer/drawer.d.ts.map +1 -1
  165. package/dist/elements/drawer/drawer.js +5 -0
  166. package/dist/elements/dropdown/dropdown.d.ts +2 -0
  167. package/dist/elements/dropdown/dropdown.d.ts.map +1 -1
  168. package/dist/elements/dropdown/dropdown.js +2 -0
  169. package/dist/elements/dropdown-item/dropdown-item.d.ts +2 -0
  170. package/dist/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
  171. package/dist/elements/dropdown-item/dropdown-item.js +2 -0
  172. package/dist/elements/input-otp/input-otp.d.ts +2 -0
  173. package/dist/elements/input-otp/input-otp.d.ts.map +1 -1
  174. package/dist/elements/input-otp/input-otp.js +2 -0
  175. package/dist/elements/input-stepper/input-stepper.d.ts +2 -0
  176. package/dist/elements/input-stepper/input-stepper.d.ts.map +1 -1
  177. package/dist/elements/input-stepper/input-stepper.js +5 -1
  178. package/dist/elements/kbd/kbd.meta.d.ts +14 -0
  179. package/dist/elements/kbd/kbd.meta.d.ts.map +1 -0
  180. package/dist/elements/kbd/kbd.meta.js +20 -0
  181. package/dist/elements/progress/progress.meta.d.ts +22 -0
  182. package/dist/elements/progress/progress.meta.d.ts.map +1 -0
  183. package/dist/elements/progress/progress.meta.js +28 -0
  184. package/dist/elements/prose-editor/index.d.ts +2 -0
  185. package/dist/elements/prose-editor/index.d.ts.map +1 -0
  186. package/dist/elements/prose-editor/index.js +4 -0
  187. package/dist/elements/prose-editor/prose-editor.css +133 -0
  188. package/dist/elements/prose-editor/prose-editor.d.ts +114 -0
  189. package/dist/elements/prose-editor/prose-editor.d.ts.map +1 -0
  190. package/dist/elements/prose-editor/prose-editor.js +481 -0
  191. package/dist/elements/rating/rating.d.ts +2 -0
  192. package/dist/elements/rating/rating.d.ts.map +1 -1
  193. package/dist/elements/rating/rating.js +2 -0
  194. package/dist/elements/select/select.meta.d.ts +28 -0
  195. package/dist/elements/select/select.meta.d.ts.map +1 -0
  196. package/dist/elements/select/select.meta.js +34 -0
  197. package/dist/elements/skeleton/skeleton.d.ts +3 -0
  198. package/dist/elements/skeleton/skeleton.d.ts.map +1 -1
  199. package/dist/elements/skeleton/skeleton.js +3 -0
  200. package/dist/elements/stories-viewer/stories-viewer.d.ts +1 -1
  201. package/dist/elements/stories-viewer/stories-viewer.d.ts.map +1 -1
  202. package/dist/elements/stories-viewer/stories-viewer.js +23 -19
  203. package/dist/elements/story/story.d.ts +10 -1
  204. package/dist/elements/story/story.d.ts.map +1 -1
  205. package/dist/elements/story/story.js +29 -17
  206. package/dist/elements/toast/toast.d.ts +5 -0
  207. package/dist/elements/toast/toast.d.ts.map +1 -1
  208. package/dist/elements/toast/toast.js +5 -0
  209. package/dist/elements/tree/tree.d.ts +2 -0
  210. package/dist/elements/tree/tree.d.ts.map +1 -1
  211. package/dist/elements/tree/tree.js +2 -0
  212. package/dist/elements/tree-item/tree-item.d.ts +2 -0
  213. package/dist/elements/tree-item/tree-item.d.ts.map +1 -1
  214. package/dist/elements/tree-item/tree-item.js +2 -0
  215. package/dist/metadata/avatar.json +83 -0
  216. package/dist/metadata/badge.json +59 -0
  217. package/dist/metadata/button.json +138 -0
  218. package/dist/metadata/carousel-item.json +32 -0
  219. package/dist/metadata/carousel.json +388 -0
  220. package/dist/metadata/close-button.json +90 -0
  221. package/dist/metadata/dialog.json +163 -0
  222. package/dist/metadata/disclosure.json +88 -0
  223. package/dist/metadata/divider.json +65 -0
  224. package/dist/metadata/drawer.json +176 -0
  225. package/dist/metadata/dropdown-item.json +85 -0
  226. package/dist/metadata/dropdown.json +157 -0
  227. package/dist/metadata/icon.json +49 -0
  228. package/dist/metadata/index.json +4062 -0
  229. package/dist/metadata/input-otp.json +86 -0
  230. package/dist/metadata/input-stepper.json +122 -0
  231. package/dist/metadata/kbd.json +37 -0
  232. package/dist/metadata/popover.json +157 -0
  233. package/dist/metadata/progress.json +71 -0
  234. package/dist/metadata/prose-editor.json +365 -0
  235. package/dist/metadata/rating.json +126 -0
  236. package/dist/metadata/select.json +82 -0
  237. package/dist/metadata/skeleton.json +56 -0
  238. package/dist/metadata/spinner.json +47 -0
  239. package/dist/metadata/sticky-bar.json +93 -0
  240. package/dist/metadata/stories-viewer.json +316 -0
  241. package/dist/metadata/stories.json +109 -0
  242. package/dist/metadata/story.json +148 -0
  243. package/dist/metadata/tabs.json +74 -0
  244. package/dist/metadata/toast.json +122 -0
  245. package/dist/metadata/tooltip.json +144 -0
  246. package/dist/metadata/tree-item.json +199 -0
  247. package/dist/metadata/tree.json +130 -0
  248. package/dist/registry.d.ts +1 -1
  249. package/dist/registry.d.ts.map +1 -1
  250. package/dist/shared/controllers/has-slot-controller.d.ts +37 -0
  251. package/dist/shared/controllers/has-slot-controller.d.ts.map +1 -0
  252. package/dist/shared/controllers/has-slot-controller.js +66 -0
  253. package/dist/static-tag.d.ts +17 -0
  254. package/dist/static-tag.d.ts.map +1 -0
  255. package/dist/static-tag.js +22 -0
  256. package/dist/templates/elements/avatar.md +21 -24
  257. package/dist/templates/elements/badge.md +9 -15
  258. package/dist/templates/elements/button.md +31 -41
  259. package/dist/templates/elements/close-button.md +24 -36
  260. package/dist/templates/elements/dialog.md +73 -54
  261. package/dist/templates/elements/drawer.md +39 -52
  262. package/dist/templates/elements/progress.md +13 -23
  263. package/dist/templates/elements/prose-editor.md +211 -0
  264. package/dist/templates/elements/select.md +20 -31
  265. package/dist/templates/elements/sticky-bar.md +16 -60
  266. package/dist/templates/elements/toast.md +33 -53
  267. package/dist/templates/elements/tree.md +39 -67
  268. package/elements.json +46 -1
  269. package/package.json +13 -3
  270. package/templates/SKILL.md.tpl +5 -1
@@ -2,6 +2,11 @@ import { LuxenElement } from '../../shared/luxen-element.js';
2
2
  /**
3
3
  * @summary An avatar component for displaying user images, initials, or a default icon.
4
4
  * @customElement l-avatar
5
+ *
6
+ * @cssproperty --color - Background fill color for initials and the default icon.
7
+ * @cssproperty --appearance - Set to `circle` for a fully circular avatar (default is a rounded square).
8
+ *
9
+ * @cssClass .l-avatar-group - Flex wrapper that overlaps a row of stacked avatars.
5
10
  */
6
11
  export declare class Avatar extends LuxenElement {
7
12
  static styles: import("lit").CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/html/elements/avatar/avatar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAqB7D;;;GAGG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAC,MAAM,4BAAwB;IAGrC,GAAG,SAAM;IAGT,IAAI,SAAM;IAGV,IAAI,SAAQ;IAGZ,KAAK,SAAK;IAGV,WAAW,UAAS;IAEX,OAAO,CAAC,SAAS,CAAS;IAEnC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxC,iBAAiB;IAOjB,OAAO;IASP,OAAO,KAAK,IAAI,GAEf;IAED,MAAM;IA6BN,OAAO,CAAC,QAAQ,CAEd;CACH"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/html/elements/avatar/avatar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAqB7D;;;;;;;;GAQG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAC,MAAM,4BAAwB;IAGrC,GAAG,SAAM;IAGT,IAAI,SAAM;IAGV,IAAI,SAAQ;IAGZ,KAAK,SAAK;IAGV,WAAW,UAAS;IAEX,OAAO,CAAC,SAAS,CAAS;IAEnC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxC,iBAAiB;IAOjB,OAAO;IASP,OAAO,KAAK,IAAI,GAEf;IAED,MAAM;IA6BN,OAAO,CAAC,QAAQ,CAEd;CACH"}
@@ -25,6 +25,11 @@ const defaultIcon = svg `<svg class="icon" viewBox="0 0 24 24" fill="currentColo
25
25
  /**
26
26
  * @summary An avatar component for displaying user images, initials, or a default icon.
27
27
  * @customElement l-avatar
28
+ *
29
+ * @cssproperty --color - Background fill color for initials and the default icon.
30
+ * @cssproperty --appearance - Set to `circle` for a fully circular avatar (default is a rounded square).
31
+ *
32
+ * @cssClass .l-avatar-group - Flex wrapper that overlaps a row of stacked avatars.
28
33
  */
29
34
  export class Avatar extends LuxenElement {
30
35
  constructor() {
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @summary Buttons trigger actions such as submitting forms, confirming dialogs, or navigating.
3
+ *
4
+ * @nativeElement button
5
+ * @selector .l-button
6
+ *
7
+ * @cssClass .l-button - Base button style.
8
+ *
9
+ * @attribute disabled - Disables the button.
10
+ * @attribute command - Invoker command (`show-modal`, `close`, `show-popover`, etc.).
11
+ * @attribute commandfor - ID of the target element for `command`.
12
+ * @attribute data-variant - primary | destructive — Visual variant. Default is the secondary style.
13
+ * @attribute data-size - sm | lg | xl — Control size. Default is md.
14
+ * @attribute data-icon-only - Icon-only mode (square button, width equals height). Auto-detected for a single icon child.
15
+ * @attribute data-press-effect - Press effect (scale + translate on active).
16
+ *
17
+ * @cssproperty [--height=32px] - Button height (md size).
18
+ * @cssproperty [--padding-inline=0.625rem] - Horizontal padding.
19
+ * @cssproperty --background-color - Background color.
20
+ * @cssproperty --background-color-hover - Background color on hover.
21
+ * @cssproperty --background-color-active - Background color on press.
22
+ * @cssproperty --text-color - Text color.
23
+ * @cssproperty --text-color-hover - Text color on hover.
24
+ * @cssproperty --border-color - Border color.
25
+ * @cssproperty --border-color-hover - Border color on hover.
26
+ * @cssproperty --font-size - Font size.
27
+ *
28
+ * @example Primary
29
+ * <button class="l-button" data-variant="primary">Save</button>
30
+ */
31
+ export declare class ButtonMeta {
32
+ }
33
+ //# sourceMappingURL=button.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.meta.d.ts","sourceRoot":"","sources":["../../../src/html/elements/button/button.meta.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,qBAAa,UAAU;CAAG"}
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Metadata sidecar for the native <button> element (CSS-only, styled via
3
+ * `.l-button`). It carries no runtime code — the JSDoc below is the single
4
+ * source of truth for the button's reference docs and the generated skill,
5
+ * read by the `native-meta` CEM plugin (see scripts/cem-plugins/native-meta.js)
6
+ * and emitted into dist/metadata/button.json by normalize-metadata.mjs.
7
+ *
8
+ * Keep this in sync with src/css/elements/button.css.
9
+ */
10
+ /**
11
+ * @summary Buttons trigger actions such as submitting forms, confirming dialogs, or navigating.
12
+ *
13
+ * @nativeElement button
14
+ * @selector .l-button
15
+ *
16
+ * @cssClass .l-button - Base button style.
17
+ *
18
+ * @attribute disabled - Disables the button.
19
+ * @attribute command - Invoker command (`show-modal`, `close`, `show-popover`, etc.).
20
+ * @attribute commandfor - ID of the target element for `command`.
21
+ * @attribute data-variant - primary | destructive — Visual variant. Default is the secondary style.
22
+ * @attribute data-size - sm | lg | xl — Control size. Default is md.
23
+ * @attribute data-icon-only - Icon-only mode (square button, width equals height). Auto-detected for a single icon child.
24
+ * @attribute data-press-effect - Press effect (scale + translate on active).
25
+ *
26
+ * @cssproperty [--height=32px] - Button height (md size).
27
+ * @cssproperty [--padding-inline=0.625rem] - Horizontal padding.
28
+ * @cssproperty --background-color - Background color.
29
+ * @cssproperty --background-color-hover - Background color on hover.
30
+ * @cssproperty --background-color-active - Background color on press.
31
+ * @cssproperty --text-color - Text color.
32
+ * @cssproperty --text-color-hover - Text color on hover.
33
+ * @cssproperty --border-color - Border color.
34
+ * @cssproperty --border-color-hover - Border color on hover.
35
+ * @cssproperty --font-size - Font size.
36
+ *
37
+ * @example Primary
38
+ * <button class="l-button" data-variant="primary">Save</button>
39
+ */
40
+ // JSDoc-only metadata carrier — the CEM analyzer reads the doc comment above; the
41
+ // class body is intentionally empty.
42
+ // oxlint-disable-next-line typescript/no-extraneous-class
43
+ export class ButtonMeta {
44
+ }
@@ -34,6 +34,12 @@ import { LuxenElement } from '../../shared/luxen-element.js';
34
34
  * @cssproperty --dot-color-active - Color of active dot.
35
35
  * @cssproperty --dot-margin - Margin around dots container.
36
36
  * @cssproperty --dot-edge-scale - Scale factor applied to edge dots that signal more dots exist beyond the visible window (default `0.5`).
37
+ *
38
+ * @event select - Fired when the active slide changes. Detail: `{ index: number }`.
39
+ * @event slides-in-view - Fired when the set of slides in view changes. Detail: `{ indexes: number[] }`.
40
+ * @event fullscreen - Fired when the fullscreen button is activated.
41
+ *
42
+ * @customElement l-carousel
37
43
  */
38
44
  export declare class Carousel extends LuxenElement {
39
45
  static styles: CSSResultGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/html/elements/carousel/carousel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/html/elements/carousel/carousel.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,12 @@ const styles = unsafeCSS(rawStyles);
54
54
  * @cssproperty --dot-color-active - Color of active dot.
55
55
  * @cssproperty --dot-margin - Margin around dots container.
56
56
  * @cssproperty --dot-edge-scale - Scale factor applied to edge dots that signal more dots exist beyond the visible window (default `0.5`).
57
+ *
58
+ * @event select - Fired when the active slide changes. Detail: `{ index: number }`.
59
+ * @event slides-in-view - Fired when the set of slides in view changes. Detail: `{ indexes: number[] }`.
60
+ * @event fullscreen - Fired when the fullscreen button is activated.
61
+ *
62
+ * @customElement l-carousel
57
63
  */
58
64
  export class Carousel extends LuxenElement {
59
65
  constructor() {
@@ -4,6 +4,8 @@ import { LuxenElement } from '../../shared/luxen-element.js';
4
4
  * A single slide inside an `<l-carousel>`.
5
5
  *
6
6
  * @cssproperty --aspect-ratio - Aspect ratio of the slide.
7
+ *
8
+ * @customElement l-carousel-item
7
9
  */
8
10
  export declare class CarouselItem extends LuxenElement {
9
11
  static styles: CSSResultGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"carousel-item.d.ts","sourceRoot":"","sources":["../../../src/html/elements/carousel-item/carousel-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAM7D;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,MAAM,EAAE,cAAc,CAAwB;IAErD,iBAAiB;IAKjB,MAAM;CAGhB"}
1
+ {"version":3,"file":"carousel-item.d.ts","sourceRoot":"","sources":["../../../src/html/elements/carousel-item/carousel-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAM7D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,MAAM,EAAE,cAAc,CAAwB;IAErD,iBAAiB;IAKjB,MAAM;CAGhB"}
@@ -7,6 +7,8 @@ const styles = unsafeCSS(rawStyles);
7
7
  * A single slide inside an `<l-carousel>`.
8
8
  *
9
9
  * @cssproperty --aspect-ratio - Aspect ratio of the slide.
10
+ *
11
+ * @customElement l-carousel-item
10
12
  */
11
13
  export class CarouselItem extends LuxenElement {
12
14
  connectedCallback() {
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @summary A circular/square icon button that renders an X via CSS mask, for dismissing dialogs and panels.
3
+ *
4
+ * @nativeElement button
5
+ * @selector .l-close
6
+ *
7
+ * @attribute data-appearance - ring | square | circle — Visual appearance (matches the imported appearance CSS).
8
+ * @attribute command - Invoker command (typically `close`).
9
+ * @attribute commandfor - ID of the target element to close.
10
+ *
11
+ * @cssClass .l-close - Base close button with X icon via CSS mask.
12
+ *
13
+ * @cssproperty [--size=36px] - Button size.
14
+ * @cssproperty --icon-color - Icon color.
15
+ * @cssproperty [--icon-size=24px] - Icon size.
16
+ * @cssproperty --ring-color - Hover ring color (`ring` appearance only).
17
+ * @cssproperty --ring-tickness - Hover ring thickness (`ring` appearance only).
18
+ *
19
+ * @example Ring appearance
20
+ * <button class="l-close" data-appearance="ring" aria-label="Close"></button>
21
+ */
22
+ export declare class CloseButtonMeta {
23
+ }
24
+ //# sourceMappingURL=close-button.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close-button.meta.d.ts","sourceRoot":"","sources":["../../../src/html/elements/close-button/close-button.meta.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qBAAa,eAAe;CAAG"}
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Metadata sidecar for the native close button (CSS-only, styled via `.l-close`
3
+ * on a native `<button>`). JSDoc-only — read by the `native-meta` CEM plugin and
4
+ * emitted into dist/metadata/close-button.json. Keep in sync with
5
+ * src/css/elements/close-button/ (_base.css + ring/square/circle appearances).
6
+ */
7
+ /**
8
+ * @summary A circular/square icon button that renders an X via CSS mask, for dismissing dialogs and panels.
9
+ *
10
+ * @nativeElement button
11
+ * @selector .l-close
12
+ *
13
+ * @attribute data-appearance - ring | square | circle — Visual appearance (matches the imported appearance CSS).
14
+ * @attribute command - Invoker command (typically `close`).
15
+ * @attribute commandfor - ID of the target element to close.
16
+ *
17
+ * @cssClass .l-close - Base close button with X icon via CSS mask.
18
+ *
19
+ * @cssproperty [--size=36px] - Button size.
20
+ * @cssproperty --icon-color - Icon color.
21
+ * @cssproperty [--icon-size=24px] - Icon size.
22
+ * @cssproperty --ring-color - Hover ring color (`ring` appearance only).
23
+ * @cssproperty --ring-tickness - Hover ring thickness (`ring` appearance only).
24
+ *
25
+ * @example Ring appearance
26
+ * <button class="l-close" data-appearance="ring" aria-label="Close"></button>
27
+ */
28
+ // oxlint-disable-next-line typescript/no-extraneous-class -- JSDoc-only metadata carrier.
29
+ export class CloseButtonMeta {
30
+ }
@@ -87,6 +87,21 @@ dialog {
87
87
  padding: var(--footer-padding);
88
88
  }
89
89
 
90
+ /* Collapse the footer row when nothing is slotted into it, so an empty
91
+ dialog/drawer reserves no space at the bottom. `data-empty` is toggled by the
92
+ HasSlotController in dialog.ts: `:host(:has(...))` can't be used because
93
+ `:has()` is invalid inside `:host()` and the whole rule is dropped by the
94
+ browser. */
95
+ [part='footer'][data-empty] {
96
+ display: none;
97
+ }
98
+
99
+ /* With the footer collapsed, the body has to provide its own block-end padding
100
+ (normally inherited visually from the footer padding below it). */
101
+ [part='body']:has(~ [part='footer'][data-empty]) {
102
+ padding-block-end: var(--padding);
103
+ }
104
+
90
105
  /* Without a header, the body has to provide its own block-start padding
91
106
  (normally inherited visually from the header padding above it). */
92
107
  :host([without-header]) [part='body'] {
@@ -17,18 +17,23 @@ import { LuxenElement } from '../../shared/luxen-element.js';
17
17
  * @csspart body - The body wrapper around the default slot.
18
18
  * @csspart footer - The footer wrapper around the footer slot.
19
19
  *
20
- * @cssproperty --width - Dialog width. Default `31rem`.
21
- * @cssproperty --border-radius - Dialog border radius. Default `6px`.
22
- * @cssproperty --padding - Padding applied to the header, footer, and inline-padding of the body. Default `1.5rem`. Set to `0` to remove all internal spacing (e.g. for edge-to-edge media).
23
- * @cssproperty --show-duration - Open transition duration. Default `200ms`.
24
- * @cssproperty --hide-duration - Close transition duration. Default `200ms`.
20
+ * @cssproperty [--width=31rem] - Dialog width.
21
+ * @cssproperty [--border-radius=6px] - Dialog border radius.
22
+ * @cssproperty [--padding=1.5rem] - Padding applied to the header, footer, and inline-padding of the body. Set to `0` to remove all internal spacing (e.g. for edge-to-edge media).
23
+ * @cssproperty [--show-duration=200ms] - Open transition duration.
24
+ * @cssproperty [--hide-duration=200ms] - Close transition duration.
25
25
  * @cssproperty --backdrop - Backdrop color.
26
- * @cssproperty --backdrop-blur - Backdrop blur amount (any CSS length). Default `0` (no blur). Set to e.g. `4px` for a subtle frost.
26
+ * @cssproperty [--backdrop-blur=0] - Backdrop blur amount (any CSS length). `0` means no blur; set e.g. `4px` for a subtle frost.
27
27
  *
28
28
  * @event show - Fired when the dialog opens. Not cancelable.
29
29
  * @event after-show - Fired after the open animation completes.
30
30
  * @event hide - Fired when the dialog is about to close. Cancelable — call `event.preventDefault()` to keep it open.
31
31
  * @event after-hide - Fired after the close animation completes.
32
+ *
33
+ * @command --show - Sets `open = true`.
34
+ * @command --hide - Sets `open = false`.
35
+ *
36
+ * @customElement l-dialog
32
37
  */
33
38
  export declare class Dialog extends LuxenElement {
34
39
  static styles: import("lit").CSSResult[];
@@ -40,6 +45,7 @@ export declare class Dialog extends LuxenElement {
40
45
  lightDismiss: boolean;
41
46
  /** Hide the header entirely (title and close slot). */
42
47
  withoutHeader: boolean;
48
+ private _slots;
43
49
  dialog: HTMLDialogElement;
44
50
  protected _modalKind: 'centered' | 'edge';
45
51
  private _mouseDownTarget;
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/html/elements/dialog/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAgC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAC,MAAM,4BAAwB;IAErC,2CAA2C;IAE3C,KAAK,SAAM;IAEX,kCAAkC;IAElC,IAAI,UAAS;IAEb,0CAA0C;IAE1C,YAAY,UAAS;IAErB,uDAAuD;IAEvD,aAAa,UAAS;IAGtB,MAAM,EAAG,iBAAiB,CAAC;IAI3B,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAc;IAEvD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,gBAAgB,CAEtB;IAIF,iBAAiB;IAKjB,oBAAoB;IAKpB,YAAY;IASZ,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IA0BrC,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe,CAAC,CAAY;IAEpC,OAAO,CAAC,aAAa;YAcP,UAAU;IAUxB,OAAO,CAAC,qBAAqB;IAK7B,MAAM;CA0BP"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/html/elements/dialog/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAC,MAAM,4BAAwB;IAErC,2CAA2C;IAE3C,KAAK,SAAM;IAEX,kCAAkC;IAElC,IAAI,UAAS;IAEb,0CAA0C;IAE1C,YAAY,UAAS;IAErB,uDAAuD;IAEvD,aAAa,UAAS;IAMtB,OAAO,CAAC,MAAM,CAAyC;IAGvD,MAAM,EAAG,iBAAiB,CAAC;IAI3B,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAc;IAEvD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,gBAAgB,CAEtB;IAIF,iBAAiB;IAKjB,oBAAoB;IAKpB,YAAY;IASZ,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IA0BrC,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe,CAAC,CAAY;IAEpC,OAAO,CAAC,aAAa;YAcP,UAAU;IAUxB,OAAO,CAAC,qBAAqB;IAK7B,MAAM;CA6BP"}
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html, nothing } from 'lit';
8
8
  import { property, query } from 'lit/decorators.js';
9
9
  import { LuxenElement } from '../../shared/luxen-element.js';
10
+ import { HasSlotController } from '../../shared/controllers/has-slot-controller.js';
10
11
  import hostStyles from '../../shared/styles/host.styles.js';
11
12
  import styles from './dialog.styles.js';
12
13
  const supportsClosedBy = typeof HTMLDialogElement !== 'undefined' && 'closedBy' in HTMLDialogElement.prototype;
@@ -46,18 +47,23 @@ if (typeof document !== 'undefined' && !(SCROLL_LOCK_SHEET in document)) {
46
47
  * @csspart body - The body wrapper around the default slot.
47
48
  * @csspart footer - The footer wrapper around the footer slot.
48
49
  *
49
- * @cssproperty --width - Dialog width. Default `31rem`.
50
- * @cssproperty --border-radius - Dialog border radius. Default `6px`.
51
- * @cssproperty --padding - Padding applied to the header, footer, and inline-padding of the body. Default `1.5rem`. Set to `0` to remove all internal spacing (e.g. for edge-to-edge media).
52
- * @cssproperty --show-duration - Open transition duration. Default `200ms`.
53
- * @cssproperty --hide-duration - Close transition duration. Default `200ms`.
50
+ * @cssproperty [--width=31rem] - Dialog width.
51
+ * @cssproperty [--border-radius=6px] - Dialog border radius.
52
+ * @cssproperty [--padding=1.5rem] - Padding applied to the header, footer, and inline-padding of the body. Set to `0` to remove all internal spacing (e.g. for edge-to-edge media).
53
+ * @cssproperty [--show-duration=200ms] - Open transition duration.
54
+ * @cssproperty [--hide-duration=200ms] - Close transition duration.
54
55
  * @cssproperty --backdrop - Backdrop color.
55
- * @cssproperty --backdrop-blur - Backdrop blur amount (any CSS length). Default `0` (no blur). Set to e.g. `4px` for a subtle frost.
56
+ * @cssproperty [--backdrop-blur=0] - Backdrop blur amount (any CSS length). `0` means no blur; set e.g. `4px` for a subtle frost.
56
57
  *
57
58
  * @event show - Fired when the dialog opens. Not cancelable.
58
59
  * @event after-show - Fired after the open animation completes.
59
60
  * @event hide - Fired when the dialog is about to close. Cancelable — call `event.preventDefault()` to keep it open.
60
61
  * @event after-hide - Fired after the close animation completes.
62
+ *
63
+ * @command --show - Sets `open = true`.
64
+ * @command --hide - Sets `open = false`.
65
+ *
66
+ * @customElement l-dialog
61
67
  */
62
68
  export class Dialog extends LuxenElement {
63
69
  constructor() {
@@ -70,6 +76,11 @@ export class Dialog extends LuxenElement {
70
76
  this.lightDismiss = false;
71
77
  /** Hide the header entirely (title and close slot). */
72
78
  this.withoutHeader = false;
79
+ // Tracks whether the footer slot has content, so the footer row can collapse
80
+ // when empty (toggles `data-empty` below). A controller drives this because
81
+ // `:host(:has(> [slot='footer']))` is invalid — `:has()` can't be nested in
82
+ // `:host()`, so browsers drop the whole rule.
83
+ this._slots = new HasSlotController(this, 'footer');
73
84
  // Drives the scroll-lock stylesheet: `centered` reserves the scrollbar
74
85
  // gutter (no page shift); `edge` skips it (drawers sit flush to the edge).
75
86
  this._modalKind = 'centered';
@@ -203,7 +214,10 @@ export class Dialog extends LuxenElement {
203
214
  <div part="body">
204
215
  <slot></slot>
205
216
  </div>
206
- <footer part="footer">
217
+ <footer
218
+ part="footer"
219
+ ?data-empty=${!this._slots.test('footer')}
220
+ >
207
221
  <slot name="footer"></slot>
208
222
  </footer>
209
223
  </dialog>
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @summary A headless, animated disclosure built on native `<details>`/`<summary>`.
3
+ *
4
+ * @nativeElement details
5
+ * @selector .l-disclosure
6
+ *
7
+ * @attribute open - Native attribute — starts the disclosure expanded.
8
+ * @attribute name - Native attribute — groups disclosures into an exclusive accordion.
9
+ * @attribute data-marker - arrow | plus — Marker icon: `arrow` rotates 180° when open; `plus` rotates 45° into a cross.
10
+ * @attribute data-variant - bordered — Adds border, background, and border-radius.
11
+ * @attribute disabled - Disables interaction (set on `<details>` or `<summary>`).
12
+ *
13
+ * @event toggle - Fires when the disclosure opens or closes (`e.newState` is `"open"` or `"closed"`).
14
+ *
15
+ * @cssClass .l-disclosure - Headless base — layout, animation, and marker behavior only.
16
+ *
17
+ * @cssproperty [--marker-size=20px] - Marker icon size.
18
+ * @cssproperty --marker-color - Marker icon color (default `var(--l-color-text-tertiary)`).
19
+ *
20
+ * @example Bordered with arrow marker
21
+ * <details class="l-disclosure" data-variant="bordered" data-marker="arrow">
22
+ * <summary>Details</summary>
23
+ * <div>Content</div>
24
+ * </details>
25
+ */
26
+ export declare class DisclosureMeta {
27
+ }
28
+ //# sourceMappingURL=disclosure.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disclosure.meta.d.ts","sourceRoot":"","sources":["../../../src/html/elements/disclosure/disclosure.meta.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,qBAAa,cAAc;CAAG"}
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Metadata sidecar for the native disclosure (CSS-only, styled via `.l-disclosure`
3
+ * on a native `<details>`/`<summary>`). JSDoc-only — read by the `native-meta`
4
+ * CEM plugin and emitted into dist/metadata/disclosure.json. Keep in sync with
5
+ * src/css/elements/disclosure.css.
6
+ */
7
+ /**
8
+ * @summary A headless, animated disclosure built on native `<details>`/`<summary>`.
9
+ *
10
+ * @nativeElement details
11
+ * @selector .l-disclosure
12
+ *
13
+ * @attribute open - Native attribute — starts the disclosure expanded.
14
+ * @attribute name - Native attribute — groups disclosures into an exclusive accordion.
15
+ * @attribute data-marker - arrow | plus — Marker icon: `arrow` rotates 180° when open; `plus` rotates 45° into a cross.
16
+ * @attribute data-variant - bordered — Adds border, background, and border-radius.
17
+ * @attribute disabled - Disables interaction (set on `<details>` or `<summary>`).
18
+ *
19
+ * @event toggle - Fires when the disclosure opens or closes (`e.newState` is `"open"` or `"closed"`).
20
+ *
21
+ * @cssClass .l-disclosure - Headless base — layout, animation, and marker behavior only.
22
+ *
23
+ * @cssproperty [--marker-size=20px] - Marker icon size.
24
+ * @cssproperty --marker-color - Marker icon color (default `var(--l-color-text-tertiary)`).
25
+ *
26
+ * @example Bordered with arrow marker
27
+ * <details class="l-disclosure" data-variant="bordered" data-marker="arrow">
28
+ * <summary>Details</summary>
29
+ * <div>Content</div>
30
+ * </details>
31
+ */
32
+ // oxlint-disable-next-line typescript/no-extraneous-class -- JSDoc-only metadata carrier.
33
+ export class DisclosureMeta {
34
+ }
@@ -6,7 +6,7 @@ export type DividerOrientation = 'horizontal' | 'vertical';
6
6
  * @example <l-divider></l-divider>
7
7
  *
8
8
  * @cssproperty --color - The color of the divider line.
9
- * @cssproperty --width - The thickness of the divider line.
9
+ * @cssproperty --thickness - The thickness of the divider line.
10
10
  * @cssproperty --spacing - The spacing between the divider and its neighboring elements.
11
11
  *
12
12
  * @customElement l-divider
@@ -12,7 +12,7 @@ import { LuxenElement } from '../../shared/luxen-element.js';
12
12
  * @example <l-divider></l-divider>
13
13
  *
14
14
  * @cssproperty --color - The color of the divider line.
15
- * @cssproperty --width - The thickness of the divider line.
15
+ * @cssproperty --thickness - The thickness of the divider line.
16
16
  * @cssproperty --spacing - The spacing between the divider and its neighboring elements.
17
17
  *
18
18
  * @customElement l-divider
@@ -25,6 +25,11 @@ import { Dialog } from '../dialog/dialog.js';
25
25
  * @event after-show - Fired after the open animation completes.
26
26
  * @event hide - Fired when the drawer is about to close. Cancelable — call `event.preventDefault()` to keep it open.
27
27
  * @event after-hide - Fired after the close animation completes.
28
+ *
29
+ * @command --show - Sets `open = true`.
30
+ * @command --hide - Sets `open = false`.
31
+ *
32
+ * @customElement l-drawer
28
33
  */
29
34
  export declare class Drawer extends Dialog {
30
35
  static styles: import("lit").CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../src/html/elements/drawer/drawer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,MAAO,SAAQ,MAAM;IAChC,OAAgB,MAAM,4BAA4C;IAIlE,UAAmB,UAAU,EAAG,MAAM,CAAU;IAEhD,iFAAiF;IAEjF,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;CACxC"}
1
+ {"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../src/html/elements/drawer/drawer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,MAAO,SAAQ,MAAM;IAChC,OAAgB,MAAM,4BAA4C;IAIlE,UAAmB,UAAU,EAAG,MAAM,CAAU;IAEhD,iFAAiF;IAEjF,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;CACxC"}
@@ -37,6 +37,11 @@ const drawerStyles = unsafeCSS(rawDrawerStyles);
37
37
  * @event after-show - Fired after the open animation completes.
38
38
  * @event hide - Fired when the drawer is about to close. Cancelable — call `event.preventDefault()` to keep it open.
39
39
  * @event after-hide - Fired after the close animation completes.
40
+ *
41
+ * @command --show - Sets `open = true`.
42
+ * @command --hide - Sets `open = false`.
43
+ *
44
+ * @customElement l-drawer
40
45
  */
41
46
  export class Drawer extends Dialog {
42
47
  constructor() {
@@ -23,6 +23,8 @@ import type { Placement } from '@floating-ui/dom';
23
23
  * @event hide - Fired before the dropdown closes. Cancelable.
24
24
  * @event after-hide - Fired after the close animation completes.
25
25
  * @event select - Fired when an item is selected. Detail: `{ item: DropdownItem }`.
26
+ *
27
+ * @customElement l-dropdown
26
28
  */
27
29
  export declare class Dropdown extends LuxenElement {
28
30
  static styles: import("lit").CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/html/elements/dropdown/dropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AASlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,OAAgB,MAAM,4BAAwB;IAE9C,OAAO,CAAC,SAAS,CAId;IAEH,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,oCAAoC;IAEpC,QAAQ,CAAC,IAAI,UAAS;IAEtB,wCAAwC;IAExC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAkB;IAE/C,2CAA2C;IAE3C,QAAQ,CAAC,QAAQ,SAAK;IAEtB,qCAAqC;IAErC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAOpB,IAAI;IAKJ,IAAI;IAKJ,MAAM;IAOG,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;YAQhC,iBAAiB;IAyB/B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,eAAe,CAQrB;IAEF,OAAO,CAAC,iBAAiB,CAYvB;IAEF,OAAO,CAAC,eAAe,CAiCrB;IAEF,OAAO,CAAC,YAAY,CAKlB;IAEF,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;IAWnB,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAMf;IAEO,MAAM;CAwBhB"}
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/html/elements/dropdown/dropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AASlD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,OAAgB,MAAM,4BAAwB;IAE9C,OAAO,CAAC,SAAS,CAId;IAEH,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,oCAAoC;IAEpC,QAAQ,CAAC,IAAI,UAAS;IAEtB,wCAAwC;IAExC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAkB;IAE/C,2CAA2C;IAE3C,QAAQ,CAAC,QAAQ,SAAK;IAEtB,qCAAqC;IAErC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAOpB,IAAI;IAKJ,IAAI;IAKJ,MAAM;IAOG,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;YAQhC,iBAAiB;IAyB/B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,eAAe,CAQrB;IAEF,OAAO,CAAC,iBAAiB,CAYvB;IAEF,OAAO,CAAC,eAAe,CAiCrB;IAEF,OAAO,CAAC,YAAY,CAKlB;IAEF,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;IAWnB,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAMf;IAEO,MAAM;CAwBhB"}
@@ -46,6 +46,8 @@ const styles = unsafeCSS(rawStyles);
46
46
  * @event hide - Fired before the dropdown closes. Cancelable.
47
47
  * @event after-hide - Fired after the close animation completes.
48
48
  * @event select - Fired when an item is selected. Detail: `{ item: DropdownItem }`.
49
+ *
50
+ * @customElement l-dropdown
49
51
  */
50
52
  export class Dropdown extends LuxenElement {
51
53
  constructor() {
@@ -7,6 +7,8 @@ import { LuxenElement } from '../../shared/luxen-element.js';
7
7
  * @slot suffix - Trailing content.
8
8
  *
9
9
  * @cssproperty --color - Text color.
10
+ *
11
+ * @customElement l-dropdown-item
10
12
  */
11
13
  export declare class DropdownItem extends LuxenElement {
12
14
  static styles: import("lit").CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-item.d.ts","sourceRoot":"","sources":["../../../src/html/elements/dropdown-item/dropdown-item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAO7D;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,MAAM,4BAAwB;IAE9C,2CAA2C;IAE3C,QAAQ,CAAC,KAAK,SAAM;IAEpB,yBAAyB;IAEzB,QAAQ,CAAC,QAAQ,UAAS;IAE1B,gDAAgD;IAEhD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAY;IAEhD,4CAA4C;IAE5C,QAAQ,CAAC,OAAO,UAAS;IAEzB,2CAA2C;IAC3C,YAAY,IAAI,MAAM;IAIb,MAAM;CAuChB"}
1
+ {"version":3,"file":"dropdown-item.d.ts","sourceRoot":"","sources":["../../../src/html/elements/dropdown-item/dropdown-item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAO7D;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,MAAM,4BAAwB;IAE9C,2CAA2C;IAE3C,QAAQ,CAAC,KAAK,SAAM;IAEpB,yBAAyB;IAEzB,QAAQ,CAAC,QAAQ,UAAS;IAE1B,gDAAgD;IAEhD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAY;IAEhD,4CAA4C;IAE5C,QAAQ,CAAC,OAAO,UAAS;IAEzB,2CAA2C;IAC3C,YAAY,IAAI,MAAM;IAIb,MAAM;CAuChB"}
@@ -30,6 +30,8 @@ const styles = unsafeCSS(rawStyles);
30
30
  * @slot suffix - Trailing content.
31
31
  *
32
32
  * @cssproperty --color - Text color.
33
+ *
34
+ * @customElement l-dropdown-item
33
35
  */
34
36
  export class DropdownItem extends LuxenElement {
35
37
  constructor() {
@@ -8,6 +8,8 @@ import { LuxenElement } from '../../shared/luxen-element.js';
8
8
  * @summary Stripe-style OTP input with visual digit cells over a hidden native input.
9
9
  * @customElement l-input-otp
10
10
  *
11
+ * @attribute size - sm | lg — Cell size. Default is md.
12
+ *
11
13
  * @cssproperty --digits - Number of digit boxes (default: 6). Must match input's maxlength.
12
14
  * @cssproperty --cell-size - Cell width and height (default: 2.75rem). Font size scales automatically.
13
15
  * @cssproperty --cell-gap - Space between cells (default: 0.5rem).
@@ -1 +1 @@
1
- {"version":3,"file":"input-otp.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-otp/input-otp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IAC/B,gBAAgB;IAIzB,sFAAsF;IAEtF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,YAAY,CAAS;IAEpB,iBAAiB;IAKjB,oBAAoB;IAO7B,OAAO,CAAC,MAAM;IA4Dd,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,YAAY,CAyBlB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,oBAAoB,CAE1B;CACH"}
1
+ {"version":3,"file":"input-otp.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-otp/input-otp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IAC/B,gBAAgB;IAIzB,sFAAsF;IAEtF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,YAAY,CAAS;IAEpB,iBAAiB;IAKjB,oBAAoB;IAO7B,OAAO,CAAC,MAAM;IA4Dd,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,YAAY,CAyBlB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,oBAAoB,CAE1B;CACH"}
@@ -15,6 +15,8 @@ import { LuxenElement } from '../../shared/luxen-element.js';
15
15
  * @summary Stripe-style OTP input with visual digit cells over a hidden native input.
16
16
  * @customElement l-input-otp
17
17
  *
18
+ * @attribute size - sm | lg — Cell size. Default is md.
19
+ *
18
20
  * @cssproperty --digits - Number of digit boxes (default: 6). Must match input's maxlength.
19
21
  * @cssproperty --cell-size - Cell width and height (default: 2.75rem). Font size scales automatically.
20
22
  * @cssproperty --cell-gap - Space between cells (default: 0.5rem).
@@ -17,6 +17,8 @@ export type InputStepperSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
17
17
  *
18
18
  * @cssproperty --border-color - Border color of the stepper container (default appearance) and of each button (rounded appearance). Defaults to `--l-color-border`.
19
19
  * @cssproperty --border-radius - Border radius of the stepper container (default appearance). Defaults to `--radius-md`.
20
+ *
21
+ * @customElement l-input-stepper
20
22
  */
21
23
  export declare class InputStepper extends LuxenElement {
22
24
  createRenderRoot(): this;
@@ -1 +1 @@
1
- {"version":3,"file":"input-stepper.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-stepper/input-stepper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,YAAa,SAAQ,YAAY;IACnC,gBAAgB;IAIzB,wEAAwE;IAExE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,wEAAwE;IAExE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,kEAAkE;IAElE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oBAAoB;IAEpB,IAAI,EAAE,gBAAgB,CAAQ;IAE9B,iDAAiD;IAEjD,UAAU,UAAS;IAEnB,0CAA0C;IAE1C,aAAa,SAAkB;IAE/B,0CAA0C;IAE1C,aAAa,SAAiB;IAE9B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,eAAe,CAAS;IAEvB,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAS9C,sCAAsC;IACtC,SAAS;IAOT,sCAAsC;IACtC,SAAS;IAST,OAAO,CAAC,MAAM;IAsCd,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,cAAc,CAWpB;CACH"}
1
+ {"version":3,"file":"input-stepper.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-stepper/input-stepper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,YAAa,SAAQ,YAAY;IACnC,gBAAgB;IAIzB,wEAAwE;IAExE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,wEAAwE;IAExE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,kEAAkE;IAElE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oBAAoB;IAEpB,IAAI,EAAE,gBAAgB,CAAQ;IAE9B,iDAAiD;IAEjD,UAAU,UAAS;IAEnB,0CAA0C;IAE1C,aAAa,SAAkB;IAE/B,0CAA0C;IAE1C,aAAa,SAAiB;IAE9B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,eAAe,CAAS;IAEvB,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAS9C,sCAAsC;IACtC,SAAS;IAOT,sCAAsC;IACtC,SAAS;IAST,OAAO,CAAC,MAAM;IAsCd,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,cAAc,CAWpB;CACH"}
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { property } from 'lit/decorators.js';
8
8
  import { LuxenElement } from '../../shared/luxen-element.js';
9
+ import { tagName } from '../../registry.js';
9
10
  /**
10
11
  * A stepper control that enhances a native `<input type="number">` with
11
12
  * decrement/increment buttons and an optional animated number track.
@@ -23,6 +24,8 @@ import { LuxenElement } from '../../shared/luxen-element.js';
23
24
  *
24
25
  * @cssproperty --border-color - Border color of the stepper container (default appearance) and of each button (rounded appearance). Defaults to `--l-color-border`.
25
26
  * @cssproperty --border-radius - Border radius of the stepper container (default appearance). Defaults to `--radius-md`.
27
+ *
28
+ * @customElement l-input-stepper
26
29
  */
27
30
  export class InputStepper extends LuxenElement {
28
31
  constructor() {
@@ -148,7 +151,8 @@ export class InputStepper extends LuxenElement {
148
151
  const btn = document.createElement('button');
149
152
  btn.type = 'button';
150
153
  btn.setAttribute('aria-label', label);
151
- btn.innerHTML = `<l-icon name="${icon}"></l-icon>`;
154
+ const iconTag = tagName('icon');
155
+ btn.innerHTML = `<${iconTag} name="${icon}"></${iconTag}>`;
152
156
  return btn;
153
157
  }
154
158
  _buildTrack() {