@nldd/design-system 0.8.74 → 0.8.76

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 (268) 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.d.ts.map +1 -1
  16. package/dist/components/actions/menu/menu.js +19 -1
  17. package/dist/components/actions/menu/menu.js.map +1 -1
  18. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  19. package/dist/components/actions/menu/menu.styles.js +18 -15
  20. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  21. package/dist/components/actions/menu/menu.template.d.ts.map +1 -1
  22. package/dist/components/actions/menu/menu.template.js +11 -9
  23. package/dist/components/actions/menu/menu.template.js.map +1 -1
  24. package/dist/components/actions/split-button/split-button.styles.js +1 -1
  25. package/dist/components/actions/split-button/split-button.styles.js.map +1 -1
  26. package/dist/components/actions/toolbar/toolbar.styles.js +1 -1
  27. package/dist/components/actions/toolbar/toolbar.styles.js.map +1 -1
  28. package/dist/components/components.js +1 -1
  29. package/dist/components/content/avatar/avatar.styles.js +1 -1
  30. package/dist/components/content/avatar/avatar.styles.js.map +1 -1
  31. package/dist/components/content/blockquote/blockquote.styles.js +1 -1
  32. package/dist/components/content/blockquote/blockquote.styles.js.map +1 -1
  33. package/dist/components/content/byline/byline.styles.js +1 -1
  34. package/dist/components/content/byline/byline.styles.js.map +1 -1
  35. package/dist/components/content/code-viewer/code-viewer.styles.js +1 -1
  36. package/dist/components/content/code-viewer/code-viewer.styles.js.map +1 -1
  37. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  38. package/dist/components/content/icon/icon-aliases.js +4 -0
  39. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  40. package/dist/components/content/icon/icon-gallery-status.d.ts.map +1 -1
  41. package/dist/components/content/icon/icon-gallery-status.js +3 -0
  42. package/dist/components/content/icon/icon-gallery-status.js.map +1 -1
  43. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  44. package/dist/components/content/icon/icon-registry.js +3 -0
  45. package/dist/components/content/icon/icon-registry.js.map +1 -1
  46. package/dist/components/content/image/image.styles.js +1 -1
  47. package/dist/components/content/image/image.styles.js.map +1 -1
  48. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js +1 -1
  49. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js.map +1 -1
  50. package/dist/components/content/tag/tag.styles.js +1 -1
  51. package/dist/components/content/tag/tag.styles.js.map +1 -1
  52. package/dist/components/content/title/title.styles.d.ts.map +1 -1
  53. package/dist/components/content/title/title.styles.js +10 -2
  54. package/dist/components/content/title/title.styles.js.map +1 -1
  55. package/dist/components/content/token/token.styles.js +1 -1
  56. package/dist/components/content/token/token.styles.js.map +1 -1
  57. package/dist/components/content/tooltip/tooltip.d.ts +1 -0
  58. package/dist/components/content/tooltip/tooltip.d.ts.map +1 -1
  59. package/dist/components/content/tooltip/tooltip.js +20 -0
  60. package/dist/components/content/tooltip/tooltip.js.map +1 -1
  61. package/dist/components/content/tooltip/tooltip.styles.js +1 -1
  62. package/dist/components/content/tooltip/tooltip.styles.js.map +1 -1
  63. package/dist/components/content/tooltip/tooltip.template.d.ts.map +1 -1
  64. package/dist/components/content/tooltip/tooltip.template.js +7 -0
  65. package/dist/components/content/tooltip/tooltip.template.js.map +1 -1
  66. package/dist/components/forms/form-field/form-field.styles.js +1 -1
  67. package/dist/components/forms/form-field/form-field.styles.js.map +1 -1
  68. package/dist/components/{index-CI0H6jWT.js → index-B04kRPqo.js} +518 -255
  69. package/dist/components/{index-73GOYriu.js → index-C51CBKdx.js} +1 -1
  70. package/dist/components/{index-fjTBz8ya.js → index-C6fLE8SI.js} +1 -1
  71. package/dist/components/{index-CChmEZdd.js → index-CGIRur7T.js} +1 -1
  72. package/dist/components/{index-JawcAuAj.js → index-Ch1zpGsx.js} +1 -1
  73. package/dist/components/{index-CAIa-ZY1.js → index-CnPUd-yq.js} +1 -1
  74. package/dist/components/{index-BBerWrN2.js → index-DumgCqWu.js} +1 -1
  75. package/dist/components/inputs/checkbox-field/checkbox-field.styles.js +1 -1
  76. package/dist/components/inputs/checkbox-field/checkbox-field.styles.js.map +1 -1
  77. package/dist/components/inputs/code-editor/code-editor.styles.js +1 -1
  78. package/dist/components/inputs/code-editor/code-editor.styles.js.map +1 -1
  79. package/dist/components/inputs/combo-box/combo-box.styles.js +1 -1
  80. package/dist/components/inputs/combo-box/combo-box.styles.js.map +1 -1
  81. package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -1
  82. package/dist/components/inputs/date-field/date-field.styles.js +1 -2
  83. package/dist/components/inputs/date-field/date-field.styles.js.map +1 -1
  84. package/dist/components/inputs/date-field/date-field.template.d.ts.map +1 -1
  85. package/dist/components/inputs/date-field/date-field.template.js +6 -0
  86. package/dist/components/inputs/date-field/date-field.template.js.map +1 -1
  87. package/dist/components/inputs/date-picker/date-picker.d.ts +23 -2
  88. package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -1
  89. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts +1 -0
  90. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts.map +1 -1
  91. package/dist/components/inputs/date-picker/date-picker.i18n.js +1 -0
  92. package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -1
  93. package/dist/components/inputs/date-picker/date-picker.js +85 -25
  94. package/dist/components/inputs/date-picker/date-picker.js.map +1 -1
  95. package/dist/components/inputs/date-picker/date-picker.styles.d.ts.map +1 -1
  96. package/dist/components/inputs/date-picker/date-picker.styles.js +15 -4
  97. package/dist/components/inputs/date-picker/date-picker.styles.js.map +1 -1
  98. package/dist/components/inputs/date-picker/date-picker.template.d.ts.map +1 -1
  99. package/dist/components/inputs/date-picker/date-picker.template.js +77 -48
  100. package/dist/components/inputs/date-picker/date-picker.template.js.map +1 -1
  101. package/dist/components/inputs/dropdown/dropdown.styles.js +1 -1
  102. package/dist/components/inputs/dropdown/dropdown.styles.js.map +1 -1
  103. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js +1 -1
  104. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js.map +1 -1
  105. package/dist/components/inputs/number-field/number-field.styles.js +1 -1
  106. package/dist/components/inputs/number-field/number-field.styles.js.map +1 -1
  107. package/dist/components/inputs/password-field/password-field.styles.d.ts.map +1 -1
  108. package/dist/components/inputs/password-field/password-field.styles.js +1 -6
  109. package/dist/components/inputs/password-field/password-field.styles.js.map +1 -1
  110. package/dist/components/inputs/radio-button-field/radio-button-field.styles.js +1 -1
  111. package/dist/components/inputs/radio-button-field/radio-button-field.styles.js.map +1 -1
  112. package/dist/components/inputs/radio-button-group/radio-button-group.styles.js +1 -1
  113. package/dist/components/inputs/radio-button-group/radio-button-group.styles.js.map +1 -1
  114. package/dist/components/inputs/search-field/search-field.styles.js +1 -1
  115. package/dist/components/inputs/search-field/search-field.styles.js.map +1 -1
  116. package/dist/components/inputs/segmented-control/segmented-control.styles.js +1 -1
  117. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  118. package/dist/components/inputs/switch-field/switch-field.styles.js +1 -1
  119. package/dist/components/inputs/switch-field/switch-field.styles.js.map +1 -1
  120. package/dist/components/inputs/text-editor/text-editor.styles.js +1 -1
  121. package/dist/components/inputs/text-editor/text-editor.styles.js.map +1 -1
  122. package/dist/components/inputs/text-field/text-field.styles.js +1 -1
  123. package/dist/components/inputs/text-field/text-field.styles.js.map +1 -1
  124. package/dist/components/inputs/toggle-button/toggle-button.styles.js +1 -1
  125. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  126. package/dist/components/inputs/token-field/token-field.styles.js +1 -1
  127. package/dist/components/inputs/token-field/token-field.styles.js.map +1 -1
  128. package/dist/components/layout/card/card.d.ts +3 -0
  129. package/dist/components/layout/card/card.d.ts.map +1 -1
  130. package/dist/components/layout/card/card.js +6 -0
  131. package/dist/components/layout/card/card.js.map +1 -1
  132. package/dist/components/layout/card/card.styles.d.ts.map +1 -1
  133. package/dist/components/layout/card/card.styles.js +12 -2
  134. package/dist/components/layout/card/card.styles.js.map +1 -1
  135. package/dist/components/layout/collection/collection.d.ts +1 -0
  136. package/dist/components/layout/collection/collection.d.ts.map +1 -1
  137. package/dist/components/layout/collection/collection.js +54 -4
  138. package/dist/components/layout/collection/collection.js.map +1 -1
  139. package/dist/components/layout/container/container.styles.d.ts.map +1 -1
  140. package/dist/components/layout/container/container.styles.js +84 -70
  141. package/dist/components/layout/container/container.styles.js.map +1 -1
  142. package/dist/components/layout/container/container.template.d.ts.map +1 -1
  143. package/dist/components/layout/container/container.template.js +13 -5
  144. package/dist/components/layout/container/container.template.js.map +1 -1
  145. package/dist/components/layout/page-footer/page-footer.styles.js +1 -1
  146. package/dist/components/layout/page-footer/page-footer.styles.js.map +1 -1
  147. package/dist/components/layout/page-sections/hero/hero.styles.js +1 -1
  148. package/dist/components/layout/page-sections/hero/hero.styles.js.map +1 -1
  149. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  150. package/dist/components/layout/popover/popover.js +21 -8
  151. package/dist/components/layout/popover/popover.js.map +1 -1
  152. package/dist/components/layout/window/window.styles.js +1 -1
  153. package/dist/components/layout/window/window.styles.js.map +1 -1
  154. package/dist/components/lists-and-tables/cells/cell/cell.styles.d.ts.map +1 -1
  155. package/dist/components/lists-and-tables/cells/cell/cell.styles.js +3 -2
  156. package/dist/components/lists-and-tables/cells/cell/cell.styles.js.map +1 -1
  157. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.d.ts.map +1 -1
  158. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js +3 -2
  159. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js.map +1 -1
  160. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.d.ts.map +1 -1
  161. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.js +2 -1
  162. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.js.map +1 -1
  163. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.d.ts.map +1 -1
  164. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js +2 -1
  165. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js.map +1 -1
  166. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.d.ts.map +1 -1
  167. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js +3 -2
  168. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js.map +1 -1
  169. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts +7 -3
  170. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts.map +1 -1
  171. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js +4 -2
  172. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js.map +1 -1
  173. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.d.ts.map +1 -1
  174. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.js +2 -1
  175. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.js.map +1 -1
  176. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.d.ts.map +1 -1
  177. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js +3 -2
  178. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js.map +1 -1
  179. package/dist/components/lists-and-tables/list-item/list-item.d.ts +19 -6
  180. package/dist/components/lists-and-tables/list-item/list-item.d.ts.map +1 -1
  181. package/dist/components/lists-and-tables/list-item/list-item.js +30 -7
  182. package/dist/components/lists-and-tables/list-item/list-item.js.map +1 -1
  183. package/dist/components/lists-and-tables/list-item/list-item.styles.d.ts.map +1 -1
  184. package/dist/components/lists-and-tables/list-item/list-item.styles.js +4 -1
  185. package/dist/components/lists-and-tables/list-item/list-item.styles.js.map +1 -1
  186. package/dist/components/lists-and-tables/table/table.styles.d.ts.map +1 -1
  187. package/dist/components/lists-and-tables/table/table.styles.js +10 -4
  188. package/dist/components/lists-and-tables/table/table.styles.js.map +1 -1
  189. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.js +1 -1
  190. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.js.map +1 -1
  191. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +1 -1
  192. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js.map +1 -1
  193. package/dist/components/navigation/link/link.styles.js +1 -1
  194. package/dist/components/navigation/link/link.styles.js.map +1 -1
  195. package/dist/components/navigation/menu-bar/menu-bar.styles.js +1 -1
  196. package/dist/components/navigation/menu-bar/menu-bar.styles.js.map +1 -1
  197. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js +1 -1
  198. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js.map +1 -1
  199. package/dist/components/navigation/pagination/pagination.styles.js +1 -1
  200. package/dist/components/navigation/pagination/pagination.styles.js.map +1 -1
  201. package/dist/components/navigation/skip-link/skip-link.styles.js +1 -1
  202. package/dist/components/navigation/skip-link/skip-link.styles.js.map +1 -1
  203. package/dist/components/navigation/tab-bar/tab-bar.styles.js +1 -1
  204. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  205. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js +1 -1
  206. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js.map +1 -1
  207. package/dist/components/navigation/top-title-bar/top-title-bar.styles.js +1 -1
  208. package/dist/components/navigation/top-title-bar/top-title-bar.styles.js.map +1 -1
  209. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +1 -1
  210. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js.map +1 -1
  211. package/dist/components/status-and-feedback/badge/badge.styles.js +1 -1
  212. package/dist/components/status-and-feedback/badge/badge.styles.js.map +1 -1
  213. package/dist/components/status-and-feedback/banner/banner.styles.d.ts.map +1 -1
  214. package/dist/components/status-and-feedback/banner/banner.styles.js +26 -16
  215. package/dist/components/status-and-feedback/banner/banner.styles.js.map +1 -1
  216. package/dist/components/status-and-feedback/banner/banner.template.d.ts.map +1 -1
  217. package/dist/components/status-and-feedback/banner/banner.template.js +36 -34
  218. package/dist/components/status-and-feedback/banner/banner.template.js.map +1 -1
  219. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js +1 -1
  220. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js.map +1 -1
  221. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js +1 -1
  222. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js.map +1 -1
  223. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.styles.js +1 -1
  224. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.styles.js.map +1 -1
  225. package/dist/components/status-and-feedback/progress-bar/progress-bar.d.ts.map +1 -1
  226. package/dist/components/status-and-feedback/progress-bar/progress-bar.js +4 -28
  227. package/dist/components/status-and-feedback/progress-bar/progress-bar.js.map +1 -1
  228. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.d.ts.map +1 -1
  229. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +19 -2
  230. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js.map +1 -1
  231. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.d.ts +2 -1
  232. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.d.ts.map +1 -1
  233. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.js +36 -1
  234. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.js.map +1 -1
  235. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +1 -1
  236. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js.map +1 -1
  237. package/dist/components/status-and-feedback/status-bar/status-bar.styles.js +1 -1
  238. package/dist/components/status-and-feedback/status-bar/status-bar.styles.js.map +1 -1
  239. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.js +1 -1
  240. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.js.map +1 -1
  241. package/dist/css/{palettes.generated.css → colors.generated.css} +1 -1
  242. package/dist/css/document-reset.css +16 -0
  243. package/dist/css/global-system-font.css +6 -0
  244. package/dist/css/global.css +3 -2
  245. package/dist/css/rich-text.css +35 -0
  246. package/dist/css/rijksoverheid-fonts.css +40 -0
  247. package/dist/css/tokens.css +2 -0
  248. package/dist/css/{settings.css → variables.css} +9 -39
  249. package/dist/types/vue.d.ts +7 -1
  250. package/dist/utilities/codemirror/theme.js +1 -1
  251. package/dist/utilities/page-section-mixin.d.ts.map +1 -1
  252. package/dist/utilities/page-section-mixin.js +0 -1
  253. package/dist/utilities/page-section-mixin.js.map +1 -1
  254. package/dist/utilities/visibility-mixin.d.ts.map +1 -1
  255. package/dist/utilities/visibility-mixin.js +0 -1
  256. package/dist/utilities/visibility-mixin.js.map +1 -1
  257. package/dist/utilities/with-translations.d.ts.map +1 -1
  258. package/dist/utilities/with-translations.js.map +1 -1
  259. package/package.json +14 -8
  260. package/dist/assets/styles/style-resets.d.ts.map +0 -1
  261. package/dist/assets/styles/style-resets.fixtures.d.ts.map +0 -1
  262. package/dist/assets/styles/style-resets.fixtures.js.map +0 -1
  263. package/dist/assets/styles/style-resets.js.map +0 -1
  264. package/dist/assets/styles/tokens.d.ts +0 -25
  265. package/dist/assets/styles/tokens.d.ts.map +0 -1
  266. package/dist/assets/styles/tokens.js +0 -25
  267. package/dist/assets/styles/tokens.js.map +0 -1
  268. 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);
@@ -6155,6 +6189,9 @@ const _NLDDMenu = (_c = class extends LitElement {
6155
6189
  item.menuVariant = this.variant;
6156
6190
  });
6157
6191
  }
6192
+ if (changedProperties.has("anchor") || changedProperties.has("anchorElement")) {
6193
+ this._syncAnchorPopupState(this._isOpen);
6194
+ }
6158
6195
  }
6159
6196
  // — Anchor ————————————————————————————————————————————————————————————————
6160
6197
  _getAnchorEl() {
@@ -6208,7 +6245,7 @@ const _NLDDMenu = (_c = class extends LitElement {
6208
6245
  const anchor = this._getAnchorEl();
6209
6246
  if (!anchor) return;
6210
6247
  if ("expanded" in anchor) anchor.expanded = isOpen;
6211
- if (isOpen && "popupType" in anchor && !anchor.popupType) {
6248
+ if ("popupType" in anchor && !anchor.popupType) {
6212
6249
  anchor.popupType = this.variant === "listbox" ? "listbox" : "menu";
6213
6250
  }
6214
6251
  if ("popoverTargetAction" in anchor) {
@@ -6546,6 +6583,7 @@ const _NLDDMenu = (_c = class extends LitElement {
6546
6583
  this._updateEmptyState();
6547
6584
  this._onHeaderSlotChange();
6548
6585
  this._onFooterSlotChange();
6586
+ Promise.resolve().then(() => this._syncAnchorPopupState(this._isOpen));
6549
6587
  }
6550
6588
  disconnectedCallback() {
6551
6589
  super.disconnectedCallback();
@@ -26851,16 +26889,16 @@ const highlightStyle = HighlightStyle.define([
26851
26889
  ]);
26852
26890
  const nlddCodeMirrorTheme = [baseTheme$1, syntaxHighlighting(highlightStyle)];
26853
26891
  const loaders = {
26854
- json: async () => (await import("./index-CChmEZdd.js")).json(),
26855
- yaml: async () => (await import("./index-CAIa-ZY1.js")).yaml(),
26892
+ json: async () => (await import("./index-CGIRur7T.js")).json(),
26893
+ yaml: async () => (await import("./index-CnPUd-yq.js")).yaml(),
26856
26894
  javascript: async () => (await Promise.resolve().then(() => index$2)).javascript(),
26857
26895
  typescript: async () => (await Promise.resolve().then(() => index$2)).javascript({ typescript: true }),
26858
26896
  css: async () => (await Promise.resolve().then(() => index$3)).css(),
26859
26897
  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(),
26898
+ xml: async () => (await import("./index-Ch1zpGsx.js")).xml(),
26899
+ python: async () => (await import("./index-C51CBKdx.js")).python(),
26900
+ rust: async () => (await import("./index-DumgCqWu.js")).rust(),
26901
+ sql: async () => (await import("./index-C6fLE8SI.js")).sql(),
26864
26902
  markdown: async () => (await Promise.resolve().then(() => index)).markdown(),
26865
26903
  // No official lang-* package — wrap the legacy StreamLanguage modes.
26866
26904
  bash: async () => new LanguageSupport(StreamLanguage.define((await import("./shell-BlsXDxCn.js")).shell)),
@@ -28682,14 +28720,22 @@ const titleStyles = css$1`
28682
28720
  overflow-wrap: anywhere !important;
28683
28721
  }
28684
28722
 
28723
+ /* balance, not pretty: a heading is a handful of words, so evening out the
28724
+ line lengths reads better than only protecting the last line.
28725
+ *
28726
+ * The measure is in ch, so one value covers every size: ch scales with the
28727
+ * font, and 40 characters stays 40 characters whether the title is 18px or
28728
+ * 52px. It only bites in a wide container — inside a card or a column the
28729
+ * box is already narrower than the cap. */
28685
28730
  ::slotted(:not([slot])) {
28686
28731
  ${slottedReset}
28687
28732
  ${inheritedTextReset}
28688
28733
  margin: 0 !important;
28734
+ max-width: 40ch !important;
28689
28735
  color: var(--semantics-content-color) !important;
28690
28736
  font: var(--_font) !important;
28691
28737
  overflow-wrap: anywhere !important;
28692
- text-wrap: pretty !important;
28738
+ text-wrap: balance !important;
28693
28739
  }
28694
28740
 
28695
28741
  ::slotted([slot="subtitle"]) {
@@ -32608,7 +32654,6 @@ const dateFieldStyles = css$1`
32608
32654
  border-radius: var(--_corner-radius);
32609
32655
  background-color: var(--_background-color);
32610
32656
  min-height: var(--_min-size);
32611
- overflow: hidden;
32612
32657
  padding-left: calc(var(--_inline-padding) - var(--semantics-input-fields-border-width));
32613
32658
  flex-direction: row;
32614
32659
  align-items: center;
@@ -32991,8 +33036,11 @@ let NLDDPopover = class extends LitElement {
32991
33036
  this.hide();
32992
33037
  return;
32993
33038
  }
32994
- event.preventDefault();
32995
- focusables[event.shiftKey ? idx - 1 : idx + 1]?.focus();
33039
+ if (idx === -1) {
33040
+ event.preventDefault();
33041
+ focusables[0]?.focus({ focusVisible: true });
33042
+ return;
33043
+ }
32996
33044
  };
32997
33045
  }
32998
33046
  get open() {
@@ -33302,7 +33350,8 @@ const containerStyles = css$1`
33302
33350
  }
33303
33351
 
33304
33352
 
33305
- /* # Host — outer chrome (padding + scheme + query container) */
33353
+ /* # Host — external contract; padding and the query container live on
33354
+ .container in the shadow root, out of reach of consumer resets */
33306
33355
 
33307
33356
  :host {
33308
33357
  --_min-column-width: var(--primitives-area-280);
@@ -33333,12 +33382,37 @@ const containerStyles = css$1`
33333
33382
  --_slot-sm-order: var(--_slot-order);
33334
33383
  --_slot-md-order: var(--_slot-order);
33335
33384
  --_slot-lg-order: var(--_slot-order);
33385
+ /* One resolved gap for every layout to read. Multicol splits the gap
33386
+ over two properties (column-gap plus a margin on the items), so a
33387
+ per-breakpoint declaration would have to be repeated in three
33388
+ rules; swapping the var keeps that in one place. */
33389
+ --_resolved-gap: var(--_gap);
33390
+
33391
+ @media (max-width: ${smMax$e}) { --_resolved-gap: var(--_sm-gap); }
33392
+ @media (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) { --_resolved-gap: var(--_md-gap); }
33393
+ @media (min-width: ${lgMin$d}) { --_resolved-gap: var(--_lg-gap); }
33394
+
33395
+ @container layout-container (max-width: ${smMax$e}) { --_resolved-gap: var(--_sm-gap); }
33396
+ @container layout-container (min-width: ${mdMin$f}) and (max-width: ${mdMax$c}) { --_resolved-gap: var(--_md-gap); }
33397
+ @container layout-container (min-width: ${lgMin$d}) { --_resolved-gap: var(--_lg-gap); }
33336
33398
 
33337
- container-type: inline-size;
33338
33399
  display: block;
33339
- box-sizing: border-box;
33340
33400
  width: 100%;
33341
33401
  height: auto;
33402
+ }
33403
+
33404
+ :host([hidden]) {
33405
+ display: none;
33406
+ }
33407
+
33408
+
33409
+ /* # Outer chrome — padding + query container. Size queries measure the
33410
+ content box, so .container reports the same padded interior width the
33411
+ host reported when it carried the padding itself. */
33412
+
33413
+ .container {
33414
+ container-type: inline-size;
33415
+ box-sizing: border-box;
33342
33416
  padding-top: var(--_padding-top);
33343
33417
  padding-right: var(--_padding-right);
33344
33418
  padding-bottom: var(--_padding-bottom);
@@ -33387,41 +33461,29 @@ const containerStyles = css$1`
33387
33461
  }
33388
33462
  }
33389
33463
 
33390
- :host([hidden]) {
33391
- display: none;
33392
- }
33393
-
33394
33464
 
33395
33465
  /* # Inner — actual layout */
33396
33466
 
33397
- .container {
33467
+ .container__inner {
33398
33468
  display: flex;
33399
33469
  flex-direction: column;
33400
33470
  flex-wrap: nowrap;
33401
33471
  justify-content: var(--_justify-content);
33402
33472
  justify-items: var(--_justify-items);
33403
33473
  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); }
33474
+ gap: var(--_resolved-gap);
33413
33475
  }
33414
33476
 
33415
- :host([layout="row"]) .container {
33477
+ :host([layout="row"]) .container__inner {
33416
33478
  flex-direction: row;
33417
33479
  }
33418
33480
 
33419
- :host([layout="wrap"]) .container {
33481
+ :host([layout="wrap"]) .container__inner {
33420
33482
  flex-direction: row;
33421
33483
  flex-wrap: wrap;
33422
33484
  }
33423
33485
 
33424
- :host([layout="grid"]) .container {
33486
+ :host([layout="grid"]) .container__inner {
33425
33487
  display: grid;
33426
33488
  grid-template-columns: repeat(
33427
33489
  var(--_column-count, auto-fit),
@@ -33429,10 +33491,10 @@ const containerStyles = css$1`
33429
33491
  );
33430
33492
  }
33431
33493
 
33432
- :host([layout="columns"]) .container {
33494
+ :host([layout="columns"]) .container__inner {
33433
33495
  display: block;
33434
33496
  columns: var(--_min-column-width);
33435
- column-gap: var(--_gap);
33497
+ column-gap: var(--_resolved-gap);
33436
33498
  }
33437
33499
 
33438
33500
  :host([layout="columns"]) ::slotted(*) {
@@ -33442,21 +33504,21 @@ const containerStyles = css$1`
33442
33504
  /* Lanes — native CSS grid-lanes where supported, CSS multicol fallback
33443
33505
  otherwise. CSS-only (no JS). Fallback flows column-order; native lanes
33444
33506
  packs shortest-column (row-order). */
33445
- :host([layout="lanes"]) .container {
33507
+ :host([layout="lanes"]) .container__inner {
33446
33508
  display: block;
33447
33509
  columns: var(--_min-column-width);
33448
- column-gap: var(--_gap);
33510
+ column-gap: var(--_resolved-gap);
33449
33511
  }
33450
33512
 
33451
33513
  :host([layout="lanes"]) ::slotted(*) {
33452
33514
  break-inside: avoid;
33453
33515
  /* multicol has no row-gap; item margin supplies the vertical gap. The
33454
33516
  native branch resets this (grid-lanes gap covers both axes). */
33455
- margin-bottom: var(--_gap);
33517
+ margin-bottom: var(--_resolved-gap);
33456
33518
  }
33457
33519
 
33458
33520
  @supports (display: grid-lanes) {
33459
- :host([layout="lanes"]) .container {
33521
+ :host([layout="lanes"]) .container__inner {
33460
33522
  display: grid-lanes;
33461
33523
  grid-template-columns: repeat(
33462
33524
  var(--_column-count, auto-fill),
@@ -33469,14 +33531,14 @@ const containerStyles = css$1`
33469
33531
  }
33470
33532
  }
33471
33533
 
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 {
33534
+ :host([layout="columns"][column-count]) .container__inner,
33535
+ :host([layout="columns"][sm-column-count]) .container__inner,
33536
+ :host([layout="columns"][md-column-count]) .container__inner,
33537
+ :host([layout="columns"][lg-column-count]) .container__inner,
33538
+ :host([layout="lanes"][column-count]) .container__inner,
33539
+ :host([layout="lanes"][sm-column-count]) .container__inner,
33540
+ :host([layout="lanes"][md-column-count]) .container__inner,
33541
+ :host([layout="lanes"][lg-column-count]) .container__inner {
33480
33542
  column-count: var(--_column-count);
33481
33543
  column-width: auto;
33482
33544
  }
@@ -33484,59 +33546,59 @@ const containerStyles = css$1`
33484
33546
 
33485
33547
  /* # Column count — base scope */
33486
33548
 
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; }
33549
+ :host([column-count="1"]) .container__inner { --_column-count: 1; }
33550
+ :host([column-count="2"]) .container__inner { --_column-count: 2; }
33551
+ :host([column-count="3"]) .container__inner { --_column-count: 3; }
33552
+ :host([column-count="4"]) .container__inner { --_column-count: 4; }
33553
+ :host([column-count="5"]) .container__inner { --_column-count: 5; }
33554
+ :host([column-count="6"]) .container__inner { --_column-count: 6; }
33555
+ :host([column-count="7"]) .container__inner { --_column-count: 7; }
33556
+ :host([column-count="8"]) .container__inner { --_column-count: 8; }
33557
+ :host([column-count]) .container__inner { --_track-min: 0; }
33496
33558
 
33497
33559
 
33498
33560
  /* # Column count — sm scope (queries :host own width) */
33499
33561
 
33500
33562
  @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; }
33563
+ :host([sm-column-count="1"]) .container__inner { --_column-count: 1; }
33564
+ :host([sm-column-count="2"]) .container__inner { --_column-count: 2; }
33565
+ :host([sm-column-count="3"]) .container__inner { --_column-count: 3; }
33566
+ :host([sm-column-count="4"]) .container__inner { --_column-count: 4; }
33567
+ :host([sm-column-count="5"]) .container__inner { --_column-count: 5; }
33568
+ :host([sm-column-count="6"]) .container__inner { --_column-count: 6; }
33569
+ :host([sm-column-count="7"]) .container__inner { --_column-count: 7; }
33570
+ :host([sm-column-count="8"]) .container__inner { --_column-count: 8; }
33571
+ :host([sm-column-count]) .container__inner { --_track-min: 0; }
33510
33572
  }
33511
33573
 
33512
33574
 
33513
33575
  /* # Column count — md scope */
33514
33576
 
33515
33577
  @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; }
33578
+ :host([md-column-count="1"]) .container__inner { --_column-count: 1; }
33579
+ :host([md-column-count="2"]) .container__inner { --_column-count: 2; }
33580
+ :host([md-column-count="3"]) .container__inner { --_column-count: 3; }
33581
+ :host([md-column-count="4"]) .container__inner { --_column-count: 4; }
33582
+ :host([md-column-count="5"]) .container__inner { --_column-count: 5; }
33583
+ :host([md-column-count="6"]) .container__inner { --_column-count: 6; }
33584
+ :host([md-column-count="7"]) .container__inner { --_column-count: 7; }
33585
+ :host([md-column-count="8"]) .container__inner { --_column-count: 8; }
33586
+ :host([md-column-count]) .container__inner { --_track-min: 0; }
33525
33587
  }
33526
33588
 
33527
33589
 
33528
33590
  /* # Column count — lg scope */
33529
33591
 
33530
33592
  @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; }
33593
+ :host([lg-column-count="1"]) .container__inner { --_column-count: 1; }
33594
+ :host([lg-column-count="2"]) .container__inner { --_column-count: 2; }
33595
+ :host([lg-column-count="3"]) .container__inner { --_column-count: 3; }
33596
+ :host([lg-column-count="4"]) .container__inner { --_column-count: 4; }
33597
+ :host([lg-column-count="5"]) .container__inner { --_column-count: 5; }
33598
+ :host([lg-column-count="6"]) .container__inner { --_column-count: 6; }
33599
+ :host([lg-column-count="7"]) .container__inner { --_column-count: 7; }
33600
+ :host([lg-column-count="8"]) .container__inner { --_column-count: 8; }
33601
+ :host([lg-column-count]) .container__inner { --_track-min: 0; }
33540
33602
  }
33541
33603
 
33542
33604
 
@@ -33565,7 +33627,13 @@ const containerStyles = css$1`
33565
33627
  }
33566
33628
  `;
33567
33629
  function containerTemplate(component) {
33568
- return html$1`<div class="container"><slot @slotchange=${component._onSlotChange}></slot></div>`;
33630
+ return html$1`
33631
+ <div class="container">
33632
+ <div class="container__inner">
33633
+ <slot @slotchange=${component._onSlotChange}></slot>
33634
+ </div>
33635
+ </div>
33636
+ `;
33569
33637
  }
33570
33638
  var __defProp$15 = Object.defineProperty;
33571
33639
  var __getOwnPropDesc$15 = Object.getOwnPropertyDescriptor;
@@ -34217,6 +34285,7 @@ const datePickerStyles = css$1`
34217
34285
  --_footer-margin-top: var(--primitives-space-8);
34218
34286
  --_title-font: var(--primitives-font-display-5-sm);
34219
34287
  --_title-button-corner-radius: var(--semantics-controls-sm-corner-radius);
34288
+ --_title-button-min-size: var(--semantics-controls-sm-min-size);
34220
34289
  --_title-picker-icon-size: var(--primitives-space-20);
34221
34290
  --_weekday-header-font: var(--primitives-font-body-xs-regular-flat);
34222
34291
  --_weekday-header-content-color: var(--semantics-content-secondary-color);
@@ -34230,7 +34299,7 @@ const datePickerStyles = css$1`
34230
34299
  --_width: initial;
34231
34300
  --_day-size: var(--semantics-controls-md-min-size);
34232
34301
  --_day-corner-radius: var(--semantics-controls-md-corner-radius);
34233
- --_day-font: var(--primitives-font-body-sm-regular-flat);
34302
+ --_day-font: var(--primitives-font-body-sm-medium-flat);
34234
34303
  --_day-indicator-inset: var(--primitives-space-2);
34235
34304
  --_day-indicator-size: calc(var(--_day-size) - var(--_day-indicator-inset) * 2);
34236
34305
  --_day-indicator-corner-radius: var(--_day-corner-radius);
@@ -34263,6 +34332,7 @@ const datePickerStyles = css$1`
34263
34332
  asked for. */
34264
34333
  :host([stacked]) {
34265
34334
  --_title-font: var(--primitives-font-display-4-sm);
34335
+ --_title-button-min-size: var(--semantics-controls-md-min-size);
34266
34336
 
34267
34337
  width: var(--_width, 100%);
34268
34338
  }
@@ -34295,11 +34365,18 @@ const datePickerStyles = css$1`
34295
34365
  }
34296
34366
 
34297
34367
  .date-picker__title {
34368
+ display: flex;
34298
34369
  margin: 0;
34370
+ align-items: center;
34371
+ gap: var(--primitives-space-4);
34299
34372
  font: var(--_title-font);
34373
+ /* A heading that breaks between month and year stops answering the one
34374
+ question it is there for. */
34375
+ white-space: nowrap;
34300
34376
  }
34301
34377
 
34302
- .date-picker__title-button {
34378
+ .date-picker__title-month-button,
34379
+ .date-picker__title-year-button {
34303
34380
  box-sizing: border-box;
34304
34381
  display: flex;
34305
34382
  margin: 0;
@@ -34307,6 +34384,7 @@ const datePickerStyles = css$1`
34307
34384
  border: none;
34308
34385
  border-radius: var(--_title-button-corner-radius);
34309
34386
  background: none;
34387
+ min-height: var(--_title-button-min-size);
34310
34388
  padding: 0;
34311
34389
  align-items: center;
34312
34390
  color: inherit;
@@ -34322,7 +34400,8 @@ const datePickerStyles = css$1`
34322
34400
  align-items: center;
34323
34401
  }
34324
34402
 
34325
- .date-picker__title-button:focus-visible {
34403
+ .date-picker__title-month-button:focus-visible,
34404
+ .date-picker__title-year-button:focus-visible {
34326
34405
  outline: var(--semantics-focus-ring-outline);
34327
34406
  outline-offset: var(--semantics-focus-ring-outline-offset);
34328
34407
  box-shadow: var(--semantics-focus-ring-box-shadow);
@@ -34553,6 +34632,7 @@ const nlddDatePickerTranslations = {
34553
34632
  "components.date-picker.view-previous-month-action": "Vorige maand",
34554
34633
  "components.date-picker.view-next-month-action": "Volgende maand",
34555
34634
  "components.date-picker.view-today-action": "Vandaag",
34635
+ "components.date-picker.choose-month-action": "Kies een maand",
34556
34636
  "components.date-picker.choose-year-action": "Kies een jaar",
34557
34637
  // Twee vormen, want de maandnaam staat zowel midden in een datumlabel
34558
34638
  // ("maandag 29 juni 2026") als los in de kop erboven. Welke vorm waar hoort is
@@ -34625,51 +34705,78 @@ const nlddDatePickerTranslations = {
34625
34705
  "components.date-picker.range-blocked-text": "Die periode bevat een datum die niet beschikbaar is. Kies een andere."
34626
34706
  };
34627
34707
  const TITLE_ID = "date-picker-title";
34708
+ function renderTitlePart(component, part, label, choices, expanded) {
34709
+ if (choices < 2) return html$1`<span class="date-picker__title-label">${label}</span>`;
34710
+ return html$1`
34711
+ <button class="date-picker__title-${part}-button"
34712
+ type="button"
34713
+ aria-haspopup="menu"
34714
+ aria-expanded=${expanded ? "true" : "false"}
34715
+ >
34716
+ ${label}
34717
+ <span class="date-picker__title-picker-icon">
34718
+ <nldd-icon
34719
+ name="chevron-down-small"
34720
+ aria-hidden="true"
34721
+ ></nldd-icon>
34722
+ </span>
34723
+ </button>
34724
+ `;
34725
+ }
34628
34726
  function renderHeader(component) {
34727
+ const months = component._months;
34728
+ const years = component._years;
34629
34729
  return html$1`
34630
34730
  <div class="date-picker__header">
34631
34731
  <h2 class="date-picker__title"
34632
34732
  id=${TITLE_ID}
34633
34733
  aria-live="polite"
34634
34734
  >
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>
34735
+ ${renderTitlePart(component, "month", component._monthLabel, months.length, component._monthMenuOpen)}
34736
+ ${renderTitlePart(component, "year", String(component._viewYear), years.length, component._yearMenuOpen)}
34648
34737
  </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>
34738
+ ${months.length < 2 ? nothing : html$1`
34739
+ <nldd-menu class="date-picker__month-menu"
34740
+ accessible-label=${component._t("components.date-picker.choose-month-action")}
34741
+ width="176px"
34742
+ @toggle=${component._handleMonthMenuToggle}
34743
+ >
34744
+ ${months.map((month) => html$1`
34745
+ <nldd-menu-item
34746
+ type="radio"
34747
+ text=${component._t(`components.date-picker.${MONTH_KEYS[month - 1]}-capitalize`)}
34748
+ ?selected=${month === component._viewMonth}
34749
+ @click=${() => component._handleMonthSelect(month)}
34750
+ ></nldd-menu-item>
34751
+ `)}
34752
+ </nldd-menu>
34753
+ `}
34754
+ ${years.length < 2 ? nothing : html$1`
34755
+ <nldd-menu class="date-picker__year-menu"
34756
+ accessible-label=${component._t("components.date-picker.choose-year-action")}
34757
+ max-items="8"
34758
+ width="136px"
34759
+ @toggle=${component._handleYearMenuToggle}
34760
+ >
34761
+ ${years.map((year) => html$1`
34762
+ <nldd-menu-item
34763
+ type="radio"
34764
+ text=${String(year)}
34765
+ ?selected=${year === component._viewYear}
34766
+ @click=${() => component._handleYearSelect(year)}
34767
+ ></nldd-menu-item>
34768
+ `)}
34769
+ </nldd-menu>
34770
+ `}
34664
34771
  ${component._stacked ? nothing : html$1`
34665
34772
  <div class="date-picker__pagination">
34666
- ${renderPagination(component, "sm", "neutral-base", true)}
34773
+ ${renderPagination(component, "sm", "neutral-base")}
34667
34774
  </div>
34668
34775
  `}
34669
34776
  </div>
34670
34777
  `;
34671
34778
  }
34672
- function renderPagination(component, size2, variant, withToday) {
34779
+ function renderPagination(component, size2, variant) {
34673
34780
  return html$1`
34674
34781
  <nldd-button-bar
34675
34782
  size=${size2}
@@ -34681,13 +34788,6 @@ function renderPagination(component, size2, variant, withToday) {
34681
34788
  tooltip-timing="never"
34682
34789
  @click=${() => component._shiftView(-1)}
34683
34790
  ></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
34791
  <nldd-button-bar-divider></nldd-button-bar-divider>
34692
34792
  <nldd-icon-button
34693
34793
  icon="chevron-right"
@@ -34698,13 +34798,13 @@ function renderPagination(component, size2, variant, withToday) {
34698
34798
  </nldd-button-bar>
34699
34799
  `;
34700
34800
  }
34701
- function renderFooter(component) {
34801
+ function renderFooter(component, withPagination) {
34702
34802
  return html$1`
34703
34803
  <div class="date-picker__footer">
34704
34804
  <div class="date-picker__footer-start">
34705
34805
  ${component._todayReachable ? html$1`
34706
34806
  <nldd-button
34707
- size="md"
34807
+ size=${withPagination ? "md" : "sm"}
34708
34808
  variant="neutral-tinted"
34709
34809
  text=${component._t("components.date-picker.view-today-action")}
34710
34810
  @click=${component._handleToday}
@@ -34712,7 +34812,7 @@ function renderFooter(component) {
34712
34812
  ` : nothing}
34713
34813
  </div>
34714
34814
  <div class="date-picker__footer-end">
34715
- ${renderPagination(component, "md", "neutral-tinted", false)}
34815
+ ${withPagination ? renderPagination(component, "md", "neutral-tinted") : nothing}
34716
34816
  </div>
34717
34817
  </div>
34718
34818
  `;
@@ -34813,7 +34913,7 @@ function datePickerTemplate(component) {
34813
34913
  `)}
34814
34914
  </tbody>
34815
34915
  </table>
34816
- ${component._stacked ? renderFooter(component) : nothing}
34916
+ ${component._stacked || component._todayReachable ? renderFooter(component, component._stacked) : nothing}
34817
34917
  <div class="date-picker__announcer"
34818
34918
  role="status"
34819
34919
  aria-live="polite"
@@ -34883,6 +34983,12 @@ function withYear(iso, year) {
34883
34983
  const lastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();
34884
34984
  return toIso(year, month, Math.min(day, lastDay)) ?? iso;
34885
34985
  }
34986
+ function withMonth(iso, month) {
34987
+ const year = Number(iso.slice(0, 4));
34988
+ const day = Number(iso.slice(8, 10));
34989
+ const lastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();
34990
+ return toIso(year, month, Math.min(day, lastDay)) ?? iso;
34991
+ }
34886
34992
  function clampIso(iso, min, max) {
34887
34993
  if (min && iso < min) return min;
34888
34994
  if (max && iso > max) return max;
@@ -34909,6 +35015,7 @@ let NLDDDatePicker = class extends withTranslations(
34909
35015
  this._anchor = "";
34910
35016
  this._hover = "";
34911
35017
  this._announcement = "";
35018
+ this._monthMenuOpen = false;
34912
35019
  this._yearMenuOpen = false;
34913
35020
  this._stacked = false;
34914
35021
  this._handleStackedChange = () => {
@@ -34931,13 +35038,19 @@ let NLDDDatePicker = class extends withTranslations(
34931
35038
  this._commitRange(origin, iso);
34932
35039
  };
34933
35040
  }
35041
+ async _handleMonthMenuToggle(e) {
35042
+ this._monthMenuOpen = e.newState === "open";
35043
+ if (this._monthMenuOpen) await this._openMenuOnSelection(".date-picker__month-menu");
35044
+ }
34934
35045
  async _handleYearMenuToggle(e) {
34935
35046
  this._yearMenuOpen = e.newState === "open";
34936
- if (!this._yearMenuOpen) return;
34937
- const menu = this.shadowRoot?.querySelector("nldd-menu");
35047
+ if (this._yearMenuOpen) await this._openMenuOnSelection(".date-picker__year-menu");
35048
+ }
35049
+ async _openMenuOnSelection(selector) {
35050
+ const menu = this.shadowRoot?.querySelector(selector);
34938
35051
  await menu?.updateComplete;
34939
35052
  const focusSelected = () => {
34940
- const selected = this.shadowRoot?.querySelector("nldd-menu-item[selected]");
35053
+ const selected = menu?.querySelector("nldd-menu-item[selected]");
34941
35054
  if (!selected || this.shadowRoot?.activeElement === selected) return;
34942
35055
  selected.scrollIntoView({ block: "nearest" });
34943
35056
  selected.focus({ preventScroll: true });
@@ -34982,9 +35095,10 @@ let NLDDDatePicker = class extends withTranslations(
34982
35095
  this.style.removeProperty("--_width");
34983
35096
  }
34984
35097
  }
34985
- const menu = this.shadowRoot?.querySelector("nldd-menu");
34986
- const title = this.shadowRoot?.querySelector(".date-picker__title-button");
34987
- if (menu && title) {
35098
+ for (const part of ["month", "year"]) {
35099
+ const menu = this.shadowRoot?.querySelector(`.date-picker__${part}-menu`);
35100
+ const title = this.shadowRoot?.querySelector(`.date-picker__title-${part}-button`);
35101
+ if (!menu || !title) continue;
34988
35102
  if (menu.anchorElement !== title) menu.anchorElement = title;
34989
35103
  if (title.popoverTargetElement !== menu) title.popoverTargetElement = menu;
34990
35104
  }
@@ -35069,6 +35183,26 @@ let NLDDDatePicker = class extends withTranslations(
35069
35183
  get _viewMonth() {
35070
35184
  return Number(this._view.slice(5, 7));
35071
35185
  }
35186
+ /**
35187
+ * Months offered in the title menu, bounded by min and max the way the year
35188
+ * list is. Without this the menu lists twelve months while a bound quietly
35189
+ * clamps eleven of them back to the one you were already on.
35190
+ *
35191
+ * The arrows page the view past a bound (only the focused day is clamped), so
35192
+ * the month on screen is not necessarily one you can choose. It is left out
35193
+ * when it falls outside, and the menu then shows no selection - which is the
35194
+ * truth: you are looking at a month this calendar will not accept.
35195
+ */
35196
+ get _months() {
35197
+ const minYear = this._min ? Number(this._min.slice(0, 4)) : null;
35198
+ const maxYear = this._max ? Number(this._max.slice(0, 4)) : null;
35199
+ if (minYear !== null && this._viewYear < minYear) return [];
35200
+ if (maxYear !== null && this._viewYear > maxYear) return [];
35201
+ const first = minYear === this._viewYear ? Number(this._min.slice(5, 7)) : 1;
35202
+ const last = maxYear === this._viewYear ? Number(this._max.slice(5, 7)) : 12;
35203
+ if (last < first) return [];
35204
+ return Array.from({ length: last - first + 1 }, (_, i) => first + i);
35205
+ }
35072
35206
  /**
35073
35207
  * Years offered in the title menu. Bounded by min and max where they are set,
35074
35208
  * because those already say which years can be reached; without them a window
@@ -35076,17 +35210,29 @@ let NLDDDatePicker = class extends withTranslations(
35076
35210
  */
35077
35211
  get _years() {
35078
35212
  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);
35213
+ const first = this._min ? Number(this._min.slice(0, 4)) : Math.min(current - 120, this._viewYear);
35214
+ const last = this._max ? Number(this._max.slice(0, 4)) : Math.max(current + 20, this._viewYear);
35215
+ if (last < first) return [];
35083
35216
  return Array.from({ length: last - first + 1 }, (_, i) => first + i);
35084
35217
  }
35218
+ _handleMonthSelect(month) {
35219
+ this._view = firstOfMonth(clampIso(withMonth(this._view, month), this._min, this._max));
35220
+ this._focused = clampIso(withMonth(this._focused, month), this._min, this._max);
35221
+ this._restoreFocus = Boolean(this._focusedCell());
35222
+ this._closeMenu(".date-picker__month-menu");
35223
+ }
35085
35224
  _handleYearSelect(year) {
35086
35225
  this._view = firstOfMonth(clampIso(withYear(this._view, year), this._min, this._max));
35087
35226
  this._focused = clampIso(withYear(this._focused, year), this._min, this._max);
35088
35227
  this._restoreFocus = Boolean(this._focusedCell());
35089
- const menu = this.shadowRoot?.querySelector("nldd-menu");
35228
+ this._closeMenu(".date-picker__year-menu");
35229
+ }
35230
+ /**
35231
+ * Radio items keep their menu open, which is right when you are ticking
35232
+ * several - but here one month or one year is the whole answer.
35233
+ */
35234
+ _closeMenu(selector) {
35235
+ const menu = this.shadowRoot?.querySelector(selector);
35090
35236
  if (menu?.matches(":popover-open")) menu.hidePopover?.();
35091
35237
  }
35092
35238
  /**
@@ -35094,9 +35240,8 @@ let NLDDDatePicker = class extends withTranslations(
35094
35240
  * sentence-initial one of a heading, not a proper noun. The translation itself
35095
35241
  * stays lower case because it is reused mid-sentence in the day labels.
35096
35242
  */
35097
- get _title() {
35098
- const month = this._t(`components.date-picker.${MONTH_KEYS[this._viewMonth - 1]}-capitalize`);
35099
- return `${month} ${this._viewYear}`;
35243
+ get _monthLabel() {
35244
+ return this._t(`components.date-picker.${MONTH_KEYS[this._viewMonth - 1]}-capitalize`);
35100
35245
  }
35101
35246
  // — Cell state ———————————————————————————————————————————————————————————
35102
35247
  _isSelected(iso) {
@@ -35174,7 +35319,6 @@ let NLDDDatePicker = class extends withTranslations(
35174
35319
  this._view = next;
35175
35320
  const day = Math.min(Number(this._focused.slice(8, 10)), Number(lastOfMonth(next).slice(8, 10)));
35176
35321
  this._focused = clampIso(`${next.slice(0, 7)}-${String(day).padStart(2, "0")}`, this._min, this._max);
35177
- this._restoreFocus = Boolean(this._focusedCell());
35178
35322
  }
35179
35323
  _moveFocus(iso) {
35180
35324
  const target = clampIso(iso, this._min, this._max);
@@ -35344,7 +35488,6 @@ let NLDDDatePicker = class extends withTranslations(
35344
35488
  const today = todayIso();
35345
35489
  this._view = firstOfMonth(today);
35346
35490
  this._focused = today;
35347
- this._restoreFocus = Boolean(this._focusedCell());
35348
35491
  }
35349
35492
  render() {
35350
35493
  return datePickerTemplate(this);
@@ -35399,6 +35542,9 @@ __decorateClass$14([
35399
35542
  __decorateClass$14([
35400
35543
  state()
35401
35544
  ], NLDDDatePicker.prototype, "_announcement", 2);
35545
+ __decorateClass$14([
35546
+ state()
35547
+ ], NLDDDatePicker.prototype, "_monthMenuOpen", 2);
35402
35548
  __decorateClass$14([
35403
35549
  state()
35404
35550
  ], NLDDDatePicker.prototype, "_yearMenuOpen", 2);
@@ -35439,6 +35585,7 @@ function renderPicker$1(component) {
35439
35585
  ></nldd-icon-button>
35440
35586
  <nldd-popover
35441
35587
  accessible-label=${component._pickerLabel}
35588
+ placement="bottom-end"
35442
35589
  width=${component._pickerPopoverWidth}
35443
35590
  @toggle=${component._handlePopoverToggle}
35444
35591
  >
@@ -37082,7 +37229,6 @@ const passwordFieldStyles = css$1`
37082
37229
  border-radius: var(--_corner-radius);
37083
37230
  background-color: var(--_background-color);
37084
37231
  min-height: var(--_min-size);
37085
- overflow: hidden;
37086
37232
  padding-left: calc(var(--_inline-padding) - var(--semantics-input-fields-border-width));
37087
37233
  flex-direction: row;
37088
37234
  align-items: center;
@@ -37116,10 +37262,6 @@ const passwordFieldStyles = css$1`
37116
37262
  box-shadow: var(--semantics-focus-ring-box-shadow);
37117
37263
  }
37118
37264
 
37119
- .password-field:has(.password-field__visibility-toggle-button:focus-within) {
37120
- overflow: visible;
37121
- }
37122
-
37123
37265
 
37124
37266
  /* # Elements */
37125
37267
 
@@ -57503,7 +57645,9 @@ const cardStyles = css$1`
57503
57645
  /* # Host */
57504
57646
 
57505
57647
  :host {
57506
- --_highlight-border: inset 0 0 0 var(--components-card-highlight-border-width) var(--components-card-highlight-border-color);
57648
+ --_background-color: var(--components-card-background-color);
57649
+ --_border-color: var(--components-card-highlight-border-color);
57650
+ --_highlight-border: inset 0 0 0 var(--components-card-highlight-border-width) var(--_border-color);
57507
57651
 
57508
57652
  display: flex;
57509
57653
  /* Anchor for the focus ring, which hangs outside the card box. */
@@ -57516,6 +57660,14 @@ const cardStyles = css$1`
57516
57660
  }
57517
57661
 
57518
57662
 
57663
+ /* ## Background variants */
57664
+
57665
+ :host([background="tinted"]) {
57666
+ --_background-color: var(--components-card-tinted-background-color);
57667
+ --_border-color: var(--components-card-tinted-highlight-border-color);
57668
+ }
57669
+
57670
+
57519
57671
  /* # Block */
57520
57672
 
57521
57673
  .card {
@@ -57523,7 +57675,7 @@ const cardStyles = css$1`
57523
57675
  position: relative;
57524
57676
  border-radius: var(--components-card-corner-radius);
57525
57677
  box-shadow: var(--components-card-box-shadow);
57526
- background-color: var(--components-card-background-color);
57678
+ background-color: var(--_background-color);
57527
57679
  overflow: hidden;
57528
57680
  flex-direction: column;
57529
57681
  flex-grow: 1;
@@ -57674,6 +57826,7 @@ var __decorateClass$v = (decorators, target, key, kind) => {
57674
57826
  let NLDDCard = class extends withTranslations(LitElement, nlddCardTranslations) {
57675
57827
  constructor() {
57676
57828
  super(...arguments);
57829
+ this.background = "base";
57677
57830
  this.href = "";
57678
57831
  this.button = false;
57679
57832
  this.target = "";
@@ -57723,6 +57876,9 @@ let NLDDCard = class extends withTranslations(LitElement, nlddCardTranslations)
57723
57876
  }
57724
57877
  };
57725
57878
  NLDDCard.styles = cardStyles;
57879
+ __decorateClass$v([
57880
+ property({ reflect: true, converter: reflectNonDefault("base") })
57881
+ ], NLDDCard.prototype, "background", 2);
57726
57882
  __decorateClass$v([
57727
57883
  property({ type: String, attribute: "accessible-label" })
57728
57884
  ], NLDDCard.prototype, "accessibleLabel", 2);
@@ -58000,9 +58156,13 @@ let NLDDCollection = class extends LitElement {
58000
58156
  this._scrollListener = () => {
58001
58157
  const el = this._itemsEl;
58002
58158
  if (!el) return;
58159
+ const wasAtStart = this._atStart;
58160
+ const wasAtEnd = this._atEnd;
58003
58161
  this._atStart = el.scrollLeft < 1;
58004
58162
  this._atEnd = el.scrollLeft + el.clientWidth >= el.scrollWidth - 1;
58005
58163
  this._isScrollable = el.scrollWidth > el.clientWidth;
58164
+ if (!wasAtStart && this._atStart) this._handOffControlFocus("previous");
58165
+ if (!wasAtEnd && this._atEnd) this._handOffControlFocus("next");
58006
58166
  };
58007
58167
  this._scrollListenerAttached = false;
58008
58168
  }
@@ -58010,6 +58170,22 @@ let NLDDCollection = class extends LitElement {
58010
58170
  _t(key) {
58011
58171
  return this.translations[key] ?? nlddCollectionTranslations[key];
58012
58172
  }
58173
+ /* A keyboard user who scrolls to an end disables the control they are
58174
+ * standing on, and a disabled control cannot hold focus: the browser drops
58175
+ * focus to the body and the next Tab restarts at the top of the page. Hand
58176
+ * focus to the sibling control instead — it sits right next to the one
58177
+ * being disabled and is by definition usable at that end. */
58178
+ _handOffControlFocus(disabling) {
58179
+ const controls = this.shadowRoot?.querySelectorAll("nldd-icon-button");
58180
+ if (!controls || controls.length < 2) return;
58181
+ const [previous, next] = controls;
58182
+ const losing = disabling === "previous" ? previous : next;
58183
+ if (this.shadowRoot?.activeElement !== losing) return;
58184
+ const target = disabling === "previous" ? next : previous;
58185
+ void this.updateComplete.then(() => {
58186
+ if (!target.disabled) target.focus();
58187
+ });
58188
+ }
58013
58189
  connectedCallback() {
58014
58190
  super.connectedCallback();
58015
58191
  this._visibleCount = this.maxItems;
@@ -58093,11 +58269,27 @@ let NLDDCollection = class extends LitElement {
58093
58269
  get _hasMore() {
58094
58270
  return this._visibleCount < this._totalCount;
58095
58271
  }
58272
+ /* Scroll to an item edge, not by a fixed distance. The last scroll position
58273
+ * is wherever the content ends, which is rarely a whole number of items, so
58274
+ * stepping by item + gap from there keeps that remainder forever and every
58275
+ * item lands clipped. Snapping to the next edge in the given direction puts
58276
+ * an item flush against the padded start again. */
58096
58277
  _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" });
58278
+ const el = this._itemsEl;
58279
+ if (!el) return;
58280
+ const slot = el.querySelector("slot");
58281
+ const items = slot?.assignedElements() ?? [];
58282
+ if (items.length === 0) return;
58283
+ const scrollerLeft = el.getBoundingClientRect().left;
58284
+ const inset = parseFloat(getComputedStyle(el).scrollPaddingInlineStart) || 0;
58285
+ const starts = items.map(
58286
+ (item) => Math.round(item.getBoundingClientRect().left - scrollerLeft + el.scrollLeft - inset)
58287
+ );
58288
+ const epsilon = 2;
58289
+ const current = el.scrollLeft;
58290
+ const target = direction === 1 ? starts.find((start) => start > current + epsilon) : starts.filter((start) => start < current - epsilon).pop();
58291
+ if (target === void 0) return;
58292
+ el.scrollTo({ left: target, behavior: "smooth" });
58101
58293
  }
58102
58294
  render() {
58103
58295
  return collectionTemplate(this);
@@ -60422,7 +60614,10 @@ const listItemStyles = css$1`
60422
60614
  /* Not the host's 100%: a width plus negative margins is over-constrained
60423
60615
  in block layout, so the row would shift instead of widen. */
60424
60616
  width: auto;
60425
- margin-inline: calc(-1 * var(--components-list-item-indicator-inline-inset));
60617
+ /* !important: shields the widening from consumer universal resets, which
60618
+ beat normal :host declarations per CSS Scoping. A negative margin
60619
+ cannot move inward — an inner element cannot reach outside the host. */
60620
+ margin-inline: calc(-1 * var(--components-list-item-indicator-inline-inset)) !important;
60426
60621
  }
60427
60622
 
60428
60623
  :host(.is-interactive) .list-item {
@@ -61042,9 +61237,25 @@ let NLDDListItem = class extends withTranslations(LitElement, nlddListItemTransl
61042
61237
  * keeps its default. Insets are measured against the row block (the widened
61043
61238
  * box on interactive rows), so the values compose with the edge geometry.
61044
61239
  */
61240
+ /**
61241
+ * The cell the divider starts at when nobody said otherwise: a row that
61242
+ * opens with an icon reads better with the line aligned to its text, the
61243
+ * way a leading avatar or icon insets the divider in every list of this
61244
+ * kind. Only leading spacers may sit in front of the icon; anything else
61245
+ * means the row does not open with an icon after all. Put `divider-start`
61246
+ * on the icon cell itself to get the full-width line back.
61247
+ */
61248
+ _implicitDividerStart() {
61249
+ const cells = Array.from(this.children).filter((el) => el.tagName.startsWith("NLDD-") && el.tagName.endsWith("-CELL"));
61250
+ const meaningful = cells.filter((el) => el.tagName !== "NLDD-SPACER-CELL");
61251
+ const [first, second] = meaningful;
61252
+ if (first?.tagName !== "NLDD-ICON-CELL" || !second) return [];
61253
+ return second.tagName === "NLDD-TEXT-CELL" || second.tagName === "NLDD-TITLE-CELL" ? [second] : [];
61254
+ }
61045
61255
  _measureDividerMarkers() {
61046
61256
  if (this.hasAttribute("data-nldd-clone")) return;
61047
- const starts = this._ownDescendants("[divider-start]");
61257
+ const explicitStarts = this._ownDescendants("[divider-start]");
61258
+ const starts = explicitStarts.length ? explicitStarts : this._implicitDividerStart();
61048
61259
  const ends = this._ownDescendants("[divider-end]");
61049
61260
  const targets = starts.length || ends.length ? [this, ...starts, ...ends] : [];
61050
61261
  const sameTargets = targets.length === this._observedMarkerTargets.length && targets.every((target, i) => target === this._observedMarkerTargets[i]);
@@ -61702,8 +61913,12 @@ const tableRowStyles = css$1`
61702
61913
  grid-column: 1 / -1;
61703
61914
  grid-template-columns: subgrid;
61704
61915
  min-height: var(--_min-height);
61705
- border-bottom: var(--_divider-thickness) solid var(--_divider-color);
61706
- padding-inline: var(--_padding-inline);
61916
+ /* !important: shields divider and inset from consumer universal resets,
61917
+ which beat normal :host declarations per CSS Scoping. They cannot move
61918
+ inward: the row is a subgrid participant, and a wrapper would break
61919
+ the parent-child column relation. */
61920
+ border-bottom: var(--_divider-thickness) solid var(--_divider-color) !important;
61921
+ padding-inline: var(--_padding-inline) !important;
61707
61922
  align-items: center;
61708
61923
  }
61709
61924
 
@@ -61723,7 +61938,9 @@ const tableRowStyles = css$1`
61723
61938
  divider (no doubling on the ring). Inner dividers run full-bleed to the
61724
61939
  sides — the padding only insets the cell content, not the row's border. */
61725
61940
  :host(:last-child) {
61726
- border-bottom: none;
61941
+ /* !important: the base border-bottom above is important, so this
61942
+ suppression has to be too. */
61943
+ border-bottom: none !important;
61727
61944
  }
61728
61945
 
61729
61946
  /* display:contents so the cells become grid items of this subgrid. */
@@ -62014,7 +62231,8 @@ const cellStyles = css$1`
62014
62231
  --_min-height: 0;
62015
62232
 
62016
62233
  ${inheritedTextReset}
62017
- padding-block: var(--context-cell-padding-block, 0px);
62234
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62235
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62018
62236
  display: flex;
62019
62237
  width: var(--_width);
62020
62238
  min-width: var(--_min-width);
@@ -62191,7 +62409,8 @@ const titleCellStyles = css$1`
62191
62409
  --_title-font: var(--primitives-font-display-5-sm);
62192
62410
 
62193
62411
  ${inheritedTextReset}
62194
- padding-block: var(--context-cell-padding-block, 0px);
62412
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62413
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62195
62414
  display: flex;
62196
62415
  width: var(--_width);
62197
62416
  min-width: var(--_min-width);
@@ -62556,7 +62775,8 @@ const descriptionCellStyles = css$1`
62556
62775
  --_min-height: 0;
62557
62776
 
62558
62777
  ${inheritedTextReset}
62559
- padding-block: var(--context-cell-padding-block, 0px);
62778
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62779
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62560
62780
  display: flex;
62561
62781
  width: var(--_width);
62562
62782
  min-width: var(--_min-width);
@@ -62741,7 +62961,8 @@ const dragHandleCellStyles = css$1`
62741
62961
  --_height: var(--semantics-controls-md-min-size);
62742
62962
 
62743
62963
  display: inline-flex;
62744
- padding-block: var(--context-cell-padding-block, 0px);
62964
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
62965
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62745
62966
  cursor: grab;
62746
62967
  width: fit-content;
62747
62968
  align-items: center;
@@ -62897,7 +63118,8 @@ const timelineTrackCellStyles = css$1`
62897
63118
 
62898
63119
  isolation: isolate;
62899
63120
  display: flex;
62900
- padding-block: var(--context-cell-padding-block, 0px);
63121
+ /* !important: shields the row padding from consumer universal resets, which beat normal :host declarations per CSS Scoping. */
63122
+ padding-block: var(--context-cell-padding-block, 0px) !important;
62901
63123
  width: var(--_lane-size);
62902
63124
  flex-direction: column;
62903
63125
  align-self: stretch;
@@ -63057,7 +63279,7 @@ var __decorateClass$h = (decorators, target, key, kind) => {
63057
63279
  if (kind && result) __defProp$h(target, key, result);
63058
63280
  return result;
63059
63281
  };
63060
- let NLDDTimelineTrackCell = class extends LitElement {
63282
+ let NLDDTimelineTrackCell = class extends VisibilityMixin(LitElement, "cells-container") {
63061
63283
  constructor() {
63062
63284
  super(...arguments);
63063
63285
  this.status = "past";
@@ -63074,7 +63296,8 @@ let NLDDTimelineTrackCell = class extends LitElement {
63074
63296
  get showsContent() {
63075
63297
  return !this.minor && this.variant === "step";
63076
63298
  }
63077
- updated() {
63299
+ updated(changed) {
63300
+ super.updated(changed);
63078
63301
  return;
63079
63302
  }
63080
63303
  render() {
@@ -67937,7 +68160,11 @@ const bannerStyles = css$1`
67937
68160
  }
67938
68161
 
67939
68162
 
67940
- /* # Host */
68163
+ /* # Host
68164
+ *
68165
+ * The visual framework lives on .banner, not :host: outer-document rules
68166
+ * (a consumer's universal reset) beat normal :host declarations per CSS
68167
+ * Scoping. The host only keeps the external contract. */
67941
68168
 
67942
68169
  :host {
67943
68170
  --_corner-radius: var(--components-banner-corner-radius);
@@ -67955,23 +68182,11 @@ const bannerStyles = css$1`
67955
68182
  --_actions-gap: var(--primitives-space-4);
67956
68183
 
67957
68184
  ${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);
68185
+ display: block;
67964
68186
  width: 100%;
67965
- padding: var(--_padding);
67966
- grid-template-columns: auto 1fr;
67967
- gap: var(--_column-gap);
67968
68187
  color: var(--_content-color);
67969
68188
  }
67970
68189
 
67971
- :host([dismissible]) {
67972
- padding-right: var(--_dismissible-padding-right);
67973
- }
67974
-
67975
68190
  :host([hidden]) {
67976
68191
  display: none;
67977
68192
  }
@@ -68000,8 +68215,26 @@ const bannerStyles = css$1`
68000
68215
  --_icon-color: var(--semantics-categories-critical-reference-background-color);
68001
68216
  }
68002
68217
 
68218
+ /* # Block */
68219
+
68220
+ .banner {
68221
+ box-sizing: border-box;
68222
+ display: grid;
68223
+ position: relative;
68224
+ border-radius: var(--_corner-radius);
68225
+ box-shadow: inset 0 0 0 var(--_border-width) var(--_border-color);
68226
+ background-color: var(--_background-color);
68227
+ padding: var(--_padding);
68228
+ grid-template-columns: auto 1fr;
68229
+ gap: var(--_column-gap);
68230
+ }
68231
+
68232
+ :host([dismissible]) .banner {
68233
+ padding-right: var(--_dismissible-padding-right);
68234
+ }
68235
+
68003
68236
  @media (forced-colors: active) {
68004
- :host {
68237
+ .banner {
68005
68238
  border: var(--_border-width) solid CanvasText;
68006
68239
  }
68007
68240
  }
@@ -68099,44 +68332,46 @@ function bannerTemplate(component) {
68099
68332
  }
68100
68333
  };
68101
68334
  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}
68335
+ <div class="banner">
68336
+ <div class="banner__icon"
68337
+ aria-hidden="true"
68118
68338
  >
68119
- <slot></slot>
68339
+ <nldd-icon name=${component._resolvedIcon}></nldd-icon>
68120
68340
  </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>
68341
+ <div class="banner__main">
68342
+ ${component.text || component.supportingText ? html$1`
68343
+ <div class="banner__heading">
68344
+ ${component.text ? heading2(component.text) : nothing}
68345
+ ${component.supportingText ? html$1`
68346
+ <p class="banner__supporting-text">${component.supportingText}</p>
68347
+ ` : nothing}
68348
+ </div>
68349
+ ` : nothing}
68350
+ <div class="banner__content"
68351
+ ?hidden=${!component._hasContent}
68352
+ >
68353
+ <slot></slot>
68354
+ </div>
68355
+ <div class="banner__actions"
68356
+ ?hidden=${!component._hasActions}
68357
+ >
68358
+ <nldd-button-group orientation="horizontal">
68359
+ <slot name="actions"></slot>
68360
+ </nldd-button-group>
68361
+ </div>
68127
68362
  </div>
68363
+ ${component.dismissible ? html$1`
68364
+ <div class="banner__dismiss-button">
68365
+ <nldd-icon-button
68366
+ icon="dismiss-small"
68367
+ variant="neutral-transparent"
68368
+ size="md"
68369
+ accessible-label=${component._t("components.banner.dismiss-action")}
68370
+ @click=${component._onDismissClick}
68371
+ ></nldd-icon-button>
68372
+ </div>
68373
+ ` : nothing}
68128
68374
  </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
68375
  `;
68141
68376
  }
68142
68377
  const nlddBannerTranslations = {
@@ -68989,10 +69224,21 @@ const progressBarSegmentIndicatorStyles = css$1`
68989
69224
  }
68990
69225
 
68991
69226
 
69227
+ /* # Block
69228
+ Full-bleed inner box; carries what must not sit on :host, like the
69229
+ forced-colors outline below. */
69230
+
69231
+ .progress-bar__segment-indicator {
69232
+ position: absolute;
69233
+ inset: 0;
69234
+ border-radius: inherit;
69235
+ }
69236
+
69237
+
68992
69238
  /* # Hover area (tooltip trigger)
68993
69239
  Fills the segment; captures hover/focus for the wrapping nldd-tooltip. */
68994
69240
 
68995
- .progress-bar-segment-indicator__tooltip-area {
69241
+ .progress-bar__segment-indicator-tooltip-area {
68996
69242
  display: block;
68997
69243
  position: absolute;
68998
69244
  inset: 0;
@@ -69010,10 +69256,39 @@ const progressBarSegmentIndicatorStyles = css$1`
69010
69256
  @media (forced-colors: active) {
69011
69257
  :host {
69012
69258
  background-color: CanvasText;
69259
+ }
69260
+
69261
+ /* box-shadow is stripped in forced-colors, so a real border draws the
69262
+ segment outline. It sits on the block element instead of :host, out
69263
+ of reach of consumer universal resets. */
69264
+ .progress-bar__segment-indicator {
69013
69265
  border: 1px solid CanvasText;
69014
69266
  }
69015
69267
  }
69016
69268
  `;
69269
+ function segmentIndicatorTemplate(component) {
69270
+ const text = component._effectiveTooltip;
69271
+ if (!text) {
69272
+ return html$1`
69273
+ <div class="progress-bar__segment-indicator">
69274
+ <span class="progress-bar__segment-indicator-tooltip-area"></span>
69275
+ </div>
69276
+ `;
69277
+ }
69278
+ return html$1`
69279
+ <div class="progress-bar__segment-indicator">
69280
+ <nldd-tooltip text=${text}
69281
+ timing="instant"
69282
+ >
69283
+ <span class="progress-bar__segment-indicator-tooltip-area"
69284
+ tabindex="0"
69285
+ role="img"
69286
+ aria-label=${text}
69287
+ ></span>
69288
+ </nldd-tooltip>
69289
+ </div>
69290
+ `;
69291
+ }
69017
69292
  function progressBarTemplate(component, onSlotChange) {
69018
69293
  const hasCaption = component._hasCaption;
69019
69294
  const isExiting = component._indeterminateExiting;
@@ -69038,7 +69313,7 @@ function progressBarTemplate(component, onSlotChange) {
69038
69313
  aria-valuetext=${component._ariaValueText}
69039
69314
  >
69040
69315
  ${showInternalSegmentIndicator ? html$1`
69041
- <nldd-progress-bar-segment-indicator class="progress-bar__segment-indicator"
69316
+ <nldd-progress-bar-segment-indicator
69042
69317
  .value=${component.value}
69043
69318
  color=${component.color}
69044
69319
  ></nldd-progress-bar-segment-indicator>
@@ -69084,19 +69359,7 @@ let NLDDProgressBarSegmentIndicator = class extends LitElement {
69084
69359
  return this.tooltipText || this._autoTooltipText || "";
69085
69360
  }
69086
69361
  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
- `;
69362
+ return segmentIndicatorTemplate(this);
69100
69363
  }
69101
69364
  };
69102
69365
  NLDDProgressBarSegmentIndicator.styles = progressBarSegmentIndicatorStyles;
@@ -69297,7 +69560,7 @@ let NLDDProgressBar = class extends LitElement {
69297
69560
  const total = this._totalValue;
69298
69561
  const denominator = total > this.max ? total : this.max;
69299
69562
  const internalSegmentIndicator = this.shadowRoot?.querySelector(
69300
- ".progress-bar__segment-indicator"
69563
+ "nldd-progress-bar-segment-indicator"
69301
69564
  ) ?? null;
69302
69565
  const allSegmentIndicators = internalSegmentIndicator ? [internalSegmentIndicator, ...this._segmentIndicators] : [...this._segmentIndicators];
69303
69566
  const visibleCount = allSegmentIndicators.filter((s) => Math.max(0, s.value) > 0).length;