luxen-ui 0.25.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 +402 -276
  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 +284 -67
  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 +1 -1
  67. package/cdn/styles/elements/input-otp.css +19 -3
  68. package/cdn/styles/elements/input-stepper/default.css +1 -1
  69. package/cdn/styles/elements/input-stepper/pill.css +1 -1
  70. package/cdn/styles/elements/input-stepper/rounded.css +1 -1
  71. package/cdn/styles/elements/input.css +11 -11
  72. package/cdn/styles/elements/prose-editor.css +6 -6
  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 +1 -1
  76. package/cdn/styles/elements/select.css +5 -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 +3 -3
  81. package/cdn/styles/elements/tabs/line.css +3 -3
  82. package/cdn/styles/elements/textarea.css +5 -5
  83. package/cdn/styles/preset.css +19 -6
  84. package/cdn/styles/tokens/aliases.css +5 -3
  85. package/cdn/styles/tokens/forms.css +3 -3
  86. package/cdn/styles/tokens.css +8 -6
  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 +1 -1
  95. package/dist/css/elements/input-otp.css +19 -3
  96. package/dist/css/elements/input-stepper/default.css +1 -1
  97. package/dist/css/elements/input-stepper/pill.css +1 -1
  98. package/dist/css/elements/input-stepper/rounded.css +1 -1
  99. package/dist/css/elements/input.css +11 -11
  100. package/dist/css/elements/prose-editor.css +6 -6
  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 +1 -1
  104. package/dist/css/elements/select.css +5 -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 +3 -3
  109. package/dist/css/elements/tabs/line.css +3 -3
  110. package/dist/css/elements/textarea.css +5 -5
  111. package/dist/css/preset.css +19 -6
  112. package/dist/css/tokens/aliases.css +5 -3
  113. package/dist/css/tokens/forms.css +3 -3
  114. package/dist/css/tokens.css +8 -6
  115. package/dist/custom-elements.json +402 -276
  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 +1 -1
  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 -5
  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 +3 -3
  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 +13 -10
  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
@@ -172,6 +172,181 @@
172
172
  }
173
173
  ]
174
174
  },
175
+ {
176
+ "kind": "javascript-module",
177
+ "path": "src/html/elements/avatar/avatar.ts",
178
+ "declarations": [
179
+ {
180
+ "kind": "class",
181
+ "description": "",
182
+ "name": "Avatar",
183
+ "cssProperties": [
184
+ {
185
+ "description": "Box size (any length). Set it inline (e.g. `style=\"--size: 20px\"`) for an arbitrary size beyond the `size` token scale; the font then follows proportionally. The `size` attribute sets it to the matching token.",
186
+ "name": "--size",
187
+ "default": "40px"
188
+ },
189
+ {
190
+ "description": "Background fill color for initials and the default icon.",
191
+ "name": "--color"
192
+ },
193
+ {
194
+ "description": "Initials/icon color over `--color`. Defaults to an auto-derived readable color; set it to enforce a specific brand color (overrides the automatic choice).",
195
+ "name": "--text-color"
196
+ },
197
+ {
198
+ "description": "Set to `circle` for a fully circular avatar (default is a rounded square).",
199
+ "name": "--appearance"
200
+ }
201
+ ],
202
+ "cssParts": [
203
+ {
204
+ "description": "The avatar container that paints `--color`; style it (e.g. `color`) to override the auto-derived text color.",
205
+ "name": "base"
206
+ }
207
+ ],
208
+ "members": [
209
+ {
210
+ "kind": "field",
211
+ "name": "src",
212
+ "type": {
213
+ "text": "string"
214
+ },
215
+ "default": "''",
216
+ "description": "Image URL. Falls back to initials (then the default icon) if it fails to load.",
217
+ "attribute": "src"
218
+ },
219
+ {
220
+ "kind": "field",
221
+ "name": "name",
222
+ "type": {
223
+ "text": "string"
224
+ },
225
+ "default": "''",
226
+ "description": "Name used as the accessible label and to derive the initials fallback.",
227
+ "attribute": "name"
228
+ },
229
+ {
230
+ "kind": "field",
231
+ "name": "size",
232
+ "type": {
233
+ "text": "string"
234
+ },
235
+ "default": "'md'",
236
+ "description": "Avatar size: `xs`, `sm`, `md` (default), `lg`, or `xl`.",
237
+ "attribute": "size",
238
+ "reflects": true
239
+ },
240
+ {
241
+ "kind": "field",
242
+ "name": "badge",
243
+ "type": {
244
+ "text": "number"
245
+ },
246
+ "default": "0",
247
+ "description": "Count shown in the corner badge. `0` hides the badge.",
248
+ "attribute": "badge"
249
+ },
250
+ {
251
+ "kind": "field",
252
+ "name": "interactive",
253
+ "type": {
254
+ "text": "boolean"
255
+ },
256
+ "default": "false",
257
+ "description": "Render as a `<button>` with focus ring and hover states.",
258
+ "attribute": "interactive",
259
+ "reflects": true
260
+ }
261
+ ],
262
+ "attributes": [
263
+ {
264
+ "name": "src",
265
+ "type": {
266
+ "text": "string"
267
+ },
268
+ "default": "''",
269
+ "description": "Image URL. Falls back to initials (then the default icon) if it fails to load.",
270
+ "fieldName": "src"
271
+ },
272
+ {
273
+ "name": "name",
274
+ "type": {
275
+ "text": "string"
276
+ },
277
+ "default": "''",
278
+ "description": "Name used as the accessible label and to derive the initials fallback.",
279
+ "fieldName": "name"
280
+ },
281
+ {
282
+ "name": "size",
283
+ "type": {
284
+ "text": "string"
285
+ },
286
+ "default": "'md'",
287
+ "description": "Avatar size: `xs`, `sm`, `md` (default), `lg`, or `xl`.",
288
+ "fieldName": "size"
289
+ },
290
+ {
291
+ "name": "badge",
292
+ "type": {
293
+ "text": "number"
294
+ },
295
+ "default": "0",
296
+ "description": "Count shown in the corner badge. `0` hides the badge.",
297
+ "fieldName": "badge"
298
+ },
299
+ {
300
+ "name": "interactive",
301
+ "type": {
302
+ "text": "boolean"
303
+ },
304
+ "default": "false",
305
+ "description": "Render as a `<button>` with focus ring and hover states.",
306
+ "fieldName": "interactive"
307
+ }
308
+ ],
309
+ "superclass": {
310
+ "name": "LuxenElement",
311
+ "module": "/src/html/shared/luxen-element.js"
312
+ },
313
+ "tagName": "l-avatar",
314
+ "customElement": true,
315
+ "summary": "An avatar component for displaying user images, initials, or a default icon.",
316
+ "_cssClasses": [
317
+ {
318
+ "name": ".l-avatar-group",
319
+ "description": "Flex wrapper that overlaps a row of stacked avatars."
320
+ }
321
+ ]
322
+ }
323
+ ],
324
+ "exports": [
325
+ {
326
+ "kind": "js",
327
+ "name": "Avatar",
328
+ "declaration": {
329
+ "name": "Avatar",
330
+ "module": "src/html/elements/avatar/avatar.ts"
331
+ }
332
+ }
333
+ ]
334
+ },
335
+ {
336
+ "kind": "javascript-module",
337
+ "path": "src/html/elements/avatar/index.ts",
338
+ "declarations": [],
339
+ "exports": [
340
+ {
341
+ "kind": "js",
342
+ "name": "*",
343
+ "declaration": {
344
+ "name": "*",
345
+ "module": "src/html/elements/avatar/avatar.js"
346
+ }
347
+ }
348
+ ]
349
+ },
175
350
  {
176
351
  "kind": "javascript-module",
177
352
  "path": "src/html/elements/alert-dialog/alert-dialog.ts",
@@ -256,6 +431,7 @@
256
431
  {
257
432
  "description": "Backdrop color.",
258
433
  "name": "--backdrop",
434
+ "default": "var(--l-backdrop-strong)",
259
435
  "inheritedFrom": {
260
436
  "name": "Dialog",
261
437
  "module": "src/html/elements/dialog/dialog.ts"
@@ -264,7 +440,16 @@
264
440
  {
265
441
  "description": "Backdrop blur amount (any CSS length).",
266
442
  "name": "--backdrop-blur",
267
- "default": "0",
443
+ "default": "2px",
444
+ "inheritedFrom": {
445
+ "name": "Dialog",
446
+ "module": "src/html/elements/dialog/dialog.ts"
447
+ }
448
+ },
449
+ {
450
+ "description": "Drop shadow of the dialog panel (any `box-shadow` value). Raise it when the backdrop is light, where the panel edge would otherwise fade into the page.",
451
+ "name": "--shadow",
452
+ "default": "none",
268
453
  "inheritedFrom": {
269
454
  "name": "Dialog",
270
455
  "module": "src/html/elements/dialog/dialog.ts"
@@ -656,182 +841,7 @@
656
841
  "name": "*",
657
842
  "declaration": {
658
843
  "name": "*",
659
- "module": "src/html/elements/alert-dialog/alert-dialog.js"
660
- }
661
- }
662
- ]
663
- },
664
- {
665
- "kind": "javascript-module",
666
- "path": "src/html/elements/avatar/avatar.ts",
667
- "declarations": [
668
- {
669
- "kind": "class",
670
- "description": "",
671
- "name": "Avatar",
672
- "cssProperties": [
673
- {
674
- "description": "Box size (any length). Set it inline (e.g. `style=\"--size: 20px\"`) for an arbitrary size beyond the `size` token scale; the font then follows proportionally. The `size` attribute sets it to the matching token.",
675
- "name": "--size",
676
- "default": "40px"
677
- },
678
- {
679
- "description": "Background fill color for initials and the default icon.",
680
- "name": "--color"
681
- },
682
- {
683
- "description": "Initials/icon color over `--color`. Defaults to an auto-derived readable color; set it to enforce a specific brand color (overrides the automatic choice).",
684
- "name": "--text-color"
685
- },
686
- {
687
- "description": "Set to `circle` for a fully circular avatar (default is a rounded square).",
688
- "name": "--appearance"
689
- }
690
- ],
691
- "cssParts": [
692
- {
693
- "description": "The avatar container that paints `--color`; style it (e.g. `color`) to override the auto-derived text color.",
694
- "name": "base"
695
- }
696
- ],
697
- "members": [
698
- {
699
- "kind": "field",
700
- "name": "src",
701
- "type": {
702
- "text": "string"
703
- },
704
- "default": "''",
705
- "description": "Image URL. Falls back to initials (then the default icon) if it fails to load.",
706
- "attribute": "src"
707
- },
708
- {
709
- "kind": "field",
710
- "name": "name",
711
- "type": {
712
- "text": "string"
713
- },
714
- "default": "''",
715
- "description": "Name used as the accessible label and to derive the initials fallback.",
716
- "attribute": "name"
717
- },
718
- {
719
- "kind": "field",
720
- "name": "size",
721
- "type": {
722
- "text": "string"
723
- },
724
- "default": "'md'",
725
- "description": "Avatar size: `xs`, `sm`, `md` (default), `lg`, or `xl`.",
726
- "attribute": "size",
727
- "reflects": true
728
- },
729
- {
730
- "kind": "field",
731
- "name": "badge",
732
- "type": {
733
- "text": "number"
734
- },
735
- "default": "0",
736
- "description": "Count shown in the corner badge. `0` hides the badge.",
737
- "attribute": "badge"
738
- },
739
- {
740
- "kind": "field",
741
- "name": "interactive",
742
- "type": {
743
- "text": "boolean"
744
- },
745
- "default": "false",
746
- "description": "Render as a `<button>` with focus ring and hover states.",
747
- "attribute": "interactive",
748
- "reflects": true
749
- }
750
- ],
751
- "attributes": [
752
- {
753
- "name": "src",
754
- "type": {
755
- "text": "string"
756
- },
757
- "default": "''",
758
- "description": "Image URL. Falls back to initials (then the default icon) if it fails to load.",
759
- "fieldName": "src"
760
- },
761
- {
762
- "name": "name",
763
- "type": {
764
- "text": "string"
765
- },
766
- "default": "''",
767
- "description": "Name used as the accessible label and to derive the initials fallback.",
768
- "fieldName": "name"
769
- },
770
- {
771
- "name": "size",
772
- "type": {
773
- "text": "string"
774
- },
775
- "default": "'md'",
776
- "description": "Avatar size: `xs`, `sm`, `md` (default), `lg`, or `xl`.",
777
- "fieldName": "size"
778
- },
779
- {
780
- "name": "badge",
781
- "type": {
782
- "text": "number"
783
- },
784
- "default": "0",
785
- "description": "Count shown in the corner badge. `0` hides the badge.",
786
- "fieldName": "badge"
787
- },
788
- {
789
- "name": "interactive",
790
- "type": {
791
- "text": "boolean"
792
- },
793
- "default": "false",
794
- "description": "Render as a `<button>` with focus ring and hover states.",
795
- "fieldName": "interactive"
796
- }
797
- ],
798
- "superclass": {
799
- "name": "LuxenElement",
800
- "module": "/src/html/shared/luxen-element.js"
801
- },
802
- "tagName": "l-avatar",
803
- "customElement": true,
804
- "summary": "An avatar component for displaying user images, initials, or a default icon.",
805
- "_cssClasses": [
806
- {
807
- "name": ".l-avatar-group",
808
- "description": "Flex wrapper that overlaps a row of stacked avatars."
809
- }
810
- ]
811
- }
812
- ],
813
- "exports": [
814
- {
815
- "kind": "js",
816
- "name": "Avatar",
817
- "declaration": {
818
- "name": "Avatar",
819
- "module": "src/html/elements/avatar/avatar.ts"
820
- }
821
- }
822
- ]
823
- },
824
- {
825
- "kind": "javascript-module",
826
- "path": "src/html/elements/avatar/index.ts",
827
- "declarations": [],
828
- "exports": [
829
- {
830
- "kind": "js",
831
- "name": "*",
832
- "declaration": {
833
- "name": "*",
834
- "module": "src/html/elements/avatar/avatar.js"
844
+ "module": "src/html/elements/alert-dialog/alert-dialog.js"
835
845
  }
836
846
  }
837
847
  ]
@@ -981,90 +991,6 @@
981
991
  }
982
992
  ]
983
993
  },
984
- {
985
- "kind": "javascript-module",
986
- "path": "src/html/elements/breadcrumb/breadcrumb.meta.ts",
987
- "declarations": [
988
- {
989
- "kind": "class",
990
- "description": "",
991
- "name": "BreadcrumbMeta",
992
- "cssProperties": [
993
- {
994
- "description": "Space between crumbs and around the separator.",
995
- "name": "--gap",
996
- "default": "0.5rem"
997
- },
998
- {
999
- "description": "Separator glyph color.",
1000
- "name": "--separator-color",
1001
- "default": "var(--l-color-text-tertiary)"
1002
- },
1003
- {
1004
- "description": "Divider glyph; any character (e.g. `'›'`) or a `url()` image.",
1005
- "name": "--separator",
1006
- "default": "'/'"
1007
- }
1008
- ],
1009
- "attributes": [
1010
- {
1011
- "description": "Names the navigation landmark (use `\"Breadcrumb\"`).",
1012
- "name": "aria-label"
1013
- },
1014
- {
1015
- "description": "Set to `page` on the current crumb's `<a>`.",
1016
- "name": "aria-current"
1017
- },
1018
- {
1019
- "description": "Opt out of Luxen's link theming (color, underline, hover) so you can apply your own link class. Layout, separators, scroll, and current-page behavior stay.",
1020
- "name": "data-unstyled-links"
1021
- }
1022
- ],
1023
- "summary": "A navigation trail showing the current page's position in the site hierarchy. Built on a native `<nav><ol>` per the WAI-ARIA APG pattern.",
1024
- "examples": [
1025
- {
1026
- "title": "Basic",
1027
- "language": "html",
1028
- "code": "<nav class=\"l-breadcrumb\" aria-label=\"Breadcrumb\">\n<ol>\n<li><a href=\"/\">Home</a></li>\n<li><a href=\"/products\">Products</a></li>\n<li><a href=\"/products/bags\" aria-current=\"page\">Bags</a></li>\n</ol>\n</nav>"
1029
- }
1030
- ],
1031
- "_cssClasses": [
1032
- {
1033
- "name": ".l-breadcrumb",
1034
- "description": "Breadcrumb navigation on a `<nav>` wrapping an `<ol>` of `<li><a>` crumbs."
1035
- }
1036
- ],
1037
- "customElement": false,
1038
- "_native": true,
1039
- "_nativeTag": "nav",
1040
- "selector": ".l-breadcrumb",
1041
- "_attributes": [
1042
- {
1043
- "name": "aria-label",
1044
- "description": "Names the navigation landmark (use `\"Breadcrumb\"`)."
1045
- },
1046
- {
1047
- "name": "aria-current",
1048
- "description": "Set to `page` on the current crumb's `<a>`."
1049
- },
1050
- {
1051
- "name": "data-unstyled-links",
1052
- "description": "Opt out of Luxen's link theming (color, underline, hover) so you can apply your own link class. Layout, separators, scroll, and current-page behavior stay."
1053
- }
1054
- ]
1055
- }
1056
- ],
1057
- "exports": [
1058
- {
1059
- "kind": "js",
1060
- "name": "BreadcrumbMeta",
1061
- "declaration": {
1062
- "name": "BreadcrumbMeta",
1063
- "module": "src/html/elements/breadcrumb/breadcrumb.meta.ts"
1064
- }
1065
- }
1066
- ]
1067
- },
1068
994
  {
1069
995
  "kind": "javascript-module",
1070
996
  "path": "src/html/elements/button/button.meta.ts",
@@ -1218,6 +1144,90 @@
1218
1144
  }
1219
1145
  ]
1220
1146
  },
1147
+ {
1148
+ "kind": "javascript-module",
1149
+ "path": "src/html/elements/breadcrumb/breadcrumb.meta.ts",
1150
+ "declarations": [
1151
+ {
1152
+ "kind": "class",
1153
+ "description": "",
1154
+ "name": "BreadcrumbMeta",
1155
+ "cssProperties": [
1156
+ {
1157
+ "description": "Space between crumbs and around the separator.",
1158
+ "name": "--gap",
1159
+ "default": "0.5rem"
1160
+ },
1161
+ {
1162
+ "description": "Separator glyph color.",
1163
+ "name": "--separator-color",
1164
+ "default": "var(--l-color-text-tertiary)"
1165
+ },
1166
+ {
1167
+ "description": "Divider glyph; any character (e.g. `'›'`) or a `url()` image.",
1168
+ "name": "--separator",
1169
+ "default": "'/'"
1170
+ }
1171
+ ],
1172
+ "attributes": [
1173
+ {
1174
+ "description": "Names the navigation landmark (use `\"Breadcrumb\"`).",
1175
+ "name": "aria-label"
1176
+ },
1177
+ {
1178
+ "description": "Set to `page` on the current crumb's `<a>`.",
1179
+ "name": "aria-current"
1180
+ },
1181
+ {
1182
+ "description": "Opt out of Luxen's link theming (color, underline, hover) so you can apply your own link class. Layout, separators, scroll, and current-page behavior stay.",
1183
+ "name": "data-unstyled-links"
1184
+ }
1185
+ ],
1186
+ "summary": "A navigation trail showing the current page's position in the site hierarchy. Built on a native `<nav><ol>` per the WAI-ARIA APG pattern.",
1187
+ "examples": [
1188
+ {
1189
+ "title": "Basic",
1190
+ "language": "html",
1191
+ "code": "<nav class=\"l-breadcrumb\" aria-label=\"Breadcrumb\">\n<ol>\n<li><a href=\"/\">Home</a></li>\n<li><a href=\"/products\">Products</a></li>\n<li><a href=\"/products/bags\" aria-current=\"page\">Bags</a></li>\n</ol>\n</nav>"
1192
+ }
1193
+ ],
1194
+ "_cssClasses": [
1195
+ {
1196
+ "name": ".l-breadcrumb",
1197
+ "description": "Breadcrumb navigation on a `<nav>` wrapping an `<ol>` of `<li><a>` crumbs."
1198
+ }
1199
+ ],
1200
+ "customElement": false,
1201
+ "_native": true,
1202
+ "_nativeTag": "nav",
1203
+ "selector": ".l-breadcrumb",
1204
+ "_attributes": [
1205
+ {
1206
+ "name": "aria-label",
1207
+ "description": "Names the navigation landmark (use `\"Breadcrumb\"`)."
1208
+ },
1209
+ {
1210
+ "name": "aria-current",
1211
+ "description": "Set to `page` on the current crumb's `<a>`."
1212
+ },
1213
+ {
1214
+ "name": "data-unstyled-links",
1215
+ "description": "Opt out of Luxen's link theming (color, underline, hover) so you can apply your own link class. Layout, separators, scroll, and current-page behavior stay."
1216
+ }
1217
+ ]
1218
+ }
1219
+ ],
1220
+ "exports": [
1221
+ {
1222
+ "kind": "js",
1223
+ "name": "BreadcrumbMeta",
1224
+ "declaration": {
1225
+ "name": "BreadcrumbMeta",
1226
+ "module": "src/html/elements/breadcrumb/breadcrumb.meta.ts"
1227
+ }
1228
+ }
1229
+ ]
1230
+ },
1221
1231
  {
1222
1232
  "kind": "javascript-module",
1223
1233
  "path": "src/html/elements/button-group/button-group.ts",
@@ -2795,12 +2805,18 @@
2795
2805
  },
2796
2806
  {
2797
2807
  "description": "Backdrop color.",
2798
- "name": "--backdrop"
2808
+ "name": "--backdrop",
2809
+ "default": "var(--l-backdrop)"
2799
2810
  },
2800
2811
  {
2801
2812
  "description": "Backdrop blur amount (any CSS length). `0` means no blur; set e.g. `4px` for a subtle frost.",
2802
2813
  "name": "--backdrop-blur",
2803
2814
  "default": "0"
2815
+ },
2816
+ {
2817
+ "description": "Drop shadow of the dialog panel (any `box-shadow` value). Raise it when the backdrop is light, where the panel edge would otherwise fade into the page.",
2818
+ "name": "--shadow",
2819
+ "default": "none"
2804
2820
  }
2805
2821
  ],
2806
2822
  "cssParts": [
@@ -3231,37 +3247,44 @@
3231
3247
  "name": "Drawer",
3232
3248
  "cssProperties": [
3233
3249
  {
3234
- "description": "Drawer size on the axis perpendicular to its edge (width for `start`/`end`, height for `top`/`bottom`). Default `320px`.",
3235
- "name": "--size"
3250
+ "description": "Drawer size on the axis perpendicular to its edge (width for `start`/`end`, height for `top`/`bottom`).",
3251
+ "name": "--size",
3252
+ "default": "320px"
3236
3253
  },
3237
3254
  {
3238
- "description": "Drawer border radius on the inner edges (all corners when `inset`). Default `0.375rem`.",
3255
+ "description": "Drawer border radius on the inner edges (all corners when `inset`).",
3239
3256
  "name": "--border-radius",
3240
- "default": "6px",
3257
+ "default": "0.375rem",
3241
3258
  "inheritedFrom": {
3242
3259
  "name": "Dialog",
3243
3260
  "module": "src/html/elements/dialog/dialog.ts"
3244
3261
  }
3245
3262
  },
3246
3263
  {
3247
- "description": "Gap between the drawer and the viewport edges when `inset` is set. Default `1rem`.",
3248
- "name": "--inset-gap"
3264
+ "description": "Gap between the drawer and the viewport edges when `inset` is set.",
3265
+ "name": "--inset-gap",
3266
+ "default": "1rem"
3249
3267
  },
3250
3268
  {
3251
- "description": "Drop shadow applied to the floating panel when `inset` is set. Set to `none` to remove it.",
3252
- "name": "--shadow"
3269
+ "description": "Drop shadow applied to the floating panel when `inset` is set (an edge drawer casts none). Set to `none` to remove it.",
3270
+ "name": "--shadow",
3271
+ "default": "var(--l-shadow-lg)",
3272
+ "inheritedFrom": {
3273
+ "name": "Dialog",
3274
+ "module": "src/html/elements/dialog/dialog.ts"
3275
+ }
3253
3276
  },
3254
3277
  {
3255
- "description": "Open transition duration. Default `300ms`.",
3278
+ "description": "Open transition duration.",
3256
3279
  "name": "--show-duration",
3257
- "default": "200ms",
3280
+ "default": "300ms",
3258
3281
  "inheritedFrom": {
3259
3282
  "name": "Dialog",
3260
3283
  "module": "src/html/elements/dialog/dialog.ts"
3261
3284
  }
3262
3285
  },
3263
3286
  {
3264
- "description": "Close transition duration. Default `200ms`.",
3287
+ "description": "Close transition duration.",
3265
3288
  "name": "--hide-duration",
3266
3289
  "default": "200ms",
3267
3290
  "inheritedFrom": {
@@ -3270,7 +3293,7 @@
3270
3293
  }
3271
3294
  },
3272
3295
  {
3273
- "description": "Timing function of the open and close transitions, backdrop included. Default `cubic-bezier(0.32, 0.72, 0, 1)`.",
3296
+ "description": "Timing function of the open and close transitions, backdrop included.",
3274
3297
  "name": "--easing",
3275
3298
  "default": "cubic-bezier(0.32, 0.72, 0, 1)",
3276
3299
  "inheritedFrom": {
@@ -3281,6 +3304,7 @@
3281
3304
  {
3282
3305
  "description": "Backdrop color.",
3283
3306
  "name": "--backdrop",
3307
+ "default": "var(--l-backdrop)",
3284
3308
  "inheritedFrom": {
3285
3309
  "name": "Dialog",
3286
3310
  "module": "src/html/elements/dialog/dialog.ts"
@@ -4796,11 +4820,11 @@
4796
4820
  "name": "--cell-border-radius"
4797
4821
  },
4798
4822
  {
4799
- "description": "Border + ring color of the active (focused) cell.",
4823
+ "description": "Border, stroke and halo color of the active (focused) cell. Defaults to `--l-focus-ring-color`.",
4800
4824
  "name": "--cell-focus-color"
4801
4825
  },
4802
4826
  {
4803
- "description": "`box-shadow` of the active cell ring (defaults to a 1px solid ring; set to `none` to disable).",
4827
+ "description": "`box-shadow` of the active cell (defaults to the text-field focus halo, `--l-form-control-focus-halo-width` wide; set to `none` to disable).",
4804
4828
  "name": "--cell-focus-ring"
4805
4829
  }
4806
4830
  ],
@@ -8865,6 +8889,108 @@
8865
8889
  }
8866
8890
  ]
8867
8891
  },
8892
+ {
8893
+ "kind": "javascript-module",
8894
+ "path": "src/html/elements/table/table.meta.ts",
8895
+ "declarations": [
8896
+ {
8897
+ "kind": "class",
8898
+ "description": "",
8899
+ "name": "TableMeta",
8900
+ "cssProperties": [
8901
+ {
8902
+ "description": "Minimum row height; content taller than it grows the row.",
8903
+ "name": "--row-height",
8904
+ "default": "calc(var(--l-size-control-md) + 2 * var(--l-spacing-1))"
8905
+ },
8906
+ {
8907
+ "description": "Background of the table. The sticky header repeats it, so it stays opaque over the rows scrolling under it.",
8908
+ "name": "--background-color",
8909
+ "default": "var(--l-color-surface)"
8910
+ },
8911
+ {
8912
+ "description": "Rules between rows. The stronger rules under the header and above the totals use `--l-color-border`.",
8913
+ "name": "--border-color",
8914
+ "default": "var(--l-color-divider)"
8915
+ }
8916
+ ],
8917
+ "attributes": [
8918
+ {
8919
+ "description": "sm | lg — Row height, on the control size scale: a control of the same size fits a row. Defaults to the medium size.",
8920
+ "name": "data-size"
8921
+ },
8922
+ {
8923
+ "description": "start | center | end — On a column's `<th>` and `<td>`s: aligns the column. Use `end` for figures; digits are tabular across the table, so they line up. A sort button in an `end` header puts its glyph before the label, keeping the label flush with the figures.",
8924
+ "name": "data-align"
8925
+ },
8926
+ {
8927
+ "description": "ascending | descending — On the sorted column's `<th>`, which holds a `<button>` (or a link, when the server sorts): shows the direction. A disabled button marks a column the current query cannot sort by; an `.l-button` in a header is another action and keeps its own look.",
8928
+ "name": "aria-sort"
8929
+ }
8930
+ ],
8931
+ "summary": "Tables display data in rows and columns, so it is easy to scan and compare.",
8932
+ "examples": [
8933
+ {
8934
+ "title": "Basic",
8935
+ "language": "html",
8936
+ "code": "<table class=\"l-table\">\n<caption>Products</caption>\n<thead>\n<tr>\n<th scope=\"col\">SKU</th>\n<th scope=\"col\">Name</th>\n<th scope=\"col\" data-align=\"end\">In stock</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<th scope=\"row\">SKU-1042</th>\n<td>Desk lamp</td>\n<td data-align=\"end\">4,210</td>\n</tr>\n</tbody>\n</table>"
8937
+ },
8938
+ {
8939
+ "title": "Sortable",
8940
+ "language": "html",
8941
+ "code": "<table class=\"l-table\">\n<caption>Products</caption>\n<thead>\n<tr>\n<th scope=\"col\" aria-sort=\"ascending\"><button type=\"button\">SKU</button></th>\n<th scope=\"col\"><button type=\"button\">Name</button></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<th scope=\"row\">SKU-1042</th>\n<td>Desk lamp</td>\n</tr>\n</tbody>\n</table>"
8942
+ }
8943
+ ],
8944
+ "_cssClasses": [
8945
+ {
8946
+ "name": ".l-table",
8947
+ "description": "Applied to the `<table>`. Name it with a `<caption>` (visible or `.l-visually-hidden`) or `aria-label`; head the columns with `<th scope=\"col\">` and each row with the `<th scope=\"row\">` that identifies it."
8948
+ }
8949
+ ],
8950
+ "customElement": false,
8951
+ "_native": true,
8952
+ "_nativeTag": "table",
8953
+ "selector": ".l-table",
8954
+ "_attributes": [
8955
+ {
8956
+ "name": "data-size",
8957
+ "values": [
8958
+ "sm",
8959
+ "lg"
8960
+ ],
8961
+ "description": "Row height, on the control size scale: a control of the same size fits a row. Defaults to the medium size."
8962
+ },
8963
+ {
8964
+ "name": "data-align",
8965
+ "values": [
8966
+ "start",
8967
+ "center",
8968
+ "end"
8969
+ ],
8970
+ "description": "On a column's `<th>` and `<td>`s: aligns the column. Use `end` for figures; digits are tabular across the table, so they line up. A sort button in an `end` header puts its glyph before the label, keeping the label flush with the figures."
8971
+ },
8972
+ {
8973
+ "name": "aria-sort",
8974
+ "values": [
8975
+ "ascending",
8976
+ "descending"
8977
+ ],
8978
+ "description": "On the sorted column's `<th>`, which holds a `<button>` (or a link, when the server sorts): shows the direction. A disabled button marks a column the current query cannot sort by; an `.l-button` in a header is another action and keeps its own look."
8979
+ }
8980
+ ]
8981
+ }
8982
+ ],
8983
+ "exports": [
8984
+ {
8985
+ "kind": "js",
8986
+ "name": "TableMeta",
8987
+ "declaration": {
8988
+ "name": "TableMeta",
8989
+ "module": "src/html/elements/table/table.meta.ts"
8990
+ }
8991
+ }
8992
+ ]
8993
+ },
8868
8994
  {
8869
8995
  "kind": "javascript-module",
8870
8996
  "path": "src/html/elements/tabs/index.ts",