@nldd/design-system 0.8.41 → 0.8.42

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 (136) hide show
  1. package/README.md +18 -1
  2. package/dist/assets/styles/tokens.d.ts +25 -0
  3. package/dist/assets/styles/tokens.d.ts.map +1 -0
  4. package/dist/assets/styles/tokens.js +25 -0
  5. package/dist/assets/styles/tokens.js.map +1 -0
  6. package/dist/components/actions/button/button.d.ts +5 -0
  7. package/dist/components/actions/button/button.d.ts.map +1 -1
  8. package/dist/components/actions/button/button.js +7 -0
  9. package/dist/components/actions/button/button.js.map +1 -1
  10. package/dist/components/actions/icon-button/icon-button.d.ts +5 -0
  11. package/dist/components/actions/icon-button/icon-button.d.ts.map +1 -1
  12. package/dist/components/actions/icon-button/icon-button.js +7 -0
  13. package/dist/components/actions/icon-button/icon-button.js.map +1 -1
  14. package/dist/components/actions/link/link.d.ts +17 -6
  15. package/dist/components/actions/link/link.d.ts.map +1 -1
  16. package/dist/components/actions/link/link.js +15 -5
  17. package/dist/components/actions/link/link.js.map +1 -1
  18. package/dist/components/actions/link/link.styles.d.ts.map +1 -1
  19. package/dist/components/actions/link/link.styles.js +44 -6
  20. package/dist/components/actions/link/link.styles.js.map +1 -1
  21. package/dist/components/actions/link/link.template.d.ts.map +1 -1
  22. package/dist/components/actions/link/link.template.js +7 -9
  23. package/dist/components/actions/link/link.template.js.map +1 -1
  24. package/dist/components/components.js +1 -1
  25. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  26. package/dist/components/content/icon/icon-aliases.js +6 -1
  27. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  28. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  29. package/dist/components/content/icon/icon-registry.js +11 -7
  30. package/dist/components/content/icon/icon-registry.js.map +1 -1
  31. package/dist/components/forms/form-field/form-field.styles.js +1 -1
  32. package/dist/components/{index-DMYkp2tq.js → index-CJ3mdHHo.js} +1573 -403
  33. package/dist/components/inputs/combo-box/combo-box.d.ts +27 -3
  34. package/dist/components/inputs/combo-box/combo-box.d.ts.map +1 -1
  35. package/dist/components/inputs/combo-box/combo-box.js +78 -21
  36. package/dist/components/inputs/combo-box/combo-box.js.map +1 -1
  37. package/dist/components/inputs/combo-box/combo-box.template.js +2 -2
  38. package/dist/components/inputs/combo-box/combo-box.template.js.map +1 -1
  39. package/dist/components/inputs/dropdown/dropdown.template.js +1 -1
  40. package/dist/components/inputs/number-field/number-field.d.ts +5 -0
  41. package/dist/components/inputs/number-field/number-field.d.ts.map +1 -1
  42. package/dist/components/inputs/number-field/number-field.js +7 -0
  43. package/dist/components/inputs/number-field/number-field.js.map +1 -1
  44. package/dist/components/inputs/search-field/search-field.d.ts +5 -0
  45. package/dist/components/inputs/search-field/search-field.d.ts.map +1 -1
  46. package/dist/components/inputs/search-field/search-field.js +7 -0
  47. package/dist/components/inputs/search-field/search-field.js.map +1 -1
  48. package/dist/components/inputs/switch/switch.d.ts +5 -0
  49. package/dist/components/inputs/switch/switch.d.ts.map +1 -1
  50. package/dist/components/inputs/switch/switch.js +7 -0
  51. package/dist/components/inputs/switch/switch.js.map +1 -1
  52. package/dist/components/inputs/switch-field/switch-field.d.ts +6 -0
  53. package/dist/components/inputs/switch-field/switch-field.d.ts.map +1 -1
  54. package/dist/components/inputs/switch-field/switch-field.js +8 -0
  55. package/dist/components/inputs/switch-field/switch-field.js.map +1 -1
  56. package/dist/components/inputs/text-field/text-field.d.ts +5 -1
  57. package/dist/components/inputs/text-field/text-field.d.ts.map +1 -1
  58. package/dist/components/inputs/text-field/text-field.js +7 -3
  59. package/dist/components/inputs/text-field/text-field.js.map +1 -1
  60. package/dist/components/layout/spacer/spacer.d.ts +28 -3
  61. package/dist/components/layout/spacer/spacer.d.ts.map +1 -1
  62. package/dist/components/layout/spacer/spacer.js +33 -2
  63. package/dist/components/layout/spacer/spacer.js.map +1 -1
  64. package/dist/components/layout/spacer/spacer.styles.d.ts.map +1 -1
  65. package/dist/components/layout/spacer/spacer.styles.js +157 -110
  66. package/dist/components/layout/spacer/spacer.styles.js.map +1 -1
  67. package/dist/components/lists-and-menus/cells/icon-cell/icon-cell.d.ts +2 -2
  68. package/dist/components/lists-and-menus/cells/icon-cell/icon-cell.d.ts.map +1 -1
  69. package/dist/components/lists-and-menus/cells/icon-cell/icon-cell.js +1 -1
  70. package/dist/components/lists-and-menus/cells/icon-cell/icon-cell.styles.d.ts.map +1 -1
  71. package/dist/components/lists-and-menus/cells/icon-cell/icon-cell.styles.js +50 -14
  72. package/dist/components/lists-and-menus/cells/icon-cell/icon-cell.styles.js.map +1 -1
  73. package/dist/components/lists-and-menus/cells/text-cell/text-cell.d.ts +28 -5
  74. package/dist/components/lists-and-menus/cells/text-cell/text-cell.d.ts.map +1 -1
  75. package/dist/components/lists-and-menus/cells/text-cell/text-cell.js +58 -5
  76. package/dist/components/lists-and-menus/cells/text-cell/text-cell.js.map +1 -1
  77. package/dist/components/lists-and-menus/cells/text-cell/text-cell.styles.d.ts.map +1 -1
  78. package/dist/components/lists-and-menus/cells/text-cell/text-cell.styles.js +29 -5
  79. package/dist/components/lists-and-menus/cells/text-cell/text-cell.styles.js.map +1 -1
  80. package/dist/components/lists-and-menus/cells/text-cell/text-cell.template.d.ts.map +1 -1
  81. package/dist/components/lists-and-menus/cells/text-cell/text-cell.template.js +33 -3
  82. package/dist/components/lists-and-menus/cells/text-cell/text-cell.template.js.map +1 -1
  83. package/dist/components/lists-and-menus/cells/title-cell/title-cell.d.ts +28 -5
  84. package/dist/components/lists-and-menus/cells/title-cell/title-cell.d.ts.map +1 -1
  85. package/dist/components/lists-and-menus/cells/title-cell/title-cell.js +58 -5
  86. package/dist/components/lists-and-menus/cells/title-cell/title-cell.js.map +1 -1
  87. package/dist/components/lists-and-menus/cells/title-cell/title-cell.styles.d.ts.map +1 -1
  88. package/dist/components/lists-and-menus/cells/title-cell/title-cell.styles.js +48 -5
  89. package/dist/components/lists-and-menus/cells/title-cell/title-cell.styles.js.map +1 -1
  90. package/dist/components/lists-and-menus/cells/title-cell/title-cell.template.d.ts.map +1 -1
  91. package/dist/components/lists-and-menus/cells/title-cell/title-cell.template.js +36 -7
  92. package/dist/components/lists-and-menus/cells/title-cell/title-cell.template.js.map +1 -1
  93. package/dist/components/lists-and-menus/list-item/list-item.d.ts +5 -0
  94. package/dist/components/lists-and-menus/list-item/list-item.d.ts.map +1 -1
  95. package/dist/components/lists-and-menus/list-item/list-item.js +7 -0
  96. package/dist/components/lists-and-menus/list-item/list-item.js.map +1 -1
  97. package/dist/components/lists-and-menus/list-item/list-item.styles.js +1 -1
  98. package/dist/components/lists-and-menus/menu/menu.d.ts +254 -0
  99. package/dist/components/lists-and-menus/menu/menu.d.ts.map +1 -1
  100. package/dist/components/lists-and-menus/menu/menu.i18n.d.ts +1 -0
  101. package/dist/components/lists-and-menus/menu/menu.i18n.d.ts.map +1 -1
  102. package/dist/components/lists-and-menus/menu/menu.i18n.js +1 -0
  103. package/dist/components/lists-and-menus/menu/menu.i18n.js.map +1 -1
  104. package/dist/components/lists-and-menus/menu/menu.js +906 -15
  105. package/dist/components/lists-and-menus/menu/menu.js.map +1 -1
  106. package/dist/components/lists-and-menus/menu/menu.styles.d.ts +1 -0
  107. package/dist/components/lists-and-menus/menu/menu.styles.d.ts.map +1 -1
  108. package/dist/components/lists-and-menus/menu/menu.styles.js +141 -2
  109. package/dist/components/lists-and-menus/menu/menu.styles.js.map +1 -1
  110. package/dist/components/lists-and-menus/menu/menu.template.d.ts +2 -1
  111. package/dist/components/lists-and-menus/menu/menu.template.d.ts.map +1 -1
  112. package/dist/components/lists-and-menus/menu/menu.template.js +60 -0
  113. package/dist/components/lists-and-menus/menu/menu.template.js.map +1 -1
  114. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +1 -1
  115. package/dist/components/navigation/pagination/pagination.template.js +1 -1
  116. package/dist/components/{prism-typescript-9LDqHHRS.js → prism-typescript-Cdpexfvg.js} +1 -1
  117. package/dist/components/status-and-feedback/badge/badge.styles.d.ts.map +1 -1
  118. package/dist/components/status-and-feedback/badge/badge.styles.js +1 -0
  119. package/dist/components/status-and-feedback/badge/badge.styles.js.map +1 -1
  120. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts +7 -4
  121. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts.map +1 -1
  122. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js +10 -3
  123. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js.map +1 -1
  124. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.d.ts.map +1 -1
  125. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js +12 -2
  126. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js.map +1 -1
  127. package/dist/css/settings.css +30 -17
  128. package/dist/fonts/JetBrainsMono-Italic[wght].woff2 +0 -0
  129. package/dist/fonts/JetBrainsMono[wght].woff2 +0 -0
  130. package/dist/fonts/RijksSansWeb-Italic.woff2 +0 -0
  131. package/dist/fonts/RijksSansWeb-Regular.woff2 +0 -0
  132. package/package.json +7 -3
  133. package/dist/fonts/IBMPlexMono-Bold.woff2 +0 -0
  134. package/dist/fonts/IBMPlexMono-Regular.woff2 +0 -0
  135. package/dist/fonts/RijksSansVF-Italic.ttf +0 -0
  136. package/dist/fonts/RijksSansVF-Regular.ttf +0 -0
@@ -1,4 +1,4 @@
1
- var _a;
1
+ var _a, _b, _c;
2
2
  import { css, nothing, html, LitElement, unsafeCSS, svg } from "lit";
3
3
  import { property, state, customElement, query } from "lit/decorators.js";
4
4
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
@@ -433,7 +433,6 @@ const aliases = {
433
433
  // arrow-u-turn-forward
434
434
  "redo": "arrow-u-turn-forward",
435
435
  // brackets-ellipsis
436
- "code": "brackets-ellipsis",
437
436
  "embed": "brackets-ellipsis",
438
437
  // business-suitcase
439
438
  "work": "business-suitcase",
@@ -462,6 +461,8 @@ const aliases = {
462
461
  "checked-small": "check-mark-small",
463
462
  // chevron-left
464
463
  "back": "chevron-left",
464
+ // chevron-left-forward-slash-chevron-right
465
+ "code": "chevron-left-forward-slash-chevron-right",
465
466
  // chevron-right
466
467
  "forward": "chevron-right",
467
468
  // circle-dashed
@@ -562,6 +563,8 @@ const aliases = {
562
563
  "attach": "paperclip",
563
564
  // pencil
564
565
  "write": "pencil",
566
+ // photo
567
+ "image": "photo",
565
568
  // pencil-on-square
566
569
  "edit": "pencil-on-square",
567
570
  // person
@@ -615,6 +618,8 @@ const aliases = {
615
618
  // terminal
616
619
  "cli": "terminal",
617
620
  "console": "terminal",
621
+ // text-quote
622
+ "blockquote": "text-quote",
618
623
  // timer
619
624
  "countdown": "timer",
620
625
  // trash
@@ -631,7 +636,7 @@ const iconRegistry = /* @__PURE__ */ new Map([
631
636
  ["arrow-u-turn-forward", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M14.6 5.4 18.18 9H7a5 5 0 0 0 0 10h2v-2H7a3 3 0 1 1 0-6h11.18l-3.58 3.6L16 16l6-6-6-6z"/>\n</svg>'],
632
637
  ["arrow-up", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m4 12 8-8 8 8-1.42 1.41L13 7.828V21h-2V7.828L5.42 13.41z"/>\n</svg>'],
633
638
  ["arrow-up-arrow-down", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m7 3.586 5.707 5.707-1.414 1.414L8 7.414V20H6V7.414l-3.293 3.293-1.414-1.414zM18 4v12.586l3.293-3.293 1.414 1.414L17 20.414l-5.707-5.707 1.414-1.414L16 16.586V4z"/>\n</svg>'],
634
- ["bold", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M5.5 22V2h6.067q3.628 0 5.335 1.311 1.708 1.311 1.708 3.506 0 1.86-.854 3.018a4.35 4.35 0 0 1-2.165 1.586v.091q1.86.366 2.836 1.555 1.006 1.159 1.006 2.896 0 2.867-1.92 4.452Q15.59 21.999 11.81 22zm3.902-3.14h2.257q1.829 0 2.743-.732.915-.762.915-2.134 0-1.311-.915-1.982-.884-.7-3.14-.701h-1.86zm0-8.537h1.769q1.677 0 2.5-.64.823-.67.823-2.043 0-1.25-.762-1.86-.732-.64-2.47-.64h-1.86z"/>\n</svg>'],
639
+ ["bold", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 2a6 6 0 0 1 4.9 9.45A5.98 5.98 0 0 1 13 22H5V2zM9 18h4a2 2 0 1 0 0-4H9zm0-8h3a2 2 0 1 0 0-4H9z"/>\n</svg>'],
635
640
  ["brackets-ellipsis", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M7 6H4v12h3v2H2V4h5zM22 20h-5v-2h3V6h-3V4h5z"/>\n <path fill="currentColor" d="M7.5 13a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3M12 13a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3M16.5 13a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3"/>\n</svg>'],
636
641
  ["bullet-list", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M4.5 16.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3M22 19H9v-2h13zM4.5 10.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3M22 13H9v-2h13zM4.5 4.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3M22 7H9V5h13z"/>\n</svg>'],
637
642
  ["business-suitcase", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M14 2c1.66 0 3 1.34 3 3v1h2a3 3 0 0 1 3 3v9c0 1.66-1.34 3-3 3H5c-1.66 0-3-1.34-3-3V9a3 3 0 0 1 3-3h2V5a3 3 0 0 1 3-3zM5 8a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1zm5-4a1 1 0 0 0-1 1v1h6V5a1 1 0 0 0-1-1z"/>\n</svg>'],
@@ -665,13 +670,15 @@ const iconRegistry = /* @__PURE__ */ new Map([
665
670
  ["chevron-down-extra-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 13.172 7.4 8.6 6 10l6 6 6-6-1.4-1.4z"/>\n</svg>'],
666
671
  ["chevron-down-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 14.172 5.4 7.6 4 9l8 8 8-8-1.4-1.4z"/>\n</svg>'],
667
672
  ["chevron-left", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m8.828 11.7 8.572 8.6-1.4 1.4-10-10 10-10 1.4 1.4z"/>\n</svg>'],
673
+ ["chevron-left-chevron-right", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M18.17 12 13.6 7.4 15 6l6 6-6 6-1.4-1.4zM5.83 12l4.57-4.6L9 6l-6 6 6 6 1.4-1.4z"/>\n</svg>'],
668
674
  ["chevron-left-extra-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m10.828 12 4.572 4.6L14 18l-6-6 6-6 1.4 1.4z"/>\n</svg>'],
675
+ ["chevron-left-forward-slash-chevron-right", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M15.04 4.53 10.9 20l-1.94-.52L13.1 4zM8.4 7.4 3.83 12l4.57 4.6L7 18l-6-6 6-6zM23 12l-6 6-1.4-1.4 4.57-4.6-4.57-4.6L17 6z"/>\n</svg>'],
669
676
  ["chevron-left-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m9.828 12 6.572 6.6L15 20l-8-8 8-8 1.4 1.4z"/>\n</svg>'],
670
677
  ["chevron-right", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M15.172 11.7 6.6 3.1 8 1.7l10 10-10 10-1.4-1.4z"/>\n</svg>'],
671
678
  ["chevron-right-extra-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M13.172 12 8.6 7.4 10 6l6 6-6 6-1.4-1.4z"/>\n</svg>'],
672
679
  ["chevron-right-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M14.172 12 7.6 5.4 9 4l8 8-8 8-1.4-1.4z"/>\n</svg>'],
673
680
  ["chevron-up", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 8.828 3.4 17.4 2 16 12 6l10 10-1.4 1.4z"/>\n</svg>'],
674
- ["chevron-up-down", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 5.828 7.4 10.4 6 9l6-6 6 6-1.4 1.4zm0 12.344L7.4 13.6 6 15l6 6 6-6-1.4-1.4z"/>\n</svg>'],
681
+ ["chevron-up-chevron-down", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 5.828 7.4 10.4 6 9l6-6 6 6-1.4 1.4zm0 12.344L7.4 13.6 6 15l6 6 6-6-1.4-1.4z"/>\n</svg>'],
675
682
  ["chevron-up-extra-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 10.828 7.4 15.4 6 14l6-6 6 6-1.4 1.4z"/>\n</svg>'],
676
683
  ["chevron-up-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 9.828 5.4 16.4 4 15l8-8 8 8-1.4 1.4z"/>\n</svg>'],
677
684
  ["circle-dashed", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path\n fill="currentColor"\n d="M14.59 21.66a10.05 10.05 0 0 1-5.18 0l.52-1.93a8.05 8.05 0 0 0 4.14 0zM5.07 16A8.05 8.05 0 0 0 8 18.93l-1 1.73A10.05 10.05 0 0 1 3.34 17zm15.59 1A10.04 10.04 0 0 1 17 20.66l-1-1.73A8.05 8.05 0 0 0 18.93 16zM4.27 9.93A8 8 0 0 0 4 12a8 8 0 0 0 .27 2.07l-1.93.52a10 10 0 0 1 0-5.18zm17.39-.52a10 10 0 0 1 0 5.18l-.96-.26-.97-.26a8.06 8.06 0 0 0 0-4.14zM8 5.07A8.05 8.05 0 0 0 5.07 8L3.34 7A10.05 10.05 0 0 1 7 3.34zm9-1.73A10.05 10.05 0 0 1 20.66 7l-1.73 1A8.05 8.05 0 0 0 16 5.07zM12 2c.9 0 1.76.12 2.59.34l-.26.96-.26.97A8 8 0 0 0 12 4a8 8 0 0 0-2.07.27L9.4 2.34C10.24 2.12 11.11 2 12 2"\n />\n</svg>'],
@@ -691,7 +698,7 @@ const iconRegistry = /* @__PURE__ */ new Map([
691
698
  ["dismiss-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m17.3 5.3 1.4 1.4-5.29 5.3 5.3 5.3-1.42 1.4L12 13.42l-5.3 5.3-1.4-1.42L10.58 12l-5.3-5.3 1.42-1.4L12 10.58z"/>\n</svg>'],
692
699
  ["ellipsis", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M5 10a2 2 0 1 1 0 4 2 2 0 0 1 0-4m7 0a2 2 0 1 1 0 4 2 2 0 0 1 0-4m7 0a2 2 0 1 1 0 4 2 2 0 0 1 0-4"/>\n</svg>'],
693
700
  ["envelope", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19 4a3 3 0 0 1 3 3v10c0 1.66-1.34 3-3 3H5c-1.66 0-3-1.34-3-3V7a3 3 0 0 1 3-3zm-5.5 9.562a3 3 0 0 1-3 0L4 9.81V17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V9.81zM5 6a1 1 0 0 0-1 1v.5l7.5 4.33a1 1 0 0 0 1 0L20 7.5V7a1 1 0 0 0-1-1z"/>\n</svg>'],
694
- ["euro", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M4.5 10.939V9.055h11.39v1.884zm11.39 2.51v1.884H4.5V13.45zM15.053 22q-2.392 0-4.215-1.076-1.824-1.077-2.87-3.199-1.017-2.122-1.017-5.292 0-2.72.688-4.693.717-1.973 1.913-3.229 1.197-1.286 2.72-1.883A8.5 8.5 0 0 1 15.503 2q.956 0 1.704.09.747.09 1.435.299V4.48q-1.017-.24-1.645-.299-.627-.09-1.614-.09-1.196 0-2.272.479-1.047.478-1.883 1.465-.838.987-1.316 2.511-.478 1.495-.478 3.528 0 2.66.747 4.394.777 1.734 2.123 2.601 1.345.837 3.079.837.867 0 1.674-.09t1.794-.328v2.033q-1.017.24-1.884.358-.837.12-1.913.12"/>\n</svg>'],
701
+ ["euro-sign", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M10.25 2.76a7.3 7.3 0 0 1 4.9-.57 8.2 8.2 0 0 1 4.36 2.74L18.1 6.59a6.3 6.3 0 0 0-3.32-2.09 5.6 5.6 0 0 0-3.76.44l-.22.11a7 7 0 0 0-2.7 2.7L7.98 8A8 8 0 0 0 7.52 9H14v2H7.06a9 9 0 0 0 0 2H14v2H7.52q.24.65.58 1.25A7 7 0 0 0 11 19.06a5.6 5.6 0 0 0 3.52.49l.24-.05a6.3 6.3 0 0 0 3.32-2.1l1.42 1.67-.23.26a8 8 0 0 1-4.12 2.48 7.3 7.3 0 0 1-4.62-.44l-.3-.13a9 9 0 0 1-3.63-3.38l-.18-.3Q5.75 16.36 5.4 15H3v-2h2.04a12 12 0 0 1 0-2H3V9h2.4q.31-1.18.86-2.24l.17-.32a9 9 0 0 1 3.82-3.68"/>\n</svg>'],
695
702
  ["exclamation-circle", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 15a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m1-1.5h-2v-7h2z"/>\n <path fill="currentColor" d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2m0 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16"/>\n</svg>'],
696
703
  ["exclamation-triangle", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 14a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m1-1.5h-2v-5h2z"/>\n <path fill="currentColor" d="M11.99 1.968a3 3 0 0 1 2.62 1.538l7.095 12.242q.035.06.062.126a3 3 0 0 1-2.76 4.125H5a3.02 3.02 0 0 1-2.538-1.387 3 3 0 0 1-.248-2.739 1 1 0 0 1 .06-.125L9.37 3.506a3 3 0 0 1 2.62-1.538m0 2c-.373 0-.705.21-.884.533L4.046 16.68c-.097.286-.06.602.104.86a.99.99 0 0 0 .85.459h13.996a1 1 0 0 0 .938-1.32L12.875 4.502a1.02 1.02 0 0 0-.885-.533"/>\n</svg>'],
697
704
  ["exclamation-triangle-filled", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M11.99 1.968a3 3 0 0 1 2.62 1.538l7.095 12.242q.035.06.062.126a3 3 0 0 1-2.76 4.125H5a3.02 3.02 0 0 1-2.538-1.387 3 3 0 0 1-.248-2.739 1 1 0 0 1 .06-.125L9.37 3.506a3 3 0 0 1 2.62-1.538M12 14a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5m-1-7v5h2V7z"/>\n</svg>'],
@@ -722,8 +729,8 @@ const iconRegistry = /* @__PURE__ */ new Map([
722
729
  ["minus-extra-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M6 11h12v2H6z"/>\n</svg>'],
723
730
  ["minus-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M4 11h16v2H4z"/>\n</svg>'],
724
731
  ["moon", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M10.47 2.12a8.99 8.99 0 0 0 11.41 11.4 10 10 0 1 1-11.4-11.4M8 5.07A8 8 0 1 0 18.93 16 11 11 0 0 1 8 5.07"/>\n</svg>'],
725
- ["numbered-list", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M5.223 14.015c1.003 0 1.634.316 1.944.864.284.491.308 1.154.117 1.684-.153.412-.473.764-1.071 1.142-.481.305-.98.584-1.34 1.035h2.672V20H3.513l-.135-1.053a3.2 3.2 0 0 1 .441-.882q.298-.405.873-.81c.287-.2.614-.382.846-.648.239-.29.371-.824.036-1.098q-.198-.171-.657-.171c-.524 0-.874.034-1.332.162v-1.287a6.8 6.8 0 0 1 1.638-.198M22 19H10v-2h12zm0-6H10v-2h12zM6.483 10H4.935V5.323c-.474 0-.96.041-1.386.126V4.28C4.514 4.021 5.493 4 6.483 4zM22 7H10V5h12z"/>\n</svg>'],
726
- ["paper-plane", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19.44 2.57c.98-.34 1.92.6 1.59 1.59l-5.66 16.59a1.25 1.25 0 0 1-2.28.2l-3.05-6.77a1.3 1.3 0 0 0-.63-.63l-6.67-3a1.25 1.25 0 0 1 .1-2.32zm-7.65 10.65 2.3 5.08 3.82-11.2zM5.3 9.5c1.69.75 3.48 1.48 5.09 2.3L16.5 5.7z"/>\n</svg>'],
732
+ ["numbered-list", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M5.43 14a2 2 0 0 1 1.3 3.4l-1.1 1.1H7.5V20h-4v-1.5l2.16-2.16a.5.5 0 0 0 .14-.4.5.5 0 0 0-.47-.44.5.5 0 0 0-.51.37l-1.45-.39A2 2 0 0 1 5.43 14M22 19H10v-2h12zM22 13H10v-2h12zM6.5 10H5V5.5H3.5V4h3zM22 7H10V5h12z"/>\n</svg>'],
733
+ ["paper-plane", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19.7 2.74c.96-.31 1.87.6 1.56 1.57l-5.73 17.94c-.4.98-1.8 1.03-2.27.07L10.2 14.5a1.3 1.3 0 0 0-.7-.7l-7.72-3.03c-1.1-.42-1.04-2 .08-2.35zm-7.77 10.75q.08.15.13.29l2.25 5.74 3.94-12.36zm-7.45-3.8 5.74 2.25.3.13 6.32-6.32z"/>\n</svg>'],
727
734
  ["paperclip", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M8.04 15.21a.75.75 0 1 0 1.06 1.06l8-8a2.5 2.5 0 0 0-3.53-3.54l-8 8a4.25 4.25 0 1 0 6 6.02l8.01-8 1.42 1.4-8 8.01a6.2 6.2 0 0 1-8.85 0 6.2 6.2 0 0 1 0-8.84l8-8a4.5 4.5 0 1 1 6.37 6.36l-8 8a2.75 2.75 0 1 1-3.9-3.88l8.01-8 1.42 1.4z"/>\n</svg>'],
728
735
  ["pencil", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M21.418 4a2 2 0 0 1 0 2.828L7.246 21H3.003v-4.243L17.175 2.586a2 2 0 0 1 2.828 0zM15.76 6.828 5.003 17.586V19h1.414L17.175 8.243zm1.414-1.414 1.414 1.414 1.414-1.414L18.59 4z"/>\n</svg>'],
729
736
  ["pencil-on-square", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M10.932 6H5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5.927l2-2V19c0 1.66-1.34 3-3 3H5c-1.66 0-3-1.34-3-3V7a3 3 0 0 1 3-3h7.93z"/>\n <path fill="currentColor" d="M17.175 2.586a2 2 0 0 1 2.829 0L21.418 4a2 2 0 0 1 0 2.828L11.246 17H7.003v-4.242zm-8.172 11V15h1.414l6.758-6.758-1.414-1.414zm8.172-8.172 1.414 1.414 1.415-1.414L18.589 4z"/>\n</svg>'],
@@ -731,11 +738,12 @@ const iconRegistry = /* @__PURE__ */ new Map([
731
738
  ["person-2", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M10 14c2.2 0 4 1.8 4 4v3h-2v-3a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3H2v-3c0-2.2 1.8-4 4-4zM22 17v3h-2v-3a2 2 0 0 0-2-2h-3.93a5 5 0 0 0-1.92-1.55A4 4 0 0 1 14 13h4c2.2 0 4 1.8 4 4"/>\n <path fill="currentColor" d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8m0 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4M16 3a4 4 0 1 1-3.2 6.4 5 5 0 0 0-.5-3.94A4 4 0 0 1 16 3m0 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4"/>\n</svg>'],
732
739
  ["person-badge-gear", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M18.75 13q.23.02.25.25v.68q.01.19.19.25.35.11.67.28c.1.05.23.04.3-.04l.5-.49c.09-.1.25-.1.34 0L22.07 15c.1.1.1.25 0 .35l-.49.48q-.12.14-.04.3.16.33.28.68.06.18.25.19h.68q.23.02.25.25v1.5q-.02.23-.25.25h-.68a.3.3 0 0 0-.25.19q-.11.35-.28.67c-.05.1-.04.23.04.3l.49.5c.1.09.1.25 0 .34L21 22.07c-.1.1-.25.1-.35 0l-.48-.49a.3.3 0 0 0-.3-.04q-.33.16-.68.28a.3.3 0 0 0-.19.25v.68q-.02.23-.25.25h-1.5a.25.25 0 0 1-.25-.25v-.68a.3.3 0 0 0-.19-.25 4 4 0 0 1-.67-.28.3.3 0 0 0-.3.04l-.5.49c-.09.1-.25.1-.34 0L13.93 21a.25.25 0 0 1 0-.35l.49-.48q.13-.13.04-.3-.16-.33-.28-.68a.3.3 0 0 0-.25-.19h-.68a.25.25 0 0 1-.25-.25v-1.5q.02-.23.25-.25h.68q.2-.01.25-.19.11-.35.28-.67a.3.3 0 0 0-.04-.3l-.49-.5a.25.25 0 0 1 0-.34L15 13.93c.1-.1.25-.1.35 0l.48.49q.14.13.3.04.33-.16.68-.28.18-.06.19-.25v-.68q.02-.23.25-.25zM18 16.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3"/>\n <path fill="currentColor" d="M13.53 14a6 6 0 0 0-1.19 2H9a3 3 0 0 0-3 3v3H4v-3a5 5 0 0 1 5-5z"/>\n <path fill="currentColor" d="M12 2a5 5 0 1 1 0 10 5 5 0 0 1 0-10m0 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6"/>\n</svg>'],
733
740
  ["person-circle", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 6a3.25 3.25 0 1 1 0 6.5A3.25 3.25 0 0 1 12 6"/>\n <path fill="currentColor" d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2m0 2a8 8 0 0 0-5.5 13.807V17a3 3 0 0 1 3-3h5a3 3 0 0 1 3 3v.807A8 8 0 0 0 12 4"/>\n</svg>'],
741
+ ["photo", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M9 8a2 2 0 1 1 0 4 2 2 0 0 1 0-4"/>\n <path fill="currentColor" d="M19 4a3 3 0 0 1 3 3v10c0 1.666-1.33 3-3 3H5c-1.66 0-3-1.334-3-3V7a3 3 0 0 1 3-3zM5 6a1 1 0 0 0-1 1v9l1.94-1.94a1.5 1.5 0 0 1 2.12 0l1.956 1.956 4.617-4.472a1.5 1.5 0 0 1 2.122.034L20 14.932V7a1 1 0 0 0-1-1z"/>\n</svg>'],
734
742
  ["plus", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M13 11h9v2h-9v9h-2v-9H2v-2h9V2h2z"/>\n</svg>'],
735
743
  ["plus-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M13 11h7v2h-7v7h-2v-7H4v-2h7V4h2z"/>\n</svg>'],
736
744
  ["puzzle-piece", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M10.5 1.5A3.5 3.5 0 0 1 14 5v.75c0 .14.11.25.25.25h3.25a1 1 0 0 1 1 1v2.75q.02.23.25.25H19a3.5 3.5 0 1 1 0 7h-.25a.25.25 0 0 0-.25.25V21a1 1 0 0 1-1 1h-4.75a.25.25 0 0 1-.25-.25V20.5a1.5 1.5 0 0 0-3 0v1.25q-.02.23-.25.25H3.5a1 1 0 0 1-1-1v-5.75c0-.14.11-.25.25-.25H4a1.5 1.5 0 0 0 0-3H2.75a.25.25 0 0 1-.25-.25V7a1 1 0 0 1 1-1h3.25c.14 0 .25-.11.25-.25V5a3.5 3.5 0 0 1 3.5-3.5m0 2C9.67 3.5 9 4.17 9 5v.75C9 6.99 8 8 6.75 8H4.5v2.04a3.5 3.5 0 0 1 0 6.92V20h3.04a3.5 3.5 0 0 1 6.92 0h2.04v-2.75c0-1.24 1-2.25 2.25-2.25H19a1.5 1.5 0 0 0 0-3h-.25c-1.24 0-2.25-1-2.25-2.25V8h-2.25C13.01 8 12 7 12 5.75V5c0-.83-.67-1.5-1.5-1.5"/>\n</svg>'],
737
745
  ["puzzle-piece-filled", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M11 2a2.5 2.5 0 0 1 2.5 2.5v.75c0 .14.11.25.25.25H18a1 1 0 0 1 1 1v3.75q.02.23.25.25H20a2.5 2.5 0 0 1 0 5h-.75a.25.25 0 0 0-.25.25v4.75a1 1 0 0 1-1 1h-4.25a.25.25 0 0 1-.25-.25V20a2.5 2.5 0 0 0-5 0v1.25q-.02.23-.25.25H4a1 1 0 0 1-1-1v-4.25c0-.14.11-.25.25-.25H4.5a2.5 2.5 0 0 0 0-5H3.25a.25.25 0 0 1-.25-.25V6.5a1 1 0 0 1 1-1h4.25c.14 0 .25-.11.25-.25V4.5A2.5 2.5 0 0 1 11 2"/>\n</svg>'],
738
- ["question-mark-circle", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M11.695 14.47q.564 0 .862.327.311.312.312.906 0 .55-.312.876-.297.327-.862.327-.58 0-.89-.311-.297-.328-.297-.892t.297-.89q.311-.342.89-.342M12.245 7q1.337 0 2.094.624.758.608.758 1.634 0 .907-.402 1.485-.386.564-1.202.95l-.728.372q-.327.162-.475.37a.74.74 0 0 0-.134.431q0 .208.06.43.06.21.163.402l-1.485.075a1.5 1.5 0 0 1-.342-.49 1.6 1.6 0 0 1-.134-.64q0-.519.253-.906.252-.4.876-.742l.787-.445q.46-.252.639-.49a.9.9 0 0 0 .178-.565.66.66 0 0 0-.327-.594q-.313-.222-1.054-.222-.52 0-1.04.118-.52.104-1.04.297V7.476a6 6 0 0 1 1.218-.357Q11.518 7 12.245 7"/>\n <path fill="currentColor" d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2m0 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16"/>\n</svg>'],
746
+ ["question-mark-circle", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 15.5a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m-.34-9.48a3.5 3.5 0 0 1 2.82 5.95l-1.19 1.2a1 1 0 0 0-.3.7v.65H11v-.64a3 3 0 0 1 .88-2.13l1.19-1.18a1.5 1.5 0 1 0-2.58-1.07H8.5a3.5 3.5 0 0 1 3.16-3.48"/>\n <path fill="currentColor" d="M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20m0 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16"/>\n</svg>'],
739
747
  ["rectangle-stack", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19 8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3zM5 10a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1z"/>\n <path fill="currentColor" d="M18 5a2 2 0 0 1 2 2H4c0-1.1.9-2 2-2zM16 2a2 2 0 0 1 2 2H6c0-1.1.9-2 2-2z"/>\n</svg>'],
740
748
  ["shield-check-mark", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m16.41 9.41-5.2 5.21L8 11.42 9.41 10l1.8 1.8L15 8z"/>\n <path fill="currentColor" d="M20.39 4.83A14 14 0 0 1 12 22 14 14 0 0 1 3.62 4.8L12 2zM5.28 6.35A12 12 0 0 0 12 19.83a12 12 0 0 0 6.73-13.45L12 4.1z"/>\n</svg>'],
741
749
  ["ship-wheel", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 2a1 1 0 0 1 1 1v1.063a7.96 7.96 0 0 1 3.903 1.619l.754-.753a1 1 0 0 1 1.414 1.414l-.754.753A7.96 7.96 0 0 1 19.936 11H21a1 1 0 1 1 0 2h-1.064a7.95 7.95 0 0 1-1.619 3.903l.754.754a1 1 0 0 1-1.414 1.414l-.754-.754A7.95 7.95 0 0 1 13 19.936V21a1 1 0 1 1-2 0v-1.064a7.96 7.96 0 0 1-3.904-1.619l-.753.754a1 1 0 0 1-1.414-1.414l.753-.754A7.96 7.96 0 0 1 4.064 13H3a1 1 0 1 1 0-2h1.064a7.96 7.96 0 0 1 1.618-3.904l-.753-.753a1 1 0 0 1 1.414-1.414l.753.753A7.96 7.96 0 0 1 11 4.063V3a1 1 0 0 1 1-1M8.524 16.889A6 6 0 0 0 11 17.915v-3.09a3 3 0 0 1-.291-.12zm4.766-2.185q-.14.068-.29.121v3.09a6 6 0 0 0 2.475-1.026zM6.085 13c.153.911.51 1.752 1.025 2.475l2.185-2.185a3 3 0 0 1-.121-.29zm8.741 0q-.054.15-.122.29l2.185 2.185A6 6 0 0 0 17.915 13zM12 10.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M7.11 8.524A6 6 0 0 0 6.085 11h3.089q.053-.15.12-.291zm7.594 2.185q.069.142.122.291h3.089a6 6 0 0 0-1.026-2.476zM11 6.084A6 6 0 0 0 8.524 7.11l2.185 2.185A3 3 0 0 1 11 9.174zm2 3.09q.15.053.29.12l2.185-2.184A6 6 0 0 0 13 6.084z"/>\n</svg>'],
@@ -748,9 +756,10 @@ const iconRegistry = /* @__PURE__ */ new Map([
748
756
  ["sun", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M13 22h-2v-3.07c.65.09 1.35.09 2 0zM6.4 16.2q.6.8 1.4 1.4l-2.16 2.18-1.42-1.42zM19.78 18.36l-1.42 1.42-2.17-2.17q.8-.6 1.42-1.42z"/>\n <path fill="currentColor" d="M12 7a5 5 0 1 1 0 10 5 5 0 0 1 0-10m0 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6"/>\n <path fill="currentColor" d="M5.07 11c-.1.65-.1 1.35 0 2H2v-2zM22 13h-3.07c.1-.65.1-1.35 0-2H22zM7.8 6.4Q7 7 6.4 7.8L4.21 5.65l1.42-1.42zM19.78 5.64 17.6 7.8a7 7 0 0 0-1.42-1.42l2.17-2.17zM13 5.07c-.65-.1-1.35-.1-2 0V2h2z"/>\n</svg>'],
749
757
  ["table-badge-arrow-down", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M18 13a5 5 0 1 1 0 10 5 5 0 0 1 0-10m-.75 5.38-1.49-1.49-1.06 1.06 3.3 3.3 3.3-3.3-1.06-1.06-1.49 1.49V15h-1.5z"/>\n <path fill="currentColor" d="M18 4c1.57 0 3 1.34 3 3v5.8q-.94-.53-2-.72v-1.33h-6v2.5h1.34a6.05 6.05 0 0 0-2 6.75H6a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3zM5 17a1 1 0 0 0 1 1h5v-2.75H5zm0-3.75h6v-2.5H5zM6 6a1 1 0 0 0-1 1v1.75h6V6zm7 2.75h6V7a1 1 0 0 0-1-1h-5z"/>\n</svg>'],
750
758
  ["terminal", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m11.4 12-4 4L6 14.6 8.57 12 6 9.4 7.4 8zM18 16h-6v-2h6z"/>\n <path fill="currentColor" d="M19 4a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3zM5 6a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1z"/>\n</svg>'],
759
+ ["text-quote", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M17 20H3v-2h14zM21 15.5H3v-2h18zM7.22 6.1a3 3 0 0 0-1.55 1.02A2 2 0 1 1 3 9a5 5 0 0 1 3.7-4.83zM12.22 6.1a3 3 0 0 0-1.55 1.02A2 2 0 1 1 8 9a5 5 0 0 1 3.7-4.83zM21 11h-6.5V9H21zM21 6.5h-6.5v-2H21z"/>\n</svg>'],
751
760
  ["timer", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 2a10 10 0 1 1-8.66 5l1.73 1A8 8 0 1 0 13 4.06V7h-2V2z"/>\n <path fill="currentColor" d="M12.5 11.13a1 1 0 0 1-1 1.74l-5.2-3 1-1.74z"/>\n</svg>'],
752
761
  ["trash", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" fill-rule="evenodd" d="M8 4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2h5v2h-1.08L19 19.046A3 3 0 0 1 16 22H8a3 3 0 0 1-3-2.954L4.08 8H3V6h5zM6.087 8l.91 10.917L7 19a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l.003-.083L17.914 8zM14 6h-4V4h4zm-3 4v8H9v-8zm4 0v8h-2v-8z"/>\n</svg>'],
753
- ["underlined", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M20 22H4v-2h16zM8.7 12.07q0 1.92.81 2.8.84.87 2.55.87 1.61 0 2.47-.91.89-.94.89-2.67V2h2.37v10.16q0 1.78-.72 3.1a4.7 4.7 0 0 1-2.04 2.02q-1.32.81-3.14.72-2.83.09-4.27-1.44c-.95-.9-1.42-2.36-1.42-4.2V2h2.5z"/>\n</svg>']
762
+ ["underlined", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M20 22H4v-2h16zM8 13c0 1.33 1.43 3 4 3s4-1.67 4-3V2h2v11c0 2.76-2.69 5-6 5s-6-2.24-6-5V2h2z"/>\n</svg>']
754
763
  ]);
755
764
  var __defProp$1g = Object.defineProperty;
756
765
  var __getOwnPropDesc$1f = Object.getOwnPropertyDescriptor;
@@ -854,6 +863,13 @@ let NLDDButton = class extends LitElement {
854
863
  if (this.target === "_blank") return "noopener noreferrer";
855
864
  return "";
856
865
  }
866
+ /**
867
+ * Delegates focus to the inner `<button>` (or `<a>` when `href` is set), so
868
+ * consumers can call `buttonEl.focus()` without reaching into shadow DOM.
869
+ */
870
+ focus(options) {
871
+ this.shadowRoot?.querySelector(".button")?.focus(options);
872
+ }
857
873
  render() {
858
874
  return template$n.call(this, {
859
875
  handleClick: this._handleClick.bind(this)
@@ -1722,6 +1738,13 @@ let NLDDIconButton = class extends LitElement {
1722
1738
  return;
1723
1739
  }
1724
1740
  }
1741
+ /**
1742
+ * Delegates focus to the inner `<button>` (or `<a>` when `href` is set), so
1743
+ * consumers can call `iconButtonEl.focus()` without reaching into shadow DOM.
1744
+ */
1745
+ focus(options) {
1746
+ this.shadowRoot?.querySelector(".icon-button")?.focus(options);
1747
+ }
1725
1748
  render() {
1726
1749
  return template$l.call(this);
1727
1750
  }
@@ -1976,6 +1999,50 @@ const menuStyles = css`
1976
1999
  .menu__empty {
1977
2000
  padding: var(--primitives-space-8);
1978
2001
  }
2002
+
2003
+
2004
+ /* # Back button — drill-in mode header */
2005
+
2006
+ .menu__back-button {
2007
+ display: flex;
2008
+ flex-direction: row;
2009
+ align-items: center;
2010
+ width: 100%;
2011
+ min-height: var(--_menu-item-size);
2012
+ padding: var(--primitives-space-8);
2013
+ box-sizing: border-box;
2014
+ border: none;
2015
+ border-radius: var(--semantics-controls-md-corner-radius);
2016
+ background: transparent;
2017
+ text-align: start;
2018
+ appearance: none;
2019
+ --context-cell-content-color: var(--semantics-content-secondary-color);
2020
+
2021
+ @media (pointer: fine) {
2022
+ padding: var(--primitives-space-4) var(--primitives-space-8);
2023
+ border-radius: var(--semantics-controls-sm-corner-radius);
2024
+ }
2025
+ }
2026
+
2027
+ .menu__back-button:hover,
2028
+ .menu__back-button:active {
2029
+ background-color: var(--components-menu-item-is-highlighted-background-color);
2030
+ --context-cell-content-color: var(--components-menu-item-is-highlighted-content-color);
2031
+ }
2032
+
2033
+ .menu__back-button:focus-visible {
2034
+ position: relative;
2035
+ z-index: 1;
2036
+ outline: var(--semantics-focus-ring-outline);
2037
+ outline-offset: var(--semantics-focus-ring-outline-offset);
2038
+ box-shadow: var(--semantics-focus-ring-box-shadow);
2039
+ }
2040
+
2041
+ .menu__back-button-divider {
2042
+ height: var(--semantics-dividers-thickness);
2043
+ background-color: var(--semantics-dividers-color);
2044
+ margin: var(--primitives-space-4) 0;
2045
+ }
1979
2046
  `;
1980
2047
  const menuItemStyles = css`
1981
2048
 
@@ -2014,9 +2081,36 @@ const menuItemStyles = css`
2014
2081
  }
2015
2082
 
2016
2083
 
2017
- /* # Highlighted or pressed */
2084
+ /* # Open submenu opener
2085
+ *
2086
+ * Lighter, neutral background while the opener's submenu is open and the
2087
+ * cursor has moved into the submenu. The currently-active item is the
2088
+ * one in the submenu; the opener just shows "this branch is active".
2089
+ * macOS-style: subtle, not competing with the highlight.
2090
+ *
2091
+ * When the cursor moves back over the opener (or it's keyboard-focused),
2092
+ * the highlighted/hover rule below upgrades it to the bold accent. */
2093
+
2094
+ .menu__item[aria-expanded="true"] {
2095
+ background-color: var(--components-menu-item-is-open-background-color);
2096
+ --context-cell-content-color: var(--components-menu-item-is-open-content-color);
2097
+ --context-cell-content-secondary-color: var(--components-menu-item-is-open-content-color);
2098
+ }
2099
+
2100
+
2101
+ /* # Highlighted or pressed
2102
+ *
2103
+ * [highlighted] always upgrades to the bold accent — including on openers
2104
+ * with an open submenu. The menu component keeps [highlighted] in sync
2105
+ * with where the user is logically navigating (set by mouseenter,
2106
+ * keyboard nav, or the safe-triangle while in transit; cleared on
2107
+ * peer-hover, submenu-entry, mouseleave, submenu-close), so a stale
2108
+ * highlighted attr on an opener shouldn't occur. The :hover branch
2109
+ * additionally covers the case where the cursor sits directly on an
2110
+ * open opener (since [highlighted] gets cleared at submenu-open time). */
2018
2111
 
2019
2112
  :host([highlighted]) .menu__item,
2113
+ .menu__item[aria-expanded="true"]:hover,
2020
2114
  .menu__item:active {
2021
2115
  background-color: var(--components-menu-item-is-highlighted-background-color);
2022
2116
  --context-cell-content-color: var(--components-menu-item-is-highlighted-content-color);
@@ -2055,9 +2149,21 @@ const menuItemStyles = css`
2055
2149
  /* # Forced colors */
2056
2150
 
2057
2151
  @media (forced-colors: active) {
2058
- :host([highlighted]) .menu__item {
2152
+ /* In forced-colors there's no neutral lighter palette, so mark the
2153
+ * open opener with a 1px outline instead of a fill — visibly "active"
2154
+ * without competing with the actual Highlight that lives in the
2155
+ * submenu. The hovered/highlighted branch promotes it back to the
2156
+ * full Highlight fill. */
2157
+ .menu__item[aria-expanded="true"] {
2158
+ outline: 1px solid CanvasText;
2159
+ outline-offset: -1px;
2160
+ }
2161
+
2162
+ :host([highlighted]) .menu__item,
2163
+ .menu__item[aria-expanded="true"]:hover {
2059
2164
  background-color: Highlight;
2060
2165
  color: HighlightText;
2166
+ outline: none;
2061
2167
  }
2062
2168
 
2063
2169
  .menu__item:focus-visible {
@@ -2087,6 +2193,62 @@ const menuDividerStyles = css`
2087
2193
  background-color: var(--semantics-dividers-color);
2088
2194
  }
2089
2195
  `;
2196
+ const menuGroupStyles = css`
2197
+
2198
+
2199
+ /* # Host
2200
+ *
2201
+ * Renders an automatic divider above the group via border-top, except when
2202
+ * the group is the first child of the menu (then no divider is needed).
2203
+ * The padding-top below the divider provides generous breathing room above
2204
+ * the title — paired with the tighter margin-bottom on the title itself
2205
+ * this gives the "more space above than below" rhythm that visually binds
2206
+ * the title to the items it labels rather than to whatever sits above.
2207
+ */
2208
+
2209
+ :host {
2210
+ display: block;
2211
+ border-top: var(--semantics-dividers-thickness) solid var(--semantics-dividers-color);
2212
+ padding-top: var(--primitives-space-6);
2213
+ margin-top: var(--primitives-space-4);
2214
+ }
2215
+
2216
+ :host(:first-child) {
2217
+ border-top: none;
2218
+ padding-top: var(--primitives-space-2);
2219
+ }
2220
+
2221
+ :host([hidden]) {
2222
+ display: none;
2223
+ }
2224
+
2225
+
2226
+ /* # Title */
2227
+
2228
+ .menu-group__title {
2229
+ margin: 0;
2230
+ padding-top: 0;
2231
+ padding-right: var(--primitives-space-8);
2232
+ padding-bottom: var(--primitives-space-1);
2233
+ padding-left: var(--primitives-space-4);
2234
+ font: var(--primitives-font-body-sm-regular-tight);
2235
+ color: var(--semantics-content-secondary-color);
2236
+ }
2237
+
2238
+
2239
+ /* # Items wrapper
2240
+ *
2241
+ * display: block keeps the role="group" wrapper as a real box so the
2242
+ * accessibility tree reliably exposes role + aria-labelledby across all
2243
+ * supported engines (display: contents has historical a11y-tree bugs in
2244
+ * older WebKit/Chromium that drop these). The extra container has no
2245
+ * visual impact: .menu is a flex column, and a block child stacks the
2246
+ * group's items the same as if they were direct children.
2247
+ */
2248
+ .menu-group__items {
2249
+ display: block;
2250
+ }
2251
+ `;
2090
2252
  const menuRoleMap = {
2091
2253
  menu: "menu",
2092
2254
  listbox: "listbox"
@@ -2098,11 +2260,28 @@ const itemRoleMap = {
2098
2260
  };
2099
2261
  function menuTemplate(isEmpty, variant) {
2100
2262
  const menuRole = isEmpty ? nothing : menuRoleMap[variant];
2263
+ const showBack = this._isSubmenu && this._drillInMode && this._parentItem !== null;
2101
2264
  return html`
2102
2265
  <div class="menu"
2103
2266
  role=${menuRole}
2104
2267
  tabindex="-1"
2105
2268
  >
2269
+ ${showBack ? html`
2270
+ <button class="menu__back-button"
2271
+ type="button"
2272
+ aria-label=${this._resolvedBackLabel}
2273
+ @click=${this._handleBack}
2274
+ @mouseenter=${this._handleBackMouseenter}
2275
+ >
2276
+ <nldd-icon-cell class="menu__back-icon" size="20" icon="chevron-left"></nldd-icon-cell>
2277
+ <nldd-spacer-cell size="6"></nldd-spacer-cell>
2278
+ <nldd-text-cell text=${this._parentItem.text}></nldd-text-cell>
2279
+ </button>
2280
+ <!-- Pure visual divider; role="none" keeps strict ARIA validators
2281
+ quiet (a focusable role="separator" inside a menu would need
2282
+ aria-valuenow et al.; this one is decorative). -->
2283
+ <div class="menu__back-button-divider" role="none"></div>
2284
+ ` : nothing}
2106
2285
  <slot></slot>
2107
2286
  ${isEmpty ? html`
2108
2287
  <div class="menu__empty">
@@ -2120,6 +2299,7 @@ function menuTemplate(isEmpty, variant) {
2120
2299
  function menuItemTemplate(variant = "menu") {
2121
2300
  const hasCheckState = this.type !== "button" && variant === "menu";
2122
2301
  const role = itemRoleMap[this.type][variant];
2302
+ const hasSubmenu = this._hasSubmenu;
2123
2303
  return html`
2124
2304
  <button class="menu__item"
2125
2305
  type="button"
@@ -2127,6 +2307,9 @@ function menuItemTemplate(variant = "menu") {
2127
2307
  ?disabled=${this.disabled}
2128
2308
  aria-checked=${hasCheckState ? String(this.selected) : nothing}
2129
2309
  aria-selected=${variant === "listbox" ? String(this.selected) : nothing}
2310
+ aria-haspopup=${hasSubmenu ? "menu" : nothing}
2311
+ aria-expanded=${hasSubmenu ? String(this._submenuOpen) : nothing}
2312
+ aria-controls=${hasSubmenu && this._submenuEl?.id ? this._submenuEl.id : nothing}
2130
2313
  @click=${this._handleClick}
2131
2314
  >
2132
2315
  ${hasCheckState ? html`
@@ -2151,14 +2334,47 @@ function menuItemTemplate(variant = "menu") {
2151
2334
  text=${this.details}
2152
2335
  ></nldd-text-cell>
2153
2336
  ` : nothing}
2337
+ ${hasSubmenu ? html`
2338
+ <nldd-spacer-cell size="6"></nldd-spacer-cell>
2339
+ <nldd-icon-cell class="menu__item-submenu-indicator"
2340
+ size="20"
2341
+ icon="chevron-right"
2342
+ ></nldd-icon-cell>
2343
+ ` : nothing}
2154
2344
  </button>
2345
+ <!--
2346
+ Project the slotted nldd-menu (the submenu, if any) into the flat
2347
+ tree. Without this slot, a light-DOM child nldd-menu sits outside
2348
+ any flat tree — and the Popover API uses the flat tree to locate
2349
+ a popover's ancestor popover. Without an ancestor, calling
2350
+ showPopover() on the submenu would dismiss the parent menu (its
2351
+ DOM ancestor) instead of stacking on top of it. The slot itself
2352
+ has no visible effect because the submenu is display:none until
2353
+ it opens its own popover.
2354
+ -->
2355
+ <slot></slot>
2155
2356
  `;
2156
2357
  }
2157
2358
  function menuDividerTemplate() {
2158
2359
  return html`<div class="menu__divider" role="separator"></div>`;
2159
2360
  }
2361
+ function menuGroupTemplate(component) {
2362
+ return html`
2363
+ <div class="menu-group__title"
2364
+ id=${component._titleId}
2365
+ aria-hidden="true"
2366
+ >${component.text}</div>
2367
+ <div class="menu-group__items"
2368
+ role="group"
2369
+ aria-labelledby=${component._titleId}
2370
+ >
2371
+ <slot></slot>
2372
+ </div>
2373
+ `;
2374
+ }
2160
2375
  const nlddMenuTranslations = {
2161
- "components.menu.empty-text": "Geen opties beschikbaar"
2376
+ "components.menu.empty-text": "Geen opties beschikbaar",
2377
+ "components.menu.back": "Terug"
2162
2378
  };
2163
2379
  const iconCellStyles = css`
2164
2380
 
@@ -2169,7 +2385,6 @@ const iconCellStyles = css`
2169
2385
  display: flex;
2170
2386
  flex-direction: column;
2171
2387
  align-items: center;
2172
- color: var(--context-cell-content-color, var(--semantics-content-color));
2173
2388
  }
2174
2389
 
2175
2390
  :host([hidden]) {
@@ -2177,9 +2392,9 @@ const iconCellStyles = css`
2177
2392
  }
2178
2393
 
2179
2394
 
2180
- /* # vertical-alignment */
2395
+ /* # Vertical alignment */
2181
2396
 
2182
- /* ## vertical-alignment: center (default) */
2397
+ /* ## Vertical alignment: center (default) */
2183
2398
 
2184
2399
  :host([vertical-alignment="center"]),
2185
2400
  :host(:not([vertical-alignment])) {
@@ -2187,14 +2402,14 @@ const iconCellStyles = css`
2187
2402
  justify-content: center;
2188
2403
  }
2189
2404
 
2190
- /* ## vertical-alignment: top */
2405
+ /* ## Vertical alignment: top */
2191
2406
 
2192
2407
  :host([vertical-alignment="top"]) {
2193
2408
  align-self: flex-start;
2194
2409
  justify-content: flex-start;
2195
2410
  }
2196
2411
 
2197
- /* ## vertical-alignment: bottom */
2412
+ /* ## Vertical alignment: bottom */
2198
2413
 
2199
2414
  :host([vertical-alignment="bottom"]) {
2200
2415
  align-self: flex-end;
@@ -2202,14 +2417,17 @@ const iconCellStyles = css`
2202
2417
  }
2203
2418
 
2204
2419
 
2205
- /* # size */
2420
+ /* # Slotted icon */
2206
2421
 
2207
2422
  ::slotted(*) {
2208
2423
  display: block;
2209
2424
  flex-shrink: 0;
2210
2425
  }
2211
2426
 
2212
- /* ## size: 16 */
2427
+
2428
+ /* # Size */
2429
+
2430
+ /* ## Size: 16 */
2213
2431
 
2214
2432
  :host([size="16"]) {
2215
2433
  width: var(--primitives-space-16);
@@ -2220,7 +2438,7 @@ const iconCellStyles = css`
2220
2438
  height: var(--primitives-space-16);
2221
2439
  }
2222
2440
 
2223
- /* ## size: 20 */
2441
+ /* ## Size: 20 */
2224
2442
 
2225
2443
  :host([size="20"]) {
2226
2444
  width: var(--primitives-space-20);
@@ -2231,9 +2449,10 @@ const iconCellStyles = css`
2231
2449
  height: var(--primitives-space-20);
2232
2450
  }
2233
2451
 
2234
- /* ## size: 24 (default) */
2452
+ /* ## Size: 24 (default) */
2235
2453
 
2236
- :host([size="24"]) {
2454
+ :host([size="24"]),
2455
+ :host(:not([size])) {
2237
2456
  width: var(--primitives-space-24);
2238
2457
  }
2239
2458
 
@@ -2243,7 +2462,7 @@ const iconCellStyles = css`
2243
2462
  height: var(--primitives-space-24);
2244
2463
  }
2245
2464
 
2246
- /* ## size: 32 */
2465
+ /* ## Size: 32 */
2247
2466
 
2248
2467
  :host([size="32"]) {
2249
2468
  width: var(--primitives-space-32);
@@ -2255,10 +2474,43 @@ const iconCellStyles = css`
2255
2474
  }
2256
2475
 
2257
2476
 
2258
- /* # color: inherit */
2477
+ /* # Color */
2259
2478
 
2260
- :host([color="inherit"]) {
2261
- color: inherit;
2479
+ /* ## Color: default */
2480
+
2481
+ :host([color="default"]),
2482
+ :host(:not([color])) {
2483
+ color: var(--context-cell-content-color, var(--semantics-content-color));
2484
+ }
2485
+
2486
+ /* ## Color: secondary */
2487
+
2488
+ :host([color="secondary"]) {
2489
+ color: var(--context-cell-content-secondary-color, var(--semantics-content-secondary-color));
2490
+ }
2491
+
2492
+ /* ## Color: accent */
2493
+
2494
+ :host([color="accent"]) {
2495
+ color: var(--context-cell-content-accent-color, var(--semantics-content-accent-color));
2496
+ }
2497
+
2498
+ /* ## Color: success */
2499
+
2500
+ :host([color="success"]) {
2501
+ color: var(--context-cell-content-success-color, var(--semantics-content-success-color));
2502
+ }
2503
+
2504
+ /* ## Color: warning */
2505
+
2506
+ :host([color="warning"]) {
2507
+ color: var(--context-cell-content-warning-color, var(--semantics-content-warning-color));
2508
+ }
2509
+
2510
+ /* ## Color: critical */
2511
+
2512
+ :host([color="critical"]) {
2513
+ color: var(--context-cell-content-critical-color, var(--semantics-content-critical-color));
2262
2514
  }
2263
2515
  `;
2264
2516
  function template$j() {
@@ -2571,12 +2823,36 @@ const textCellStyles = css`
2571
2823
  color: var(--context-cell-content-secondary-color, var(--semantics-content-secondary-color));
2572
2824
  }
2573
2825
 
2574
- /* ## Color: inherit */
2826
+ /* ## Color: accent */
2575
2827
 
2576
- :host([color='inherit']) .text-cell__text,
2577
- :host([color='inherit']) .text-cell__overline,
2578
- :host([color='inherit']) .text-cell__supporting-text {
2579
- color: inherit;
2828
+ :host([color='accent']) .text-cell__text,
2829
+ :host([color='accent']) .text-cell__overline,
2830
+ :host([color='accent']) .text-cell__supporting-text {
2831
+ color: var(--context-cell-content-accent-color, var(--semantics-content-accent-color));
2832
+ }
2833
+
2834
+ /* ## Color: success */
2835
+
2836
+ :host([color='success']) .text-cell__text,
2837
+ :host([color='success']) .text-cell__overline,
2838
+ :host([color='success']) .text-cell__supporting-text {
2839
+ color: var(--context-cell-content-success-color, var(--semantics-content-success-color));
2840
+ }
2841
+
2842
+ /* ## Color: warning */
2843
+
2844
+ :host([color='warning']) .text-cell__text,
2845
+ :host([color='warning']) .text-cell__overline,
2846
+ :host([color='warning']) .text-cell__supporting-text {
2847
+ color: var(--context-cell-content-warning-color, var(--semantics-content-warning-color));
2848
+ }
2849
+
2850
+ /* ## Color: critical */
2851
+
2852
+ :host([color='critical']) .text-cell__text,
2853
+ :host([color='critical']) .text-cell__overline,
2854
+ :host([color='critical']) .text-cell__supporting-text {
2855
+ color: var(--context-cell-content-critical-color, var(--semantics-content-critical-color));
2580
2856
  }
2581
2857
 
2582
2858
 
@@ -2642,9 +2918,27 @@ function renderQueryMark(text, query2, mode = "predictive") {
2642
2918
  }
2643
2919
  function template$i() {
2644
2920
  return html`
2645
- ${this.overline ? html`<p class="text-cell__overline">${renderQueryMark(this.overline, this.query, this.queryMarkMode)}</p>` : nothing}
2646
- ${this.text ? html`<p class="text-cell__text">${renderQueryMark(this.text, this.query, this.queryMarkMode)}</p>` : nothing}
2647
- ${this.supportingText ? html`<p class="text-cell__supporting-text">${renderQueryMark(this.supportingText, this.query, this.queryMarkMode)}</p>` : nothing}
2921
+ <p
2922
+ class="text-cell__overline"
2923
+ ?hidden=${!this.overline && !this._hasOverlineSlotted}
2924
+ >
2925
+ ${this.overline && !this._hasOverlineSlotted ? renderQueryMark(this.overline, this.query, this.queryMarkMode) : nothing}
2926
+ <slot name="overline" @slotchange=${this._onSlotChange}></slot>
2927
+ </p>
2928
+ <p
2929
+ class="text-cell__text"
2930
+ ?hidden=${!this.text && !this._hasDefaultSlotted}
2931
+ >
2932
+ ${this.text && !this._hasDefaultSlotted ? renderQueryMark(this.text, this.query, this.queryMarkMode) : nothing}
2933
+ <slot @slotchange=${this._onSlotChange}></slot>
2934
+ </p>
2935
+ <p
2936
+ class="text-cell__supporting-text"
2937
+ ?hidden=${!this.supportingText && !this._hasSupportingTextSlotted}
2938
+ >
2939
+ ${this.supportingText && !this._hasSupportingTextSlotted ? renderQueryMark(this.supportingText, this.query, this.queryMarkMode) : nothing}
2940
+ <slot name="supporting-text" @slotchange=${this._onSlotChange}></slot>
2941
+ </p>
2648
2942
  `;
2649
2943
  }
2650
2944
  var __defProp$19 = Object.defineProperty;
@@ -2670,6 +2964,29 @@ let NLDDTextCell = class extends VisibilityMixin(LitElement) {
2670
2964
  this.supportingText = "";
2671
2965
  this.query = "";
2672
2966
  this.queryMarkMode = "predictive";
2967
+ this._hasOverlineSlotted = false;
2968
+ this._hasDefaultSlotted = false;
2969
+ this._hasSupportingTextSlotted = false;
2970
+ this._onSlotChange = (e) => {
2971
+ const slot = e.target;
2972
+ const hasContent = slot.assignedNodes().some((node) => {
2973
+ if (node.nodeType === Node.TEXT_NODE) {
2974
+ return (node.textContent ?? "").trim().length > 0;
2975
+ }
2976
+ return node.nodeType === Node.ELEMENT_NODE;
2977
+ });
2978
+ switch (slot.name) {
2979
+ case "overline":
2980
+ this._hasOverlineSlotted = hasContent;
2981
+ break;
2982
+ case "supporting-text":
2983
+ this._hasSupportingTextSlotted = hasContent;
2984
+ break;
2985
+ default:
2986
+ this._hasDefaultSlotted = hasContent;
2987
+ break;
2988
+ }
2989
+ };
2673
2990
  }
2674
2991
  updated(changed) {
2675
2992
  super.updated(changed);
@@ -2744,6 +3061,15 @@ __decorateClass$1b([
2744
3061
  __decorateClass$1b([
2745
3062
  property({ type: String, attribute: "query-mark-mode" })
2746
3063
  ], NLDDTextCell.prototype, "queryMarkMode", 2);
3064
+ __decorateClass$1b([
3065
+ state()
3066
+ ], NLDDTextCell.prototype, "_hasOverlineSlotted", 2);
3067
+ __decorateClass$1b([
3068
+ state()
3069
+ ], NLDDTextCell.prototype, "_hasDefaultSlotted", 2);
3070
+ __decorateClass$1b([
3071
+ state()
3072
+ ], NLDDTextCell.prototype, "_hasSupportingTextSlotted", 2);
2747
3073
  NLDDTextCell = __decorateClass$1b([
2748
3074
  customElement("nldd-text-cell")
2749
3075
  ], NLDDTextCell);
@@ -2760,7 +3086,7 @@ const inlineDialogStyles = css`
2760
3086
 
2761
3087
  :host {
2762
3088
  --_icon-size: var(--primitives-space-48);
2763
- --_icon-color: var(--semantics-content-color);
3089
+ --_icon-color: var(--components-inline-dialog-icon-color);
2764
3090
 
2765
3091
  display: flex;
2766
3092
  justify-content: center;
@@ -2773,9 +3099,19 @@ const inlineDialogStyles = css`
2773
3099
  }
2774
3100
 
2775
3101
  :host([variant='alert']) {
2776
- --_icon-color: light-dark(var(--primitives-color-warning-350), var(--primitives-color-warning-650));
3102
+ --_icon-color: var(--components-inline-dialog-icon-warning-color);
3103
+ }
3104
+
3105
+ :host([variant='success']) {
3106
+ --_icon-color: var(--components-inline-dialog-icon-success-color);
2777
3107
  }
2778
3108
 
3109
+ :host([icon-color='secondary']) { --_icon-color: var(--components-inline-dialog-icon-secondary-color); }
3110
+ :host([icon-color='accent']) { --_icon-color: var(--components-inline-dialog-icon-accent-color); }
3111
+ :host([icon-color='critical']) { --_icon-color: var(--components-inline-dialog-icon-critical-color); }
3112
+ :host([icon-color='warning']) { --_icon-color: var(--components-inline-dialog-icon-warning-color); }
3113
+ :host([icon-color='success']) { --_icon-color: var(--components-inline-dialog-icon-success-color); }
3114
+
2779
3115
 
2780
3116
  /* # Body */
2781
3117
 
@@ -3010,6 +3346,7 @@ let NLDDInlineDialog = class extends LitElement {
3010
3346
  super(...arguments);
3011
3347
  this.variant = "";
3012
3348
  this.icon = "";
3349
+ this.iconColor = "";
3013
3350
  this.text = "";
3014
3351
  this.supportingText = "";
3015
3352
  this.headingLevel = null;
@@ -3018,6 +3355,7 @@ let NLDDInlineDialog = class extends LitElement {
3018
3355
  }
3019
3356
  get _resolvedIconName() {
3020
3357
  if (this.variant === "alert") return "alert";
3358
+ if (this.variant === "success") return "success";
3021
3359
  if (this.icon) return this.icon;
3022
3360
  return "";
3023
3361
  }
@@ -3052,6 +3390,9 @@ __decorateClass$19([
3052
3390
  __decorateClass$19([
3053
3391
  property({ type: String, reflect: true })
3054
3392
  ], NLDDInlineDialog.prototype, "icon", 2);
3393
+ __decorateClass$19([
3394
+ property({ type: String, reflect: true, attribute: "icon-color" })
3395
+ ], NLDDInlineDialog.prototype, "iconColor", 2);
3055
3396
  __decorateClass$19([
3056
3397
  property({ type: String, reflect: true })
3057
3398
  ], NLDDInlineDialog.prototype, "text", 2);
@@ -3071,6 +3412,12 @@ NLDDInlineDialog = __decorateClass$19([
3071
3412
  customElement("nldd-inline-dialog")
3072
3413
  ], NLDDInlineDialog);
3073
3414
  const POPOVER_REOPEN_GUARD_MS = 100;
3415
+ const breakpoints = {
3416
+ smMax: "640px",
3417
+ mdMin: "641px",
3418
+ mdMax: "1007px",
3419
+ lgMin: "1008px"
3420
+ };
3074
3421
  var __defProp$16 = Object.defineProperty;
3075
3422
  var __decorateClass$18 = (decorators, target, key, kind) => {
3076
3423
  var result = void 0;
@@ -3090,7 +3437,24 @@ let NLDDMenuDivider = _NLDDMenuDivider;
3090
3437
  if (!customElements.get("nldd-menu-divider")) {
3091
3438
  customElements.define("nldd-menu-divider", NLDDMenuDivider);
3092
3439
  }
3093
- const _NLDDMenuItem = (_a = class extends LitElement {
3440
+ const _NLDDMenuGroup = (_a = class extends LitElement {
3441
+ constructor() {
3442
+ super(...arguments);
3443
+ this.text = "";
3444
+ this._titleId = `nldd-menu-group-title-${_a._idCounter++}`;
3445
+ }
3446
+ render() {
3447
+ return menuGroupTemplate(this);
3448
+ }
3449
+ }, _a.styles = menuGroupStyles, _a._idCounter = 0, _a);
3450
+ __decorateClass$18([
3451
+ property({ type: String, reflect: true })
3452
+ ], _NLDDMenuGroup.prototype, "text");
3453
+ let NLDDMenuGroup = _NLDDMenuGroup;
3454
+ if (!customElements.get("nldd-menu-group")) {
3455
+ customElements.define("nldd-menu-group", NLDDMenuGroup);
3456
+ }
3457
+ const _NLDDMenuItem = (_b = class extends LitElement {
3094
3458
  constructor() {
3095
3459
  super(...arguments);
3096
3460
  this.text = "";
@@ -3104,27 +3468,70 @@ const _NLDDMenuItem = (_a = class extends LitElement {
3104
3468
  this.query = "";
3105
3469
  this.queryMarkMode = "predictive";
3106
3470
  this.menuVariant = "menu";
3471
+ this._submenuOpen = false;
3472
+ this._cachedSubmenuEl = null;
3473
+ this._submenuMutationObserver = null;
3107
3474
  }
3108
3475
  connectedCallback() {
3109
3476
  super.connectedCallback();
3110
3477
  if (!this.id) {
3111
- this.id = `nldd-menu-item-${_a._idCounter++}`;
3478
+ this.id = `nldd-menu-item-${_b._idCounter++}`;
3112
3479
  }
3113
- this.addEventListener("focusin", () => {
3480
+ this.addEventListener("focusin", (e) => {
3481
+ const realTarget = e.composedPath()[0];
3482
+ if (!realTarget || !this.shadowRoot?.contains(realTarget)) return;
3114
3483
  this.setAttribute("data-focused", "");
3115
3484
  this.dispatchEvent(new CustomEvent("menu-item-focused", {
3116
3485
  bubbles: true,
3117
3486
  composed: true
3118
3487
  }));
3119
3488
  });
3120
- this.addEventListener("focusout", () => this.removeAttribute("data-focused"));
3489
+ this.addEventListener("focusout", (e) => {
3490
+ const realTarget = e.composedPath()[0];
3491
+ if (!realTarget || !this.shadowRoot?.contains(realTarget)) return;
3492
+ this.removeAttribute("data-focused");
3493
+ });
3121
3494
  }
3122
3495
  focus(options) {
3123
3496
  const focusable = this.shadowRoot?.querySelector("button, a");
3124
3497
  focusable?.focus(options);
3125
3498
  }
3499
+ get _submenuEl() {
3500
+ return this._cachedSubmenuEl;
3501
+ }
3502
+ get _hasSubmenu() {
3503
+ return this._cachedSubmenuEl !== null;
3504
+ }
3505
+ firstUpdated() {
3506
+ this._cachedSubmenuEl = this.querySelector(":scope > nldd-menu");
3507
+ if (this._cachedSubmenuEl !== null) {
3508
+ this.requestUpdate();
3509
+ }
3510
+ this._submenuMutationObserver = new MutationObserver(() => {
3511
+ const current = this.querySelector(":scope > nldd-menu");
3512
+ if (current && current !== this._cachedSubmenuEl) {
3513
+ console.warn(
3514
+ "[nldd-menu-item] A nldd-menu child was added after mount. Submenu attachment is resolved once at firstUpdated in v1, so this menu will not be treated as a submenu. Define the nldd-menu child before the item is connected to the DOM."
3515
+ );
3516
+ }
3517
+ });
3518
+ this._submenuMutationObserver.observe(this, { childList: true });
3519
+ }
3520
+ disconnectedCallback() {
3521
+ super.disconnectedCallback();
3522
+ this._submenuMutationObserver?.disconnect();
3523
+ this._submenuMutationObserver = null;
3524
+ }
3126
3525
  _handleClick() {
3127
3526
  if (this.disabled) return;
3527
+ if (this._hasSubmenu) {
3528
+ this.dispatchEvent(new CustomEvent("submenu-open", {
3529
+ detail: { submenu: this._submenuEl, item: this },
3530
+ bubbles: true,
3531
+ composed: false
3532
+ }));
3533
+ return;
3534
+ }
3128
3535
  this.dispatchEvent(new CustomEvent("select", {
3129
3536
  bubbles: true,
3130
3537
  composed: true
@@ -3138,7 +3545,7 @@ const _NLDDMenuItem = (_a = class extends LitElement {
3138
3545
  render() {
3139
3546
  return menuItemTemplate.call(this, this.menuVariant);
3140
3547
  }
3141
- }, _a.styles = menuItemStyles, _a._idCounter = 0, _a);
3548
+ }, _b.styles = menuItemStyles, _b._idCounter = 0, _b);
3142
3549
  __decorateClass$18([
3143
3550
  property({ type: String, reflect: true })
3144
3551
  ], _NLDDMenuItem.prototype, "text");
@@ -3172,6 +3579,9 @@ __decorateClass$18([
3172
3579
  __decorateClass$18([
3173
3580
  state()
3174
3581
  ], _NLDDMenuItem.prototype, "menuVariant");
3582
+ __decorateClass$18([
3583
+ state()
3584
+ ], _NLDDMenuItem.prototype, "_submenuOpen");
3175
3585
  let NLDDMenuItem = _NLDDMenuItem;
3176
3586
  if (!customElements.get("nldd-menu-item")) {
3177
3587
  customElements.define("nldd-menu-item", NLDDMenuItem);
@@ -3183,7 +3593,7 @@ const defaultFilterFn = (query2, item) => {
3183
3593
  const aliasesMatch = item.aliases !== "" && item.aliases.split(" ").some((s) => s.toLowerCase().includes(q));
3184
3594
  return textMatch || valueMatch || aliasesMatch;
3185
3595
  };
3186
- const _NLDDMenu = class _NLDDMenu extends LitElement {
3596
+ const _NLDDMenu = (_c = class extends LitElement {
3187
3597
  constructor() {
3188
3598
  super(...arguments);
3189
3599
  this.anchor = "";
@@ -3195,8 +3605,13 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3195
3605
  this.width = "";
3196
3606
  this.maxItems = 0;
3197
3607
  this.translations = {};
3608
+ this.debugSafeTriangle = false;
3198
3609
  this.filterFn = defaultFilterFn;
3199
3610
  this._isEmpty = false;
3611
+ this._activeSubmenu = null;
3612
+ this._activeSubmenuOpener = null;
3613
+ this._parentMenu = null;
3614
+ this._parentItem = null;
3200
3615
  this._isOpen = false;
3201
3616
  this._closedAt = 0;
3202
3617
  this._cleanupAutoUpdate = null;
@@ -3212,55 +3627,178 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3212
3627
  this.showPopover();
3213
3628
  }
3214
3629
  };
3630
+ this._hoverOpenTimer = null;
3631
+ this._hoverCloseTimer = null;
3632
+ this._safeTriangleListener = null;
3633
+ this._safeTriangleStallTimer = null;
3634
+ this._lastCursorPos = null;
3635
+ this._safeTriangleApex = null;
3636
+ this._safeTriangleSubmenu = null;
3637
+ this._movingTowardSubmenu = false;
3215
3638
  this._handleMenuItemMouseenter = (event) => {
3216
3639
  const item = event.target.closest("nldd-menu-item");
3217
- if (!item || item.disabled || item.hasAttribute("hidden")) return;
3218
- this._setHighlight(item);
3640
+ if (!item) return;
3641
+ this._activateItem(item);
3219
3642
  };
3220
3643
  this._handleMouseleave = () => {
3221
3644
  if (this.variant !== "listbox") this._clearHighlight();
3645
+ this._cancelHoverOpen();
3222
3646
  };
3647
+ this._safeTriangleOverlay = null;
3223
3648
  this._handleMenuItemFocused = (event) => {
3224
3649
  const item = event.target.closest("nldd-menu-item");
3225
3650
  if (!item || item.disabled || item.hasAttribute("hidden")) return;
3651
+ if (item.closest("nldd-menu") !== this) return;
3226
3652
  this._setHighlight(item);
3227
3653
  };
3654
+ this._handleSubmenuOpen = (event) => {
3655
+ const { item, submenu } = event.detail;
3656
+ if (item.closest("nldd-menu") !== this) return;
3657
+ event.stopPropagation();
3658
+ if (this._activeSubmenu === submenu) return;
3659
+ if (this._activeSubmenu && this._activeSubmenu !== submenu) {
3660
+ this._activeSubmenu.hidePopover?.();
3661
+ }
3662
+ submenu._parentMenu = this;
3663
+ submenu._parentItem = item;
3664
+ if (this._drillInMode) {
3665
+ const root = this._rootMenu;
3666
+ submenu.anchorElement = root._getAnchorEl();
3667
+ submenu.placement = root.placement;
3668
+ } else {
3669
+ submenu.anchorElement = item;
3670
+ submenu.placement = "right-start";
3671
+ }
3672
+ this._activeSubmenu = submenu;
3673
+ this._activeSubmenuOpener = item;
3674
+ item._submenuOpen = true;
3675
+ item.removeAttribute("highlighted");
3676
+ const onToggle = (e) => {
3677
+ const tg = e;
3678
+ if (tg.newState !== "closed") return;
3679
+ submenu.removeEventListener("toggle", onToggle);
3680
+ if (this._activeSubmenu === submenu) {
3681
+ this._activeSubmenu = null;
3682
+ this._activeSubmenuOpener = null;
3683
+ }
3684
+ submenu._parentMenu = null;
3685
+ submenu._parentItem = null;
3686
+ item._submenuOpen = false;
3687
+ if (!item.hasAttribute("data-focused")) {
3688
+ item.removeAttribute("highlighted");
3689
+ }
3690
+ this._cancelHoverClose();
3691
+ this._stopSafeTriangle();
3692
+ this.dispatchEvent(new CustomEvent("submenu-close", {
3693
+ detail: { submenu, item },
3694
+ bubbles: true,
3695
+ composed: false
3696
+ }));
3697
+ };
3698
+ submenu.addEventListener("toggle", onToggle);
3699
+ submenu.showPopover?.();
3700
+ if (!this._drillInMode) {
3701
+ requestAnimationFrame(() => {
3702
+ if (this._activeSubmenu === submenu) {
3703
+ this._startSafeTriangle(submenu);
3704
+ }
3705
+ });
3706
+ }
3707
+ };
3708
+ this._handleBack = () => {
3709
+ this.hidePopover?.();
3710
+ };
3711
+ this._handleBackMouseenter = () => {
3712
+ this._clearHighlight();
3713
+ };
3714
+ this._lastDrillInMode = null;
3715
+ this._handleViewportResize = () => {
3716
+ const current = this._drillInMode;
3717
+ if (this._lastDrillInMode === null) {
3718
+ this._lastDrillInMode = current;
3719
+ return;
3720
+ }
3721
+ if (this._lastDrillInMode === current) return;
3722
+ this._lastDrillInMode = current;
3723
+ if (this._activeSubmenu) {
3724
+ this._activeSubmenu.hidePopover?.();
3725
+ }
3726
+ };
3727
+ this._handleSelectChainClose = () => {
3728
+ this.hidePopover?.();
3729
+ };
3228
3730
  this._handleKeydown = (event) => {
3229
3731
  const items = this._getVisibleItems();
3230
3732
  if (items.length === 0) return;
3733
+ const focusedDescendant = this.querySelector("nldd-menu-item[data-focused]");
3734
+ if (focusedDescendant && focusedDescendant.closest("nldd-menu") !== this) return;
3231
3735
  const index = this._getFocusedIndex(items);
3232
3736
  switch (event.key) {
3233
3737
  case "ArrowDown": {
3234
3738
  event.preventDefault();
3739
+ event.stopPropagation();
3235
3740
  const next = index === -1 ? 0 : index < items.length - 1 ? index + 1 : 0;
3236
3741
  items[next].focus();
3237
3742
  break;
3238
3743
  }
3239
3744
  case "ArrowUp": {
3240
3745
  event.preventDefault();
3746
+ event.stopPropagation();
3241
3747
  const prev = index === -1 ? items.length - 1 : index > 0 ? index - 1 : items.length - 1;
3242
3748
  items[prev].focus();
3243
3749
  break;
3244
3750
  }
3245
3751
  case "Home": {
3246
3752
  event.preventDefault();
3753
+ event.stopPropagation();
3247
3754
  items[0].focus();
3248
3755
  break;
3249
3756
  }
3250
3757
  case "End": {
3251
3758
  event.preventDefault();
3759
+ event.stopPropagation();
3252
3760
  items[items.length - 1].focus();
3253
3761
  break;
3254
3762
  }
3763
+ case "ArrowRight": {
3764
+ const focused = items[index];
3765
+ if (focused?._hasSubmenu) {
3766
+ event.preventDefault();
3767
+ event.stopPropagation();
3768
+ focused._handleClick();
3769
+ requestAnimationFrame(() => {
3770
+ this._activeSubmenu?._getVisibleItems()[0]?.focus();
3771
+ });
3772
+ }
3773
+ break;
3774
+ }
3775
+ case "ArrowLeft": {
3776
+ if (this._isSubmenu) {
3777
+ event.preventDefault();
3778
+ event.stopPropagation();
3779
+ const parentItem = this._parentItem;
3780
+ this.hidePopover();
3781
+ parentItem?.focus();
3782
+ }
3783
+ break;
3784
+ }
3255
3785
  case "Escape": {
3256
3786
  event.preventDefault();
3787
+ event.stopPropagation();
3257
3788
  this.hidePopover();
3258
- const anchorEl = this._getAnchorEl();
3259
- anchorEl?.focus();
3789
+ const focusTarget = this._isSubmenu ? this._parentItem : this._getAnchorEl();
3790
+ focusTarget?.focus();
3260
3791
  break;
3261
3792
  }
3793
+ default: {
3794
+ if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
3795
+ this._handleTypeahead(event, items, index);
3796
+ }
3797
+ }
3262
3798
  }
3263
3799
  };
3800
+ this._typeaheadBuffer = "";
3801
+ this._typeaheadTimer = null;
3264
3802
  this._handleToggle = async (event) => {
3265
3803
  const toggleEvent = event;
3266
3804
  this._isOpen = toggleEvent.newState === "open";
@@ -3304,6 +3842,15 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3304
3842
  get _resolvedEmptyText() {
3305
3843
  return this.emptyText || this._t("components.menu.empty-text");
3306
3844
  }
3845
+ /** Accessible name for the drill-in back button. Prefixes the parent
3846
+ * item's label with the localised "back" word so AT announces "Back:
3847
+ * Bestand" instead of an ambiguous "Bestand, button". Only used when
3848
+ * this menu is itself a submenu in drill-in mode. */
3849
+ get _resolvedBackLabel() {
3850
+ const back = this._t("components.menu.back");
3851
+ const parent = this._parentItem?.text ?? "";
3852
+ return parent ? `${back}: ${parent}` : back;
3853
+ }
3307
3854
  // — Lifecycle ——————————————————————————————————————————————————————————————
3308
3855
  updated(changedProperties) {
3309
3856
  if (changedProperties.has("width")) {
@@ -3332,9 +3879,322 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3332
3879
  if (this.anchor) return document.getElementById(this.anchor);
3333
3880
  return null;
3334
3881
  }
3335
- // — Lifecycle callbacks ————————————————————————————————————————————————————
3882
+ /**
3883
+ * Item-activation logic shared between the native `mouseenter` capture
3884
+ * handler and the safe-triangle recovery paths (sideways exit, direction
3885
+ * reversal, stall dismissal). Those paths know which item is under the
3886
+ * cursor — they don't need to synthesize a MouseEvent just to re-enter
3887
+ * the handler. Factoring out the body keeps the entry contracts honest:
3888
+ * the recovery sites pass an already-resolved item rather than relying
3889
+ * on `event.target` semantics they'd have to fake.
3890
+ */
3891
+ _activateItem(item) {
3892
+ if (item.disabled || item.hasAttribute("hidden")) return;
3893
+ if (item.closest("nldd-menu") !== this) return;
3894
+ if (this._movingTowardSubmenu && item !== this._activeSubmenuOpener) return;
3895
+ this._setHighlight(item);
3896
+ this._cancelHoverClose();
3897
+ if (this._drillInMode) return;
3898
+ if (this._activeSubmenu && item !== this._activeSubmenuOpener) {
3899
+ this._activeSubmenu.hidePopover?.();
3900
+ }
3901
+ this._cancelHoverOpen();
3902
+ if (item._hasSubmenu && this._activeSubmenuOpener !== item) {
3903
+ this._hoverOpenTimer = window.setTimeout(() => {
3904
+ this._hoverOpenTimer = null;
3905
+ item._handleClick();
3906
+ }, 150);
3907
+ }
3908
+ }
3909
+ /** Resolve the menu-item under a viewport point and activate it via
3910
+ * `_activateItem`. Used by safe-triangle recovery paths whose natural
3911
+ * mouseenter has already fired (and bailed) — they need to re-trigger
3912
+ * activation without synthesizing a MouseEvent. */
3913
+ _activateItemAt(p) {
3914
+ const el = document.elementFromPoint(p.x, p.y);
3915
+ const item = el?.closest("nldd-menu-item");
3916
+ if (item) this._activateItem(item);
3917
+ }
3918
+ /** Start the global mouse tracker that powers the safe triangle. Called
3919
+ * by _handleSubmenuOpen when a submenu opens in cascade mode. The
3920
+ * listener is a thin orchestrator over the named phase methods below. */
3921
+ _startSafeTriangle(submenu) {
3922
+ this._stopSafeTriangle();
3923
+ this._lastCursorPos = null;
3924
+ this._safeTriangleApex = null;
3925
+ this._safeTriangleSubmenu = submenu;
3926
+ this._movingTowardSubmenu = false;
3927
+ this._safeTriangleListener = (e) => {
3928
+ const p = { x: e.clientX, y: e.clientY };
3929
+ const r = submenu.getBoundingClientRect();
3930
+ if (_c._isPointInMenuTree(p, submenu)) {
3931
+ this._safeTriangleArrived(p);
3932
+ return;
3933
+ }
3934
+ const openerRect = this._activeSubmenuOpener?.getBoundingClientRect();
3935
+ const cursorOnOpener = _c._rectContainsPoint(openerRect, p);
3936
+ const lastOnOpener = _c._rectContainsPoint(openerRect, this._lastCursorPos);
3937
+ if (this._safeTriangleApex !== null && cursorOnOpener) {
3938
+ this._safeTriangleApex = null;
3939
+ }
3940
+ const wasMoving = this._movingTowardSubmenu;
3941
+ if (this._safeTriangleApex === null) {
3942
+ if (cursorOnOpener) {
3943
+ this._safeTriangleWaitOnOpener(p, r, openerRect);
3944
+ return;
3945
+ }
3946
+ if (openerRect && lastOnOpener && (p.y > openerRect.bottom || p.y < openerRect.top)) {
3947
+ this._safeTrianglePinApex(p, openerRect);
3948
+ } else {
3949
+ this._safeTriangleSidewaysExit(p, wasMoving);
3950
+ }
3951
+ } else {
3952
+ this._safeTrianglePolygonTest(p, r);
3953
+ }
3954
+ this._lastCursorPos = p;
3955
+ this._safeTriangleSyncOpenerHighlight();
3956
+ this._safeTriangleDirectionReversalRecovery(p, wasMoving);
3957
+ this._safeTriangleScheduleStall();
3958
+ if (this._movingTowardSubmenu) {
3959
+ this._cancelHoverClose();
3960
+ return;
3961
+ }
3962
+ this._safeTriangleMaybeScheduleLingerClose(p);
3963
+ };
3964
+ window.addEventListener("mousemove", this._safeTriangleListener);
3965
+ }
3966
+ // — Safe-triangle phase methods ————————————————————————————————————————
3967
+ /** Cursor entered the submenu (or any nested submenu) — clean up triangle
3968
+ * state but leave the window mousemove listener alive. The listener still
3969
+ * needs to fire while the cursor is inside the submenu so we can detect a
3970
+ * return trip to the opener and re-pin a fresh apex for another exit. */
3971
+ _safeTriangleArrived(p) {
3972
+ this._movingTowardSubmenu = false;
3973
+ this._cancelHoverClose();
3974
+ this._lastCursorPos = p;
3975
+ this._safeTriangleApex = null;
3976
+ this._activeSubmenuOpener?.removeAttribute("highlighted");
3977
+ this._removeSafeTriangleOverlay();
3978
+ }
3979
+ /** Cursor still on the opener — wait for an exit direction. Sets the
3980
+ * "in transit" flag (so brief peer pass-throughs don't activate) and
3981
+ * renders a live debug preview that follows the cursor. */
3982
+ _safeTriangleWaitOnOpener(p, r, openerRect) {
3983
+ this._movingTowardSubmenu = true;
3984
+ this._lastCursorPos = p;
3985
+ if (this._activeSubmenuOpener && !this._activeSubmenuOpener.hasAttribute("highlighted")) {
3986
+ this._setHighlight(this._activeSubmenuOpener);
3987
+ }
3988
+ if (this.debugSafeTriangle && openerRect) {
3989
+ const nearX = p.x < r.left ? r.left : r.right;
3990
+ this._renderSafeTriangleOverlay([
3991
+ { x: p.x - _c._SAFE_TRIANGLE_APEX_X_OFFSET, y: p.y },
3992
+ { x: nearX, y: r.top },
3993
+ { x: nearX, y: r.bottom }
3994
+ ]);
3995
+ }
3996
+ }
3997
+ /** Cursor crossed the opener's top or bottom edge — pin apex there.
3998
+ * x is clamped to the opener's range so the wedge starts at the visual
3999
+ * edge regardless of how far past the edge this mousemove sample is, then
4000
+ * shifted by _SAFE_TRIANGLE_APEX_X_OFFSET to widen the wedge at the
4001
+ * cursor side (the 4px headroom that makes brief diagonal wobble forgive). */
4002
+ _safeTrianglePinApex(p, openerRect) {
4003
+ const apexX = Math.max(openerRect.left, Math.min(openerRect.right, p.x)) - _c._SAFE_TRIANGLE_APEX_X_OFFSET;
4004
+ const apexY = p.y > openerRect.bottom ? openerRect.bottom : openerRect.top;
4005
+ this._safeTriangleApex = { x: apexX, y: apexY };
4006
+ this._movingTowardSubmenu = true;
4007
+ }
4008
+ /** Cursor exited the opener sideways (left/right) or with no opener
4009
+ * history — no triangle protection. Drop the flag and the overlay,
4010
+ * and synthesize mouseenter on the element under the cursor so peers
4011
+ * activate immediately (the natural mouseenter fired with flag=true
4012
+ * during the on-opener phase and got bailed). */
4013
+ _safeTriangleSidewaysExit(p, wasMoving) {
4014
+ this._movingTowardSubmenu = false;
4015
+ this._lastCursorPos = p;
4016
+ this._removeSafeTriangleOverlay();
4017
+ if (wasMoving) this._activateItemAt(p);
4018
+ }
4019
+ /** Apex pinned — test whether the current cursor position is inside the
4020
+ * wedge. Picks the submenu edge facing the cursor (left for right-start,
4021
+ * right when floating-ui flipped it). */
4022
+ _safeTrianglePolygonTest(p, r) {
4023
+ const nearX = p.x < r.left ? r.left : r.right;
4024
+ const apex = this._safeTriangleApex;
4025
+ const wedge = [
4026
+ apex,
4027
+ { x: nearX, y: r.top },
4028
+ { x: nearX, y: r.bottom }
4029
+ ];
4030
+ this._movingTowardSubmenu = _c._pointInPolygon(p, wedge);
4031
+ if (this.debugSafeTriangle) {
4032
+ this._renderSafeTriangleOverlay(wedge);
4033
+ }
4034
+ }
4035
+ /** Sync opener highlight with the in-transit flag. Uses _setHighlight so
4036
+ * any peer that briefly got highlighted (e.g. via the synthetic
4037
+ * mouseenter on a wedge-edge wobble) is cleared. Skip when the opener
4038
+ * already has the attribute to avoid DOM churn each frame. */
4039
+ _safeTriangleSyncOpenerHighlight() {
4040
+ if (this._activeSubmenuOpener && this._movingTowardSubmenu && !this._activeSubmenuOpener.hasAttribute("highlighted")) {
4041
+ this._setHighlight(this._activeSubmenuOpener);
4042
+ }
4043
+ }
4044
+ /** When the in-transit flag flips true → false, the cursor may already
4045
+ * be sitting on a peer item whose natural mouseenter fired (and bailed)
4046
+ * earlier. mouseenter won't re-fire until the cursor leaves and re-
4047
+ * enters, so synthesize one here to activate the peer immediately. */
4048
+ _safeTriangleDirectionReversalRecovery(p, wasMoving) {
4049
+ if (!wasMoving || this._movingTowardSubmenu) return;
4050
+ this._activateItemAt(p);
4051
+ }
4052
+ /** Re-arm the stall-dismissal timer. If the cursor sits motionless
4053
+ * inside the safe triangle long enough, drop the protection so the
4054
+ * element under the cursor can become interactive without nudging. */
4055
+ _safeTriangleScheduleStall() {
4056
+ if (this._safeTriangleStallTimer !== null) {
4057
+ clearTimeout(this._safeTriangleStallTimer);
4058
+ this._safeTriangleStallTimer = null;
4059
+ }
4060
+ if (!this._movingTowardSubmenu) return;
4061
+ this._safeTriangleStallTimer = window.setTimeout(() => {
4062
+ this._safeTriangleStallTimer = null;
4063
+ this._movingTowardSubmenu = false;
4064
+ this._safeTriangleApex = null;
4065
+ if (this._lastCursorPos) this._activateItemAt(this._lastCursorPos);
4066
+ }, _c._SAFE_TRIANGLE_STALL_DISMISS_MS);
4067
+ }
4068
+ /** Schedule submenu close when cursor sits outside the parent menu rect.
4069
+ * No-op if cursor is inside the menu (peer-hover logic handles it) or
4070
+ * if a close is already scheduled. */
4071
+ _safeTriangleMaybeScheduleLingerClose(p) {
4072
+ const submenu = this._safeTriangleSubmenu;
4073
+ if (!submenu) return;
4074
+ const rootRect = this.getBoundingClientRect();
4075
+ const inRoot = _c._rectContainsPoint(rootRect, p);
4076
+ if (!inRoot && this._hoverCloseTimer === null) {
4077
+ this._hoverCloseTimer = window.setTimeout(() => {
4078
+ this._hoverCloseTimer = null;
4079
+ if (this._activeSubmenu === submenu) {
4080
+ submenu.hidePopover?.();
4081
+ }
4082
+ }, _c._SUBMENU_LINGER_CLOSE_MS);
4083
+ }
4084
+ }
4085
+ /** True when the rect contains the point (inclusive). Returns false for
4086
+ * a missing rect or point — convenient for the optional-chained call
4087
+ * sites in the safe-triangle logic. */
4088
+ static _rectContainsPoint(rect, point) {
4089
+ return !!rect && !!point && point.x >= rect.left && point.x <= rect.right && point.y >= rect.top && point.y <= rect.bottom;
4090
+ }
4091
+ _stopSafeTriangle() {
4092
+ if (this._safeTriangleListener !== null) {
4093
+ window.removeEventListener("mousemove", this._safeTriangleListener);
4094
+ this._safeTriangleListener = null;
4095
+ }
4096
+ if (this._safeTriangleStallTimer !== null) {
4097
+ clearTimeout(this._safeTriangleStallTimer);
4098
+ this._safeTriangleStallTimer = null;
4099
+ }
4100
+ this._lastCursorPos = null;
4101
+ this._safeTriangleApex = null;
4102
+ this._safeTriangleSubmenu = null;
4103
+ this._movingTowardSubmenu = false;
4104
+ this._removeSafeTriangleOverlay();
4105
+ }
4106
+ _renderSafeTriangleOverlay(vertices) {
4107
+ const NS = "http://www.w3.org/2000/svg";
4108
+ if (this._safeTriangleOverlay === null) {
4109
+ const wrapper = document.createElement("div");
4110
+ wrapper.setAttribute("popover", "manual");
4111
+ wrapper.setAttribute("aria-hidden", "true");
4112
+ wrapper.style.cssText = "position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;border:0;padding:0;margin:0;background:transparent;overflow:visible;";
4113
+ const svg2 = document.createElementNS(NS, "svg");
4114
+ svg2.setAttribute("width", "100%");
4115
+ svg2.setAttribute("height", "100%");
4116
+ const polygon2 = document.createElementNS(NS, "polygon");
4117
+ polygon2.setAttribute("fill", "rgba(255, 0, 128, 0.15)");
4118
+ polygon2.setAttribute("stroke", "rgba(255, 0, 128, 0.85)");
4119
+ polygon2.setAttribute("stroke-width", "1");
4120
+ svg2.appendChild(polygon2);
4121
+ wrapper.appendChild(svg2);
4122
+ document.body.appendChild(wrapper);
4123
+ wrapper.showPopover();
4124
+ this._safeTriangleOverlay = wrapper;
4125
+ }
4126
+ const polygon = this._safeTriangleOverlay.querySelector("polygon");
4127
+ polygon.setAttribute("points", vertices.map((v) => `${v.x},${v.y}`).join(" "));
4128
+ }
4129
+ _removeSafeTriangleOverlay() {
4130
+ this._safeTriangleOverlay?.hidePopover?.();
4131
+ this._safeTriangleOverlay?.remove();
4132
+ this._safeTriangleOverlay = null;
4133
+ }
4134
+ _cancelHoverOpen() {
4135
+ if (this._hoverOpenTimer !== null) {
4136
+ clearTimeout(this._hoverOpenTimer);
4137
+ this._hoverOpenTimer = null;
4138
+ }
4139
+ }
4140
+ _cancelHoverClose() {
4141
+ if (this._hoverCloseTimer !== null) {
4142
+ clearTimeout(this._hoverCloseTimer);
4143
+ this._hoverCloseTimer = null;
4144
+ }
4145
+ }
4146
+ /** Recursively checks whether a point sits inside the given menu OR any of
4147
+ * its descendant submenus. Used by the hover guard so a cursor deep inside
4148
+ * a nested submenu still reads as "in the safe area" for ancestor menus —
4149
+ * without this, an ancestor's linger-close fires and cascades the whole
4150
+ * chain shut. */
4151
+ static _isPointInMenuTree(p, menu) {
4152
+ const r = menu.getBoundingClientRect();
4153
+ if (p.x >= r.left && p.x <= r.right && p.y >= r.top && p.y <= r.bottom) return true;
4154
+ if (menu._activeSubmenu) return _c._isPointInMenuTree(p, menu._activeSubmenu);
4155
+ return false;
4156
+ }
4157
+ /** Convex point-in-polygon test via consistent edge-cross-product sign.
4158
+ * Vertices must be ordered (clockwise or counter-clockwise). */
4159
+ static _pointInPolygon(p, vertices) {
4160
+ let hasNeg = false;
4161
+ let hasPos = false;
4162
+ for (let i = 0; i < vertices.length; i++) {
4163
+ const a = vertices[i];
4164
+ const b = vertices[(i + 1) % vertices.length];
4165
+ const cross = (p.x - b.x) * (a.y - b.y) - (a.x - b.x) * (p.y - b.y);
4166
+ if (cross < 0) hasNeg = true;
4167
+ if (cross > 0) hasPos = true;
4168
+ if (hasNeg && hasPos) return false;
4169
+ }
4170
+ return true;
4171
+ }
4172
+ static _getDrillInModeQuery() {
4173
+ if (_c._drillInModeQuery === null) {
4174
+ _c._drillInModeQuery = matchMedia(`(pointer: coarse), (max-width: ${breakpoints.smMax})`);
4175
+ }
4176
+ return _c._drillInModeQuery;
4177
+ }
4178
+ get _drillInMode() {
4179
+ return _c._getDrillInModeQuery().matches;
4180
+ }
4181
+ /** Walks the parent-menu chain up to the root (the menu that wasn't
4182
+ * opened by another menu — has no _parentMenu). */
4183
+ get _rootMenu() {
4184
+ let m = this;
4185
+ while (m._parentMenu) m = m._parentMenu;
4186
+ return m;
4187
+ }
4188
+ /** True when this menu is itself a submenu (was opened by another menu's
4189
+ * item). The root menu returns false. */
4190
+ get _isSubmenu() {
4191
+ return this._parentMenu !== null;
4192
+ }
3336
4193
  connectedCallback() {
3337
4194
  super.connectedCallback();
4195
+ if (!this.id) {
4196
+ this.id = `nldd-menu-${_c._menuIdCounter++}`;
4197
+ }
3338
4198
  if (!this.hasAttribute("popover")) {
3339
4199
  this.setAttribute("popover", "");
3340
4200
  }
@@ -3343,19 +4203,35 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3343
4203
  this.addEventListener("mouseenter", this._handleMenuItemMouseenter, true);
3344
4204
  this.addEventListener("mouseleave", this._handleMouseleave);
3345
4205
  this.addEventListener("menu-item-focused", this._handleMenuItemFocused);
4206
+ this.addEventListener("submenu-open", this._handleSubmenuOpen);
4207
+ this.addEventListener("select", this._handleSelectChainClose);
3346
4208
  document.addEventListener("click", this._handleDocumentClick);
4209
+ _c._getDrillInModeQuery().addEventListener("change", this._handleViewportResize);
3347
4210
  }
3348
4211
  firstUpdated() {
3349
4212
  this._updateEmptyState();
3350
4213
  }
3351
4214
  disconnectedCallback() {
3352
4215
  super.disconnectedCallback();
4216
+ if (this._activeSubmenu) {
4217
+ this._activeSubmenu.hidePopover?.();
4218
+ }
3353
4219
  this.removeEventListener("toggle", this._handleToggle);
3354
4220
  this.removeEventListener("keydown", this._handleKeydown);
3355
4221
  this.removeEventListener("mouseenter", this._handleMenuItemMouseenter, true);
3356
4222
  this.removeEventListener("mouseleave", this._handleMouseleave);
3357
4223
  this.removeEventListener("menu-item-focused", this._handleMenuItemFocused);
4224
+ this.removeEventListener("submenu-open", this._handleSubmenuOpen);
4225
+ this.removeEventListener("select", this._handleSelectChainClose);
3358
4226
  document.removeEventListener("click", this._handleDocumentClick);
4227
+ _c._getDrillInModeQuery().removeEventListener("change", this._handleViewportResize);
4228
+ this._cancelHoverOpen();
4229
+ this._cancelHoverClose();
4230
+ this._stopSafeTriangle();
4231
+ if (this._typeaheadTimer !== null) {
4232
+ clearTimeout(this._typeaheadTimer);
4233
+ this._typeaheadTimer = null;
4234
+ }
3359
4235
  this._cleanupAutoUpdate?.();
3360
4236
  this._cleanupAutoUpdate = null;
3361
4237
  }
@@ -3363,15 +4239,13 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3363
4239
  _getVisibleItems() {
3364
4240
  return Array.from(
3365
4241
  this.querySelectorAll("nldd-menu-item:not([hidden]):not([disabled])")
3366
- );
4242
+ ).filter((item) => item.closest("nldd-menu") === this);
3367
4243
  }
3368
4244
  _getFocusedIndex(items) {
3369
4245
  return items.findIndex((item) => item.hasAttribute("data-focused"));
3370
4246
  }
3371
4247
  _clearHighlight() {
3372
- Array.from(this.querySelectorAll("nldd-menu-item")).forEach((item) => {
3373
- item.removeAttribute("highlighted");
3374
- });
4248
+ Array.from(this.querySelectorAll("nldd-menu-item")).filter((item) => item.closest("nldd-menu") === this).forEach((item) => item.removeAttribute("highlighted"));
3375
4249
  }
3376
4250
  _setHighlight(target) {
3377
4251
  this._clearHighlight();
@@ -3394,7 +4268,8 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3394
4268
  const isFirst = index === 0;
3395
4269
  const isLast = index === visible.length - 1;
3396
4270
  const prevIsDivider = index > 0 && visible[index - 1].tagName.toLowerCase() === "nldd-menu-divider";
3397
- if (isFirst || isLast || prevIsDivider) {
4271
+ const nextIsGroup = index < visible.length - 1 && visible[index + 1].tagName.toLowerCase() === "nldd-menu-group";
4272
+ if (isFirst || isLast || prevIsDivider || nextIsGroup) {
3398
4273
  el.setAttribute("hidden", "");
3399
4274
  }
3400
4275
  });
@@ -3416,11 +4291,24 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3416
4291
  item.toggleAttribute("hidden", !matches);
3417
4292
  item.query = matches && query2 ? query2 : "";
3418
4293
  });
4294
+ this._updateGroupVisibility();
3419
4295
  this._setHighlight(null);
3420
4296
  this._updateEmptyState();
3421
4297
  this._updateDividerVisibility();
3422
4298
  if (this._isOpen) this.reposition();
3423
4299
  }
4300
+ /**
4301
+ * Hide each nldd-menu-group whose items are all filtered out — a labelled
4302
+ * heading above an empty section reads as broken. Runs after filter() has
4303
+ * updated individual item visibility.
4304
+ */
4305
+ _updateGroupVisibility() {
4306
+ const groups = this.querySelectorAll("nldd-menu-group");
4307
+ groups.forEach((group) => {
4308
+ const visibleItems = group.querySelectorAll("nldd-menu-item:not([hidden])");
4309
+ group.toggleAttribute("hidden", visibleItems.length === 0);
4310
+ });
4311
+ }
3424
4312
  /**
3425
4313
  * Move both focus and highlight to the next, previous, or first visible item.
3426
4314
  */
@@ -3476,10 +4364,11 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3476
4364
  const viewportMargin = parseInt(
3477
4365
  getComputedStyle(this).getPropertyValue("--_viewport-margin")
3478
4366
  );
4367
+ const submenuPadding = this._isSubmenu && !this._drillInMode ? parseInt(getComputedStyle(this).getPropertyValue("--_menu-padding")) || 0 : 0;
3479
4368
  const { x, y } = await computePosition(anchorEl, this, {
3480
4369
  placement: this.placement,
3481
4370
  middleware: [
3482
- offset(0),
4371
+ offset({ mainAxis: 0, alignmentAxis: -submenuPadding }),
3483
4372
  flip({ padding: viewportMargin }),
3484
4373
  shift({ padding: viewportMargin }),
3485
4374
  size({
@@ -3495,45 +4384,81 @@ const _NLDDMenu = class _NLDDMenu extends LitElement {
3495
4384
  top: `${y}px`
3496
4385
  });
3497
4386
  }
4387
+ /**
4388
+ * ARIA APG typeahead: characters typed within 500ms accumulate into a
4389
+ * buffer; the menu jumps to the first item whose text starts with the
4390
+ * buffer (case-insensitive).
4391
+ *
4392
+ * Single-char buffer (first press or after reset) cycles through matches
4393
+ * — repeated presses of the same letter step through every item starting
4394
+ * with it. Multi-char buffer matches from the currently-focused item, so
4395
+ * extending the prefix while the current item still matches keeps focus
4396
+ * stable instead of jumping forward.
4397
+ */
4398
+ _handleTypeahead(event, items, currentIndex) {
4399
+ if (this._typeaheadTimer !== null) {
4400
+ clearTimeout(this._typeaheadTimer);
4401
+ }
4402
+ this._typeaheadBuffer += event.key.toLowerCase();
4403
+ this._typeaheadTimer = window.setTimeout(() => {
4404
+ this._typeaheadBuffer = "";
4405
+ this._typeaheadTimer = null;
4406
+ }, _c._TYPEAHEAD_RESET_MS);
4407
+ const start = this._typeaheadBuffer.length === 1 && currentIndex >= 0 ? currentIndex + 1 : Math.max(0, currentIndex);
4408
+ for (let i = 0; i < items.length; i++) {
4409
+ const idx = (start + i) % items.length;
4410
+ if (items[idx].text.toLowerCase().startsWith(this._typeaheadBuffer)) {
4411
+ event.preventDefault();
4412
+ event.stopPropagation();
4413
+ items[idx].focus();
4414
+ return;
4415
+ }
4416
+ }
4417
+ }
3498
4418
  render() {
3499
4419
  return menuTemplate.call(this, this._isEmpty, this.variant);
3500
4420
  }
3501
- };
3502
- _NLDDMenu.styles = menuStyles;
3503
- let NLDDMenu = _NLDDMenu;
4421
+ }, _c.styles = menuStyles, _c._SUBMENU_LINGER_CLOSE_MS = 300, _c._SAFE_TRIANGLE_STALL_DISMISS_MS = 750, _c._SAFE_TRIANGLE_APEX_X_OFFSET = 4, _c._drillInModeQuery = null, _c._menuIdCounter = 0, _c._TYPEAHEAD_RESET_MS = 500, _c);
3504
4422
  __decorateClass$18([
3505
4423
  property({ type: String, reflect: true })
3506
- ], NLDDMenu.prototype, "anchor");
4424
+ ], _NLDDMenu.prototype, "anchor");
3507
4425
  __decorateClass$18([
3508
4426
  property({ attribute: false })
3509
- ], NLDDMenu.prototype, "anchorElement");
4427
+ ], _NLDDMenu.prototype, "anchorElement");
3510
4428
  __decorateClass$18([
3511
4429
  property({ type: String, reflect: true })
3512
- ], NLDDMenu.prototype, "placement");
4430
+ ], _NLDDMenu.prototype, "placement");
3513
4431
  __decorateClass$18([
3514
4432
  property({ type: String, reflect: true })
3515
- ], NLDDMenu.prototype, "variant");
4433
+ ], _NLDDMenu.prototype, "variant");
3516
4434
  __decorateClass$18([
3517
4435
  property({ type: String, attribute: "empty-text" })
3518
- ], NLDDMenu.prototype, "emptyText");
4436
+ ], _NLDDMenu.prototype, "emptyText");
3519
4437
  __decorateClass$18([
3520
4438
  property({ type: String, attribute: "empty-supporting-text" })
3521
- ], NLDDMenu.prototype, "emptySupportingText");
4439
+ ], _NLDDMenu.prototype, "emptySupportingText");
3522
4440
  __decorateClass$18([
3523
4441
  property({ type: String, reflect: true })
3524
- ], NLDDMenu.prototype, "width");
4442
+ ], _NLDDMenu.prototype, "width");
3525
4443
  __decorateClass$18([
3526
4444
  property({ type: Number, attribute: "max-items" })
3527
- ], NLDDMenu.prototype, "maxItems");
4445
+ ], _NLDDMenu.prototype, "maxItems");
3528
4446
  __decorateClass$18([
3529
4447
  property({ type: Object })
3530
- ], NLDDMenu.prototype, "translations");
4448
+ ], _NLDDMenu.prototype, "translations");
4449
+ __decorateClass$18([
4450
+ property({ type: Boolean, reflect: true, attribute: "debug-safe-triangle" })
4451
+ ], _NLDDMenu.prototype, "debugSafeTriangle");
3531
4452
  __decorateClass$18([
3532
4453
  property({ attribute: false })
3533
- ], NLDDMenu.prototype, "filterFn");
4454
+ ], _NLDDMenu.prototype, "filterFn");
4455
+ __decorateClass$18([
4456
+ state()
4457
+ ], _NLDDMenu.prototype, "_isEmpty");
3534
4458
  __decorateClass$18([
3535
4459
  state()
3536
- ], NLDDMenu.prototype, "_isEmpty");
4460
+ ], _NLDDMenu.prototype, "_parentItem");
4461
+ let NLDDMenu = _NLDDMenu;
3537
4462
  if (!customElements.get("nldd-menu")) {
3538
4463
  customElements.define("nldd-menu", NLDDMenu);
3539
4464
  }
@@ -4804,13 +5729,34 @@ NLDDToolbar = __decorateClass$15([
4804
5729
  const linkStyles = css`
4805
5730
 
4806
5731
 
4807
- /* # Host */
5732
+ /* # Host
5733
+ *
5734
+ * Inherit mode (no [size] attribute, or [size="inherit"]): display is
5735
+ * inline so the link wraps naturally inside running text and inherits
5736
+ * font-size / line-height / font-family from its surroundings. Icons are
5737
+ * supported via the inline whitespace between icon span and label span,
5738
+ * which provides natural single-space separation.
5739
+ *
5740
+ * Sized mode (xs/sm/md/lg): display becomes inline-flex so start/end
5741
+ * icons can be aligned to the text baseline with explicit gap spacing.
5742
+ */
4808
5743
 
4809
5744
  :host {
4810
- display: inline-flex;
4811
5745
  -webkit-tap-highlight-color: transparent;
4812
5746
  }
4813
5747
 
5748
+ :host(:not([size])),
5749
+ :host([size="inherit"]) {
5750
+ display: inline;
5751
+ }
5752
+
5753
+ :host([size="xs"]),
5754
+ :host([size="sm"]),
5755
+ :host([size="md"]),
5756
+ :host([size="lg"]) {
5757
+ display: inline-flex;
5758
+ }
5759
+
4814
5760
  :host([hidden]) {
4815
5761
  display: none;
4816
5762
  }
@@ -4827,30 +5773,40 @@ const linkStyles = css`
4827
5773
  appearance: none;
4828
5774
  background: none;
4829
5775
  color: var(--semantics-links-color);
4830
- display: inline-flex;
4831
- align-items: center;
4832
5776
  text-decoration: none;
4833
5777
  border-radius: var(--primitives-corner-radius-xs);
4834
5778
  transition: color var(--primitives-transition-duration-fast) var(--primitives-transition-easing-default);
4835
5779
  }
4836
5780
 
5781
+ :host(:not([size])) .link,
5782
+ :host([size="inherit"]) .link {
5783
+ display: inline;
5784
+ }
5785
+
4837
5786
  :host([size="xs"]) .link {
5787
+ display: inline-flex;
5788
+ align-items: center;
4838
5789
  gap: var(--primitives-space-4);
4839
5790
  font: var(--primitives-font-body-xs-regular-flat);
4840
5791
  }
4841
5792
 
4842
5793
  :host([size="sm"]) .link {
5794
+ display: inline-flex;
5795
+ align-items: center;
4843
5796
  gap: var(--primitives-space-4);
4844
5797
  font: var(--primitives-font-body-sm-regular-flat);
4845
5798
  }
4846
5799
 
4847
- :host([size="md"]) .link,
4848
- :host(:not([size])) .link {
5800
+ :host([size="md"]) .link {
5801
+ display: inline-flex;
5802
+ align-items: center;
4849
5803
  gap: var(--primitives-space-6);
4850
5804
  font: var(--primitives-font-body-md-regular-flat);
4851
5805
  }
4852
5806
 
4853
5807
  :host([size="lg"]) .link {
5808
+ display: inline-flex;
5809
+ align-items: center;
4854
5810
  gap: var(--primitives-space-6);
4855
5811
  font: var(--primitives-font-body-lg-regular-flat);
4856
5812
  }
@@ -4903,6 +5859,13 @@ const linkStyles = css`
4903
5859
  height: 1em;
4904
5860
  }
4905
5861
 
5862
+ :host(:not([size])) .link__start-icon,
5863
+ :host([size="inherit"]) .link__start-icon,
5864
+ :host(:not([size])) .link__end-icon,
5865
+ :host([size="inherit"]) .link__end-icon {
5866
+ top: 0.2em;
5867
+ }
5868
+
4906
5869
 
4907
5870
  /* # Toegankelijkheid */
4908
5871
 
@@ -4926,17 +5889,11 @@ function template$e(helpers) {
4926
5889
  @click=${helpers.handleClick}
4927
5890
  >
4928
5891
  ${this.startIcon ? html`
4929
- <span class="link__start-icon">
4930
- <nldd-icon name=${this.startIcon}></nldd-icon>
4931
- </span>
5892
+ <span class="link__start-icon"><nldd-icon name=${this.startIcon}></nldd-icon></span>
4932
5893
  ` : html`<slot name="start-icon"></slot>`}
4933
- <span class="link__label">
4934
- ${this.text ? this.text : html`<slot></slot>`}
4935
- </span>
5894
+ <span class="link__label">${this.text ? this.text : html`<slot></slot>`}</span>
4936
5895
  ${this.endIcon ? html`
4937
- <span class="link__end-icon">
4938
- <nldd-icon name=${this.endIcon}></nldd-icon>
4939
- </span>
5896
+ <span class="link__end-icon"><nldd-icon name=${this.endIcon}></nldd-icon></span>
4940
5897
  ` : html`<slot name="end-icon"></slot>`}
4941
5898
  </a>
4942
5899
  `;
@@ -4957,7 +5914,6 @@ let NLDDLink = class extends LitElement {
4957
5914
  this.href = void 0;
4958
5915
  this.target = void 0;
4959
5916
  this.rel = void 0;
4960
- this.size = "md";
4961
5917
  this.text = "";
4962
5918
  this.startIcon = "";
4963
5919
  this.endIcon = "";
@@ -5041,16 +5997,10 @@ __decorateClass$13([
5041
5997
  NLDDRichText = __decorateClass$13([
5042
5998
  customElement("nldd-rich-text")
5043
5999
  ], NLDDRichText);
5044
- const breakpoints = {
5045
- smMax: "640px",
5046
- mdMin: "641px",
5047
- mdMax: "1007px",
5048
- lgMin: "1008px"
5049
- };
5050
- const smMax$c = unsafeCSS(breakpoints.smMax);
5051
- const mdMin$d = unsafeCSS(breakpoints.mdMin);
5052
- const mdMax$8 = unsafeCSS(breakpoints.mdMax);
5053
- const lgMin$a = unsafeCSS(breakpoints.lgMin);
6000
+ const smMax$d = unsafeCSS(breakpoints.smMax);
6001
+ const mdMin$e = unsafeCSS(breakpoints.mdMin);
6002
+ const mdMax$9 = unsafeCSS(breakpoints.mdMax);
6003
+ const lgMin$b = unsafeCSS(breakpoints.lgMin);
5054
6004
  const titleStyles = css`
5055
6005
 
5056
6006
 
@@ -5106,158 +6056,158 @@ const titleStyles = css`
5106
6056
  }
5107
6057
 
5108
6058
  :host([size='1']) ::slotted(:not([slot])) {
5109
- @media (max-width: ${smMax$c}) {
6059
+ @media (max-width: ${smMax$d}) {
5110
6060
  font: var(--primitives-font-display-1-sm);
5111
6061
  }
5112
6062
 
5113
- @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6063
+ @media (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5114
6064
  font: var(--primitives-font-display-1-md);
5115
6065
  }
5116
6066
 
5117
- @media (min-width: ${lgMin$a}) {
6067
+ @media (min-width: ${lgMin$b}) {
5118
6068
  font: var(--primitives-font-display-1-lg);
5119
6069
  }
5120
6070
 
5121
- @container layout-area (max-width: ${smMax$c}) {
6071
+ @container layout-area (max-width: ${smMax$d}) {
5122
6072
  font: var(--primitives-font-display-1-sm);
5123
6073
  }
5124
6074
 
5125
- @container layout-area (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6075
+ @container layout-area (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5126
6076
  font: var(--primitives-font-display-1-md);
5127
6077
  }
5128
6078
 
5129
- @container layout-area (min-width: ${lgMin$a}) {
6079
+ @container layout-area (min-width: ${lgMin$b}) {
5130
6080
  font: var(--primitives-font-display-1-lg);
5131
6081
  }
5132
6082
  }
5133
6083
 
5134
6084
  :host([size='2']) ::slotted(:not([slot])) {
5135
- @media (max-width: ${smMax$c}) {
6085
+ @media (max-width: ${smMax$d}) {
5136
6086
  font: var(--primitives-font-display-2-sm);
5137
6087
  }
5138
6088
 
5139
- @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6089
+ @media (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5140
6090
  font: var(--primitives-font-display-2-md);
5141
6091
  }
5142
6092
 
5143
- @media (min-width: ${lgMin$a}) {
6093
+ @media (min-width: ${lgMin$b}) {
5144
6094
  font: var(--primitives-font-display-2-lg);
5145
6095
  }
5146
6096
 
5147
- @container layout-area (max-width: ${smMax$c}) {
6097
+ @container layout-area (max-width: ${smMax$d}) {
5148
6098
  font: var(--primitives-font-display-2-sm);
5149
6099
  }
5150
6100
 
5151
- @container layout-area (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6101
+ @container layout-area (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5152
6102
  font: var(--primitives-font-display-2-md);
5153
6103
  }
5154
6104
 
5155
- @container layout-area (min-width: ${lgMin$a}) {
6105
+ @container layout-area (min-width: ${lgMin$b}) {
5156
6106
  font: var(--primitives-font-display-2-lg);
5157
6107
  }
5158
6108
  }
5159
6109
 
5160
6110
  :host([size='3']) ::slotted(:not([slot])),
5161
6111
  :host(:not([size])) ::slotted(:not([slot])) {
5162
- @media (max-width: ${smMax$c}) {
6112
+ @media (max-width: ${smMax$d}) {
5163
6113
  font: var(--primitives-font-display-3-sm);
5164
6114
  }
5165
6115
 
5166
- @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6116
+ @media (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5167
6117
  font: var(--primitives-font-display-3-md);
5168
6118
  }
5169
6119
 
5170
- @media (min-width: ${lgMin$a}) {
6120
+ @media (min-width: ${lgMin$b}) {
5171
6121
  font: var(--primitives-font-display-3-lg);
5172
6122
  }
5173
6123
 
5174
- @container layout-area (max-width: ${smMax$c}) {
6124
+ @container layout-area (max-width: ${smMax$d}) {
5175
6125
  font: var(--primitives-font-display-3-sm);
5176
6126
  }
5177
6127
 
5178
- @container layout-area (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6128
+ @container layout-area (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5179
6129
  font: var(--primitives-font-display-3-md);
5180
6130
  }
5181
6131
 
5182
- @container layout-area (min-width: ${lgMin$a}) {
6132
+ @container layout-area (min-width: ${lgMin$b}) {
5183
6133
  font: var(--primitives-font-display-3-lg);
5184
6134
  }
5185
6135
  }
5186
6136
 
5187
6137
  :host([size='4']) ::slotted(:not([slot])) {
5188
- @media (max-width: ${smMax$c}) {
6138
+ @media (max-width: ${smMax$d}) {
5189
6139
  font: var(--primitives-font-display-4-sm);
5190
6140
  }
5191
6141
 
5192
- @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6142
+ @media (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5193
6143
  font: var(--primitives-font-display-4-md);
5194
6144
  }
5195
6145
 
5196
- @media (min-width: ${lgMin$a}) {
6146
+ @media (min-width: ${lgMin$b}) {
5197
6147
  font: var(--primitives-font-display-4-lg);
5198
6148
  }
5199
6149
 
5200
- @container layout-area (max-width: ${smMax$c}) {
6150
+ @container layout-area (max-width: ${smMax$d}) {
5201
6151
  font: var(--primitives-font-display-4-sm);
5202
6152
  }
5203
6153
 
5204
- @container layout-area (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6154
+ @container layout-area (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5205
6155
  font: var(--primitives-font-display-4-md);
5206
6156
  }
5207
6157
 
5208
- @container layout-area (min-width: ${lgMin$a}) {
6158
+ @container layout-area (min-width: ${lgMin$b}) {
5209
6159
  font: var(--primitives-font-display-4-lg);
5210
6160
  }
5211
6161
  }
5212
6162
 
5213
6163
  :host([size='5']) ::slotted(:not([slot])) {
5214
- @media (max-width: ${smMax$c}) {
6164
+ @media (max-width: ${smMax$d}) {
5215
6165
  font: var(--primitives-font-display-5-sm);
5216
6166
  }
5217
6167
 
5218
- @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6168
+ @media (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5219
6169
  font: var(--primitives-font-display-5-md);
5220
6170
  }
5221
6171
 
5222
- @media (min-width: ${lgMin$a}) {
6172
+ @media (min-width: ${lgMin$b}) {
5223
6173
  font: var(--primitives-font-display-5-lg);
5224
6174
  }
5225
6175
 
5226
- @container layout-area (max-width: ${smMax$c}) {
6176
+ @container layout-area (max-width: ${smMax$d}) {
5227
6177
  font: var(--primitives-font-display-5-sm);
5228
6178
  }
5229
6179
 
5230
- @container layout-area (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6180
+ @container layout-area (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5231
6181
  font: var(--primitives-font-display-5-md);
5232
6182
  }
5233
6183
 
5234
- @container layout-area (min-width: ${lgMin$a}) {
6184
+ @container layout-area (min-width: ${lgMin$b}) {
5235
6185
  font: var(--primitives-font-display-5-lg);
5236
6186
  }
5237
6187
  }
5238
6188
 
5239
6189
  :host([size='6']) ::slotted(:not([slot])) {
5240
- @media (max-width: ${smMax$c}) {
6190
+ @media (max-width: ${smMax$d}) {
5241
6191
  font: var(--primitives-font-display-6-sm);
5242
6192
  }
5243
6193
 
5244
- @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6194
+ @media (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5245
6195
  font: var(--primitives-font-display-6-md);
5246
6196
  }
5247
6197
 
5248
- @media (min-width: ${lgMin$a}) {
6198
+ @media (min-width: ${lgMin$b}) {
5249
6199
  font: var(--primitives-font-display-6-lg);
5250
6200
  }
5251
6201
 
5252
- @container layout-area (max-width: ${smMax$c}) {
6202
+ @container layout-area (max-width: ${smMax$d}) {
5253
6203
  font: var(--primitives-font-display-6-sm);
5254
6204
  }
5255
6205
 
5256
- @container layout-area (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
6206
+ @container layout-area (min-width: ${mdMin$e}) and (max-width: ${mdMax$9}) {
5257
6207
  font: var(--primitives-font-display-6-md);
5258
6208
  }
5259
6209
 
5260
- @container layout-area (min-width: ${lgMin$a}) {
6210
+ @container layout-area (min-width: ${lgMin$b}) {
5261
6211
  font: var(--primitives-font-display-6-lg);
5262
6212
  }
5263
6213
  }
@@ -5323,7 +6273,7 @@ __decorateClass$12([
5323
6273
  NLDDTitle = __decorateClass$12([
5324
6274
  customElement("nldd-title")
5325
6275
  ], NLDDTitle);
5326
- const smMax$b = unsafeCSS(breakpoints.smMax);
6276
+ const smMax$c = unsafeCSS(breakpoints.smMax);
5327
6277
  const blockquoteStyles = css`
5328
6278
 
5329
6279
 
@@ -5338,7 +6288,7 @@ const blockquoteStyles = css`
5338
6288
  max-width: var(--semantics-blockquotes-max-width);
5339
6289
  }
5340
6290
 
5341
- @media (max-width: ${smMax$b}) {
6291
+ @media (max-width: ${smMax$c}) {
5342
6292
  :host {
5343
6293
  --_spacing: var(--semantics-blockquotes-sm-spacing);
5344
6294
  --_quote-font: var(--semantics-blockquotes-sm-quote-font);
@@ -5346,7 +6296,7 @@ const blockquoteStyles = css`
5346
6296
  }
5347
6297
  }
5348
6298
 
5349
- @container layout-area (max-width: ${smMax$b}) {
6299
+ @container layout-area (max-width: ${smMax$c}) {
5350
6300
  :host {
5351
6301
  --_spacing: var(--semantics-blockquotes-sm-spacing);
5352
6302
  --_quote-font: var(--semantics-blockquotes-sm-quote-font);
@@ -7418,7 +8368,7 @@ const GRAMMAR_LOADERS = {
7418
8368
  yaml: () => import("./prism-yaml-DO0f9pf6.js"),
7419
8369
  json: () => import("./prism-json-DIMpow89.js"),
7420
8370
  javascript: () => import("./prism-javascript-DeC_17Pw.js"),
7421
- typescript: () => import("./prism-typescript-9LDqHHRS.js").then((n) => n.p),
8371
+ typescript: () => import("./prism-typescript-Cdpexfvg.js").then((n) => n.p),
7422
8372
  css: () => import("./prism-css-B93tXdOU.js"),
7423
8373
  html: () => import("./prism-markup-DfJYPYHA.js"),
7424
8374
  bash: () => import("./prism-bash-vbqaw3JR.js"),
@@ -7936,7 +8886,7 @@ const formFieldErrorTextStyles = css`
7936
8886
 
7937
8887
  .form-field__error-text {
7938
8888
  margin: 0;
7939
- color: var(--semantics-content-error-color);
8889
+ color: var(--semantics-content-critical-color);
7940
8890
  font: var(--primitives-font-body-sm-regular-tight);
7941
8891
  }
7942
8892
 
@@ -8620,12 +9570,16 @@ let NLDDTextField = class extends LitElement {
8620
9570
  composed: true
8621
9571
  }));
8622
9572
  }
8623
- focus() {
8624
- this._input?.focus();
8625
- }
8626
9573
  blur() {
8627
9574
  this._input?.blur();
8628
9575
  }
9576
+ /**
9577
+ * Delegates focus to the inner native `<input>`, so consumers can call
9578
+ * `textFieldEl.focus()` without reaching into shadow DOM.
9579
+ */
9580
+ focus(options) {
9581
+ this._input?.focus(options);
9582
+ }
8629
9583
  render() {
8630
9584
  return textFieldTemplate(this);
8631
9585
  }
@@ -10069,6 +11023,13 @@ let NLDDSearchField = class extends LitElement {
10069
11023
  composed: true
10070
11024
  }));
10071
11025
  }
11026
+ /**
11027
+ * Delegates focus to the inner native `<input>`, so consumers can call
11028
+ * `searchFieldEl.focus()` without reaching into shadow DOM.
11029
+ */
11030
+ focus(options) {
11031
+ this._input?.focus(options);
11032
+ }
10072
11033
  render() {
10073
11034
  return searchFieldTemplate(this);
10074
11035
  }
@@ -10429,6 +11390,13 @@ let NLDDNumberField = class extends LitElement {
10429
11390
  _clamp(value) {
10430
11391
  return Math.max(this.min, Math.min(this.max, value));
10431
11392
  }
11393
+ /**
11394
+ * Delegates focus to the inner native `<input>`, so consumers can call
11395
+ * `numberFieldEl.focus()` without reaching into shadow DOM.
11396
+ */
11397
+ focus(options) {
11398
+ this.shadowRoot?.querySelector(".number-field__input")?.focus(options);
11399
+ }
10432
11400
  render() {
10433
11401
  return numberFieldTemplate(this);
10434
11402
  }
@@ -10688,7 +11656,7 @@ function dropdownTemplate(component) {
10688
11656
  <span class="dropdown__value">${component._displayValue}</span>
10689
11657
  ${renderValidationIcon$1(component)}
10690
11658
  <div class="dropdown__picker-icon">
10691
- <nldd-icon name="chevron-up-down"></nldd-icon>
11659
+ <nldd-icon name="chevron-up-chevron-down"></nldd-icon>
10692
11660
  </div>
10693
11661
  </div>
10694
11662
  `;
@@ -11021,7 +11989,7 @@ function comboBoxTemplate(component) {
11021
11989
  aria-haspopup="listbox"
11022
11990
  aria-activedescendant=${component._highlightedId || nothing}
11023
11991
  aria-invalid=${component.invalid ? "true" : nothing}
11024
- .value=${component._displayValue}
11992
+ .value=${component.text}
11025
11993
  placeholder=${component.placeholder || nothing}
11026
11994
  ?disabled=${component.disabled}
11027
11995
  name=${component.name || nothing}
@@ -11032,7 +12000,7 @@ function comboBoxTemplate(component) {
11032
12000
  >
11033
12001
  <div class="combo-box__input-fade"></div>
11034
12002
  <div class="combo-box__end">
11035
- ${component._displayValue ? html`
12003
+ ${component.text ? html`
11036
12004
  <div class="combo-box__clear-button">
11037
12005
  <nldd-icon-button
11038
12006
  variant="neutral-transparent"
@@ -11082,8 +12050,9 @@ let NLDDComboBox = class extends LitElement {
11082
12050
  super(...arguments);
11083
12051
  this._internals = this.attachInternals();
11084
12052
  this._initialValue = "";
11085
- this._initialDisplayValue = "";
12053
+ this._initialText = "";
11086
12054
  this.value = "";
12055
+ this.text = "";
11087
12056
  this.placeholder = "";
11088
12057
  this.size = "md";
11089
12058
  this.valid = false;
@@ -11096,7 +12065,6 @@ let NLDDComboBox = class extends LitElement {
11096
12065
  this.translations = {};
11097
12066
  this.width = "";
11098
12067
  this._isOpen = false;
11099
- this._displayValue = "";
11100
12068
  this._highlightedId = "";
11101
12069
  this._menuId = `nldd-combo-box-menu-${NLDDComboBox._idCounter++}`;
11102
12070
  this._menu = null;
@@ -11118,7 +12086,7 @@ let NLDDComboBox = class extends LitElement {
11118
12086
  };
11119
12087
  this._handleMenuSelect = (e) => {
11120
12088
  const item = e.target;
11121
- this._displayValue = item.text;
12089
+ this.text = item.text;
11122
12090
  this.value = item.value || item.text;
11123
12091
  this._highlightedId = "";
11124
12092
  this._closeMenu();
@@ -11145,7 +12113,12 @@ let NLDDComboBox = class extends LitElement {
11145
12113
  // — Lifecycle ————————————————————————————————————————————————————————————
11146
12114
  firstUpdated() {
11147
12115
  this._initialValue = this.value;
11148
- this._initialDisplayValue = this._displayValue;
12116
+ this._initialText = this.text;
12117
+ }
12118
+ willUpdate(changedProperties) {
12119
+ if (changedProperties.has("value") && !changedProperties.has("text")) {
12120
+ this._deriveTextFromMenu();
12121
+ }
11149
12122
  }
11150
12123
  updated(changedProperties) {
11151
12124
  if (changedProperties.has("maxItems") && this._menu) {
@@ -11154,16 +12127,16 @@ let NLDDComboBox = class extends LitElement {
11154
12127
  if (changedProperties.has("width")) {
11155
12128
  this.style.width = this.width || "";
11156
12129
  }
11157
- if (changedProperties.has("value") || changedProperties.has("_displayValue")) {
12130
+ if (changedProperties.has("value") || changedProperties.has("text")) {
11158
12131
  const state2 = new FormData();
11159
12132
  state2.append("value", this.value);
11160
- state2.append("display", this._displayValue);
12133
+ state2.append("display", this.text);
11161
12134
  this._internals.setFormValue(this.value, state2);
11162
12135
  }
11163
12136
  }
11164
12137
  formResetCallback() {
11165
12138
  this.value = this._initialValue;
11166
- this._displayValue = this._initialDisplayValue;
12139
+ this.text = this._initialText;
11167
12140
  }
11168
12141
  formDisabledCallback(disabled) {
11169
12142
  this.disabled = disabled;
@@ -11171,10 +12144,10 @@ let NLDDComboBox = class extends LitElement {
11171
12144
  formStateRestoreCallback(state2) {
11172
12145
  if (state2 instanceof FormData) {
11173
12146
  this.value = String(state2.get("value") ?? "");
11174
- this._displayValue = String(state2.get("display") ?? "");
12147
+ this.text = String(state2.get("display") ?? "");
11175
12148
  } else if (typeof state2 === "string") {
11176
12149
  this.value = state2;
11177
- this._displayValue = state2;
12150
+ this.text = state2;
11178
12151
  }
11179
12152
  }
11180
12153
  connectedCallback() {
@@ -11212,6 +12185,24 @@ let NLDDComboBox = class extends LitElement {
11212
12185
  menu.addEventListener("select", this._handleMenuSelect);
11213
12186
  menu.addEventListener("keydown", this._handleMenuKeydown);
11214
12187
  this._updateMenuWidth();
12188
+ if (this.value && !this.text) {
12189
+ this._deriveTextFromMenu();
12190
+ }
12191
+ }
12192
+ /**
12193
+ * Walk slotted menu items and set `text` from the first item whose `value`
12194
+ * (or `text`, when value is unset) matches the current `value`. No-op when
12195
+ * the menu isn't wired yet or no item matches.
12196
+ */
12197
+ _deriveTextFromMenu() {
12198
+ if (!this._menu || !this.value) return;
12199
+ const items = Array.from(this._menu.querySelectorAll("nldd-menu-item")).filter((item) => item.closest("nldd-menu") === this._menu);
12200
+ for (const item of items) {
12201
+ if ((item.value || item.text) === this.value) {
12202
+ this.text = item.text;
12203
+ return;
12204
+ }
12205
+ }
11215
12206
  }
11216
12207
  // — Menu width & position ————————————————————————————————————————————————
11217
12208
  _updateMenuWidth() {
@@ -11259,18 +12250,18 @@ let NLDDComboBox = class extends LitElement {
11259
12250
  }
11260
12251
  _handleInput(e) {
11261
12252
  const input = e.target;
11262
- this._displayValue = input.value;
11263
- this._menu?.filter(this._displayValue);
12253
+ this.text = input.value;
12254
+ this._menu?.filter(this.text);
11264
12255
  this._updateActiveDescendant();
11265
12256
  if (!this._isOpen) this._openMenu();
11266
12257
  this.dispatchEvent(new CustomEvent("input", {
11267
- detail: { value: this._displayValue },
12258
+ detail: { value: this.text },
11268
12259
  bubbles: true,
11269
12260
  composed: true
11270
12261
  }));
11271
12262
  }
11272
12263
  _handleClear() {
11273
- this._displayValue = "";
12264
+ this.text = "";
11274
12265
  this.value = "";
11275
12266
  this._menu?.filter("");
11276
12267
  this._closeMenu();
@@ -11292,8 +12283,8 @@ let NLDDComboBox = class extends LitElement {
11292
12283
  if (!relatedTarget || !this._menu?.contains(relatedTarget)) {
11293
12284
  this._closeMenu();
11294
12285
  }
11295
- if (this._displayValue !== "" && this._displayValue !== this.value) {
11296
- this.value = this._displayValue;
12286
+ if (this.text !== "" && this.text !== this.value) {
12287
+ this.value = this.text;
11297
12288
  this.dispatchEvent(new CustomEvent("change", {
11298
12289
  detail: { value: this.value },
11299
12290
  bubbles: true,
@@ -11326,7 +12317,7 @@ let NLDDComboBox = class extends LitElement {
11326
12317
  if (highlighted) {
11327
12318
  highlighted.select();
11328
12319
  } else {
11329
- this.value = this._displayValue;
12320
+ this.value = this.text;
11330
12321
  this._closeMenu();
11331
12322
  this.dispatchEvent(new CustomEvent("change", {
11332
12323
  detail: { value: this.value },
@@ -11342,6 +12333,13 @@ let NLDDComboBox = class extends LitElement {
11342
12333
  break;
11343
12334
  }
11344
12335
  }
12336
+ /**
12337
+ * Delegates focus to the inner native `<input>`, so consumers can call
12338
+ * `comboBoxEl.focus()` without reaching into shadow DOM.
12339
+ */
12340
+ focus(options) {
12341
+ this._input?.focus(options);
12342
+ }
11345
12343
  render() {
11346
12344
  return comboBoxTemplate(this);
11347
12345
  }
@@ -11352,6 +12350,9 @@ NLDDComboBox._idCounter = 0;
11352
12350
  __decorateClass$P([
11353
12351
  property({ type: String })
11354
12352
  ], NLDDComboBox.prototype, "value", 2);
12353
+ __decorateClass$P([
12354
+ property({ type: String })
12355
+ ], NLDDComboBox.prototype, "text", 2);
11355
12356
  __decorateClass$P([
11356
12357
  property({ type: String })
11357
12358
  ], NLDDComboBox.prototype, "placeholder", 2);
@@ -11388,9 +12389,6 @@ __decorateClass$P([
11388
12389
  __decorateClass$P([
11389
12390
  state()
11390
12391
  ], NLDDComboBox.prototype, "_isOpen", 2);
11391
- __decorateClass$P([
11392
- state()
11393
- ], NLDDComboBox.prototype, "_displayValue", 2);
11394
12392
  __decorateClass$P([
11395
12393
  state()
11396
12394
  ], NLDDComboBox.prototype, "_highlightedId", 2);
@@ -12807,6 +13805,13 @@ let NLDDSwitch = class extends LitElement {
12807
13805
  composed: true
12808
13806
  }));
12809
13807
  }
13808
+ /**
13809
+ * Delegates focus to the inner native checkbox `<input>`, so consumers can
13810
+ * call `switchEl.focus()` without reaching into shadow DOM.
13811
+ */
13812
+ focus(options) {
13813
+ this.shadowRoot?.querySelector(".switch__input")?.focus(options);
13814
+ }
12810
13815
  render() {
12811
13816
  return switchTemplate(this);
12812
13817
  }
@@ -12938,6 +13943,14 @@ let NLDDSwitchField = class extends LitElement {
12938
13943
  composed: true
12939
13944
  }));
12940
13945
  }
13946
+ /**
13947
+ * Delegates focus to the inner `<nldd-switch>`, which in turn focuses its
13948
+ * native checkbox input. Lets consumers call `switchFieldEl.focus()` without
13949
+ * reaching into shadow DOM.
13950
+ */
13951
+ focus(options) {
13952
+ this.shadowRoot?.querySelector("nldd-switch")?.focus(options);
13953
+ }
12941
13954
  render() {
12942
13955
  return switchFieldTemplate(this);
12943
13956
  }
@@ -14690,10 +15703,10 @@ __decorateClass$A([
14690
15703
  NLDDBarSplitView = __decorateClass$A([
14691
15704
  customElement("nldd-bar-split-view")
14692
15705
  ], NLDDBarSplitView);
14693
- const smMax$a = unsafeCSS(breakpoints.smMax);
14694
- const mdMin$c = unsafeCSS(breakpoints.mdMin);
14695
- const mdMax$7 = unsafeCSS(breakpoints.mdMax);
14696
- const lgMin$9 = unsafeCSS(breakpoints.lgMin);
15706
+ const smMax$b = unsafeCSS(breakpoints.smMax);
15707
+ const mdMin$d = unsafeCSS(breakpoints.mdMin);
15708
+ const mdMax$8 = unsafeCSS(breakpoints.mdMax);
15709
+ const lgMin$a = unsafeCSS(breakpoints.lgMin);
14697
15710
  const navigationSplitViewStyles = css`
14698
15711
 
14699
15712
 
@@ -14825,7 +15838,7 @@ const navigationSplitViewStyles = css`
14825
15838
  position: fixed;
14826
15839
  outline: none;
14827
15840
 
14828
- @media (max-width: ${smMax$a}) {
15841
+ @media (max-width: ${smMax$b}) {
14829
15842
  inset: auto 0 0 0;
14830
15843
  width: 100%;
14831
15844
  max-width: 100%;
@@ -14834,14 +15847,14 @@ const navigationSplitViewStyles = css`
14834
15847
  border-radius: var(--semantics-overlays-corner-radius) var(--semantics-overlays-corner-radius) 0 0;
14835
15848
  }
14836
15849
 
14837
- @media (min-width: ${mdMin$c}) and (max-width: ${mdMax$7}) {
15850
+ @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
14838
15851
  inset: var(--semantics-overlays-inset) var(--semantics-overlays-inset) var(--semantics-overlays-inset) auto;
14839
15852
  width: var(--semantics-sheets-side-md-width);
14840
15853
  height: calc(100dvh - var(--semantics-overlays-inset) * 2);
14841
15854
  border-radius: var(--semantics-overlays-corner-radius);
14842
15855
  }
14843
15856
 
14844
- @media (min-width: ${lgMin$9}) {
15857
+ @media (min-width: ${lgMin$a}) {
14845
15858
  inset: var(--semantics-overlays-inset) var(--semantics-overlays-inset) var(--semantics-overlays-inset) auto;
14846
15859
  width: var(--semantics-sheets-side-lg-width);
14847
15860
  height: calc(100dvh - var(--semantics-overlays-inset) * 2);
@@ -14863,21 +15876,21 @@ const navigationSplitViewStyles = css`
14863
15876
  }
14864
15877
 
14865
15878
  &[open] {
14866
- @media (max-width: ${smMax$a}) {
15879
+ @media (max-width: ${smMax$b}) {
14867
15880
  animation: navigation-split-view-slide-in-bottom var(--semantics-sheets-bottom-animation-duration) var(--primitives-transition-easing-default) both;
14868
15881
  }
14869
15882
 
14870
- @media (min-width: ${mdMin$c}) {
15883
+ @media (min-width: ${mdMin$d}) {
14871
15884
  animation: navigation-split-view-inspector-slide-in var(--semantics-sheets-side-animation-duration) var(--primitives-transition-easing-default) both;
14872
15885
  }
14873
15886
  }
14874
15887
 
14875
15888
  &.is-closing {
14876
- @media (max-width: ${smMax$a}) {
15889
+ @media (max-width: ${smMax$b}) {
14877
15890
  animation: navigation-split-view-slide-out-bottom var(--semantics-sheets-bottom-animation-duration) var(--primitives-transition-easing-default) both;
14878
15891
  }
14879
15892
 
14880
- @media (min-width: ${mdMin$c}) {
15893
+ @media (min-width: ${mdMin$d}) {
14881
15894
  animation: navigation-split-view-inspector-slide-out var(--semantics-sheets-side-animation-duration) var(--primitives-transition-easing-default) both;
14882
15895
  }
14883
15896
  }
@@ -14916,7 +15929,7 @@ const navigationSplitViewStyles = css`
14916
15929
  position: fixed;
14917
15930
  outline: none;
14918
15931
 
14919
- @media (max-width: ${smMax$a}) {
15932
+ @media (max-width: ${smMax$b}) {
14920
15933
  inset: auto 0 0 0;
14921
15934
  width: 100%;
14922
15935
  max-width: 100%;
@@ -14925,14 +15938,14 @@ const navigationSplitViewStyles = css`
14925
15938
  border-radius: var(--semantics-overlays-corner-radius) var(--semantics-overlays-corner-radius) 0 0;
14926
15939
  }
14927
15940
 
14928
- @media (min-width: ${mdMin$c}) and (max-width: ${mdMax$7}) {
15941
+ @media (min-width: ${mdMin$d}) and (max-width: ${mdMax$8}) {
14929
15942
  inset: var(--semantics-overlays-inset) auto var(--semantics-overlays-inset) var(--semantics-overlays-inset);
14930
15943
  width: var(--semantics-sheets-side-md-width);
14931
15944
  height: calc(100dvh - var(--semantics-overlays-inset) * 2);
14932
15945
  border-radius: var(--semantics-overlays-corner-radius);
14933
15946
  }
14934
15947
 
14935
- @media (min-width: ${lgMin$9}) {
15948
+ @media (min-width: ${lgMin$a}) {
14936
15949
  inset: var(--semantics-overlays-inset) auto var(--semantics-overlays-inset) var(--semantics-overlays-inset);
14937
15950
  width: var(--semantics-sheets-side-lg-width);
14938
15951
  height: calc(100dvh - var(--semantics-overlays-inset) * 2);
@@ -14954,21 +15967,21 @@ const navigationSplitViewStyles = css`
14954
15967
  }
14955
15968
 
14956
15969
  &[open] {
14957
- @media (max-width: ${smMax$a}) {
15970
+ @media (max-width: ${smMax$b}) {
14958
15971
  animation: navigation-split-view-slide-in-bottom var(--semantics-sheets-bottom-animation-duration) var(--primitives-transition-easing-default) both;
14959
15972
  }
14960
15973
 
14961
- @media (min-width: ${mdMin$c}) {
15974
+ @media (min-width: ${mdMin$d}) {
14962
15975
  animation: navigation-split-view-sidebar-slide-in var(--semantics-sheets-side-animation-duration) var(--primitives-transition-easing-default) both;
14963
15976
  }
14964
15977
  }
14965
15978
 
14966
15979
  &.is-closing {
14967
- @media (max-width: ${smMax$a}) {
15980
+ @media (max-width: ${smMax$b}) {
14968
15981
  animation: navigation-split-view-slide-out-bottom var(--semantics-sheets-bottom-animation-duration) var(--primitives-transition-easing-default) both;
14969
15982
  }
14970
15983
 
14971
- @media (min-width: ${mdMin$c}) {
15984
+ @media (min-width: ${mdMin$d}) {
14972
15985
  animation: navigation-split-view-sidebar-slide-out var(--semantics-sheets-side-animation-duration) var(--primitives-transition-easing-default) both;
14973
15986
  }
14974
15987
  }
@@ -15660,7 +16673,7 @@ __decorateClass$x([
15660
16673
  NLDDStackedSplitView = __decorateClass$x([
15661
16674
  customElement("nldd-stacked-split-view")
15662
16675
  ], NLDDStackedSplitView);
15663
- const mdMin$b = unsafeCSS(breakpoints.mdMin);
16676
+ const mdMin$c = unsafeCSS(breakpoints.mdMin);
15664
16677
  const splitViewPaneStyles = css`
15665
16678
 
15666
16679
 
@@ -15673,7 +16686,7 @@ const splitViewPaneStyles = css`
15673
16686
  width: 100%;
15674
16687
  height: 100%;
15675
16688
 
15676
- @media (min-width: ${mdMin$b}) {
16689
+ @media (min-width: ${mdMin$c}) {
15677
16690
  background-color: var(--_background-color);
15678
16691
  }
15679
16692
  }
@@ -16059,10 +17072,10 @@ const page = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty
16059
17072
  return NLDDPage;
16060
17073
  }
16061
17074
  }, Symbol.toStringTag, { value: "Module" }));
16062
- const smMax$9 = unsafeCSS(breakpoints.smMax);
16063
- const mdMin$a = unsafeCSS(breakpoints.mdMin);
16064
- const mdMax$6 = unsafeCSS(breakpoints.mdMax);
16065
- const lgMin$8 = unsafeCSS(breakpoints.lgMin);
17075
+ const smMax$a = unsafeCSS(breakpoints.smMax);
17076
+ const mdMin$b = unsafeCSS(breakpoints.mdMin);
17077
+ const mdMax$7 = unsafeCSS(breakpoints.mdMax);
17078
+ const lgMin$9 = unsafeCSS(breakpoints.lgMin);
16066
17079
  const simpleSectionStyles = css`
16067
17080
 
16068
17081
 
@@ -16104,32 +17117,32 @@ const simpleSectionStyles = css`
16104
17117
  width: 100%;
16105
17118
  box-sizing: border-box;
16106
17119
 
16107
- @media (max-width: ${smMax$9}) {
17120
+ @media (max-width: ${smMax$a}) {
16108
17121
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16109
17122
  padding-block: var(--semantics-page-sections-sm-margin-block);
16110
17123
  }
16111
17124
 
16112
- @media (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
17125
+ @media (min-width: ${mdMin$b}) and (max-width: ${mdMax$7}) {
16113
17126
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16114
17127
  padding-block: var(--semantics-page-sections-md-margin-block);
16115
17128
  }
16116
17129
 
16117
- @media (min-width: ${lgMin$8}) {
17130
+ @media (min-width: ${lgMin$9}) {
16118
17131
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16119
17132
  padding-block: var(--semantics-page-sections-lg-margin-block);
16120
17133
  }
16121
17134
 
16122
- @container layout-area (max-width: ${smMax$9}) {
17135
+ @container layout-area (max-width: ${smMax$a}) {
16123
17136
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16124
17137
  padding-block: var(--semantics-page-sections-sm-margin-block);
16125
17138
  }
16126
17139
 
16127
- @container layout-area (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
17140
+ @container layout-area (min-width: ${mdMin$b}) and (max-width: ${mdMax$7}) {
16128
17141
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16129
17142
  padding-block: var(--semantics-page-sections-md-margin-block);
16130
17143
  }
16131
17144
 
16132
- @container layout-area (min-width: ${lgMin$8}) {
17145
+ @container layout-area (min-width: ${lgMin$9}) {
16133
17146
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16134
17147
  padding-block: var(--semantics-page-sections-lg-margin-block);
16135
17148
  }
@@ -16152,27 +17165,27 @@ const simpleSectionStyles = css`
16152
17165
  width: 100%;
16153
17166
  max-width: var(--_max-width);
16154
17167
 
16155
- @media (max-width: ${smMax$9}) {
17168
+ @media (max-width: ${smMax$a}) {
16156
17169
  gap: var(--semantics-page-sections-sm-gap);
16157
17170
  }
16158
17171
 
16159
- @media (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
17172
+ @media (min-width: ${mdMin$b}) and (max-width: ${mdMax$7}) {
16160
17173
  gap: var(--semantics-page-sections-md-gap);
16161
17174
  }
16162
17175
 
16163
- @media (min-width: ${lgMin$8}) {
17176
+ @media (min-width: ${lgMin$9}) {
16164
17177
  gap: var(--semantics-page-sections-lg-gap);
16165
17178
  }
16166
17179
 
16167
- @container layout-area (max-width: ${smMax$9}) {
17180
+ @container layout-area (max-width: ${smMax$a}) {
16168
17181
  gap: var(--semantics-page-sections-sm-gap);
16169
17182
  }
16170
17183
 
16171
- @container layout-area (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
17184
+ @container layout-area (min-width: ${mdMin$b}) and (max-width: ${mdMax$7}) {
16172
17185
  gap: var(--semantics-page-sections-md-gap);
16173
17186
  }
16174
17187
 
16175
- @container layout-area (min-width: ${lgMin$8}) {
17188
+ @container layout-area (min-width: ${lgMin$9}) {
16176
17189
  gap: var(--semantics-page-sections-lg-gap);
16177
17190
  }
16178
17191
  }
@@ -16247,10 +17260,10 @@ const simpleSection = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defin
16247
17260
  return NLDDSimpleSection;
16248
17261
  }
16249
17262
  }, Symbol.toStringTag, { value: "Module" }));
16250
- const smMax$8 = unsafeCSS(breakpoints.smMax);
16251
- const mdMin$9 = unsafeCSS(breakpoints.mdMin);
16252
- const mdMax$5 = unsafeCSS(breakpoints.mdMax);
16253
- const lgMin$7 = unsafeCSS(breakpoints.lgMin);
17263
+ const smMax$9 = unsafeCSS(breakpoints.smMax);
17264
+ const mdMin$a = unsafeCSS(breakpoints.mdMin);
17265
+ const mdMax$6 = unsafeCSS(breakpoints.mdMax);
17266
+ const lgMin$8 = unsafeCSS(breakpoints.lgMin);
16254
17267
  const fullBleedSectionStyles = css`
16255
17268
 
16256
17269
 
@@ -16286,27 +17299,27 @@ const fullBleedSectionStyles = css`
16286
17299
  width: 100%;
16287
17300
  box-sizing: border-box;
16288
17301
 
16289
- @media (max-width: ${smMax$8}) {
17302
+ @media (max-width: ${smMax$9}) {
16290
17303
  padding-block: var(--semantics-page-sections-sm-margin-block);
16291
17304
  }
16292
17305
 
16293
- @media (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
17306
+ @media (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
16294
17307
  padding-block: var(--semantics-page-sections-md-margin-block);
16295
17308
  }
16296
17309
 
16297
- @media (min-width: ${lgMin$7}) {
17310
+ @media (min-width: ${lgMin$8}) {
16298
17311
  padding-block: var(--semantics-page-sections-lg-margin-block);
16299
17312
  }
16300
17313
 
16301
- @container layout-area (max-width: ${smMax$8}) {
17314
+ @container layout-area (max-width: ${smMax$9}) {
16302
17315
  padding-block: var(--semantics-page-sections-sm-margin-block);
16303
17316
  }
16304
17317
 
16305
- @container layout-area (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
17318
+ @container layout-area (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
16306
17319
  padding-block: var(--semantics-page-sections-md-margin-block);
16307
17320
  }
16308
17321
 
16309
- @container layout-area (min-width: ${lgMin$7}) {
17322
+ @container layout-area (min-width: ${lgMin$8}) {
16310
17323
  padding-block: var(--semantics-page-sections-lg-margin-block);
16311
17324
  }
16312
17325
  }
@@ -16328,27 +17341,27 @@ const fullBleedSectionStyles = css`
16328
17341
  width: 100%;
16329
17342
  max-width: var(--_max-width);
16330
17343
 
16331
- @media (max-width: ${smMax$8}) {
17344
+ @media (max-width: ${smMax$9}) {
16332
17345
  gap: var(--semantics-page-sections-sm-gap);
16333
17346
  }
16334
17347
 
16335
- @media (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
17348
+ @media (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
16336
17349
  gap: var(--semantics-page-sections-md-gap);
16337
17350
  }
16338
17351
 
16339
- @media (min-width: ${lgMin$7}) {
17352
+ @media (min-width: ${lgMin$8}) {
16340
17353
  gap: var(--semantics-page-sections-lg-gap);
16341
17354
  }
16342
17355
 
16343
- @container layout-area (max-width: ${smMax$8}) {
17356
+ @container layout-area (max-width: ${smMax$9}) {
16344
17357
  gap: var(--semantics-page-sections-sm-gap);
16345
17358
  }
16346
17359
 
16347
- @container layout-area (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
17360
+ @container layout-area (min-width: ${mdMin$a}) and (max-width: ${mdMax$6}) {
16348
17361
  gap: var(--semantics-page-sections-md-gap);
16349
17362
  }
16350
17363
 
16351
- @container layout-area (min-width: ${lgMin$7}) {
17364
+ @container layout-area (min-width: ${lgMin$8}) {
16352
17365
  gap: var(--semantics-page-sections-lg-gap);
16353
17366
  }
16354
17367
  }
@@ -16417,10 +17430,10 @@ __decorateClass$t([
16417
17430
  NLDDFullBleedSection = __decorateClass$t([
16418
17431
  customElement("nldd-full-bleed-section")
16419
17432
  ], NLDDFullBleedSection);
16420
- const smMax$7 = unsafeCSS(breakpoints.smMax);
16421
- const mdMin$8 = unsafeCSS(breakpoints.mdMin);
16422
- const mdMax$4 = unsafeCSS(breakpoints.mdMax);
16423
- const lgMin$6 = unsafeCSS(breakpoints.lgMin);
17433
+ const smMax$8 = unsafeCSS(breakpoints.smMax);
17434
+ const mdMin$9 = unsafeCSS(breakpoints.mdMin);
17435
+ const mdMax$5 = unsafeCSS(breakpoints.mdMax);
17436
+ const lgMin$7 = unsafeCSS(breakpoints.lgMin);
16424
17437
  const oneThirdTwoThirdsSectionStyles = css`
16425
17438
 
16426
17439
 
@@ -16456,32 +17469,32 @@ const oneThirdTwoThirdsSectionStyles = css`
16456
17469
  width: 100%;
16457
17470
  box-sizing: border-box;
16458
17471
 
16459
- @media (max-width: ${smMax$7}) {
17472
+ @media (max-width: ${smMax$8}) {
16460
17473
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16461
17474
  padding-block: var(--semantics-page-sections-sm-margin-block);
16462
17475
  }
16463
17476
 
16464
- @media (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
17477
+ @media (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
16465
17478
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16466
17479
  padding-block: var(--semantics-page-sections-md-margin-block);
16467
17480
  }
16468
17481
 
16469
- @media (min-width: ${lgMin$6}) {
17482
+ @media (min-width: ${lgMin$7}) {
16470
17483
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16471
17484
  padding-block: var(--semantics-page-sections-lg-margin-block);
16472
17485
  }
16473
17486
 
16474
- @container layout-area (max-width: ${smMax$7}) {
17487
+ @container layout-area (max-width: ${smMax$8}) {
16475
17488
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16476
17489
  padding-block: var(--semantics-page-sections-sm-margin-block);
16477
17490
  }
16478
17491
 
16479
- @container layout-area (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
17492
+ @container layout-area (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
16480
17493
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16481
17494
  padding-block: var(--semantics-page-sections-md-margin-block);
16482
17495
  }
16483
17496
 
16484
- @container layout-area (min-width: ${lgMin$6}) {
17497
+ @container layout-area (min-width: ${lgMin$7}) {
16485
17498
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16486
17499
  padding-block: var(--semantics-page-sections-lg-margin-block);
16487
17500
  }
@@ -16496,27 +17509,27 @@ const oneThirdTwoThirdsSectionStyles = css`
16496
17509
  width: 100%;
16497
17510
  max-width: var(--_max-width);
16498
17511
 
16499
- @media (max-width: ${smMax$7}) {
17512
+ @media (max-width: ${smMax$8}) {
16500
17513
  gap: var(--semantics-page-sections-sm-gap);
16501
17514
  }
16502
17515
 
16503
- @media (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
17516
+ @media (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
16504
17517
  gap: var(--semantics-page-sections-md-gap);
16505
17518
  }
16506
17519
 
16507
- @media (min-width: ${lgMin$6}) {
17520
+ @media (min-width: ${lgMin$7}) {
16508
17521
  gap: var(--semantics-page-sections-lg-gap);
16509
17522
  }
16510
17523
 
16511
- @container layout-area (max-width: ${smMax$7}) {
17524
+ @container layout-area (max-width: ${smMax$8}) {
16512
17525
  gap: var(--semantics-page-sections-sm-gap);
16513
17526
  }
16514
17527
 
16515
- @container layout-area (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
17528
+ @container layout-area (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
16516
17529
  gap: var(--semantics-page-sections-md-gap);
16517
17530
  }
16518
17531
 
16519
- @container layout-area (min-width: ${lgMin$6}) {
17532
+ @container layout-area (min-width: ${lgMin$7}) {
16520
17533
  gap: var(--semantics-page-sections-lg-gap);
16521
17534
  }
16522
17535
  }
@@ -16528,27 +17541,27 @@ const oneThirdTwoThirdsSectionStyles = css`
16528
17541
  display: flex;
16529
17542
  flex-wrap: wrap;
16530
17543
 
16531
- @media (max-width: ${smMax$7}) {
17544
+ @media (max-width: ${smMax$8}) {
16532
17545
  gap: var(--semantics-page-sections-sm-gap);
16533
17546
  }
16534
17547
 
16535
- @media (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
17548
+ @media (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
16536
17549
  gap: var(--semantics-page-sections-md-gap);
16537
17550
  }
16538
17551
 
16539
- @media (min-width: ${lgMin$6}) {
17552
+ @media (min-width: ${lgMin$7}) {
16540
17553
  gap: var(--semantics-page-sections-lg-gap);
16541
17554
  }
16542
17555
 
16543
- @container layout-area (max-width: ${smMax$7}) {
17556
+ @container layout-area (max-width: ${smMax$8}) {
16544
17557
  gap: var(--semantics-page-sections-sm-gap);
16545
17558
  }
16546
17559
 
16547
- @container layout-area (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
17560
+ @container layout-area (min-width: ${mdMin$9}) and (max-width: ${mdMax$5}) {
16548
17561
  gap: var(--semantics-page-sections-md-gap);
16549
17562
  }
16550
17563
 
16551
- @container layout-area (min-width: ${lgMin$6}) {
17564
+ @container layout-area (min-width: ${lgMin$7}) {
16552
17565
  gap: var(--semantics-page-sections-lg-gap);
16553
17566
  }
16554
17567
  }
@@ -16608,10 +17621,10 @@ __decorateClass$s([
16608
17621
  NLDDOneThirdTwoThirdsSection = __decorateClass$s([
16609
17622
  customElement("nldd-one-third-two-thirds-section")
16610
17623
  ], NLDDOneThirdTwoThirdsSection);
16611
- const smMax$6 = unsafeCSS(breakpoints.smMax);
16612
- const mdMin$7 = unsafeCSS(breakpoints.mdMin);
16613
- const mdMax$3 = unsafeCSS(breakpoints.mdMax);
16614
- const lgMin$5 = unsafeCSS(breakpoints.lgMin);
17624
+ const smMax$7 = unsafeCSS(breakpoints.smMax);
17625
+ const mdMin$8 = unsafeCSS(breakpoints.mdMin);
17626
+ const mdMax$4 = unsafeCSS(breakpoints.mdMax);
17627
+ const lgMin$6 = unsafeCSS(breakpoints.lgMin);
16615
17628
  const twoThirdsOneThirdSectionStyles = css`
16616
17629
 
16617
17630
 
@@ -16647,32 +17660,32 @@ const twoThirdsOneThirdSectionStyles = css`
16647
17660
  width: 100%;
16648
17661
  box-sizing: border-box;
16649
17662
 
16650
- @media (max-width: ${smMax$6}) {
17663
+ @media (max-width: ${smMax$7}) {
16651
17664
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16652
17665
  padding-block: var(--semantics-page-sections-sm-margin-block);
16653
17666
  }
16654
17667
 
16655
- @media (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
17668
+ @media (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
16656
17669
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16657
17670
  padding-block: var(--semantics-page-sections-md-margin-block);
16658
17671
  }
16659
17672
 
16660
- @media (min-width: ${lgMin$5}) {
17673
+ @media (min-width: ${lgMin$6}) {
16661
17674
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16662
17675
  padding-block: var(--semantics-page-sections-lg-margin-block);
16663
17676
  }
16664
17677
 
16665
- @container layout-area (max-width: ${smMax$6}) {
17678
+ @container layout-area (max-width: ${smMax$7}) {
16666
17679
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16667
17680
  padding-block: var(--semantics-page-sections-sm-margin-block);
16668
17681
  }
16669
17682
 
16670
- @container layout-area (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
17683
+ @container layout-area (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
16671
17684
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16672
17685
  padding-block: var(--semantics-page-sections-md-margin-block);
16673
17686
  }
16674
17687
 
16675
- @container layout-area (min-width: ${lgMin$5}) {
17688
+ @container layout-area (min-width: ${lgMin$6}) {
16676
17689
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16677
17690
  padding-block: var(--semantics-page-sections-lg-margin-block);
16678
17691
  }
@@ -16687,27 +17700,27 @@ const twoThirdsOneThirdSectionStyles = css`
16687
17700
  width: 100%;
16688
17701
  max-width: var(--_max-width);
16689
17702
 
16690
- @media (max-width: ${smMax$6}) {
17703
+ @media (max-width: ${smMax$7}) {
16691
17704
  gap: var(--semantics-page-sections-sm-gap);
16692
17705
  }
16693
17706
 
16694
- @media (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
17707
+ @media (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
16695
17708
  gap: var(--semantics-page-sections-md-gap);
16696
17709
  }
16697
17710
 
16698
- @media (min-width: ${lgMin$5}) {
17711
+ @media (min-width: ${lgMin$6}) {
16699
17712
  gap: var(--semantics-page-sections-lg-gap);
16700
17713
  }
16701
17714
 
16702
- @container layout-area (max-width: ${smMax$6}) {
17715
+ @container layout-area (max-width: ${smMax$7}) {
16703
17716
  gap: var(--semantics-page-sections-sm-gap);
16704
17717
  }
16705
17718
 
16706
- @container layout-area (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
17719
+ @container layout-area (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
16707
17720
  gap: var(--semantics-page-sections-md-gap);
16708
17721
  }
16709
17722
 
16710
- @container layout-area (min-width: ${lgMin$5}) {
17723
+ @container layout-area (min-width: ${lgMin$6}) {
16711
17724
  gap: var(--semantics-page-sections-lg-gap);
16712
17725
  }
16713
17726
  }
@@ -16719,27 +17732,27 @@ const twoThirdsOneThirdSectionStyles = css`
16719
17732
  display: flex;
16720
17733
  flex-wrap: wrap;
16721
17734
 
16722
- @media (max-width: ${smMax$6}) {
17735
+ @media (max-width: ${smMax$7}) {
16723
17736
  gap: var(--semantics-page-sections-sm-gap);
16724
17737
  }
16725
17738
 
16726
- @media (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
17739
+ @media (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
16727
17740
  gap: var(--semantics-page-sections-md-gap);
16728
17741
  }
16729
17742
 
16730
- @media (min-width: ${lgMin$5}) {
17743
+ @media (min-width: ${lgMin$6}) {
16731
17744
  gap: var(--semantics-page-sections-lg-gap);
16732
17745
  }
16733
17746
 
16734
- @container layout-area (max-width: ${smMax$6}) {
17747
+ @container layout-area (max-width: ${smMax$7}) {
16735
17748
  gap: var(--semantics-page-sections-sm-gap);
16736
17749
  }
16737
17750
 
16738
- @container layout-area (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
17751
+ @container layout-area (min-width: ${mdMin$8}) and (max-width: ${mdMax$4}) {
16739
17752
  gap: var(--semantics-page-sections-md-gap);
16740
17753
  }
16741
17754
 
16742
- @container layout-area (min-width: ${lgMin$5}) {
17755
+ @container layout-area (min-width: ${lgMin$6}) {
16743
17756
  gap: var(--semantics-page-sections-lg-gap);
16744
17757
  }
16745
17758
  }
@@ -16799,10 +17812,10 @@ __decorateClass$r([
16799
17812
  NLDDTwoThirdsOneThirdSection = __decorateClass$r([
16800
17813
  customElement("nldd-two-thirds-one-third-section")
16801
17814
  ], NLDDTwoThirdsOneThirdSection);
16802
- const smMax$5 = unsafeCSS(breakpoints.smMax);
16803
- const mdMin$6 = unsafeCSS(breakpoints.mdMin);
16804
- const mdMax$2 = unsafeCSS(breakpoints.mdMax);
16805
- const lgMin$4 = unsafeCSS(breakpoints.lgMin);
17815
+ const smMax$6 = unsafeCSS(breakpoints.smMax);
17816
+ const mdMin$7 = unsafeCSS(breakpoints.mdMin);
17817
+ const mdMax$3 = unsafeCSS(breakpoints.mdMax);
17818
+ const lgMin$5 = unsafeCSS(breakpoints.lgMin);
16806
17819
  const oneHalfOneHalfSectionStyles = css`
16807
17820
 
16808
17821
 
@@ -16838,32 +17851,32 @@ const oneHalfOneHalfSectionStyles = css`
16838
17851
  width: 100%;
16839
17852
  box-sizing: border-box;
16840
17853
 
16841
- @media (max-width: ${smMax$5}) {
17854
+ @media (max-width: ${smMax$6}) {
16842
17855
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16843
17856
  padding-block: var(--semantics-page-sections-sm-margin-block);
16844
17857
  }
16845
17858
 
16846
- @media (min-width: ${mdMin$6}) and (max-width: ${mdMax$2}) {
17859
+ @media (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
16847
17860
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16848
17861
  padding-block: var(--semantics-page-sections-md-margin-block);
16849
17862
  }
16850
17863
 
16851
- @media (min-width: ${lgMin$4}) {
17864
+ @media (min-width: ${lgMin$5}) {
16852
17865
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16853
17866
  padding-block: var(--semantics-page-sections-lg-margin-block);
16854
17867
  }
16855
17868
 
16856
- @container layout-area (max-width: ${smMax$5}) {
17869
+ @container layout-area (max-width: ${smMax$6}) {
16857
17870
  padding-inline: var(--semantics-page-sections-sm-margin-inline);
16858
17871
  padding-block: var(--semantics-page-sections-sm-margin-block);
16859
17872
  }
16860
17873
 
16861
- @container layout-area (min-width: ${mdMin$6}) and (max-width: ${mdMax$2}) {
17874
+ @container layout-area (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
16862
17875
  padding-inline: var(--semantics-page-sections-md-margin-inline);
16863
17876
  padding-block: var(--semantics-page-sections-md-margin-block);
16864
17877
  }
16865
17878
 
16866
- @container layout-area (min-width: ${lgMin$4}) {
17879
+ @container layout-area (min-width: ${lgMin$5}) {
16867
17880
  padding-inline: var(--semantics-page-sections-lg-margin-inline);
16868
17881
  padding-block: var(--semantics-page-sections-lg-margin-block);
16869
17882
  }
@@ -16878,27 +17891,27 @@ const oneHalfOneHalfSectionStyles = css`
16878
17891
  width: 100%;
16879
17892
  max-width: var(--_max-width);
16880
17893
 
16881
- @media (max-width: ${smMax$5}) {
17894
+ @media (max-width: ${smMax$6}) {
16882
17895
  gap: var(--semantics-page-sections-sm-gap);
16883
17896
  }
16884
17897
 
16885
- @media (min-width: ${mdMin$6}) and (max-width: ${mdMax$2}) {
17898
+ @media (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
16886
17899
  gap: var(--semantics-page-sections-md-gap);
16887
17900
  }
16888
17901
 
16889
- @media (min-width: ${lgMin$4}) {
17902
+ @media (min-width: ${lgMin$5}) {
16890
17903
  gap: var(--semantics-page-sections-lg-gap);
16891
17904
  }
16892
17905
 
16893
- @container layout-area (max-width: ${smMax$5}) {
17906
+ @container layout-area (max-width: ${smMax$6}) {
16894
17907
  gap: var(--semantics-page-sections-sm-gap);
16895
17908
  }
16896
17909
 
16897
- @container layout-area (min-width: ${mdMin$6}) and (max-width: ${mdMax$2}) {
17910
+ @container layout-area (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
16898
17911
  gap: var(--semantics-page-sections-md-gap);
16899
17912
  }
16900
17913
 
16901
- @container layout-area (min-width: ${lgMin$4}) {
17914
+ @container layout-area (min-width: ${lgMin$5}) {
16902
17915
  gap: var(--semantics-page-sections-lg-gap);
16903
17916
  }
16904
17917
  }
@@ -16910,27 +17923,27 @@ const oneHalfOneHalfSectionStyles = css`
16910
17923
  display: flex;
16911
17924
  flex-wrap: wrap;
16912
17925
 
16913
- @media (max-width: ${smMax$5}) {
17926
+ @media (max-width: ${smMax$6}) {
16914
17927
  gap: var(--semantics-page-sections-sm-gap);
16915
17928
  }
16916
17929
 
16917
- @media (min-width: ${mdMin$6}) and (max-width: ${mdMax$2}) {
17930
+ @media (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
16918
17931
  gap: var(--semantics-page-sections-md-gap);
16919
17932
  }
16920
17933
 
16921
- @media (min-width: ${lgMin$4}) {
17934
+ @media (min-width: ${lgMin$5}) {
16922
17935
  gap: var(--semantics-page-sections-lg-gap);
16923
17936
  }
16924
17937
 
16925
- @container layout-area (max-width: ${smMax$5}) {
17938
+ @container layout-area (max-width: ${smMax$6}) {
16926
17939
  gap: var(--semantics-page-sections-sm-gap);
16927
17940
  }
16928
17941
 
16929
- @container layout-area (min-width: ${mdMin$6}) and (max-width: ${mdMax$2}) {
17942
+ @container layout-area (min-width: ${mdMin$7}) and (max-width: ${mdMax$3}) {
16930
17943
  gap: var(--semantics-page-sections-md-gap);
16931
17944
  }
16932
17945
 
16933
- @container layout-area (min-width: ${lgMin$4}) {
17946
+ @container layout-area (min-width: ${lgMin$5}) {
16934
17947
  gap: var(--semantics-page-sections-lg-gap);
16935
17948
  }
16936
17949
  }
@@ -17156,8 +18169,8 @@ __decorateClass$o([
17156
18169
  NLDDCard = __decorateClass$o([
17157
18170
  customElement("nldd-card")
17158
18171
  ], NLDDCard);
17159
- const mdMin$5 = unsafeCSS(breakpoints.mdMin);
17160
- const lgMin$3 = unsafeCSS(breakpoints.lgMin);
18172
+ const mdMin$6 = unsafeCSS(breakpoints.mdMin);
18173
+ const lgMin$4 = unsafeCSS(breakpoints.lgMin);
17161
18174
  const collectionStyles = css`
17162
18175
 
17163
18176
 
@@ -17171,11 +18184,11 @@ const collectionStyles = css`
17171
18184
  gap: var(--components-collection-sm-gap);
17172
18185
  --_item-width: var(--primitives-area-280);
17173
18186
 
17174
- @media (min-width: ${mdMin$5}) {
18187
+ @media (min-width: ${mdMin$6}) {
17175
18188
  gap: var(--components-collection-md-gap);
17176
18189
  }
17177
18190
 
17178
- @media (min-width: ${lgMin$3}) {
18191
+ @media (min-width: ${lgMin$4}) {
17179
18192
  gap: var(--components-collection-lg-gap);
17180
18193
  }
17181
18194
  }
@@ -17192,11 +18205,11 @@ const collectionStyles = css`
17192
18205
  width: 100%;
17193
18206
  gap: var(--components-collection-sm-gap);
17194
18207
 
17195
- @media (min-width: ${mdMin$5}) {
18208
+ @media (min-width: ${mdMin$6}) {
17196
18209
  gap: var(--components-collection-md-gap);
17197
18210
  }
17198
18211
 
17199
- @media (min-width: ${lgMin$3}) {
18212
+ @media (min-width: ${lgMin$4}) {
17200
18213
  gap: var(--components-collection-lg-gap);
17201
18214
  }
17202
18215
  }
@@ -17494,14 +18507,22 @@ __decorateClass$n([
17494
18507
  NLDDCollection = __decorateClass$n([
17495
18508
  customElement("nldd-collection")
17496
18509
  ], NLDDCollection);
18510
+ const smMax$5 = unsafeCSS(breakpoints.smMax);
18511
+ const mdMin$5 = unsafeCSS(breakpoints.mdMin);
18512
+ const mdMax$2 = unsafeCSS(breakpoints.mdMax);
18513
+ const lgMin$3 = unsafeCSS(breakpoints.lgMin);
17497
18514
  const spacerStyles = css`
17498
18515
 
17499
18516
 
17500
18517
  /* # Host */
17501
18518
 
17502
18519
  :host {
18520
+ --_size: var(--primitives-space-16);
18521
+
17503
18522
  display: block;
17504
18523
  flex-shrink: 0;
18524
+ width: var(--_size);
18525
+ height: var(--_size);
17505
18526
  }
17506
18527
 
17507
18528
  :host([hidden]) {
@@ -17509,142 +18530,181 @@ const spacerStyles = css`
17509
18530
  }
17510
18531
 
17511
18532
 
17512
- /* # Flexible and responsive */
17513
-
17514
- :host([size='flexible']) {
17515
- flex: 1;
17516
- min-width: 0;
17517
- min-height: 0;
17518
- }
17519
-
17520
- :host([size='md']) {
17521
- width: var(--primitives-space-16);
17522
- height: var(--primitives-space-16);
17523
-
17524
- @media (min-width: ${unsafeCSS(breakpoints.smMax)}) {
17525
- width: var(--primitives-space-24);
17526
- height: var(--primitives-space-24);
17527
- }
17528
- }
17529
-
17530
-
17531
- /* # Fixed sizes */
18533
+ /* # Direction */
17532
18534
 
17533
- :host([size='2']) {
17534
- width: var(--primitives-space-2);
17535
- height: var(--primitives-space-2);
18535
+ :host([direction="horizontal"]) {
18536
+ height: auto;
17536
18537
  }
17537
18538
 
17538
- :host([size='4']) {
17539
- width: var(--primitives-space-4);
17540
- height: var(--primitives-space-4);
18539
+ :host([direction="vertical"]) {
18540
+ width: auto;
17541
18541
  }
17542
18542
 
17543
- :host([size='6']) {
17544
- width: var(--primitives-space-6);
17545
- height: var(--primitives-space-6);
17546
- }
17547
18543
 
17548
- :host([size='16']),
17549
- :host(:not([size])) {
17550
- width: var(--primitives-space-16);
17551
- height: var(--primitives-space-16);
17552
- }
18544
+ /* # Size — applies at every breakpoint */
17553
18545
 
17554
- :host([size='8']) {
17555
- width: var(--primitives-space-8);
17556
- height: var(--primitives-space-8);
17557
- }
18546
+ :host([size="2"]) { --_size: var(--primitives-space-2); }
18547
+ :host([size="4"]) { --_size: var(--primitives-space-4); }
18548
+ :host([size="6"]) { --_size: var(--primitives-space-6); }
18549
+ :host([size="8"]) { --_size: var(--primitives-space-8); }
18550
+ :host([size="10"]) { --_size: var(--primitives-space-10); }
18551
+ :host([size="12"]) { --_size: var(--primitives-space-12); }
18552
+ :host([size="16"]) { --_size: var(--primitives-space-16); }
18553
+ :host([size="20"]) { --_size: var(--primitives-space-20); }
18554
+ :host([size="24"]) { --_size: var(--primitives-space-24); }
18555
+ :host([size="28"]) { --_size: var(--primitives-space-28); }
18556
+ :host([size="32"]) { --_size: var(--primitives-space-32); }
18557
+ :host([size="40"]) { --_size: var(--primitives-space-40); }
18558
+ :host([size="44"]) { --_size: var(--primitives-space-44); }
18559
+ :host([size="48"]) { --_size: var(--primitives-space-48); }
18560
+ :host([size="56"]) { --_size: var(--primitives-space-56); }
18561
+ :host([size="64"]) { --_size: var(--primitives-space-64); }
18562
+ :host([size="80"]) { --_size: var(--primitives-space-80); }
18563
+ :host([size="96"]) { --_size: var(--primitives-space-96); }
17558
18564
 
17559
- :host([size='10']) {
17560
- width: var(--primitives-space-10);
17561
- height: var(--primitives-space-10);
17562
- }
18565
+ /* ## Size: flexible — takes all remaining space in the flex parent */
17563
18566
 
17564
- :host([size='12']) {
17565
- width: var(--primitives-space-12);
17566
- height: var(--primitives-space-12);
18567
+ :host([size="flexible"]) {
18568
+ flex: 1;
18569
+ min-width: 0;
18570
+ min-height: 0;
18571
+ width: auto;
18572
+ height: auto;
17567
18573
  }
17568
18574
 
17569
- :host([size='16']) {
17570
- width: var(--primitives-space-16);
17571
- height: var(--primitives-space-16);
18575
+ :host([size="flexible"][direction="horizontal"]) {
18576
+ min-height: auto;
17572
18577
  }
17573
18578
 
17574
- :host([size='20']) {
17575
- width: var(--primitives-space-20);
17576
- height: var(--primitives-space-20);
18579
+ :host([size="flexible"][direction="vertical"]) {
18580
+ min-width: auto;
17577
18581
  }
17578
18582
 
17579
- :host([size='24']) {
17580
- width: var(--primitives-space-24);
17581
- height: var(--primitives-space-24);
17582
- }
17583
18583
 
17584
- :host([size='28']) {
17585
- width: var(--primitives-space-28);
17586
- height: var(--primitives-space-28);
17587
- }
18584
+ /* # Per-viewport size overrides
18585
+ *
18586
+ * Each per-breakpoint attribute (sm-size / md-size / lg-size) sets the
18587
+ * same --_size local var inside its respective @media query, so it wins
18588
+ * over the base [size] selector at that breakpoint via cascade source
18589
+ * order. If only [size] is set, --_size keeps the base value across all
18590
+ * breakpoints.
18591
+ */
17588
18592
 
17589
- :host([size='32']) {
17590
- width: var(--primitives-space-32);
17591
- height: var(--primitives-space-32);
17592
- }
18593
+ /* ## sm: max-width 640px */
18594
+
18595
+ @media (max-width: ${smMax$5}) {
18596
+ :host([sm-size="2"]) { --_size: var(--primitives-space-2); }
18597
+ :host([sm-size="4"]) { --_size: var(--primitives-space-4); }
18598
+ :host([sm-size="6"]) { --_size: var(--primitives-space-6); }
18599
+ :host([sm-size="8"]) { --_size: var(--primitives-space-8); }
18600
+ :host([sm-size="10"]) { --_size: var(--primitives-space-10); }
18601
+ :host([sm-size="12"]) { --_size: var(--primitives-space-12); }
18602
+ :host([sm-size="16"]) { --_size: var(--primitives-space-16); }
18603
+ :host([sm-size="20"]) { --_size: var(--primitives-space-20); }
18604
+ :host([sm-size="24"]) { --_size: var(--primitives-space-24); }
18605
+ :host([sm-size="28"]) { --_size: var(--primitives-space-28); }
18606
+ :host([sm-size="32"]) { --_size: var(--primitives-space-32); }
18607
+ :host([sm-size="40"]) { --_size: var(--primitives-space-40); }
18608
+ :host([sm-size="44"]) { --_size: var(--primitives-space-44); }
18609
+ :host([sm-size="48"]) { --_size: var(--primitives-space-48); }
18610
+ :host([sm-size="56"]) { --_size: var(--primitives-space-56); }
18611
+ :host([sm-size="64"]) { --_size: var(--primitives-space-64); }
18612
+ :host([sm-size="80"]) { --_size: var(--primitives-space-80); }
18613
+ :host([sm-size="96"]) { --_size: var(--primitives-space-96); }
18614
+
18615
+ :host([sm-size="flexible"]) {
18616
+ flex: 1;
18617
+ min-width: 0;
18618
+ min-height: 0;
18619
+ width: auto;
18620
+ height: auto;
18621
+ }
17593
18622
 
17594
- :host([size='40']) {
17595
- width: var(--primitives-space-40);
17596
- height: var(--primitives-space-40);
17597
- }
18623
+ :host([sm-size="flexible"][direction="horizontal"]) {
18624
+ min-height: auto;
18625
+ }
17598
18626
 
17599
- :host([size='44']) {
17600
- width: var(--primitives-space-44);
17601
- height: var(--primitives-space-44);
18627
+ :host([sm-size="flexible"][direction="vertical"]) {
18628
+ min-width: auto;
18629
+ }
17602
18630
  }
17603
18631
 
17604
- :host([size='48']) {
17605
- width: var(--primitives-space-48);
17606
- height: var(--primitives-space-48);
17607
- }
18632
+ /* ## md: 641px–1007px */
17608
18633
 
17609
- :host([size='56']) {
17610
- width: var(--primitives-space-56);
17611
- height: var(--primitives-space-56);
17612
- }
18634
+ @media (min-width: ${mdMin$5}) and (max-width: ${mdMax$2}) {
18635
+ :host([md-size="2"]) { --_size: var(--primitives-space-2); }
18636
+ :host([md-size="4"]) { --_size: var(--primitives-space-4); }
18637
+ :host([md-size="6"]) { --_size: var(--primitives-space-6); }
18638
+ :host([md-size="8"]) { --_size: var(--primitives-space-8); }
18639
+ :host([md-size="10"]) { --_size: var(--primitives-space-10); }
18640
+ :host([md-size="12"]) { --_size: var(--primitives-space-12); }
18641
+ :host([md-size="16"]) { --_size: var(--primitives-space-16); }
18642
+ :host([md-size="20"]) { --_size: var(--primitives-space-20); }
18643
+ :host([md-size="24"]) { --_size: var(--primitives-space-24); }
18644
+ :host([md-size="28"]) { --_size: var(--primitives-space-28); }
18645
+ :host([md-size="32"]) { --_size: var(--primitives-space-32); }
18646
+ :host([md-size="40"]) { --_size: var(--primitives-space-40); }
18647
+ :host([md-size="44"]) { --_size: var(--primitives-space-44); }
18648
+ :host([md-size="48"]) { --_size: var(--primitives-space-48); }
18649
+ :host([md-size="56"]) { --_size: var(--primitives-space-56); }
18650
+ :host([md-size="64"]) { --_size: var(--primitives-space-64); }
18651
+ :host([md-size="80"]) { --_size: var(--primitives-space-80); }
18652
+ :host([md-size="96"]) { --_size: var(--primitives-space-96); }
17613
18653
 
17614
- :host([size='64']) {
17615
- width: var(--primitives-space-64);
17616
- height: var(--primitives-space-64);
17617
- }
18654
+ :host([md-size="flexible"]) {
18655
+ flex: 1;
18656
+ min-width: 0;
18657
+ min-height: 0;
18658
+ width: auto;
18659
+ height: auto;
18660
+ }
17618
18661
 
17619
- :host([size='80']) {
17620
- width: var(--primitives-space-80);
17621
- height: var(--primitives-space-80);
17622
- }
18662
+ :host([md-size="flexible"][direction="horizontal"]) {
18663
+ min-height: auto;
18664
+ }
17623
18665
 
17624
- :host([size='96']) {
17625
- width: var(--primitives-space-96);
17626
- height: var(--primitives-space-96);
18666
+ :host([md-size="flexible"][direction="vertical"]) {
18667
+ min-width: auto;
18668
+ }
17627
18669
  }
17628
18670
 
18671
+ /* ## lg: min-width 1008px */
17629
18672
 
17630
- /* # Direction modifiers */
17631
-
17632
- :host([direction='horizontal']) {
17633
- height: auto;
17634
- }
18673
+ @media (min-width: ${lgMin$3}) {
18674
+ :host([lg-size="2"]) { --_size: var(--primitives-space-2); }
18675
+ :host([lg-size="4"]) { --_size: var(--primitives-space-4); }
18676
+ :host([lg-size="6"]) { --_size: var(--primitives-space-6); }
18677
+ :host([lg-size="8"]) { --_size: var(--primitives-space-8); }
18678
+ :host([lg-size="10"]) { --_size: var(--primitives-space-10); }
18679
+ :host([lg-size="12"]) { --_size: var(--primitives-space-12); }
18680
+ :host([lg-size="16"]) { --_size: var(--primitives-space-16); }
18681
+ :host([lg-size="20"]) { --_size: var(--primitives-space-20); }
18682
+ :host([lg-size="24"]) { --_size: var(--primitives-space-24); }
18683
+ :host([lg-size="28"]) { --_size: var(--primitives-space-28); }
18684
+ :host([lg-size="32"]) { --_size: var(--primitives-space-32); }
18685
+ :host([lg-size="40"]) { --_size: var(--primitives-space-40); }
18686
+ :host([lg-size="44"]) { --_size: var(--primitives-space-44); }
18687
+ :host([lg-size="48"]) { --_size: var(--primitives-space-48); }
18688
+ :host([lg-size="56"]) { --_size: var(--primitives-space-56); }
18689
+ :host([lg-size="64"]) { --_size: var(--primitives-space-64); }
18690
+ :host([lg-size="80"]) { --_size: var(--primitives-space-80); }
18691
+ :host([lg-size="96"]) { --_size: var(--primitives-space-96); }
17635
18692
 
17636
- :host([direction='vertical']) {
17637
- width: auto;
17638
- }
18693
+ :host([lg-size="flexible"]) {
18694
+ flex: 1;
18695
+ min-width: 0;
18696
+ min-height: 0;
18697
+ width: auto;
18698
+ height: auto;
18699
+ }
17639
18700
 
17640
- :host([size='flexible'][direction='horizontal']) {
17641
- height: auto;
17642
- min-height: auto;
17643
- }
18701
+ :host([lg-size="flexible"][direction="horizontal"]) {
18702
+ min-height: auto;
18703
+ }
17644
18704
 
17645
- :host([size='flexible'][direction='vertical']) {
17646
- width: auto;
17647
- min-width: auto;
18705
+ :host([lg-size="flexible"][direction="vertical"]) {
18706
+ min-width: auto;
18707
+ }
17648
18708
  }
17649
18709
  `;
17650
18710
  var __defProp$l = Object.defineProperty;
@@ -17668,6 +18728,15 @@ NLDDSpacer.styles = spacerStyles;
17668
18728
  __decorateClass$m([
17669
18729
  property({ type: String, reflect: true })
17670
18730
  ], NLDDSpacer.prototype, "size", 2);
18731
+ __decorateClass$m([
18732
+ property({ type: String, reflect: true, attribute: "sm-size" })
18733
+ ], NLDDSpacer.prototype, "smSize", 2);
18734
+ __decorateClass$m([
18735
+ property({ type: String, reflect: true, attribute: "md-size" })
18736
+ ], NLDDSpacer.prototype, "mdSize", 2);
18737
+ __decorateClass$m([
18738
+ property({ type: String, reflect: true, attribute: "lg-size" })
18739
+ ], NLDDSpacer.prototype, "lgSize", 2);
17671
18740
  __decorateClass$m([
17672
18741
  property({ type: String, reflect: true })
17673
18742
  ], NLDDSpacer.prototype, "direction", 2);
@@ -20961,7 +22030,7 @@ const listItemStyles = css`
20961
22030
  }
20962
22031
 
20963
22032
  :host(.is-dragging) {
20964
- opacity: var(--components-list-item-is-dragging-opacity);
22033
+ opacity: var(--semantics-controls-is-dragging-opacity);
20965
22034
  }
20966
22035
 
20967
22036
  :host(.is-dragging-pointer) {
@@ -21334,6 +22403,13 @@ let NLDDListItem = class extends LitElement {
21334
22403
  const slot = this.shadowRoot?.querySelector('slot[name="end"]');
21335
22404
  slot?.addEventListener("slotchange", () => this._updateVisibility());
21336
22405
  }
22406
+ /**
22407
+ * Delegates focus to the inner `.list-item__action` (the button or anchor),
22408
+ * so consumers can call `listItemEl.focus()` without reaching into shadow DOM.
22409
+ */
22410
+ focus(options) {
22411
+ this._action?.focus(options);
22412
+ }
21337
22413
  render() {
21338
22414
  return template$9(
21339
22415
  this.type,
@@ -21616,6 +22692,7 @@ const titleCellStyles = css`
21616
22692
  margin: 0;
21617
22693
  align-self: stretch;
21618
22694
  min-width: 0;
22695
+ overflow-wrap: anywhere;
21619
22696
  font: var(--primitives-font-body-xs-regular-tight);
21620
22697
  color: var(--context-cell-content-color, var(--semantics-content-secondary-color));
21621
22698
  }
@@ -21631,6 +22708,7 @@ const titleCellStyles = css`
21631
22708
  margin: 0;
21632
22709
  align-self: stretch;
21633
22710
  min-width: 0;
22711
+ overflow-wrap: break-word;
21634
22712
  color: var(--context-cell-content-color, var(--semantics-content-color));
21635
22713
  text-wrap: pretty;
21636
22714
  }
@@ -21683,6 +22761,7 @@ const titleCellStyles = css`
21683
22761
  margin: 0;
21684
22762
  align-self: stretch;
21685
22763
  min-width: 0;
22764
+ overflow-wrap: anywhere;
21686
22765
  font: var(--primitives-font-body-sm-regular-tight);
21687
22766
  color: var(--context-cell-content-color, var(--semantics-content-secondary-color));
21688
22767
  }
@@ -21692,12 +22771,52 @@ const titleCellStyles = css`
21692
22771
  }
21693
22772
 
21694
22773
 
21695
- /* # Color: inherit */
22774
+ /* # Color */
22775
+
22776
+ /* ## Color: secondary
22777
+ *
22778
+ * Overline and supporting-text are already muted by default, so we only
22779
+ * demote the title to make the whole cell read as secondary.
22780
+ */
21696
22781
 
21697
- :host([color='inherit']) .title-cell__title,
21698
- :host([color='inherit']) .title-cell__overline,
21699
- :host([color='inherit']) .title-cell__supporting-text {
21700
- color: inherit;
22782
+ :host([color='secondary']) .title-cell__title {
22783
+ color: var(--context-cell-content-secondary-color, var(--semantics-content-secondary-color));
22784
+ }
22785
+
22786
+ /* ## Color: accent
22787
+ *
22788
+ * Applies to all three text regions so the cell reads as a coherent
22789
+ * highlight, not a mix of accent + muted overline / supporting-text.
22790
+ */
22791
+
22792
+ :host([color='accent']) .title-cell__title,
22793
+ :host([color='accent']) .title-cell__overline,
22794
+ :host([color='accent']) .title-cell__supporting-text {
22795
+ color: var(--context-cell-content-accent-color, var(--semantics-content-accent-color));
22796
+ }
22797
+
22798
+ /* ## Color: success */
22799
+
22800
+ :host([color='success']) .title-cell__title,
22801
+ :host([color='success']) .title-cell__overline,
22802
+ :host([color='success']) .title-cell__supporting-text {
22803
+ color: var(--context-cell-content-success-color, var(--semantics-content-success-color));
22804
+ }
22805
+
22806
+ /* ## Color: warning */
22807
+
22808
+ :host([color='warning']) .title-cell__title,
22809
+ :host([color='warning']) .title-cell__overline,
22810
+ :host([color='warning']) .title-cell__supporting-text {
22811
+ color: var(--context-cell-content-warning-color, var(--semantics-content-warning-color));
22812
+ }
22813
+
22814
+ /* ## Color: critical */
22815
+
22816
+ :host([color='critical']) .title-cell__title,
22817
+ :host([color='critical']) .title-cell__overline,
22818
+ :host([color='critical']) .title-cell__supporting-text {
22819
+ color: var(--context-cell-content-critical-color, var(--semantics-content-critical-color));
21701
22820
  }
21702
22821
 
21703
22822
 
@@ -21718,19 +22837,37 @@ const HEADING_TAGS = {
21718
22837
  6: unsafeStatic("h6")
21719
22838
  };
21720
22839
  function renderTitle(component) {
21721
- if (!component.text) return nothing;
21722
- const rendered = renderQueryMark(component.text, component.query, component.queryMarkMode);
22840
+ const fallback = component.text && !component._hasDefaultSlotted ? renderQueryMark(component.text, component.query, component.queryMarkMode) : nothing;
22841
+ const isHidden = !component.text && !component._hasDefaultSlotted;
21723
22842
  const tag = HEADING_TAGS[component.headingLevel];
21724
22843
  if (tag) {
21725
- return html$1`<${tag} class="title-cell__title">${rendered}</${tag}>`;
21726
- }
21727
- return html`<p class="title-cell__title">${rendered}</p>`;
22844
+ return html$1`<${tag}
22845
+ class="title-cell__title"
22846
+ ?hidden=${isHidden}
22847
+ >${fallback}<slot @slotchange=${component._onSlotChange}></slot></${tag}>`;
22848
+ }
22849
+ return html`<p
22850
+ class="title-cell__title"
22851
+ ?hidden=${isHidden}
22852
+ >${fallback}<slot @slotchange=${component._onSlotChange}></slot></p>`;
21728
22853
  }
21729
22854
  const template$7 = function() {
21730
22855
  return html`
21731
- ${this.overline ? html`<p class="title-cell__overline">${renderQueryMark(this.overline, this.query, this.queryMarkMode)}</p>` : nothing}
22856
+ <p
22857
+ class="title-cell__overline"
22858
+ ?hidden=${!this.overline && !this._hasOverlineSlotted}
22859
+ >
22860
+ ${this.overline && !this._hasOverlineSlotted ? renderQueryMark(this.overline, this.query, this.queryMarkMode) : nothing}
22861
+ <slot name="overline" @slotchange=${this._onSlotChange}></slot>
22862
+ </p>
21732
22863
  ${renderTitle(this)}
21733
- ${this.supportingText ? html`<p class="title-cell__supporting-text">${renderQueryMark(this.supportingText, this.query, this.queryMarkMode)}</p>` : nothing}
22864
+ <p
22865
+ class="title-cell__supporting-text"
22866
+ ?hidden=${!this.supportingText && !this._hasSupportingTextSlotted}
22867
+ >
22868
+ ${this.supportingText && !this._hasSupportingTextSlotted ? renderQueryMark(this.supportingText, this.query, this.queryMarkMode) : nothing}
22869
+ <slot name="supporting-text" @slotchange=${this._onSlotChange}></slot>
22870
+ </p>
21734
22871
  `;
21735
22872
  };
21736
22873
  var __defProp$d = Object.defineProperty;
@@ -21757,6 +22894,29 @@ let NLDDTitleCell = class extends VisibilityMixin(LitElement) {
21757
22894
  this.headingLevel = void 0;
21758
22895
  this.query = "";
21759
22896
  this.queryMarkMode = "predictive";
22897
+ this._hasOverlineSlotted = false;
22898
+ this._hasDefaultSlotted = false;
22899
+ this._hasSupportingTextSlotted = false;
22900
+ this._onSlotChange = (e) => {
22901
+ const slot = e.target;
22902
+ const hasContent = slot.assignedNodes().some((node) => {
22903
+ if (node.nodeType === Node.TEXT_NODE) {
22904
+ return (node.textContent ?? "").trim().length > 0;
22905
+ }
22906
+ return node.nodeType === Node.ELEMENT_NODE;
22907
+ });
22908
+ switch (slot.name) {
22909
+ case "overline":
22910
+ this._hasOverlineSlotted = hasContent;
22911
+ break;
22912
+ case "supporting-text":
22913
+ this._hasSupportingTextSlotted = hasContent;
22914
+ break;
22915
+ default:
22916
+ this._hasDefaultSlotted = hasContent;
22917
+ break;
22918
+ }
22919
+ };
21760
22920
  }
21761
22921
  updated(changed) {
21762
22922
  super.updated(changed);
@@ -21834,6 +22994,15 @@ __decorateClass$d([
21834
22994
  __decorateClass$d([
21835
22995
  property({ type: String, attribute: "query-mark-mode" })
21836
22996
  ], NLDDTitleCell.prototype, "queryMarkMode", 2);
22997
+ __decorateClass$d([
22998
+ state()
22999
+ ], NLDDTitleCell.prototype, "_hasOverlineSlotted", 2);
23000
+ __decorateClass$d([
23001
+ state()
23002
+ ], NLDDTitleCell.prototype, "_hasDefaultSlotted", 2);
23003
+ __decorateClass$d([
23004
+ state()
23005
+ ], NLDDTitleCell.prototype, "_hasSupportingTextSlotted", 2);
21837
23006
  NLDDTitleCell = __decorateClass$d([
21838
23007
  customElement("nldd-title-cell")
21839
23008
  ], NLDDTitleCell);
@@ -24870,7 +26039,7 @@ const documentTabBarStyles = css`
24870
26039
  flex-shrink: 1;
24871
26040
  flex-basis: 0;
24872
26041
  min-width: var(--_item-min-width);
24873
- opacity: var(--primitives-opacity-dragging);
26042
+ opacity: var(--semantics-controls-is-dragging-opacity);
24874
26043
  }
24875
26044
 
24876
26045
 
@@ -26266,7 +27435,7 @@ function paginationTemplate(component) {
26266
27435
  `)}
26267
27436
  </select>
26268
27437
  <div class="pagination__select-picker-icon">
26269
- <nldd-icon name="chevron-up-down"></nldd-icon>
27438
+ <nldd-icon name="chevron-up-chevron-down"></nldd-icon>
26270
27439
  </div>
26271
27440
  </div>
26272
27441
  </div>
@@ -26682,6 +27851,7 @@ const badgeStyles = css`
26682
27851
  background-color: var(--_background-color);
26683
27852
  color: var(--_content-color);
26684
27853
  border-radius: var(--components-badge-corner-radius);
27854
+ box-shadow: 0 0 0 1px var(--context-parent-background-color, var(--semantics-surfaces-background-color));
26685
27855
  white-space: nowrap;
26686
27856
  font: var(--_font);
26687
27857
  }