aeico-components 0.1.2 → 0.1.3

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 (33) hide show
  1. package/dist/index.cjs +1182 -1182
  2. package/dist/index.js +1182 -1182
  3. package/package.json +63 -63
  4. package/src/styles/color.css +117 -117
  5. package/src/styles/components/alert.css +104 -104
  6. package/src/styles/components/badge.css +67 -67
  7. package/src/styles/components/breadcrumb-item.css +59 -59
  8. package/src/styles/components/breadcrumb.css +19 -19
  9. package/src/styles/components/button-group.css +25 -25
  10. package/src/styles/components/button.css +213 -213
  11. package/src/styles/components/card.css +64 -64
  12. package/src/styles/components/checkbox.css +78 -78
  13. package/src/styles/components/detail.css +127 -127
  14. package/src/styles/components/dialog.css +103 -103
  15. package/src/styles/components/divider.css +18 -18
  16. package/src/styles/components/dropdown-item.css +91 -91
  17. package/src/styles/components/dropdown.css +179 -179
  18. package/src/styles/components/icon-button.css +116 -116
  19. package/src/styles/components/icon.css +29 -29
  20. package/src/styles/components/navbar.css +250 -250
  21. package/src/styles/components/radio-group.css +360 -360
  22. package/src/styles/components/select-option.css +43 -43
  23. package/src/styles/components/select.css +222 -222
  24. package/src/styles/components/slider.css +326 -326
  25. package/src/styles/components/switch.css +117 -117
  26. package/src/styles/components/tab-panel.css +8 -8
  27. package/src/styles/components/tab.css +44 -44
  28. package/src/styles/components/tabs.css +16 -16
  29. package/src/styles/components/tag.css +107 -107
  30. package/src/styles/components/text-input.css +110 -110
  31. package/src/styles/layout.css +43 -43
  32. package/src/styles/size.css +7 -7
  33. package/src/styles/variables.css +368 -368
package/dist/index.js CHANGED
@@ -185,377 +185,377 @@ __publicField(AeicoField, "props", {
185
185
  __publicField(AeicoField, "watchers", {
186
186
  disabled: "onDisabledChanged"
187
187
  });
188
- const styleVariables = `:root,\r
189
- :host {\r
190
- --ae-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue",\r
191
- "Noto Sans", "Liberation Sans", Arial, sans-serif,\r
192
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\r
193
- --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\r
194
- "Liberation Mono", "Courier New", monospace;\r
195
- font-family: var(--ae-font-sans-serif);\r
196
- --blue: #0e639c;\r
197
- --green: #28a745;\r
198
- --red: #dc3545;\r
199
- --yellow: #ffc107;\r
200
- --cyan: #17a2b8;\r
201
- --gray: #6e6e6e;\r
202
- --slate: #64748b;\r
203
- --dark: #343a40;\r
204
- --light: #f8f9fa;\r
205
- }\r
206
- \r
207
- :root,\r
208
- :host {\r
209
- /* Blue */\r
210
- --blue-100: color-mix(in srgb, var(--blue) 20%, white);\r
211
- --blue-200: color-mix(in srgb, var(--blue) 40%, white);\r
212
- --blue-300: color-mix(in srgb, var(--blue) 60%, white);\r
213
- --blue-400: color-mix(in srgb, var(--blue) 80%, white);\r
214
- --blue-500: var(--blue);\r
215
- --blue-600: color-mix(in srgb, var(--blue) 80%, black);\r
216
- --blue-700: color-mix(in srgb, var(--blue) 60%, black);\r
217
- --blue-800: color-mix(in srgb, var(--blue) 40%, black);\r
218
- --blue-900: color-mix(in srgb, var(--blue) 20%, black);\r
219
- \r
220
- /* Green */\r
221
- --green-100: color-mix(in srgb, var(--green) 20%, white);\r
222
- --green-200: color-mix(in srgb, var(--green) 40%, white);\r
223
- --green-300: color-mix(in srgb, var(--green) 60%, white);\r
224
- --green-400: color-mix(in srgb, var(--green) 80%, white);\r
225
- --green-500: var(--green);\r
226
- --green-600: color-mix(in srgb, var(--green) 80%, black);\r
227
- --green-700: color-mix(in srgb, var(--green) 60%, black);\r
228
- --green-800: color-mix(in srgb, var(--green) 40%, black);\r
229
- --green-900: color-mix(in srgb, var(--green) 20%, black);\r
230
- \r
231
- /* Red */\r
232
- --red-100: color-mix(in srgb, var(--red) 20%, white);\r
233
- --red-200: color-mix(in srgb, var(--red) 40%, white);\r
234
- --red-300: color-mix(in srgb, var(--red) 60%, white);\r
235
- --red-400: color-mix(in srgb, var(--red) 80%, white);\r
236
- --red-500: var(--red);\r
237
- --red-600: color-mix(in srgb, var(--red) 80%, black);\r
238
- --red-700: color-mix(in srgb, var(--red) 60%, black);\r
239
- --red-800: color-mix(in srgb, var(--red) 40%, black);\r
240
- --red-900: color-mix(in srgb, var(--red) 20%, black);\r
241
- \r
242
- /* Yellow */\r
243
- --yellow-100: color-mix(in srgb, var(--yellow) 20%, white);\r
244
- --yellow-200: color-mix(in srgb, var(--yellow) 40%, white);\r
245
- --yellow-300: color-mix(in srgb, var(--yellow) 60%, white);\r
246
- --yellow-400: color-mix(in srgb, var(--yellow) 80%, white);\r
247
- --yellow-500: var(--yellow);\r
248
- --yellow-600: color-mix(in srgb, var(--yellow) 80%, black);\r
249
- --yellow-700: color-mix(in srgb, var(--yellow) 60%, black);\r
250
- --yellow-800: color-mix(in srgb, var(--yellow) 40%, black);\r
251
- --yellow-900: color-mix(in srgb, var(--yellow) 20%, black);\r
252
- \r
253
- /* Cyan */\r
254
- --cyan-100: color-mix(in srgb, var(--cyan) 20%, white);\r
255
- --cyan-200: color-mix(in srgb, var(--cyan) 40%, white);\r
256
- --cyan-300: color-mix(in srgb, var(--cyan) 60%, white);\r
257
- --cyan-400: color-mix(in srgb, var(--cyan) 80%, white);\r
258
- --cyan-500: var(--cyan);\r
259
- --cyan-600: color-mix(in srgb, var(--cyan) 80%, black);\r
260
- --cyan-700: color-mix(in srgb, var(--cyan) 60%, black);\r
261
- --cyan-800: color-mix(in srgb, var(--cyan) 40%, black);\r
262
- --cyan-900: color-mix(in srgb, var(--cyan) 20%, black);\r
263
- \r
264
- /* Gray (neutral — base #6e6e6e) */\r
265
- --gray-100: color-mix(in srgb, var(--gray) 20%, white);\r
266
- --gray-200: color-mix(in srgb, var(--gray) 40%, white);\r
267
- --gray-300: color-mix(in srgb, var(--gray) 60%, white);\r
268
- --gray-400: color-mix(in srgb, var(--gray) 80%, white);\r
269
- --gray-500: var(--gray);\r
270
- --gray-600: color-mix(in srgb, var(--gray) 80%, black);\r
271
- --gray-700: color-mix(in srgb, var(--gray) 60%, black);\r
272
- --gray-800: color-mix(in srgb, var(--gray) 40%, black);\r
273
- --gray-900: color-mix(in srgb, var(--gray) 20%, black);\r
274
- \r
275
- /* Slate (blue-gray — base #64748b, used for 'secondary') */\r
276
- --slate-100: color-mix(in srgb, var(--slate) 20%, white);\r
277
- --slate-200: color-mix(in srgb, var(--slate) 40%, white);\r
278
- --slate-300: color-mix(in srgb, var(--slate) 60%, white);\r
279
- --slate-400: color-mix(in srgb, var(--slate) 80%, white);\r
280
- --slate-500: var(--slate);\r
281
- --slate-600: color-mix(in srgb, var(--slate) 80%, black);\r
282
- --slate-700: color-mix(in srgb, var(--slate) 60%, black);\r
283
- --slate-800: color-mix(in srgb, var(--slate) 40%, black);\r
284
- --slate-900: color-mix(in srgb, var(--slate) 20%, black);\r
285
- \r
286
- /* Dark (base #343a40) */\r
287
- --dark-100: color-mix(in srgb, var(--dark) 20%, white);\r
288
- --dark-200: color-mix(in srgb, var(--dark) 40%, white);\r
289
- --dark-300: color-mix(in srgb, var(--dark) 60%, white);\r
290
- --dark-400: color-mix(in srgb, var(--dark) 80%, white);\r
291
- --dark-500: var(--dark);\r
292
- --dark-600: color-mix(in srgb, var(--dark) 80%, black);\r
293
- --dark-700: color-mix(in srgb, var(--dark) 60%, black);\r
294
- --dark-800: color-mix(in srgb, var(--dark) 40%, black);\r
295
- --dark-900: color-mix(in srgb, var(--dark) 20%, black);\r
296
- \r
297
- /* Light (base #f8f9fa) */\r
298
- --light-100: color-mix(in srgb, var(--light) 20%, white);\r
299
- --light-200: color-mix(in srgb, var(--light) 40%, white);\r
300
- --light-300: color-mix(in srgb, var(--light) 60%, white);\r
301
- --light-400: color-mix(in srgb, var(--light) 80%, white);\r
302
- --light-500: var(--light);\r
303
- --light-600: color-mix(in srgb, var(--light) 80%, black);\r
304
- --light-700: color-mix(in srgb, var(--light) 60%, black);\r
305
- --light-800: color-mix(in srgb, var(--light) 40%, black);\r
306
- --light-900: color-mix(in srgb, var(--light) 20%, black);\r
307
- }\r
308
- \r
309
- :root,\r
310
- :host {\r
311
- /* Hover / active mix (light default — overridden in § 6 dark) */\r
312
- --color-mix-hover: black 10%;\r
313
- --color-mix-active: black 20%;\r
314
- \r
315
- /* Primary (Blue) */\r
316
- --color-primary: var(--blue-500);\r
317
- --color-primary-hover: color-mix(in srgb, var(--color-primary), var(--color-mix-hover));\r
318
- --color-primary-active: color-mix(in srgb, var(--color-primary), var(--color-mix-active));\r
319
- --color-primary-disabled: color-mix(in srgb, var(--blue) 50%, var(--gray-500));\r
320
- \r
321
- /* Success (Green) */\r
322
- --color-success: var(--green-500);\r
323
- --color-success-hover: color-mix(in srgb, var(--color-success), var(--color-mix-hover));\r
324
- --color-success-active: color-mix(in srgb, var(--color-success), var(--color-mix-active));\r
325
- --color-success-disabled: color-mix(in srgb, var(--green) 50%, var(--gray-500));\r
326
- \r
327
- /* Danger (Red) */\r
328
- --color-danger: var(--red-500);\r
329
- --color-danger-hover: color-mix(in srgb, var(--color-danger), var(--color-mix-hover));\r
330
- --color-danger-active: color-mix(in srgb, var(--color-danger), var(--color-mix-active));\r
331
- --color-danger-disabled: color-mix(in srgb, var(--red) 50%, var(--gray-500));\r
332
- \r
333
- /* Warning (Yellow) */\r
334
- --color-warning: var(--yellow-500);\r
335
- --color-warning-hover: color-mix(in srgb, var(--color-warning), var(--color-mix-hover));\r
336
- --color-warning-active: color-mix(in srgb, var(--color-warning), var(--color-mix-active));\r
337
- --color-warning-disabled: color-mix(in srgb, var(--yellow) 50%, var(--gray-500));\r
338
- \r
339
- /* Info (Cyan) */\r
340
- --color-info: var(--cyan-500);\r
341
- --color-info-hover: color-mix(in srgb, var(--color-info), var(--color-mix-hover));\r
342
- --color-info-active: color-mix(in srgb, var(--color-info), var(--color-mix-active));\r
343
- --color-info-disabled: color-mix(in srgb, var(--cyan) 50%, var(--gray-500));\r
344
- \r
345
- /* Secondary (Slate) — base differs per theme, overridden in § 6 dark */\r
346
- --color-secondary: var(--slate-500);\r
347
- --color-secondary-hover: color-mix(in srgb, var(--color-secondary), var(--color-mix-hover));\r
348
- --color-secondary-active: color-mix(in srgb, var(--color-secondary), var(--color-mix-active));\r
349
- --color-secondary-text: var(--slate-700);\r
350
- \r
351
- /* On-solid — text color on filled (saturated) backgrounds.\r
352
- Fixed white: blue/green/red/cyan buttons always have white text.\r
353
- Does NOT follow --color-text-main. */\r
354
- --color-on-solid: white;\r
355
- }\r
356
- \r
357
- \r
358
- .theme-light,\r
359
- :root[theme="light"],\r
360
- :host([theme="light"]),\r
361
- :host-context([theme="light"]),\r
362
- :where(:root),\r
363
- :host {\r
364
- color-scheme: light;\r
365
- \r
366
- /* Gray UI aliases — lighter palette steps for elements on white background */\r
367
- --color-gray-dark: var(--gray-400);\r
368
- --color-gray: var(--gray-300);\r
369
- --color-gray-light: var(--gray-200);\r
370
- --color-gray-lighter: var(--gray-100);\r
371
- --color-gray-lightest: color-mix(in srgb, var(--gray) 10%, white);\r
372
- \r
373
- /* Text */\r
374
- --color-text-main: var(--dark-700);\r
375
- --color-text-muted: var(--gray-600);\r
376
- --color-text-disabled: var(--gray-300);\r
377
- --color-text-link: var(--blue-500);\r
378
- --color-text-link-hover: var(--blue-700);\r
379
- \r
380
- /* Surfaces */\r
381
- --surface-sunken: var(--light-500);\r
382
- --surface-base: white;\r
383
- --surface-raised: var(--light-500);\r
384
- --surface-overlay: white;\r
385
- --color-overlay: rgba(0, 0, 0, 0.4);\r
386
- \r
387
- /* Borders */\r
388
- --border-subtle: rgba(0, 0, 0, 0.08);\r
389
- --border-default: rgba(0, 0, 0, 0.15);\r
390
- --border-hover: rgba(0, 0, 0, 0.25);\r
391
- --border-focus: var(--color-primary);\r
392
- --border-disabled: rgba(0, 0, 0, 0.06);\r
393
- \r
394
- /* Focus ring */\r
395
- --focus-ring: rgb(from var(--blue) r g b / 0.30);\r
396
- --focus-ring-sm: rgb(from var(--blue) r g b / 0.15);\r
397
- \r
398
- /* Subtle intent tokens — light context */\r
399
- --color-primary-bg-subtle: rgb(from var(--blue) r g b / 0.08);\r
400
- --color-primary-border-subtle: rgb(from var(--blue) r g b / 0.40);\r
401
- --color-primary-text-emphasis: var(--blue-700);\r
402
- \r
403
- --color-success-bg-subtle: rgb(from var(--green) r g b / 0.08);\r
404
- --color-success-border-subtle: rgb(from var(--green) r g b / 0.40);\r
405
- --color-success-text-emphasis: var(--green-700);\r
406
- \r
407
- --color-danger-bg-subtle: rgb(from var(--red) r g b / 0.08);\r
408
- --color-danger-border-subtle: rgb(from var(--red) r g b / 0.40);\r
409
- --color-danger-text-emphasis: var(--red-700);\r
410
- \r
411
- --color-warning-bg-subtle: rgb(from var(--yellow) r g b / 0.08);\r
412
- --color-warning-border-subtle: rgb(from var(--yellow) r g b / 0.40);\r
413
- --color-warning-text-emphasis: var(--yellow-700);\r
414
- \r
415
- --color-info-bg-subtle: rgb(from var(--cyan) r g b / 0.08);\r
416
- --color-info-border-subtle: rgb(from var(--cyan) r g b / 0.40);\r
417
- --color-info-text-emphasis: var(--cyan-700);\r
418
- \r
419
- --color-secondary-bg-subtle: rgb(from var(--slate) r g b / 0.08);\r
420
- --color-secondary-border-subtle: rgb(from var(--slate) r g b / 0.40);\r
421
- --color-secondary-text-emphasis: var(--slate-700);\r
422
- \r
423
- --color-light-bg-subtle: var(--gray-100); /* opaque on white: ~#e2e2e2 */\r
424
- --color-light-border-subtle: var(--gray-200); /* opaque on white: ~#c4c4c4 */\r
425
- \r
426
- --color-dark-bg-subtle: var(--dark-100); /* opaque on white: ~#d6d8d9 */\r
427
- --color-dark-border-subtle: var(--dark-300); /* opaque on white: ~#85898c */\r
428
- \r
429
- /* Component tokens — light defaults */\r
430
- --action-btn-bg: var(--gray-200);\r
431
- --action-btn-bg-hover: var(--color-primary);\r
432
- --action-btn-color: var(--gray-600);\r
433
- --action-btn-color-hover: white;\r
434
- \r
435
- --clear-btn-bg-hover: var(--color-danger);\r
436
- --clear-btn-color-hover: white;\r
437
- \r
438
- --reset-btn-border-radius: 2px;\r
439
- --reset-btn-bg: var(--action-btn-bg);\r
440
- --reset-btn-bg-hover: var(--action-btn-bg-hover);\r
441
- --reset-btn-color: var(--action-btn-color);\r
442
- --reset-btn-color-hover: var(--action-btn-color-hover);\r
443
- --reset-btn-transition: all 0.12s;\r
444
- \r
445
- --clear-btn-border-radius: 2px;\r
446
- --clear-btn-bg: var(--action-btn-bg);\r
447
- --clear-btn-color: var(--action-btn-color);\r
448
- --clear-btn-transition: all 0.12s;\r
449
- }\r
450
- \r
451
- :root,\r
452
- :host {\r
453
- --size-scale: 1;\r
454
- --size-base: calc(1rem * var(--size-scale)); /* 16px */\r
455
- --size-xl: round(calc(var(--size-l) * 1.125), 1px); /* 23px */\r
456
- --size-l: round(calc(var(--size-m) * 1.125 * 1.125), 1px); /* 20px */\r
457
- --size-m: var(--size-base); /* 16px */\r
458
- --size-s: round(calc(var(--size-m) / 1.125), 1px); /* 14px */\r
459
- --size-xs: round(calc(var(--size-s) / 1.125), 1px); /* 12px */\r
460
- --size-2xs: round(calc(var(--size-xs) / 1.125), 1px); /* 11px */\r
461
- --size-3xs: round(calc(var(--size-2xs) / 1.125), 1px); /* 10px */\r
462
- }\r
463
- \r
464
- /* Layout tokens — defined on :root so all light DOM elements can use them */\r
465
- :root,\r
466
- :host {\r
467
- --container-max-width: 1280px;\r
468
- --container-padding-x: 1.5rem;\r
469
- }\r
470
- \r
471
- .theme-dark,\r
472
- :root[theme="dark"],\r
473
- :host([theme="dark"]),\r
474
- :host-context([theme="dark"]) {\r
475
- color-scheme: dark;\r
476
- \r
477
- /* Hover / active — slightly gentler on dark backgrounds */\r
478
- --color-mix-hover: black 8%;\r
479
- --color-mix-active: black 16%;\r
480
- \r
481
- /* Gray UI aliases — darker palette steps for elements on dark background */\r
482
- --color-gray-dark: var(--gray-800);\r
483
- --color-gray: var(--gray-700);\r
484
- --color-gray-light: var(--gray-600);\r
485
- --color-gray-lighter: var(--gray-500);\r
486
- --color-gray-lightest: var(--gray-400);\r
487
- \r
488
- /* Secondary — deeper base on dark background */\r
489
- --color-secondary: var(--slate-700);\r
490
- --color-secondary-text: var(--slate-300);\r
491
- \r
492
- /* Text */\r
493
- --color-text-main: white;\r
494
- --color-text-muted: var(--gray-200);\r
495
- --color-text-disabled: var(--gray-500);\r
496
- --color-text-link: var(--blue-300);\r
497
- --color-text-link-hover: var(--blue-200);\r
498
- \r
499
- /* Surfaces */\r
500
- --surface-sunken: var(--gray-900);\r
501
- --surface-base: color-mix(in srgb, var(--gray) 27%, black);\r
502
- --surface-raised: color-mix(in srgb, var(--gray) 34%, black);\r
503
- --surface-overlay: color-mix(in srgb, var(--gray) 38%, black);\r
504
- --color-overlay: rgba(0, 0, 0, 0.6);\r
505
- \r
506
- /* Borders */\r
507
- --border-subtle: rgba(255, 255, 255, 0.08);\r
508
- --border-default: rgba(255, 255, 255, 0.12);\r
509
- --border-hover: rgba(255, 255, 255, 0.20);\r
510
- --border-focus: var(--color-primary);\r
511
- --border-disabled: rgba(255, 255, 255, 0.06);\r
512
- \r
513
- /* Focus ring */\r
514
- --focus-ring: rgb(from var(--blue) r g b / 0.25);\r
515
- --focus-ring-sm: rgb(from var(--blue) r g b / 0.10);\r
516
- \r
517
- /* Subtle intent tokens — dark context (more alpha, lighter text-emphasis) */\r
518
- --color-primary-bg-subtle: rgb(from var(--blue) r g b / 0.10);\r
519
- --color-primary-border-subtle: rgb(from var(--blue) r g b / 0.30);\r
520
- --color-primary-text-emphasis: var(--blue-300);\r
521
- \r
522
- --color-success-bg-subtle: rgb(from var(--green) r g b / 0.10);\r
523
- --color-success-border-subtle: rgb(from var(--green) r g b / 0.30);\r
524
- --color-success-text-emphasis: var(--green-300);\r
525
- \r
526
- --color-danger-bg-subtle: rgb(from var(--red) r g b / 0.10);\r
527
- --color-danger-border-subtle: rgb(from var(--red) r g b / 0.30);\r
528
- --color-danger-text-emphasis: var(--red-300);\r
529
- \r
530
- --color-warning-bg-subtle: rgb(from var(--yellow) r g b / 0.10);\r
531
- --color-warning-border-subtle: rgb(from var(--yellow) r g b / 0.30);\r
532
- --color-warning-text-emphasis: var(--yellow-300);\r
533
- \r
534
- --color-info-bg-subtle: rgb(from var(--cyan) r g b / 0.10);\r
535
- --color-info-border-subtle: rgb(from var(--cyan) r g b / 0.30);\r
536
- --color-info-text-emphasis: var(--cyan-300);\r
537
- \r
538
- --color-secondary-bg-subtle: rgb(from var(--slate) r g b / 0.10);\r
539
- --color-secondary-border-subtle: rgb(from var(--slate) r g b / 0.30);\r
540
- --color-secondary-text-emphasis: var(--slate-300);\r
541
- \r
542
- --color-light-bg-subtle: rgb(from var(--light) r g b / 0.20);\r
543
- --color-light-border-subtle: rgb(from var(--light) r g b / 0.25);\r
544
- \r
545
- --color-dark-bg-subtle: rgb(from var(--dark) r g b / 0.30);\r
546
- --color-dark-border-subtle: rgb(from var(--dark) r g b / 0.50);\r
547
- \r
548
- /* Component tokens — dark overrides */\r
549
- --action-btn-bg: var(--color-gray);\r
550
- --action-btn-bg-hover: color-mix(in srgb, var(--blue) 25%, var(--gray-800));\r
551
- --action-btn-color: var(--gray-400);\r
552
- --action-btn-color-hover: var(--cyan-300);\r
553
- --clear-btn-bg-hover: color-mix(in srgb, var(--red) 25%, var(--gray-800));\r
554
- --clear-btn-color-hover: var(--red-300);\r
555
- }\r
188
+ const styleVariables = `:root,
189
+ :host {
190
+ --ae-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue",
191
+ "Noto Sans", "Liberation Sans", Arial, sans-serif,
192
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
193
+ --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
194
+ "Liberation Mono", "Courier New", monospace;
195
+ font-family: var(--ae-font-sans-serif);
196
+ --blue: #0e639c;
197
+ --green: #28a745;
198
+ --red: #dc3545;
199
+ --yellow: #ffc107;
200
+ --cyan: #17a2b8;
201
+ --gray: #6e6e6e;
202
+ --slate: #64748b;
203
+ --dark: #343a40;
204
+ --light: #f8f9fa;
205
+ }
206
+
207
+ :root,
208
+ :host {
209
+ /* Blue */
210
+ --blue-100: color-mix(in srgb, var(--blue) 20%, white);
211
+ --blue-200: color-mix(in srgb, var(--blue) 40%, white);
212
+ --blue-300: color-mix(in srgb, var(--blue) 60%, white);
213
+ --blue-400: color-mix(in srgb, var(--blue) 80%, white);
214
+ --blue-500: var(--blue);
215
+ --blue-600: color-mix(in srgb, var(--blue) 80%, black);
216
+ --blue-700: color-mix(in srgb, var(--blue) 60%, black);
217
+ --blue-800: color-mix(in srgb, var(--blue) 40%, black);
218
+ --blue-900: color-mix(in srgb, var(--blue) 20%, black);
219
+
220
+ /* Green */
221
+ --green-100: color-mix(in srgb, var(--green) 20%, white);
222
+ --green-200: color-mix(in srgb, var(--green) 40%, white);
223
+ --green-300: color-mix(in srgb, var(--green) 60%, white);
224
+ --green-400: color-mix(in srgb, var(--green) 80%, white);
225
+ --green-500: var(--green);
226
+ --green-600: color-mix(in srgb, var(--green) 80%, black);
227
+ --green-700: color-mix(in srgb, var(--green) 60%, black);
228
+ --green-800: color-mix(in srgb, var(--green) 40%, black);
229
+ --green-900: color-mix(in srgb, var(--green) 20%, black);
230
+
231
+ /* Red */
232
+ --red-100: color-mix(in srgb, var(--red) 20%, white);
233
+ --red-200: color-mix(in srgb, var(--red) 40%, white);
234
+ --red-300: color-mix(in srgb, var(--red) 60%, white);
235
+ --red-400: color-mix(in srgb, var(--red) 80%, white);
236
+ --red-500: var(--red);
237
+ --red-600: color-mix(in srgb, var(--red) 80%, black);
238
+ --red-700: color-mix(in srgb, var(--red) 60%, black);
239
+ --red-800: color-mix(in srgb, var(--red) 40%, black);
240
+ --red-900: color-mix(in srgb, var(--red) 20%, black);
241
+
242
+ /* Yellow */
243
+ --yellow-100: color-mix(in srgb, var(--yellow) 20%, white);
244
+ --yellow-200: color-mix(in srgb, var(--yellow) 40%, white);
245
+ --yellow-300: color-mix(in srgb, var(--yellow) 60%, white);
246
+ --yellow-400: color-mix(in srgb, var(--yellow) 80%, white);
247
+ --yellow-500: var(--yellow);
248
+ --yellow-600: color-mix(in srgb, var(--yellow) 80%, black);
249
+ --yellow-700: color-mix(in srgb, var(--yellow) 60%, black);
250
+ --yellow-800: color-mix(in srgb, var(--yellow) 40%, black);
251
+ --yellow-900: color-mix(in srgb, var(--yellow) 20%, black);
252
+
253
+ /* Cyan */
254
+ --cyan-100: color-mix(in srgb, var(--cyan) 20%, white);
255
+ --cyan-200: color-mix(in srgb, var(--cyan) 40%, white);
256
+ --cyan-300: color-mix(in srgb, var(--cyan) 60%, white);
257
+ --cyan-400: color-mix(in srgb, var(--cyan) 80%, white);
258
+ --cyan-500: var(--cyan);
259
+ --cyan-600: color-mix(in srgb, var(--cyan) 80%, black);
260
+ --cyan-700: color-mix(in srgb, var(--cyan) 60%, black);
261
+ --cyan-800: color-mix(in srgb, var(--cyan) 40%, black);
262
+ --cyan-900: color-mix(in srgb, var(--cyan) 20%, black);
263
+
264
+ /* Gray (neutral — base #6e6e6e) */
265
+ --gray-100: color-mix(in srgb, var(--gray) 20%, white);
266
+ --gray-200: color-mix(in srgb, var(--gray) 40%, white);
267
+ --gray-300: color-mix(in srgb, var(--gray) 60%, white);
268
+ --gray-400: color-mix(in srgb, var(--gray) 80%, white);
269
+ --gray-500: var(--gray);
270
+ --gray-600: color-mix(in srgb, var(--gray) 80%, black);
271
+ --gray-700: color-mix(in srgb, var(--gray) 60%, black);
272
+ --gray-800: color-mix(in srgb, var(--gray) 40%, black);
273
+ --gray-900: color-mix(in srgb, var(--gray) 20%, black);
274
+
275
+ /* Slate (blue-gray — base #64748b, used for 'secondary') */
276
+ --slate-100: color-mix(in srgb, var(--slate) 20%, white);
277
+ --slate-200: color-mix(in srgb, var(--slate) 40%, white);
278
+ --slate-300: color-mix(in srgb, var(--slate) 60%, white);
279
+ --slate-400: color-mix(in srgb, var(--slate) 80%, white);
280
+ --slate-500: var(--slate);
281
+ --slate-600: color-mix(in srgb, var(--slate) 80%, black);
282
+ --slate-700: color-mix(in srgb, var(--slate) 60%, black);
283
+ --slate-800: color-mix(in srgb, var(--slate) 40%, black);
284
+ --slate-900: color-mix(in srgb, var(--slate) 20%, black);
285
+
286
+ /* Dark (base #343a40) */
287
+ --dark-100: color-mix(in srgb, var(--dark) 20%, white);
288
+ --dark-200: color-mix(in srgb, var(--dark) 40%, white);
289
+ --dark-300: color-mix(in srgb, var(--dark) 60%, white);
290
+ --dark-400: color-mix(in srgb, var(--dark) 80%, white);
291
+ --dark-500: var(--dark);
292
+ --dark-600: color-mix(in srgb, var(--dark) 80%, black);
293
+ --dark-700: color-mix(in srgb, var(--dark) 60%, black);
294
+ --dark-800: color-mix(in srgb, var(--dark) 40%, black);
295
+ --dark-900: color-mix(in srgb, var(--dark) 20%, black);
296
+
297
+ /* Light (base #f8f9fa) */
298
+ --light-100: color-mix(in srgb, var(--light) 20%, white);
299
+ --light-200: color-mix(in srgb, var(--light) 40%, white);
300
+ --light-300: color-mix(in srgb, var(--light) 60%, white);
301
+ --light-400: color-mix(in srgb, var(--light) 80%, white);
302
+ --light-500: var(--light);
303
+ --light-600: color-mix(in srgb, var(--light) 80%, black);
304
+ --light-700: color-mix(in srgb, var(--light) 60%, black);
305
+ --light-800: color-mix(in srgb, var(--light) 40%, black);
306
+ --light-900: color-mix(in srgb, var(--light) 20%, black);
307
+ }
308
+
309
+ :root,
310
+ :host {
311
+ /* Hover / active mix (light default — overridden in § 6 dark) */
312
+ --color-mix-hover: black 10%;
313
+ --color-mix-active: black 20%;
314
+
315
+ /* Primary (Blue) */
316
+ --color-primary: var(--blue-500);
317
+ --color-primary-hover: color-mix(in srgb, var(--color-primary), var(--color-mix-hover));
318
+ --color-primary-active: color-mix(in srgb, var(--color-primary), var(--color-mix-active));
319
+ --color-primary-disabled: color-mix(in srgb, var(--blue) 50%, var(--gray-500));
320
+
321
+ /* Success (Green) */
322
+ --color-success: var(--green-500);
323
+ --color-success-hover: color-mix(in srgb, var(--color-success), var(--color-mix-hover));
324
+ --color-success-active: color-mix(in srgb, var(--color-success), var(--color-mix-active));
325
+ --color-success-disabled: color-mix(in srgb, var(--green) 50%, var(--gray-500));
326
+
327
+ /* Danger (Red) */
328
+ --color-danger: var(--red-500);
329
+ --color-danger-hover: color-mix(in srgb, var(--color-danger), var(--color-mix-hover));
330
+ --color-danger-active: color-mix(in srgb, var(--color-danger), var(--color-mix-active));
331
+ --color-danger-disabled: color-mix(in srgb, var(--red) 50%, var(--gray-500));
332
+
333
+ /* Warning (Yellow) */
334
+ --color-warning: var(--yellow-500);
335
+ --color-warning-hover: color-mix(in srgb, var(--color-warning), var(--color-mix-hover));
336
+ --color-warning-active: color-mix(in srgb, var(--color-warning), var(--color-mix-active));
337
+ --color-warning-disabled: color-mix(in srgb, var(--yellow) 50%, var(--gray-500));
338
+
339
+ /* Info (Cyan) */
340
+ --color-info: var(--cyan-500);
341
+ --color-info-hover: color-mix(in srgb, var(--color-info), var(--color-mix-hover));
342
+ --color-info-active: color-mix(in srgb, var(--color-info), var(--color-mix-active));
343
+ --color-info-disabled: color-mix(in srgb, var(--cyan) 50%, var(--gray-500));
344
+
345
+ /* Secondary (Slate) — base differs per theme, overridden in § 6 dark */
346
+ --color-secondary: var(--slate-500);
347
+ --color-secondary-hover: color-mix(in srgb, var(--color-secondary), var(--color-mix-hover));
348
+ --color-secondary-active: color-mix(in srgb, var(--color-secondary), var(--color-mix-active));
349
+ --color-secondary-text: var(--slate-700);
350
+
351
+ /* On-solid — text color on filled (saturated) backgrounds.
352
+ Fixed white: blue/green/red/cyan buttons always have white text.
353
+ Does NOT follow --color-text-main. */
354
+ --color-on-solid: white;
355
+ }
356
+
357
+
358
+ .theme-light,
359
+ :root[theme="light"],
360
+ :host([theme="light"]),
361
+ :host-context([theme="light"]),
362
+ :where(:root),
363
+ :host {
364
+ color-scheme: light;
365
+
366
+ /* Gray UI aliases — lighter palette steps for elements on white background */
367
+ --color-gray-dark: var(--gray-400);
368
+ --color-gray: var(--gray-300);
369
+ --color-gray-light: var(--gray-200);
370
+ --color-gray-lighter: var(--gray-100);
371
+ --color-gray-lightest: color-mix(in srgb, var(--gray) 10%, white);
372
+
373
+ /* Text */
374
+ --color-text-main: var(--dark-700);
375
+ --color-text-muted: var(--gray-600);
376
+ --color-text-disabled: var(--gray-300);
377
+ --color-text-link: var(--blue-500);
378
+ --color-text-link-hover: var(--blue-700);
379
+
380
+ /* Surfaces */
381
+ --surface-sunken: var(--light-500);
382
+ --surface-base: white;
383
+ --surface-raised: var(--light-500);
384
+ --surface-overlay: white;
385
+ --color-overlay: rgba(0, 0, 0, 0.4);
386
+
387
+ /* Borders */
388
+ --border-subtle: rgba(0, 0, 0, 0.08);
389
+ --border-default: rgba(0, 0, 0, 0.15);
390
+ --border-hover: rgba(0, 0, 0, 0.25);
391
+ --border-focus: var(--color-primary);
392
+ --border-disabled: rgba(0, 0, 0, 0.06);
393
+
394
+ /* Focus ring */
395
+ --focus-ring: rgb(from var(--blue) r g b / 0.30);
396
+ --focus-ring-sm: rgb(from var(--blue) r g b / 0.15);
397
+
398
+ /* Subtle intent tokens — light context */
399
+ --color-primary-bg-subtle: rgb(from var(--blue) r g b / 0.08);
400
+ --color-primary-border-subtle: rgb(from var(--blue) r g b / 0.40);
401
+ --color-primary-text-emphasis: var(--blue-700);
402
+
403
+ --color-success-bg-subtle: rgb(from var(--green) r g b / 0.08);
404
+ --color-success-border-subtle: rgb(from var(--green) r g b / 0.40);
405
+ --color-success-text-emphasis: var(--green-700);
406
+
407
+ --color-danger-bg-subtle: rgb(from var(--red) r g b / 0.08);
408
+ --color-danger-border-subtle: rgb(from var(--red) r g b / 0.40);
409
+ --color-danger-text-emphasis: var(--red-700);
410
+
411
+ --color-warning-bg-subtle: rgb(from var(--yellow) r g b / 0.08);
412
+ --color-warning-border-subtle: rgb(from var(--yellow) r g b / 0.40);
413
+ --color-warning-text-emphasis: var(--yellow-700);
414
+
415
+ --color-info-bg-subtle: rgb(from var(--cyan) r g b / 0.08);
416
+ --color-info-border-subtle: rgb(from var(--cyan) r g b / 0.40);
417
+ --color-info-text-emphasis: var(--cyan-700);
418
+
419
+ --color-secondary-bg-subtle: rgb(from var(--slate) r g b / 0.08);
420
+ --color-secondary-border-subtle: rgb(from var(--slate) r g b / 0.40);
421
+ --color-secondary-text-emphasis: var(--slate-700);
422
+
423
+ --color-light-bg-subtle: var(--gray-100); /* opaque on white: ~#e2e2e2 */
424
+ --color-light-border-subtle: var(--gray-200); /* opaque on white: ~#c4c4c4 */
425
+
426
+ --color-dark-bg-subtle: var(--dark-100); /* opaque on white: ~#d6d8d9 */
427
+ --color-dark-border-subtle: var(--dark-300); /* opaque on white: ~#85898c */
428
+
429
+ /* Component tokens — light defaults */
430
+ --action-btn-bg: var(--gray-200);
431
+ --action-btn-bg-hover: var(--color-primary);
432
+ --action-btn-color: var(--gray-600);
433
+ --action-btn-color-hover: white;
434
+
435
+ --clear-btn-bg-hover: var(--color-danger);
436
+ --clear-btn-color-hover: white;
437
+
438
+ --reset-btn-border-radius: 2px;
439
+ --reset-btn-bg: var(--action-btn-bg);
440
+ --reset-btn-bg-hover: var(--action-btn-bg-hover);
441
+ --reset-btn-color: var(--action-btn-color);
442
+ --reset-btn-color-hover: var(--action-btn-color-hover);
443
+ --reset-btn-transition: all 0.12s;
444
+
445
+ --clear-btn-border-radius: 2px;
446
+ --clear-btn-bg: var(--action-btn-bg);
447
+ --clear-btn-color: var(--action-btn-color);
448
+ --clear-btn-transition: all 0.12s;
449
+ }
450
+
451
+ :root,
452
+ :host {
453
+ --size-scale: 1;
454
+ --size-base: calc(1rem * var(--size-scale)); /* 16px */
455
+ --size-xl: round(calc(var(--size-l) * 1.125), 1px); /* 23px */
456
+ --size-l: round(calc(var(--size-m) * 1.125 * 1.125), 1px); /* 20px */
457
+ --size-m: var(--size-base); /* 16px */
458
+ --size-s: round(calc(var(--size-m) / 1.125), 1px); /* 14px */
459
+ --size-xs: round(calc(var(--size-s) / 1.125), 1px); /* 12px */
460
+ --size-2xs: round(calc(var(--size-xs) / 1.125), 1px); /* 11px */
461
+ --size-3xs: round(calc(var(--size-2xs) / 1.125), 1px); /* 10px */
462
+ }
463
+
464
+ /* Layout tokens — defined on :root so all light DOM elements can use them */
465
+ :root,
466
+ :host {
467
+ --container-max-width: 1280px;
468
+ --container-padding-x: 1.5rem;
469
+ }
470
+
471
+ .theme-dark,
472
+ :root[theme="dark"],
473
+ :host([theme="dark"]),
474
+ :host-context([theme="dark"]) {
475
+ color-scheme: dark;
476
+
477
+ /* Hover / active — slightly gentler on dark backgrounds */
478
+ --color-mix-hover: black 8%;
479
+ --color-mix-active: black 16%;
480
+
481
+ /* Gray UI aliases — darker palette steps for elements on dark background */
482
+ --color-gray-dark: var(--gray-800);
483
+ --color-gray: var(--gray-700);
484
+ --color-gray-light: var(--gray-600);
485
+ --color-gray-lighter: var(--gray-500);
486
+ --color-gray-lightest: var(--gray-400);
487
+
488
+ /* Secondary — deeper base on dark background */
489
+ --color-secondary: var(--slate-700);
490
+ --color-secondary-text: var(--slate-300);
491
+
492
+ /* Text */
493
+ --color-text-main: white;
494
+ --color-text-muted: var(--gray-200);
495
+ --color-text-disabled: var(--gray-500);
496
+ --color-text-link: var(--blue-300);
497
+ --color-text-link-hover: var(--blue-200);
498
+
499
+ /* Surfaces */
500
+ --surface-sunken: var(--gray-900);
501
+ --surface-base: color-mix(in srgb, var(--gray) 27%, black);
502
+ --surface-raised: color-mix(in srgb, var(--gray) 34%, black);
503
+ --surface-overlay: color-mix(in srgb, var(--gray) 38%, black);
504
+ --color-overlay: rgba(0, 0, 0, 0.6);
505
+
506
+ /* Borders */
507
+ --border-subtle: rgba(255, 255, 255, 0.08);
508
+ --border-default: rgba(255, 255, 255, 0.12);
509
+ --border-hover: rgba(255, 255, 255, 0.20);
510
+ --border-focus: var(--color-primary);
511
+ --border-disabled: rgba(255, 255, 255, 0.06);
512
+
513
+ /* Focus ring */
514
+ --focus-ring: rgb(from var(--blue) r g b / 0.25);
515
+ --focus-ring-sm: rgb(from var(--blue) r g b / 0.10);
516
+
517
+ /* Subtle intent tokens — dark context (more alpha, lighter text-emphasis) */
518
+ --color-primary-bg-subtle: rgb(from var(--blue) r g b / 0.10);
519
+ --color-primary-border-subtle: rgb(from var(--blue) r g b / 0.30);
520
+ --color-primary-text-emphasis: var(--blue-300);
521
+
522
+ --color-success-bg-subtle: rgb(from var(--green) r g b / 0.10);
523
+ --color-success-border-subtle: rgb(from var(--green) r g b / 0.30);
524
+ --color-success-text-emphasis: var(--green-300);
525
+
526
+ --color-danger-bg-subtle: rgb(from var(--red) r g b / 0.10);
527
+ --color-danger-border-subtle: rgb(from var(--red) r g b / 0.30);
528
+ --color-danger-text-emphasis: var(--red-300);
529
+
530
+ --color-warning-bg-subtle: rgb(from var(--yellow) r g b / 0.10);
531
+ --color-warning-border-subtle: rgb(from var(--yellow) r g b / 0.30);
532
+ --color-warning-text-emphasis: var(--yellow-300);
533
+
534
+ --color-info-bg-subtle: rgb(from var(--cyan) r g b / 0.10);
535
+ --color-info-border-subtle: rgb(from var(--cyan) r g b / 0.30);
536
+ --color-info-text-emphasis: var(--cyan-300);
537
+
538
+ --color-secondary-bg-subtle: rgb(from var(--slate) r g b / 0.10);
539
+ --color-secondary-border-subtle: rgb(from var(--slate) r g b / 0.30);
540
+ --color-secondary-text-emphasis: var(--slate-300);
541
+
542
+ --color-light-bg-subtle: rgb(from var(--light) r g b / 0.20);
543
+ --color-light-border-subtle: rgb(from var(--light) r g b / 0.25);
544
+
545
+ --color-dark-bg-subtle: rgb(from var(--dark) r g b / 0.30);
546
+ --color-dark-border-subtle: rgb(from var(--dark) r g b / 0.50);
547
+
548
+ /* Component tokens — dark overrides */
549
+ --action-btn-bg: var(--color-gray);
550
+ --action-btn-bg-hover: color-mix(in srgb, var(--blue) 25%, var(--gray-800));
551
+ --action-btn-color: var(--gray-400);
552
+ --action-btn-color-hover: var(--cyan-300);
553
+ --clear-btn-bg-hover: color-mix(in srgb, var(--red) 25%, var(--gray-800));
554
+ --clear-btn-color-hover: var(--red-300);
555
+ }
556
556
  `;
557
- const sizeCSS = ':host([size="xs"]) { font-size: var(--size-xs); }\r\n:host([size="sm"]) { font-size: var(--size-s); }\r\n:host([size="md"]) { font-size: var(--size-m); }\r\n:host([size="lg"]) { font-size: var(--size-l); }\r\n:host([size="xl"]) { font-size: var(--size-xl); }\r\n:host([size="3xs"]) { font-size: var(--size-3xs); }\r\n:host([size="2xs"]) { font-size: var(--size-2xs); }\r\n';
558
- const style$a = ":host {\r\n display: block;\r\n flex: 1;\r\n min-width: 0;\r\n font-size: var(--size-base);\r\n\r\n /* Layout variables */\r\n --input-field-gap: 4px;\r\n \r\n /* Input element variables */\r\n --input-font-size: 1em;\r\n --input-padding: 0.333em 0.583em;\r\n --input-border-width: 1px;\r\n --input-border-radius: 2px;\r\n --input-border-color: var(--border-subtle);\r\n --input-border-color-hover: var(--border-default);\r\n --input-border-color-focus: var(--border-focus);\r\n --input-bg: var(--surface-base);\r\n --input-bg-hover: var(--surface-raised);\r\n --input-bg-focus: var(--surface-raised);\r\n --input-color: var(--color-text-muted);\r\n --input-placeholder-color: var(--color-text-disabled);\r\n --input-transition: border-color 0.12s, background 0.12s;\r\n}\r\n\r\n.input-container {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--input-field-gap);\r\n width: 100%;\r\n}\r\n\r\ninput {\r\n flex: 1;\r\n min-width: 0;\r\n font-size: var(--input-font-size);\r\n padding: var(--input-padding);\r\n border: var(--input-border-width) solid var(--input-border-color);\r\n border-radius: var(--input-border-radius);\r\n background: var(--input-bg);\r\n color: var(--input-color);\r\n transition: var(--input-transition);\r\n}\r\n\r\ninput::placeholder {\r\n color: var(--input-placeholder-color);\r\n}\r\n\r\ninput:focus {\r\n outline: none;\r\n border-color: var(--input-border-color-focus);\r\n background: var(--input-bg-focus);\r\n}\r\n\r\ninput:hover:not(:focus) {\r\n border-color: var(--input-border-color-hover);\r\n background: var(--input-bg-hover);\r\n}\r\n\r\ninput:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Clear button styles */\r\n.clear-btn {\r\n width: 1.333em;\r\n height: 1.333em;\r\n border: none;\r\n border-radius: var(--clear-btn-border-radius);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: var(--clear-btn-bg);\r\n color: var(--clear-btn-color);\r\n transition: var(--clear-btn-transition);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n.clear-btn:hover {\r\n background: var(--clear-btn-bg-hover);\r\n color: var(--clear-btn-color-hover);\r\n}\r\n\r\n/* Reset button styles */\r\n.reset-btn {\r\n width: 1.333em;\r\n height: 1.333em;\r\n border: none;\r\n border-radius: var(--reset-btn-border-radius);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: var(--reset-btn-bg);\r\n color: var(--reset-btn-color);\r\n transition: var(--reset-btn-transition);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n.reset-btn:hover {\r\n background: var(--reset-btn-bg-hover);\r\n color: var(--reset-btn-color-hover);\r\n}\r\n\r\n\r\n\r\n";
557
+ const sizeCSS = ':host([size="xs"]) { font-size: var(--size-xs); }\n:host([size="sm"]) { font-size: var(--size-s); }\n:host([size="md"]) { font-size: var(--size-m); }\n:host([size="lg"]) { font-size: var(--size-l); }\n:host([size="xl"]) { font-size: var(--size-xl); }\n:host([size="3xs"]) { font-size: var(--size-3xs); }\n:host([size="2xs"]) { font-size: var(--size-2xs); }\n';
558
+ const style$a = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout variables */\n --input-field-gap: 4px;\n \n /* Input element variables */\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-border-radius: 2px;\n --input-border-color: var(--border-subtle);\n --input-border-color-hover: var(--border-default);\n --input-border-color-focus: var(--border-focus);\n --input-bg: var(--surface-base);\n --input-bg-hover: var(--surface-raised);\n --input-bg-focus: var(--surface-raised);\n --input-color: var(--color-text-muted);\n --input-placeholder-color: var(--color-text-disabled);\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--input-border-color);\n border-radius: var(--input-border-radius);\n background: var(--input-bg);\n color: var(--input-color);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--input-placeholder-color);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--input-border-color-focus);\n background: var(--input-bg-focus);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--input-border-color-hover);\n background: var(--input-bg-hover);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Clear button styles */\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--clear-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--clear-btn-bg);\n color: var(--clear-btn-color);\n transition: var(--clear-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n\n/* Reset button styles */\n.reset-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n\n\n\n";
559
559
  class TextInput extends AeicoField {
560
560
  constructor() {
561
561
  super(...arguments);
@@ -604,9 +604,9 @@ __publicField(TextInput, "props", {
604
604
  });
605
605
  __publicField(TextInput, "styles", [styleVariables, sizeCSS, style$a]);
606
606
  TextInput.register();
607
- const style$9 = ":host {\r\n display: block;\r\n flex: 1;\r\n min-width: 0;\r\n font-size: var(--size-base);\r\n\r\n /* Layout variables */\r\n --select-field-gap: 2px;\r\n\r\n /* Trigger variables */\r\n --select-font-size: 1em;\r\n --select-padding: 0.333em 0.583em;\r\n --select-border-width: 1px;\r\n --select-border-radius: 2px;\r\n --select-border-color: var(--border-subtle);\r\n --select-border-color-hover: var(--border-default);\r\n --select-border-color-focus: var(--border-focus);\r\n --select-bg: var(--surface-base);\r\n --select-bg-hover: var(--surface-raised);\r\n --select-bg-focus: var(--surface-raised);\r\n --select-color: var(--color-text-muted);\r\n --select-transition: border-color 0.12s, background 0.12s;\r\n\r\n /* Arrow */\r\n --select-arrow-color: var(--color-text-muted);\r\n --select-arrow-size: 0.75em;\r\n\r\n /* Dropdown */\r\n --select-dropdown-bg: var(--surface-overlay);\r\n --select-dropdown-border: var(--border-default);\r\n --select-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n --select-dropdown-border-radius: 2px;\r\n --select-dropdown-max-height: 240px;\r\n --select-dropdown-z-index: 1000;\r\n}\r\n\r\n.container {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--select-field-gap);\r\n width: 100%;\r\n position: relative;\r\n}\r\n\r\n.trigger {\r\n flex: 1;\r\n min-width: 0;\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: 0.333em;\r\n font-size: var(--select-font-size);\r\n padding: var(--select-padding);\r\n border: var(--select-border-width) solid var(--select-border-color);\r\n border-radius: var(--select-border-radius);\r\n background: var(--select-bg);\r\n color: var(--select-color);\r\n cursor: pointer;\r\n transition: var(--select-transition);\r\n user-select: none;\r\n outline: none;\r\n box-sizing: border-box;\r\n}\r\n\r\n.trigger:hover:not(.disabled) {\r\n border-color: var(--select-border-color-hover);\r\n background: var(--select-bg-hover);\r\n}\r\n\r\n.trigger.open {\r\n border-color: var(--select-border-color-focus);\r\n background: var(--select-bg-focus);\r\n}\r\n\r\n.trigger.disabled {\r\n opacity: 0.5;\r\n cursor: default;\r\n pointer-events: none;\r\n}\r\n\r\n.value {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.placeholder {\r\n color: var(--color-text-disabled);\r\n}\r\n\r\n.selected-list {\r\n flex: 1;\r\n min-width: 0;\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 4px;\r\n align-items: center;\r\n padding: 2px 0;\r\n}\r\n\r\n/* Non-expandable (default): single-row, clip overflow */\r\n.trigger:has(.selected-list--clipped) {\r\n flex-wrap: nowrap;\r\n}\r\n\r\n.selected-list--clipped {\r\n flex-wrap: nowrap;\r\n overflow: hidden;\r\n}\r\n\r\n.overflow-indicator {\r\n flex-shrink: 0;\r\n align-self: center;\r\n padding: 1px 6px;\r\n background: color-mix(in srgb, var(--color-primary) 12%, transparent);\r\n color: var(--color-primary);\r\n border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);\r\n border-radius: 3px;\r\n font-size: 0.82em;\r\n line-height: 1.6;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n.arrow {\r\n flex-shrink: 0;\r\n align-self: center;\r\n font-size: var(--select-arrow-size);\r\n color: var(--select-arrow-color);\r\n transition: transform 0.12s;\r\n pointer-events: none;\r\n line-height: 1;\r\n}\r\n\r\n.trigger.open .arrow {\r\n transform: rotate(180deg);\r\n}\r\n\r\n.dropdown {\r\n display: none;\r\n position: absolute;\r\n z-index: var(--select-dropdown-z-index);\r\n background: var(--select-dropdown-bg);\r\n border: 1px solid var(--select-dropdown-border);\r\n border-radius: var(--select-dropdown-border-radius);\r\n box-shadow: var(--select-dropdown-shadow);\r\n max-height: var(--select-dropdown-max-height);\r\n overflow-y: auto;\r\n min-width: 100%;\r\n box-sizing: border-box;\r\n}\r\n\r\n.dropdown.open {\r\n display: block;\r\n}\r\n\r\n.dropdown.position-bottom {\r\n top: 100%;\r\n left: 0;\r\n margin-top: 2px;\r\n}\r\n\r\n.dropdown.position-top {\r\n bottom: 100%;\r\n left: 0;\r\n margin-bottom: 2px;\r\n}\r\n\r\n.dropdown.position-left {\r\n right: 100%;\r\n top: 0;\r\n margin-right: 2px;\r\n}\r\n\r\n.dropdown.position-right {\r\n left: 100%;\r\n top: 0;\r\n margin-left: 2px;\r\n}\r\n\r\n.clear-btn {\r\n width: 1.333em;\r\n height: 1.333em;\r\n border: none;\r\n border-radius: var(--clear-btn-border-radius);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: var(--clear-btn-bg);\r\n color: var(--clear-btn-color);\r\n transition: var(--clear-btn-transition);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n.clear-btn:hover {\r\n background: var(--clear-btn-bg-hover);\r\n color: var(--clear-btn-color-hover);\r\n}\r\n\r\n.reset-btn {\r\n width: 1.333em;\r\n height: 1.333em;\r\n border: none;\r\n border-radius: var(--reset-btn-border-radius);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: var(--reset-btn-bg);\r\n color: var(--reset-btn-color);\r\n transition: var(--reset-btn-transition);\r\n flex-shrink: 0;\r\n}\r\n\r\n.reset-btn:hover {\r\n background: var(--reset-btn-bg-hover);\r\n color: var(--reset-btn-color-hover);\r\n}\r\n";
608
- const colorCSS = ':host {\r\n --color-solid: var(--color-gray);\r\n --color-solid-hover: color-mix(in srgb, var(--color-solid), var(--color-mix-hover));\r\n --color-solid-active: color-mix(in srgb, var(--color-solid), var(--color-mix-active));\r\n --color-on-solid: var(--color-text-main);\r\n --color-border: var(--color-gray);\r\n --color-border-hover: color-mix(in srgb, var(--color-border), var(--color-mix-hover));\r\n --color-accent: var(--color-text-muted);\r\n --color-accent-hover: var(--color-text-main);\r\n --color-subtle: var(--border-subtle);\r\n --color-subtle-hover: var(--border-default);\r\n --color-bg-subtle: var(--border-subtle);\r\n --color-text-subtle: var(--color-text-muted);\r\n --color-border-subtle: var(--border-default);\r\n}\r\n\r\n:host([color="primary"]) {\r\n --color-solid: var(--color-primary);\r\n --color-on-solid: white;\r\n --color-border: var(--color-primary);\r\n --color-accent: var(--color-text-link);\r\n --color-accent-hover: var(--color-text-link-hover);\r\n --color-subtle: var(--color-primary-bg-subtle);\r\n --color-subtle-hover: rgb(from var(--blue) r g b / 0.15);\r\n --color-bg-subtle: var(--color-primary-bg-subtle);\r\n --color-text-subtle: var(--color-primary-text-emphasis);\r\n --color-border-subtle: var(--color-primary-border-subtle);\r\n}\r\n\r\n:host([color="secondary"]) {\r\n --color-solid: var(--color-secondary);\r\n --color-on-solid: white;\r\n --color-border: var(--color-secondary-hover);\r\n --color-accent: var(--color-secondary-text-emphasis);\r\n --color-accent-hover: var(--color-text-main);\r\n --color-subtle: rgb(from var(--slate) r g b / 0.06);\r\n --color-subtle-hover: rgb(from var(--slate) r g b / 0.12);\r\n --color-bg-subtle: var(--color-secondary-bg-subtle);\r\n --color-text-subtle: var(--color-secondary-text-emphasis);\r\n --color-border-subtle: var(--color-secondary-border-subtle);\r\n}\r\n\r\n:host([color="success"]) {\r\n --color-solid: var(--color-success);\r\n --color-on-solid: white;\r\n --color-border: var(--color-success);\r\n --color-accent: var(--color-success-text-emphasis);\r\n --color-accent-hover: var(--color-success-hover);\r\n --color-subtle: var(--color-success-bg-subtle);\r\n --color-subtle-hover: rgb(from var(--green) r g b / 0.15);\r\n --color-bg-subtle: var(--color-success-bg-subtle);\r\n --color-text-subtle: var(--color-success-text-emphasis);\r\n --color-border-subtle: var(--color-success-border-subtle);\r\n}\r\n\r\n:host([color="danger"]) {\r\n --color-solid: var(--color-danger);\r\n --color-on-solid: white;\r\n --color-border: var(--color-danger);\r\n --color-accent: var(--color-danger-text-emphasis);\r\n --color-accent-hover: var(--color-danger-hover);\r\n --color-subtle: var(--color-danger-bg-subtle);\r\n --color-subtle-hover: rgb(from var(--red) r g b / 0.15);\r\n --color-bg-subtle: var(--color-danger-bg-subtle);\r\n --color-text-subtle: var(--color-danger-text-emphasis);\r\n --color-border-subtle: var(--color-danger-border-subtle);\r\n}\r\n\r\n:host([color="warning"]) {\r\n --color-solid: var(--color-warning);\r\n --color-on-solid: var(--gray-900);\r\n --color-border: var(--color-warning);\r\n --color-accent: var(--color-warning-text-emphasis);\r\n --color-accent-hover: var(--color-warning-hover);\r\n --color-subtle: var(--color-warning-bg-subtle);\r\n --color-subtle-hover: rgb(from var(--yellow) r g b / 0.15);\r\n --color-bg-subtle: var(--color-warning-bg-subtle);\r\n --color-text-subtle: var(--color-warning-text-emphasis);\r\n --color-border-subtle: var(--color-warning-border-subtle);\r\n}\r\n\r\n:host([color="info"]) {\r\n --color-solid: var(--color-info);\r\n --color-on-solid: white;\r\n --color-border: var(--color-info);\r\n --color-accent: var(--color-info-text-emphasis);\r\n --color-accent-hover: var(--color-info-hover);\r\n --color-subtle: var(--color-info-bg-subtle);\r\n --color-subtle-hover: rgb(from var(--cyan) r g b / 0.15);\r\n --color-bg-subtle: var(--color-info-bg-subtle);\r\n --color-text-subtle: var(--color-info-text-emphasis);\r\n --color-border-subtle: var(--color-info-border-subtle);\r\n}\r\n\r\n:host([color="light"]) {\r\n --color-solid: var(--light);\r\n --color-on-solid: var(--gray-900);\r\n --color-border: var(--border-hover);\r\n --color-subtle: var(--color-light-bg-subtle);\r\n --color-subtle-hover: var(--color-light-border-subtle);\r\n --color-bg-subtle: var(--color-light-bg-subtle);\r\n --color-text-subtle: var(--color-text-muted);\r\n --color-border-subtle: var(--color-light-border-subtle);\r\n}\r\n\r\n:host([color="dark"]) {\r\n --color-solid: var(--dark-500);\r\n --color-on-solid: white;\r\n --color-border: var(--dark-500);\r\n --color-accent: var(--color-text-main);\r\n --color-accent-hover: var(--color-text-main);\r\n --color-subtle: var(--color-dark-bg-subtle);\r\n --color-subtle-hover: var(--color-dark-border-subtle);\r\n --color-bg-subtle: var(--color-dark-bg-subtle);\r\n --color-text-subtle: var(--color-text-main);\r\n --color-border-subtle: var(--color-dark-border-subtle);\r\n}\r\n';
609
- const tagStyle = ':host {\r\n display: inline-flex;\r\n align-items: center;\r\n --tag-solid-bg: var(--color-solid);\r\n --tag-solid-color: var(--color-on-solid);\r\n --tag-border: var(--color-border);\r\n --tag-accent: var(--color-accent);\r\n --tag-subtle-bg: var(--color-bg-subtle);\r\n --tag-subtle-color: var(--color-text-subtle);\r\n --tag-subtle-border: var(--color-border-subtle);\r\n}\r\n\r\n.tag {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n font-family: inherit;\r\n font-weight: 500;\r\n white-space: nowrap;\r\n vertical-align: middle;\r\n line-height: 1.2;\r\n font-size: 1em;\r\n padding: 0.15em 0.5em 0.15em 0.6em;\r\n border-radius: 4px;\r\n border: 1px solid var(--tag-solid-bg);\r\n background: var(--tag-solid-bg);\r\n color: var(--tag-solid-color);\r\n max-width: 160px;\r\n min-width: 0;\r\n}\r\n\r\n:host([variant="outlined"]) .tag {\r\n background: transparent;\r\n border-color: var(--tag-border);\r\n color: var(--tag-accent);\r\n}\r\n\r\n:host([variant="faint"]) .tag {\r\n background: var(--tag-subtle-bg);\r\n border-color: var(--tag-subtle-border);\r\n color: var(--tag-subtle-color);\r\n}\r\n\r\n:host([variant="subtle"]) .tag {\r\n background: var(--tag-subtle-bg);\r\n border-color: transparent;\r\n color: var(--tag-subtle-color);\r\n}\r\n\r\n:host([variant="text"]) .tag {\r\n background: transparent;\r\n border-color: transparent;\r\n color: var(--tag-accent);\r\n padding-left: 0;\r\n padding-right: 0;\r\n}\r\n\r\n\r\n:host([pill]) .tag { border-radius: 999px; }\r\n\r\n.tag-content {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n::slotted(ae-icon) { font-size: 1.1em; }\r\n\r\n.tag-dismiss {\r\n display: none;\r\n flex-shrink: 0;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n opacity: 0.55;\r\n line-height: 1;\r\n font-size: 1em;\r\n padding: 0 1px;\r\n border-radius: 2px;\r\n background: transparent;\r\n border: none;\r\n color: inherit;\r\n font-family: inherit;\r\n transition: opacity 0.1s, background 0.1s;\r\n}\r\n\r\n:host([dismissible]) .tag-dismiss {\r\n display: inline-flex;\r\n}\r\n\r\n.tag-dismiss:hover {\r\n opacity: 1;\r\n background: color-mix(in srgb, currentColor 15%, transparent);\r\n}\r\n\r\n/* disabled: button remains visible but is inert */\r\n:host([disabled]) .tag-dismiss {\r\n opacity: 0.4;\r\n pointer-events: none;\r\n cursor: default;\r\n}\r\n\r\n:host([disabled]) .tag {\r\n opacity: 0.6;\r\n}\r\n';
607
+ const style$9 = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout variables */\n --select-field-gap: 2px;\n\n /* Trigger variables */\n --select-font-size: 1em;\n --select-padding: 0.333em 0.583em;\n --select-border-width: 1px;\n --select-border-radius: 2px;\n --select-border-color: var(--border-subtle);\n --select-border-color-hover: var(--border-default);\n --select-border-color-focus: var(--border-focus);\n --select-bg: var(--surface-base);\n --select-bg-hover: var(--surface-raised);\n --select-bg-focus: var(--surface-raised);\n --select-color: var(--color-text-muted);\n --select-transition: border-color 0.12s, background 0.12s;\n\n /* Arrow */\n --select-arrow-color: var(--color-text-muted);\n --select-arrow-size: 0.75em;\n\n /* Dropdown */\n --select-dropdown-bg: var(--surface-overlay);\n --select-dropdown-border: var(--border-default);\n --select-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n --select-dropdown-border-radius: 2px;\n --select-dropdown-max-height: 240px;\n --select-dropdown-z-index: 1000;\n}\n\n.container {\n display: flex;\n align-items: center;\n gap: var(--select-field-gap);\n width: 100%;\n position: relative;\n}\n\n.trigger {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.333em;\n font-size: var(--select-font-size);\n padding: var(--select-padding);\n border: var(--select-border-width) solid var(--select-border-color);\n border-radius: var(--select-border-radius);\n background: var(--select-bg);\n color: var(--select-color);\n cursor: pointer;\n transition: var(--select-transition);\n user-select: none;\n outline: none;\n box-sizing: border-box;\n}\n\n.trigger:hover:not(.disabled) {\n border-color: var(--select-border-color-hover);\n background: var(--select-bg-hover);\n}\n\n.trigger.open {\n border-color: var(--select-border-color-focus);\n background: var(--select-bg-focus);\n}\n\n.trigger.disabled {\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n}\n\n.value {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.placeholder {\n color: var(--color-text-disabled);\n}\n\n.selected-list {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n padding: 2px 0;\n}\n\n/* Non-expandable (default): single-row, clip overflow */\n.trigger:has(.selected-list--clipped) {\n flex-wrap: nowrap;\n}\n\n.selected-list--clipped {\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.overflow-indicator {\n flex-shrink: 0;\n align-self: center;\n padding: 1px 6px;\n background: color-mix(in srgb, var(--color-primary) 12%, transparent);\n color: var(--color-primary);\n border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);\n border-radius: 3px;\n font-size: 0.82em;\n line-height: 1.6;\n cursor: default;\n user-select: none;\n}\n\n.arrow {\n flex-shrink: 0;\n align-self: center;\n font-size: var(--select-arrow-size);\n color: var(--select-arrow-color);\n transition: transform 0.12s;\n pointer-events: none;\n line-height: 1;\n}\n\n.trigger.open .arrow {\n transform: rotate(180deg);\n}\n\n.dropdown {\n display: none;\n position: absolute;\n z-index: var(--select-dropdown-z-index);\n background: var(--select-dropdown-bg);\n border: 1px solid var(--select-dropdown-border);\n border-radius: var(--select-dropdown-border-radius);\n box-shadow: var(--select-dropdown-shadow);\n max-height: var(--select-dropdown-max-height);\n overflow-y: auto;\n min-width: 100%;\n box-sizing: border-box;\n}\n\n.dropdown.open {\n display: block;\n}\n\n.dropdown.position-bottom {\n top: 100%;\n left: 0;\n margin-top: 2px;\n}\n\n.dropdown.position-top {\n bottom: 100%;\n left: 0;\n margin-bottom: 2px;\n}\n\n.dropdown.position-left {\n right: 100%;\n top: 0;\n margin-right: 2px;\n}\n\n.dropdown.position-right {\n left: 100%;\n top: 0;\n margin-left: 2px;\n}\n\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--clear-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--clear-btn-bg);\n color: var(--clear-btn-color);\n transition: var(--clear-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n\n.reset-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n";
608
+ const colorCSS = ':host {\n --color-solid: var(--color-gray);\n --color-solid-hover: color-mix(in srgb, var(--color-solid), var(--color-mix-hover));\n --color-solid-active: color-mix(in srgb, var(--color-solid), var(--color-mix-active));\n --color-on-solid: var(--color-text-main);\n --color-border: var(--color-gray);\n --color-border-hover: color-mix(in srgb, var(--color-border), var(--color-mix-hover));\n --color-accent: var(--color-text-muted);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: var(--border-subtle);\n --color-subtle-hover: var(--border-default);\n --color-bg-subtle: var(--border-subtle);\n --color-text-subtle: var(--color-text-muted);\n --color-border-subtle: var(--border-default);\n}\n\n:host([color="primary"]) {\n --color-solid: var(--color-primary);\n --color-on-solid: white;\n --color-border: var(--color-primary);\n --color-accent: var(--color-text-link);\n --color-accent-hover: var(--color-text-link-hover);\n --color-subtle: var(--color-primary-bg-subtle);\n --color-subtle-hover: rgb(from var(--blue) r g b / 0.15);\n --color-bg-subtle: var(--color-primary-bg-subtle);\n --color-text-subtle: var(--color-primary-text-emphasis);\n --color-border-subtle: var(--color-primary-border-subtle);\n}\n\n:host([color="secondary"]) {\n --color-solid: var(--color-secondary);\n --color-on-solid: white;\n --color-border: var(--color-secondary-hover);\n --color-accent: var(--color-secondary-text-emphasis);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: rgb(from var(--slate) r g b / 0.06);\n --color-subtle-hover: rgb(from var(--slate) r g b / 0.12);\n --color-bg-subtle: var(--color-secondary-bg-subtle);\n --color-text-subtle: var(--color-secondary-text-emphasis);\n --color-border-subtle: var(--color-secondary-border-subtle);\n}\n\n:host([color="success"]) {\n --color-solid: var(--color-success);\n --color-on-solid: white;\n --color-border: var(--color-success);\n --color-accent: var(--color-success-text-emphasis);\n --color-accent-hover: var(--color-success-hover);\n --color-subtle: var(--color-success-bg-subtle);\n --color-subtle-hover: rgb(from var(--green) r g b / 0.15);\n --color-bg-subtle: var(--color-success-bg-subtle);\n --color-text-subtle: var(--color-success-text-emphasis);\n --color-border-subtle: var(--color-success-border-subtle);\n}\n\n:host([color="danger"]) {\n --color-solid: var(--color-danger);\n --color-on-solid: white;\n --color-border: var(--color-danger);\n --color-accent: var(--color-danger-text-emphasis);\n --color-accent-hover: var(--color-danger-hover);\n --color-subtle: var(--color-danger-bg-subtle);\n --color-subtle-hover: rgb(from var(--red) r g b / 0.15);\n --color-bg-subtle: var(--color-danger-bg-subtle);\n --color-text-subtle: var(--color-danger-text-emphasis);\n --color-border-subtle: var(--color-danger-border-subtle);\n}\n\n:host([color="warning"]) {\n --color-solid: var(--color-warning);\n --color-on-solid: var(--gray-900);\n --color-border: var(--color-warning);\n --color-accent: var(--color-warning-text-emphasis);\n --color-accent-hover: var(--color-warning-hover);\n --color-subtle: var(--color-warning-bg-subtle);\n --color-subtle-hover: rgb(from var(--yellow) r g b / 0.15);\n --color-bg-subtle: var(--color-warning-bg-subtle);\n --color-text-subtle: var(--color-warning-text-emphasis);\n --color-border-subtle: var(--color-warning-border-subtle);\n}\n\n:host([color="info"]) {\n --color-solid: var(--color-info);\n --color-on-solid: white;\n --color-border: var(--color-info);\n --color-accent: var(--color-info-text-emphasis);\n --color-accent-hover: var(--color-info-hover);\n --color-subtle: var(--color-info-bg-subtle);\n --color-subtle-hover: rgb(from var(--cyan) r g b / 0.15);\n --color-bg-subtle: var(--color-info-bg-subtle);\n --color-text-subtle: var(--color-info-text-emphasis);\n --color-border-subtle: var(--color-info-border-subtle);\n}\n\n:host([color="light"]) {\n --color-solid: var(--light);\n --color-on-solid: var(--gray-900);\n --color-border: var(--border-hover);\n --color-subtle: var(--color-light-bg-subtle);\n --color-subtle-hover: var(--color-light-border-subtle);\n --color-bg-subtle: var(--color-light-bg-subtle);\n --color-text-subtle: var(--color-text-muted);\n --color-border-subtle: var(--color-light-border-subtle);\n}\n\n:host([color="dark"]) {\n --color-solid: var(--dark-500);\n --color-on-solid: white;\n --color-border: var(--dark-500);\n --color-accent: var(--color-text-main);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: var(--color-dark-bg-subtle);\n --color-subtle-hover: var(--color-dark-border-subtle);\n --color-bg-subtle: var(--color-dark-bg-subtle);\n --color-text-subtle: var(--color-text-main);\n --color-border-subtle: var(--color-dark-border-subtle);\n}\n';
609
+ const tagStyle = ':host {\n display: inline-flex;\n align-items: center;\n --tag-solid-bg: var(--color-solid);\n --tag-solid-color: var(--color-on-solid);\n --tag-border: var(--color-border);\n --tag-accent: var(--color-accent);\n --tag-subtle-bg: var(--color-bg-subtle);\n --tag-subtle-color: var(--color-text-subtle);\n --tag-subtle-border: var(--color-border-subtle);\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.5em 0.15em 0.6em;\n border-radius: 4px;\n border: 1px solid var(--tag-solid-bg);\n background: var(--tag-solid-bg);\n color: var(--tag-solid-color);\n max-width: 160px;\n min-width: 0;\n}\n\n:host([variant="outlined"]) .tag {\n background: transparent;\n border-color: var(--tag-border);\n color: var(--tag-accent);\n}\n\n:host([variant="faint"]) .tag {\n background: var(--tag-subtle-bg);\n border-color: var(--tag-subtle-border);\n color: var(--tag-subtle-color);\n}\n\n:host([variant="subtle"]) .tag {\n background: var(--tag-subtle-bg);\n border-color: transparent;\n color: var(--tag-subtle-color);\n}\n\n:host([variant="text"]) .tag {\n background: transparent;\n border-color: transparent;\n color: var(--tag-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n\n:host([pill]) .tag { border-radius: 999px; }\n\n.tag-content {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n::slotted(ae-icon) { font-size: 1.1em; }\n\n.tag-dismiss {\n display: none;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n opacity: 0.55;\n line-height: 1;\n font-size: 1em;\n padding: 0 1px;\n border-radius: 2px;\n background: transparent;\n border: none;\n color: inherit;\n font-family: inherit;\n transition: opacity 0.1s, background 0.1s;\n}\n\n:host([dismissible]) .tag-dismiss {\n display: inline-flex;\n}\n\n.tag-dismiss:hover {\n opacity: 1;\n background: color-mix(in srgb, currentColor 15%, transparent);\n}\n\n/* disabled: button remains visible but is inert */\n:host([disabled]) .tag-dismiss {\n opacity: 0.4;\n pointer-events: none;\n cursor: default;\n}\n\n:host([disabled]) .tag {\n opacity: 0.6;\n}\n';
610
610
  var __create$d = Object.create;
611
611
  var __defProp$d = Object.defineProperty;
612
612
  var __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;
@@ -1047,332 +1047,332 @@ __decoratorMetadata$c(_init$c, Select);
1047
1047
  __publicField$c(Select, "tagName", "select");
1048
1048
  __publicField$c(Select, "styles", [styleVariables, sizeCSS, style$9]);
1049
1049
  Select.register();
1050
- const style$8 = `:host {\r
1051
- display: block;\r
1052
- flex: 1;\r
1053
- min-width: 0;\r
1054
- font-size: var(--size-base);\r
1055
- \r
1056
- /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\r
1057
- --color-solid: var(--color-primary);\r
1058
- }\r
1059
- \r
1060
- .range-container {\r
1061
- display: flex;\r
1062
- align-items: center;\r
1063
- gap: 6px;\r
1064
- width: 100%;\r
1065
- height: 26px;\r
1066
- }\r
1067
- \r
1068
- input[type="range"] {\r
1069
- flex: 1;\r
1070
- margin: 0;\r
1071
- }\r
1072
- \r
1073
- .input-range,\r
1074
- .slider-input,\r
1075
- input[type="range"] {\r
1076
- -webkit-appearance: none;\r
1077
- appearance: none;\r
1078
- width: 100%;\r
1079
- height: 0.333em;\r
1080
- border-radius: 2px;\r
1081
- background: var(--border-subtle);\r
1082
- outline: none;\r
1083
- cursor: pointer;\r
1084
- margin: 0;\r
1085
- }\r
1086
- \r
1087
- .input-range {\r
1088
- margin: 10px 0;\r
1089
- }\r
1090
- \r
1091
- .input-range::-webkit-slider-thumb,\r
1092
- .slider-input::-webkit-slider-thumb,\r
1093
- input[type="range"]::-webkit-slider-thumb {\r
1094
- -webkit-appearance: none;\r
1095
- appearance: none;\r
1096
- width: 1.167em;\r
1097
- height: 1.167em;\r
1098
- border-radius: 50%;\r
1099
- background: var(--color-solid);\r
1100
- cursor: pointer;\r
1101
- transition: background 0.12s, transform 0.12s;\r
1102
- }\r
1103
- \r
1104
- .input-range::-webkit-slider-thumb:hover,\r
1105
- .slider-input::-webkit-slider-thumb:hover,\r
1106
- input[type="range"]:hover::-webkit-slider-thumb {\r
1107
- background: var(--color-solid-hover);\r
1108
- transform: scale(1.1);\r
1109
- }\r
1110
- \r
1111
- .input-range::-webkit-slider-thumb:active,\r
1112
- .slider-input::-webkit-slider-thumb:active,\r
1113
- input[type="range"]:active::-webkit-slider-thumb {\r
1114
- background: var(--color-solid-hover);\r
1115
- transform: scale(1.2);\r
1116
- }\r
1117
- \r
1118
- .input-range:focus::-webkit-slider-thumb,\r
1119
- .slider-input:focus::-webkit-slider-thumb,\r
1120
- input[type="range"]:focus::-webkit-slider-thumb {\r
1121
- background: var(--color-solid);\r
1122
- outline: none;\r
1123
- box-shadow: none;\r
1124
- }\r
1125
- \r
1126
- .input-range:focus:hover::-webkit-slider-thumb,\r
1127
- .slider-input:focus:hover::-webkit-slider-thumb,\r
1128
- input[type="range"]:focus:hover::-webkit-slider-thumb {\r
1129
- background: var(--color-solid-hover);\r
1130
- outline: none;\r
1131
- box-shadow: none;\r
1132
- }\r
1133
- \r
1134
- .input-range:focus:active::-webkit-slider-thumb,\r
1135
- .slider-input:focus:active::-webkit-slider-thumb,\r
1136
- input[type="range"]:focus:active::-webkit-slider-thumb {\r
1137
- background: var(--color-solid-hover);\r
1138
- outline: none;\r
1139
- box-shadow: none;\r
1140
- }\r
1141
- \r
1142
- .input-range::-moz-range-thumb,\r
1143
- .slider-input::-moz-range-thumb,\r
1144
- input[type="range"]::-moz-range-thumb {\r
1145
- width: 1.167em;\r
1146
- height: 1.167em;\r
1147
- border: none;\r
1148
- border-radius: 50%;\r
1149
- background: var(--color-solid);\r
1150
- cursor: pointer;\r
1151
- transition: background 0.12s, transform 0.12s;\r
1152
- }\r
1153
- \r
1154
- .input-range::-moz-range-thumb:hover,\r
1155
- .slider-input::-moz-range-thumb:hover,\r
1156
- input[type="range"]:hover::-moz-range-thumb {\r
1157
- background: var(--color-solid-hover);\r
1158
- transform: scale(1.1);\r
1159
- }\r
1160
- \r
1161
- .input-range::-moz-range-thumb:active,\r
1162
- .slider-input::-moz-range-thumb:active,\r
1163
- input[type="range"]:active::-moz-range-thumb {\r
1164
- background: var(--color-solid-hover);\r
1165
- transform: scale(1.2);\r
1166
- }\r
1167
- \r
1168
- .input-range:focus::-moz-range-thumb,\r
1169
- .slider-input:focus::-moz-range-thumb,\r
1170
- input[type="range"]:focus::-moz-range-thumb {\r
1171
- background: var(--color-solid);\r
1172
- outline: none;\r
1173
- box-shadow: none;\r
1174
- }\r
1175
- \r
1176
- .input-range:focus:hover::-moz-range-thumb,\r
1177
- .slider-input:focus:hover::-moz-range-thumb,\r
1178
- input[type="range"]:focus:hover::-moz-range-thumb {\r
1179
- background: var(--color-solid-hover);\r
1180
- outline: none;\r
1181
- box-shadow: none;\r
1182
- }\r
1183
- \r
1184
- .input-range:focus:active::-moz-range-thumb,\r
1185
- .slider-input:focus:active::-moz-range-thumb,\r
1186
- input[type="range"]:focus:active::-moz-range-thumb {\r
1187
- background: var(--color-solid-hover);\r
1188
- outline: none;\r
1189
- box-shadow: none;\r
1190
- }\r
1191
- \r
1192
- .input-range:disabled,\r
1193
- .slider-input:disabled,\r
1194
- input[type="range"]:disabled {\r
1195
- opacity: 0.5;\r
1196
- cursor: not-allowed;\r
1197
- }\r
1198
- \r
1199
- .input-range:disabled::-webkit-slider-thumb,\r
1200
- .slider-input:disabled::-webkit-slider-thumb,\r
1201
- input[type="range"]:disabled::-webkit-slider-thumb {\r
1202
- cursor: not-allowed;\r
1203
- }\r
1204
- \r
1205
- .input-range:disabled::-moz-range-thumb,\r
1206
- .slider-input:disabled::-moz-range-thumb,\r
1207
- input[type="range"]:disabled::-moz-range-thumb {\r
1208
- cursor: not-allowed;\r
1209
- }\r
1210
- \r
1211
- .value-label {\r
1212
- min-width: 14px;\r
1213
- text-align: center;\r
1214
- font-size: 12px;\r
1215
- color: var(--color-text-muted);\r
1216
- font-weight: 500;\r
1217
- font-variant-numeric: tabular-nums;\r
1218
- pointer-events: none;\r
1219
- user-select: none;\r
1220
- }\r
1221
- \r
1222
- .reset-btn {\r
1223
- width: 1.333em;\r
1224
- height: 1.333em;\r
1225
- border: none;\r
1226
- border-radius: var(--reset-btn-border-radius);\r
1227
- cursor: pointer;\r
1228
- display: flex;\r
1229
- align-items: center;\r
1230
- justify-content: center;\r
1231
- background: var(--reset-btn-bg);\r
1232
- color: var(--reset-btn-color);\r
1233
- transition: var(--reset-btn-transition);\r
1234
- flex-shrink: 0;\r
1235
- }\r
1236
- \r
1237
- .reset-btn:hover {\r
1238
- background: var(--reset-btn-bg-hover);\r
1239
- color: var(--reset-btn-color-hover);\r
1240
- }\r
1241
- \r
1242
- .clear-btn {\r
1243
- width: 1.333em;\r
1244
- height: 1.333em;\r
1245
- border: none;\r
1246
- border-radius: var(--clear-btn-border-radius);\r
1247
- cursor: pointer;\r
1248
- display: flex;\r
1249
- align-items: center;\r
1250
- justify-content: center;\r
1251
- background: var(--clear-btn-bg);\r
1252
- color: var(--clear-btn-color);\r
1253
- transition: var(--clear-btn-transition);\r
1254
- flex-shrink: 0;\r
1255
- }\r
1256
- \r
1257
- .clear-btn:hover {\r
1258
- background: var(--clear-btn-bg-hover);\r
1259
- color: var(--clear-btn-color-hover);\r
1260
- }\r
1261
- \r
1262
- \r
1263
- \r
1264
- .input-range,\r
1265
- .slider-input,\r
1266
- input[type="range"] {\r
1267
- height: 0.333em;\r
1268
- }\r
1269
- \r
1270
- .input-range::-webkit-slider-thumb,\r
1271
- .slider-input::-webkit-slider-thumb,\r
1272
- input[type="range"]::-webkit-slider-thumb {\r
1273
- width: 1.167em;\r
1274
- height: 1.167em;\r
1275
- }\r
1276
- \r
1277
- .input-range::-moz-range-thumb,\r
1278
- .slider-input::-moz-range-thumb,\r
1279
- input[type="range"]::-moz-range-thumb {\r
1280
- width: 1.167em;\r
1281
- height: 1.167em;\r
1282
- }\r
1283
- \r
1284
- .value-label {\r
1285
- font-size: 1em;\r
1286
- }\r
1287
- \r
1288
- .value-input {\r
1289
- width: 56px;\r
1290
- padding: 0 4px;\r
1291
- height: 22px;\r
1292
- border: 1px solid var(--border-subtle);\r
1293
- border-radius: 4px;\r
1294
- background: transparent;\r
1295
- color: var(--color-text);\r
1296
- font-size: 12px;\r
1297
- text-align: center;\r
1298
- outline: none;\r
1299
- flex-shrink: 0;\r
1300
- }\r
1301
- \r
1302
- .value-input:focus {\r
1303
- border-color: var(--color-solid);\r
1304
- }\r
1305
- \r
1306
- .value-input:disabled {\r
1307
- opacity: 0.4;\r
1308
- cursor: not-allowed;\r
1309
- }\r
1310
- \r
1311
- :host([tracked]) .input-range,\r
1312
- :host([tracked]) .slider-input,\r
1313
- :host([tracked]) input[type="range"] {\r
1314
- background: linear-gradient(\r
1315
- to right,\r
1316
- var(--color-solid) var(--fill-pct, 0%),\r
1317
- var(--border-subtle) var(--fill-pct, 0%)\r
1318
- );\r
1319
- }\r
1320
- \r
1321
- .range-wrapper {\r
1322
- flex: 1;\r
1323
- min-width: 0;\r
1324
- display: flex;\r
1325
- flex-direction: column;\r
1326
- position: relative; /* marks-container positions against this */\r
1327
- }\r
1328
- \r
1329
- .range-wrapper input[type="range"] {\r
1330
- width: 100%;\r
1331
- flex: none;\r
1332
- }\r
1333
- \r
1334
- /* Marks are absolutely positioned so they don't affect range-wrapper's layout height */\r
1335
- .marks-container {\r
1336
- position: absolute;\r
1337
- top: 100%;\r
1338
- left: 7px; /* inset by half thumb so 0%/100% align with track ends */\r
1339
- right: 7px;\r
1340
- height: 18px;\r
1341
- margin-top: 2px;\r
1342
- overflow: visible;\r
1343
- }\r
1344
- \r
1345
- .mark {\r
1346
- position: absolute;\r
1347
- transform: translateX(-50%);\r
1348
- display: flex;\r
1349
- flex-direction: column;\r
1350
- align-items: center;\r
1351
- gap: 2px;\r
1352
- pointer-events: none;\r
1353
- user-select: none;\r
1354
- }\r
1355
- \r
1356
- .mark::before {\r
1357
- content: '';\r
1358
- display: block;\r
1359
- width: 1px;\r
1360
- height: 4px;\r
1361
- background: var(--border-default, var(--border-subtle));\r
1362
- border-radius: 1px;\r
1363
- }\r
1364
- \r
1365
- .mark-label {\r
1366
- font-size: 10px;\r
1367
- color: var(--color-text-muted);\r
1368
- white-space: nowrap;\r
1369
- }\r
1370
- \r
1371
- /* When marks are active, add padding-bottom to make room for the absolute-positioned marks */\r
1372
- :host([marks]) .range-container {\r
1373
- padding-bottom: 24px; /* marks-container height (18px) + margin-top (2px) + extra (4px) */\r
1374
- height: auto;\r
1375
- }\r
1050
+ const style$8 = `:host {
1051
+ display: block;
1052
+ flex: 1;
1053
+ min-width: 0;
1054
+ font-size: var(--size-base);
1055
+
1056
+ /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */
1057
+ --color-solid: var(--color-primary);
1058
+ }
1059
+
1060
+ .range-container {
1061
+ display: flex;
1062
+ align-items: center;
1063
+ gap: 6px;
1064
+ width: 100%;
1065
+ height: 26px;
1066
+ }
1067
+
1068
+ input[type="range"] {
1069
+ flex: 1;
1070
+ margin: 0;
1071
+ }
1072
+
1073
+ .input-range,
1074
+ .slider-input,
1075
+ input[type="range"] {
1076
+ -webkit-appearance: none;
1077
+ appearance: none;
1078
+ width: 100%;
1079
+ height: 0.333em;
1080
+ border-radius: 2px;
1081
+ background: var(--border-subtle);
1082
+ outline: none;
1083
+ cursor: pointer;
1084
+ margin: 0;
1085
+ }
1086
+
1087
+ .input-range {
1088
+ margin: 10px 0;
1089
+ }
1090
+
1091
+ .input-range::-webkit-slider-thumb,
1092
+ .slider-input::-webkit-slider-thumb,
1093
+ input[type="range"]::-webkit-slider-thumb {
1094
+ -webkit-appearance: none;
1095
+ appearance: none;
1096
+ width: 1.167em;
1097
+ height: 1.167em;
1098
+ border-radius: 50%;
1099
+ background: var(--color-solid);
1100
+ cursor: pointer;
1101
+ transition: background 0.12s, transform 0.12s;
1102
+ }
1103
+
1104
+ .input-range::-webkit-slider-thumb:hover,
1105
+ .slider-input::-webkit-slider-thumb:hover,
1106
+ input[type="range"]:hover::-webkit-slider-thumb {
1107
+ background: var(--color-solid-hover);
1108
+ transform: scale(1.1);
1109
+ }
1110
+
1111
+ .input-range::-webkit-slider-thumb:active,
1112
+ .slider-input::-webkit-slider-thumb:active,
1113
+ input[type="range"]:active::-webkit-slider-thumb {
1114
+ background: var(--color-solid-hover);
1115
+ transform: scale(1.2);
1116
+ }
1117
+
1118
+ .input-range:focus::-webkit-slider-thumb,
1119
+ .slider-input:focus::-webkit-slider-thumb,
1120
+ input[type="range"]:focus::-webkit-slider-thumb {
1121
+ background: var(--color-solid);
1122
+ outline: none;
1123
+ box-shadow: none;
1124
+ }
1125
+
1126
+ .input-range:focus:hover::-webkit-slider-thumb,
1127
+ .slider-input:focus:hover::-webkit-slider-thumb,
1128
+ input[type="range"]:focus:hover::-webkit-slider-thumb {
1129
+ background: var(--color-solid-hover);
1130
+ outline: none;
1131
+ box-shadow: none;
1132
+ }
1133
+
1134
+ .input-range:focus:active::-webkit-slider-thumb,
1135
+ .slider-input:focus:active::-webkit-slider-thumb,
1136
+ input[type="range"]:focus:active::-webkit-slider-thumb {
1137
+ background: var(--color-solid-hover);
1138
+ outline: none;
1139
+ box-shadow: none;
1140
+ }
1141
+
1142
+ .input-range::-moz-range-thumb,
1143
+ .slider-input::-moz-range-thumb,
1144
+ input[type="range"]::-moz-range-thumb {
1145
+ width: 1.167em;
1146
+ height: 1.167em;
1147
+ border: none;
1148
+ border-radius: 50%;
1149
+ background: var(--color-solid);
1150
+ cursor: pointer;
1151
+ transition: background 0.12s, transform 0.12s;
1152
+ }
1153
+
1154
+ .input-range::-moz-range-thumb:hover,
1155
+ .slider-input::-moz-range-thumb:hover,
1156
+ input[type="range"]:hover::-moz-range-thumb {
1157
+ background: var(--color-solid-hover);
1158
+ transform: scale(1.1);
1159
+ }
1160
+
1161
+ .input-range::-moz-range-thumb:active,
1162
+ .slider-input::-moz-range-thumb:active,
1163
+ input[type="range"]:active::-moz-range-thumb {
1164
+ background: var(--color-solid-hover);
1165
+ transform: scale(1.2);
1166
+ }
1167
+
1168
+ .input-range:focus::-moz-range-thumb,
1169
+ .slider-input:focus::-moz-range-thumb,
1170
+ input[type="range"]:focus::-moz-range-thumb {
1171
+ background: var(--color-solid);
1172
+ outline: none;
1173
+ box-shadow: none;
1174
+ }
1175
+
1176
+ .input-range:focus:hover::-moz-range-thumb,
1177
+ .slider-input:focus:hover::-moz-range-thumb,
1178
+ input[type="range"]:focus:hover::-moz-range-thumb {
1179
+ background: var(--color-solid-hover);
1180
+ outline: none;
1181
+ box-shadow: none;
1182
+ }
1183
+
1184
+ .input-range:focus:active::-moz-range-thumb,
1185
+ .slider-input:focus:active::-moz-range-thumb,
1186
+ input[type="range"]:focus:active::-moz-range-thumb {
1187
+ background: var(--color-solid-hover);
1188
+ outline: none;
1189
+ box-shadow: none;
1190
+ }
1191
+
1192
+ .input-range:disabled,
1193
+ .slider-input:disabled,
1194
+ input[type="range"]:disabled {
1195
+ opacity: 0.5;
1196
+ cursor: not-allowed;
1197
+ }
1198
+
1199
+ .input-range:disabled::-webkit-slider-thumb,
1200
+ .slider-input:disabled::-webkit-slider-thumb,
1201
+ input[type="range"]:disabled::-webkit-slider-thumb {
1202
+ cursor: not-allowed;
1203
+ }
1204
+
1205
+ .input-range:disabled::-moz-range-thumb,
1206
+ .slider-input:disabled::-moz-range-thumb,
1207
+ input[type="range"]:disabled::-moz-range-thumb {
1208
+ cursor: not-allowed;
1209
+ }
1210
+
1211
+ .value-label {
1212
+ min-width: 14px;
1213
+ text-align: center;
1214
+ font-size: 12px;
1215
+ color: var(--color-text-muted);
1216
+ font-weight: 500;
1217
+ font-variant-numeric: tabular-nums;
1218
+ pointer-events: none;
1219
+ user-select: none;
1220
+ }
1221
+
1222
+ .reset-btn {
1223
+ width: 1.333em;
1224
+ height: 1.333em;
1225
+ border: none;
1226
+ border-radius: var(--reset-btn-border-radius);
1227
+ cursor: pointer;
1228
+ display: flex;
1229
+ align-items: center;
1230
+ justify-content: center;
1231
+ background: var(--reset-btn-bg);
1232
+ color: var(--reset-btn-color);
1233
+ transition: var(--reset-btn-transition);
1234
+ flex-shrink: 0;
1235
+ }
1236
+
1237
+ .reset-btn:hover {
1238
+ background: var(--reset-btn-bg-hover);
1239
+ color: var(--reset-btn-color-hover);
1240
+ }
1241
+
1242
+ .clear-btn {
1243
+ width: 1.333em;
1244
+ height: 1.333em;
1245
+ border: none;
1246
+ border-radius: var(--clear-btn-border-radius);
1247
+ cursor: pointer;
1248
+ display: flex;
1249
+ align-items: center;
1250
+ justify-content: center;
1251
+ background: var(--clear-btn-bg);
1252
+ color: var(--clear-btn-color);
1253
+ transition: var(--clear-btn-transition);
1254
+ flex-shrink: 0;
1255
+ }
1256
+
1257
+ .clear-btn:hover {
1258
+ background: var(--clear-btn-bg-hover);
1259
+ color: var(--clear-btn-color-hover);
1260
+ }
1261
+
1262
+
1263
+
1264
+ .input-range,
1265
+ .slider-input,
1266
+ input[type="range"] {
1267
+ height: 0.333em;
1268
+ }
1269
+
1270
+ .input-range::-webkit-slider-thumb,
1271
+ .slider-input::-webkit-slider-thumb,
1272
+ input[type="range"]::-webkit-slider-thumb {
1273
+ width: 1.167em;
1274
+ height: 1.167em;
1275
+ }
1276
+
1277
+ .input-range::-moz-range-thumb,
1278
+ .slider-input::-moz-range-thumb,
1279
+ input[type="range"]::-moz-range-thumb {
1280
+ width: 1.167em;
1281
+ height: 1.167em;
1282
+ }
1283
+
1284
+ .value-label {
1285
+ font-size: 1em;
1286
+ }
1287
+
1288
+ .value-input {
1289
+ width: 56px;
1290
+ padding: 0 4px;
1291
+ height: 22px;
1292
+ border: 1px solid var(--border-subtle);
1293
+ border-radius: 4px;
1294
+ background: transparent;
1295
+ color: var(--color-text);
1296
+ font-size: 12px;
1297
+ text-align: center;
1298
+ outline: none;
1299
+ flex-shrink: 0;
1300
+ }
1301
+
1302
+ .value-input:focus {
1303
+ border-color: var(--color-solid);
1304
+ }
1305
+
1306
+ .value-input:disabled {
1307
+ opacity: 0.4;
1308
+ cursor: not-allowed;
1309
+ }
1310
+
1311
+ :host([tracked]) .input-range,
1312
+ :host([tracked]) .slider-input,
1313
+ :host([tracked]) input[type="range"] {
1314
+ background: linear-gradient(
1315
+ to right,
1316
+ var(--color-solid) var(--fill-pct, 0%),
1317
+ var(--border-subtle) var(--fill-pct, 0%)
1318
+ );
1319
+ }
1320
+
1321
+ .range-wrapper {
1322
+ flex: 1;
1323
+ min-width: 0;
1324
+ display: flex;
1325
+ flex-direction: column;
1326
+ position: relative; /* marks-container positions against this */
1327
+ }
1328
+
1329
+ .range-wrapper input[type="range"] {
1330
+ width: 100%;
1331
+ flex: none;
1332
+ }
1333
+
1334
+ /* Marks are absolutely positioned so they don't affect range-wrapper's layout height */
1335
+ .marks-container {
1336
+ position: absolute;
1337
+ top: 100%;
1338
+ left: 7px; /* inset by half thumb so 0%/100% align with track ends */
1339
+ right: 7px;
1340
+ height: 18px;
1341
+ margin-top: 2px;
1342
+ overflow: visible;
1343
+ }
1344
+
1345
+ .mark {
1346
+ position: absolute;
1347
+ transform: translateX(-50%);
1348
+ display: flex;
1349
+ flex-direction: column;
1350
+ align-items: center;
1351
+ gap: 2px;
1352
+ pointer-events: none;
1353
+ user-select: none;
1354
+ }
1355
+
1356
+ .mark::before {
1357
+ content: '';
1358
+ display: block;
1359
+ width: 1px;
1360
+ height: 4px;
1361
+ background: var(--border-default, var(--border-subtle));
1362
+ border-radius: 1px;
1363
+ }
1364
+
1365
+ .mark-label {
1366
+ font-size: 10px;
1367
+ color: var(--color-text-muted);
1368
+ white-space: nowrap;
1369
+ }
1370
+
1371
+ /* When marks are active, add padding-bottom to make room for the absolute-positioned marks */
1372
+ :host([marks]) .range-container {
1373
+ padding-bottom: 24px; /* marks-container height (18px) + margin-top (2px) + extra (4px) */
1374
+ height: auto;
1375
+ }
1376
1376
  `;
1377
1377
  var __create$b = Object.create;
1378
1378
  var __defProp$b = Object.defineProperty;
@@ -1687,7 +1687,7 @@ __decoratorMetadata$b(_init$b, Slider);
1687
1687
  __publicField$b(Slider, "tagName", "slider");
1688
1688
  __publicField$b(Slider, "styles", [styleVariables, sizeCSS, colorCSS, style$8]);
1689
1689
  Slider.register();
1690
- const styles$1 = ":host {\r\n display: block;\r\n flex: 1;\r\n min-width: 0;\r\n font-size: var(--size-base);\r\n\r\n /* Layout */\r\n --checkbox-field-gap: 4px;\r\n\r\n /* Checkbox */\r\n --checkbox-size: 1.167em;\r\n --checkbox-border-width: 1px;\r\n --checkbox-border-radius: 2px;\r\n --checkbox-border-color: var(--border-subtle);\r\n --checkbox-bg: var(--surface-base);\r\n --checkbox-accent-color: var(--color-solid);\r\n\r\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\r\n --color-solid: var(--color-primary);\r\n}\r\n\r\n.checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--checkbox-field-gap);\r\n width: 100%;\r\n}\r\n\r\n.checkbox-wrapper {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n}\r\n\r\n.field-input {\r\n width: var(--checkbox-size);\r\n height: var(--checkbox-size);\r\n cursor: pointer;\r\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\r\n border-radius: var(--checkbox-border-radius);\r\n background: var(--checkbox-bg);\r\n accent-color: var(--checkbox-accent-color);\r\n margin: 0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.field-input:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* action buttons */\r\n.reset-btn,\r\n.clear-btn {\r\n width: 1.333em;\r\n height: 1.333em;\r\n border: none;\r\n border-radius: var(--reset-btn-border-radius);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: var(--reset-btn-bg);\r\n color: var(--reset-btn-color);\r\n transition: var(--reset-btn-transition);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n.reset-btn:hover {\r\n background: var(--reset-btn-bg-hover);\r\n color: var(--reset-btn-color-hover);\r\n}\r\n\r\n.clear-btn:hover {\r\n background: var(--clear-btn-bg-hover);\r\n color: var(--clear-btn-color-hover);\r\n}\r\n";
1690
+ const styles$1 = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* action buttons */\n.reset-btn,\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n";
1691
1691
  class Checkbox extends AeicoField {
1692
1692
  constructor() {
1693
1693
  super(...arguments);
@@ -1749,7 +1749,7 @@ __publicField(Checkbox, "props", {
1749
1749
  });
1750
1750
  __publicField(Checkbox, "styles", [styleVariables, sizeCSS, colorCSS, styles$1]);
1751
1751
  Checkbox.register();
1752
- const style$7 = ':host {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--rg-gap, 0.286em);\r\n font-size: var(--size-m);\r\n --rg-solid-bg: var(--color-solid);\r\n --rg-solid-bg-hover: var(--color-solid-hover);\r\n --rg-solid-bg-active: var(--color-solid-active);\r\n --rg-solid-color: var(--color-on-solid);\r\n --rg-solid-color-hover: var(--color-on-solid-hover, var(--color-on-solid));\r\n --rg-border: var(--color-border);\r\n --rg-border-hover: var(--color-border-hover);\r\n --rg-accent: var(--color-accent);\r\n --rg-accent-hover: var(--color-accent-hover);\r\n --rg-subtle-bg: var(--color-subtle);\r\n --rg-subtle-bg-hover: var(--color-subtle-hover);\r\n\r\n --rg-font-size: 1em;\r\n --rg-height: 2.286em;\r\n --rg-padding: 0.429em 1.071em;\r\n --rg-min-width: 4.571em;\r\n --rg-radius: 4px;\r\n --rg-font-weight: 400;\r\n\r\n --color-unselected: var(--surface-base);\r\n --color-unselected-hover: var(--color-gray-lighter);\r\n}\r\n\r\n:host([size="xs"]) { --rg-radius: 3px; }\r\n:host([size="sm"]) { --rg-radius: 3px; }\r\n\r\n.rg-container {\r\n display: inline-flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: 6px;\r\n}\r\n\r\nslot {\r\n display: none;\r\n}\r\n\r\n.rg-radio-option {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n cursor: pointer;\r\n font-size: var(--rg-font-size);\r\n color: var(--color-text-main);\r\n user-select: none;\r\n}\r\n\r\n.rg-radio-input {\r\n width: 14px;\r\n height: 14px;\r\n accent-color: var(--rg-solid-bg, var(--color-primary));\r\n cursor: pointer;\r\n margin: 0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.rg-radio-label {\r\n line-height: 1.5;\r\n}\r\n\r\n.rg-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-family: inherit;\r\n font-size: var(--rg-font-size);\r\n font-weight: 400;\r\n height: var(--rg-height);\r\n padding: var(--rg-padding);\r\n min-width: var(--rg-min-width);\r\n white-space: nowrap;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background 0.15s, color 0.15s, border-color 0.15s, box-shadow 0.15s;\r\n outline: none;\r\n border-radius: var(--rg-radius);\r\n\r\n background: var(--color-unselected);\r\n border: 1px solid var(--color-gray-light);\r\n color: var(--color-text-muted);\r\n}\r\n\r\n.rg-btn:hover:not(:disabled):not(.selected) {\r\n background: var(--color-unselected-hover);\r\n border-color: var(--color-gray-light);\r\n color: var(--color-text-main);\r\n}\r\n\r\n.rg-btn.selected {\r\n background: var(--rg-solid-bg);\r\n border-color: var(--rg-solid-bg);\r\n color: var(--rg-solid-color);\r\n font-weight: 500;\r\n box-shadow: 0 1px 4px rgb(from black r g b / 0.22);\r\n}\r\n\r\n.rg-btn.selected:hover:not(:disabled) {\r\n background: var(--rg-solid-bg-hover);\r\n border-color: var(--rg-solid-bg-hover);\r\n}\r\n\r\n.rg-btn:active:not(:disabled):not(.selected) {\r\n background: var(--rg-subtle-bg-hover);\r\n transform: translateY(1px);\r\n}\r\n\r\n.rg-btn:disabled {\r\n opacity: 0.45;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n:host([variant="outlined"]) .rg-btn {\r\n background: transparent;\r\n border-color: var(--rg-border);\r\n color: var(--rg-accent);\r\n}\r\n:host([variant="outlined"]) .rg-btn:hover:not(:disabled):not(.selected) {\r\n background: var(--rg-subtle-bg);\r\n border-color: var(--rg-accent);\r\n color: var(--rg-accent-hover);\r\n}\r\n:host([variant="outlined"]) .rg-btn.selected {\r\n background: var(--rg-solid-bg);\r\n border-color: var(--rg-solid-bg);\r\n color: var(--rg-solid-color);\r\n}\r\n\r\n:host([variant="subtle"]) .rg-btn {\r\n background: transparent;\r\n border-color: transparent;\r\n color: var(--rg-accent);\r\n}\r\n:host([variant="subtle"]) .rg-btn:hover:not(:disabled):not(.selected) {\r\n background: var(--rg-subtle-bg);\r\n border-color: transparent;\r\n color: var(--rg-accent-hover);\r\n}\r\n:host([variant="subtle"]) .rg-btn.selected {\r\n background: var(--rg-subtle-bg-hover);\r\n border-color: transparent;\r\n color: var(--rg-accent-hover);\r\n font-weight: 600;\r\n box-shadow: none;\r\n}\r\n\r\n:host([variant="filled"]) .rg-btn:not(.selected) {\r\n background: var(--surface-base);\r\n border-color: var(--border-default);\r\n color: var(--color-text-muted);\r\n}\r\n\r\n:host([variant="filled"]) .rg-btn:hover:not(:disabled):not(.selected) {\r\n background: var(--surface-raised);\r\n border-color: var(--border-hover);\r\n color: var(--color-text-main);\r\n}\r\n\r\n:host([mode="button"]) .rg-container {\r\n gap: 6px;\r\n}\r\n\r\n:host([mode="button-group"]) .rg-container {\r\n gap: 0;\r\n}\r\n\r\n:host([mode="button-group"]) .rg-btn:not(.first):not(.only) {\r\n margin-left: -1px;\r\n}\r\n\r\n:host([mode="button-group"]) .rg-btn.first {\r\n border-radius: var(--rg-radius) 0 0 var(--rg-radius);\r\n}\r\n:host([mode="button-group"]) .rg-btn.inner {\r\n border-radius: 0;\r\n}\r\n:host([mode="button-group"]) .rg-btn.last {\r\n border-radius: 0 var(--rg-radius) var(--rg-radius) 0;\r\n}\r\n:host([mode="button-group"]) .rg-btn.only {\r\n border-radius: var(--rg-radius);\r\n}\r\n\r\n:host([mode="button-group"]) .rg-btn:hover:not(:disabled),\r\n:host([mode="button-group"]) .rg-btn.selected {\r\n position: relative;\r\n z-index: 1;\r\n}\r\n\r\n:host([mode="segmented"]) .rg-container {\r\n gap: 2px;\r\n background: var(--surface-raised);\r\n border: 1px solid var(--border-subtle);\r\n border-radius: calc(var(--rg-radius) + 2px);\r\n padding: 2px;\r\n flex-wrap: nowrap;\r\n}\r\n\r\n:host([mode="segmented"]) .rg-btn {\r\n background: transparent;\r\n border-color: transparent;\r\n color: var(--color-text-muted);\r\n border-radius: var(--rg-radius);\r\n min-width: var(--rg-min-width);\r\n box-shadow: none;\r\n font-weight: 400;\r\n}\r\n\r\n:host([mode="segmented"]) .rg-btn:hover:not(:disabled):not(.selected) {\r\n background: var(--rg-subtle-bg);\r\n border-color: transparent;\r\n color: var(--color-text-secondary, var(--color-text-main));\r\n}\r\n\r\n:host([mode="segmented"]) .rg-btn.selected {\r\n background: var(--rg-solid-bg);\r\n border-color: transparent;\r\n color: var(--rg-solid-color);\r\n font-weight: 500;\r\n box-shadow: 0 1px 4px rgb(from black r g b / 0.35);\r\n}\r\n\r\n:host([mode="segmented"]) .rg-btn.selected:hover:not(:disabled) {\r\n background: var(--rg-solid-bg-hover);\r\n}\r\n\r\n:host([mode="segmented"]:not([color])) .rg-btn.selected {\r\n background: var(--color-gray-lighter);\r\n color: var(--color-text-main);\r\n}\r\n\r\n:host([mode="segmented"][variant="outlined"]) .rg-container {\r\n border-color: var(--rg-border);\r\n}\r\n:host([mode="segmented"][variant="outlined"]) .rg-btn.selected {\r\n background: var(--rg-solid-bg);\r\n border-color: transparent;\r\n color: var(--rg-solid-color);\r\n}\r\n\r\n.reset-btn,\r\n.clear-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n transition: var(--reset-btn-transition);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n font-family: inherit;\r\n padding: 0;\r\n\r\n width: 1.333em;\r\n height: 1.333em;\r\n border-radius: var(--reset-btn-border-radius);\r\n border: none;\r\n background: var(--reset-btn-bg);\r\n color: var(--reset-btn-color);\r\n}\r\n\r\n.reset-btn:hover { background: var(--reset-btn-bg-hover); color: var(--reset-btn-color-hover); }\r\n.clear-btn:hover { background: var(--clear-btn-bg-hover); color: var(--clear-btn-color-hover); }\r\n\r\n:host([mode="button"]) .reset-btn,\r\n:host([mode="button"]) .clear-btn,\r\n:host([mode="button-group"]) .reset-btn,\r\n:host([mode="button-group"]) .clear-btn,\r\n:host([mode="segmented"]) .reset-btn,\r\n:host([mode="segmented"]) .clear-btn {\r\n height: var(--rg-height);\r\n width: var(--rg-height);\r\n border-radius: var(--rg-radius);\r\n font-size: var(--rg-font-size);\r\n}\r\n\r\n:host([mode="button"]) .reset-btn,\r\n:host([mode="button"]) .clear-btn,\r\n:host([mode="button-group"]) .reset-btn,\r\n:host([mode="button-group"]) .clear-btn,\r\n:host([mode="segmented"]) .reset-btn,\r\n:host([mode="segmented"]) .clear-btn {\r\n background: transparent;\r\n border: 1px solid var(--color-gray-light);\r\n color: var(--color-text-muted);\r\n}\r\n\r\n:host([mode="button"]) .reset-btn:hover,\r\n:host([mode="button-group"]) .reset-btn:hover,\r\n:host([mode="segmented"]) .reset-btn:hover {\r\n background: var(--border-subtle);\r\n border-color: var(--color-gray-lighter);\r\n color: var(--color-text-main);\r\n}\r\n\r\n:host([mode="button"]) .clear-btn:hover,\r\n:host([mode="button-group"]) .clear-btn:hover,\r\n:host([mode="segmented"]) .clear-btn:hover {\r\n background: rgb(from var(--red) r g b / 0.10);\r\n border-color: var(--color-gray-lighter);\r\n color: var(--color-danger);\r\n}\r\n\r\n:host([variant="outlined"][mode="button"]) .reset-btn,\r\n:host([variant="outlined"][mode="button"]) .clear-btn,\r\n:host([variant="outlined"][mode="button-group"]) .reset-btn,\r\n:host([variant="outlined"][mode="button-group"]) .clear-btn,\r\n:host([variant="outlined"][mode="segmented"]) .reset-btn,\r\n:host([variant="outlined"][mode="segmented"]) .clear-btn {\r\n background: transparent;\r\n border-color: var(--rg-border);\r\n color: var(--rg-accent);\r\n}\r\n\r\n:host([variant="outlined"][mode="button"]) .reset-btn:hover,\r\n:host([variant="outlined"][mode="button-group"]) .reset-btn:hover,\r\n:host([variant="outlined"][mode="segmented"]) .reset-btn:hover {\r\n background: var(--border-subtle);\r\n border-color: var(--rg-border-hover);\r\n color: var(--rg-accent-hover);\r\n}\r\n\r\n:host([variant="outlined"][mode="button"]) .clear-btn:hover,\r\n:host([variant="outlined"][mode="button-group"]) .clear-btn:hover,\r\n:host([variant="outlined"][mode="segmented"]) .clear-btn:hover {\r\n background: rgb(from var(--red) r g b / 0.10);\r\n border-color: var(--rg-border-hover);\r\n color: var(--color-danger);\r\n}\r\n\r\n:host([variant="subtle"][mode="button"]) .reset-btn,\r\n:host([variant="subtle"][mode="button"]) .clear-btn,\r\n:host([variant="subtle"][mode="button-group"]) .reset-btn,\r\n:host([variant="subtle"][mode="button-group"]) .clear-btn,\r\n:host([variant="subtle"][mode="segmented"]) .reset-btn,\r\n:host([variant="subtle"][mode="segmented"]) .clear-btn {\r\n background: transparent;\r\n border-color: transparent;\r\n color: var(--rg-accent);\r\n}\r\n\r\n:host([variant="subtle"][mode="button"]) .reset-btn:hover,\r\n:host([variant="subtle"][mode="button-group"]) .reset-btn:hover,\r\n:host([variant="subtle"][mode="segmented"]) .reset-btn:hover {\r\n background: var(--border-subtle);\r\n border-color: transparent;\r\n color: var(--rg-accent-hover);\r\n}\r\n\r\n:host([variant="subtle"][mode="button"]) .clear-btn:hover,\r\n:host([variant="subtle"][mode="button-group"]) .clear-btn:hover,\r\n:host([variant="subtle"][mode="segmented"]) .clear-btn:hover {\r\n background: rgb(from var(--red) r g b / 0.10);\r\n border-color: transparent;\r\n color: var(--color-danger);\r\n}\r\n';
1752
+ const style$7 = ':host {\n display: inline-flex;\n align-items: center;\n gap: var(--rg-gap, 0.286em);\n font-size: var(--size-m);\n --rg-solid-bg: var(--color-solid);\n --rg-solid-bg-hover: var(--color-solid-hover);\n --rg-solid-bg-active: var(--color-solid-active);\n --rg-solid-color: var(--color-on-solid);\n --rg-solid-color-hover: var(--color-on-solid-hover, var(--color-on-solid));\n --rg-border: var(--color-border);\n --rg-border-hover: var(--color-border-hover);\n --rg-accent: var(--color-accent);\n --rg-accent-hover: var(--color-accent-hover);\n --rg-subtle-bg: var(--color-subtle);\n --rg-subtle-bg-hover: var(--color-subtle-hover);\n\n --rg-font-size: 1em;\n --rg-height: 2.286em;\n --rg-padding: 0.429em 1.071em;\n --rg-min-width: 4.571em;\n --rg-radius: 4px;\n --rg-font-weight: 400;\n\n --color-unselected: var(--surface-base);\n --color-unselected-hover: var(--color-gray-lighter);\n}\n\n:host([size="xs"]) { --rg-radius: 3px; }\n:host([size="sm"]) { --rg-radius: 3px; }\n\n.rg-container {\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px;\n}\n\nslot {\n display: none;\n}\n\n.rg-radio-option {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: var(--rg-font-size);\n color: var(--color-text-main);\n user-select: none;\n}\n\n.rg-radio-input {\n width: 14px;\n height: 14px;\n accent-color: var(--rg-solid-bg, var(--color-primary));\n cursor: pointer;\n margin: 0;\n flex-shrink: 0;\n}\n\n.rg-radio-label {\n line-height: 1.5;\n}\n\n.rg-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: inherit;\n font-size: var(--rg-font-size);\n font-weight: 400;\n height: var(--rg-height);\n padding: var(--rg-padding);\n min-width: var(--rg-min-width);\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s, color 0.15s, border-color 0.15s, box-shadow 0.15s;\n outline: none;\n border-radius: var(--rg-radius);\n\n background: var(--color-unselected);\n border: 1px solid var(--color-gray-light);\n color: var(--color-text-muted);\n}\n\n.rg-btn:hover:not(:disabled):not(.selected) {\n background: var(--color-unselected-hover);\n border-color: var(--color-gray-light);\n color: var(--color-text-main);\n}\n\n.rg-btn.selected {\n background: var(--rg-solid-bg);\n border-color: var(--rg-solid-bg);\n color: var(--rg-solid-color);\n font-weight: 500;\n box-shadow: 0 1px 4px rgb(from black r g b / 0.22);\n}\n\n.rg-btn.selected:hover:not(:disabled) {\n background: var(--rg-solid-bg-hover);\n border-color: var(--rg-solid-bg-hover);\n}\n\n.rg-btn:active:not(:disabled):not(.selected) {\n background: var(--rg-subtle-bg-hover);\n transform: translateY(1px);\n}\n\n.rg-btn:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n:host([variant="outlined"]) .rg-btn {\n background: transparent;\n border-color: var(--rg-border);\n color: var(--rg-accent);\n}\n:host([variant="outlined"]) .rg-btn:hover:not(:disabled):not(.selected) {\n background: var(--rg-subtle-bg);\n border-color: var(--rg-accent);\n color: var(--rg-accent-hover);\n}\n:host([variant="outlined"]) .rg-btn.selected {\n background: var(--rg-solid-bg);\n border-color: var(--rg-solid-bg);\n color: var(--rg-solid-color);\n}\n\n:host([variant="subtle"]) .rg-btn {\n background: transparent;\n border-color: transparent;\n color: var(--rg-accent);\n}\n:host([variant="subtle"]) .rg-btn:hover:not(:disabled):not(.selected) {\n background: var(--rg-subtle-bg);\n border-color: transparent;\n color: var(--rg-accent-hover);\n}\n:host([variant="subtle"]) .rg-btn.selected {\n background: var(--rg-subtle-bg-hover);\n border-color: transparent;\n color: var(--rg-accent-hover);\n font-weight: 600;\n box-shadow: none;\n}\n\n:host([variant="filled"]) .rg-btn:not(.selected) {\n background: var(--surface-base);\n border-color: var(--border-default);\n color: var(--color-text-muted);\n}\n\n:host([variant="filled"]) .rg-btn:hover:not(:disabled):not(.selected) {\n background: var(--surface-raised);\n border-color: var(--border-hover);\n color: var(--color-text-main);\n}\n\n:host([mode="button"]) .rg-container {\n gap: 6px;\n}\n\n:host([mode="button-group"]) .rg-container {\n gap: 0;\n}\n\n:host([mode="button-group"]) .rg-btn:not(.first):not(.only) {\n margin-left: -1px;\n}\n\n:host([mode="button-group"]) .rg-btn.first {\n border-radius: var(--rg-radius) 0 0 var(--rg-radius);\n}\n:host([mode="button-group"]) .rg-btn.inner {\n border-radius: 0;\n}\n:host([mode="button-group"]) .rg-btn.last {\n border-radius: 0 var(--rg-radius) var(--rg-radius) 0;\n}\n:host([mode="button-group"]) .rg-btn.only {\n border-radius: var(--rg-radius);\n}\n\n:host([mode="button-group"]) .rg-btn:hover:not(:disabled),\n:host([mode="button-group"]) .rg-btn.selected {\n position: relative;\n z-index: 1;\n}\n\n:host([mode="segmented"]) .rg-container {\n gap: 2px;\n background: var(--surface-raised);\n border: 1px solid var(--border-subtle);\n border-radius: calc(var(--rg-radius) + 2px);\n padding: 2px;\n flex-wrap: nowrap;\n}\n\n:host([mode="segmented"]) .rg-btn {\n background: transparent;\n border-color: transparent;\n color: var(--color-text-muted);\n border-radius: var(--rg-radius);\n min-width: var(--rg-min-width);\n box-shadow: none;\n font-weight: 400;\n}\n\n:host([mode="segmented"]) .rg-btn:hover:not(:disabled):not(.selected) {\n background: var(--rg-subtle-bg);\n border-color: transparent;\n color: var(--color-text-secondary, var(--color-text-main));\n}\n\n:host([mode="segmented"]) .rg-btn.selected {\n background: var(--rg-solid-bg);\n border-color: transparent;\n color: var(--rg-solid-color);\n font-weight: 500;\n box-shadow: 0 1px 4px rgb(from black r g b / 0.35);\n}\n\n:host([mode="segmented"]) .rg-btn.selected:hover:not(:disabled) {\n background: var(--rg-solid-bg-hover);\n}\n\n:host([mode="segmented"]:not([color])) .rg-btn.selected {\n background: var(--color-gray-lighter);\n color: var(--color-text-main);\n}\n\n:host([mode="segmented"][variant="outlined"]) .rg-container {\n border-color: var(--rg-border);\n}\n:host([mode="segmented"][variant="outlined"]) .rg-btn.selected {\n background: var(--rg-solid-bg);\n border-color: transparent;\n color: var(--rg-solid-color);\n}\n\n.reset-btn,\n.clear-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n font-family: inherit;\n padding: 0;\n\n width: 1.333em;\n height: 1.333em;\n border-radius: var(--reset-btn-border-radius);\n border: none;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n}\n\n.reset-btn:hover { background: var(--reset-btn-bg-hover); color: var(--reset-btn-color-hover); }\n.clear-btn:hover { background: var(--clear-btn-bg-hover); color: var(--clear-btn-color-hover); }\n\n:host([mode="button"]) .reset-btn,\n:host([mode="button"]) .clear-btn,\n:host([mode="button-group"]) .reset-btn,\n:host([mode="button-group"]) .clear-btn,\n:host([mode="segmented"]) .reset-btn,\n:host([mode="segmented"]) .clear-btn {\n height: var(--rg-height);\n width: var(--rg-height);\n border-radius: var(--rg-radius);\n font-size: var(--rg-font-size);\n}\n\n:host([mode="button"]) .reset-btn,\n:host([mode="button"]) .clear-btn,\n:host([mode="button-group"]) .reset-btn,\n:host([mode="button-group"]) .clear-btn,\n:host([mode="segmented"]) .reset-btn,\n:host([mode="segmented"]) .clear-btn {\n background: transparent;\n border: 1px solid var(--color-gray-light);\n color: var(--color-text-muted);\n}\n\n:host([mode="button"]) .reset-btn:hover,\n:host([mode="button-group"]) .reset-btn:hover,\n:host([mode="segmented"]) .reset-btn:hover {\n background: var(--border-subtle);\n border-color: var(--color-gray-lighter);\n color: var(--color-text-main);\n}\n\n:host([mode="button"]) .clear-btn:hover,\n:host([mode="button-group"]) .clear-btn:hover,\n:host([mode="segmented"]) .clear-btn:hover {\n background: rgb(from var(--red) r g b / 0.10);\n border-color: var(--color-gray-lighter);\n color: var(--color-danger);\n}\n\n:host([variant="outlined"][mode="button"]) .reset-btn,\n:host([variant="outlined"][mode="button"]) .clear-btn,\n:host([variant="outlined"][mode="button-group"]) .reset-btn,\n:host([variant="outlined"][mode="button-group"]) .clear-btn,\n:host([variant="outlined"][mode="segmented"]) .reset-btn,\n:host([variant="outlined"][mode="segmented"]) .clear-btn {\n background: transparent;\n border-color: var(--rg-border);\n color: var(--rg-accent);\n}\n\n:host([variant="outlined"][mode="button"]) .reset-btn:hover,\n:host([variant="outlined"][mode="button-group"]) .reset-btn:hover,\n:host([variant="outlined"][mode="segmented"]) .reset-btn:hover {\n background: var(--border-subtle);\n border-color: var(--rg-border-hover);\n color: var(--rg-accent-hover);\n}\n\n:host([variant="outlined"][mode="button"]) .clear-btn:hover,\n:host([variant="outlined"][mode="button-group"]) .clear-btn:hover,\n:host([variant="outlined"][mode="segmented"]) .clear-btn:hover {\n background: rgb(from var(--red) r g b / 0.10);\n border-color: var(--rg-border-hover);\n color: var(--color-danger);\n}\n\n:host([variant="subtle"][mode="button"]) .reset-btn,\n:host([variant="subtle"][mode="button"]) .clear-btn,\n:host([variant="subtle"][mode="button-group"]) .reset-btn,\n:host([variant="subtle"][mode="button-group"]) .clear-btn,\n:host([variant="subtle"][mode="segmented"]) .reset-btn,\n:host([variant="subtle"][mode="segmented"]) .clear-btn {\n background: transparent;\n border-color: transparent;\n color: var(--rg-accent);\n}\n\n:host([variant="subtle"][mode="button"]) .reset-btn:hover,\n:host([variant="subtle"][mode="button-group"]) .reset-btn:hover,\n:host([variant="subtle"][mode="segmented"]) .reset-btn:hover {\n background: var(--border-subtle);\n border-color: transparent;\n color: var(--rg-accent-hover);\n}\n\n:host([variant="subtle"][mode="button"]) .clear-btn:hover,\n:host([variant="subtle"][mode="button-group"]) .clear-btn:hover,\n:host([variant="subtle"][mode="segmented"]) .clear-btn:hover {\n background: rgb(from var(--red) r g b / 0.10);\n border-color: transparent;\n color: var(--color-danger);\n}\n';
1753
1753
  const _RadioGroup = class _RadioGroup extends AeicoField {
1754
1754
  constructor() {
1755
1755
  super();
@@ -1916,7 +1916,7 @@ __publicField(Radio, "props", {
1916
1916
  disabled: { type: Boolean }
1917
1917
  });
1918
1918
  Radio.register();
1919
- const styles = ":host {\r\n display: block;\r\n font-size: var(--size-base);\r\n\r\n --switch-field-gap: 4px;\r\n\r\n --toggle-width: 2.667em;\r\n --toggle-height: 1.333em;\r\n --toggle-slider-size: 1em;\r\n --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);\r\n --toggle-border-radius: calc(var(--toggle-height) / 2);\r\n --toggle-bg: var(--color-gray);\r\n --toggle-bg-checked: var(--color-solid);\r\n --toggle-slider-bg: white;\r\n --toggle-transition: 0.2s;\r\n\r\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\r\n --color-solid: var(--color-primary);\r\n}\r\n\r\n.switch-container {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--switch-field-gap);\r\n}\r\n\r\n.switch-wrapper {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n width: var(--toggle-width);\r\n height: var(--toggle-height);\r\n flex-shrink: 0;\r\n}\r\n\r\n.field-input {\r\n position: absolute;\r\n opacity: 0;\r\n width: 100%;\r\n height: 100%;\r\n cursor: pointer;\r\n margin: 0;\r\n z-index: 1;\r\n border: none;\r\n border-radius: 0;\r\n background: none;\r\n accent-color: unset;\r\n}\r\n\r\n.field-input:disabled {\r\n cursor: not-allowed;\r\n}\r\n\r\n.toggle-slider {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: var(--toggle-bg);\r\n border-radius: var(--toggle-border-radius);\r\n transition: var(--toggle-transition);\r\n pointer-events: none;\r\n}\r\n\r\n.toggle-slider::before {\r\n content: '';\r\n position: absolute;\r\n height: var(--toggle-slider-size);\r\n width: var(--toggle-slider-size);\r\n left: var(--toggle-gap);\r\n top: var(--toggle-gap);\r\n background: var(--toggle-slider-bg);\r\n border-radius: 50%;\r\n transition: var(--toggle-transition);\r\n}\r\n\r\n.field-input:checked + .toggle-slider {\r\n background: var(--toggle-bg-checked);\r\n}\r\n\r\n.field-input:checked + .toggle-slider::before {\r\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\r\n}\r\n\r\n.field-input:disabled + .toggle-slider {\r\n opacity: 0.5;\r\n pointer-events: auto;\r\n}\r\n\r\n/* action buttons */\r\n.reset-btn,\r\n.clear-btn {\r\n width: 1.333em;\r\n height: 1.333em;\r\n border: none;\r\n border-radius: var(--reset-btn-border-radius);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: var(--reset-btn-bg);\r\n color: var(--reset-btn-color);\r\n transition: var(--reset-btn-transition);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n.reset-btn:hover {\r\n background: var(--reset-btn-bg-hover);\r\n color: var(--reset-btn-color-hover);\r\n}\r\n\r\n.clear-btn:hover {\r\n background: var(--clear-btn-bg-hover);\r\n color: var(--clear-btn-color-hover);\r\n}\r\n";
1919
+ const styles = ":host {\n display: block;\n font-size: var(--size-base);\n\n --switch-field-gap: 4px;\n\n --toggle-width: 2.667em;\n --toggle-height: 1.333em;\n --toggle-slider-size: 1em;\n --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);\n --toggle-border-radius: calc(var(--toggle-height) / 2);\n --toggle-bg: var(--color-gray);\n --toggle-bg-checked: var(--color-solid);\n --toggle-slider-bg: white;\n --toggle-transition: 0.2s;\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.switch-container {\n display: flex;\n align-items: center;\n gap: var(--switch-field-gap);\n}\n\n.switch-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--toggle-width);\n height: var(--toggle-height);\n flex-shrink: 0;\n}\n\n.field-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n margin: 0;\n z-index: 1;\n border: none;\n border-radius: 0;\n background: none;\n accent-color: unset;\n}\n\n.field-input:disabled {\n cursor: not-allowed;\n}\n\n.toggle-slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--toggle-bg);\n border-radius: var(--toggle-border-radius);\n transition: var(--toggle-transition);\n pointer-events: none;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n background: var(--toggle-slider-bg);\n border-radius: 50%;\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider {\n background: var(--toggle-bg-checked);\n}\n\n.field-input:checked + .toggle-slider::before {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.field-input:disabled + .toggle-slider {\n opacity: 0.5;\n pointer-events: auto;\n}\n\n/* action buttons */\n.reset-btn,\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n";
1920
1920
  class Switch extends AeicoField {
1921
1921
  constructor() {
1922
1922
  super(...arguments);
@@ -1978,7 +1978,7 @@ __publicField(Switch, "props", {
1978
1978
  });
1979
1979
  __publicField(Switch, "styles", [styleVariables, sizeCSS, colorCSS, styles]);
1980
1980
  Switch.register();
1981
- const style$6 = ":host {\r\n display: block;\r\n}\r\n\r\n/* Hide the separator template slot visually */\r\n.sep-template {\r\n display: none !important;\r\n}\r\n\r\n.list {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n font-size: inherit;\r\n line-height: 1.5;\r\n}\r\n";
1981
+ const style$6 = ":host {\n display: block;\n}\n\n/* Hide the separator template slot visually */\n.sep-template {\n display: none !important;\n}\n\n.list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n";
1982
1982
  var __create$a = Object.create;
1983
1983
  var __defProp$a = Object.defineProperty;
1984
1984
  var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;
@@ -2094,65 +2094,65 @@ __decoratorMetadata$a(_init$a, Breadcrumb);
2094
2094
  __publicField$a(Breadcrumb, "tagName", "breadcrumb");
2095
2095
  __publicField$a(Breadcrumb, "styles", [styleVariables, colorCSS, style$6]);
2096
2096
  Breadcrumb.register();
2097
- const style$5 = `:host {\r
2098
- display: contents;\r
2099
- }\r
2100
- \r
2101
- .item {\r
2102
- display: inline-flex;\r
2103
- align-items: center;\r
2104
- list-style: none;\r
2105
- white-space: nowrap;\r
2106
- }\r
2107
- \r
2108
- /* Separator — uses a fixed muted color that does NOT follow the breadcrumb's color prop */\r
2109
- .sep {\r
2110
- display: inline-flex;\r
2111
- align-items: center;\r
2112
- color: var(--color-text-muted);\r
2113
- padding: 0 0.35em;\r
2114
- user-select: none;\r
2115
- pointer-events: none;\r
2116
- flex-shrink: 0;\r
2117
- font-size: 0.85em;\r
2118
- }\r
2119
- \r
2120
- /* Hide separator on the first item */\r
2121
- :host(:first-child) .sep,\r
2122
- :host(:first-of-type) .sep {\r
2123
- display: none;\r
2124
- }\r
2125
- \r
2126
- .label {\r
2127
- display: inline-flex;\r
2128
- align-items: center;\r
2129
- color: var(--color-text-muted);\r
2130
- }\r
2131
- \r
2132
- /* Current page — last item */\r
2133
- :host([aria-current="page"]) .label {\r
2134
- color: var(--color-text-main);\r
2135
- font-weight: 500;\r
2136
- cursor: default;\r
2137
- }\r
2138
- \r
2139
- /* Link items */\r
2140
- .label a {\r
2141
- color: var(--color-accent, var(--color-text-link));\r
2142
- text-decoration: none;\r
2143
- outline: none;\r
2144
- }\r
2145
- \r
2146
- .label a:hover {\r
2147
- color: var(--color-accent-hover, var(--color-text-link-hover));\r
2148
- text-decoration: underline;\r
2149
- }\r
2150
- \r
2151
- .label a:focus-visible {\r
2152
- outline: 2px solid var(--color-accent, var(--focus-ring-color));\r
2153
- outline-offset: 2px;\r
2154
- border-radius: 2px;\r
2155
- }\r
2097
+ const style$5 = `:host {
2098
+ display: contents;
2099
+ }
2100
+
2101
+ .item {
2102
+ display: inline-flex;
2103
+ align-items: center;
2104
+ list-style: none;
2105
+ white-space: nowrap;
2106
+ }
2107
+
2108
+ /* Separator — uses a fixed muted color that does NOT follow the breadcrumb's color prop */
2109
+ .sep {
2110
+ display: inline-flex;
2111
+ align-items: center;
2112
+ color: var(--color-text-muted);
2113
+ padding: 0 0.35em;
2114
+ user-select: none;
2115
+ pointer-events: none;
2116
+ flex-shrink: 0;
2117
+ font-size: 0.85em;
2118
+ }
2119
+
2120
+ /* Hide separator on the first item */
2121
+ :host(:first-child) .sep,
2122
+ :host(:first-of-type) .sep {
2123
+ display: none;
2124
+ }
2125
+
2126
+ .label {
2127
+ display: inline-flex;
2128
+ align-items: center;
2129
+ color: var(--color-text-muted);
2130
+ }
2131
+
2132
+ /* Current page — last item */
2133
+ :host([aria-current="page"]) .label {
2134
+ color: var(--color-text-main);
2135
+ font-weight: 500;
2136
+ cursor: default;
2137
+ }
2138
+
2139
+ /* Link items */
2140
+ .label a {
2141
+ color: var(--color-accent, var(--color-text-link));
2142
+ text-decoration: none;
2143
+ outline: none;
2144
+ }
2145
+
2146
+ .label a:hover {
2147
+ color: var(--color-accent-hover, var(--color-text-link-hover));
2148
+ text-decoration: underline;
2149
+ }
2150
+
2151
+ .label a:focus-visible {
2152
+ outline: 2px solid var(--color-accent, var(--focus-ring-color));
2153
+ outline-offset: 2px;
2154
+ border-radius: 2px;
2155
+ }
2156
2156
  `;
2157
2157
  var __create$9 = Object.create;
2158
2158
  var __defProp$9 = Object.defineProperty;
@@ -2231,219 +2231,219 @@ __decoratorMetadata$9(_init$9, BreadcrumbItem);
2231
2231
  __publicField$9(BreadcrumbItem, "tagName", "breadcrumb-item");
2232
2232
  __publicField$9(BreadcrumbItem, "styles", [styleVariables, style$5]);
2233
2233
  BreadcrumbItem.register();
2234
- const buttonStyle = `:host {\r
2235
- display: inline-block;\r
2236
- --btn-solid-bg: var(--color-solid);\r
2237
- --btn-solid-bg-hover: var(--color-solid-hover);\r
2238
- --btn-solid-bg-active: var(--color-solid-active);\r
2239
- --btn-solid-color: var(--color-on-solid);\r
2240
- --btn-solid-color-hover: var(--color-on-solid-hover);\r
2241
- --btn-border: var(--color-border);\r
2242
- --btn-border-hover: var(--color-border-hover);\r
2243
- --btn-accent: var(--color-accent);\r
2244
- --btn-accent-hover: var(--color-accent-hover);\r
2245
- --btn-subtle-bg: var(--color-subtle);\r
2246
- --btn-subtle-bg-hover: var(--color-subtle-hover);\r
2247
- }\r
2248
- \r
2249
- button {\r
2250
- display: inline-flex;\r
2251
- align-items: center;\r
2252
- justify-content: center;\r
2253
- gap: 6px;\r
2254
- font-family: inherit;\r
2255
- font-weight: 400;\r
2256
- text-align: center;\r
2257
- white-space: nowrap;\r
2258
- vertical-align: middle;\r
2259
- user-select: none;\r
2260
- cursor: pointer;\r
2261
- transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\r
2262
- outline: none;\r
2263
- position: relative;\r
2264
- padding: 0.429em 1.071em;\r
2265
- font-size: 1em;\r
2266
- line-height: 1.5;\r
2267
- border-radius: var(--_btn-r-tl, 4px) var(--_btn-r-tr, 4px) var(--_btn-r-br, 4px) var(--_btn-r-bl, 4px);\r
2268
- min-width: 4.571em;\r
2269
- height: 2.286em;\r
2270
- width: 100%;\r
2271
- \r
2272
- background: var(--btn-solid-bg);\r
2273
- border: 1px solid var(--btn-solid-bg);\r
2274
- color: var(--btn-solid-color);\r
2275
- }\r
2276
- \r
2277
- button:focus { outline: none; }\r
2278
- button:active { transform: translateY(1px); }\r
2279
- \r
2280
- button:hover:not(:disabled) {\r
2281
- background: var(--btn-solid-bg-hover);\r
2282
- border-color: var(--btn-border-hover);\r
2283
- color: var(--btn-solid-color-hover, var(--btn-solid-color));\r
2284
- }\r
2285
- \r
2286
- button:active:not(:disabled) { background: var(--btn-solid-bg-active); }\r
2287
- \r
2288
- button:disabled {\r
2289
- opacity: 0.5;\r
2290
- cursor: not-allowed;\r
2291
- }\r
2292
- \r
2293
- :host([size="xs"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }\r
2294
- :host([size="sm"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }\r
2295
- \r
2296
- /* --- Variants --- */\r
2297
- \r
2298
- :host([variant="outlined"]) button {\r
2299
- background: transparent;\r
2300
- border-color: var(--btn-border);\r
2301
- color: var(--btn-accent);\r
2302
- }\r
2303
- \r
2304
- :host([variant="outlined"]) button:hover:not(:disabled) {\r
2305
- background: var(--btn-subtle-bg);\r
2306
- border-color: var(--btn-border-hover);\r
2307
- color: var(--btn-accent-hover);\r
2308
- }\r
2309
- \r
2310
- :host([variant="outlined"]) button:active:not(:disabled) {\r
2311
- background: var(--btn-subtle-bg-hover);\r
2312
- }\r
2313
- \r
2314
- :host([variant="subtle"]) button {\r
2315
- background: var(--btn-subtle-bg);\r
2316
- border-color: transparent;\r
2317
- color: var(--btn-accent);\r
2318
- }\r
2319
- \r
2320
- :host([variant="subtle"]) button:hover:not(:disabled) {\r
2321
- background: var(--btn-subtle-bg-hover);\r
2322
- color: var(--btn-accent-hover);\r
2323
- }\r
2324
- \r
2325
- :host([variant="subtle"]) button:active:not(:disabled) {\r
2326
- background: var(--btn-subtle-bg-hover);\r
2327
- }\r
2328
- \r
2329
- :host([variant="faint"]) button {\r
2330
- background: var(--btn-subtle-bg);\r
2331
- border-color: var(--btn-border);\r
2332
- color: var(--btn-accent);\r
2333
- }\r
2334
- \r
2335
- :host([variant="faint"]) button:hover:not(:disabled) {\r
2336
- background: var(--btn-subtle-bg-hover);\r
2337
- border-color: var(--btn-border-hover);\r
2338
- color: var(--btn-accent-hover);\r
2339
- }\r
2340
- \r
2341
- :host([variant="faint"]) button:active:not(:disabled) {\r
2342
- background: var(--btn-subtle-bg-hover);\r
2343
- }\r
2344
- \r
2345
- :host([variant="text"]) button {\r
2346
- background: transparent;\r
2347
- border-color: transparent;\r
2348
- color: var(--btn-accent);\r
2349
- min-width: auto;\r
2350
- padding-left: 4px;\r
2351
- padding-right: 4px;\r
2352
- }\r
2353
- \r
2354
- :host([variant="text"]) button:hover:not(:disabled) {\r
2355
- background: var(--btn-subtle-bg);\r
2356
- color: var(--btn-accent-hover);\r
2357
- }\r
2358
- \r
2359
- :host([variant="text"]) button:active:not(:disabled) {\r
2360
- background: var(--btn-subtle-bg-hover);\r
2361
- }\r
2362
- \r
2363
- /* Icon-only: single ae-icon child → square compact layout */\r
2364
- :host([icon-only]) {\r
2365
- display: inline-flex;\r
2366
- }\r
2367
- \r
2368
- :host([icon-only]:not([size])) {\r
2369
- font-size: var(--size-m);\r
2370
- }\r
2371
- \r
2372
- :host([icon-only]) button {\r
2373
- padding: 0;\r
2374
- min-width: auto;\r
2375
- width: 2.286em;\r
2376
- height: 2.286em;\r
2377
- line-height: 1;\r
2378
- }\r
2379
- \r
2380
- :host([icon-only]) ::slotted(ae-icon) {\r
2381
- font-size: 1.5em;\r
2382
- }\r
2383
- \r
2384
- :host([active]) button {\r
2385
- background: var(--btn-solid-bg-active);\r
2386
- border-color: var(--btn-border-hover);\r
2387
- color: var(--btn-solid-color-hover, var(--btn-solid-color));\r
2388
- }\r
2389
- \r
2390
- .btn-icon {\r
2391
- padding: 0;\r
2392
- min-width: auto;\r
2393
- width: 2.286em;\r
2394
- height: 2.286em;\r
2395
- display: inline-flex;\r
2396
- align-items: center;\r
2397
- justify-content: center;\r
2398
- border-radius: 4px;\r
2399
- }\r
2400
- \r
2401
- .btn-icon.btn-lg {\r
2402
- width: 2.857em;\r
2403
- height: 2.857em;\r
2404
- }\r
2405
- \r
2406
- .btn-circle {\r
2407
- border-radius: 50%;\r
2408
- }\r
2409
- \r
2410
- :host([block]) {\r
2411
- display: block;\r
2412
- }\r
2413
- \r
2414
- button.btn-loading {\r
2415
- position: relative;\r
2416
- pointer-events: none;\r
2417
- color: transparent;\r
2418
- }\r
2419
- \r
2420
- button.btn-loading::before {\r
2421
- content: '';\r
2422
- position: absolute;\r
2423
- width: 1em;\r
2424
- height: 1em;\r
2425
- border: 2px solid currentColor;\r
2426
- border-top-color: transparent;\r
2427
- border-radius: 50%;\r
2428
- animation: btn-spin 0.6s linear infinite;\r
2429
- color: currentColor;\r
2430
- opacity: 0.8;\r
2431
- }\r
2432
- \r
2433
- @keyframes btn-spin {\r
2434
- to {\r
2435
- transform: rotate(360deg);\r
2436
- }\r
2437
- }\r
2438
- \r
2439
- .btn-icon-left {\r
2440
- margin-right: -2px;\r
2441
- }\r
2442
- \r
2443
- .btn-icon-right {\r
2444
- margin-left: -2px;\r
2445
- }\r
2446
- \r
2234
+ const buttonStyle = `:host {
2235
+ display: inline-block;
2236
+ --btn-solid-bg: var(--color-solid);
2237
+ --btn-solid-bg-hover: var(--color-solid-hover);
2238
+ --btn-solid-bg-active: var(--color-solid-active);
2239
+ --btn-solid-color: var(--color-on-solid);
2240
+ --btn-solid-color-hover: var(--color-on-solid-hover);
2241
+ --btn-border: var(--color-border);
2242
+ --btn-border-hover: var(--color-border-hover);
2243
+ --btn-accent: var(--color-accent);
2244
+ --btn-accent-hover: var(--color-accent-hover);
2245
+ --btn-subtle-bg: var(--color-subtle);
2246
+ --btn-subtle-bg-hover: var(--color-subtle-hover);
2247
+ }
2248
+
2249
+ button {
2250
+ display: inline-flex;
2251
+ align-items: center;
2252
+ justify-content: center;
2253
+ gap: 6px;
2254
+ font-family: inherit;
2255
+ font-weight: 400;
2256
+ text-align: center;
2257
+ white-space: nowrap;
2258
+ vertical-align: middle;
2259
+ user-select: none;
2260
+ cursor: pointer;
2261
+ transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
2262
+ outline: none;
2263
+ position: relative;
2264
+ padding: 0.429em 1.071em;
2265
+ font-size: 1em;
2266
+ line-height: 1.5;
2267
+ border-radius: var(--_btn-r-tl, 4px) var(--_btn-r-tr, 4px) var(--_btn-r-br, 4px) var(--_btn-r-bl, 4px);
2268
+ min-width: 4.571em;
2269
+ height: 2.286em;
2270
+ width: 100%;
2271
+
2272
+ background: var(--btn-solid-bg);
2273
+ border: 1px solid var(--btn-solid-bg);
2274
+ color: var(--btn-solid-color);
2275
+ }
2276
+
2277
+ button:focus { outline: none; }
2278
+ button:active { transform: translateY(1px); }
2279
+
2280
+ button:hover:not(:disabled) {
2281
+ background: var(--btn-solid-bg-hover);
2282
+ border-color: var(--btn-border-hover);
2283
+ color: var(--btn-solid-color-hover, var(--btn-solid-color));
2284
+ }
2285
+
2286
+ button:active:not(:disabled) { background: var(--btn-solid-bg-active); }
2287
+
2288
+ button:disabled {
2289
+ opacity: 0.5;
2290
+ cursor: not-allowed;
2291
+ }
2292
+
2293
+ :host([size="xs"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }
2294
+ :host([size="sm"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }
2295
+
2296
+ /* --- Variants --- */
2297
+
2298
+ :host([variant="outlined"]) button {
2299
+ background: transparent;
2300
+ border-color: var(--btn-border);
2301
+ color: var(--btn-accent);
2302
+ }
2303
+
2304
+ :host([variant="outlined"]) button:hover:not(:disabled) {
2305
+ background: var(--btn-subtle-bg);
2306
+ border-color: var(--btn-border-hover);
2307
+ color: var(--btn-accent-hover);
2308
+ }
2309
+
2310
+ :host([variant="outlined"]) button:active:not(:disabled) {
2311
+ background: var(--btn-subtle-bg-hover);
2312
+ }
2313
+
2314
+ :host([variant="subtle"]) button {
2315
+ background: var(--btn-subtle-bg);
2316
+ border-color: transparent;
2317
+ color: var(--btn-accent);
2318
+ }
2319
+
2320
+ :host([variant="subtle"]) button:hover:not(:disabled) {
2321
+ background: var(--btn-subtle-bg-hover);
2322
+ color: var(--btn-accent-hover);
2323
+ }
2324
+
2325
+ :host([variant="subtle"]) button:active:not(:disabled) {
2326
+ background: var(--btn-subtle-bg-hover);
2327
+ }
2328
+
2329
+ :host([variant="faint"]) button {
2330
+ background: var(--btn-subtle-bg);
2331
+ border-color: var(--btn-border);
2332
+ color: var(--btn-accent);
2333
+ }
2334
+
2335
+ :host([variant="faint"]) button:hover:not(:disabled) {
2336
+ background: var(--btn-subtle-bg-hover);
2337
+ border-color: var(--btn-border-hover);
2338
+ color: var(--btn-accent-hover);
2339
+ }
2340
+
2341
+ :host([variant="faint"]) button:active:not(:disabled) {
2342
+ background: var(--btn-subtle-bg-hover);
2343
+ }
2344
+
2345
+ :host([variant="text"]) button {
2346
+ background: transparent;
2347
+ border-color: transparent;
2348
+ color: var(--btn-accent);
2349
+ min-width: auto;
2350
+ padding-left: 4px;
2351
+ padding-right: 4px;
2352
+ }
2353
+
2354
+ :host([variant="text"]) button:hover:not(:disabled) {
2355
+ background: var(--btn-subtle-bg);
2356
+ color: var(--btn-accent-hover);
2357
+ }
2358
+
2359
+ :host([variant="text"]) button:active:not(:disabled) {
2360
+ background: var(--btn-subtle-bg-hover);
2361
+ }
2362
+
2363
+ /* Icon-only: single ae-icon child → square compact layout */
2364
+ :host([icon-only]) {
2365
+ display: inline-flex;
2366
+ }
2367
+
2368
+ :host([icon-only]:not([size])) {
2369
+ font-size: var(--size-m);
2370
+ }
2371
+
2372
+ :host([icon-only]) button {
2373
+ padding: 0;
2374
+ min-width: auto;
2375
+ width: 2.286em;
2376
+ height: 2.286em;
2377
+ line-height: 1;
2378
+ }
2379
+
2380
+ :host([icon-only]) ::slotted(ae-icon) {
2381
+ font-size: 1.5em;
2382
+ }
2383
+
2384
+ :host([active]) button {
2385
+ background: var(--btn-solid-bg-active);
2386
+ border-color: var(--btn-border-hover);
2387
+ color: var(--btn-solid-color-hover, var(--btn-solid-color));
2388
+ }
2389
+
2390
+ .btn-icon {
2391
+ padding: 0;
2392
+ min-width: auto;
2393
+ width: 2.286em;
2394
+ height: 2.286em;
2395
+ display: inline-flex;
2396
+ align-items: center;
2397
+ justify-content: center;
2398
+ border-radius: 4px;
2399
+ }
2400
+
2401
+ .btn-icon.btn-lg {
2402
+ width: 2.857em;
2403
+ height: 2.857em;
2404
+ }
2405
+
2406
+ .btn-circle {
2407
+ border-radius: 50%;
2408
+ }
2409
+
2410
+ :host([block]) {
2411
+ display: block;
2412
+ }
2413
+
2414
+ button.btn-loading {
2415
+ position: relative;
2416
+ pointer-events: none;
2417
+ color: transparent;
2418
+ }
2419
+
2420
+ button.btn-loading::before {
2421
+ content: '';
2422
+ position: absolute;
2423
+ width: 1em;
2424
+ height: 1em;
2425
+ border: 2px solid currentColor;
2426
+ border-top-color: transparent;
2427
+ border-radius: 50%;
2428
+ animation: btn-spin 0.6s linear infinite;
2429
+ color: currentColor;
2430
+ opacity: 0.8;
2431
+ }
2432
+
2433
+ @keyframes btn-spin {
2434
+ to {
2435
+ transform: rotate(360deg);
2436
+ }
2437
+ }
2438
+
2439
+ .btn-icon-left {
2440
+ margin-right: -2px;
2441
+ }
2442
+
2443
+ .btn-icon-right {
2444
+ margin-left: -2px;
2445
+ }
2446
+
2447
2447
  `;
2448
2448
  var __create$8 = Object.create;
2449
2449
  var __defProp$8 = Object.defineProperty;
@@ -2574,100 +2574,100 @@ __decorateElement$8(_init$8, 5, "block", _block_dec, Button);
2574
2574
  __decoratorMetadata$8(_init$8, Button);
2575
2575
  __publicField$8(Button, "styles", [styleVariables, sizeCSS, colorCSS, buttonStyle]);
2576
2576
  Button.register();
2577
- const style$4 = ":host {\r\n display: inline-block;\r\n position: relative;\r\n\r\n --dropdown-z-index: 1000;\r\n --dropdown-bg: var(--surface-overlay, #fff);\r\n --dropdown-border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\r\n --dropdown-border-radius: var(--ae-radius-md, 6px);\r\n --dropdown-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\r\n --dropdown-min-width: 10rem;\r\n --dropdown-padding: 0.25rem 0;\r\n}\r\n\r\n.trigger-wrapper {\r\n display: flex;\r\n align-items: stretch;\r\n height: 100%;\r\n}\r\n\r\n/* Internal trigger rendered when `label` prop is set.\r\n Uses --dropdown-trigger-* variables. Context components (e.g. ae-navbar)\r\n map their own tokens to these variables via ::slotted(ae-dropdown). */\r\n.trigger-label {\r\n display: inline-flex;\r\n align-items: center;\r\n height: var(--dropdown-trigger-height, auto);\r\n padding: 0 var(--dropdown-trigger-padding-x, 0.75rem);\r\n color: var(--dropdown-trigger-color, inherit);\r\n background: var(--dropdown-trigger-bg, none);\r\n border: none;\r\n border-radius: var(--dropdown-trigger-radius, 0);\r\n -webkit-appearance: none;\r\n appearance: none;\r\n cursor: pointer;\r\n font: inherit;\r\n font-size: var(--dropdown-trigger-font-size, inherit);\r\n white-space: nowrap;\r\n transition: color 0.15s ease, background-color 0.15s ease;\r\n outline-offset: 2px;\r\n}\r\n\r\n.trigger-label:hover {\r\n color: var(--dropdown-trigger-hover-color, inherit);\r\n background-color: var(--dropdown-trigger-hover-bg, transparent);\r\n}\r\n\r\n:host([disabled]) .trigger-label {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n/* Bootstrap-style CSS border caret — shadow DOM only, no global injection needed */\r\n.ae-dropdown-arrow {\r\n display: inline-block;\r\n width: 0;\r\n height: 0;\r\n margin-left: 0.3em;\r\n vertical-align: 0.2em;\r\n flex-shrink: 0;\r\n}\r\n.ae-dropdown-arrow--bottom {\r\n border-top: 0.35em solid;\r\n border-right: 0.35em solid transparent;\r\n border-left: 0.35em solid transparent;\r\n}\r\n.ae-dropdown-arrow--top {\r\n border-bottom: 0.35em solid;\r\n border-right: 0.35em solid transparent;\r\n border-left: 0.35em solid transparent;\r\n}\r\n.ae-dropdown-arrow--right {\r\n border-left: 0.35em solid;\r\n border-top: 0.35em solid transparent;\r\n border-bottom: 0.35em solid transparent;\r\n}\r\n.ae-dropdown-arrow--left {\r\n border-right: 0.35em solid;\r\n border-top: 0.35em solid transparent;\r\n border-bottom: 0.35em solid transparent;\r\n}\r\n\r\n.panel {\r\n display: none;\r\n position: absolute;\r\n z-index: var(--dropdown-z-index);\r\n background: var(--dropdown-bg);\r\n border: var(--dropdown-border);\r\n border-radius: var(--dropdown-border-radius);\r\n box-shadow: var(--dropdown-shadow);\r\n min-width: var(--dropdown-min-width);\r\n padding: var(--dropdown-padding);\r\n box-sizing: border-box;\r\n /* Prevent panel from being wider than viewport */\r\n max-width: calc(100vw - 16px);\r\n}\r\n\r\n.panel.open {\r\n display: block;\r\n}\r\n\r\n/* placement variants */\r\n.panel.placement-bottom-start {\r\n top: 100%;\r\n left: 0;\r\n margin-top: 4px;\r\n}\r\n\r\n.panel.placement-bottom-end {\r\n top: 100%;\r\n right: 0;\r\n margin-top: 4px;\r\n}\r\n\r\n.panel.placement-bottom {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n margin-top: 4px;\r\n}\r\n\r\n.panel.placement-top-start {\r\n bottom: 100%;\r\n left: 0;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.panel.placement-top-end {\r\n bottom: 100%;\r\n right: 0;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.panel.placement-top {\r\n bottom: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n margin-bottom: 4px;\r\n}\r\n\r\n/* right placements */\r\n.panel.placement-right-start {\r\n top: 0;\r\n left: 100%;\r\n margin-left: 4px;\r\n}\r\n\r\n.panel.placement-right-end {\r\n bottom: 0;\r\n left: 100%;\r\n margin-left: 4px;\r\n}\r\n\r\n.panel.placement-right {\r\n top: 50%;\r\n left: 100%;\r\n transform: translateY(-50%);\r\n margin-left: 4px;\r\n}\r\n\r\n/* left placements */\r\n.panel.placement-left-start {\r\n top: 0;\r\n right: 100%;\r\n margin-right: 4px;\r\n}\r\n\r\n.panel.placement-left-end {\r\n bottom: 0;\r\n right: 100%;\r\n margin-right: 4px;\r\n}\r\n\r\n.panel.placement-left {\r\n top: 50%;\r\n right: 100%;\r\n transform: translateY(-50%);\r\n margin-right: 4px;\r\n}\r\n";
2578
- const style$3 = `:host {\r
2579
- display: block;\r
2580
- \r
2581
- --dropdown-item-padding: 0.5rem 0.875rem;\r
2582
- --dropdown-item-bg: transparent;\r
2583
- --dropdown-item-bg-hover: var(--surface-raised, rgba(0, 0, 0, 0.05));\r
2584
- --dropdown-item-bg-active: var(--surface-raised-active, rgba(0, 0, 0, 0.1));\r
2585
- --dropdown-item-color: var(--color-text-main, inherit);\r
2586
- --dropdown-item-color-disabled: var(--color-text-disabled, rgba(0, 0, 0, 0.35));\r
2587
- --dropdown-item-font-size: 0.9375rem;\r
2588
- --dropdown-item-gap: 0.5rem;\r
2589
- --dropdown-item-transition: background 0.1s;\r
2590
- --dropdown-item-border-radius: var(--ae-radius-sm, 4px);\r
2591
- }\r
2592
- \r
2593
- .item {\r
2594
- display: flex;\r
2595
- align-items: center;\r
2596
- gap: var(--dropdown-item-gap);\r
2597
- width: 100%;\r
2598
- padding: var(--dropdown-item-padding);\r
2599
- font-size: var(--dropdown-item-font-size);\r
2600
- font-family: inherit;\r
2601
- color: var(--dropdown-item-color);\r
2602
- background: var(--dropdown-item-bg);\r
2603
- border: none;\r
2604
- border-radius: var(--dropdown-item-border-radius);\r
2605
- text-align: left;\r
2606
- text-decoration: none;\r
2607
- cursor: pointer;\r
2608
- user-select: none;\r
2609
- white-space: nowrap;\r
2610
- box-sizing: border-box;\r
2611
- transition: var(--dropdown-item-transition);\r
2612
- outline: none;\r
2613
- }\r
2614
- \r
2615
- .item:hover:not(:disabled):not([aria-disabled="true"]) {\r
2616
- background: var(--dropdown-item-bg-hover);\r
2617
- }\r
2618
- \r
2619
- .item:active:not(:disabled):not([aria-disabled="true"]) {\r
2620
- background: var(--dropdown-item-bg-active);\r
2621
- }\r
2622
- \r
2623
- .item:focus-visible {\r
2624
- background: var(--dropdown-item-bg-hover);\r
2625
- outline: 2px solid var(--color-primary, #0e639c);\r
2626
- outline-offset: -2px;\r
2627
- }\r
2628
- \r
2629
- /* disabled */\r
2630
- :host([disabled]) .item,\r
2631
- .item:disabled {\r
2632
- color: var(--dropdown-item-color-disabled);\r
2633
- cursor: default;\r
2634
- pointer-events: none;\r
2635
- }\r
2636
- \r
2637
- /* Active item — current selection, current route, etc. */\r
2638
- :host([active]) .item {\r
2639
- background: var(--dropdown-item-bg-selected, rgba(0, 0, 0, 0.06));\r
2640
- color: var(--dropdown-item-color-active, var(--color-primary, #0e639c));\r
2641
- font-weight: 500;\r
2642
- }\r
2643
- \r
2644
- /* Checkbox mode — fixed-width indicator column */\r
2645
- .check-indicator {\r
2646
- display: inline-flex;\r
2647
- align-items: center;\r
2648
- justify-content: center;\r
2649
- width: 1em;\r
2650
- flex-shrink: 0;\r
2651
- }\r
2652
- \r
2653
- /* CSS-drawn checkmark (border trick) */\r
2654
- .check-indicator::after {\r
2655
- content: '';\r
2656
- display: block;\r
2657
- width: 0.3em;\r
2658
- height: 0.55em;\r
2659
- border-right: 0.125em solid currentColor;\r
2660
- border-bottom: 0.125em solid currentColor;\r
2661
- transform: rotate(45deg) translateY(-0.1em);\r
2662
- opacity: 0;\r
2663
- transition: opacity 0.1s;\r
2664
- }\r
2665
- \r
2666
- :host([checked]) .check-indicator::after {\r
2667
- opacity: 1;\r
2668
- }\r
2577
+ const style$4 = ":host {\n display: inline-block;\n position: relative;\n\n --dropdown-z-index: 1000;\n --dropdown-bg: var(--surface-overlay, #fff);\n --dropdown-border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n --dropdown-border-radius: var(--ae-radius-md, 6px);\n --dropdown-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n --dropdown-min-width: 10rem;\n --dropdown-padding: 0.25rem 0;\n}\n\n.trigger-wrapper {\n display: flex;\n align-items: stretch;\n height: 100%;\n}\n\n/* Internal trigger rendered when `label` prop is set.\n Uses --dropdown-trigger-* variables. Context components (e.g. ae-navbar)\n map their own tokens to these variables via ::slotted(ae-dropdown). */\n.trigger-label {\n display: inline-flex;\n align-items: center;\n height: var(--dropdown-trigger-height, auto);\n padding: 0 var(--dropdown-trigger-padding-x, 0.75rem);\n color: var(--dropdown-trigger-color, inherit);\n background: var(--dropdown-trigger-bg, none);\n border: none;\n border-radius: var(--dropdown-trigger-radius, 0);\n -webkit-appearance: none;\n appearance: none;\n cursor: pointer;\n font: inherit;\n font-size: var(--dropdown-trigger-font-size, inherit);\n white-space: nowrap;\n transition: color 0.15s ease, background-color 0.15s ease;\n outline-offset: 2px;\n}\n\n.trigger-label:hover {\n color: var(--dropdown-trigger-hover-color, inherit);\n background-color: var(--dropdown-trigger-hover-bg, transparent);\n}\n\n:host([disabled]) .trigger-label {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Bootstrap-style CSS border caret — shadow DOM only, no global injection needed */\n.ae-dropdown-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.3em;\n vertical-align: 0.2em;\n flex-shrink: 0;\n}\n.ae-dropdown-arrow--bottom {\n border-top: 0.35em solid;\n border-right: 0.35em solid transparent;\n border-left: 0.35em solid transparent;\n}\n.ae-dropdown-arrow--top {\n border-bottom: 0.35em solid;\n border-right: 0.35em solid transparent;\n border-left: 0.35em solid transparent;\n}\n.ae-dropdown-arrow--right {\n border-left: 0.35em solid;\n border-top: 0.35em solid transparent;\n border-bottom: 0.35em solid transparent;\n}\n.ae-dropdown-arrow--left {\n border-right: 0.35em solid;\n border-top: 0.35em solid transparent;\n border-bottom: 0.35em solid transparent;\n}\n\n.panel {\n display: none;\n position: absolute;\n z-index: var(--dropdown-z-index);\n background: var(--dropdown-bg);\n border: var(--dropdown-border);\n border-radius: var(--dropdown-border-radius);\n box-shadow: var(--dropdown-shadow);\n min-width: var(--dropdown-min-width);\n padding: var(--dropdown-padding);\n box-sizing: border-box;\n /* Prevent panel from being wider than viewport */\n max-width: calc(100vw - 16px);\n}\n\n.panel.open {\n display: block;\n}\n\n/* placement variants */\n.panel.placement-bottom-start {\n top: 100%;\n left: 0;\n margin-top: 4px;\n}\n\n.panel.placement-bottom-end {\n top: 100%;\n right: 0;\n margin-top: 4px;\n}\n\n.panel.placement-bottom {\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 4px;\n}\n\n.panel.placement-top-start {\n bottom: 100%;\n left: 0;\n margin-bottom: 4px;\n}\n\n.panel.placement-top-end {\n bottom: 100%;\n right: 0;\n margin-bottom: 4px;\n}\n\n.panel.placement-top {\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-bottom: 4px;\n}\n\n/* right placements */\n.panel.placement-right-start {\n top: 0;\n left: 100%;\n margin-left: 4px;\n}\n\n.panel.placement-right-end {\n bottom: 0;\n left: 100%;\n margin-left: 4px;\n}\n\n.panel.placement-right {\n top: 50%;\n left: 100%;\n transform: translateY(-50%);\n margin-left: 4px;\n}\n\n/* left placements */\n.panel.placement-left-start {\n top: 0;\n right: 100%;\n margin-right: 4px;\n}\n\n.panel.placement-left-end {\n bottom: 0;\n right: 100%;\n margin-right: 4px;\n}\n\n.panel.placement-left {\n top: 50%;\n right: 100%;\n transform: translateY(-50%);\n margin-right: 4px;\n}\n";
2578
+ const style$3 = `:host {
2579
+ display: block;
2580
+
2581
+ --dropdown-item-padding: 0.5rem 0.875rem;
2582
+ --dropdown-item-bg: transparent;
2583
+ --dropdown-item-bg-hover: var(--surface-raised, rgba(0, 0, 0, 0.05));
2584
+ --dropdown-item-bg-active: var(--surface-raised-active, rgba(0, 0, 0, 0.1));
2585
+ --dropdown-item-color: var(--color-text-main, inherit);
2586
+ --dropdown-item-color-disabled: var(--color-text-disabled, rgba(0, 0, 0, 0.35));
2587
+ --dropdown-item-font-size: 0.9375rem;
2588
+ --dropdown-item-gap: 0.5rem;
2589
+ --dropdown-item-transition: background 0.1s;
2590
+ --dropdown-item-border-radius: var(--ae-radius-sm, 4px);
2591
+ }
2592
+
2593
+ .item {
2594
+ display: flex;
2595
+ align-items: center;
2596
+ gap: var(--dropdown-item-gap);
2597
+ width: 100%;
2598
+ padding: var(--dropdown-item-padding);
2599
+ font-size: var(--dropdown-item-font-size);
2600
+ font-family: inherit;
2601
+ color: var(--dropdown-item-color);
2602
+ background: var(--dropdown-item-bg);
2603
+ border: none;
2604
+ border-radius: var(--dropdown-item-border-radius);
2605
+ text-align: left;
2606
+ text-decoration: none;
2607
+ cursor: pointer;
2608
+ user-select: none;
2609
+ white-space: nowrap;
2610
+ box-sizing: border-box;
2611
+ transition: var(--dropdown-item-transition);
2612
+ outline: none;
2613
+ }
2614
+
2615
+ .item:hover:not(:disabled):not([aria-disabled="true"]) {
2616
+ background: var(--dropdown-item-bg-hover);
2617
+ }
2618
+
2619
+ .item:active:not(:disabled):not([aria-disabled="true"]) {
2620
+ background: var(--dropdown-item-bg-active);
2621
+ }
2622
+
2623
+ .item:focus-visible {
2624
+ background: var(--dropdown-item-bg-hover);
2625
+ outline: 2px solid var(--color-primary, #0e639c);
2626
+ outline-offset: -2px;
2627
+ }
2628
+
2629
+ /* disabled */
2630
+ :host([disabled]) .item,
2631
+ .item:disabled {
2632
+ color: var(--dropdown-item-color-disabled);
2633
+ cursor: default;
2634
+ pointer-events: none;
2635
+ }
2636
+
2637
+ /* Active item — current selection, current route, etc. */
2638
+ :host([active]) .item {
2639
+ background: var(--dropdown-item-bg-selected, rgba(0, 0, 0, 0.06));
2640
+ color: var(--dropdown-item-color-active, var(--color-primary, #0e639c));
2641
+ font-weight: 500;
2642
+ }
2643
+
2644
+ /* Checkbox mode — fixed-width indicator column */
2645
+ .check-indicator {
2646
+ display: inline-flex;
2647
+ align-items: center;
2648
+ justify-content: center;
2649
+ width: 1em;
2650
+ flex-shrink: 0;
2651
+ }
2652
+
2653
+ /* CSS-drawn checkmark (border trick) */
2654
+ .check-indicator::after {
2655
+ content: '';
2656
+ display: block;
2657
+ width: 0.3em;
2658
+ height: 0.55em;
2659
+ border-right: 0.125em solid currentColor;
2660
+ border-bottom: 0.125em solid currentColor;
2661
+ transform: rotate(45deg) translateY(-0.1em);
2662
+ opacity: 0;
2663
+ transition: opacity 0.1s;
2664
+ }
2665
+
2666
+ :host([checked]) .check-indicator::after {
2667
+ opacity: 1;
2668
+ }
2669
2669
  `;
2670
- const style$2 = ":host {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 20px;\r\n width: 1em;\r\n height: 1em;\r\n color: inherit;\r\n flex-shrink: 0;\r\n line-height: 0;\r\n vertical-align: middle;\r\n}\r\n\r\n:host([color]) {\r\n color: var(--color-solid);\r\n}\r\n\r\n.icon-svg {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n fill: var(--icon-fill, currentColor);\r\n stroke: var(--icon-stroke, none);\r\n stroke-width: var(--icon-stroke-width, 2);\r\n stroke-linecap: var(--icon-stroke-linecap, round);\r\n stroke-linejoin: var(--icon-stroke-linejoin, round);\r\n pointer-events: none;\r\n overflow: visible;\r\n}\r\n";
2670
+ const style$2 = ":host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n width: 1em;\n height: 1em;\n color: inherit;\n flex-shrink: 0;\n line-height: 0;\n vertical-align: middle;\n}\n\n:host([color]) {\n color: var(--color-solid);\n}\n\n.icon-svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: var(--icon-fill, currentColor);\n stroke: var(--icon-stroke, none);\n stroke-width: var(--icon-stroke-width, 2);\n stroke-linecap: var(--icon-stroke-linecap, round);\n stroke-linejoin: var(--icon-stroke-linejoin, round);\n pointer-events: none;\n overflow: visible;\n}\n";
2671
2671
  const defaultViewBox = "0 0 24 24";
2672
2672
  class IconRegistry {
2673
2673
  static add(icons) {
@@ -3166,7 +3166,7 @@ __publicField$5(DropdownButton, "styles", [
3166
3166
  ".caret--left { border-right: 0.35em solid; border-top: 0.35em solid transparent; border-bottom: 0.35em solid transparent; }"
3167
3167
  ]);
3168
3168
  DropdownButton.register();
3169
- const buttonGroupStyle = ":host {\r\n display: inline-flex;\r\n align-items: stretch;\r\n gap: 8px;\r\n}\r\n\r\n:host([block]) {\r\n display: flex;\r\n width: 100%;\r\n}\r\n\r\n:host([block]) ::slotted(ae-button) {\r\n flex: 1;\r\n}\r\n\r\n:host([compact]) {\r\n gap: 0;\r\n}\r\n\r\n/* Raise hovered/focused button so its border shows above neighbours */\r\n:host([compact]) ::slotted(ae-button:hover),\r\n:host([compact]) ::slotted(ae-button:focus-within) {\r\n position: relative;\r\n z-index: 1;\r\n}\r\n";
3169
+ const buttonGroupStyle = ":host {\n display: inline-flex;\n align-items: stretch;\n gap: 8px;\n}\n\n:host([block]) {\n display: flex;\n width: 100%;\n}\n\n:host([block]) ::slotted(ae-button) {\n flex: 1;\n}\n\n:host([compact]) {\n gap: 0;\n}\n\n/* Raise hovered/focused button so its border shows above neighbours */\n:host([compact]) ::slotted(ae-button:hover),\n:host([compact]) ::slotted(ae-button:focus-within) {\n position: relative;\n z-index: 1;\n}\n";
3170
3170
  class ButtonGroup extends AeicoComponent {
3171
3171
  constructor() {
3172
3172
  super(...arguments);
@@ -3236,7 +3236,7 @@ __publicField(ButtonGroup, "props", {
3236
3236
  });
3237
3237
  __publicField(ButtonGroup, "styles", [styleVariables, buttonGroupStyle]);
3238
3238
  ButtonGroup.register();
3239
- const badgeStyle = ':host {\r\n display: inline-flex;\r\n align-items: center;\r\n --badge-solid-bg: var(--color-solid);\r\n --badge-solid-color: var(--color-on-solid);\r\n --badge-border: var(--color-border);\r\n --badge-accent: var(--color-accent);\r\n --badge-subtle-bg: var(--color-bg-subtle);\r\n --badge-subtle-color: var(--color-text-subtle);\r\n --badge-subtle-border: var(--color-border-subtle);\r\n}\r\n\r\n.badge {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n font-family: inherit;\r\n font-weight: 500;\r\n white-space: nowrap;\r\n vertical-align: middle;\r\n line-height: 1.2;\r\n font-size: 1em;\r\n padding: 0.15em 0.6em;\r\n border-radius: 4px;\r\n border: 1px solid var(--badge-solid-bg);\r\n background: var(--badge-solid-bg);\r\n color: var(--badge-solid-color);\r\n}\r\n\r\n/* Default (no [variant]) = filled */\r\n\r\n/* --- Variants --- */\r\n\r\n:host([variant="outlined"]) .badge {\r\n background: transparent;\r\n border-color: var(--badge-border);\r\n color: var(--badge-accent);\r\n}\r\n\r\n:host([variant="faint"]) .badge {\r\n background: var(--badge-subtle-bg);\r\n border-color: var(--badge-subtle-border);\r\n color: var(--badge-subtle-color);\r\n}\r\n\r\n:host([variant="subtle"]) .badge {\r\n background: var(--badge-subtle-bg);\r\n border-color: transparent;\r\n color: var(--badge-subtle-color);\r\n}\r\n\r\n:host([variant="text"]) .badge {\r\n background: transparent;\r\n border-color: transparent;\r\n color: var(--badge-accent);\r\n padding-left: 0;\r\n padding-right: 0;\r\n}\r\n\r\n:host([pill]) .badge {\r\n border-radius: 999px;\r\n}\r\n\r\n/* Icon slots */\r\n::slotted(ae-icon) {\r\n font-size: 1.1em;\r\n}\r\n';
3239
+ const badgeStyle = ':host {\n display: inline-flex;\n align-items: center;\n --badge-solid-bg: var(--color-solid);\n --badge-solid-color: var(--color-on-solid);\n --badge-border: var(--color-border);\n --badge-accent: var(--color-accent);\n --badge-subtle-bg: var(--color-bg-subtle);\n --badge-subtle-color: var(--color-text-subtle);\n --badge-subtle-border: var(--color-border-subtle);\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.6em;\n border-radius: 4px;\n border: 1px solid var(--badge-solid-bg);\n background: var(--badge-solid-bg);\n color: var(--badge-solid-color);\n}\n\n/* Default (no [variant]) = filled */\n\n/* --- Variants --- */\n\n:host([variant="outlined"]) .badge {\n background: transparent;\n border-color: var(--badge-border);\n color: var(--badge-accent);\n}\n\n:host([variant="faint"]) .badge {\n background: var(--badge-subtle-bg);\n border-color: var(--badge-subtle-border);\n color: var(--badge-subtle-color);\n}\n\n:host([variant="subtle"]) .badge {\n background: var(--badge-subtle-bg);\n border-color: transparent;\n color: var(--badge-subtle-color);\n}\n\n:host([variant="text"]) .badge {\n background: transparent;\n border-color: transparent;\n color: var(--badge-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n:host([pill]) .badge {\n border-radius: 999px;\n}\n\n/* Icon slots */\n::slotted(ae-icon) {\n font-size: 1.1em;\n}\n';
3240
3240
  var __create$4 = Object.create;
3241
3241
  var __defProp$4 = Object.defineProperty;
3242
3242
  var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
@@ -3313,110 +3313,110 @@ __decorateElement$4(_init$4, 4, "pill", _pill_dec, Badge, _pill);
3313
3313
  __decoratorMetadata$4(_init$4, Badge);
3314
3314
  __publicField$4(Badge, "styles", [styleVariables, sizeCSS, colorCSS, badgeStyle]);
3315
3315
  Badge.register();
3316
- const alertStyle = `.alert {\r
3317
- position: relative;\r
3318
- padding: 12px 16px;\r
3319
- margin-bottom: 12px;\r
3320
- border-radius: 4px;\r
3321
- font-size: 12px;\r
3322
- line-height: 1.6;\r
3323
- background-color: var(--alert-solid-bg);\r
3324
- color: var(--alert-solid-color);\r
3325
- border: 1px solid var(--alert-solid-bg);\r
3326
- }\r
3327
- \r
3328
- .alert:last-child {\r
3329
- margin-bottom: 0;\r
3330
- }\r
3331
- \r
3332
- :host {\r
3333
- --color-solid: var(--color-primary);\r
3334
- --color-on-solid: var(--color-text-main);\r
3335
- --color-border: var(--color-primary);\r
3336
- --color-bg-subtle: var(--color-primary-bg-subtle);\r
3337
- --color-text-subtle: var(--color-primary-text-emphasis);\r
3338
- --color-border-subtle: var(--color-primary-border-subtle);\r
3339
- \r
3340
- --alert-solid-bg: var(--color-solid);\r
3341
- --alert-solid-color: var(--color-on-solid);\r
3342
- --alert-border: var(--color-border);\r
3343
- --alert-subtle-bg: var(--color-bg-subtle);\r
3344
- --alert-subtle-color: var(--color-text-subtle);\r
3345
- --alert-subtle-border:var(--color-border-subtle);\r
3346
- }\r
3347
- \r
3348
- \r
3349
- :host([variant="faint"]) .alert {\r
3350
- background-color: var(--alert-subtle-bg);\r
3351
- color: var(--alert-subtle-color);\r
3352
- border-color: var(--alert-subtle-border);\r
3353
- }\r
3354
- \r
3355
- :host([variant="subtle"]) .alert {\r
3356
- background-color: var(--alert-subtle-bg);\r
3357
- color: var(--alert-subtle-color);\r
3358
- border-color: transparent;\r
3359
- }\r
3360
- \r
3361
- :host([variant="filled"]) .alert {\r
3362
- background-color: var(--alert-solid-bg);\r
3363
- color: var(--alert-solid-color);\r
3364
- border-color: var(--alert-solid-bg);\r
3365
- }\r
3366
- \r
3367
- :host([variant="outlined"]) .alert {\r
3368
- background-color: transparent;\r
3369
- color: var(--alert-subtle-color);\r
3370
- border-color: var(--alert-border);\r
3371
- }\r
3372
- \r
3373
- :host([dismissible]) .alert {\r
3374
- padding-right: 40px;\r
3375
- }\r
3376
- \r
3377
- :host([icon]) .alert {\r
3378
- display: flex;\r
3379
- align-items: flex-start;\r
3380
- gap: 10px;\r
3381
- }\r
3382
- \r
3383
- :host([icon]) .alert::before {\r
3384
- content: '';\r
3385
- flex-shrink: 0;\r
3386
- width: 16px;\r
3387
- height: 16px;\r
3388
- margin-top: 2px;\r
3389
- }\r
3390
- \r
3391
- .alert-close {\r
3392
- position: absolute;\r
3393
- top: 50%;\r
3394
- right: 12px;\r
3395
- transform: translateY(-50%);\r
3396
- background: transparent;\r
3397
- border: none;\r
3398
- color: inherit;\r
3399
- opacity: 0.6;\r
3400
- cursor: pointer;\r
3401
- padding: 4px;\r
3402
- font-size: 18px;\r
3403
- line-height: 1;\r
3404
- transition: opacity 0.15s;\r
3405
- }\r
3406
- \r
3407
- .alert-close:hover {\r
3408
- opacity: 1;\r
3409
- }\r
3410
- \r
3411
- :host([size="sm"]) .alert {\r
3412
- padding: 8px 12px;\r
3413
- font-size: 11px;\r
3414
- }\r
3415
- \r
3416
- :host([size="lg"]) .alert {\r
3417
- padding: 16px 20px;\r
3418
- font-size: 13px;\r
3419
- }\r
3316
+ const alertStyle = `.alert {
3317
+ position: relative;
3318
+ padding: 12px 16px;
3319
+ margin-bottom: 12px;
3320
+ border-radius: 4px;
3321
+ font-size: 12px;
3322
+ line-height: 1.6;
3323
+ background-color: var(--alert-solid-bg);
3324
+ color: var(--alert-solid-color);
3325
+ border: 1px solid var(--alert-solid-bg);
3326
+ }
3327
+
3328
+ .alert:last-child {
3329
+ margin-bottom: 0;
3330
+ }
3331
+
3332
+ :host {
3333
+ --color-solid: var(--color-primary);
3334
+ --color-on-solid: var(--color-text-main);
3335
+ --color-border: var(--color-primary);
3336
+ --color-bg-subtle: var(--color-primary-bg-subtle);
3337
+ --color-text-subtle: var(--color-primary-text-emphasis);
3338
+ --color-border-subtle: var(--color-primary-border-subtle);
3339
+
3340
+ --alert-solid-bg: var(--color-solid);
3341
+ --alert-solid-color: var(--color-on-solid);
3342
+ --alert-border: var(--color-border);
3343
+ --alert-subtle-bg: var(--color-bg-subtle);
3344
+ --alert-subtle-color: var(--color-text-subtle);
3345
+ --alert-subtle-border:var(--color-border-subtle);
3346
+ }
3347
+
3348
+
3349
+ :host([variant="faint"]) .alert {
3350
+ background-color: var(--alert-subtle-bg);
3351
+ color: var(--alert-subtle-color);
3352
+ border-color: var(--alert-subtle-border);
3353
+ }
3354
+
3355
+ :host([variant="subtle"]) .alert {
3356
+ background-color: var(--alert-subtle-bg);
3357
+ color: var(--alert-subtle-color);
3358
+ border-color: transparent;
3359
+ }
3360
+
3361
+ :host([variant="filled"]) .alert {
3362
+ background-color: var(--alert-solid-bg);
3363
+ color: var(--alert-solid-color);
3364
+ border-color: var(--alert-solid-bg);
3365
+ }
3366
+
3367
+ :host([variant="outlined"]) .alert {
3368
+ background-color: transparent;
3369
+ color: var(--alert-subtle-color);
3370
+ border-color: var(--alert-border);
3371
+ }
3372
+
3373
+ :host([dismissible]) .alert {
3374
+ padding-right: 40px;
3375
+ }
3376
+
3377
+ :host([icon]) .alert {
3378
+ display: flex;
3379
+ align-items: flex-start;
3380
+ gap: 10px;
3381
+ }
3382
+
3383
+ :host([icon]) .alert::before {
3384
+ content: '';
3385
+ flex-shrink: 0;
3386
+ width: 16px;
3387
+ height: 16px;
3388
+ margin-top: 2px;
3389
+ }
3390
+
3391
+ .alert-close {
3392
+ position: absolute;
3393
+ top: 50%;
3394
+ right: 12px;
3395
+ transform: translateY(-50%);
3396
+ background: transparent;
3397
+ border: none;
3398
+ color: inherit;
3399
+ opacity: 0.6;
3400
+ cursor: pointer;
3401
+ padding: 4px;
3402
+ font-size: 18px;
3403
+ line-height: 1;
3404
+ transition: opacity 0.15s;
3405
+ }
3406
+
3407
+ .alert-close:hover {
3408
+ opacity: 1;
3409
+ }
3410
+
3411
+ :host([size="sm"]) .alert {
3412
+ padding: 8px 12px;
3413
+ font-size: 11px;
3414
+ }
3415
+
3416
+ :host([size="lg"]) .alert {
3417
+ padding: 16px 20px;
3418
+ font-size: 13px;
3419
+ }
3420
3420
  `;
3421
3421
  class Alert extends AeicoComponent {
3422
3422
  constructor() {
@@ -3472,7 +3472,7 @@ __publicField(Alert, "props", {
3472
3472
  __publicField(Alert, "useStyles", ["alert"]);
3473
3473
  __publicField(Alert, "styles", [styleVariables, colorCSS, alertStyle]);
3474
3474
  Alert.register();
3475
- const style$1 = ":host {\r\n display: contents;\r\n}\r\n\r\ndialog {\r\n display: none;\r\n flex-direction: column;\r\n border: none;\r\n border-radius: 8px;\r\n padding: 0;\r\n max-width: min(90vw, 600px);\r\n max-height: 90vh;\r\n background: var(--surface-overlay);\r\n color: var(--color-text-main);\r\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\r\n overflow: hidden;\r\n}\r\n\r\ndialog[open] {\r\n display: flex;\r\n animation: dialog-slide-in 0.2s ease;\r\n}\r\n\r\ndialog::backdrop {\r\n background: var(--color-overlay);\r\n animation: dialog-backdrop-in 0.2s ease;\r\n}\r\n\r\n@keyframes dialog-backdrop-in {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n}\r\n\r\n@keyframes dialog-slide-in {\r\n from {\r\n opacity: 0;\r\n transform: scale(0.96) translateY(-8px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: scale(1) translateY(0);\r\n }\r\n}\r\n\r\nheader {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n padding: 16px 20px;\r\n border-bottom: 1px solid var(--border-subtle);\r\n flex-shrink: 0;\r\n}\r\n\r\n.label {\r\n flex: 1;\r\n font-size: var(--size-m, 1rem);\r\n font-weight: 500;\r\n margin: 0;\r\n color: var(--color-text-main);\r\n}\r\n\r\n.close-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: var(--color-text-muted);\r\n font-size: 18px;\r\n line-height: 1;\r\n cursor: pointer;\r\n transition: background 0.15s, color 0.15s;\r\n}\r\n\r\n.close-btn:hover {\r\n background: var(--border-subtle);\r\n color: var(--color-text-main);\r\n}\r\n\r\n.body {\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: 20px;\r\n}\r\n\r\nfooter {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n padding: 12px 20px;\r\n border-top: 1px solid var(--border-subtle);\r\n flex-shrink: 0;\r\n}\r\n\r\n::slotted([data-align-left]) {\r\n margin-right: auto;\r\n}\r\n";
3475
+ const style$1 = ":host {\n display: contents;\n}\n\ndialog {\n display: none;\n flex-direction: column;\n border: none;\n border-radius: 8px;\n padding: 0;\n max-width: min(90vw, 600px);\n max-height: 90vh;\n background: var(--surface-overlay);\n color: var(--color-text-main);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\ndialog[open] {\n display: flex;\n animation: dialog-slide-in 0.2s ease;\n}\n\ndialog::backdrop {\n background: var(--color-overlay);\n animation: dialog-backdrop-in 0.2s ease;\n}\n\n@keyframes dialog-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes dialog-slide-in {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--border-subtle);\n color: var(--color-text-main);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
3476
3476
  class Dialog extends AeicoComponent {
3477
3477
  constructor() {
3478
3478
  super(...arguments);
@@ -3607,7 +3607,7 @@ __publicField(IconButton, "props", {
3607
3607
  });
3608
3608
  __publicField(IconButton, "styles", [":host { display: contents; }"]);
3609
3609
  IconButton.register();
3610
- const tabsStyle = ':host {\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n}\r\n\r\n[part="tab-nav"] {\r\n display: flex;\r\n flex-shrink: 0;\r\n border-bottom: 1px solid var(--ae-tabs-border-color, var(--border-default));\r\n}\r\n\r\n[part="panels"] {\r\n flex: 1;\r\n overflow: auto;\r\n}\r\n';
3610
+ const tabsStyle = ':host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n[part="tab-nav"] {\n display: flex;\n flex-shrink: 0;\n border-bottom: 1px solid var(--ae-tabs-border-color, var(--border-default));\n}\n\n[part="panels"] {\n flex: 1;\n overflow: auto;\n}\n';
3611
3611
  class Tabs extends AeicoComponent {
3612
3612
  constructor() {
3613
3613
  super(...arguments);
@@ -3708,7 +3708,7 @@ __publicField(Tabs, "props", {
3708
3708
  });
3709
3709
  __publicField(Tabs, "styles", [styleVariables, tabsStyle]);
3710
3710
  Tabs.register();
3711
- const tabStyle = ":host {\r\n display: inline-flex;\r\n cursor: pointer;\r\n margin-bottom: -1px;\r\n}\r\n\r\nbutton {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 8px 16px;\r\n background: none;\r\n border: none;\r\n border-bottom: 2px solid transparent;\r\n cursor: pointer;\r\n font-size: inherit;\r\n font-family: inherit;\r\n color: var(--ae-tab-color, #909090);\r\n font-size: var(--ae-tab-font-size, inherit);\r\n transition: color 0.15s, border-color 0.15s;\r\n outline: none;\r\n white-space: nowrap;\r\n user-select: none;\r\n}\r\n\r\nbutton:hover {\r\n color: var(--ae-tab-hover-color, var(--color-primary));\r\n}\r\n\r\nbutton:focus-visible {\r\n outline: 2px solid var(--color-primary);\r\n outline-offset: -2px;\r\n}\r\n\r\n:host([active]) button {\r\n color: var(--ae-tab-active-color, var(--color-primary));\r\n border-bottom-color: var(--ae-tab-active-color, var(--color-primary));\r\n}\r\n\r\n:host([disabled]) button {\r\n opacity: 0.4;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n";
3711
+ const tabStyle = ":host {\n display: inline-flex;\n cursor: pointer;\n margin-bottom: -1px;\n}\n\nbutton {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: inherit;\n font-family: inherit;\n color: var(--ae-tab-color, #909090);\n font-size: var(--ae-tab-font-size, inherit);\n transition: color 0.15s, border-color 0.15s;\n outline: none;\n white-space: nowrap;\n user-select: none;\n}\n\nbutton:hover {\n color: var(--ae-tab-hover-color, var(--color-primary));\n}\n\nbutton:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: -2px;\n}\n\n:host([active]) button {\n color: var(--ae-tab-active-color, var(--color-primary));\n border-bottom-color: var(--ae-tab-active-color, var(--color-primary));\n}\n\n:host([disabled]) button {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n";
3712
3712
  class Tab extends AeicoComponent {
3713
3713
  constructor() {
3714
3714
  super(...arguments);
@@ -3752,7 +3752,7 @@ __publicField(Tab, "props", {
3752
3752
  });
3753
3753
  __publicField(Tab, "styles", [tabStyle]);
3754
3754
  Tab.register();
3755
- const tabPanelStyle = ":host {\r\n display: none;\r\n padding: 16px 0;\r\n}\r\n\r\n:host([active]) {\r\n display: block;\r\n}\r\n";
3755
+ const tabPanelStyle = ":host {\n display: none;\n padding: 16px 0;\n}\n\n:host([active]) {\n display: block;\n}\n";
3756
3756
  class TabPanel extends AeicoComponent {
3757
3757
  render() {
3758
3758
  return html(({ slot }) => {
@@ -3762,7 +3762,7 @@ class TabPanel extends AeicoComponent {
3762
3762
  }
3763
3763
  __publicField(TabPanel, "styles", [tabPanelStyle]);
3764
3764
  TabPanel.register();
3765
- const style = ":host {\r\n display: block;\r\n width: 100%;\r\n height: var(--thickness, 1px);\r\n flex-shrink: 0;\r\n\r\n /* Override colorCSS default --color-border from gray to the subtle border token */\r\n --color-border: var(--border-default);\r\n\r\n background: var(--color-border);\r\n}\r\n\r\n:host([vertical]) {\r\n display: inline-block;\r\n width: var(--thickness, 1px);\r\n height: 1lh;\r\n vertical-align: middle;\r\n}\r\n";
3765
+ const style = ":host {\n display: block;\n width: 100%;\n height: var(--thickness, 1px);\n flex-shrink: 0;\n\n /* Override colorCSS default --color-border from gray to the subtle border token */\n --color-border: var(--border-default);\n\n background: var(--color-border);\n}\n\n:host([vertical]) {\n display: inline-block;\n width: var(--thickness, 1px);\n height: 1lh;\n vertical-align: middle;\n}\n";
3766
3766
  var __create$3 = Object.create;
3767
3767
  var __defProp$3 = Object.defineProperty;
3768
3768
  var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
@@ -3835,7 +3835,7 @@ __decoratorMetadata$3(_init$3, Divider);
3835
3835
  __publicField$3(Divider, "tagName", "divider");
3836
3836
  __publicField$3(Divider, "styles", [styleVariables, colorCSS, style]);
3837
3837
  Divider.register();
3838
- const cardStyle = ':host {\r\n display: block;\r\n\r\n --card-bg: var(--color-bg-subtle);\r\n --card-color: var(--color-text-subtle);\r\n --card-border: var(--color-border-subtle);\r\n --card-divider: var(--color-border-subtle);\r\n}\r\n\r\n:host([variant="faint"]) {\r\n --card-bg: var(--color-bg-subtle);\r\n --card-color: var(--color-text-subtle);\r\n --card-border: var(--color-border-subtle);\r\n --card-divider: var(--color-border-subtle);\r\n}\r\n\r\n:host([variant="subtle"]) {\r\n --card-border: transparent;\r\n --card-divider: transparent;\r\n}\r\n\r\n:host([variant="filled"]) {\r\n --card-bg: var(--color-solid);\r\n --card-color: var(--color-on-solid);\r\n --card-border: var(--color-solid);\r\n --card-divider: color-mix(in srgb, var(--color-solid), black 15%);\r\n}\r\n\r\n:host([variant="outlined"]) {\r\n --card-bg: transparent;\r\n --card-color: var(--color-text-subtle);\r\n --card-border: var(--color-border);\r\n --card-divider: var(--color-border-subtle);\r\n}\r\n\r\n.card {\r\n border: 1px solid var(--card-border);\r\n border-radius: 8px;\r\n background: var(--card-bg);\r\n color: var(--card-color);\r\n overflow: hidden;\r\n}\r\n\r\n.header,\r\n.footer {\r\n display: none;\r\n padding: 10px 16px;\r\n font-size: 14px;\r\n font-weight: 500;\r\n}\r\n\r\n:host([has-header]) .header {\r\n display: block;\r\n border-bottom: 1px solid var(--card-divider);\r\n}\r\n\r\n:host([has-footer]) .footer {\r\n display: block;\r\n border-top: 1px solid var(--card-divider);\r\n}\r\n\r\n.body {\r\n padding: 16px;\r\n}\r\n';
3838
+ const cardStyle = ':host {\n display: block;\n\n --card-bg: var(--color-bg-subtle);\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border-subtle);\n --card-divider: var(--color-border-subtle);\n}\n\n:host([variant="faint"]) {\n --card-bg: var(--color-bg-subtle);\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border-subtle);\n --card-divider: var(--color-border-subtle);\n}\n\n:host([variant="subtle"]) {\n --card-border: transparent;\n --card-divider: transparent;\n}\n\n:host([variant="filled"]) {\n --card-bg: var(--color-solid);\n --card-color: var(--color-on-solid);\n --card-border: var(--color-solid);\n --card-divider: color-mix(in srgb, var(--color-solid), black 15%);\n}\n\n:host([variant="outlined"]) {\n --card-bg: transparent;\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border);\n --card-divider: var(--color-border-subtle);\n}\n\n.card {\n border: 1px solid var(--card-border);\n border-radius: 8px;\n background: var(--card-bg);\n color: var(--card-color);\n overflow: hidden;\n}\n\n.header,\n.footer {\n display: none;\n padding: 10px 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n:host([has-header]) .header {\n display: block;\n border-bottom: 1px solid var(--card-divider);\n}\n\n:host([has-footer]) .footer {\n display: block;\n border-top: 1px solid var(--card-divider);\n}\n\n.body {\n padding: 16px;\n}\n';
3839
3839
  var __create$2 = Object.create;
3840
3840
  var __defProp$2 = Object.defineProperty;
3841
3841
  var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
@@ -3921,7 +3921,7 @@ __decoratorMetadata$2(_init$2, Card);
3921
3921
  __publicField$2(Card, "tagName", "card");
3922
3922
  __publicField$2(Card, "styles", [styleVariables, colorCSS, cardStyle]);
3923
3923
  Card.register();
3924
- const navbarStyle = ':host {\r\n /* layout — padding lives in .inner so document * { padding:0 } cannot override it */\r\n display: block;\r\n position: static;\r\n top: auto;\r\n z-index: var(--ae-navbar-z-index, 100);\r\n box-sizing: border-box;\r\n height: var(--ae-navbar-height, 3.25rem);\r\n border-radius: var(--ae-navbar-radius, 0);\r\n\r\n /* color */\r\n background: var(--ae-navbar-bg, var(--surface-base));\r\n color: var(--ae-navbar-color, var(--color-text-main));\r\n border-bottom: var(--ae-navbar-border-width, 1px) solid var(--ae-navbar-border-color, var(--border-default));\r\n box-shadow: var(--ae-navbar-shadow, none);\r\n\r\n /* layout tokens — declared here so they are clearly part of the public API */\r\n --ae-navbar-radius: 0;\r\n /* Default padding-x references the global layout token so ae-navbar content\r\n automatically aligns with .container / .container-fluid in light DOM.\r\n Override with --ae-navbar-padding-x to decouple if needed. */\r\n --ae-navbar-padding-x: var(--container-padding-x, 1.5rem);\r\n --ae-navbar-gap: 0.5rem;\r\n\r\n /* link style tokens — text mode defaults.\r\n CSS custom properties inherit into slotted content, so\r\n ::slotted(a[slot="start"]) can reference --ae-navbar-height. */\r\n --ae-navbar-link-color: inherit;\r\n --ae-navbar-link-font-size: inherit;\r\n --ae-navbar-link-padding-x: 0.75rem; /* horizontal padding only; height fills vertically */\r\n --ae-navbar-link-radius: 0;\r\n --ae-navbar-link-hover-color: var(--color-text-link-hover);\r\n --ae-navbar-link-hover-bg: transparent;\r\n --ae-navbar-link-active-color: var(--color-text-link);\r\n --ae-navbar-link-active-font-weight: 600;\r\n}\r\n\r\n:host([sticky]) {\r\n position: sticky;\r\n top: 0;\r\n}\r\n\r\n:host([color]) {\r\n --ae-navbar-bg: var(--color-solid);\r\n --ae-navbar-color: var(--color-on-solid);\r\n --ae-navbar-border-color: transparent;\r\n --ae-navbar-link-hover-color: var(--color-on-solid);\r\n --ae-navbar-link-active-color: var(--color-on-solid);\r\n}\r\n\r\n/* block preset: hover shows a subtle filled block */\r\n:host([appearance="block"]) {\r\n --ae-navbar-link-hover-bg: var(--color-bg-subtle);\r\n --ae-navbar-link-hover-color: inherit;\r\n}\r\n\r\n/* block preset on colored navbar: use semi-transparent white */\r\n:host([color][appearance="block"]) {\r\n --ae-navbar-link-hover-bg: rgba(255, 255, 255, 0.15);\r\n --ae-navbar-link-hover-color: var(--color-on-solid);\r\n}\r\n\r\n.inner {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n padding: 0 var(--ae-navbar-padding-x);\r\n gap: var(--ae-navbar-gap);\r\n box-sizing: border-box;\r\n}\r\n\r\n[part="brand"] {\r\n flex: 0 0 auto;\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n/* nav wraps start + end; takes all remaining space */\r\n[part="nav"] {\r\n flex: 1 1 auto;\r\n display: flex;\r\n align-self: stretch; /* stretch to host height so children can fill it */\r\n align-items: stretch;\r\n min-width: 0;\r\n}\r\n\r\n[part="start"],\r\n[part="end"] {\r\n flex: 0 0 auto;\r\n display: flex;\r\n align-self: stretch;\r\n}\r\n\r\n[part="start"] {\r\n align-items: stretch; /* slotted <a> will stretch to full height */\r\n gap: var(--ae-navbar-start-gap, 0);\r\n}\r\n\r\n[part="end"] {\r\n align-items: center; /* buttons / avatars stay vertically centred */\r\n gap: var(--ae-navbar-end-gap, 0.5rem);\r\n margin-left: auto;\r\n}\r\n\r\n/* hamburger — hidden on desktop */\r\n[part="hamburger"] {\r\n display: none;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 5px;\r\n flex-shrink: 0;\r\n width: var(--ae-navbar-hamburger-size, 2rem);\r\n height: var(--ae-navbar-hamburger-size, 2rem);\r\n margin-left: auto;\r\n padding: 0;\r\n background: none;\r\n border: none;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n color: var(--ae-navbar-hamburger-color, inherit);\r\n}\r\n\r\n[part="hamburger"]:hover {\r\n background: color-mix(in srgb, currentColor 10%, transparent);\r\n}\r\n\r\n[part="hamburger"] span {\r\n display: block;\r\n width: 18px;\r\n height: 2px;\r\n background: currentColor;\r\n border-radius: 1px;\r\n transition: transform 0.2s ease, opacity 0.2s ease;\r\n}\r\n\r\n/* Brand link — sensible defaults, no full-height stretch */\r\n::slotted(a[slot="brand"]) {\r\n display: inline-flex;\r\n align-items: center;\r\n color: inherit;\r\n font-weight: 700;\r\n font-size: 1.05rem;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n}\r\n\r\n/* Nav links (start / end slots) — fill full navbar height for block hover effect */\r\n::slotted(a[slot="start"]),\r\n::slotted(a[slot="end"]) {\r\n display: inline-flex;\r\n align-items: center;\r\n height: var(--ae-navbar-height, 3.25rem); /* full-height hover area */\r\n /* !important overrides document-level * { padding: 0 } reset */\r\n padding: 0 var(--ae-navbar-link-padding-x) !important;\r\n border-radius: var(--ae-navbar-link-radius);\r\n color: var(--ae-navbar-link-color);\r\n font-size: var(--ae-navbar-link-font-size);\r\n text-decoration: none;\r\n white-space: nowrap;\r\n transition: color 0.15s ease, background-color 0.15s ease;\r\n outline-offset: 2px;\r\n}\r\n\r\n::slotted(a[slot="start"]:hover),\r\n::slotted(a[slot="end"]:hover) {\r\n color: var(--ae-navbar-link-hover-color);\r\n background-color: var(--ae-navbar-link-hover-bg);\r\n}\r\n\r\n::slotted(a[slot="start"][aria-current="page"]),\r\n::slotted(a[slot="end"][aria-current="page"]) {\r\n color: var(--ae-navbar-link-active-color);\r\n font-weight: var(--ae-navbar-link-active-font-weight);\r\n}\r\n\r\n/* ae-dropdown inside navbar — map navbar tokens to dropdown trigger API */\r\n::slotted(ae-dropdown) {\r\n align-self: stretch;\r\n --dropdown-trigger-height: 100%;\r\n --dropdown-trigger-padding-x: var(--ae-navbar-link-padding-x);\r\n --dropdown-trigger-color: var(--ae-navbar-link-color);\r\n --dropdown-trigger-bg: none;\r\n --dropdown-trigger-radius: var(--ae-navbar-link-radius);\r\n --dropdown-trigger-font-size: var(--ae-navbar-link-font-size);\r\n --dropdown-trigger-hover-color: var(--ae-navbar-link-hover-color);\r\n --dropdown-trigger-hover-bg: var(--ae-navbar-link-hover-bg);\r\n}\r\n\r\n@media (max-width: 768px) {\r\n /* collapse the nav container */\r\n [part="nav"] {\r\n display: none;\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n right: 0;\r\n flex-direction: column;\r\n align-items: stretch;\r\n gap: 0;\r\n padding: 0.5rem 0;\r\n background: var(--ae-navbar-mobile-bg, var(--ae-navbar-bg, var(--surface-base)));\r\n border-bottom: 1px solid var(--ae-navbar-border-color, var(--border-default));\r\n box-shadow: var(--ae-navbar-mobile-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));\r\n z-index: 1;\r\n }\r\n\r\n :host([open]) [part="nav"] {\r\n display: flex;\r\n }\r\n\r\n /* stack start/end vertically inside the panel */\r\n [part="start"],\r\n [part="end"] {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n align-self: auto;\r\n gap: 0;\r\n margin-left: 0;\r\n width: 100%;\r\n }\r\n\r\n /* Mobile: links revert to auto height and add vertical padding */\r\n ::slotted(a[slot="start"]),\r\n ::slotted(a[slot="end"]) {\r\n height: auto;\r\n width: 100%;\r\n padding: 0.75rem var(--ae-navbar-link-padding-x);\r\n border-radius: 0;\r\n }\r\n\r\n /* show hamburger */\r\n [part="hamburger"] {\r\n display: flex;\r\n }\r\n\r\n /* hamburger → × animation */\r\n :host([open]) [part="hamburger"] span:nth-child(1) {\r\n transform: translateY(7px) rotate(45deg);\r\n }\r\n\r\n :host([open]) [part="hamburger"] span:nth-child(2) {\r\n opacity: 0;\r\n transform: scaleX(0);\r\n }\r\n\r\n :host([open]) [part="hamburger"] span:nth-child(3) {\r\n transform: translateY(-7px) rotate(-45deg);\r\n }\r\n}\r\n';
3924
+ const navbarStyle = ':host {\n /* layout — padding lives in .inner so document * { padding:0 } cannot override it */\n display: block;\n position: static;\n top: auto;\n z-index: var(--ae-navbar-z-index, 100);\n box-sizing: border-box;\n height: var(--ae-navbar-height, 3.25rem);\n border-radius: var(--ae-navbar-radius, 0);\n\n /* color */\n background: var(--ae-navbar-bg, var(--surface-base));\n color: var(--ae-navbar-color, var(--color-text-main));\n border-bottom: var(--ae-navbar-border-width, 1px) solid var(--ae-navbar-border-color, var(--border-default));\n box-shadow: var(--ae-navbar-shadow, none);\n\n /* layout tokens — declared here so they are clearly part of the public API */\n --ae-navbar-radius: 0;\n /* Default padding-x references the global layout token so ae-navbar content\n automatically aligns with .container / .container-fluid in light DOM.\n Override with --ae-navbar-padding-x to decouple if needed. */\n --ae-navbar-padding-x: var(--container-padding-x, 1.5rem);\n --ae-navbar-gap: 0.5rem;\n\n /* link style tokens — text mode defaults.\n CSS custom properties inherit into slotted content, so\n ::slotted(a[slot="start"]) can reference --ae-navbar-height. */\n --ae-navbar-link-color: inherit;\n --ae-navbar-link-font-size: inherit;\n --ae-navbar-link-padding-x: 0.75rem; /* horizontal padding only; height fills vertically */\n --ae-navbar-link-radius: 0;\n --ae-navbar-link-hover-color: var(--color-text-link-hover);\n --ae-navbar-link-hover-bg: transparent;\n --ae-navbar-link-active-color: var(--color-text-link);\n --ae-navbar-link-active-font-weight: 600;\n}\n\n:host([sticky]) {\n position: sticky;\n top: 0;\n}\n\n:host([color]) {\n --ae-navbar-bg: var(--color-solid);\n --ae-navbar-color: var(--color-on-solid);\n --ae-navbar-border-color: transparent;\n --ae-navbar-link-hover-color: var(--color-on-solid);\n --ae-navbar-link-active-color: var(--color-on-solid);\n}\n\n/* block preset: hover shows a subtle filled block */\n:host([appearance="block"]) {\n --ae-navbar-link-hover-bg: var(--color-bg-subtle);\n --ae-navbar-link-hover-color: inherit;\n}\n\n/* block preset on colored navbar: use semi-transparent white */\n:host([color][appearance="block"]) {\n --ae-navbar-link-hover-bg: rgba(255, 255, 255, 0.15);\n --ae-navbar-link-hover-color: var(--color-on-solid);\n}\n\n.inner {\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0 var(--ae-navbar-padding-x);\n gap: var(--ae-navbar-gap);\n box-sizing: border-box;\n}\n\n[part="brand"] {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n}\n\n/* nav wraps start + end; takes all remaining space */\n[part="nav"] {\n flex: 1 1 auto;\n display: flex;\n align-self: stretch; /* stretch to host height so children can fill it */\n align-items: stretch;\n min-width: 0;\n}\n\n[part="start"],\n[part="end"] {\n flex: 0 0 auto;\n display: flex;\n align-self: stretch;\n}\n\n[part="start"] {\n align-items: stretch; /* slotted <a> will stretch to full height */\n gap: var(--ae-navbar-start-gap, 0);\n}\n\n[part="end"] {\n align-items: center; /* buttons / avatars stay vertically centred */\n gap: var(--ae-navbar-end-gap, 0.5rem);\n margin-left: auto;\n}\n\n/* hamburger — hidden on desktop */\n[part="hamburger"] {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex-shrink: 0;\n width: var(--ae-navbar-hamburger-size, 2rem);\n height: var(--ae-navbar-hamburger-size, 2rem);\n margin-left: auto;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: var(--ae-navbar-hamburger-color, inherit);\n}\n\n[part="hamburger"]:hover {\n background: color-mix(in srgb, currentColor 10%, transparent);\n}\n\n[part="hamburger"] span {\n display: block;\n width: 18px;\n height: 2px;\n background: currentColor;\n border-radius: 1px;\n transition: transform 0.2s ease, opacity 0.2s ease;\n}\n\n/* Brand link — sensible defaults, no full-height stretch */\n::slotted(a[slot="brand"]) {\n display: inline-flex;\n align-items: center;\n color: inherit;\n font-weight: 700;\n font-size: 1.05rem;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Nav links (start / end slots) — fill full navbar height for block hover effect */\n::slotted(a[slot="start"]),\n::slotted(a[slot="end"]) {\n display: inline-flex;\n align-items: center;\n height: var(--ae-navbar-height, 3.25rem); /* full-height hover area */\n /* !important overrides document-level * { padding: 0 } reset */\n padding: 0 var(--ae-navbar-link-padding-x) !important;\n border-radius: var(--ae-navbar-link-radius);\n color: var(--ae-navbar-link-color);\n font-size: var(--ae-navbar-link-font-size);\n text-decoration: none;\n white-space: nowrap;\n transition: color 0.15s ease, background-color 0.15s ease;\n outline-offset: 2px;\n}\n\n::slotted(a[slot="start"]:hover),\n::slotted(a[slot="end"]:hover) {\n color: var(--ae-navbar-link-hover-color);\n background-color: var(--ae-navbar-link-hover-bg);\n}\n\n::slotted(a[slot="start"][aria-current="page"]),\n::slotted(a[slot="end"][aria-current="page"]) {\n color: var(--ae-navbar-link-active-color);\n font-weight: var(--ae-navbar-link-active-font-weight);\n}\n\n/* ae-dropdown inside navbar — map navbar tokens to dropdown trigger API */\n::slotted(ae-dropdown) {\n align-self: stretch;\n --dropdown-trigger-height: 100%;\n --dropdown-trigger-padding-x: var(--ae-navbar-link-padding-x);\n --dropdown-trigger-color: var(--ae-navbar-link-color);\n --dropdown-trigger-bg: none;\n --dropdown-trigger-radius: var(--ae-navbar-link-radius);\n --dropdown-trigger-font-size: var(--ae-navbar-link-font-size);\n --dropdown-trigger-hover-color: var(--ae-navbar-link-hover-color);\n --dropdown-trigger-hover-bg: var(--ae-navbar-link-hover-bg);\n}\n\n@media (max-width: 768px) {\n /* collapse the nav container */\n [part="nav"] {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0.5rem 0;\n background: var(--ae-navbar-mobile-bg, var(--ae-navbar-bg, var(--surface-base)));\n border-bottom: 1px solid var(--ae-navbar-border-color, var(--border-default));\n box-shadow: var(--ae-navbar-mobile-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));\n z-index: 1;\n }\n\n :host([open]) [part="nav"] {\n display: flex;\n }\n\n /* stack start/end vertically inside the panel */\n [part="start"],\n [part="end"] {\n flex-direction: column;\n align-items: flex-start;\n align-self: auto;\n gap: 0;\n margin-left: 0;\n width: 100%;\n }\n\n /* Mobile: links revert to auto height and add vertical padding */\n ::slotted(a[slot="start"]),\n ::slotted(a[slot="end"]) {\n height: auto;\n width: 100%;\n padding: 0.75rem var(--ae-navbar-link-padding-x);\n border-radius: 0;\n }\n\n /* show hamburger */\n [part="hamburger"] {\n display: flex;\n }\n\n /* hamburger → × animation */\n :host([open]) [part="hamburger"] span:nth-child(1) {\n transform: translateY(7px) rotate(45deg);\n }\n\n :host([open]) [part="hamburger"] span:nth-child(2) {\n opacity: 0;\n transform: scaleX(0);\n }\n\n :host([open]) [part="hamburger"] span:nth-child(3) {\n transform: translateY(-7px) rotate(-45deg);\n }\n}\n';
3925
3925
  var __create$1 = Object.create;
3926
3926
  var __defProp$1 = Object.defineProperty;
3927
3927
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
@@ -4057,7 +4057,7 @@ __decoratorMetadata$1(_init$1, Navbar);
4057
4057
  __publicField$1(Navbar, "tagName", "navbar");
4058
4058
  __publicField$1(Navbar, "styles", [styleVariables, colorCSS, navbarStyle]);
4059
4059
  Navbar.register();
4060
- const detailStyle = ':host {\r\n display: block;\r\n\r\n --detail-bg: var(--color-solid);\r\n --detail-color: var(--color-on-solid);\r\n --detail-border: var(--color-solid);\r\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\r\n --detail-radius: 6px;\r\n}\r\n\r\n:host([variant="faint"]) {\r\n --detail-bg: var(--color-bg-subtle);\r\n --detail-color: var(--color-text-subtle);\r\n --detail-border: var(--color-border-subtle);\r\n --detail-header-bg: var(--color-bg-subtle);\r\n}\r\n\r\n:host([variant="subtle"]) {\r\n --detail-bg: transparent;\r\n --detail-color: var(--color-text-main);\r\n --detail-border: transparent;\r\n --detail-header-bg: transparent;\r\n}\r\n\r\n:host([variant="filled"]) {\r\n --detail-bg: var(--color-solid);\r\n --detail-color: var(--color-on-solid);\r\n --detail-border: var(--color-solid);\r\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\r\n}\r\n\r\n:host([variant="outlined"]) {\r\n --detail-bg: transparent;\r\n --detail-color: var(--color-text-subtle);\r\n --detail-border: var(--color-border);\r\n --detail-header-bg: transparent;\r\n}\r\n\r\n:host([disabled]) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n.detail {\r\n border: 1px solid var(--detail-border);\r\n border-radius: var(--detail-radius);\r\n color: var(--detail-color);\r\n background: var(--detail-bg);\r\n overflow: hidden;\r\n}\r\n\r\n.summary {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n width: 100%;\r\n padding: 10px 14px;\r\n background: var(--detail-header-bg);\r\n color: inherit;\r\n font-size: inherit;\r\n font-family: inherit;\r\n font-weight: 500;\r\n border: none;\r\n cursor: pointer;\r\n text-align: left;\r\n outline-offset: -2px;\r\n user-select: none;\r\n}\r\n\r\n.summary:hover {\r\n filter: brightness(0.93);\r\n}\r\n\r\n.summary:focus-visible {\r\n outline: 2px solid var(--color-border);\r\n}\r\n\r\nslot[name="summary"] {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n min-width: 0;\r\n}\r\n\r\n.label {\r\n flex: 1;\r\n}\r\n\r\nslot[name="expand"],\r\nslot[name="collapse"] {\r\n display: inline-flex;\r\n align-items: center;\r\n flex-shrink: 0;\r\n}\r\n\r\nslot[name="collapse"] {\r\n display: none;\r\n}\r\n\r\n:host([open]) slot[name="expand"] {\r\n display: none;\r\n}\r\n\r\n:host([open]) slot[name="collapse"] {\r\n display: inline-flex;\r\n}\r\n\r\n.content-outer {\r\n display: grid;\r\n grid-template-rows: 0fr;\r\n transition: grid-template-rows 0.25s ease;\r\n}\r\n\r\n:host([open]) .content-outer {\r\n grid-template-rows: 1fr;\r\n}\r\n\r\n.content {\r\n overflow: hidden;\r\n padding: 0 14px;\r\n transition: padding 0.25s ease;\r\n}\r\n\r\n:host([open]) .content {\r\n padding: 12px 14px;\r\n}\r\n\r\n';
4060
+ const detailStyle = ':host {\n display: block;\n\n --detail-bg: var(--color-solid);\n --detail-color: var(--color-on-solid);\n --detail-border: var(--color-solid);\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\n --detail-radius: 6px;\n}\n\n:host([variant="faint"]) {\n --detail-bg: var(--color-bg-subtle);\n --detail-color: var(--color-text-subtle);\n --detail-border: var(--color-border-subtle);\n --detail-header-bg: var(--color-bg-subtle);\n}\n\n:host([variant="subtle"]) {\n --detail-bg: transparent;\n --detail-color: var(--color-text-main);\n --detail-border: transparent;\n --detail-header-bg: transparent;\n}\n\n:host([variant="filled"]) {\n --detail-bg: var(--color-solid);\n --detail-color: var(--color-on-solid);\n --detail-border: var(--color-solid);\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\n}\n\n:host([variant="outlined"]) {\n --detail-bg: transparent;\n --detail-color: var(--color-text-subtle);\n --detail-border: var(--color-border);\n --detail-header-bg: transparent;\n}\n\n:host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.detail {\n border: 1px solid var(--detail-border);\n border-radius: var(--detail-radius);\n color: var(--detail-color);\n background: var(--detail-bg);\n overflow: hidden;\n}\n\n.summary {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 10px 14px;\n background: var(--detail-header-bg);\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: left;\n outline-offset: -2px;\n user-select: none;\n}\n\n.summary:hover {\n filter: brightness(0.93);\n}\n\n.summary:focus-visible {\n outline: 2px solid var(--color-border);\n}\n\nslot[name="summary"] {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n\n.label {\n flex: 1;\n}\n\nslot[name="expand"],\nslot[name="collapse"] {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\nslot[name="collapse"] {\n display: none;\n}\n\n:host([open]) slot[name="expand"] {\n display: none;\n}\n\n:host([open]) slot[name="collapse"] {\n display: inline-flex;\n}\n\n.content-outer {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.25s ease;\n}\n\n:host([open]) .content-outer {\n grid-template-rows: 1fr;\n}\n\n.content {\n overflow: hidden;\n padding: 0 14px;\n transition: padding 0.25s ease;\n}\n\n:host([open]) .content {\n padding: 12px 14px;\n}\n\n';
4061
4061
  var __create = Object.create;
4062
4062
  var __defProp2 = Object.defineProperty;
4063
4063
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;