@nldd/design-system 0.8.74 → 0.8.75

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 (265) hide show
  1. package/README.md +6 -1
  2. package/custom-elements.json +74 -1
  3. package/dist/assets/styles/{style-resets.d.ts → shadow-resets.d.ts} +1 -1
  4. package/dist/assets/styles/shadow-resets.d.ts.map +1 -0
  5. package/dist/assets/styles/{style-resets.fixtures.d.ts → shadow-resets.fixtures.d.ts} +4 -4
  6. package/dist/assets/styles/shadow-resets.fixtures.d.ts.map +1 -0
  7. package/dist/assets/styles/{style-resets.fixtures.js → shadow-resets.fixtures.js} +4 -4
  8. package/dist/assets/styles/shadow-resets.fixtures.js.map +1 -0
  9. package/dist/assets/styles/{style-resets.js → shadow-resets.js} +1 -1
  10. package/dist/assets/styles/shadow-resets.js.map +1 -0
  11. package/dist/components/actions/button/button.styles.js +1 -1
  12. package/dist/components/actions/button/button.styles.js.map +1 -1
  13. package/dist/components/actions/icon-button/icon-button.styles.js +1 -1
  14. package/dist/components/actions/icon-button/icon-button.styles.js.map +1 -1
  15. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  16. package/dist/components/actions/menu/menu.styles.js +18 -15
  17. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  18. package/dist/components/actions/menu/menu.template.d.ts.map +1 -1
  19. package/dist/components/actions/menu/menu.template.js +11 -9
  20. package/dist/components/actions/menu/menu.template.js.map +1 -1
  21. package/dist/components/actions/split-button/split-button.styles.js +1 -1
  22. package/dist/components/actions/split-button/split-button.styles.js.map +1 -1
  23. package/dist/components/actions/toolbar/toolbar.styles.js +1 -1
  24. package/dist/components/actions/toolbar/toolbar.styles.js.map +1 -1
  25. package/dist/components/components.js +1 -1
  26. package/dist/components/content/avatar/avatar.styles.js +1 -1
  27. package/dist/components/content/avatar/avatar.styles.js.map +1 -1
  28. package/dist/components/content/blockquote/blockquote.styles.js +1 -1
  29. package/dist/components/content/blockquote/blockquote.styles.js.map +1 -1
  30. package/dist/components/content/byline/byline.styles.js +1 -1
  31. package/dist/components/content/byline/byline.styles.js.map +1 -1
  32. package/dist/components/content/code-viewer/code-viewer.styles.js +1 -1
  33. package/dist/components/content/code-viewer/code-viewer.styles.js.map +1 -1
  34. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  35. package/dist/components/content/icon/icon-aliases.js +4 -0
  36. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  37. package/dist/components/content/icon/icon-gallery-status.d.ts.map +1 -1
  38. package/dist/components/content/icon/icon-gallery-status.js +3 -0
  39. package/dist/components/content/icon/icon-gallery-status.js.map +1 -1
  40. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  41. package/dist/components/content/icon/icon-registry.js +3 -0
  42. package/dist/components/content/icon/icon-registry.js.map +1 -1
  43. package/dist/components/content/image/image.styles.js +1 -1
  44. package/dist/components/content/image/image.styles.js.map +1 -1
  45. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js +1 -1
  46. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js.map +1 -1
  47. package/dist/components/content/tag/tag.styles.js +1 -1
  48. package/dist/components/content/tag/tag.styles.js.map +1 -1
  49. package/dist/components/content/title/title.styles.d.ts.map +1 -1
  50. package/dist/components/content/title/title.styles.js +10 -2
  51. package/dist/components/content/title/title.styles.js.map +1 -1
  52. package/dist/components/content/token/token.styles.js +1 -1
  53. package/dist/components/content/token/token.styles.js.map +1 -1
  54. package/dist/components/content/tooltip/tooltip.d.ts +1 -0
  55. package/dist/components/content/tooltip/tooltip.d.ts.map +1 -1
  56. package/dist/components/content/tooltip/tooltip.js +20 -0
  57. package/dist/components/content/tooltip/tooltip.js.map +1 -1
  58. package/dist/components/content/tooltip/tooltip.styles.js +1 -1
  59. package/dist/components/content/tooltip/tooltip.styles.js.map +1 -1
  60. package/dist/components/content/tooltip/tooltip.template.d.ts.map +1 -1
  61. package/dist/components/content/tooltip/tooltip.template.js +7 -0
  62. package/dist/components/content/tooltip/tooltip.template.js.map +1 -1
  63. package/dist/components/forms/form-field/form-field.styles.js +1 -1
  64. package/dist/components/forms/form-field/form-field.styles.js.map +1 -1
  65. package/dist/components/{index-CAIa-ZY1.js → index-1g5lY4s4.js} +1 -1
  66. package/dist/components/{index-BBerWrN2.js → index-B9-cDD9g.js} +1 -1
  67. package/dist/components/{index-fjTBz8ya.js → index-D4R5KlwE.js} +1 -1
  68. package/dist/components/{index-CI0H6jWT.js → index-Da0Q2Sno.js} +513 -254
  69. package/dist/components/{index-CChmEZdd.js → index-VYDp-qXc.js} +1 -1
  70. package/dist/components/{index-73GOYriu.js → index-jJIyF1NB.js} +1 -1
  71. package/dist/components/{index-JawcAuAj.js → index-loncueHu.js} +1 -1
  72. package/dist/components/inputs/checkbox-field/checkbox-field.styles.js +1 -1
  73. package/dist/components/inputs/checkbox-field/checkbox-field.styles.js.map +1 -1
  74. package/dist/components/inputs/code-editor/code-editor.styles.js +1 -1
  75. package/dist/components/inputs/code-editor/code-editor.styles.js.map +1 -1
  76. package/dist/components/inputs/combo-box/combo-box.styles.js +1 -1
  77. package/dist/components/inputs/combo-box/combo-box.styles.js.map +1 -1
  78. package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -1
  79. package/dist/components/inputs/date-field/date-field.styles.js +1 -2
  80. package/dist/components/inputs/date-field/date-field.styles.js.map +1 -1
  81. package/dist/components/inputs/date-field/date-field.template.d.ts.map +1 -1
  82. package/dist/components/inputs/date-field/date-field.template.js +6 -0
  83. package/dist/components/inputs/date-field/date-field.template.js.map +1 -1
  84. package/dist/components/inputs/date-picker/date-picker.d.ts +23 -2
  85. package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -1
  86. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts +1 -0
  87. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts.map +1 -1
  88. package/dist/components/inputs/date-picker/date-picker.i18n.js +1 -0
  89. package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -1
  90. package/dist/components/inputs/date-picker/date-picker.js +85 -25
  91. package/dist/components/inputs/date-picker/date-picker.js.map +1 -1
  92. package/dist/components/inputs/date-picker/date-picker.styles.d.ts.map +1 -1
  93. package/dist/components/inputs/date-picker/date-picker.styles.js +15 -4
  94. package/dist/components/inputs/date-picker/date-picker.styles.js.map +1 -1
  95. package/dist/components/inputs/date-picker/date-picker.template.d.ts.map +1 -1
  96. package/dist/components/inputs/date-picker/date-picker.template.js +77 -48
  97. package/dist/components/inputs/date-picker/date-picker.template.js.map +1 -1
  98. package/dist/components/inputs/dropdown/dropdown.styles.js +1 -1
  99. package/dist/components/inputs/dropdown/dropdown.styles.js.map +1 -1
  100. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js +1 -1
  101. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js.map +1 -1
  102. package/dist/components/inputs/number-field/number-field.styles.js +1 -1
  103. package/dist/components/inputs/number-field/number-field.styles.js.map +1 -1
  104. package/dist/components/inputs/password-field/password-field.styles.d.ts.map +1 -1
  105. package/dist/components/inputs/password-field/password-field.styles.js +1 -6
  106. package/dist/components/inputs/password-field/password-field.styles.js.map +1 -1
  107. package/dist/components/inputs/radio-button-field/radio-button-field.styles.js +1 -1
  108. package/dist/components/inputs/radio-button-field/radio-button-field.styles.js.map +1 -1
  109. package/dist/components/inputs/radio-button-group/radio-button-group.styles.js +1 -1
  110. package/dist/components/inputs/radio-button-group/radio-button-group.styles.js.map +1 -1
  111. package/dist/components/inputs/search-field/search-field.styles.js +1 -1
  112. package/dist/components/inputs/search-field/search-field.styles.js.map +1 -1
  113. package/dist/components/inputs/segmented-control/segmented-control.styles.js +1 -1
  114. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  115. package/dist/components/inputs/switch-field/switch-field.styles.js +1 -1
  116. package/dist/components/inputs/switch-field/switch-field.styles.js.map +1 -1
  117. package/dist/components/inputs/text-editor/text-editor.styles.js +1 -1
  118. package/dist/components/inputs/text-editor/text-editor.styles.js.map +1 -1
  119. package/dist/components/inputs/text-field/text-field.styles.js +1 -1
  120. package/dist/components/inputs/text-field/text-field.styles.js.map +1 -1
  121. package/dist/components/inputs/toggle-button/toggle-button.styles.js +1 -1
  122. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  123. package/dist/components/inputs/token-field/token-field.styles.js +1 -1
  124. package/dist/components/inputs/token-field/token-field.styles.js.map +1 -1
  125. package/dist/components/layout/card/card.d.ts +3 -0
  126. package/dist/components/layout/card/card.d.ts.map +1 -1
  127. package/dist/components/layout/card/card.js +6 -0
  128. package/dist/components/layout/card/card.js.map +1 -1
  129. package/dist/components/layout/card/card.styles.d.ts.map +1 -1
  130. package/dist/components/layout/card/card.styles.js +12 -2
  131. package/dist/components/layout/card/card.styles.js.map +1 -1
  132. package/dist/components/layout/collection/collection.d.ts +1 -0
  133. package/dist/components/layout/collection/collection.d.ts.map +1 -1
  134. package/dist/components/layout/collection/collection.js +54 -4
  135. package/dist/components/layout/collection/collection.js.map +1 -1
  136. package/dist/components/layout/container/container.styles.d.ts.map +1 -1
  137. package/dist/components/layout/container/container.styles.js +84 -70
  138. package/dist/components/layout/container/container.styles.js.map +1 -1
  139. package/dist/components/layout/container/container.template.d.ts.map +1 -1
  140. package/dist/components/layout/container/container.template.js +13 -5
  141. package/dist/components/layout/container/container.template.js.map +1 -1
  142. package/dist/components/layout/page-footer/page-footer.styles.js +1 -1
  143. package/dist/components/layout/page-footer/page-footer.styles.js.map +1 -1
  144. package/dist/components/layout/page-sections/hero/hero.styles.js +1 -1
  145. package/dist/components/layout/page-sections/hero/hero.styles.js.map +1 -1
  146. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  147. package/dist/components/layout/popover/popover.js +21 -8
  148. package/dist/components/layout/popover/popover.js.map +1 -1
  149. package/dist/components/layout/window/window.styles.js +1 -1
  150. package/dist/components/layout/window/window.styles.js.map +1 -1
  151. package/dist/components/lists-and-tables/cells/cell/cell.styles.d.ts.map +1 -1
  152. package/dist/components/lists-and-tables/cells/cell/cell.styles.js +3 -2
  153. package/dist/components/lists-and-tables/cells/cell/cell.styles.js.map +1 -1
  154. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.d.ts.map +1 -1
  155. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js +3 -2
  156. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js.map +1 -1
  157. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.d.ts.map +1 -1
  158. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.js +2 -1
  159. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.js.map +1 -1
  160. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.d.ts.map +1 -1
  161. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js +2 -1
  162. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js.map +1 -1
  163. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.d.ts.map +1 -1
  164. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js +3 -2
  165. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js.map +1 -1
  166. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts +7 -3
  167. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts.map +1 -1
  168. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js +4 -2
  169. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js.map +1 -1
  170. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.d.ts.map +1 -1
  171. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.js +2 -1
  172. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.js.map +1 -1
  173. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.d.ts.map +1 -1
  174. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js +3 -2
  175. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js.map +1 -1
  176. package/dist/components/lists-and-tables/list-item/list-item.d.ts +19 -6
  177. package/dist/components/lists-and-tables/list-item/list-item.d.ts.map +1 -1
  178. package/dist/components/lists-and-tables/list-item/list-item.js +30 -7
  179. package/dist/components/lists-and-tables/list-item/list-item.js.map +1 -1
  180. package/dist/components/lists-and-tables/list-item/list-item.styles.d.ts.map +1 -1
  181. package/dist/components/lists-and-tables/list-item/list-item.styles.js +4 -1
  182. package/dist/components/lists-and-tables/list-item/list-item.styles.js.map +1 -1
  183. package/dist/components/lists-and-tables/table/table.styles.d.ts.map +1 -1
  184. package/dist/components/lists-and-tables/table/table.styles.js +10 -4
  185. package/dist/components/lists-and-tables/table/table.styles.js.map +1 -1
  186. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.js +1 -1
  187. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.js.map +1 -1
  188. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +1 -1
  189. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js.map +1 -1
  190. package/dist/components/navigation/link/link.styles.js +1 -1
  191. package/dist/components/navigation/link/link.styles.js.map +1 -1
  192. package/dist/components/navigation/menu-bar/menu-bar.styles.js +1 -1
  193. package/dist/components/navigation/menu-bar/menu-bar.styles.js.map +1 -1
  194. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js +1 -1
  195. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js.map +1 -1
  196. package/dist/components/navigation/pagination/pagination.styles.js +1 -1
  197. package/dist/components/navigation/pagination/pagination.styles.js.map +1 -1
  198. package/dist/components/navigation/skip-link/skip-link.styles.js +1 -1
  199. package/dist/components/navigation/skip-link/skip-link.styles.js.map +1 -1
  200. package/dist/components/navigation/tab-bar/tab-bar.styles.js +1 -1
  201. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  202. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js +1 -1
  203. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js.map +1 -1
  204. package/dist/components/navigation/top-title-bar/top-title-bar.styles.js +1 -1
  205. package/dist/components/navigation/top-title-bar/top-title-bar.styles.js.map +1 -1
  206. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +1 -1
  207. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js.map +1 -1
  208. package/dist/components/status-and-feedback/badge/badge.styles.js +1 -1
  209. package/dist/components/status-and-feedback/badge/badge.styles.js.map +1 -1
  210. package/dist/components/status-and-feedback/banner/banner.styles.d.ts.map +1 -1
  211. package/dist/components/status-and-feedback/banner/banner.styles.js +26 -16
  212. package/dist/components/status-and-feedback/banner/banner.styles.js.map +1 -1
  213. package/dist/components/status-and-feedback/banner/banner.template.d.ts.map +1 -1
  214. package/dist/components/status-and-feedback/banner/banner.template.js +36 -34
  215. package/dist/components/status-and-feedback/banner/banner.template.js.map +1 -1
  216. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js +1 -1
  217. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js.map +1 -1
  218. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js +1 -1
  219. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js.map +1 -1
  220. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.styles.js +1 -1
  221. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.styles.js.map +1 -1
  222. package/dist/components/status-and-feedback/progress-bar/progress-bar.d.ts.map +1 -1
  223. package/dist/components/status-and-feedback/progress-bar/progress-bar.js +4 -28
  224. package/dist/components/status-and-feedback/progress-bar/progress-bar.js.map +1 -1
  225. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.d.ts.map +1 -1
  226. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +19 -2
  227. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js.map +1 -1
  228. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.d.ts +2 -1
  229. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.d.ts.map +1 -1
  230. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.js +36 -1
  231. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.js.map +1 -1
  232. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +1 -1
  233. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js.map +1 -1
  234. package/dist/components/status-and-feedback/status-bar/status-bar.styles.js +1 -1
  235. package/dist/components/status-and-feedback/status-bar/status-bar.styles.js.map +1 -1
  236. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.js +1 -1
  237. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.js.map +1 -1
  238. package/dist/css/{palettes.generated.css → colors.generated.css} +1 -1
  239. package/dist/css/document-reset.css +16 -0
  240. package/dist/css/global-system-font.css +6 -0
  241. package/dist/css/global.css +3 -2
  242. package/dist/css/rich-text.css +35 -0
  243. package/dist/css/rijksoverheid-fonts.css +40 -0
  244. package/dist/css/tokens.css +2 -0
  245. package/dist/css/{settings.css → variables.css} +9 -39
  246. package/dist/types/vue.d.ts +7 -1
  247. package/dist/utilities/codemirror/theme.js +1 -1
  248. package/dist/utilities/page-section-mixin.d.ts.map +1 -1
  249. package/dist/utilities/page-section-mixin.js +0 -1
  250. package/dist/utilities/page-section-mixin.js.map +1 -1
  251. package/dist/utilities/visibility-mixin.d.ts.map +1 -1
  252. package/dist/utilities/visibility-mixin.js +0 -1
  253. package/dist/utilities/visibility-mixin.js.map +1 -1
  254. package/dist/utilities/with-translations.d.ts.map +1 -1
  255. package/dist/utilities/with-translations.js.map +1 -1
  256. package/package.json +14 -8
  257. package/dist/assets/styles/style-resets.d.ts.map +0 -1
  258. package/dist/assets/styles/style-resets.fixtures.d.ts.map +0 -1
  259. package/dist/assets/styles/style-resets.fixtures.js.map +0 -1
  260. package/dist/assets/styles/style-resets.js.map +0 -1
  261. package/dist/assets/styles/tokens.d.ts +0 -25
  262. package/dist/assets/styles/tokens.d.ts.map +0 -1
  263. package/dist/assets/styles/tokens.js +0 -25
  264. package/dist/assets/styles/tokens.js.map +0 -1
  265. package/dist/css/reset.css +0 -7
@@ -1168,6 +1168,8 @@ const aliases = {
1168
1168
  // moon
1169
1169
  "dark-mode": "moon",
1170
1170
  "night": "moon",
1171
+ // paintbrush
1172
+ "appearance": "paintbrush",
1171
1173
  // paper-plane
1172
1174
  "send": "paper-plane",
1173
1175
  // paperclip
@@ -1238,6 +1240,8 @@ const aliases = {
1238
1240
  "medium-volume": "speaker-volume-medium",
1239
1241
  // viewfinder
1240
1242
  "fit-to-view": "viewfinder",
1243
+ // viewfinder-line
1244
+ "scan": "viewfinder-line",
1241
1245
  // star
1242
1246
  "rating": "star",
1243
1247
  // star-filled
@@ -1472,6 +1476,7 @@ const iconRegistry = /* @__PURE__ */ new Map([
1472
1476
  ["dismiss-circle-filled", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20m0 8.59-3.3-3.3-1.4 1.42L10.58 12l-3.3 3.3 1.42 1.4L12 13.42l3.3 3.3 1.4-1.42L13.42 12l3.3-3.3-1.42-1.4z"/>\n</svg>'],
1473
1477
  ["dismiss-extra-small", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="m15.3 7.3 1.4 1.4-3.29 3.3 3.3 3.3-1.42 1.4L12 13.42l-3.3 3.3-1.4-1.42L10.58 12l-3.3-3.3 1.42-1.4L12 10.58z"/>\n</svg>'],
1474
1478
  ["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>'],
1479
+ ["display", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19 3a3 3 0 0 1 3 3v9a3 3 0 0 1-2.85 3H15v2h2v2H7v-2h2v-2H4.85A3 3 0 0 1 2 15.15V6a3 3 0 0 1 3-3zM5 5a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1z"/>\n</svg>'],
1475
1480
  ["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>'],
1476
1481
  ["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>'],
1477
1482
  ["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>'],
@@ -1573,6 +1578,7 @@ const iconRegistry = /* @__PURE__ */ new Map([
1573
1578
  ["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>'],
1574
1579
  ["network-structure", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M12 1a3 3 0 0 1 2.89 3.8l1.95 1.13A2.99 2.99 0 0 1 22 8a3 3 0 0 1-2.32 2.92v2.16a3 3 0 1 1-2.84 5l-1.95 1.12a3 3 0 1 1-5.78 0l-1.95-1.13A2.99 2.99 0 0 1 2 16a3 3 0 0 1 2.32-2.92v-2.16a3 3 0 1 1 2.84-5L9.11 4.8A3 3 0 0 1 12 1m0 18a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-4.1-3.79c.13.5.13 1.06 0 1.55l1.96 1.14a3 3 0 0 1 1.39-.8v-2.2a3 3 0 0 1-1.4-.81zm6.25-1.12a3 3 0 0 1-1.4.81v2.2a3 3 0 0 1 1.39.8l1.96-1.14a3 3 0 0 1 0-1.55zM5 15a1 1 0 1 0 0 2 1 1 0 0 0 0-2m14 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-4.1-3.79c.13.5.13 1.07 0 1.58l1.95 1.12a3 3 0 0 1 1.33-.8v-2.23a3 3 0 0 1-1.33-.79zm-7.75-1.12a3 3 0 0 1-1.33.8v2.23a3 3 0 0 1 1.33.79l1.96-1.12a3 3 0 0 1 0-1.58zM12 11a1 1 0 1 0 0 2 1 1 0 0 0 0-2M7.9 7.23c.13.5.13 1.06 0 1.56L9.84 9.9a3 3 0 0 1 1.4-.81V6.9a3 3 0 0 1-1.4-.8zm6.24-1.13a3 3 0 0 1-1.39.8v2.2a3 3 0 0 1 1.4.8l1.95-1.1a3 3 0 0 1 0-1.56zM5 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2m14 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-7-4a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>\n</svg>'],
1575
1580
  ["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>'],
1581
+ ["paintbrush", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M18.13 2.51a2.39 2.39 0 0 1 3.35 3.35l-7.31 9.26A3.7 3.7 0 0 1 12 16.46c-.28 2.52-2.62 4.49-5.47 4.49a5.5 5.5 0 0 1-5.04-3h.04c1.38 0 2.5-.9 2.5-2a4 4 0 0 1 3.48-3.97 4 4 0 0 1 1.35-2.16zM8.04 13.95a2 2 0 0 0-2 2c0 1.1-.45 2-1.12 2.66q.72.33 1.62.34c1.66 0 3.5-1.2 3.5-3a2 2 0 0 0-2-2m2.07-2.56q-.43.35-.59.84a4 4 0 0 1 2.24 2.23q.49-.15.84-.58l1.08-1.37-2.2-2.2zm9.25-7.3-6.3 4.97 1.87 1.86 4.98-6.3c.27-.34-.2-.81-.55-.54"/>\n</svg>'],
1576
1582
  ["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>'],
1577
1583
  ["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>'],
1578
1584
  ["paragraph-sign", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19 4h-2v18h-2V4h-2v18h-2V12h-1a5 5 0 0 1 0-10h9z"/>\n</svg>'],
@@ -1665,6 +1671,7 @@ const iconRegistry = /* @__PURE__ */ new Map([
1665
1671
  ["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>'],
1666
1672
  ["video-camera", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M20.283 5.264C20.91 4.62 22 5.064 22 5.96l-.013 12.24c.013.739-1.077 1.179-1.707.539L17 15.362V16.5c0 1.66-1.34 3-3 3H5c-1.66 0-3-1.34-3-3v-9a3 3 0 0 1 3-3h9c1.657 0 3 1.34 3 3v1.137zM5 6.5a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-9a1 1 0 0 0-1-1zm12 5.005v.99l3 3.081V8.423z"/>\n</svg>'],
1667
1673
  ["viewfinder", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M5 18a1 1 0 0 0 1 1h4v2H6a3 3 0 0 1-3-3v-4h2zm16 0a3 3 0 0 1-3 3h-4v-2h4a1 1 0 0 0 1-1v-4h2zM10 5H6a1 1 0 0 0-1 1v4H3V6a3 3 0 0 1 3-3h4zm11 1v4h-2V6a1 1 0 0 0-1-1h-4V3h4a3 3 0 0 1 3 3"/>\n</svg>'],
1674
+ ["viewfinder-line", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M5 18a1 1 0 0 0 1 1h3v2H6a3 3 0 0 1-3-3v-3h2zm16 0a3 3 0 0 1-3 3h-3v-2h3a1 1 0 0 0 1-1v-3h2zm1-5H2v-2h20zM9 5H6a1 1 0 0 0-1 1v3H3V6a3 3 0 0 1 3-3h3zm9-2a3 3 0 0 1 3 3v3h-2V6a1 1 0 0 0-1-1h-3V3z"/>\n</svg>'],
1668
1675
  ["wheat", '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">\n <path fill="currentColor" d="M8 22H6v-3h2zm10 0h-2v-3h2zM3 14a4 4 0 0 1 4 4 4 4 0 0 1-4-4m8 0a4 4 0 0 1-4 4 4 4 0 0 1 4-4m2 0a4 4 0 0 1 4 4 4 4 0 0 1-4-4m8 0a4 4 0 0 1-4 4 4 4 0 0 1 4-4M3 10a4 4 0 0 1 4 4 4 4 0 0 1-4-4m8 0a4 4 0 0 1-4 4 4 4 0 0 1 4-4m2 0a4 4 0 0 1 4 4 4 4 0 0 1-4-4m8 0a4 4 0 0 1-4 4 4 4 0 0 1 4-4M3 6a4 4 0 0 1 4 4 4 4 0 0 1-4-4m8 0a4 4 0 0 1-4 4 4 4 0 0 1 4-4m2 0a4 4 0 0 1 4 4 4 4 0 0 1-4-4m8 0a4 4 0 0 1-4 4 4 4 0 0 1 4-4M7 2a4 4 0 0 1 0 5.29A4 4 0 0 1 7 2m10 0a4 4 0 0 1 0 5.29A4 4 0 0 1 17 2"/>\n</svg>']
1669
1676
  ]);
1670
1677
  var __defProp$1B = Object.defineProperty;
@@ -2868,6 +2875,7 @@ function tooltipTemplate(component) {
2868
2875
  @mouseleave=${component._handleTriggerLeave}
2869
2876
  @focusin=${component._handleFocusIn}
2870
2877
  @focusout=${component._handleFocusOut}
2878
+ @click=${component._handleTriggerActivate}
2871
2879
  ></slot>
2872
2880
  <div class="tooltip"
2873
2881
  popover="manual"
@@ -3108,6 +3116,25 @@ let NLDDTooltip = class extends LitElement {
3108
3116
  );
3109
3117
  if (!stillInside) this._handleTriggerLeave();
3110
3118
  }
3119
+ /* A tooltip is transient help for a control; once you activate that control
3120
+ * it has done its job. Without this it lingers on top of whatever the click
3121
+ * opened: a tooltip is popover="manual" and an nldd-popover is
3122
+ * popover="auto", so both sit in the top layer, where z-index does not
3123
+ * apply between them and the last one shown simply paints over the other.
3124
+ * `open` is the consumer's programmatic feedback state (e.g. "Gekopieerd"),
3125
+ * which activation must not cancel. */
3126
+ _handleTriggerActivate() {
3127
+ if (this.open) return;
3128
+ if (this._showTimeout) {
3129
+ clearTimeout(this._showTimeout);
3130
+ this._showTimeout = null;
3131
+ }
3132
+ if (this._hideTimeout) {
3133
+ clearTimeout(this._hideTimeout);
3134
+ this._hideTimeout = null;
3135
+ }
3136
+ this._visible = false;
3137
+ }
3111
3138
  _handleTooltipEnter() {
3112
3139
  if (this._hideTimeout) {
3113
3140
  clearTimeout(this._hideTimeout);
@@ -3902,8 +3929,7 @@ const menuDividerStyles = css$1`
3902
3929
  /* # Host */
3903
3930
 
3904
3931
  :host {
3905
- display: block;
3906
- padding: var(--primitives-space-4) 0;
3932
+ display: flow-root;
3907
3933
  }
3908
3934
 
3909
3935
  :host([hidden]) {
@@ -3914,6 +3940,7 @@ const menuDividerStyles = css$1`
3914
3940
  /* # Divider */
3915
3941
 
3916
3942
  .menu__divider {
3943
+ margin: var(--primitives-space-4) 0;
3917
3944
  background-color: var(--semantics-dividers-color);
3918
3945
  height: var(--semantics-dividers-thickness);
3919
3946
  }
@@ -3928,14 +3955,21 @@ const menuGroupStyles = css$1`
3928
3955
  * (bottom). Both flags are set by the parent menu (data-no-top-divider /
3929
3956
  * data-no-bottom-divider): CSS :first-child / :last-child can't see hidden
3930
3957
  * siblings, nor the header slot's div that becomes the first light-DOM
3931
- * child (which would leave a first group no longer :first-child).
3932
- *
3933
- * padding-top > padding-bottom binds the title visually to its items
3934
- * rather than to whatever sits above. */
3958
+ * child (which would leave a first group no longer :first-child). */
3935
3959
 
3936
3960
  :host {
3937
3961
  ${inheritedTextReset}
3938
- display: block;
3962
+ display: flow-root;
3963
+ }
3964
+
3965
+ :host([hidden]) {
3966
+ display: none;
3967
+ }
3968
+
3969
+
3970
+ /* # Block */
3971
+
3972
+ .menu__group {
3939
3973
  margin-top: var(--primitives-space-4);
3940
3974
  margin-bottom: var(--primitives-space-4);
3941
3975
  border-top: var(--semantics-dividers-thickness) solid var(--semantics-dividers-color);
@@ -3944,22 +3978,18 @@ const menuGroupStyles = css$1`
3944
3978
  padding-bottom: var(--primitives-space-4);
3945
3979
  }
3946
3980
 
3947
- :host(:first-child),
3948
- :host([data-no-top-divider]) {
3981
+ :host(:first-child) .menu__group,
3982
+ :host([data-no-top-divider]) .menu__group {
3949
3983
  border-top: none;
3950
3984
  padding-top: var(--primitives-space-2);
3951
3985
  }
3952
3986
 
3953
- :host([data-no-bottom-divider]) {
3987
+ :host([data-no-bottom-divider]) .menu__group {
3954
3988
  margin-bottom: 0;
3955
3989
  border-bottom: none;
3956
3990
  padding-bottom: var(--primitives-space-2);
3957
3991
  }
3958
3992
 
3959
- :host([hidden]) {
3960
- display: none;
3961
- }
3962
-
3963
3993
 
3964
3994
  /* # Title */
3965
3995
 
@@ -4191,15 +4221,17 @@ function menuDividerTemplate() {
4191
4221
  }
4192
4222
  function menuGroupTemplate(component) {
4193
4223
  return html$1`
4194
- <div class="menu__group-title"
4195
- id=${component._titleId}
4196
- aria-hidden="true"
4197
- >${component.text}</div>
4198
- <div class="menu__group-items"
4199
- role="group"
4200
- aria-labelledby=${component._titleId}
4201
- >
4202
- <slot></slot>
4224
+ <div class="menu__group">
4225
+ <div class="menu__group-title"
4226
+ id=${component._titleId}
4227
+ aria-hidden="true"
4228
+ >${component.text}</div>
4229
+ <div class="menu__group-items"
4230
+ role="group"
4231
+ aria-labelledby=${component._titleId}
4232
+ >
4233
+ <slot></slot>
4234
+ </div>
4203
4235
  </div>
4204
4236
  `;
4205
4237
  }
@@ -4222,7 +4254,8 @@ const iconCellStyles = css$1`
4222
4254
  --_content-color: var(--context-content-color, var(--semantics-content-color));
4223
4255
 
4224
4256
  display: flex;
4225
- padding-block: var(--context-cell-padding-block, 0px);
4257
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
4258
+ padding-block: var(--context-cell-padding-block, 0px) !important;
4226
4259
  width: var(--_size);
4227
4260
  flex-direction: column;
4228
4261
  align-items: center;
@@ -4513,7 +4546,8 @@ const textCellStyles = css$1`
4513
4546
  --_text-font: var(--primitives-font-body-md-regular-tight);
4514
4547
 
4515
4548
  ${inheritedTextReset}
4516
- padding-block: var(--context-cell-padding-block, 0px);
4549
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
4550
+ padding-block: var(--context-cell-padding-block, 0px) !important;
4517
4551
  display: flex;
4518
4552
  width: var(--_width);
4519
4553
  min-width: var(--_min-width);
@@ -26851,16 +26885,16 @@ const highlightStyle = HighlightStyle.define([
26851
26885
  ]);
26852
26886
  const nlddCodeMirrorTheme = [baseTheme$1, syntaxHighlighting(highlightStyle)];
26853
26887
  const loaders = {
26854
- json: async () => (await import("./index-CChmEZdd.js")).json(),
26855
- yaml: async () => (await import("./index-CAIa-ZY1.js")).yaml(),
26888
+ json: async () => (await import("./index-VYDp-qXc.js")).json(),
26889
+ yaml: async () => (await import("./index-1g5lY4s4.js")).yaml(),
26856
26890
  javascript: async () => (await Promise.resolve().then(() => index$2)).javascript(),
26857
26891
  typescript: async () => (await Promise.resolve().then(() => index$2)).javascript({ typescript: true }),
26858
26892
  css: async () => (await Promise.resolve().then(() => index$3)).css(),
26859
26893
  html: async () => (await Promise.resolve().then(() => index$1)).html(),
26860
- xml: async () => (await import("./index-JawcAuAj.js")).xml(),
26861
- python: async () => (await import("./index-73GOYriu.js")).python(),
26862
- rust: async () => (await import("./index-BBerWrN2.js")).rust(),
26863
- sql: async () => (await import("./index-fjTBz8ya.js")).sql(),
26894
+ xml: async () => (await import("./index-loncueHu.js")).xml(),
26895
+ python: async () => (await import("./index-jJIyF1NB.js")).python(),
26896
+ rust: async () => (await import("./index-B9-cDD9g.js")).rust(),
26897
+ sql: async () => (await import("./index-D4R5KlwE.js")).sql(),
26864
26898
  markdown: async () => (await Promise.resolve().then(() => index)).markdown(),
26865
26899
  // No official lang-* package — wrap the legacy StreamLanguage modes.
26866
26900
  bash: async () => new LanguageSupport(StreamLanguage.define((await import("./shell-BlsXDxCn.js")).shell)),
@@ -28682,14 +28716,22 @@ const titleStyles = css$1`
28682
28716
  overflow-wrap: anywhere !important;
28683
28717
  }
28684
28718
 
28719
+ /* balance, not pretty: a heading is a handful of words, so evening out the
28720
+ line lengths reads better than only protecting the last line.
28721
+ *
28722
+ * The measure is in ch, so one value covers every size: ch scales with the
28723
+ * font, and 40 characters stays 40 characters whether the title is 18px or
28724
+ * 52px. It only bites in a wide container — inside a card or a column the
28725
+ * box is already narrower than the cap. */
28685
28726
  ::slotted(:not([slot])) {
28686
28727
  ${slottedReset}
28687
28728
  ${inheritedTextReset}
28688
28729
  margin: 0 !important;
28730
+ max-width: 40ch !important;
28689
28731
  color: var(--semantics-content-color) !important;
28690
28732
  font: var(--_font) !important;
28691
28733
  overflow-wrap: anywhere !important;
28692
- text-wrap: pretty !important;
28734
+ text-wrap: balance !important;
28693
28735
  }
28694
28736
 
28695
28737
  ::slotted([slot="subtitle"]) {
@@ -32608,7 +32650,6 @@ const dateFieldStyles = css$1`
32608
32650
  border-radius: var(--_corner-radius);
32609
32651
  background-color: var(--_background-color);
32610
32652
  min-height: var(--_min-size);
32611
- overflow: hidden;
32612
32653
  padding-left: calc(var(--_inline-padding) - var(--semantics-input-fields-border-width));
32613
32654
  flex-direction: row;
32614
32655
  align-items: center;
@@ -32991,8 +33032,11 @@ let NLDDPopover = class extends LitElement {
32991
33032
  this.hide();
32992
33033
  return;
32993
33034
  }
32994
- event.preventDefault();
32995
- focusables[event.shiftKey ? idx - 1 : idx + 1]?.focus();
33035
+ if (idx === -1) {
33036
+ event.preventDefault();
33037
+ focusables[0]?.focus({ focusVisible: true });
33038
+ return;
33039
+ }
32996
33040
  };
32997
33041
  }
32998
33042
  get open() {
@@ -33302,7 +33346,8 @@ const containerStyles = css$1`
33302
33346
  }
33303
33347
 
33304
33348
 
33305
- /* # Host — outer chrome (padding + scheme + query container) */
33349
+ /* # Host — external contract; padding and the query container live on
33350
+ .container in the shadow root, out of reach of consumer resets */
33306
33351
 
33307
33352
  :host {
33308
33353
  --_min-column-width: var(--primitives-area-280);
@@ -33333,12 +33378,37 @@ const containerStyles = css$1`
33333
33378
  --_slot-sm-order: var(--_slot-order);
33334
33379
  --_slot-md-order: var(--_slot-order);
33335
33380
  --_slot-lg-order: var(--_slot-order);
33381
+ /* One resolved gap for every layout to read. Multicol splits the gap
33382
+ over two properties (column-gap plus a margin on the items), so a
33383
+ per-breakpoint declaration would have to be repeated in three
33384
+ rules; swapping the var keeps that in one place. */
33385
+ --_resolved-gap: var(--_gap);
33386
+
33387
+ @media (max-width: ${smMax$e}) { --_resolved-gap: var(--_sm-gap); }
33388
+ @media (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) { --_resolved-gap: var(--_md-gap); }
33389
+ @media (min-width: ${lgMin$d}) { --_resolved-gap: var(--_lg-gap); }
33390
+
33391
+ @container layout-container (max-width: ${smMax$e}) { --_resolved-gap: var(--_sm-gap); }
33392
+ @container layout-container (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) { --_resolved-gap: var(--_md-gap); }
33393
+ @container layout-container (min-width: ${lgMin$d}) { --_resolved-gap: var(--_lg-gap); }
33336
33394
 
33337
- container-type: inline-size;
33338
33395
  display: block;
33339
- box-sizing: border-box;
33340
33396
  width: 100%;
33341
33397
  height: auto;
33398
+ }
33399
+
33400
+ :host([hidden]) {
33401
+ display: none;
33402
+ }
33403
+
33404
+
33405
+ /* # Outer chrome — padding + query container. Size queries measure the
33406
+ content box, so .container reports the same padded interior width the
33407
+ host reported when it carried the padding itself. */
33408
+
33409
+ .container {
33410
+ container-type: inline-size;
33411
+ box-sizing: border-box;
33342
33412
  padding-top: var(--_padding-top);
33343
33413
  padding-right: var(--_padding-right);
33344
33414
  padding-bottom: var(--_padding-bottom);
@@ -33387,41 +33457,29 @@ const containerStyles = css$1`
33387
33457
  }
33388
33458
  }
33389
33459
 
33390
- :host([hidden]) {
33391
- display: none;
33392
- }
33393
-
33394
33460
 
33395
33461
  /* # Inner — actual layout */
33396
33462
 
33397
- .container {
33463
+ .container__inner {
33398
33464
  display: flex;
33399
33465
  flex-direction: column;
33400
33466
  flex-wrap: nowrap;
33401
33467
  justify-content: var(--_justify-content);
33402
33468
  justify-items: var(--_justify-items);
33403
33469
  align-items: var(--_align-items);
33404
- gap: var(--_gap);
33405
-
33406
- @media (max-width: ${smMax$e}) { gap: var(--_sm-gap); }
33407
- @media (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) { gap: var(--_md-gap); }
33408
- @media (min-width: ${lgMin$d}) { gap: var(--_lg-gap); }
33409
-
33410
- @container layout-container (max-width: ${smMax$e}) { gap: var(--_sm-gap); }
33411
- @container layout-container (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) { gap: var(--_md-gap); }
33412
- @container layout-container (min-width: ${lgMin$d}) { gap: var(--_lg-gap); }
33470
+ gap: var(--_resolved-gap);
33413
33471
  }
33414
33472
 
33415
- :host([layout="row"]) .container {
33473
+ :host([layout="row"]) .container__inner {
33416
33474
  flex-direction: row;
33417
33475
  }
33418
33476
 
33419
- :host([layout="wrap"]) .container {
33477
+ :host([layout="wrap"]) .container__inner {
33420
33478
  flex-direction: row;
33421
33479
  flex-wrap: wrap;
33422
33480
  }
33423
33481
 
33424
- :host([layout="grid"]) .container {
33482
+ :host([layout="grid"]) .container__inner {
33425
33483
  display: grid;
33426
33484
  grid-template-columns: repeat(
33427
33485
  var(--_column-count, auto-fit),
@@ -33429,10 +33487,10 @@ const containerStyles = css$1`
33429
33487
  );
33430
33488
  }
33431
33489
 
33432
- :host([layout="columns"]) .container {
33490
+ :host([layout="columns"]) .container__inner {
33433
33491
  display: block;
33434
33492
  columns: var(--_min-column-width);
33435
- column-gap: var(--_gap);
33493
+ column-gap: var(--_resolved-gap);
33436
33494
  }
33437
33495
 
33438
33496
  :host([layout="columns"]) ::slotted(*) {
@@ -33442,21 +33500,21 @@ const containerStyles = css$1`
33442
33500
  /* Lanes — native CSS grid-lanes where supported, CSS multicol fallback
33443
33501
  otherwise. CSS-only (no JS). Fallback flows column-order; native lanes
33444
33502
  packs shortest-column (row-order). */
33445
- :host([layout="lanes"]) .container {
33503
+ :host([layout="lanes"]) .container__inner {
33446
33504
  display: block;
33447
33505
  columns: var(--_min-column-width);
33448
- column-gap: var(--_gap);
33506
+ column-gap: var(--_resolved-gap);
33449
33507
  }
33450
33508
 
33451
33509
  :host([layout="lanes"]) ::slotted(*) {
33452
33510
  break-inside: avoid;
33453
33511
  /* multicol has no row-gap; item margin supplies the vertical gap. The
33454
33512
  native branch resets this (grid-lanes gap covers both axes). */
33455
- margin-bottom: var(--_gap);
33513
+ margin-bottom: var(--_resolved-gap);
33456
33514
  }
33457
33515
 
33458
33516
  @supports (display: grid-lanes) {
33459
- :host([layout="lanes"]) .container {
33517
+ :host([layout="lanes"]) .container__inner {
33460
33518
  display: grid-lanes;
33461
33519
  grid-template-columns: repeat(
33462
33520
  var(--_column-count, auto-fill),
@@ -33469,14 +33527,14 @@ const containerStyles = css$1`
33469
33527
  }
33470
33528
  }
33471
33529
 
33472
- :host([layout="columns"][column-count]) .container,
33473
- :host([layout="columns"][sm-column-count]) .container,
33474
- :host([layout="columns"][md-column-count]) .container,
33475
- :host([layout="columns"][lg-column-count]) .container,
33476
- :host([layout="lanes"][column-count]) .container,
33477
- :host([layout="lanes"][sm-column-count]) .container,
33478
- :host([layout="lanes"][md-column-count]) .container,
33479
- :host([layout="lanes"][lg-column-count]) .container {
33530
+ :host([layout="columns"][column-count]) .container__inner,
33531
+ :host([layout="columns"][sm-column-count]) .container__inner,
33532
+ :host([layout="columns"][md-column-count]) .container__inner,
33533
+ :host([layout="columns"][lg-column-count]) .container__inner,
33534
+ :host([layout="lanes"][column-count]) .container__inner,
33535
+ :host([layout="lanes"][sm-column-count]) .container__inner,
33536
+ :host([layout="lanes"][md-column-count]) .container__inner,
33537
+ :host([layout="lanes"][lg-column-count]) .container__inner {
33480
33538
  column-count: var(--_column-count);
33481
33539
  column-width: auto;
33482
33540
  }
@@ -33484,59 +33542,59 @@ const containerStyles = css$1`
33484
33542
 
33485
33543
  /* # Column count — base scope */
33486
33544
 
33487
- :host([column-count="1"]) .container { --_column-count: 1; }
33488
- :host([column-count="2"]) .container { --_column-count: 2; }
33489
- :host([column-count="3"]) .container { --_column-count: 3; }
33490
- :host([column-count="4"]) .container { --_column-count: 4; }
33491
- :host([column-count="5"]) .container { --_column-count: 5; }
33492
- :host([column-count="6"]) .container { --_column-count: 6; }
33493
- :host([column-count="7"]) .container { --_column-count: 7; }
33494
- :host([column-count="8"]) .container { --_column-count: 8; }
33495
- :host([column-count]) .container { --_track-min: 0; }
33545
+ :host([column-count="1"]) .container__inner { --_column-count: 1; }
33546
+ :host([column-count="2"]) .container__inner { --_column-count: 2; }
33547
+ :host([column-count="3"]) .container__inner { --_column-count: 3; }
33548
+ :host([column-count="4"]) .container__inner { --_column-count: 4; }
33549
+ :host([column-count="5"]) .container__inner { --_column-count: 5; }
33550
+ :host([column-count="6"]) .container__inner { --_column-count: 6; }
33551
+ :host([column-count="7"]) .container__inner { --_column-count: 7; }
33552
+ :host([column-count="8"]) .container__inner { --_column-count: 8; }
33553
+ :host([column-count]) .container__inner { --_track-min: 0; }
33496
33554
 
33497
33555
 
33498
33556
  /* # Column count — sm scope (queries :host own width) */
33499
33557
 
33500
33558
  @container (max-width: ${smMax$e}) {
33501
- :host([sm-column-count="1"]) .container { --_column-count: 1; }
33502
- :host([sm-column-count="2"]) .container { --_column-count: 2; }
33503
- :host([sm-column-count="3"]) .container { --_column-count: 3; }
33504
- :host([sm-column-count="4"]) .container { --_column-count: 4; }
33505
- :host([sm-column-count="5"]) .container { --_column-count: 5; }
33506
- :host([sm-column-count="6"]) .container { --_column-count: 6; }
33507
- :host([sm-column-count="7"]) .container { --_column-count: 7; }
33508
- :host([sm-column-count="8"]) .container { --_column-count: 8; }
33509
- :host([sm-column-count]) .container { --_track-min: 0; }
33559
+ :host([sm-column-count="1"]) .container__inner { --_column-count: 1; }
33560
+ :host([sm-column-count="2"]) .container__inner { --_column-count: 2; }
33561
+ :host([sm-column-count="3"]) .container__inner { --_column-count: 3; }
33562
+ :host([sm-column-count="4"]) .container__inner { --_column-count: 4; }
33563
+ :host([sm-column-count="5"]) .container__inner { --_column-count: 5; }
33564
+ :host([sm-column-count="6"]) .container__inner { --_column-count: 6; }
33565
+ :host([sm-column-count="7"]) .container__inner { --_column-count: 7; }
33566
+ :host([sm-column-count="8"]) .container__inner { --_column-count: 8; }
33567
+ :host([sm-column-count]) .container__inner { --_track-min: 0; }
33510
33568
  }
33511
33569
 
33512
33570
 
33513
33571
  /* # Column count — md scope */
33514
33572
 
33515
33573
  @container (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) {
33516
- :host([md-column-count="1"]) .container { --_column-count: 1; }
33517
- :host([md-column-count="2"]) .container { --_column-count: 2; }
33518
- :host([md-column-count="3"]) .container { --_column-count: 3; }
33519
- :host([md-column-count="4"]) .container { --_column-count: 4; }
33520
- :host([md-column-count="5"]) .container { --_column-count: 5; }
33521
- :host([md-column-count="6"]) .container { --_column-count: 6; }
33522
- :host([md-column-count="7"]) .container { --_column-count: 7; }
33523
- :host([md-column-count="8"]) .container { --_column-count: 8; }
33524
- :host([md-column-count]) .container { --_track-min: 0; }
33574
+ :host([md-column-count="1"]) .container__inner { --_column-count: 1; }
33575
+ :host([md-column-count="2"]) .container__inner { --_column-count: 2; }
33576
+ :host([md-column-count="3"]) .container__inner { --_column-count: 3; }
33577
+ :host([md-column-count="4"]) .container__inner { --_column-count: 4; }
33578
+ :host([md-column-count="5"]) .container__inner { --_column-count: 5; }
33579
+ :host([md-column-count="6"]) .container__inner { --_column-count: 6; }
33580
+ :host([md-column-count="7"]) .container__inner { --_column-count: 7; }
33581
+ :host([md-column-count="8"]) .container__inner { --_column-count: 8; }
33582
+ :host([md-column-count]) .container__inner { --_track-min: 0; }
33525
33583
  }
33526
33584
 
33527
33585
 
33528
33586
  /* # Column count — lg scope */
33529
33587
 
33530
33588
  @container (min-width: ${lgMin$d}) {
33531
- :host([lg-column-count="1"]) .container { --_column-count: 1; }
33532
- :host([lg-column-count="2"]) .container { --_column-count: 2; }
33533
- :host([lg-column-count="3"]) .container { --_column-count: 3; }
33534
- :host([lg-column-count="4"]) .container { --_column-count: 4; }
33535
- :host([lg-column-count="5"]) .container { --_column-count: 5; }
33536
- :host([lg-column-count="6"]) .container { --_column-count: 6; }
33537
- :host([lg-column-count="7"]) .container { --_column-count: 7; }
33538
- :host([lg-column-count="8"]) .container { --_column-count: 8; }
33539
- :host([lg-column-count]) .container { --_track-min: 0; }
33589
+ :host([lg-column-count="1"]) .container__inner { --_column-count: 1; }
33590
+ :host([lg-column-count="2"]) .container__inner { --_column-count: 2; }
33591
+ :host([lg-column-count="3"]) .container__inner { --_column-count: 3; }
33592
+ :host([lg-column-count="4"]) .container__inner { --_column-count: 4; }
33593
+ :host([lg-column-count="5"]) .container__inner { --_column-count: 5; }
33594
+ :host([lg-column-count="6"]) .container__inner { --_column-count: 6; }
33595
+ :host([lg-column-count="7"]) .container__inner { --_column-count: 7; }
33596
+ :host([lg-column-count="8"]) .container__inner { --_column-count: 8; }
33597
+ :host([lg-column-count]) .container__inner { --_track-min: 0; }
33540
33598
  }
33541
33599
 
33542
33600
 
@@ -33565,7 +33623,13 @@ const containerStyles = css$1`
33565
33623
  }
33566
33624
  `;
33567
33625
  function containerTemplate(component) {
33568
- return html$1`<div class="container"><slot @slotchange=${component._onSlotChange}></slot></div>`;
33626
+ return html$1`
33627
+ <div class="container">
33628
+ <div class="container__inner">
33629
+ <slot @slotchange=${component._onSlotChange}></slot>
33630
+ </div>
33631
+ </div>
33632
+ `;
33569
33633
  }
33570
33634
  var __defProp$15 = Object.defineProperty;
33571
33635
  var __getOwnPropDesc$15 = Object.getOwnPropertyDescriptor;
@@ -34217,6 +34281,7 @@ const datePickerStyles = css$1`
34217
34281
  --_footer-margin-top: var(--primitives-space-8);
34218
34282
  --_title-font: var(--primitives-font-display-5-sm);
34219
34283
  --_title-button-corner-radius: var(--semantics-controls-sm-corner-radius);
34284
+ --_title-button-min-size: var(--semantics-controls-sm-min-size);
34220
34285
  --_title-picker-icon-size: var(--primitives-space-20);
34221
34286
  --_weekday-header-font: var(--primitives-font-body-xs-regular-flat);
34222
34287
  --_weekday-header-content-color: var(--semantics-content-secondary-color);
@@ -34230,7 +34295,7 @@ const datePickerStyles = css$1`
34230
34295
  --_width: initial;
34231
34296
  --_day-size: var(--semantics-controls-md-min-size);
34232
34297
  --_day-corner-radius: var(--semantics-controls-md-corner-radius);
34233
- --_day-font: var(--primitives-font-body-sm-regular-flat);
34298
+ --_day-font: var(--primitives-font-body-sm-medium-flat);
34234
34299
  --_day-indicator-inset: var(--primitives-space-2);
34235
34300
  --_day-indicator-size: calc(var(--_day-size) - var(--_day-indicator-inset) * 2);
34236
34301
  --_day-indicator-corner-radius: var(--_day-corner-radius);
@@ -34263,6 +34328,7 @@ const datePickerStyles = css$1`
34263
34328
  asked for. */
34264
34329
  :host([stacked]) {
34265
34330
  --_title-font: var(--primitives-font-display-4-sm);
34331
+ --_title-button-min-size: var(--semantics-controls-md-min-size);
34266
34332
 
34267
34333
  width: var(--_width, 100%);
34268
34334
  }
@@ -34295,11 +34361,18 @@ const datePickerStyles = css$1`
34295
34361
  }
34296
34362
 
34297
34363
  .date-picker__title {
34364
+ display: flex;
34298
34365
  margin: 0;
34366
+ align-items: center;
34367
+ gap: var(--primitives-space-4);
34299
34368
  font: var(--_title-font);
34369
+ /* A heading that breaks between month and year stops answering the one
34370
+ question it is there for. */
34371
+ white-space: nowrap;
34300
34372
  }
34301
34373
 
34302
- .date-picker__title-button {
34374
+ .date-picker__title-month-button,
34375
+ .date-picker__title-year-button {
34303
34376
  box-sizing: border-box;
34304
34377
  display: flex;
34305
34378
  margin: 0;
@@ -34307,6 +34380,7 @@ const datePickerStyles = css$1`
34307
34380
  border: none;
34308
34381
  border-radius: var(--_title-button-corner-radius);
34309
34382
  background: none;
34383
+ min-height: var(--_title-button-min-size);
34310
34384
  padding: 0;
34311
34385
  align-items: center;
34312
34386
  color: inherit;
@@ -34322,7 +34396,8 @@ const datePickerStyles = css$1`
34322
34396
  align-items: center;
34323
34397
  }
34324
34398
 
34325
- .date-picker__title-button:focus-visible {
34399
+ .date-picker__title-month-button:focus-visible,
34400
+ .date-picker__title-year-button:focus-visible {
34326
34401
  outline: var(--semantics-focus-ring-outline);
34327
34402
  outline-offset: var(--semantics-focus-ring-outline-offset);
34328
34403
  box-shadow: var(--semantics-focus-ring-box-shadow);
@@ -34553,6 +34628,7 @@ const nlddDatePickerTranslations = {
34553
34628
  "components.date-picker.view-previous-month-action": "Vorige maand",
34554
34629
  "components.date-picker.view-next-month-action": "Volgende maand",
34555
34630
  "components.date-picker.view-today-action": "Vandaag",
34631
+ "components.date-picker.choose-month-action": "Kies een maand",
34556
34632
  "components.date-picker.choose-year-action": "Kies een jaar",
34557
34633
  // Twee vormen, want de maandnaam staat zowel midden in een datumlabel
34558
34634
  // ("maandag 29 juni 2026") als los in de kop erboven. Welke vorm waar hoort is
@@ -34625,51 +34701,78 @@ const nlddDatePickerTranslations = {
34625
34701
  "components.date-picker.range-blocked-text": "Die periode bevat een datum die niet beschikbaar is. Kies een andere."
34626
34702
  };
34627
34703
  const TITLE_ID = "date-picker-title";
34704
+ function renderTitlePart(component, part, label, choices, expanded) {
34705
+ if (choices < 2) return html$1`<span class="date-picker__title-label">${label}</span>`;
34706
+ return html$1`
34707
+ <button class="date-picker__title-${part}-button"
34708
+ type="button"
34709
+ aria-haspopup="menu"
34710
+ aria-expanded=${expanded ? "true" : "false"}
34711
+ >
34712
+ ${label}
34713
+ <span class="date-picker__title-picker-icon">
34714
+ <nldd-icon
34715
+ name="chevron-down-small"
34716
+ aria-hidden="true"
34717
+ ></nldd-icon>
34718
+ </span>
34719
+ </button>
34720
+ `;
34721
+ }
34628
34722
  function renderHeader(component) {
34723
+ const months = component._months;
34724
+ const years = component._years;
34629
34725
  return html$1`
34630
34726
  <div class="date-picker__header">
34631
34727
  <h2 class="date-picker__title"
34632
34728
  id=${TITLE_ID}
34633
34729
  aria-live="polite"
34634
34730
  >
34635
- <button class="date-picker__title-button"
34636
- type="button"
34637
- aria-haspopup="menu"
34638
- aria-expanded=${component._yearMenuOpen ? "true" : "false"}
34639
- >
34640
- ${component._title}
34641
- <span class="date-picker__title-picker-icon">
34642
- <nldd-icon
34643
- name="chevron-down-small"
34644
- aria-hidden="true"
34645
- ></nldd-icon>
34646
- </span>
34647
- </button>
34731
+ ${renderTitlePart(component, "month", component._monthLabel, months.length, component._monthMenuOpen)}
34732
+ ${renderTitlePart(component, "year", String(component._viewYear), years.length, component._yearMenuOpen)}
34648
34733
  </h2>
34649
- <nldd-menu
34650
- accessible-label=${component._t("components.date-picker.choose-year-action")}
34651
- max-items="8"
34652
- width="136px"
34653
- @toggle=${component._handleYearMenuToggle}
34654
- >
34655
- ${component._years.map((year) => html$1`
34656
- <nldd-menu-item
34657
- type="radio"
34658
- text=${String(year)}
34659
- ?selected=${year === component._viewYear}
34660
- @click=${() => component._handleYearSelect(year)}
34661
- ></nldd-menu-item>
34662
- `)}
34663
- </nldd-menu>
34734
+ ${months.length < 2 ? nothing : html$1`
34735
+ <nldd-menu class="date-picker__month-menu"
34736
+ accessible-label=${component._t("components.date-picker.choose-month-action")}
34737
+ width="176px"
34738
+ @toggle=${component._handleMonthMenuToggle}
34739
+ >
34740
+ ${months.map((month) => html$1`
34741
+ <nldd-menu-item
34742
+ type="radio"
34743
+ text=${component._t(`components.date-picker.${MONTH_KEYS[month - 1]}-capitalize`)}
34744
+ ?selected=${month === component._viewMonth}
34745
+ @click=${() => component._handleMonthSelect(month)}
34746
+ ></nldd-menu-item>
34747
+ `)}
34748
+ </nldd-menu>
34749
+ `}
34750
+ ${years.length < 2 ? nothing : html$1`
34751
+ <nldd-menu class="date-picker__year-menu"
34752
+ accessible-label=${component._t("components.date-picker.choose-year-action")}
34753
+ max-items="8"
34754
+ width="136px"
34755
+ @toggle=${component._handleYearMenuToggle}
34756
+ >
34757
+ ${years.map((year) => html$1`
34758
+ <nldd-menu-item
34759
+ type="radio"
34760
+ text=${String(year)}
34761
+ ?selected=${year === component._viewYear}
34762
+ @click=${() => component._handleYearSelect(year)}
34763
+ ></nldd-menu-item>
34764
+ `)}
34765
+ </nldd-menu>
34766
+ `}
34664
34767
  ${component._stacked ? nothing : html$1`
34665
34768
  <div class="date-picker__pagination">
34666
- ${renderPagination(component, "sm", "neutral-base", true)}
34769
+ ${renderPagination(component, "sm", "neutral-base")}
34667
34770
  </div>
34668
34771
  `}
34669
34772
  </div>
34670
34773
  `;
34671
34774
  }
34672
- function renderPagination(component, size2, variant, withToday) {
34775
+ function renderPagination(component, size2, variant) {
34673
34776
  return html$1`
34674
34777
  <nldd-button-bar
34675
34778
  size=${size2}
@@ -34681,13 +34784,6 @@ function renderPagination(component, size2, variant, withToday) {
34681
34784
  tooltip-timing="never"
34682
34785
  @click=${() => component._shiftView(-1)}
34683
34786
  ></nldd-icon-button>
34684
- ${withToday && component._todayReachable ? html$1`
34685
- <nldd-button-bar-divider></nldd-button-bar-divider>
34686
- <nldd-button
34687
- text=${component._t("components.date-picker.view-today-action")}
34688
- @click=${component._handleToday}
34689
- ></nldd-button>
34690
- ` : nothing}
34691
34787
  <nldd-button-bar-divider></nldd-button-bar-divider>
34692
34788
  <nldd-icon-button
34693
34789
  icon="chevron-right"
@@ -34698,13 +34794,13 @@ function renderPagination(component, size2, variant, withToday) {
34698
34794
  </nldd-button-bar>
34699
34795
  `;
34700
34796
  }
34701
- function renderFooter(component) {
34797
+ function renderFooter(component, withPagination) {
34702
34798
  return html$1`
34703
34799
  <div class="date-picker__footer">
34704
34800
  <div class="date-picker__footer-start">
34705
34801
  ${component._todayReachable ? html$1`
34706
34802
  <nldd-button
34707
- size="md"
34803
+ size=${withPagination ? "md" : "sm"}
34708
34804
  variant="neutral-tinted"
34709
34805
  text=${component._t("components.date-picker.view-today-action")}
34710
34806
  @click=${component._handleToday}
@@ -34712,7 +34808,7 @@ function renderFooter(component) {
34712
34808
  ` : nothing}
34713
34809
  </div>
34714
34810
  <div class="date-picker__footer-end">
34715
- ${renderPagination(component, "md", "neutral-tinted", false)}
34811
+ ${withPagination ? renderPagination(component, "md", "neutral-tinted") : nothing}
34716
34812
  </div>
34717
34813
  </div>
34718
34814
  `;
@@ -34813,7 +34909,7 @@ function datePickerTemplate(component) {
34813
34909
  `)}
34814
34910
  </tbody>
34815
34911
  </table>
34816
- ${component._stacked ? renderFooter(component) : nothing}
34912
+ ${component._stacked || component._todayReachable ? renderFooter(component, component._stacked) : nothing}
34817
34913
  <div class="date-picker__announcer"
34818
34914
  role="status"
34819
34915
  aria-live="polite"
@@ -34883,6 +34979,12 @@ function withYear(iso, year) {
34883
34979
  const lastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();
34884
34980
  return toIso(year, month, Math.min(day, lastDay)) ?? iso;
34885
34981
  }
34982
+ function withMonth(iso, month) {
34983
+ const year = Number(iso.slice(0, 4));
34984
+ const day = Number(iso.slice(8, 10));
34985
+ const lastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();
34986
+ return toIso(year, month, Math.min(day, lastDay)) ?? iso;
34987
+ }
34886
34988
  function clampIso(iso, min, max) {
34887
34989
  if (min && iso < min) return min;
34888
34990
  if (max && iso > max) return max;
@@ -34909,6 +35011,7 @@ let NLDDDatePicker = class extends withTranslations(
34909
35011
  this._anchor = "";
34910
35012
  this._hover = "";
34911
35013
  this._announcement = "";
35014
+ this._monthMenuOpen = false;
34912
35015
  this._yearMenuOpen = false;
34913
35016
  this._stacked = false;
34914
35017
  this._handleStackedChange = () => {
@@ -34931,13 +35034,19 @@ let NLDDDatePicker = class extends withTranslations(
34931
35034
  this._commitRange(origin, iso);
34932
35035
  };
34933
35036
  }
35037
+ async _handleMonthMenuToggle(e) {
35038
+ this._monthMenuOpen = e.newState === "open";
35039
+ if (this._monthMenuOpen) await this._openMenuOnSelection(".date-picker__month-menu");
35040
+ }
34934
35041
  async _handleYearMenuToggle(e) {
34935
35042
  this._yearMenuOpen = e.newState === "open";
34936
- if (!this._yearMenuOpen) return;
34937
- const menu = this.shadowRoot?.querySelector("nldd-menu");
35043
+ if (this._yearMenuOpen) await this._openMenuOnSelection(".date-picker__year-menu");
35044
+ }
35045
+ async _openMenuOnSelection(selector) {
35046
+ const menu = this.shadowRoot?.querySelector(selector);
34938
35047
  await menu?.updateComplete;
34939
35048
  const focusSelected = () => {
34940
- const selected = this.shadowRoot?.querySelector("nldd-menu-item[selected]");
35049
+ const selected = menu?.querySelector("nldd-menu-item[selected]");
34941
35050
  if (!selected || this.shadowRoot?.activeElement === selected) return;
34942
35051
  selected.scrollIntoView({ block: "nearest" });
34943
35052
  selected.focus({ preventScroll: true });
@@ -34982,9 +35091,10 @@ let NLDDDatePicker = class extends withTranslations(
34982
35091
  this.style.removeProperty("--_width");
34983
35092
  }
34984
35093
  }
34985
- const menu = this.shadowRoot?.querySelector("nldd-menu");
34986
- const title = this.shadowRoot?.querySelector(".date-picker__title-button");
34987
- if (menu && title) {
35094
+ for (const part of ["month", "year"]) {
35095
+ const menu = this.shadowRoot?.querySelector(`.date-picker__${part}-menu`);
35096
+ const title = this.shadowRoot?.querySelector(`.date-picker__title-${part}-button`);
35097
+ if (!menu || !title) continue;
34988
35098
  if (menu.anchorElement !== title) menu.anchorElement = title;
34989
35099
  if (title.popoverTargetElement !== menu) title.popoverTargetElement = menu;
34990
35100
  }
@@ -35069,6 +35179,26 @@ let NLDDDatePicker = class extends withTranslations(
35069
35179
  get _viewMonth() {
35070
35180
  return Number(this._view.slice(5, 7));
35071
35181
  }
35182
+ /**
35183
+ * Months offered in the title menu, bounded by min and max the way the year
35184
+ * list is. Without this the menu lists twelve months while a bound quietly
35185
+ * clamps eleven of them back to the one you were already on.
35186
+ *
35187
+ * The arrows page the view past a bound (only the focused day is clamped), so
35188
+ * the month on screen is not necessarily one you can choose. It is left out
35189
+ * when it falls outside, and the menu then shows no selection - which is the
35190
+ * truth: you are looking at a month this calendar will not accept.
35191
+ */
35192
+ get _months() {
35193
+ const minYear = this._min ? Number(this._min.slice(0, 4)) : null;
35194
+ const maxYear = this._max ? Number(this._max.slice(0, 4)) : null;
35195
+ if (minYear !== null && this._viewYear < minYear) return [];
35196
+ if (maxYear !== null && this._viewYear > maxYear) return [];
35197
+ const first = minYear === this._viewYear ? Number(this._min.slice(5, 7)) : 1;
35198
+ const last = maxYear === this._viewYear ? Number(this._max.slice(5, 7)) : 12;
35199
+ if (last < first) return [];
35200
+ return Array.from({ length: last - first + 1 }, (_, i) => first + i);
35201
+ }
35072
35202
  /**
35073
35203
  * Years offered in the title menu. Bounded by min and max where they are set,
35074
35204
  * because those already say which years can be reached; without them a window
@@ -35076,17 +35206,29 @@ let NLDDDatePicker = class extends withTranslations(
35076
35206
  */
35077
35207
  get _years() {
35078
35208
  const current = Number(todayIso().slice(0, 4));
35079
- let first = this._min ? Number(this._min.slice(0, 4)) : current - 120;
35080
- let last = this._max ? Number(this._max.slice(0, 4)) : current + 20;
35081
- first = Math.min(first, this._viewYear);
35082
- last = Math.max(last, this._viewYear);
35209
+ const first = this._min ? Number(this._min.slice(0, 4)) : Math.min(current - 120, this._viewYear);
35210
+ const last = this._max ? Number(this._max.slice(0, 4)) : Math.max(current + 20, this._viewYear);
35211
+ if (last < first) return [];
35083
35212
  return Array.from({ length: last - first + 1 }, (_, i) => first + i);
35084
35213
  }
35214
+ _handleMonthSelect(month) {
35215
+ this._view = firstOfMonth(clampIso(withMonth(this._view, month), this._min, this._max));
35216
+ this._focused = clampIso(withMonth(this._focused, month), this._min, this._max);
35217
+ this._restoreFocus = Boolean(this._focusedCell());
35218
+ this._closeMenu(".date-picker__month-menu");
35219
+ }
35085
35220
  _handleYearSelect(year) {
35086
35221
  this._view = firstOfMonth(clampIso(withYear(this._view, year), this._min, this._max));
35087
35222
  this._focused = clampIso(withYear(this._focused, year), this._min, this._max);
35088
35223
  this._restoreFocus = Boolean(this._focusedCell());
35089
- const menu = this.shadowRoot?.querySelector("nldd-menu");
35224
+ this._closeMenu(".date-picker__year-menu");
35225
+ }
35226
+ /**
35227
+ * Radio items keep their menu open, which is right when you are ticking
35228
+ * several - but here one month or one year is the whole answer.
35229
+ */
35230
+ _closeMenu(selector) {
35231
+ const menu = this.shadowRoot?.querySelector(selector);
35090
35232
  if (menu?.matches(":popover-open")) menu.hidePopover?.();
35091
35233
  }
35092
35234
  /**
@@ -35094,9 +35236,8 @@ let NLDDDatePicker = class extends withTranslations(
35094
35236
  * sentence-initial one of a heading, not a proper noun. The translation itself
35095
35237
  * stays lower case because it is reused mid-sentence in the day labels.
35096
35238
  */
35097
- get _title() {
35098
- const month = this._t(`components.date-picker.${MONTH_KEYS[this._viewMonth - 1]}-capitalize`);
35099
- return `${month} ${this._viewYear}`;
35239
+ get _monthLabel() {
35240
+ return this._t(`components.date-picker.${MONTH_KEYS[this._viewMonth - 1]}-capitalize`);
35100
35241
  }
35101
35242
  // — Cell state ———————————————————————————————————————————————————————————
35102
35243
  _isSelected(iso) {
@@ -35174,7 +35315,6 @@ let NLDDDatePicker = class extends withTranslations(
35174
35315
  this._view = next;
35175
35316
  const day = Math.min(Number(this._focused.slice(8, 10)), Number(lastOfMonth(next).slice(8, 10)));
35176
35317
  this._focused = clampIso(`${next.slice(0, 7)}-${String(day).padStart(2, "0")}`, this._min, this._max);
35177
- this._restoreFocus = Boolean(this._focusedCell());
35178
35318
  }
35179
35319
  _moveFocus(iso) {
35180
35320
  const target = clampIso(iso, this._min, this._max);
@@ -35344,7 +35484,6 @@ let NLDDDatePicker = class extends withTranslations(
35344
35484
  const today = todayIso();
35345
35485
  this._view = firstOfMonth(today);
35346
35486
  this._focused = today;
35347
- this._restoreFocus = Boolean(this._focusedCell());
35348
35487
  }
35349
35488
  render() {
35350
35489
  return datePickerTemplate(this);
@@ -35399,6 +35538,9 @@ __decorateClass$14([
35399
35538
  __decorateClass$14([
35400
35539
  state()
35401
35540
  ], NLDDDatePicker.prototype, "_announcement", 2);
35541
+ __decorateClass$14([
35542
+ state()
35543
+ ], NLDDDatePicker.prototype, "_monthMenuOpen", 2);
35402
35544
  __decorateClass$14([
35403
35545
  state()
35404
35546
  ], NLDDDatePicker.prototype, "_yearMenuOpen", 2);
@@ -35439,6 +35581,7 @@ function renderPicker$1(component) {
35439
35581
  ></nldd-icon-button>
35440
35582
  <nldd-popover
35441
35583
  accessible-label=${component._pickerLabel}
35584
+ placement="bottom-end"
35442
35585
  width=${component._pickerPopoverWidth}
35443
35586
  @toggle=${component._handlePopoverToggle}
35444
35587
  >
@@ -37082,7 +37225,6 @@ const passwordFieldStyles = css$1`
37082
37225
  border-radius: var(--_corner-radius);
37083
37226
  background-color: var(--_background-color);
37084
37227
  min-height: var(--_min-size);
37085
- overflow: hidden;
37086
37228
  padding-left: calc(var(--_inline-padding) - var(--semantics-input-fields-border-width));
37087
37229
  flex-direction: row;
37088
37230
  align-items: center;
@@ -37116,10 +37258,6 @@ const passwordFieldStyles = css$1`
37116
37258
  box-shadow: var(--semantics-focus-ring-box-shadow);
37117
37259
  }
37118
37260
 
37119
- .password-field:has(.password-field__visibility-toggle-button:focus-within) {
37120
- overflow: visible;
37121
- }
37122
-
37123
37261
 
37124
37262
  /* # Elements */
37125
37263
 
@@ -57503,7 +57641,9 @@ const cardStyles = css$1`
57503
57641
  /* # Host */
57504
57642
 
57505
57643
  :host {
57506
- --_highlight-border: inset 0 0 0 var(--components-card-highlight-border-width) var(--components-card-highlight-border-color);
57644
+ --_background-color: var(--components-card-background-color);
57645
+ --_border-color: var(--components-card-highlight-border-color);
57646
+ --_highlight-border: inset 0 0 0 var(--components-card-highlight-border-width) var(--_border-color);
57507
57647
 
57508
57648
  display: flex;
57509
57649
  /* Anchor for the focus ring, which hangs outside the card box. */
@@ -57516,6 +57656,14 @@ const cardStyles = css$1`
57516
57656
  }
57517
57657
 
57518
57658
 
57659
+ /* ## Background variants */
57660
+
57661
+ :host([background="tinted"]) {
57662
+ --_background-color: var(--components-card-tinted-background-color);
57663
+ --_border-color: var(--components-card-tinted-highlight-border-color);
57664
+ }
57665
+
57666
+
57519
57667
  /* # Block */
57520
57668
 
57521
57669
  .card {
@@ -57523,7 +57671,7 @@ const cardStyles = css$1`
57523
57671
  position: relative;
57524
57672
  border-radius: var(--components-card-corner-radius);
57525
57673
  box-shadow: var(--components-card-box-shadow);
57526
- background-color: var(--components-card-background-color);
57674
+ background-color: var(--_background-color);
57527
57675
  overflow: hidden;
57528
57676
  flex-direction: column;
57529
57677
  flex-grow: 1;
@@ -57674,6 +57822,7 @@ var __decorateClass$v = (decorators, target, key, kind) => {
57674
57822
  let NLDDCard = class extends withTranslations(LitElement, nlddCardTranslations) {
57675
57823
  constructor() {
57676
57824
  super(...arguments);
57825
+ this.background = "base";
57677
57826
  this.href = "";
57678
57827
  this.button = false;
57679
57828
  this.target = "";
@@ -57723,6 +57872,9 @@ let NLDDCard = class extends withTranslations(LitElement, nlddCardTranslations)
57723
57872
  }
57724
57873
  };
57725
57874
  NLDDCard.styles = cardStyles;
57875
+ __decorateClass$v([
57876
+ property({ reflect: true, converter: reflectNonDefault("base") })
57877
+ ], NLDDCard.prototype, "background", 2);
57726
57878
  __decorateClass$v([
57727
57879
  property({ type: String, attribute: "accessible-label" })
57728
57880
  ], NLDDCard.prototype, "accessibleLabel", 2);
@@ -58000,9 +58152,13 @@ let NLDDCollection = class extends LitElement {
58000
58152
  this._scrollListener = () => {
58001
58153
  const el = this._itemsEl;
58002
58154
  if (!el) return;
58155
+ const wasAtStart = this._atStart;
58156
+ const wasAtEnd = this._atEnd;
58003
58157
  this._atStart = el.scrollLeft < 1;
58004
58158
  this._atEnd = el.scrollLeft + el.clientWidth >= el.scrollWidth - 1;
58005
58159
  this._isScrollable = el.scrollWidth > el.clientWidth;
58160
+ if (!wasAtStart && this._atStart) this._handOffControlFocus("previous");
58161
+ if (!wasAtEnd && this._atEnd) this._handOffControlFocus("next");
58006
58162
  };
58007
58163
  this._scrollListenerAttached = false;
58008
58164
  }
@@ -58010,6 +58166,22 @@ let NLDDCollection = class extends LitElement {
58010
58166
  _t(key) {
58011
58167
  return this.translations[key] ?? nlddCollectionTranslations[key];
58012
58168
  }
58169
+ /* A keyboard user who scrolls to an end disables the control they are
58170
+ * standing on, and a disabled control cannot hold focus: the browser drops
58171
+ * focus to the body and the next Tab restarts at the top of the page. Hand
58172
+ * focus to the sibling control instead — it sits right next to the one
58173
+ * being disabled and is by definition usable at that end. */
58174
+ _handOffControlFocus(disabling) {
58175
+ const controls = this.shadowRoot?.querySelectorAll("nldd-icon-button");
58176
+ if (!controls || controls.length < 2) return;
58177
+ const [previous, next] = controls;
58178
+ const losing = disabling === "previous" ? previous : next;
58179
+ if (this.shadowRoot?.activeElement !== losing) return;
58180
+ const target = disabling === "previous" ? next : previous;
58181
+ void this.updateComplete.then(() => {
58182
+ if (!target.disabled) target.focus();
58183
+ });
58184
+ }
58013
58185
  connectedCallback() {
58014
58186
  super.connectedCallback();
58015
58187
  this._visibleCount = this.maxItems;
@@ -58093,11 +58265,27 @@ let NLDDCollection = class extends LitElement {
58093
58265
  get _hasMore() {
58094
58266
  return this._visibleCount < this._totalCount;
58095
58267
  }
58268
+ /* Scroll to an item edge, not by a fixed distance. The last scroll position
58269
+ * is wherever the content ends, which is rarely a whole number of items, so
58270
+ * stepping by item + gap from there keeps that remainder forever and every
58271
+ * item lands clipped. Snapping to the next edge in the given direction puts
58272
+ * an item flush against the padded start again. */
58096
58273
  _scrollBy(direction) {
58097
- const slot = this._itemsEl?.querySelector("slot");
58098
- const firstItem = slot?.assignedElements()[0];
58099
- const itemWidth = firstItem?.offsetWidth ?? 280;
58100
- this._itemsEl?.scrollBy({ left: direction * (itemWidth + 16), behavior: "smooth" });
58274
+ const el = this._itemsEl;
58275
+ if (!el) return;
58276
+ const slot = el.querySelector("slot");
58277
+ const items = slot?.assignedElements() ?? [];
58278
+ if (items.length === 0) return;
58279
+ const scrollerLeft = el.getBoundingClientRect().left;
58280
+ const inset = parseFloat(getComputedStyle(el).scrollPaddingInlineStart) || 0;
58281
+ const starts = items.map(
58282
+ (item) => Math.round(item.getBoundingClientRect().left - scrollerLeft + el.scrollLeft - inset)
58283
+ );
58284
+ const epsilon = 2;
58285
+ const current = el.scrollLeft;
58286
+ const target = direction === 1 ? starts.find((start) => start > current + epsilon) : starts.filter((start) => start < current - epsilon).pop();
58287
+ if (target === void 0) return;
58288
+ el.scrollTo({ left: target, behavior: "smooth" });
58101
58289
  }
58102
58290
  render() {
58103
58291
  return collectionTemplate(this);
@@ -60422,7 +60610,10 @@ const listItemStyles = css$1`
60422
60610
  /* Not the host's 100%: a width plus negative margins is over-constrained
60423
60611
  in block layout, so the row would shift instead of widen. */
60424
60612
  width: auto;
60425
- margin-inline: calc(-1 * var(--components-list-item-indicator-inline-inset));
60613
+ /* !important: shields the widening from consumer universal resets, which
60614
+ beat normal :host declarations per CSS Scoping. A negative margin
60615
+ cannot move inward — an inner element cannot reach outside the host. */
60616
+ margin-inline: calc(-1 * var(--components-list-item-indicator-inline-inset)) !important;
60426
60617
  }
60427
60618
 
60428
60619
  :host(.is-interactive) .list-item {
@@ -61042,9 +61233,25 @@ let NLDDListItem = class extends withTranslations(LitElement, nlddListItemTransl
61042
61233
  * keeps its default. Insets are measured against the row block (the widened
61043
61234
  * box on interactive rows), so the values compose with the edge geometry.
61044
61235
  */
61236
+ /**
61237
+ * The cell the divider starts at when nobody said otherwise: a row that
61238
+ * opens with an icon reads better with the line aligned to its text, the
61239
+ * way a leading avatar or icon insets the divider in every list of this
61240
+ * kind. Only leading spacers may sit in front of the icon; anything else
61241
+ * means the row does not open with an icon after all. Put `divider-start`
61242
+ * on the icon cell itself to get the full-width line back.
61243
+ */
61244
+ _implicitDividerStart() {
61245
+ const cells = Array.from(this.children).filter((el) => el.tagName.startsWith("NLDD-") && el.tagName.endsWith("-CELL"));
61246
+ const meaningful = cells.filter((el) => el.tagName !== "NLDD-SPACER-CELL");
61247
+ const [first, second] = meaningful;
61248
+ if (first?.tagName !== "NLDD-ICON-CELL" || !second) return [];
61249
+ return second.tagName === "NLDD-TEXT-CELL" || second.tagName === "NLDD-TITLE-CELL" ? [second] : [];
61250
+ }
61045
61251
  _measureDividerMarkers() {
61046
61252
  if (this.hasAttribute("data-nldd-clone")) return;
61047
- const starts = this._ownDescendants("[divider-start]");
61253
+ const explicitStarts = this._ownDescendants("[divider-start]");
61254
+ const starts = explicitStarts.length ? explicitStarts : this._implicitDividerStart();
61048
61255
  const ends = this._ownDescendants("[divider-end]");
61049
61256
  const targets = starts.length || ends.length ? [this, ...starts, ...ends] : [];
61050
61257
  const sameTargets = targets.length === this._observedMarkerTargets.length && targets.every((target, i) => target === this._observedMarkerTargets[i]);
@@ -61702,8 +61909,12 @@ const tableRowStyles = css$1`
61702
61909
  grid-column: 1 / -1;
61703
61910
  grid-template-columns: subgrid;
61704
61911
  min-height: var(--_min-height);
61705
- border-bottom: var(--_divider-thickness) solid var(--_divider-color);
61706
- padding-inline: var(--_padding-inline);
61912
+ /* !important: shields divider and inset from consumer universal resets,
61913
+ which beat normal :host declarations per CSS Scoping. They cannot move
61914
+ inward: the row is a subgrid participant, and a wrapper would break
61915
+ the parent-child column relation. */
61916
+ border-bottom: var(--_divider-thickness) solid var(--_divider-color) !important;
61917
+ padding-inline: var(--_padding-inline) !important;
61707
61918
  align-items: center;
61708
61919
  }
61709
61920
 
@@ -61723,7 +61934,9 @@ const tableRowStyles = css$1`
61723
61934
  divider (no doubling on the ring). Inner dividers run full-bleed to the
61724
61935
  sides — the padding only insets the cell content, not the row's border. */
61725
61936
  :host(:last-child) {
61726
- border-bottom: none;
61937
+ /* !important: the base border-bottom above is important, so this
61938
+ suppression has to be too. */
61939
+ border-bottom: none !important;
61727
61940
  }
61728
61941
 
61729
61942
  /* display:contents so the cells become grid items of this subgrid. */
@@ -62014,7 +62227,8 @@ const cellStyles = css$1`
62014
62227
  --_min-height: 0;
62015
62228
 
62016
62229
  ${inheritedTextReset}
62017
- padding-block: var(--context-cell-padding-block, 0px);
62230
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62231
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62018
62232
  display: flex;
62019
62233
  width: var(--_width);
62020
62234
  min-width: var(--_min-width);
@@ -62191,7 +62405,8 @@ const titleCellStyles = css$1`
62191
62405
  --_title-font: var(--primitives-font-display-5-sm);
62192
62406
 
62193
62407
  ${inheritedTextReset}
62194
- padding-block: var(--context-cell-padding-block, 0px);
62408
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62409
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62195
62410
  display: flex;
62196
62411
  width: var(--_width);
62197
62412
  min-width: var(--_min-width);
@@ -62556,7 +62771,8 @@ const descriptionCellStyles = css$1`
62556
62771
  --_min-height: 0;
62557
62772
 
62558
62773
  ${inheritedTextReset}
62559
- padding-block: var(--context-cell-padding-block, 0px);
62774
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62775
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62560
62776
  display: flex;
62561
62777
  width: var(--_width);
62562
62778
  min-width: var(--_min-width);
@@ -62741,7 +62957,8 @@ const dragHandleCellStyles = css$1`
62741
62957
  --_height: var(--semantics-controls-md-min-size);
62742
62958
 
62743
62959
  display: inline-flex;
62744
- padding-block: var(--context-cell-padding-block, 0px);
62960
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62961
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62745
62962
  cursor: grab;
62746
62963
  width: fit-content;
62747
62964
  align-items: center;
@@ -62897,7 +63114,8 @@ const timelineTrackCellStyles = css$1`
62897
63114
 
62898
63115
  isolation: isolate;
62899
63116
  display: flex;
62900
- padding-block: var(--context-cell-padding-block, 0px);
63117
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
63118
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62901
63119
  width: var(--_lane-size);
62902
63120
  flex-direction: column;
62903
63121
  align-self: stretch;
@@ -63057,7 +63275,7 @@ var __decorateClass$h = (decorators, target, key, kind) => {
63057
63275
  if (kind && result) __defProp$h(target, key, result);
63058
63276
  return result;
63059
63277
  };
63060
- let NLDDTimelineTrackCell = class extends LitElement {
63278
+ let NLDDTimelineTrackCell = class extends VisibilityMixin(LitElement, "cells-container") {
63061
63279
  constructor() {
63062
63280
  super(...arguments);
63063
63281
  this.status = "past";
@@ -63074,7 +63292,8 @@ let NLDDTimelineTrackCell = class extends LitElement {
63074
63292
  get showsContent() {
63075
63293
  return !this.minor && this.variant === "step";
63076
63294
  }
63077
- updated() {
63295
+ updated(changed) {
63296
+ super.updated(changed);
63078
63297
  return;
63079
63298
  }
63080
63299
  render() {
@@ -67937,7 +68156,11 @@ const bannerStyles = css$1`
67937
68156
  }
67938
68157
 
67939
68158
 
67940
- /* # Host */
68159
+ /* # Host
68160
+ *
68161
+ * The visual framework lives on .banner, not :host: outer-document rules
68162
+ * (a consumer's universal reset) beat normal :host declarations per CSS
68163
+ * Scoping. The host only keeps the external contract. */
67941
68164
 
67942
68165
  :host {
67943
68166
  --_corner-radius: var(--components-banner-corner-radius);
@@ -67955,23 +68178,11 @@ const bannerStyles = css$1`
67955
68178
  --_actions-gap: var(--primitives-space-4);
67956
68179
 
67957
68180
  ${inheritedTextReset}
67958
- box-sizing: border-box;
67959
- display: grid;
67960
- position: relative;
67961
- border-radius: var(--_corner-radius);
67962
- box-shadow: inset 0 0 0 var(--_border-width) var(--_border-color);
67963
- background-color: var(--_background-color);
68181
+ display: block;
67964
68182
  width: 100%;
67965
- padding: var(--_padding);
67966
- grid-template-columns: auto 1fr;
67967
- gap: var(--_column-gap);
67968
68183
  color: var(--_content-color);
67969
68184
  }
67970
68185
 
67971
- :host([dismissible]) {
67972
- padding-right: var(--_dismissible-padding-right);
67973
- }
67974
-
67975
68186
  :host([hidden]) {
67976
68187
  display: none;
67977
68188
  }
@@ -68000,8 +68211,26 @@ const bannerStyles = css$1`
68000
68211
  --_icon-color: var(--semantics-categories-critical-reference-background-color);
68001
68212
  }
68002
68213
 
68214
+ /* # Block */
68215
+
68216
+ .banner {
68217
+ box-sizing: border-box;
68218
+ display: grid;
68219
+ position: relative;
68220
+ border-radius: var(--_corner-radius);
68221
+ box-shadow: inset 0 0 0 var(--_border-width) var(--_border-color);
68222
+ background-color: var(--_background-color);
68223
+ padding: var(--_padding);
68224
+ grid-template-columns: auto 1fr;
68225
+ gap: var(--_column-gap);
68226
+ }
68227
+
68228
+ :host([dismissible]) .banner {
68229
+ padding-right: var(--_dismissible-padding-right);
68230
+ }
68231
+
68003
68232
  @media (forced-colors: active) {
68004
- :host {
68233
+ .banner {
68005
68234
  border: var(--_border-width) solid CanvasText;
68006
68235
  }
68007
68236
  }
@@ -68099,44 +68328,46 @@ function bannerTemplate(component) {
68099
68328
  }
68100
68329
  };
68101
68330
  return html$1`
68102
- <div class="banner__icon"
68103
- aria-hidden="true"
68104
- >
68105
- <nldd-icon name=${component._resolvedIcon}></nldd-icon>
68106
- </div>
68107
- <div class="banner__main">
68108
- ${component.text || component.supportingText ? html$1`
68109
- <div class="banner__heading">
68110
- ${component.text ? heading2(component.text) : nothing}
68111
- ${component.supportingText ? html$1`
68112
- <p class="banner__supporting-text">${component.supportingText}</p>
68113
- ` : nothing}
68114
- </div>
68115
- ` : nothing}
68116
- <div class="banner__content"
68117
- ?hidden=${!component._hasContent}
68331
+ <div class="banner">
68332
+ <div class="banner__icon"
68333
+ aria-hidden="true"
68118
68334
  >
68119
- <slot></slot>
68335
+ <nldd-icon name=${component._resolvedIcon}></nldd-icon>
68120
68336
  </div>
68121
- <div class="banner__actions"
68122
- ?hidden=${!component._hasActions}
68123
- >
68124
- <nldd-button-group orientation="horizontal">
68125
- <slot name="actions"></slot>
68126
- </nldd-button-group>
68337
+ <div class="banner__main">
68338
+ ${component.text || component.supportingText ? html$1`
68339
+ <div class="banner__heading">
68340
+ ${component.text ? heading2(component.text) : nothing}
68341
+ ${component.supportingText ? html$1`
68342
+ <p class="banner__supporting-text">${component.supportingText}</p>
68343
+ ` : nothing}
68344
+ </div>
68345
+ ` : nothing}
68346
+ <div class="banner__content"
68347
+ ?hidden=${!component._hasContent}
68348
+ >
68349
+ <slot></slot>
68350
+ </div>
68351
+ <div class="banner__actions"
68352
+ ?hidden=${!component._hasActions}
68353
+ >
68354
+ <nldd-button-group orientation="horizontal">
68355
+ <slot name="actions"></slot>
68356
+ </nldd-button-group>
68357
+ </div>
68127
68358
  </div>
68359
+ ${component.dismissible ? html$1`
68360
+ <div class="banner__dismiss-button">
68361
+ <nldd-icon-button
68362
+ icon="dismiss-small"
68363
+ variant="neutral-transparent"
68364
+ size="md"
68365
+ accessible-label=${component._t("components.banner.dismiss-action")}
68366
+ @click=${component._onDismissClick}
68367
+ ></nldd-icon-button>
68368
+ </div>
68369
+ ` : nothing}
68128
68370
  </div>
68129
- ${component.dismissible ? html$1`
68130
- <div class="banner__dismiss-button">
68131
- <nldd-icon-button
68132
- icon="dismiss-small"
68133
- variant="neutral-transparent"
68134
- size="md"
68135
- accessible-label=${component._t("components.banner.dismiss-action")}
68136
- @click=${component._onDismissClick}
68137
- ></nldd-icon-button>
68138
- </div>
68139
- ` : nothing}
68140
68371
  `;
68141
68372
  }
68142
68373
  const nlddBannerTranslations = {
@@ -68989,10 +69220,21 @@ const progressBarSegmentIndicatorStyles = css$1`
68989
69220
  }
68990
69221
 
68991
69222
 
69223
+ /* # Block
69224
+ Full-bleed inner box; carries what must not sit on :host, like the
69225
+ forced-colors outline below. */
69226
+
69227
+ .progress-bar__segment-indicator {
69228
+ position: absolute;
69229
+ inset: 0;
69230
+ border-radius: inherit;
69231
+ }
69232
+
69233
+
68992
69234
  /* # Hover area (tooltip trigger)
68993
69235
  Fills the segment; captures hover/focus for the wrapping nldd-tooltip. */
68994
69236
 
68995
- .progress-bar-segment-indicator__tooltip-area {
69237
+ .progress-bar__segment-indicator-tooltip-area {
68996
69238
  display: block;
68997
69239
  position: absolute;
68998
69240
  inset: 0;
@@ -69010,10 +69252,39 @@ const progressBarSegmentIndicatorStyles = css$1`
69010
69252
  @media (forced-colors: active) {
69011
69253
  :host {
69012
69254
  background-color: CanvasText;
69255
+ }
69256
+
69257
+ /* box-shadow is stripped in forced-colors, so a real border draws the
69258
+ segment outline. It sits on the block element instead of :host, out
69259
+ of reach of consumer universal resets. */
69260
+ .progress-bar__segment-indicator {
69013
69261
  border: 1px solid CanvasText;
69014
69262
  }
69015
69263
  }
69016
69264
  `;
69265
+ function segmentIndicatorTemplate(component) {
69266
+ const text = component._effectiveTooltip;
69267
+ if (!text) {
69268
+ return html$1`
69269
+ <div class="progress-bar__segment-indicator">
69270
+ <span class="progress-bar__segment-indicator-tooltip-area"></span>
69271
+ </div>
69272
+ `;
69273
+ }
69274
+ return html$1`
69275
+ <div class="progress-bar__segment-indicator">
69276
+ <nldd-tooltip text=${text}
69277
+ timing="instant"
69278
+ >
69279
+ <span class="progress-bar__segment-indicator-tooltip-area"
69280
+ tabindex="0"
69281
+ role="img"
69282
+ aria-label=${text}
69283
+ ></span>
69284
+ </nldd-tooltip>
69285
+ </div>
69286
+ `;
69287
+ }
69017
69288
  function progressBarTemplate(component, onSlotChange) {
69018
69289
  const hasCaption = component._hasCaption;
69019
69290
  const isExiting = component._indeterminateExiting;
@@ -69038,7 +69309,7 @@ function progressBarTemplate(component, onSlotChange) {
69038
69309
  aria-valuetext=${component._ariaValueText}
69039
69310
  >
69040
69311
  ${showInternalSegmentIndicator ? html$1`
69041
- <nldd-progress-bar-segment-indicator class="progress-bar__segment-indicator"
69312
+ <nldd-progress-bar-segment-indicator
69042
69313
  .value=${component.value}
69043
69314
  color=${component.color}
69044
69315
  ></nldd-progress-bar-segment-indicator>
@@ -69084,19 +69355,7 @@ let NLDDProgressBarSegmentIndicator = class extends LitElement {
69084
69355
  return this.tooltipText || this._autoTooltipText || "";
69085
69356
  }
69086
69357
  render() {
69087
- const text = this._effectiveTooltip;
69088
- if (!text) {
69089
- return html$1`<span class="progress-bar-segment-indicator__tooltip-area"></span>`;
69090
- }
69091
- return html$1`
69092
- <nldd-tooltip text=${text} timing="instant">
69093
- <span class="progress-bar-segment-indicator__tooltip-area"
69094
- tabindex="0"
69095
- role="img"
69096
- aria-label=${text}
69097
- ></span>
69098
- </nldd-tooltip>
69099
- `;
69358
+ return segmentIndicatorTemplate(this);
69100
69359
  }
69101
69360
  };
69102
69361
  NLDDProgressBarSegmentIndicator.styles = progressBarSegmentIndicatorStyles;
@@ -69297,7 +69556,7 @@ let NLDDProgressBar = class extends LitElement {
69297
69556
  const total = this._totalValue;
69298
69557
  const denominator = total > this.max ? total : this.max;
69299
69558
  const internalSegmentIndicator = this.shadowRoot?.querySelector(
69300
- ".progress-bar__segment-indicator"
69559
+ "nldd-progress-bar-segment-indicator"
69301
69560
  ) ?? null;
69302
69561
  const allSegmentIndicators = internalSegmentIndicator ? [internalSegmentIndicator, ...this._segmentIndicators] : [...this._segmentIndicators];
69303
69562
  const visibleCount = allSegmentIndicators.filter((s) => Math.max(0, s.value) > 0).length;