luxen-ui 0.24.0 → 0.26.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 (249) hide show
  1. package/README.md +1 -0
  2. package/bin/cli.mjs +16 -1
  3. package/cdn/custom-elements.json +295 -169
  4. package/cdn/elements/alert-dialog/alert-dialog.d.ts +3 -2
  5. package/cdn/elements/alert-dialog/alert-dialog.d.ts.map +1 -1
  6. package/cdn/elements/alert-dialog/alert-dialog.js.map +1 -1
  7. package/cdn/elements/avatar/avatar.js +1 -1
  8. package/cdn/elements/avatar/avatar.js.map +1 -1
  9. package/cdn/elements/carousel/carousel.js +1 -1
  10. package/cdn/elements/carousel/carousel.js.map +1 -1
  11. package/cdn/elements/combobox/combobox.d.ts.map +1 -1
  12. package/cdn/elements/combobox/combobox.js +2 -1
  13. package/cdn/elements/combobox/combobox.js.map +1 -1
  14. package/cdn/elements/dialog/dialog.d.ts +2 -1
  15. package/cdn/elements/dialog/dialog.d.ts.map +1 -1
  16. package/cdn/elements/dialog/dialog.js.map +1 -1
  17. package/cdn/elements/dialog/dialog.styles.js +1 -1
  18. package/cdn/elements/dialog/dialog.styles.js.map +1 -1
  19. package/cdn/elements/drawer/drawer.d.ts +7 -7
  20. package/cdn/elements/drawer/drawer.js +1 -1
  21. package/cdn/elements/drawer/drawer.js.map +1 -1
  22. package/cdn/elements/dropdown-item/dropdown-item.js +1 -1
  23. package/cdn/elements/dropdown-item/dropdown-item.js.map +1 -1
  24. package/cdn/elements/input-otp/input-otp.d.ts +2 -2
  25. package/cdn/elements/input-otp/input-otp.js.map +1 -1
  26. package/cdn/elements/prose-editor/prose-editor.js +1 -1
  27. package/cdn/elements/prose-editor/prose-editor.js.map +1 -1
  28. package/cdn/elements/rating/rating.js +1 -1
  29. package/cdn/elements/rating/rating.js.map +1 -1
  30. package/cdn/elements/select/select.d.ts.map +1 -1
  31. package/cdn/elements/select/select.js +2 -1
  32. package/cdn/elements/select/select.js.map +1 -1
  33. package/cdn/elements/slider/slider.js +1 -1
  34. package/cdn/elements/slider/slider.js.map +1 -1
  35. package/cdn/elements/stories-viewer/stories-viewer.js +1 -1
  36. package/cdn/elements/stories-viewer/stories-viewer.js.map +1 -1
  37. package/cdn/elements/table/table.meta.d.ts +55 -0
  38. package/cdn/elements/table/table.meta.d.ts.map +1 -0
  39. package/cdn/elements/table/table.meta.js +0 -0
  40. package/cdn/elements/tag/tag.js +1 -1
  41. package/cdn/elements/tag/tag.js.map +1 -1
  42. package/cdn/elements/tree/tree.js +1 -1
  43. package/cdn/elements/tree/tree.js.map +1 -1
  44. package/cdn/elements/tree-item/tree-item.js +1 -1
  45. package/cdn/elements/tree-item/tree-item.js.map +1 -1
  46. package/cdn/shared/controllers/listbox-nav.d.ts +7 -0
  47. package/cdn/shared/controllers/listbox-nav.d.ts.map +1 -1
  48. package/cdn/shared/controllers/listbox-nav.js +1 -1
  49. package/cdn/shared/controllers/listbox-nav.js.map +1 -1
  50. package/cdn/shared/styles/button-core.styles.js +1 -1
  51. package/cdn/shared/styles/button-core.styles.js.map +1 -1
  52. package/cdn/shared/styles/checkbox-appearance.styles.js +1 -1
  53. package/cdn/shared/styles/checkbox-appearance.styles.js.map +1 -1
  54. package/cdn/shared/styles/picker-core.styles.js +1 -1
  55. package/cdn/shared/styles/picker-core.styles.js.map +1 -1
  56. package/cdn/standalone.css +392 -86
  57. package/cdn/standalone.js +38 -28
  58. package/cdn/standalone.js.map +1 -1
  59. package/cdn/styles/base.css +11 -0
  60. package/cdn/styles/elements/breadcrumb.css +2 -2
  61. package/cdn/styles/elements/button.css +2 -2
  62. package/cdn/styles/elements/checkbox.css +2 -2
  63. package/cdn/styles/elements/close-button/circle.css +2 -2
  64. package/cdn/styles/elements/close-button/ring.css +2 -2
  65. package/cdn/styles/elements/close-button/square.css +2 -2
  66. package/cdn/styles/elements/disclosure.css +2 -2
  67. package/cdn/styles/elements/input-otp.css +20 -4
  68. package/cdn/styles/elements/input-stepper/default.css +2 -2
  69. package/cdn/styles/elements/input-stepper/pill.css +2 -2
  70. package/cdn/styles/elements/input-stepper/rounded.css +2 -2
  71. package/cdn/styles/elements/input.css +50 -17
  72. package/cdn/styles/elements/prose-editor.css +26 -11
  73. package/cdn/styles/elements/radio-group.css +2 -2
  74. package/cdn/styles/elements/radio.css +2 -2
  75. package/cdn/styles/elements/segmented-control.css +2 -2
  76. package/cdn/styles/elements/select.css +26 -5
  77. package/cdn/styles/elements/story.css +2 -2
  78. package/cdn/styles/elements/switch.css +2 -2
  79. package/cdn/styles/elements/table.css +186 -0
  80. package/cdn/styles/elements/tabs/enclosed.css +4 -4
  81. package/cdn/styles/elements/tabs/line.css +4 -4
  82. package/cdn/styles/elements/textarea.css +23 -9
  83. package/cdn/styles/preset.css +21 -2
  84. package/cdn/styles/tokens/aliases.css +6 -2
  85. package/cdn/styles/tokens/forms.css +4 -0
  86. package/cdn/styles/tokens.css +10 -2
  87. package/dist/css/base.css +11 -0
  88. package/dist/css/elements/breadcrumb.css +2 -2
  89. package/dist/css/elements/button.css +2 -2
  90. package/dist/css/elements/checkbox.css +2 -2
  91. package/dist/css/elements/close-button/circle.css +2 -2
  92. package/dist/css/elements/close-button/ring.css +2 -2
  93. package/dist/css/elements/close-button/square.css +2 -2
  94. package/dist/css/elements/disclosure.css +2 -2
  95. package/dist/css/elements/input-otp.css +20 -4
  96. package/dist/css/elements/input-stepper/default.css +2 -2
  97. package/dist/css/elements/input-stepper/pill.css +2 -2
  98. package/dist/css/elements/input-stepper/rounded.css +2 -2
  99. package/dist/css/elements/input.css +50 -17
  100. package/dist/css/elements/prose-editor.css +26 -11
  101. package/dist/css/elements/radio-group.css +2 -2
  102. package/dist/css/elements/radio.css +2 -2
  103. package/dist/css/elements/segmented-control.css +2 -2
  104. package/dist/css/elements/select.css +26 -5
  105. package/dist/css/elements/story.css +2 -2
  106. package/dist/css/elements/switch.css +2 -2
  107. package/dist/css/elements/table.css +186 -0
  108. package/dist/css/elements/tabs/enclosed.css +4 -4
  109. package/dist/css/elements/tabs/line.css +4 -4
  110. package/dist/css/elements/textarea.css +23 -9
  111. package/dist/css/preset.css +21 -2
  112. package/dist/css/tokens/aliases.css +6 -2
  113. package/dist/css/tokens/forms.css +4 -0
  114. package/dist/css/tokens.css +10 -2
  115. package/dist/custom-elements.json +295 -169
  116. package/dist/elements/alert-dialog/alert-dialog.d.ts +3 -2
  117. package/dist/elements/alert-dialog/alert-dialog.d.ts.map +1 -1
  118. package/dist/elements/alert-dialog/alert-dialog.js +3 -2
  119. package/dist/elements/avatar/avatar.css +2 -2
  120. package/dist/elements/carousel/carousel.css +18 -0
  121. package/dist/elements/combobox/combobox.css +9 -0
  122. package/dist/elements/combobox/combobox.d.ts.map +1 -1
  123. package/dist/elements/combobox/combobox.js +1 -0
  124. package/dist/elements/dialog/dialog.css +12 -0
  125. package/dist/elements/dialog/dialog.d.ts +2 -1
  126. package/dist/elements/dialog/dialog.d.ts.map +1 -1
  127. package/dist/elements/dialog/dialog.js +2 -1
  128. package/dist/elements/drawer/drawer.css +11 -1
  129. package/dist/elements/drawer/drawer.d.ts +7 -7
  130. package/dist/elements/drawer/drawer.js +7 -7
  131. package/dist/elements/dropdown-item/dropdown-item.css +5 -4
  132. package/dist/elements/input-otp/input-otp.d.ts +2 -2
  133. package/dist/elements/input-otp/input-otp.js +2 -2
  134. package/dist/elements/prose-editor/prose-editor.css +5 -3
  135. package/dist/elements/rating/rating.css +9 -10
  136. package/dist/elements/select/select.css +10 -9
  137. package/dist/elements/select/select.d.ts.map +1 -1
  138. package/dist/elements/select/select.js +1 -0
  139. package/dist/elements/slider/slider.css +5 -1
  140. package/dist/elements/stories-viewer/stories-viewer.css +10 -2
  141. package/dist/elements/table/table.meta.d.ts +55 -0
  142. package/dist/elements/table/table.meta.d.ts.map +1 -0
  143. package/dist/elements/table/table.meta.js +65 -0
  144. package/dist/elements/tag/tag.css +4 -4
  145. package/dist/elements/tree/tree.css +3 -3
  146. package/dist/elements/tree-item/tree-item.css +5 -3
  147. package/dist/metadata/alert-dialog.json +90 -85
  148. package/dist/metadata/alert.json +22 -22
  149. package/dist/metadata/avatar.json +26 -26
  150. package/dist/metadata/badge.json +13 -13
  151. package/dist/metadata/breadcrumb.json +9 -9
  152. package/dist/metadata/button.json +40 -40
  153. package/dist/metadata/carousel.json +133 -133
  154. package/dist/metadata/checkbox.json +13 -13
  155. package/dist/metadata/close-button.json +15 -15
  156. package/dist/metadata/color-scheme-icon.json +13 -13
  157. package/dist/metadata/combobox.json +77 -94
  158. package/dist/metadata/dialog.json +49 -44
  159. package/dist/metadata/disclosure.json +17 -17
  160. package/dist/metadata/divider.json +12 -12
  161. package/dist/metadata/drawer.json +61 -61
  162. package/dist/metadata/dropdown-item.json +50 -50
  163. package/dist/metadata/dropdown.json +32 -32
  164. package/dist/metadata/form-field.json +15 -15
  165. package/dist/metadata/icon.json +8 -8
  166. package/dist/metadata/index.json +1761 -1765
  167. package/dist/metadata/input-group.json +5 -5
  168. package/dist/metadata/input-otp.json +17 -17
  169. package/dist/metadata/input-stepper.json +24 -24
  170. package/dist/metadata/input.json +31 -31
  171. package/dist/metadata/popover.json +49 -49
  172. package/dist/metadata/progress.json +15 -15
  173. package/dist/metadata/prose-editor.json +110 -116
  174. package/dist/metadata/radio.json +15 -15
  175. package/dist/metadata/rating.json +25 -47
  176. package/dist/metadata/segmented-control.json +24 -46
  177. package/dist/metadata/select.json +81 -98
  178. package/dist/metadata/skeleton.json +12 -12
  179. package/dist/metadata/slider.json +60 -78
  180. package/dist/metadata/spinner.json +5 -5
  181. package/dist/metadata/sticky-bar.json +13 -13
  182. package/dist/metadata/stories-viewer.json +105 -105
  183. package/dist/metadata/stories.json +17 -17
  184. package/dist/metadata/story.json +41 -41
  185. package/dist/metadata/switch.json +9 -9
  186. package/dist/metadata/table.json +88 -0
  187. package/dist/metadata/tabs.json +26 -26
  188. package/dist/metadata/tag.json +50 -50
  189. package/dist/metadata/textarea.json +28 -28
  190. package/dist/metadata/toast.json +16 -16
  191. package/dist/metadata/tooltip.json +49 -49
  192. package/dist/metadata/tree-item.json +73 -73
  193. package/dist/metadata/tree.json +39 -39
  194. package/dist/shared/controllers/listbox-nav.d.ts +7 -0
  195. package/dist/shared/controllers/listbox-nav.d.ts.map +1 -1
  196. package/dist/shared/controllers/listbox-nav.js +12 -0
  197. package/dist/shared/styles/button-core.css +2 -2
  198. package/dist/shared/styles/checkbox-appearance.css +2 -2
  199. package/dist/shared/styles/picker-core.css +31 -7
  200. package/dist/templates/elements/alert-dialog.md +19 -18
  201. package/dist/templates/elements/alert.md +4 -4
  202. package/dist/templates/elements/avatar.md +9 -9
  203. package/dist/templates/elements/badge.md +4 -4
  204. package/dist/templates/elements/breadcrumb.md +4 -4
  205. package/dist/templates/elements/button.md +8 -8
  206. package/dist/templates/elements/carousel.md +32 -32
  207. package/dist/templates/elements/checkbox.md +4 -4
  208. package/dist/templates/elements/close-button.md +2 -2
  209. package/dist/templates/elements/color-scheme-icon.md +13 -13
  210. package/dist/templates/elements/combobox.md +19 -19
  211. package/dist/templates/elements/dialog.md +11 -10
  212. package/dist/templates/elements/disclosure.md +3 -3
  213. package/dist/templates/elements/divider.md +2 -2
  214. package/dist/templates/elements/drawer.md +15 -15
  215. package/dist/templates/elements/dropdown.md +15 -15
  216. package/dist/templates/elements/form-field.md +3 -3
  217. package/dist/templates/elements/icon.md +1 -1
  218. package/dist/templates/elements/input-otp.md +5 -5
  219. package/dist/templates/elements/input-stepper.md +4 -4
  220. package/dist/templates/elements/input.md +15 -8
  221. package/dist/templates/elements/popover.md +8 -8
  222. package/dist/templates/elements/progress.md +3 -3
  223. package/dist/templates/elements/prose-editor.md +38 -39
  224. package/dist/templates/elements/radio.md +6 -6
  225. package/dist/templates/elements/rating.md +5 -13
  226. package/dist/templates/elements/segmented-control.md +4 -4
  227. package/dist/templates/elements/select.md +23 -23
  228. package/dist/templates/elements/skeleton.md +2 -2
  229. package/dist/templates/elements/slider.md +13 -13
  230. package/dist/templates/elements/spinner.md +1 -1
  231. package/dist/templates/elements/sticky-bar.md +2 -2
  232. package/dist/templates/elements/stories-viewer.md +29 -29
  233. package/dist/templates/elements/stories.md +4 -4
  234. package/dist/templates/elements/story.md +11 -11
  235. package/dist/templates/elements/switch.md +5 -5
  236. package/dist/templates/elements/table.md +210 -0
  237. package/dist/templates/elements/tabs.md +4 -4
  238. package/dist/templates/elements/tag.md +14 -14
  239. package/dist/templates/elements/textarea.md +8 -8
  240. package/dist/templates/elements/toast.md +4 -4
  241. package/dist/templates/elements/tooltip.md +9 -9
  242. package/dist/templates/elements/tree-item.md +18 -18
  243. package/dist/templates/elements/tree.md +13 -13
  244. package/dist/templates/foundations/focus.md +303 -0
  245. package/elements.json +9 -0
  246. package/package.json +1 -1
  247. package/postcss-plugin-prefix.js +2 -2
  248. package/templates/SKILL.md.tpl +1 -0
  249. package/templates/choosing-elements.md.tpl +1 -0
@@ -15,14 +15,6 @@
15
15
  "js": "luxen-ui/drawer"
16
16
  },
17
17
  "properties": [
18
- {
19
- "name": "placement",
20
- "attribute": "placement",
21
- "type": "'start' | 'end' | 'top' | 'bottom' | undefined",
22
- "default": null,
23
- "reflects": true,
24
- "description": "Edge the drawer slides in from. Defaults to the start (inline-start) edge."
25
- },
26
18
  {
27
19
  "name": "inset",
28
20
  "attribute": "inset",
@@ -32,12 +24,12 @@
32
24
  "description": "Detach the drawer from the viewport edges, floating it with a uniform gap and rounded corners."
33
25
  },
34
26
  {
35
- "name": "title",
36
- "attribute": "title",
37
- "type": "string",
38
- "default": "''",
39
- "reflects": false,
40
- "description": "Dialog title rendered in the header and used as the dialog's accessible name."
27
+ "name": "lightDismiss",
28
+ "attribute": "light-dismiss",
29
+ "type": "boolean",
30
+ "default": "false",
31
+ "reflects": true,
32
+ "description": "Close when the backdrop is clicked."
41
33
  },
42
34
  {
43
35
  "name": "open",
@@ -48,12 +40,20 @@
48
40
  "description": "Whether the dialog is open."
49
41
  },
50
42
  {
51
- "name": "lightDismiss",
52
- "attribute": "light-dismiss",
53
- "type": "boolean",
54
- "default": "false",
43
+ "name": "placement",
44
+ "attribute": "placement",
45
+ "type": "'start' | 'end' | 'top' | 'bottom' | undefined",
46
+ "default": null,
55
47
  "reflects": true,
56
- "description": "Close when the backdrop is clicked."
48
+ "description": "Edge the drawer slides in from. Defaults to the start (inline-start) edge."
49
+ },
50
+ {
51
+ "name": "title",
52
+ "attribute": "title",
53
+ "type": "string",
54
+ "default": "''",
55
+ "reflects": false,
56
+ "description": "Dialog title rendered in the header and used as the dialog's accessible name."
57
57
  },
58
58
  {
59
59
  "name": "withoutHeader",
@@ -93,10 +93,6 @@
93
93
  "name": "",
94
94
  "description": "Body content."
95
95
  },
96
- {
97
- "name": "title",
98
- "description": "Custom heading element. Overrides the default `<h2>` rendered from the `title` property. Also provides the dialog's accessible name."
99
- },
100
96
  {
101
97
  "name": "close",
102
98
  "description": "Close button (typically `<button class=\"l-close\">`)."
@@ -104,14 +100,26 @@
104
100
  {
105
101
  "name": "footer",
106
102
  "description": "Footer actions."
103
+ },
104
+ {
105
+ "name": "title",
106
+ "description": "Custom heading element. Overrides the default `<h2>` rendered from the `title` property. Also provides the dialog's accessible name."
107
107
  }
108
108
  ],
109
109
  "cssClasses": [],
110
110
  "cssParts": [
111
+ {
112
+ "name": "body",
113
+ "description": "The body wrapper around the default slot."
114
+ },
111
115
  {
112
116
  "name": "dialog",
113
117
  "description": "The native `<dialog>` element."
114
118
  },
119
+ {
120
+ "name": "footer",
121
+ "description": "The footer wrapper around the footer slot."
122
+ },
115
123
  {
116
124
  "name": "header",
117
125
  "description": "The header wrapper containing the title and close slot."
@@ -119,71 +127,63 @@
119
127
  {
120
128
  "name": "title",
121
129
  "description": "The drawer title heading."
122
- },
123
- {
124
- "name": "body",
125
- "description": "The body wrapper around the default slot."
126
- },
127
- {
128
- "name": "footer",
129
- "description": "The footer wrapper around the footer slot."
130
130
  }
131
131
  ],
132
132
  "cssProperties": [
133
133
  {
134
- "name": "--size",
135
- "default": "320px",
136
- "description": "Drawer size on the axis perpendicular to its edge (width for `start`/`end`, height for `top`/`bottom`)."
134
+ "name": "--backdrop",
135
+ "default": "var(--l-backdrop)",
136
+ "description": "Backdrop color."
137
+ },
138
+ {
139
+ "name": "--backdrop-blur",
140
+ "default": "0",
141
+ "description": "Backdrop blur amount (any CSS length). `0` means no blur; set e.g. `4px` for a subtle frost."
137
142
  },
138
143
  {
139
144
  "name": "--border-radius",
140
- "default": "6px",
145
+ "default": "0.375rem",
141
146
  "description": "Drawer border radius on the inner edges (all corners when `inset`)."
142
147
  },
148
+ {
149
+ "name": "--easing",
150
+ "default": "cubic-bezier(0.32, 0.72, 0, 1)",
151
+ "description": "Timing function of the open and close transitions, backdrop included."
152
+ },
153
+ {
154
+ "name": "--hide-duration",
155
+ "default": "200ms",
156
+ "description": "Close transition duration."
157
+ },
143
158
  {
144
159
  "name": "--inset-gap",
145
160
  "default": "1rem",
146
161
  "description": "Gap between the drawer and the viewport edges when `inset` is set."
147
162
  },
163
+ {
164
+ "name": "--padding",
165
+ "default": "1.5rem",
166
+ "description": "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)."
167
+ },
148
168
  {
149
169
  "name": "--shadow",
150
- "default": null,
151
- "description": "Drop shadow applied to the floating panel when `inset` is set. Set to `none` to remove it."
170
+ "default": "var(--l-shadow-lg)",
171
+ "description": "Drop shadow applied to the floating panel when `inset` is set (an edge drawer casts none). Set to `none` to remove it."
152
172
  },
153
173
  {
154
174
  "name": "--show-duration",
155
- "default": "200ms",
175
+ "default": "300ms",
156
176
  "description": "Open transition duration."
157
177
  },
158
178
  {
159
- "name": "--hide-duration",
160
- "default": "200ms",
161
- "description": "Close transition duration."
162
- },
163
- {
164
- "name": "--easing",
165
- "default": "cubic-bezier(0.32, 0.72, 0, 1)",
166
- "description": "Timing function of the open and close transitions, backdrop included."
167
- },
168
- {
169
- "name": "--backdrop",
170
- "default": null,
171
- "description": "Backdrop color."
179
+ "name": "--size",
180
+ "default": "320px",
181
+ "description": "Drawer size on the axis perpendicular to its edge (width for `start`/`end`, height for `top`/`bottom`)."
172
182
  },
173
183
  {
174
184
  "name": "--width",
175
185
  "default": "31rem",
176
186
  "description": "Dialog width."
177
- },
178
- {
179
- "name": "--padding",
180
- "default": "1.5rem",
181
- "description": "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)."
182
- },
183
- {
184
- "name": "--backdrop-blur",
185
- "default": "0",
186
- "description": "Backdrop blur amount (any CSS length). `0` means no blur; set e.g. `4px` for a subtle frost."
187
187
  }
188
188
  ],
189
189
  "commands": [
@@ -16,44 +16,36 @@
16
16
  },
17
17
  "properties": [
18
18
  {
19
- "name": "value",
20
- "attribute": "value",
21
- "type": "string",
22
- "default": "''",
23
- "reflects": false,
24
- "description": "The value associated with this item."
19
+ "name": "checkPlacement",
20
+ "attribute": "check-placement",
21
+ "type": "'start' | 'end'",
22
+ "default": "'start'",
23
+ "reflects": true,
24
+ "description": "Which side of a `type=\"checkbox\"` item carries the check mark. `start` (the\ndefault) puts it in the leading column, where it takes the place of any\n`prefix`. `end` moves it to the trailing edge, freeing that column so the\nitem can show its own icon alongside the state."
25
25
  },
26
26
  {
27
- "name": "disabled",
28
- "attribute": "disabled",
27
+ "name": "checked",
28
+ "attribute": "checked",
29
29
  "type": "boolean",
30
30
  "default": "false",
31
31
  "reflects": true,
32
- "description": "Disables the item."
33
- },
34
- {
35
- "name": "type",
36
- "attribute": "type",
37
- "type": "'normal' | 'checkbox'",
38
- "default": "'normal'",
39
- "reflects": false,
40
- "description": "The type of item: `normal` or `checkbox`."
32
+ "description": "Whether the checkbox item is checked."
41
33
  },
42
34
  {
43
- "name": "variant",
44
- "attribute": "variant",
45
- "type": "'destructive' | undefined",
46
- "default": "undefined",
35
+ "name": "disabled",
36
+ "attribute": "disabled",
37
+ "type": "boolean",
38
+ "default": "false",
47
39
  "reflects": true,
48
- "description": "Visual variant. `destructive` marks a delete-style action in red."
40
+ "description": "Disables the item."
49
41
  },
50
42
  {
51
- "name": "checked",
52
- "attribute": "checked",
43
+ "name": "hasSubmenu",
44
+ "attribute": null,
53
45
  "type": "boolean",
54
- "default": "false",
55
- "reflects": true,
56
- "description": "Whether the checkbox item is checked."
46
+ "default": null,
47
+ "reflects": false,
48
+ "description": "Whether this item has nested `slot=\"submenu\"` items."
57
49
  },
58
50
  {
59
51
  "name": "submenuOpen",
@@ -64,20 +56,28 @@
64
56
  "description": "Whether this item's submenu is open. Managed by the parent `l-dropdown`."
65
57
  },
66
58
  {
67
- "name": "checkPlacement",
68
- "attribute": "check-placement",
69
- "type": "'start' | 'end'",
70
- "default": "'start'",
71
- "reflects": true,
72
- "description": "Which side of a `type=\"checkbox\"` item carries the check mark. `start` (the\ndefault) puts it in the leading column, where it takes the place of any\n`prefix`. `end` moves it to the trailing edge, freeing that column so the\nitem can show its own icon alongside the state."
59
+ "name": "type",
60
+ "attribute": "type",
61
+ "type": "'normal' | 'checkbox'",
62
+ "default": "'normal'",
63
+ "reflects": false,
64
+ "description": "The type of item: `normal` or `checkbox`."
73
65
  },
74
66
  {
75
- "name": "hasSubmenu",
76
- "attribute": null,
77
- "type": "boolean",
78
- "default": null,
67
+ "name": "value",
68
+ "attribute": "value",
69
+ "type": "string",
70
+ "default": "''",
79
71
  "reflects": false,
80
- "description": "Whether this item has nested `slot=\"submenu\"` items."
72
+ "description": "The value associated with this item."
73
+ },
74
+ {
75
+ "name": "variant",
76
+ "attribute": "variant",
77
+ "type": "'destructive' | undefined",
78
+ "default": "undefined",
79
+ "reflects": true,
80
+ "description": "Visual variant. `destructive` marks a delete-style action in red."
81
81
  }
82
82
  ],
83
83
  "attributes": [
@@ -91,10 +91,10 @@
91
91
  "events": [],
92
92
  "methods": [
93
93
  {
94
- "name": "getTextLabel",
94
+ "name": "closeSubmenu",
95
95
  "params": [],
96
- "returns": "string",
97
- "description": "Returns the text label of this item (excludes nested submenu items)."
96
+ "returns": null,
97
+ "description": "Closes this item's submenu panel, including any open nested submenus."
98
98
  },
99
99
  {
100
100
  "name": "getSubmenuItems",
@@ -103,16 +103,16 @@
103
103
  "description": "Returns the enabled `l-dropdown-item` elements slotted into this item's submenu."
104
104
  },
105
105
  {
106
- "name": "openSubmenu",
106
+ "name": "getTextLabel",
107
107
  "params": [],
108
- "returns": null,
109
- "description": "Opens this item's submenu panel. No-op without submenu items."
108
+ "returns": "string",
109
+ "description": "Returns the text label of this item (excludes nested submenu items)."
110
110
  },
111
111
  {
112
- "name": "closeSubmenu",
112
+ "name": "openSubmenu",
113
113
  "params": [],
114
114
  "returns": null,
115
- "description": "Closes this item's submenu panel, including any open nested submenus."
115
+ "description": "Opens this item's submenu panel. No-op without submenu items."
116
116
  }
117
117
  ],
118
118
  "slots": [
@@ -124,13 +124,13 @@
124
124
  "name": "prefix",
125
125
  "description": "Leading content (e.g. icon). A `type=\"checkbox\"` item ignores it unless `check-placement=\"end\"` frees the leading column."
126
126
  },
127
- {
128
- "name": "suffix",
129
- "description": "Trailing content."
130
- },
131
127
  {
132
128
  "name": "submenu",
133
129
  "description": "Nested `l-dropdown-item` elements rendered in a submenu panel anchored to this item. Drop an `<hr>` between them for a separator."
130
+ },
131
+ {
132
+ "name": "suffix",
133
+ "description": "Trailing content."
134
134
  }
135
135
  ],
136
136
  "cssClasses": [],
@@ -16,20 +16,12 @@
16
16
  },
17
17
  "properties": [
18
18
  {
19
- "name": "open",
20
- "attribute": "open",
19
+ "name": "disabled",
20
+ "attribute": "disabled",
21
21
  "type": "boolean",
22
22
  "default": "false",
23
23
  "reflects": true,
24
- "description": "Whether the dropdown is open."
25
- },
26
- {
27
- "name": "placement",
28
- "attribute": "placement",
29
- "type": "Placement",
30
- "default": "'bottom-start'",
31
- "reflects": false,
32
- "description": "Preferred placement of the panel."
24
+ "description": "Disables the dropdown trigger."
33
25
  },
34
26
  {
35
27
  "name": "distance",
@@ -39,14 +31,6 @@
39
31
  "reflects": false,
40
32
  "description": "Distance in pixels from the trigger."
41
33
  },
42
- {
43
- "name": "disabled",
44
- "attribute": "disabled",
45
- "type": "boolean",
46
- "default": "false",
47
- "reflects": true,
48
- "description": "Disables the dropdown trigger."
49
- },
50
34
  {
51
35
  "name": "minWidth",
52
36
  "attribute": "min-width",
@@ -54,6 +38,22 @@
54
38
  "default": null,
55
39
  "reflects": false,
56
40
  "description": "Floor the panel's width at the trigger's width. Set to `trigger` so the\npanel is never narrower than the trigger; it still grows with its content.\nUseful for select-like triggers (a date-range or filter button) where the\npanel should line up with the control. Re-applies if the trigger resizes\nwhile open."
41
+ },
42
+ {
43
+ "name": "open",
44
+ "attribute": "open",
45
+ "type": "boolean",
46
+ "default": "false",
47
+ "reflects": true,
48
+ "description": "Whether the dropdown is open."
49
+ },
50
+ {
51
+ "name": "placement",
52
+ "attribute": "placement",
53
+ "type": "Placement",
54
+ "default": "'bottom-start'",
55
+ "reflects": false,
56
+ "description": "Preferred placement of the panel."
57
57
  }
58
58
  ],
59
59
  "attributes": [],
@@ -105,14 +105,6 @@
105
105
  }
106
106
  ],
107
107
  "slots": [
108
- {
109
- "name": "trigger",
110
- "description": "The element that triggers the dropdown."
111
- },
112
- {
113
- "name": "header",
114
- "description": "Optional content rendered above the menu items (e.g. a user profile row). Use an `<l-divider>` (or `<hr>`) after it to separate from items."
115
- },
116
108
  {
117
109
  "name": "",
118
110
  "description": "Menu content (`l-dropdown-item` elements). Drop an `<l-divider>` (or `<hr>`) between items to render a section separator, or an `<l-dropdown-label>` to caption a group of items. Nest items with `slot=\"submenu\"` inside an item to create a submenu."
@@ -120,6 +112,14 @@
120
112
  {
121
113
  "name": "footer",
122
114
  "description": "Optional content rendered below the menu items (e.g. a version label or shortcut row). Use an `<l-divider>` (or `<hr>`) before it to separate from items."
115
+ },
116
+ {
117
+ "name": "header",
118
+ "description": "Optional content rendered above the menu items (e.g. a user profile row). Use an `<l-divider>` (or `<hr>`) after it to separate from items."
119
+ },
120
+ {
121
+ "name": "trigger",
122
+ "description": "The element that triggers the dropdown."
123
123
  }
124
124
  ],
125
125
  "cssClasses": [],
@@ -140,6 +140,11 @@
140
140
  "default": "var(--l-popover-border-radius)",
141
141
  "description": "Panel border radius. (6px)."
142
142
  },
143
+ {
144
+ "name": "--hide-duration",
145
+ "default": "150ms",
146
+ "description": "Hide animation duration."
147
+ },
143
148
  {
144
149
  "name": "--padding",
145
150
  "default": "var(--l-popover-padding)",
@@ -154,11 +159,6 @@
154
159
  "name": "--show-duration",
155
160
  "default": "150ms",
156
161
  "description": "Show animation duration."
157
- },
158
- {
159
- "name": "--hide-duration",
160
- "default": "150ms",
161
- "description": "Hide animation duration."
162
162
  }
163
163
  ],
164
164
  "commands": [],
@@ -15,6 +15,14 @@
15
15
  "js": "luxen-ui/form-field"
16
16
  },
17
17
  "properties": [
18
+ {
19
+ "name": "invalid",
20
+ "attribute": "invalid",
21
+ "type": "boolean",
22
+ "default": "false",
23
+ "reflects": true,
24
+ "description": "Reflected once the control is invalid after interaction (or set to force the invalid state)."
25
+ },
18
26
  {
19
27
  "name": "layout",
20
28
  "attribute": "layout",
@@ -23,14 +31,6 @@
23
31
  "reflects": true,
24
32
  "description": "Layout, derived from the control type (`inline` for checkbox/radio/switch, otherwise `stacked`). Set one to force it."
25
33
  },
26
- {
27
- "name": "required",
28
- "attribute": "required",
29
- "type": "boolean",
30
- "default": "false",
31
- "reflects": true,
32
- "description": "Reflected when the control is required. Drives the label marker."
33
- },
34
34
  {
35
35
  "name": "optional",
36
36
  "attribute": "optional",
@@ -40,12 +40,12 @@
40
40
  "description": "Reflected when the control is not required."
41
41
  },
42
42
  {
43
- "name": "invalid",
44
- "attribute": "invalid",
43
+ "name": "required",
44
+ "attribute": "required",
45
45
  "type": "boolean",
46
46
  "default": "false",
47
47
  "reflects": true,
48
- "description": "Reflected once the control is invalid after interaction (or set to force the invalid state)."
48
+ "description": "Reflected when the control is required. Drives the label marker."
49
49
  },
50
50
  {
51
51
  "name": "unstyled",
@@ -66,13 +66,13 @@
66
66
  }
67
67
  ],
68
68
  "cssClasses": [
69
- {
70
- "name": ".l-hint",
71
- "description": "Helper text element. Always visible; linked via `aria-describedby`."
72
- },
73
69
  {
74
70
  "name": ".l-error",
75
71
  "description": "Error message element. Hidden until invalid, then revealed with `role=\"alert\"` and linked via `aria-describedby`."
72
+ },
73
+ {
74
+ "name": ".l-hint",
75
+ "description": "Helper text element. Always visible; linked via `aria-describedby`."
76
76
  }
77
77
  ],
78
78
  "cssParts": [],
@@ -15,14 +15,6 @@
15
15
  "js": "luxen-ui/icon"
16
16
  },
17
17
  "properties": [
18
- {
19
- "name": "name",
20
- "attribute": "name",
21
- "type": "string",
22
- "default": "''",
23
- "reflects": false,
24
- "description": "The icon name in Iconify format (e.g. `mdi:home`, `lucide:check`)."
25
- },
26
18
  {
27
19
  "name": "label",
28
20
  "attribute": "label",
@@ -30,6 +22,14 @@
30
22
  "default": null,
31
23
  "reflects": false,
32
24
  "description": "Accessible label. When set, the icon becomes meaningful (`role=\"img\"` + `aria-label`). When absent, the icon is decorative."
25
+ },
26
+ {
27
+ "name": "name",
28
+ "attribute": "name",
29
+ "type": "string",
30
+ "default": "''",
31
+ "reflects": false,
32
+ "description": "The icon name in Iconify format (e.g. `mdi:home`, `lucide:check`)."
33
33
  }
34
34
  ],
35
35
  "attributes": [],