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