luxen-ui 0.21.3 → 0.21.4

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.
@@ -2,351 +2,6 @@
2
2
  "schemaVersion": "1.0.0",
3
3
  "readme": "",
4
4
  "modules": [
5
- {
6
- "kind": "javascript-module",
7
- "path": "src/html/elements/alert/alert.ts",
8
- "declarations": [
9
- {
10
- "kind": "class",
11
- "description": "",
12
- "name": "Alert",
13
- "cssProperties": [
14
- {
15
- "description": "Gap between the icon, content, and close button.",
16
- "name": "--gap",
17
- "default": "0.75rem"
18
- },
19
- {
20
- "description": "Inner padding.",
21
- "name": "--padding",
22
- "default": "1rem"
23
- },
24
- {
25
- "description": "Corner radius.",
26
- "name": "--border-radius",
27
- "default": "8px"
28
- }
29
- ],
30
- "members": [
31
- {
32
- "kind": "field",
33
- "name": "variant",
34
- "type": {
35
- "text": "AlertVariant | undefined"
36
- },
37
- "description": "Semantic variant: `info`, `success`, `warning`, or `danger`. Default is neutral.",
38
- "attribute": "variant",
39
- "reflects": true
40
- },
41
- {
42
- "kind": "field",
43
- "name": "icon",
44
- "type": {
45
- "text": "string | undefined"
46
- },
47
- "description": "Iconify icon name (e.g. `lucide:bell`) overriding the variant's default icon.",
48
- "attribute": "icon"
49
- },
50
- {
51
- "kind": "field",
52
- "name": "withoutIcon",
53
- "type": {
54
- "text": "boolean"
55
- },
56
- "default": "false",
57
- "description": "Hide the leading icon entirely.",
58
- "attribute": "without-icon"
59
- },
60
- {
61
- "kind": "field",
62
- "name": "dismissible",
63
- "type": {
64
- "text": "boolean"
65
- },
66
- "default": "false",
67
- "description": "Show a close button that dismisses the alert when clicked.",
68
- "attribute": "dismissible",
69
- "reflects": true
70
- }
71
- ],
72
- "events": [
73
- {
74
- "name": "hide",
75
- "description": "Emitted when a dismissible alert is about to close. Cancelable — call `event.preventDefault()` to keep it open.",
76
- "cancelable": true
77
- },
78
- {
79
- "name": "after-hide",
80
- "description": "Emitted after the dismiss animation completes and the alert is removed from the DOM. Not cancelable.",
81
- "cancelable": false
82
- }
83
- ],
84
- "attributes": [
85
- {
86
- "name": "variant",
87
- "type": {
88
- "text": "AlertVariant | undefined"
89
- },
90
- "description": "Semantic variant: `info`, `success`, `warning`, or `danger`. Default is neutral.",
91
- "fieldName": "variant"
92
- },
93
- {
94
- "name": "icon",
95
- "type": {
96
- "text": "string | undefined"
97
- },
98
- "description": "Iconify icon name (e.g. `lucide:bell`) overriding the variant's default icon.",
99
- "fieldName": "icon"
100
- },
101
- {
102
- "name": "without-icon",
103
- "type": {
104
- "text": "boolean"
105
- },
106
- "default": "false",
107
- "description": "Hide the leading icon entirely.",
108
- "fieldName": "withoutIcon"
109
- },
110
- {
111
- "name": "dismissible",
112
- "type": {
113
- "text": "boolean"
114
- },
115
- "default": "false",
116
- "description": "Show a close button that dismisses the alert when clicked.",
117
- "fieldName": "dismissible"
118
- }
119
- ],
120
- "superclass": {
121
- "name": "LuxenElement",
122
- "module": "/src/html/shared/luxen-element.js"
123
- },
124
- "tagName": "l-alert",
125
- "customElement": true,
126
- "summary": "A callout box that highlights contextual information with a semantic color and a leading icon.",
127
- "examples": [
128
- {
129
- "language": "html",
130
- "code": "<l-alert variant=\"warning\" dismissible>\n <span class=\"l-alert-title\">Heads up</span>\n This action cannot be undone.\n</l-alert>"
131
- }
132
- ],
133
- "_cssClasses": [
134
- {
135
- "name": ".l-alert-icon",
136
- "description": "The leading icon, colored by variant (auto-injected)."
137
- },
138
- {
139
- "name": ".l-alert-content",
140
- "description": "Wrapper the authored children are moved into; stacks them vertically (auto-injected)."
141
- },
142
- {
143
- "name": ".l-alert-title",
144
- "description": "Optional bold heading placed above the body content. Use a real heading element (e.g. `<h3 class=\"l-alert-title\">`) when the alert is a section callout so it is reachable by heading navigation."
145
- }
146
- ]
147
- }
148
- ],
149
- "exports": [
150
- {
151
- "kind": "js",
152
- "name": "Alert",
153
- "declaration": {
154
- "name": "Alert",
155
- "module": "src/html/elements/alert/alert.ts"
156
- }
157
- }
158
- ]
159
- },
160
- {
161
- "kind": "javascript-module",
162
- "path": "src/html/elements/alert/index.ts",
163
- "declarations": [],
164
- "exports": [
165
- {
166
- "kind": "js",
167
- "name": "*",
168
- "declaration": {
169
- "name": "*",
170
- "module": "src/html/elements/alert/alert.js"
171
- }
172
- }
173
- ]
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
- },
350
5
  {
351
6
  "kind": "javascript-module",
352
7
  "path": "src/html/elements/alert-dialog/alert-dialog.ts",
@@ -439,348 +94,709 @@
439
94
  ],
440
95
  "cssParts": [
441
96
  {
442
- "description": "The native `<dialog>` element.",
443
- "name": "dialog",
97
+ "description": "The native `<dialog>` element.",
98
+ "name": "dialog",
99
+ "inheritedFrom": {
100
+ "name": "Dialog",
101
+ "module": "src/html/elements/dialog/dialog.ts"
102
+ }
103
+ },
104
+ {
105
+ "description": "The header wrapper containing the title.",
106
+ "name": "header",
107
+ "inheritedFrom": {
108
+ "name": "Dialog",
109
+ "module": "src/html/elements/dialog/dialog.ts"
110
+ }
111
+ },
112
+ {
113
+ "description": "The dialog title heading.",
114
+ "name": "title",
115
+ "inheritedFrom": {
116
+ "name": "Dialog",
117
+ "module": "src/html/elements/dialog/dialog.ts"
118
+ }
119
+ },
120
+ {
121
+ "description": "The body wrapper around the description.",
122
+ "name": "body",
123
+ "inheritedFrom": {
124
+ "name": "Dialog",
125
+ "module": "src/html/elements/dialog/dialog.ts"
126
+ }
127
+ },
128
+ {
129
+ "description": "The footer wrapper around the actions.",
130
+ "name": "footer",
131
+ "inheritedFrom": {
132
+ "name": "Dialog",
133
+ "module": "src/html/elements/dialog/dialog.ts"
134
+ }
135
+ },
136
+ {
137
+ "description": "Both built-in action buttons.",
138
+ "name": "button"
139
+ },
140
+ {
141
+ "description": "The built-in cancel button.",
142
+ "name": "cancel"
143
+ },
144
+ {
145
+ "description": "The built-in confirm button.",
146
+ "name": "confirm"
147
+ }
148
+ ],
149
+ "slots": [
150
+ {
151
+ "description": "Description text. Provides the dialog's accessible description.",
152
+ "name": "",
153
+ "inheritedFrom": {
154
+ "name": "Dialog",
155
+ "module": "src/html/elements/dialog/dialog.ts"
156
+ }
157
+ },
158
+ {
159
+ "description": "Custom heading element. Overrides the default `<h2>` rendered from the `title` property. Also provides the dialog's accessible name.",
160
+ "name": "title",
161
+ "inheritedFrom": {
162
+ "name": "Dialog",
163
+ "module": "src/html/elements/dialog/dialog.ts"
164
+ }
165
+ },
166
+ {
167
+ "description": "Replaces the built-in cancel action (e.g. a link). Keep it focusable.",
168
+ "name": "cancel"
169
+ },
170
+ {
171
+ "description": "Replaces the built-in confirm action.",
172
+ "name": "confirm"
173
+ },
174
+ {
175
+ "description": "Close button (typically `<button class=\"l-close\">`).",
176
+ "name": "close",
177
+ "inheritedFrom": {
178
+ "name": "Dialog",
179
+ "module": "src/html/elements/dialog/dialog.ts"
180
+ }
181
+ },
182
+ {
183
+ "description": "Footer actions.",
184
+ "name": "footer",
185
+ "inheritedFrom": {
186
+ "name": "Dialog",
187
+ "module": "src/html/elements/dialog/dialog.ts"
188
+ }
189
+ }
190
+ ],
191
+ "members": [
192
+ {
193
+ "kind": "field",
194
+ "name": "confirmText",
195
+ "type": {
196
+ "text": "string"
197
+ },
198
+ "default": "'Confirm'",
199
+ "description": "Label for the confirm action.",
200
+ "attribute": "confirm-text"
201
+ },
202
+ {
203
+ "kind": "field",
204
+ "name": "cancelText",
205
+ "type": {
206
+ "text": "string"
207
+ },
208
+ "default": "'Cancel'",
209
+ "description": "Label for the cancel action.",
210
+ "attribute": "cancel-text"
211
+ },
212
+ {
213
+ "kind": "field",
214
+ "name": "tone",
215
+ "type": {
216
+ "text": "'danger' | undefined"
217
+ },
218
+ "description": "Visual tone. `danger` renders the confirm action as destructive.",
219
+ "attribute": "tone",
220
+ "reflects": true
221
+ },
222
+ {
223
+ "kind": "field",
224
+ "name": "loading",
225
+ "type": {
226
+ "text": "boolean"
227
+ },
228
+ "default": "false",
229
+ "description": "Show a busy state on the confirm action (spinner + `aria-disabled`); the\ncancel action stays operable as an escape hatch.",
230
+ "attribute": "loading",
231
+ "reflects": true
232
+ },
233
+ {
234
+ "kind": "field",
235
+ "name": "title",
236
+ "type": {
237
+ "text": "string"
238
+ },
239
+ "default": "''",
240
+ "description": "Dialog title rendered in the header and used as the dialog's accessible name.",
241
+ "attribute": "title",
444
242
  "inheritedFrom": {
445
243
  "name": "Dialog",
446
244
  "module": "src/html/elements/dialog/dialog.ts"
447
245
  }
448
246
  },
449
247
  {
450
- "description": "The header wrapper containing the title.",
451
- "name": "header",
248
+ "kind": "field",
249
+ "name": "open",
250
+ "type": {
251
+ "text": "boolean"
252
+ },
253
+ "default": "false",
254
+ "description": "Whether the dialog is open.",
255
+ "attribute": "open",
256
+ "reflects": true,
452
257
  "inheritedFrom": {
453
258
  "name": "Dialog",
454
259
  "module": "src/html/elements/dialog/dialog.ts"
455
260
  }
456
261
  },
457
262
  {
458
- "description": "The dialog title heading.",
459
- "name": "title",
263
+ "kind": "field",
264
+ "name": "lightDismiss",
265
+ "type": {
266
+ "text": "boolean"
267
+ },
268
+ "default": "false",
269
+ "description": "Close when the backdrop is clicked.",
270
+ "attribute": "light-dismiss",
271
+ "reflects": true,
460
272
  "inheritedFrom": {
461
273
  "name": "Dialog",
462
274
  "module": "src/html/elements/dialog/dialog.ts"
463
275
  }
464
276
  },
465
277
  {
466
- "description": "The body wrapper around the description.",
467
- "name": "body",
278
+ "kind": "field",
279
+ "name": "withoutHeader",
280
+ "type": {
281
+ "text": "boolean"
282
+ },
283
+ "default": "false",
284
+ "description": "Hide the header entirely (title and close slot).",
285
+ "attribute": "without-header",
286
+ "reflects": true,
468
287
  "inheritedFrom": {
469
288
  "name": "Dialog",
470
289
  "module": "src/html/elements/dialog/dialog.ts"
471
290
  }
472
291
  },
473
292
  {
474
- "description": "The footer wrapper around the actions.",
475
- "name": "footer",
293
+ "kind": "field",
294
+ "name": "dialog",
295
+ "type": {
296
+ "text": "HTMLDialogElement"
297
+ },
476
298
  "inheritedFrom": {
477
299
  "name": "Dialog",
478
300
  "module": "src/html/elements/dialog/dialog.ts"
479
301
  }
302
+ }
303
+ ],
304
+ "events": [
305
+ {
306
+ "name": "confirm",
307
+ "description": "Fired when the user accepts. Cancelable — `preventDefault()` keeps it open for async work.",
308
+ "cancelable": true
480
309
  },
481
310
  {
482
- "description": "Both built-in action buttons.",
483
- "name": "button"
311
+ "name": "cancel",
312
+ "description": "Fired when the user dismisses (cancel action, Escape). Cancelable — `preventDefault()` keeps it open.",
313
+ "cancelable": true
484
314
  },
485
315
  {
486
- "description": "The built-in cancel button.",
487
- "name": "cancel"
316
+ "name": "show",
317
+ "description": "Fired when the dialog is about to open. Cancelable.",
318
+ "cancelable": true
488
319
  },
489
320
  {
490
- "description": "The built-in confirm button.",
491
- "name": "confirm"
321
+ "name": "hide",
322
+ "description": "Fired when the dialog is about to close via the `open` property. Cancelable. (The confirm, cancel, and Escape paths close natively and emit `confirm`/`cancel` instead of `hide`.)",
323
+ "cancelable": true
324
+ },
325
+ {
326
+ "name": "after-show",
327
+ "description": "Fired after the open animation completes. Not cancelable.",
328
+ "cancelable": false
329
+ },
330
+ {
331
+ "name": "after-hide",
332
+ "description": "Fired after the close animation completes. Not cancelable.",
333
+ "cancelable": false
492
334
  }
493
335
  ],
494
- "slots": [
336
+ "attributes": [
495
337
  {
496
- "description": "Description text. Provides the dialog's accessible description.",
497
- "name": "",
338
+ "name": "confirm-text",
339
+ "type": {
340
+ "text": "string"
341
+ },
342
+ "default": "'Confirm'",
343
+ "description": "Label for the confirm action.",
344
+ "fieldName": "confirmText"
345
+ },
346
+ {
347
+ "name": "cancel-text",
348
+ "type": {
349
+ "text": "string"
350
+ },
351
+ "default": "'Cancel'",
352
+ "description": "Label for the cancel action.",
353
+ "fieldName": "cancelText"
354
+ },
355
+ {
356
+ "name": "tone",
357
+ "type": {
358
+ "text": "'danger' | undefined"
359
+ },
360
+ "description": "Visual tone. `danger` renders the confirm action as destructive.",
361
+ "fieldName": "tone"
362
+ },
363
+ {
364
+ "name": "loading",
365
+ "type": {
366
+ "text": "boolean"
367
+ },
368
+ "default": "false",
369
+ "description": "Show a busy state on the confirm action (spinner + `aria-disabled`); the\ncancel action stays operable as an escape hatch.",
370
+ "fieldName": "loading"
371
+ },
372
+ {
373
+ "name": "title",
374
+ "type": {
375
+ "text": "string"
376
+ },
377
+ "default": "''",
378
+ "description": "Dialog title rendered in the header and used as the dialog's accessible name.",
379
+ "fieldName": "title",
498
380
  "inheritedFrom": {
499
381
  "name": "Dialog",
500
382
  "module": "src/html/elements/dialog/dialog.ts"
501
383
  }
502
384
  },
503
385
  {
504
- "description": "Custom heading element. Overrides the default `<h2>` rendered from the `title` property. Also provides the dialog's accessible name.",
505
- "name": "title",
386
+ "name": "open",
387
+ "type": {
388
+ "text": "boolean"
389
+ },
390
+ "default": "false",
391
+ "description": "Whether the dialog is open.",
392
+ "fieldName": "open",
506
393
  "inheritedFrom": {
507
394
  "name": "Dialog",
508
395
  "module": "src/html/elements/dialog/dialog.ts"
509
396
  }
510
397
  },
511
398
  {
512
- "description": "Replaces the built-in cancel action (e.g. a link). Keep it focusable.",
513
- "name": "cancel"
514
- },
515
- {
516
- "description": "Replaces the built-in confirm action.",
517
- "name": "confirm"
518
- },
519
- {
520
- "description": "Close button (typically `<button class=\"l-close\">`).",
521
- "name": "close",
399
+ "name": "light-dismiss",
400
+ "type": {
401
+ "text": "boolean"
402
+ },
403
+ "default": "false",
404
+ "description": "Close when the backdrop is clicked.",
405
+ "fieldName": "lightDismiss",
522
406
  "inheritedFrom": {
523
407
  "name": "Dialog",
524
408
  "module": "src/html/elements/dialog/dialog.ts"
525
409
  }
526
410
  },
527
411
  {
528
- "description": "Footer actions.",
529
- "name": "footer",
412
+ "name": "without-header",
413
+ "type": {
414
+ "text": "boolean"
415
+ },
416
+ "default": "false",
417
+ "description": "Hide the header entirely (title and close slot).",
418
+ "fieldName": "withoutHeader",
530
419
  "inheritedFrom": {
531
420
  "name": "Dialog",
532
421
  "module": "src/html/elements/dialog/dialog.ts"
533
422
  }
534
423
  }
535
424
  ],
425
+ "superclass": {
426
+ "name": "Dialog",
427
+ "module": "/src/html/elements/dialog/dialog.js"
428
+ },
429
+ "tagName": "l-alert-dialog",
430
+ "customElement": true,
431
+ "commands": [
432
+ {
433
+ "name": "--show",
434
+ "description": "Sets `open = true`."
435
+ },
436
+ {
437
+ "name": "--hide",
438
+ "description": "Sets `open = false`."
439
+ }
440
+ ]
441
+ }
442
+ ],
443
+ "exports": [
444
+ {
445
+ "kind": "js",
446
+ "name": "ConfirmEvent",
447
+ "declaration": {
448
+ "name": "ConfirmEvent",
449
+ "module": "src/html/elements/alert-dialog/alert-dialog.ts"
450
+ }
451
+ },
452
+ {
453
+ "kind": "js",
454
+ "name": "CancelEvent",
455
+ "declaration": {
456
+ "name": "CancelEvent",
457
+ "module": "src/html/elements/alert-dialog/alert-dialog.ts"
458
+ }
459
+ },
460
+ {
461
+ "kind": "js",
462
+ "name": "AlertDialog",
463
+ "declaration": {
464
+ "name": "AlertDialog",
465
+ "module": "src/html/elements/alert-dialog/alert-dialog.ts"
466
+ }
467
+ }
468
+ ]
469
+ },
470
+ {
471
+ "kind": "javascript-module",
472
+ "path": "src/html/elements/alert-dialog/index.ts",
473
+ "declarations": [],
474
+ "exports": [
475
+ {
476
+ "kind": "js",
477
+ "name": "*",
478
+ "declaration": {
479
+ "name": "*",
480
+ "module": "src/html/elements/alert-dialog/alert-dialog.js"
481
+ }
482
+ }
483
+ ]
484
+ },
485
+ {
486
+ "kind": "javascript-module",
487
+ "path": "src/html/elements/alert/alert.ts",
488
+ "declarations": [
489
+ {
490
+ "kind": "class",
491
+ "description": "",
492
+ "name": "Alert",
493
+ "cssProperties": [
494
+ {
495
+ "description": "Gap between the icon, content, and close button.",
496
+ "name": "--gap",
497
+ "default": "0.75rem"
498
+ },
499
+ {
500
+ "description": "Inner padding.",
501
+ "name": "--padding",
502
+ "default": "1rem"
503
+ },
504
+ {
505
+ "description": "Corner radius.",
506
+ "name": "--border-radius",
507
+ "default": "8px"
508
+ }
509
+ ],
536
510
  "members": [
537
511
  {
538
512
  "kind": "field",
539
- "name": "confirmText",
513
+ "name": "variant",
540
514
  "type": {
541
- "text": "string"
515
+ "text": "AlertVariant | undefined"
542
516
  },
543
- "default": "'Confirm'",
544
- "description": "Label for the confirm action.",
545
- "attribute": "confirm-text"
517
+ "description": "Semantic variant: `info`, `success`, `warning`, or `danger`. Default is neutral.",
518
+ "attribute": "variant",
519
+ "reflects": true
546
520
  },
547
521
  {
548
522
  "kind": "field",
549
- "name": "cancelText",
523
+ "name": "icon",
550
524
  "type": {
551
- "text": "string"
525
+ "text": "string | undefined"
552
526
  },
553
- "default": "'Cancel'",
554
- "description": "Label for the cancel action.",
555
- "attribute": "cancel-text"
527
+ "description": "Iconify icon name (e.g. `lucide:bell`) overriding the variant's default icon.",
528
+ "attribute": "icon"
556
529
  },
557
530
  {
558
531
  "kind": "field",
559
- "name": "tone",
532
+ "name": "withoutIcon",
560
533
  "type": {
561
- "text": "'danger' | undefined"
534
+ "text": "boolean"
562
535
  },
563
- "description": "Visual tone. `danger` renders the confirm action as destructive.",
564
- "attribute": "tone",
565
- "reflects": true
536
+ "default": "false",
537
+ "description": "Hide the leading icon entirely.",
538
+ "attribute": "without-icon"
566
539
  },
567
540
  {
568
541
  "kind": "field",
569
- "name": "loading",
542
+ "name": "dismissible",
570
543
  "type": {
571
544
  "text": "boolean"
572
545
  },
573
546
  "default": "false",
574
- "description": "Show a busy state on the confirm action (spinner + `aria-disabled`); the\ncancel action stays operable as an escape hatch.",
575
- "attribute": "loading",
547
+ "description": "Show a close button that dismisses the alert when clicked.",
548
+ "attribute": "dismissible",
576
549
  "reflects": true
550
+ }
551
+ ],
552
+ "events": [
553
+ {
554
+ "name": "hide",
555
+ "description": "Emitted when a dismissible alert is about to close. Cancelable — call `event.preventDefault()` to keep it open.",
556
+ "cancelable": true
577
557
  },
578
558
  {
579
- "kind": "field",
580
- "name": "title",
559
+ "name": "after-hide",
560
+ "description": "Emitted after the dismiss animation completes and the alert is removed from the DOM. Not cancelable.",
561
+ "cancelable": false
562
+ }
563
+ ],
564
+ "attributes": [
565
+ {
566
+ "name": "variant",
581
567
  "type": {
582
- "text": "string"
568
+ "text": "AlertVariant | undefined"
583
569
  },
584
- "default": "''",
585
- "description": "Dialog title rendered in the header and used as the dialog's accessible name.",
586
- "attribute": "title",
587
- "inheritedFrom": {
588
- "name": "Dialog",
589
- "module": "src/html/elements/dialog/dialog.ts"
590
- }
570
+ "description": "Semantic variant: `info`, `success`, `warning`, or `danger`. Default is neutral.",
571
+ "fieldName": "variant"
591
572
  },
592
573
  {
593
- "kind": "field",
594
- "name": "open",
574
+ "name": "icon",
595
575
  "type": {
596
- "text": "boolean"
576
+ "text": "string | undefined"
597
577
  },
598
- "default": "false",
599
- "description": "Whether the dialog is open.",
600
- "attribute": "open",
601
- "reflects": true,
602
- "inheritedFrom": {
603
- "name": "Dialog",
604
- "module": "src/html/elements/dialog/dialog.ts"
605
- }
578
+ "description": "Iconify icon name (e.g. `lucide:bell`) overriding the variant's default icon.",
579
+ "fieldName": "icon"
606
580
  },
607
581
  {
608
- "kind": "field",
609
- "name": "lightDismiss",
582
+ "name": "without-icon",
610
583
  "type": {
611
584
  "text": "boolean"
612
585
  },
613
586
  "default": "false",
614
- "description": "Close when the backdrop is clicked.",
615
- "attribute": "light-dismiss",
616
- "reflects": true,
617
- "inheritedFrom": {
618
- "name": "Dialog",
619
- "module": "src/html/elements/dialog/dialog.ts"
620
- }
587
+ "description": "Hide the leading icon entirely.",
588
+ "fieldName": "withoutIcon"
621
589
  },
622
590
  {
623
- "kind": "field",
624
- "name": "withoutHeader",
591
+ "name": "dismissible",
625
592
  "type": {
626
593
  "text": "boolean"
627
594
  },
628
595
  "default": "false",
629
- "description": "Hide the header entirely (title and close slot).",
630
- "attribute": "without-header",
631
- "reflects": true,
632
- "inheritedFrom": {
633
- "name": "Dialog",
634
- "module": "src/html/elements/dialog/dialog.ts"
635
- }
636
- },
596
+ "description": "Show a close button that dismisses the alert when clicked.",
597
+ "fieldName": "dismissible"
598
+ }
599
+ ],
600
+ "superclass": {
601
+ "name": "LuxenElement",
602
+ "module": "/src/html/shared/luxen-element.js"
603
+ },
604
+ "tagName": "l-alert",
605
+ "customElement": true,
606
+ "summary": "A callout box that highlights contextual information with a semantic color and a leading icon.",
607
+ "examples": [
637
608
  {
638
- "kind": "field",
639
- "name": "dialog",
640
- "type": {
641
- "text": "HTMLDialogElement"
642
- },
643
- "inheritedFrom": {
644
- "name": "Dialog",
645
- "module": "src/html/elements/dialog/dialog.ts"
646
- }
609
+ "language": "html",
610
+ "code": "<l-alert variant=\"warning\" dismissible>\n <span class=\"l-alert-title\">Heads up</span>\n This action cannot be undone.\n</l-alert>"
647
611
  }
648
612
  ],
649
- "events": [
613
+ "_cssClasses": [
650
614
  {
651
- "name": "confirm",
652
- "description": "Fired when the user accepts. Cancelable — `preventDefault()` keeps it open for async work.",
653
- "cancelable": true
615
+ "name": ".l-alert-icon",
616
+ "description": "The leading icon, colored by variant (auto-injected)."
654
617
  },
655
618
  {
656
- "name": "cancel",
657
- "description": "Fired when the user dismisses (cancel action, Escape). Cancelable — `preventDefault()` keeps it open.",
658
- "cancelable": true
619
+ "name": ".l-alert-content",
620
+ "description": "Wrapper the authored children are moved into; stacks them vertically (auto-injected)."
659
621
  },
660
622
  {
661
- "name": "show",
662
- "description": "Fired when the dialog is about to open. Cancelable.",
663
- "cancelable": true
623
+ "name": ".l-alert-title",
624
+ "description": "Optional bold heading placed above the body content. Use a real heading element (e.g. `<h3 class=\"l-alert-title\">`) when the alert is a section callout so it is reachable by heading navigation."
625
+ }
626
+ ]
627
+ }
628
+ ],
629
+ "exports": [
630
+ {
631
+ "kind": "js",
632
+ "name": "Alert",
633
+ "declaration": {
634
+ "name": "Alert",
635
+ "module": "src/html/elements/alert/alert.ts"
636
+ }
637
+ }
638
+ ]
639
+ },
640
+ {
641
+ "kind": "javascript-module",
642
+ "path": "src/html/elements/alert/index.ts",
643
+ "declarations": [],
644
+ "exports": [
645
+ {
646
+ "kind": "js",
647
+ "name": "*",
648
+ "declaration": {
649
+ "name": "*",
650
+ "module": "src/html/elements/alert/alert.js"
651
+ }
652
+ }
653
+ ]
654
+ },
655
+ {
656
+ "kind": "javascript-module",
657
+ "path": "src/html/elements/avatar/avatar.ts",
658
+ "declarations": [
659
+ {
660
+ "kind": "class",
661
+ "description": "",
662
+ "name": "Avatar",
663
+ "cssProperties": [
664
+ {
665
+ "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.",
666
+ "name": "--size",
667
+ "default": "40px"
664
668
  },
665
669
  {
666
- "name": "hide",
667
- "description": "Fired when the dialog is about to close via the `open` property. Cancelable. (The confirm, cancel, and Escape paths close natively and emit `confirm`/`cancel` instead of `hide`.)",
668
- "cancelable": true
670
+ "description": "Background fill color for initials and the default icon.",
671
+ "name": "--color"
669
672
  },
670
673
  {
671
- "name": "after-show",
672
- "description": "Fired after the open animation completes. Not cancelable.",
673
- "cancelable": false
674
+ "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).",
675
+ "name": "--text-color"
674
676
  },
675
677
  {
676
- "name": "after-hide",
677
- "description": "Fired after the close animation completes. Not cancelable.",
678
- "cancelable": false
678
+ "description": "Set to `circle` for a fully circular avatar (default is a rounded square).",
679
+ "name": "--appearance"
679
680
  }
680
681
  ],
681
- "attributes": [
682
+ "cssParts": [
682
683
  {
683
- "name": "confirm-text",
684
+ "description": "The avatar container that paints `--color`; style it (e.g. `color`) to override the auto-derived text color.",
685
+ "name": "base"
686
+ }
687
+ ],
688
+ "members": [
689
+ {
690
+ "kind": "field",
691
+ "name": "src",
684
692
  "type": {
685
693
  "text": "string"
686
694
  },
687
- "default": "'Confirm'",
688
- "description": "Label for the confirm action.",
689
- "fieldName": "confirmText"
695
+ "default": "''",
696
+ "description": "Image URL. Falls back to initials (then the default icon) if it fails to load.",
697
+ "attribute": "src"
690
698
  },
691
699
  {
692
- "name": "cancel-text",
700
+ "kind": "field",
701
+ "name": "name",
693
702
  "type": {
694
703
  "text": "string"
695
704
  },
696
- "default": "'Cancel'",
697
- "description": "Label for the cancel action.",
698
- "fieldName": "cancelText"
705
+ "default": "''",
706
+ "description": "Name used as the accessible label and to derive the initials fallback.",
707
+ "attribute": "name"
699
708
  },
700
709
  {
701
- "name": "tone",
710
+ "kind": "field",
711
+ "name": "size",
702
712
  "type": {
703
- "text": "'danger' | undefined"
713
+ "text": "string"
704
714
  },
705
- "description": "Visual tone. `danger` renders the confirm action as destructive.",
706
- "fieldName": "tone"
715
+ "default": "'md'",
716
+ "description": "Avatar size: `xs`, `sm`, `md` (default), `lg`, or `xl`.",
717
+ "attribute": "size",
718
+ "reflects": true
707
719
  },
708
720
  {
709
- "name": "loading",
721
+ "kind": "field",
722
+ "name": "badge",
723
+ "type": {
724
+ "text": "number"
725
+ },
726
+ "default": "0",
727
+ "description": "Count shown in the corner badge. `0` hides the badge.",
728
+ "attribute": "badge"
729
+ },
730
+ {
731
+ "kind": "field",
732
+ "name": "interactive",
710
733
  "type": {
711
734
  "text": "boolean"
712
735
  },
713
736
  "default": "false",
714
- "description": "Show a busy state on the confirm action (spinner + `aria-disabled`); the\ncancel action stays operable as an escape hatch.",
715
- "fieldName": "loading"
737
+ "description": "Render as a `<button>` with focus ring and hover states.",
738
+ "attribute": "interactive",
739
+ "reflects": true
740
+ }
741
+ ],
742
+ "attributes": [
743
+ {
744
+ "name": "src",
745
+ "type": {
746
+ "text": "string"
747
+ },
748
+ "default": "''",
749
+ "description": "Image URL. Falls back to initials (then the default icon) if it fails to load.",
750
+ "fieldName": "src"
716
751
  },
717
752
  {
718
- "name": "title",
753
+ "name": "name",
719
754
  "type": {
720
755
  "text": "string"
721
756
  },
722
757
  "default": "''",
723
- "description": "Dialog title rendered in the header and used as the dialog's accessible name.",
724
- "fieldName": "title",
725
- "inheritedFrom": {
726
- "name": "Dialog",
727
- "module": "src/html/elements/dialog/dialog.ts"
728
- }
758
+ "description": "Name used as the accessible label and to derive the initials fallback.",
759
+ "fieldName": "name"
729
760
  },
730
761
  {
731
- "name": "open",
762
+ "name": "size",
732
763
  "type": {
733
- "text": "boolean"
764
+ "text": "string"
734
765
  },
735
- "default": "false",
736
- "description": "Whether the dialog is open.",
737
- "fieldName": "open",
738
- "inheritedFrom": {
739
- "name": "Dialog",
740
- "module": "src/html/elements/dialog/dialog.ts"
741
- }
766
+ "default": "'md'",
767
+ "description": "Avatar size: `xs`, `sm`, `md` (default), `lg`, or `xl`.",
768
+ "fieldName": "size"
742
769
  },
743
770
  {
744
- "name": "light-dismiss",
771
+ "name": "badge",
745
772
  "type": {
746
- "text": "boolean"
773
+ "text": "number"
747
774
  },
748
- "default": "false",
749
- "description": "Close when the backdrop is clicked.",
750
- "fieldName": "lightDismiss",
751
- "inheritedFrom": {
752
- "name": "Dialog",
753
- "module": "src/html/elements/dialog/dialog.ts"
754
- }
775
+ "default": "0",
776
+ "description": "Count shown in the corner badge. `0` hides the badge.",
777
+ "fieldName": "badge"
755
778
  },
756
779
  {
757
- "name": "without-header",
780
+ "name": "interactive",
758
781
  "type": {
759
782
  "text": "boolean"
760
783
  },
761
784
  "default": "false",
762
- "description": "Hide the header entirely (title and close slot).",
763
- "fieldName": "withoutHeader",
764
- "inheritedFrom": {
765
- "name": "Dialog",
766
- "module": "src/html/elements/dialog/dialog.ts"
767
- }
785
+ "description": "Render as a `<button>` with focus ring and hover states.",
786
+ "fieldName": "interactive"
768
787
  }
769
788
  ],
770
789
  "superclass": {
771
- "name": "Dialog",
772
- "module": "/src/html/elements/dialog/dialog.js"
790
+ "name": "LuxenElement",
791
+ "module": "/src/html/shared/luxen-element.js"
773
792
  },
774
- "tagName": "l-alert-dialog",
793
+ "tagName": "l-avatar",
775
794
  "customElement": true,
776
- "commands": [
777
- {
778
- "name": "--show",
779
- "description": "Sets `open = true`."
780
- },
795
+ "summary": "An avatar component for displaying user images, initials, or a default icon.",
796
+ "_cssClasses": [
781
797
  {
782
- "name": "--hide",
783
- "description": "Sets `open = false`."
798
+ "name": ".l-avatar-group",
799
+ "description": "Flex wrapper that overlaps a row of stacked avatars."
784
800
  }
785
801
  ]
786
802
  }
@@ -788,33 +804,17 @@
788
804
  "exports": [
789
805
  {
790
806
  "kind": "js",
791
- "name": "ConfirmEvent",
792
- "declaration": {
793
- "name": "ConfirmEvent",
794
- "module": "src/html/elements/alert-dialog/alert-dialog.ts"
795
- }
796
- },
797
- {
798
- "kind": "js",
799
- "name": "CancelEvent",
800
- "declaration": {
801
- "name": "CancelEvent",
802
- "module": "src/html/elements/alert-dialog/alert-dialog.ts"
803
- }
804
- },
805
- {
806
- "kind": "js",
807
- "name": "AlertDialog",
807
+ "name": "Avatar",
808
808
  "declaration": {
809
- "name": "AlertDialog",
810
- "module": "src/html/elements/alert-dialog/alert-dialog.ts"
809
+ "name": "Avatar",
810
+ "module": "src/html/elements/avatar/avatar.ts"
811
811
  }
812
812
  }
813
813
  ]
814
814
  },
815
815
  {
816
816
  "kind": "javascript-module",
817
- "path": "src/html/elements/alert-dialog/index.ts",
817
+ "path": "src/html/elements/avatar/index.ts",
818
818
  "declarations": [],
819
819
  "exports": [
820
820
  {
@@ -822,7 +822,7 @@
822
822
  "name": "*",
823
823
  "declaration": {
824
824
  "name": "*",
825
- "module": "src/html/elements/alert-dialog/alert-dialog.js"
825
+ "module": "src/html/elements/avatar/avatar.js"
826
826
  }
827
827
  }
828
828
  ]
@@ -6545,6 +6545,88 @@
6545
6545
  }
6546
6546
  ]
6547
6547
  },
6548
+ {
6549
+ "kind": "javascript-module",
6550
+ "path": "src/html/elements/skeleton/index.ts",
6551
+ "declarations": [],
6552
+ "exports": [
6553
+ {
6554
+ "kind": "js",
6555
+ "name": "*",
6556
+ "declaration": {
6557
+ "name": "*",
6558
+ "module": "src/html/elements/skeleton/skeleton.js"
6559
+ }
6560
+ }
6561
+ ]
6562
+ },
6563
+ {
6564
+ "kind": "javascript-module",
6565
+ "path": "src/html/elements/skeleton/skeleton.ts",
6566
+ "declarations": [
6567
+ {
6568
+ "kind": "class",
6569
+ "description": "",
6570
+ "name": "Skeleton",
6571
+ "cssProperties": [
6572
+ {
6573
+ "description": "Width of the skeleton",
6574
+ "name": "--width"
6575
+ },
6576
+ {
6577
+ "description": "Height of the skeleton",
6578
+ "name": "--height"
6579
+ }
6580
+ ],
6581
+ "members": [],
6582
+ "attributes": [
6583
+ {
6584
+ "description": "circle | text — Placeholder shape. Default is a block.",
6585
+ "name": "shape"
6586
+ },
6587
+ {
6588
+ "description": "pulse | wave — Loading animation. Default is `pulse`.",
6589
+ "name": "animation"
6590
+ }
6591
+ ],
6592
+ "superclass": {
6593
+ "name": "LuxenElement",
6594
+ "module": "/src/html/shared/luxen-element.js"
6595
+ },
6596
+ "tagName": "l-skeleton",
6597
+ "customElement": true,
6598
+ "summary": "A skeleton loading placeholder.",
6599
+ "_attributes": [
6600
+ {
6601
+ "name": "shape",
6602
+ "values": [
6603
+ "circle",
6604
+ "text"
6605
+ ],
6606
+ "description": "Placeholder shape. Default is a block."
6607
+ },
6608
+ {
6609
+ "name": "animation",
6610
+ "values": [
6611
+ "pulse",
6612
+ "wave"
6613
+ ],
6614
+ "description": "Loading animation. Default is `pulse`."
6615
+ }
6616
+ ]
6617
+ }
6618
+ ],
6619
+ "exports": [
6620
+ {
6621
+ "kind": "js",
6622
+ "name": "Skeleton",
6623
+ "declaration": {
6624
+ "name": "Skeleton",
6625
+ "module": "src/html/elements/skeleton/skeleton.ts"
6626
+ }
6627
+ }
6628
+ ]
6629
+ },
6548
6630
  {
6549
6631
  "kind": "javascript-module",
6550
6632
  "path": "src/html/elements/select/index.ts",
@@ -6923,88 +7005,6 @@
6923
7005
  }
6924
7006
  ]
6925
7007
  },
6926
- {
6927
- "kind": "javascript-module",
6928
- "path": "src/html/elements/skeleton/index.ts",
6929
- "declarations": [],
6930
- "exports": [
6931
- {
6932
- "kind": "js",
6933
- "name": "*",
6934
- "declaration": {
6935
- "name": "*",
6936
- "module": "src/html/elements/skeleton/skeleton.js"
6937
- }
6938
- }
6939
- ]
6940
- },
6941
- {
6942
- "kind": "javascript-module",
6943
- "path": "src/html/elements/skeleton/skeleton.ts",
6944
- "declarations": [
6945
- {
6946
- "kind": "class",
6947
- "description": "",
6948
- "name": "Skeleton",
6949
- "cssProperties": [
6950
- {
6951
- "description": "Width of the skeleton",
6952
- "name": "--width"
6953
- },
6954
- {
6955
- "description": "Height of the skeleton",
6956
- "name": "--height"
6957
- }
6958
- ],
6959
- "members": [],
6960
- "attributes": [
6961
- {
6962
- "description": "circle | text — Placeholder shape. Default is a block.",
6963
- "name": "shape"
6964
- },
6965
- {
6966
- "description": "pulse | wave — Loading animation. Default is `pulse`.",
6967
- "name": "animation"
6968
- }
6969
- ],
6970
- "superclass": {
6971
- "name": "LuxenElement",
6972
- "module": "/src/html/shared/luxen-element.js"
6973
- },
6974
- "tagName": "l-skeleton",
6975
- "customElement": true,
6976
- "summary": "A skeleton loading placeholder.",
6977
- "_attributes": [
6978
- {
6979
- "name": "shape",
6980
- "values": [
6981
- "circle",
6982
- "text"
6983
- ],
6984
- "description": "Placeholder shape. Default is a block."
6985
- },
6986
- {
6987
- "name": "animation",
6988
- "values": [
6989
- "pulse",
6990
- "wave"
6991
- ],
6992
- "description": "Loading animation. Default is `pulse`."
6993
- }
6994
- ]
6995
- }
6996
- ],
6997
- "exports": [
6998
- {
6999
- "kind": "js",
7000
- "name": "Skeleton",
7001
- "declaration": {
7002
- "name": "Skeleton",
7003
- "module": "src/html/elements/skeleton/skeleton.ts"
7004
- }
7005
- }
7006
- ]
7007
- },
7008
7008
  {
7009
7009
  "kind": "javascript-module",
7010
7010
  "path": "src/html/elements/slider/index.ts",