@conduction/nextcloud-vue 2.112.0 → 2.113.0

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 (47) hide show
  1. package/dist/esm/components/CnActionButtons/CnActionButtons.vue.js +1 -1
  2. package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js +4 -6
  3. package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js.map +1 -1
  4. package/dist/esm/components/CnActionButtons/CnActionButtons.vue3.js.map +1 -1
  5. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
  6. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  7. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  8. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  9. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +18 -3
  10. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -2
  12. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  13. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +20 -5
  14. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  15. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  16. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +56 -13
  17. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  18. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -3
  19. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  20. package/dist/esm/components/CnReportsPage/CnReportsPage.vue.js +1 -1
  21. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js +29 -12
  22. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js.map +1 -1
  23. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js +3 -1
  24. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js.map +1 -1
  25. package/dist/esm/library-style.js +1 -1
  26. package/dist/esm/nextcloud-vue.css +152 -181
  27. package/dist/esm/utils/actionLink.js +104 -1
  28. package/dist/esm/utils/actionLink.js.map +1 -1
  29. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  30. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  31. package/dist/nextcloud-vue.cjs.js +241 -50
  32. package/dist/nextcloud-vue.cjs.js.map +2 -2
  33. package/dist/nextcloud-vue.css +152 -181
  34. package/package.json +1 -1
  35. package/src/components/CnActionButtons/CnActionButtons.vue +4 -6
  36. package/src/components/CnChoiceCards/CnChoiceCards.vue +0 -3
  37. package/src/components/CnDashboardPage/CnDashboardPage.vue +20 -5
  38. package/src/components/CnDetailPage/CnDetailPage.vue +20 -5
  39. package/src/components/CnIndexPage/CnIndexPage.vue +59 -14
  40. package/src/components/CnReportsPage/CnReportsPage.vue +31 -12
  41. package/src/css/badge.css +15 -13
  42. package/src/css/board.css +0 -1
  43. package/src/css/look-board-index.css +3 -17
  44. package/src/css/look-board.css +2 -16
  45. package/src/schemas/app-manifest-v2.schema.json +51 -9
  46. package/src/utils/actionLink.js +103 -0
  47. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -420,11 +420,8 @@
420
420
  end of a tab strip) is the board's neutral control: the main background, a
421
421
  grey border, the main text at 600 (DqZaak), not Nextcloud's primary tint.
422
422
  NcActions marks a secondary menu `action-item--secondary` on its root and
423
- keeps a class given to it off, so the rule reads that marker. The label
424
- hands its ink to --nldesign-color-on-surface for a theme that forces the
425
- body ink onto every span (thematiq). */
423
+ keeps a class given to it off, so the rule reads that marker. */
426
424
  .cn-look-board .action-item.action-item--secondary .action-item__menutoggle.button-vue--secondary:not(.cn-look-nextcloud *) {
427
- --nldesign-color-on-surface: var(--color-main-text);
428
425
  border: 1px solid var(--cn-board-control-border);
429
426
  border-radius: var(--cn-board-control-radius);
430
427
  background: var(--color-main-background);
@@ -1231,14 +1228,6 @@
1231
1228
  color: var(--cn-status-badge-ink);
1232
1229
  }
1233
1230
 
1234
- /* A pill paints its own pairing of ink and fill. A theme that forces the body
1235
- ink onto every span (thematiq's text rule, `!important` at id level) reads
1236
- that ink from --nldesign-color-on-surface when the surface sets it, so the
1237
- pill hands it its own ink: "In behandeling" stays purple on purple. */
1238
- .cn-look-board .cn-status-badge:not(.cn-look-nextcloud *) {
1239
- --nldesign-color-on-surface: var(--cn-status-badge-ink);
1240
- }
1241
-
1242
1231
  /* ---- Info notes (NcNoteCard type="info") -------------------------------- */
1243
1232
  /* The board's info note is a light-blue rounded box: no edge bar, 12px 14px
1244
1233
  of padding, radius 8, an 18px icon 10px before the text, 14px text in the
@@ -1290,9 +1279,7 @@
1290
1279
  hairline under each pair (DqZaak "Zaakgegevens"), the horizontal layout as
1291
1280
  two columns of 14px text, the label column as wide as its longest label
1292
1281
  (the side cards). Both at the board's line height, 1.2, not Nextcloud's 1.5:
1293
- a pair is 47px tall on the board. The muted label also hands its ink to
1294
- --nldesign-color-on-surface, which a theme that forces the body ink onto
1295
- every div (thematiq) reads. */
1282
+ a pair is 47px tall on the board. */
1296
1283
  .cn-look-board .cn-detail-grid.cn-detail-grid--grid:not(.cn-look-nextcloud *) {
1297
1284
  gap: 12px 24px;
1298
1285
  font-size: 15px;
@@ -1323,7 +1310,6 @@
1323
1310
  }
1324
1311
 
1325
1312
  .cn-look-board .cn-detail-grid .cn-detail-grid__label:not(.cn-look-nextcloud *) {
1326
- --nldesign-color-on-surface: var(--color-text-maxcontrast);
1327
1313
  min-width: 0;
1328
1314
  color: var(--color-text-maxcontrast);
1329
1315
  font-size: 13px;
@@ -2222,7 +2208,6 @@
2222
2208
  margin-inline-start: auto;
2223
2209
  padding: 1px 8px;
2224
2210
  border-radius: 10px;
2225
- --nldesign-color-on-surface: var(--cn-board-text-soft, var(--color-main-text));
2226
2211
  background-color: var(--color-main-background);
2227
2212
  color: var(--cn-board-text-soft, var(--color-main-text));
2228
2213
  font-size: 12px;
@@ -2745,26 +2730,19 @@
2745
2730
  outline-offset: 2px;
2746
2731
  }
2747
2732
 
2748
- /* The selected chip is light on dark, so it hands its ink to
2749
- --nldesign-color-on-surface: thematiq forces the body ink onto every span
2750
- with `!important` and reads it from that property, which left the label
2751
- dark on dark. */
2733
+ /* The selected chip is light on dark. */
2752
2734
  .cn-look-board .cn-saved-views__chips .cn-saved-views__chip--selected,
2753
2735
  .cn-look-board .cn-saved-views__chips .cn-saved-views__chip--selected:hover,
2754
2736
  .cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active,
2755
2737
  .cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active:hover {
2756
- --nldesign-color-on-surface: var(--color-main-background);
2757
2738
  border-color: transparent;
2758
2739
  background: var(--color-main-text);
2759
2740
  color: var(--color-main-background);
2760
2741
  }
2761
2742
 
2762
- /* The count badge: grey on an idle chip, soft text colour on the selected one.
2763
- Its ink also goes to --nldesign-color-on-surface, which a theme that forces
2764
- the body ink onto every span (thematiq) reads. */
2743
+ /* The count badge: grey on an idle chip, soft text colour on the selected one. */
2765
2744
  .cn-look-board .cn-saved-views__chip .cn-saved-views__chip-count,
2766
2745
  .cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__count {
2767
- --nldesign-color-on-surface: var(--cn-board-text-soft);
2768
2746
  min-width: 0;
2769
2747
  padding: 1px 7px;
2770
2748
  border: 0;
@@ -2782,7 +2760,6 @@
2782
2760
  /* On the selected chip the count is the soft ink as a lighter bubble on the
2783
2761
  dark chip (DqZaken: #3d4047 on #1b1c1d). */
2784
2762
  .cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active .cn-quick-filter-bar__count {
2785
- --nldesign-color-on-surface: var(--color-primary-element-text);
2786
2763
  background: var(--cn-board-text-soft);
2787
2764
  color: var(--color-primary-element-text);
2788
2765
  }
@@ -2862,8 +2839,6 @@
2862
2839
  margin-inline-start: 6px;
2863
2840
  padding: 0 6px;
2864
2841
  border-radius: 10px;
2865
- /* A theme that forces the body ink onto every span reads it from here. */
2866
- --nldesign-color-on-surface: var(--color-primary-element-text);
2867
2842
  background: var(--color-primary-element);
2868
2843
  color: var(--color-primary-element-text);
2869
2844
  font-size: 12px;
@@ -3093,15 +3068,13 @@
3093
3068
  }
3094
3069
 
3095
3070
  /* The header row is near-white on the boards (#fafbfc), not the hover grey,
3096
- its labels 14px muted. The ink also goes to --nldesign-color-on-surface,
3097
- which a theme that forces the body ink onto every span (thematiq) reads.
3071
+ its labels 14px muted.
3098
3072
  The nldesign theme paints every `th` with `!important` through its table
3099
3073
  header tokens, and the sort button in it through its button weight token
3100
3074
  (bold), so the cell hands the board's ground, ink and weight to those
3101
3075
  tokens too.
3102
3076
  @spec openspec/changes/board-table-head-theme/specs/board-table-head-theme/spec.md#requirement-a-board-table-header-keeps-the-boards-ground-ink-and-weight-under-a-theme */
3103
3077
  .cn-look-board .cn-table-container--board .cn-data-table th {
3104
- --nldesign-color-on-surface: var(--color-text-maxcontrast);
3105
3078
  --nldesign-component-table-header-background-color: var(--cn-board-table-head-bg, color-mix(in srgb, var(--color-background-hover) 40%, var(--color-main-background)));
3106
3079
  --nldesign-component-table-header-color: var(--color-text-maxcontrast);
3107
3080
  --nldesign-component-table-header-font-weight: 600;
@@ -3235,7 +3208,6 @@
3235
3208
  }
3236
3209
 
3237
3210
  .cn-look-board .cn-table-container--board .cn-data-table td.cn-table-col--title .cn-table-cell__secondary {
3238
- --nldesign-color-on-surface: var(--color-text-maxcontrast);
3239
3211
  color: var(--color-text-maxcontrast);
3240
3212
  font-size: 14px;
3241
3213
  font-weight: 400;
@@ -3280,7 +3252,6 @@
3280
3252
  /* The initials sit on the light primary tint in the primary ink, the board's
3281
3253
  person chip (DqZaken's Behandelaar, and most boards' people). */
3282
3254
  .cn-look-board .cn-table-container--board .cn-data-table .cn-cell-renderer__avatar-initials {
3283
- --nldesign-color-on-surface: var(--color-primary-element-light-text);
3284
3255
  background: var(--color-primary-element-light);
3285
3256
  color: var(--color-primary-element-light-text);
3286
3257
  font-size: 12px;
@@ -5742,12 +5713,14 @@ a.cn-kpi-card--board * {
5742
5713
  ======================================== */
5743
5714
 
5744
5715
  /* The two board tones without a Nextcloud colour role (screens-cell-pill-parity).
5745
- A theme may redefine them; the six role variants below use Nextcloud's own. */
5716
+ A theme may redefine them, or name the NL Design System hue tint and pill
5717
+ text (`--nl-color-<hue>-light`, `--nl-color-<hue>-text`), which the tones
5718
+ and the four role variants below read first (status-badge-hue-tokens). */
5746
5719
  :root {
5747
- --cn-status-purple-bg: #e8e6f6;
5748
- --cn-status-purple-text: #4a3f8f;
5749
- --cn-status-teal-bg: #e3f1f3;
5750
- --cn-status-teal-text: #1d5e66;
5720
+ --cn-status-purple-bg: var(--nl-color-purple-light, #e8e6f6);
5721
+ --cn-status-purple-text: var(--nl-color-purple-text, #4a3f8f);
5722
+ --cn-status-teal-bg: var(--nl-color-teal-light, #e3f1f3);
5723
+ --cn-status-teal-text: var(--nl-color-teal-text, #1d5e66);
5751
5724
  }
5752
5725
 
5753
5726
  .cn-status-badge {
@@ -5782,26 +5755,26 @@ a.cn-kpi-card--board * {
5782
5755
  }
5783
5756
 
5784
5757
  .cn-status-badge--success {
5785
- --cn-status-badge-ink: var(--color-success-text, var(--color-success));
5786
- background-color: var(--color-success-light, rgba(70, 186, 97, 0.15));
5758
+ --cn-status-badge-ink: var(--nl-color-green-text, var(--color-success-text, var(--color-success)));
5759
+ background-color: var(--nl-color-green-light, var(--color-success-light, rgba(70, 186, 97, 0.15)));
5787
5760
  color: var(--cn-status-badge-ink);
5788
5761
  }
5789
5762
 
5790
5763
  .cn-status-badge--warning {
5791
- --cn-status-badge-ink: var(--color-warning-text, var(--color-warning));
5792
- background-color: var(--color-warning-light, rgba(232, 163, 39, 0.15));
5764
+ --cn-status-badge-ink: var(--nl-color-orange-text, var(--color-warning-text, var(--color-warning)));
5765
+ background-color: var(--nl-color-orange-light, var(--color-warning-light, rgba(232, 163, 39, 0.15)));
5793
5766
  color: var(--cn-status-badge-ink);
5794
5767
  }
5795
5768
 
5796
5769
  .cn-status-badge--error {
5797
- --cn-status-badge-ink: var(--color-error-text, var(--color-error));
5798
- background-color: var(--color-error-light, rgba(224, 68, 68, 0.15));
5770
+ --cn-status-badge-ink: var(--nl-color-red-text, var(--color-error-text, var(--color-error)));
5771
+ background-color: var(--nl-color-red-light, var(--color-error-light, rgba(224, 68, 68, 0.15)));
5799
5772
  color: var(--cn-status-badge-ink);
5800
5773
  }
5801
5774
 
5802
5775
  .cn-status-badge--info {
5803
- --cn-status-badge-ink: var(--color-info-text, var(--color-info, #0082c9));
5804
- background-color: var(--color-info-light, rgba(0, 130, 201, 0.15));
5776
+ --cn-status-badge-ink: var(--nl-color-blue-text, var(--color-info-text, var(--color-info, #0082c9)));
5777
+ background-color: var(--nl-color-blue-light, var(--color-info-light, rgba(0, 130, 201, 0.15)));
5805
5778
  color: var(--cn-status-badge-ink);
5806
5779
  }
5807
5780
 
@@ -25473,12 +25446,14 @@ a.cn-kpi-card--board * {
25473
25446
  ======================================== */
25474
25447
 
25475
25448
  /* The two board tones without a Nextcloud colour role (screens-cell-pill-parity).
25476
- A theme may redefine them; the six role variants below use Nextcloud's own. */
25449
+ A theme may redefine them, or name the NL Design System hue tint and pill
25450
+ text (`--nl-color-<hue>-light`, `--nl-color-<hue>-text`), which the tones
25451
+ and the four role variants below read first (status-badge-hue-tokens). */
25477
25452
  :root {
25478
- --cn-status-purple-bg: #e8e6f6;
25479
- --cn-status-purple-text: #4a3f8f;
25480
- --cn-status-teal-bg: #e3f1f3;
25481
- --cn-status-teal-text: #1d5e66;
25453
+ --cn-status-purple-bg: var(--nl-color-purple-light, #e8e6f6);
25454
+ --cn-status-purple-text: var(--nl-color-purple-text, #4a3f8f);
25455
+ --cn-status-teal-bg: var(--nl-color-teal-light, #e3f1f3);
25456
+ --cn-status-teal-text: var(--nl-color-teal-text, #1d5e66);
25482
25457
  }
25483
25458
 
25484
25459
  .cn-status-badge {
@@ -25513,26 +25488,26 @@ a.cn-kpi-card--board * {
25513
25488
  }
25514
25489
 
25515
25490
  .cn-status-badge--success {
25516
- --cn-status-badge-ink: var(--color-success-text, var(--color-success));
25517
- background-color: var(--color-success-light, rgba(70, 186, 97, 0.15));
25491
+ --cn-status-badge-ink: var(--nl-color-green-text, var(--color-success-text, var(--color-success)));
25492
+ background-color: var(--nl-color-green-light, var(--color-success-light, rgba(70, 186, 97, 0.15)));
25518
25493
  color: var(--cn-status-badge-ink);
25519
25494
  }
25520
25495
 
25521
25496
  .cn-status-badge--warning {
25522
- --cn-status-badge-ink: var(--color-warning-text, var(--color-warning));
25523
- background-color: var(--color-warning-light, rgba(232, 163, 39, 0.15));
25497
+ --cn-status-badge-ink: var(--nl-color-orange-text, var(--color-warning-text, var(--color-warning)));
25498
+ background-color: var(--nl-color-orange-light, var(--color-warning-light, rgba(232, 163, 39, 0.15)));
25524
25499
  color: var(--cn-status-badge-ink);
25525
25500
  }
25526
25501
 
25527
25502
  .cn-status-badge--error {
25528
- --cn-status-badge-ink: var(--color-error-text, var(--color-error));
25529
- background-color: var(--color-error-light, rgba(224, 68, 68, 0.15));
25503
+ --cn-status-badge-ink: var(--nl-color-red-text, var(--color-error-text, var(--color-error)));
25504
+ background-color: var(--nl-color-red-light, var(--color-error-light, rgba(224, 68, 68, 0.15)));
25530
25505
  color: var(--cn-status-badge-ink);
25531
25506
  }
25532
25507
 
25533
25508
  .cn-status-badge--info {
25534
- --cn-status-badge-ink: var(--color-info-text, var(--color-info, #0082c9));
25535
- background-color: var(--color-info-light, rgba(0, 130, 201, 0.15));
25509
+ --cn-status-badge-ink: var(--nl-color-blue-text, var(--color-info-text, var(--color-info, #0082c9)));
25510
+ background-color: var(--nl-color-blue-light, var(--color-info-light, rgba(0, 130, 201, 0.15)));
25536
25511
  color: var(--cn-status-badge-ink);
25537
25512
  }
25538
25513
 
@@ -33708,7 +33683,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
33708
33683
  }
33709
33684
 
33710
33685
 
33711
- .cn-action-buttons[data-v-49607313] {
33686
+ .cn-action-buttons[data-v-0f9733ca] {
33712
33687
  display: inline-flex;
33713
33688
  align-items: center;
33714
33689
  gap: 8px;
@@ -33718,7 +33693,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
33718
33693
  /* In menu mode the only children are dialogs, so the wrapper must not be a
33719
33694
  box: an empty inline-flex child still eats one of the header's flex gaps
33720
33695
  and pushes the Actions menu away from the Edit button beside it. */
33721
- .cn-action-buttons--menu[data-v-49607313] {
33696
+ .cn-action-buttons--menu[data-v-0f9733ca] {
33722
33697
  display: contents;
33723
33698
  }
33724
33699
 
@@ -38936,26 +38911,26 @@ to {
38936
38911
  text-decoration: underline;
38937
38912
  }
38938
38913
  @charset "UTF-8";
38939
- .cn-choice-cards[data-v-22c5fe42] {
38914
+ .cn-choice-cards[data-v-59d71736] {
38940
38915
  border: none;
38941
38916
  padding: 0;
38942
38917
  margin: 0;
38943
38918
  min-inline-size: 0;
38944
38919
  }
38945
38920
 
38946
- .cn-choice-cards__legend[data-v-22c5fe42] {
38921
+ .cn-choice-cards__legend[data-v-59d71736] {
38947
38922
  padding: 0;
38948
38923
  margin-block-end: 8px;
38949
38924
  font-weight: bold;
38950
38925
  }
38951
38926
 
38952
- .cn-choice-cards__loading[data-v-22c5fe42] {
38927
+ .cn-choice-cards__loading[data-v-59d71736] {
38953
38928
  display: flex;
38954
38929
  justify-content: center;
38955
38930
  padding: 24px 0;
38956
38931
  }
38957
38932
 
38958
- .cn-choice-cards__grid[data-v-22c5fe42] {
38933
+ .cn-choice-cards__grid[data-v-59d71736] {
38959
38934
  display: grid;
38960
38935
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
38961
38936
  gap: 12px;
@@ -38967,26 +38942,26 @@ to {
38967
38942
  padding: 12px;
38968
38943
  }
38969
38944
 
38970
- .cn-choice-cards__cell[data-v-22c5fe42] {
38945
+ .cn-choice-cards__cell[data-v-59d71736] {
38971
38946
  display: flex;
38972
38947
  flex-direction: column;
38973
38948
  gap: 8px;
38974
38949
  min-inline-size: 0;
38975
38950
  }
38976
38951
 
38977
- .cn-choice-cards__actions[data-v-22c5fe42] {
38952
+ .cn-choice-cards__actions[data-v-59d71736] {
38978
38953
  display: flex;
38979
38954
  flex-direction: column;
38980
38955
  gap: 4px;
38981
38956
  }
38982
38957
 
38983
- .cn-choice-cards__option[data-v-22c5fe42] {
38958
+ .cn-choice-cards__option[data-v-59d71736] {
38984
38959
  position: relative;
38985
38960
  display: block;
38986
38961
  cursor: pointer;
38987
38962
  }
38988
38963
 
38989
- .cn-choice-cards__input[data-v-22c5fe42] {
38964
+ .cn-choice-cards__input[data-v-59d71736] {
38990
38965
  position: absolute;
38991
38966
  inset-block-start: 16px;
38992
38967
  inset-inline-end: 14px;
@@ -38996,7 +38971,7 @@ to {
38996
38971
  }
38997
38972
 
38998
38973
  /* Room for the input, so a long title never runs underneath it. */
38999
- .cn-choice-cards__option[data-v-22c5fe42] .cn-card {
38974
+ .cn-choice-cards__option[data-v-59d71736] .cn-card {
39000
38975
  padding-inline-end: 44px;
39001
38976
  transition: box-shadow 0.2s ease, border-color 0.2s ease;
39002
38977
  }
@@ -39007,33 +38982,33 @@ to {
39007
38982
  touches a card, and the grid twitches. The border colour below already
39008
38983
  carries hover, so the scale is dropped: at (0,3,0) this beats the global
39009
38984
  `.cn-card:hover` at (0,2,0). */
39010
- .cn-choice-cards__option[data-v-22c5fe42]:hover .cn-card {
38985
+ .cn-choice-cards__option[data-v-59d71736]:hover .cn-card {
39011
38986
  border-color: var(--color-primary-element);
39012
38987
  transform: none;
39013
38988
  }
39014
38989
 
39015
38990
  /* The focus ring belongs on the card, not on the small input inside it. */
39016
- .cn-choice-cards__input[data-v-22c5fe42]:focus-visible + .cn-card {
38991
+ .cn-choice-cards__input[data-v-59d71736]:focus-visible + .cn-card {
39017
38992
  outline: 2px solid var(--color-primary-element);
39018
38993
  outline-offset: 2px;
39019
38994
  }
39020
38995
 
39021
- .cn-choice-cards__input[data-v-22c5fe42]:disabled {
38996
+ .cn-choice-cards__input[data-v-59d71736]:disabled {
39022
38997
  cursor: default;
39023
38998
  }
39024
38999
 
39025
- .cn-choice-cards__option--disabled .cn-choice-cards__input[data-v-22c5fe42] + .cn-card {
39000
+ .cn-choice-cards__option--disabled .cn-choice-cards__input[data-v-59d71736] + .cn-card {
39026
39001
  opacity: 0.6;
39027
39002
  }
39028
39003
 
39029
- .cn-choice-cards__rows[data-v-22c5fe42] {
39004
+ .cn-choice-cards__rows[data-v-59d71736] {
39030
39005
  display: flex;
39031
39006
  flex-direction: column;
39032
39007
  gap: 8px;
39033
39008
  }
39034
39009
 
39035
39010
  /* 12px 14px, as the boards draw an option row (DqVolgendeStap, DqBesluit). */
39036
- .cn-choice-cards__row[data-v-22c5fe42] {
39011
+ .cn-choice-cards__row[data-v-59d71736] {
39037
39012
  display: flex;
39038
39013
  align-items: flex-start;
39039
39014
  gap: 12px;
@@ -39044,12 +39019,12 @@ to {
39044
39019
  cursor: pointer;
39045
39020
  }
39046
39021
 
39047
- .cn-choice-cards__row[data-v-22c5fe42]:hover {
39022
+ .cn-choice-cards__row[data-v-59d71736]:hover {
39048
39023
  border-color: var(--color-border-dark);
39049
39024
  }
39050
39025
 
39051
- .cn-choice-cards__row--selected[data-v-22c5fe42],
39052
- .cn-choice-cards__row--selected[data-v-22c5fe42]:hover {
39026
+ .cn-choice-cards__row--selected[data-v-59d71736],
39027
+ .cn-choice-cards__row--selected[data-v-59d71736]:hover {
39053
39028
  border-color: var(--color-primary-element);
39054
39029
  /* The second pixel of the 2px selected border, without moving the content. */
39055
39030
  box-shadow: inset 0 0 0 1px var(--color-primary-element);
@@ -39058,9 +39033,8 @@ to {
39058
39033
 
39059
39034
  /* An option this record does not allow: the grey ground and the muted ink,
39060
39035
  still legible (DqVolgendeStap), not faded. */
39061
- .cn-choice-cards__row--disabled[data-v-22c5fe42],
39062
- .cn-choice-cards__row--disabled[data-v-22c5fe42]:hover {
39063
- --nldesign-color-on-surface: var(--color-text-maxcontrast);
39036
+ .cn-choice-cards__row--disabled[data-v-59d71736],
39037
+ .cn-choice-cards__row--disabled[data-v-59d71736]:hover {
39064
39038
  border-color: var(--color-border);
39065
39039
  background: var(--color-background-hover);
39066
39040
  color: var(--color-text-maxcontrast);
@@ -39069,82 +39043,80 @@ to {
39069
39043
 
39070
39044
  /* The title takes the muted ink itself: a theme that colours every label
39071
39045
  with `!important` (thematiq) would otherwise hand it the label colour. */
39072
- .cn-choice-cards__row--disabled .cn-choice-cards__row-title[data-v-22c5fe42] {
39073
- --nldesign-color-on-surface: var(--color-text-maxcontrast);
39046
+ .cn-choice-cards__row--disabled .cn-choice-cards__row-title[data-v-59d71736] {
39074
39047
  color: var(--color-text-maxcontrast);
39075
39048
  }
39076
39049
 
39077
39050
  /* The chosen option's fields share the selected row's frame: the cell draws
39078
39051
  the 2px primary border and the ground, the row inside it draws none, and
39079
39052
  the fields sit under the text, indented to it (DqVolgendeStap). */
39080
- .cn-choice-cards__cell--with-details[data-v-22c5fe42] {
39053
+ .cn-choice-cards__cell--with-details[data-v-59d71736] {
39081
39054
  border: 1px solid var(--color-primary-element);
39082
39055
  border-radius: var(--border-radius-large, 8px);
39083
39056
  box-shadow: inset 0 0 0 1px var(--color-primary-element);
39084
39057
  background: var(--color-primary-element-light);
39085
39058
  }
39086
39059
 
39087
- .cn-choice-cards__cell--with-details .cn-choice-cards__row[data-v-22c5fe42],
39088
- .cn-choice-cards__cell--with-details .cn-choice-cards__row[data-v-22c5fe42]:hover {
39060
+ .cn-choice-cards__cell--with-details .cn-choice-cards__row[data-v-59d71736],
39061
+ .cn-choice-cards__cell--with-details .cn-choice-cards__row[data-v-59d71736]:hover {
39089
39062
  border-color: transparent;
39090
39063
  box-shadow: none;
39091
39064
  background: transparent;
39092
39065
  }
39093
39066
 
39094
- .cn-choice-cards__details[data-v-22c5fe42] {
39067
+ .cn-choice-cards__details[data-v-59d71736] {
39095
39068
  display: flex;
39096
39069
  flex-direction: column;
39097
39070
  gap: 14px;
39098
39071
  padding: 0 14px 14px 44px;
39099
39072
  }
39100
39073
 
39101
- .cn-choice-cards__row--readonly[data-v-22c5fe42] {
39074
+ .cn-choice-cards__row--readonly[data-v-59d71736] {
39102
39075
  cursor: default;
39103
39076
  }
39104
39077
 
39105
- .cn-choice-cards__row--readonly[data-v-22c5fe42]:not(.cn-choice-cards__row--selected):hover {
39078
+ .cn-choice-cards__row--readonly[data-v-59d71736]:not(.cn-choice-cards__row--selected):hover {
39106
39079
  border-color: var(--color-border);
39107
39080
  }
39108
39081
 
39109
- .cn-choice-cards__row[data-v-22c5fe42]:has(.cn-choice-cards__row-input:focus-visible) {
39082
+ .cn-choice-cards__row[data-v-59d71736]:has(.cn-choice-cards__row-input:focus-visible) {
39110
39083
  outline: 2px solid var(--color-primary-element);
39111
39084
  outline-offset: 2px;
39112
39085
  }
39113
39086
 
39114
- .cn-choice-cards__row-input[data-v-22c5fe42] {
39087
+ .cn-choice-cards__row-input[data-v-59d71736] {
39115
39088
  flex: none;
39116
39089
  margin: 2px 0 0;
39117
39090
  accent-color: var(--color-primary-element);
39118
39091
  cursor: inherit;
39119
39092
  }
39120
39093
 
39121
- .cn-choice-cards__row-icon[data-v-22c5fe42] {
39094
+ .cn-choice-cards__row-icon[data-v-59d71736] {
39122
39095
  flex: none;
39123
39096
  }
39124
39097
 
39125
- .cn-choice-cards__row-text[data-v-22c5fe42] {
39098
+ .cn-choice-cards__row-text[data-v-59d71736] {
39126
39099
  display: flex;
39127
39100
  flex-direction: column;
39128
39101
  gap: 2px;
39129
39102
  min-width: 0;
39130
39103
  }
39131
39104
 
39132
- .cn-choice-cards__row-title[data-v-22c5fe42] {
39105
+ .cn-choice-cards__row-title[data-v-59d71736] {
39133
39106
  font-size: 15px;
39134
39107
  font-weight: 600;
39135
39108
  }
39136
39109
 
39137
39110
  /* Regular weight on the span itself: a theme that sets every label bold
39138
39111
  with `!important` (thematiq) reaches a span that only inherits. */
39139
- .cn-choice-cards__row-description[data-v-22c5fe42],
39140
- .cn-choice-cards__reason[data-v-22c5fe42] {
39141
- --nldesign-color-on-surface: var(--color-text-maxcontrast);
39112
+ .cn-choice-cards__row-description[data-v-59d71736],
39113
+ .cn-choice-cards__reason[data-v-59d71736] {
39142
39114
  font-size: 13px;
39143
39115
  font-weight: 400;
39144
39116
  color: var(--color-text-maxcontrast);
39145
39117
  }
39146
39118
 
39147
- .cn-choice-cards__reason--card[data-v-22c5fe42] {
39119
+ .cn-choice-cards__reason--card[data-v-59d71736] {
39148
39120
  display: block;
39149
39121
  margin-block-start: 4px;
39150
39122
  }
@@ -39320,7 +39292,6 @@ to {
39320
39292
  margin-inline-start: auto;
39321
39293
  padding: 1px 8px;
39322
39294
  border-radius: 10px;
39323
- --nldesign-color-on-surface: var(--cn-board-text-soft, var(--color-main-text));
39324
39295
  background-color: var(--color-main-background);
39325
39296
  color: var(--cn-board-text-soft, var(--color-main-text));
39326
39297
  font-size: 12px;
@@ -42685,7 +42656,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42685
42656
  }
42686
42657
 
42687
42658
 
42688
- .cn-dashboard-page[data-v-347a8f78] {
42659
+ .cn-dashboard-page[data-v-0270abf8] {
42689
42660
  padding: 20px;
42690
42661
  max-width: 1800px;
42691
42662
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -42699,7 +42670,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42699
42670
  overflow-y: auto;
42700
42671
  box-sizing: border-box;
42701
42672
  }
42702
- .cn-dashboard-page__header[data-v-347a8f78] {
42673
+ .cn-dashboard-page__header[data-v-0270abf8] {
42703
42674
  display: flex;
42704
42675
  justify-content: space-between;
42705
42676
  align-items: flex-start;
@@ -42711,21 +42682,21 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42711
42682
  room. Only the HEADER shifts right — body widgets keep full width. */
42712
42683
  padding-inline-start: 56px;
42713
42684
  }
42714
- .cn-dashboard-page__header-left[data-v-347a8f78] {
42685
+ .cn-dashboard-page__header-left[data-v-0270abf8] {
42715
42686
  min-width: 0;
42716
42687
  }
42717
- .cn-dashboard-page__title-row[data-v-347a8f78] {
42688
+ .cn-dashboard-page__title-row[data-v-0270abf8] {
42718
42689
  display: flex;
42719
42690
  align-items: center;
42720
42691
  flex-wrap: wrap;
42721
42692
  gap: 12px;
42722
42693
  }
42723
- .cn-dashboard-page__title[data-v-347a8f78] {
42694
+ .cn-dashboard-page__title[data-v-0270abf8] {
42724
42695
  margin: 0;
42725
42696
  font-size: 20px;
42726
42697
  font-weight: 700;
42727
42698
  }
42728
- .cn-dashboard-page__description[data-v-347a8f78] {
42699
+ .cn-dashboard-page__description[data-v-0270abf8] {
42729
42700
  margin: 4px 0 0;
42730
42701
  font-size: 14px;
42731
42702
  color: var(--color-text-maxcontrast);
@@ -42733,19 +42704,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42733
42704
 
42734
42705
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
42735
42706
  under it, and 40px buttons with a 10px gap. */
42736
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-347a8f78] {
42707
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-0270abf8] {
42737
42708
  font-size: 28px;
42738
42709
  font-weight: 700;
42739
42710
  line-height: 1.2;
42740
42711
  }
42741
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-347a8f78] {
42712
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-0270abf8] {
42742
42713
  margin: 6px 0 0;
42743
42714
  font-size: 15px;
42744
42715
  }
42745
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-347a8f78] {
42716
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-0270abf8] {
42746
42717
  gap: 10px;
42747
42718
  }
42748
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-347a8f78] .button-vue {
42719
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-0270abf8] .button-vue {
42749
42720
  min-height: var(--cn-board-control-height, 40px);
42750
42721
  height: var(--cn-board-control-height, 40px);
42751
42722
  }
@@ -42753,17 +42724,17 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42753
42724
  /* The switch row under the header (screens-dashboard-greeting-header): the
42754
42725
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
42755
42726
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
42756
- .cn-dashboard-page__switch-row[data-v-347a8f78] {
42727
+ .cn-dashboard-page__switch-row[data-v-0270abf8] {
42757
42728
  display: flex;
42758
42729
  flex-wrap: wrap;
42759
42730
  align-items: center;
42760
42731
  gap: 10px;
42761
42732
  margin-bottom: var(--cn-board-section-gap, 20px);
42762
42733
  }
42763
- .cn-dashboard-page__switch-row-spacer[data-v-347a8f78] {
42734
+ .cn-dashboard-page__switch-row-spacer[data-v-0270abf8] {
42764
42735
  flex: 1 1 auto;
42765
42736
  }
42766
- .cn-dashboard-page__view-link[data-v-347a8f78] {
42737
+ .cn-dashboard-page__view-link[data-v-0270abf8] {
42767
42738
  display: inline-flex;
42768
42739
  align-items: center;
42769
42740
  gap: 6px;
@@ -42777,37 +42748,37 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42777
42748
  white-space: nowrap;
42778
42749
  text-decoration: none !important;
42779
42750
  }
42780
- .cn-dashboard-page__view-link[data-v-347a8f78]:hover {
42751
+ .cn-dashboard-page__view-link[data-v-0270abf8]:hover {
42781
42752
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
42782
42753
  }
42783
- .cn-dashboard-page__view-link[data-v-347a8f78]:focus-visible {
42754
+ .cn-dashboard-page__view-link[data-v-0270abf8]:focus-visible {
42784
42755
  outline: 2px solid var(--color-main-text);
42785
42756
  outline-offset: 2px;
42786
42757
  }
42787
- .cn-dashboard-page__view-link-icon[data-v-347a8f78] {
42758
+ .cn-dashboard-page__view-link-icon[data-v-0270abf8] {
42788
42759
  display: inline-flex;
42789
42760
  }
42790
42761
 
42791
42762
  /* The period group, in a row of its own between the header and the KPI row. */
42792
- .cn-dashboard-page__date-range--segmented[data-v-347a8f78] {
42763
+ .cn-dashboard-page__date-range--segmented[data-v-0270abf8] {
42793
42764
  margin-bottom: 16px;
42794
42765
  }
42795
42766
 
42796
42767
  /* The period group at the end of the description line. */
42797
- .cn-dashboard-page__description--with-period[data-v-347a8f78] {
42768
+ .cn-dashboard-page__description--with-period[data-v-0270abf8] {
42798
42769
  align-items: center;
42799
42770
  display: flex;
42800
42771
  flex-wrap: wrap;
42801
42772
  gap: 8px;
42802
42773
  }
42803
- .cn-dashboard-page__date-segmented[data-v-347a8f78] {
42774
+ .cn-dashboard-page__date-segmented[data-v-0270abf8] {
42804
42775
  display: flex;
42805
42776
  align-items: center;
42806
42777
  gap: 8px;
42807
42778
  }
42808
42779
 
42809
42780
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
42810
- .cn-dashboard-page__kpi-row[data-v-347a8f78] {
42781
+ .cn-dashboard-page__kpi-row[data-v-0270abf8] {
42811
42782
  margin-bottom: var(--cn-board-section-gap, 16px);
42812
42783
  }
42813
42784
 
@@ -42815,15 +42786,15 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42815
42786
  the cards started a margin to the right of the KPI row and the header. The
42816
42787
  grid reaches out by that margin, so the card edges line up with the page's
42817
42788
  (dashboard-grid-flush). */
42818
- .cn-dashboard-page--board[data-v-347a8f78] .cn-dashboard-grid {
42789
+ .cn-dashboard-page--board[data-v-0270abf8] .cn-dashboard-grid {
42819
42790
  width: auto;
42820
42791
  margin-inline: calc(-1 * var(--cn-dashboard-grid-margin, 12px));
42821
42792
  }
42822
- .cn-dashboard-page__kpi-cell[data-v-347a8f78] {
42793
+ .cn-dashboard-page__kpi-cell[data-v-0270abf8] {
42823
42794
  display: flex;
42824
42795
  min-width: 0;
42825
42796
  }
42826
- .cn-dashboard-page__kpi-cell[data-v-347a8f78] > * {
42797
+ .cn-dashboard-page__kpi-cell[data-v-0270abf8] > * {
42827
42798
  flex: 1 1 auto;
42828
42799
  min-width: 0;
42829
42800
  }
@@ -42836,7 +42807,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42836
42807
  scoped chip rules then silently don't match and the chip collapses into
42837
42808
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
42838
42809
  data-testid is stable across chunks, so those rules match regardless. */
42839
- .cn-dashboard-page__header-actions[data-v-347a8f78] {
42810
+ .cn-dashboard-page__header-actions[data-v-0270abf8] {
42840
42811
  display: flex;
42841
42812
  align-items: center;
42842
42813
  gap: 8px;
@@ -42852,19 +42823,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42852
42823
 
42853
42824
  /* Date-range header band. Kept compact so it doesn't open a tall gap
42854
42825
  above the grid; the pills variant is a single tidy toggle row. */
42855
- .cn-dashboard-page__date-range[data-v-347a8f78] {
42826
+ .cn-dashboard-page__date-range[data-v-0270abf8] {
42856
42827
  margin-bottom: 12px;
42857
42828
  }
42858
- .cn-dashboard-page__date-range--pills[data-v-347a8f78] {
42829
+ .cn-dashboard-page__date-range--pills[data-v-0270abf8] {
42859
42830
  margin-bottom: 8px;
42860
42831
  }
42861
- .cn-dashboard-page__date-pills[data-v-347a8f78] {
42832
+ .cn-dashboard-page__date-pills[data-v-0270abf8] {
42862
42833
  display: flex;
42863
42834
  align-items: center;
42864
42835
  flex-wrap: wrap;
42865
42836
  gap: 6px;
42866
42837
  }
42867
- .cn-dashboard-page__date-pill[data-v-347a8f78] {
42838
+ .cn-dashboard-page__date-pill[data-v-0270abf8] {
42868
42839
  display: inline-flex;
42869
42840
  align-items: center;
42870
42841
  padding: 5px 14px;
@@ -42879,77 +42850,77 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42879
42850
  cursor: pointer;
42880
42851
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
42881
42852
  }
42882
- .cn-dashboard-page__date-pill[data-v-347a8f78]:hover {
42853
+ .cn-dashboard-page__date-pill[data-v-0270abf8]:hover {
42883
42854
  background: var(--color-background-hover);
42884
42855
  }
42885
- .cn-dashboard-page__date-pill[data-v-347a8f78]:focus-visible {
42856
+ .cn-dashboard-page__date-pill[data-v-0270abf8]:focus-visible {
42886
42857
  outline: 2px solid var(--color-primary-element);
42887
42858
  outline-offset: 2px;
42888
42859
  }
42889
- .cn-dashboard-page__date-pill--active[data-v-347a8f78] {
42860
+ .cn-dashboard-page__date-pill--active[data-v-0270abf8] {
42890
42861
  background: var(--color-primary-element);
42891
42862
  border-color: var(--color-primary-element);
42892
42863
  color: var(--color-primary-element-text);
42893
42864
  }
42894
- .cn-dashboard-page__date-pill--active[data-v-347a8f78]:hover {
42865
+ .cn-dashboard-page__date-pill--active[data-v-0270abf8]:hover {
42895
42866
  background: var(--color-primary-element-hover, var(--color-primary-element));
42896
42867
  }
42897
42868
 
42898
42869
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
42899
42870
  so it reads as an escape hatch rather than a primary option. */
42900
- .cn-dashboard-page__date-pill--custom[data-v-347a8f78] {
42871
+ .cn-dashboard-page__date-pill--custom[data-v-0270abf8] {
42901
42872
  border-style: dashed;
42902
42873
  color: var(--color-text-maxcontrast);
42903
42874
  }
42904
- .cn-dashboard-page__date-pill-custom[data-v-347a8f78] .action-item__menutoggle {
42875
+ .cn-dashboard-page__date-pill-custom[data-v-0270abf8] .action-item__menutoggle {
42905
42876
  min-width: 0;
42906
42877
  min-height: 0;
42907
42878
  padding: 0;
42908
42879
  background: transparent;
42909
42880
  border: none;
42910
42881
  }
42911
- .cn-dashboard-page__date-pill-custom[data-v-347a8f78] .button-vue,
42912
- .cn-dashboard-page__date-pill-custom[data-v-347a8f78] .button-vue__wrapper,
42913
- .cn-dashboard-page__date-pill-custom[data-v-347a8f78] .button-vue__icon {
42882
+ .cn-dashboard-page__date-pill-custom[data-v-0270abf8] .button-vue,
42883
+ .cn-dashboard-page__date-pill-custom[data-v-0270abf8] .button-vue__wrapper,
42884
+ .cn-dashboard-page__date-pill-custom[data-v-0270abf8] .button-vue__icon {
42914
42885
  width: auto !important;
42915
42886
  min-width: 0 !important;
42916
42887
  overflow: visible !important;
42917
42888
  }
42918
- .cn-dashboard-page__empty[data-v-347a8f78] {
42889
+ .cn-dashboard-page__empty[data-v-0270abf8] {
42919
42890
  padding: 60px 20px;
42920
42891
  }
42921
42892
 
42922
42893
  /* The page's view switch on a page without a header row: at the end of its
42923
42894
  own row, above the grids, where the header would have put it. */
42924
- .cn-dashboard-page__view-switch[data-v-347a8f78] {
42895
+ .cn-dashboard-page__view-switch[data-v-0270abf8] {
42925
42896
  display: flex;
42926
42897
  justify-content: flex-end;
42927
42898
  margin-bottom: 12px;
42928
42899
  }
42929
42900
 
42930
42901
  /* A view the switch shows with nothing to draw. */
42931
- .cn-page-view-region--empty[data-v-347a8f78] {
42902
+ .cn-page-view-region--empty[data-v-0270abf8] {
42932
42903
  padding: 40px 20px;
42933
42904
  }
42934
- .cn-dashboard-page__page-filters[data-v-347a8f78] {
42905
+ .cn-dashboard-page__page-filters[data-v-0270abf8] {
42935
42906
  display: flex;
42936
42907
  flex-wrap: wrap;
42937
42908
  gap: 16px;
42938
42909
  align-items: flex-end;
42939
42910
  margin-bottom: 12px;
42940
42911
  }
42941
- .cn-dashboard-page__page-filter[data-v-347a8f78] {
42912
+ .cn-dashboard-page__page-filter[data-v-0270abf8] {
42942
42913
  display: flex;
42943
42914
  flex-direction: column;
42944
42915
  gap: 4px;
42945
42916
  min-width: 200px;
42946
42917
  }
42947
- .cn-dashboard-page__page-filter-label[data-v-347a8f78] {
42918
+ .cn-dashboard-page__page-filter-label[data-v-0270abf8] {
42948
42919
  font-size: 0.85em;
42949
42920
  font-weight: 600;
42950
42921
  color: var(--color-text-maxcontrast);
42951
42922
  }
42952
- .cn-dashboard-page__widget-edit[data-v-347a8f78] {
42923
+ .cn-dashboard-page__widget-edit[data-v-0270abf8] {
42953
42924
  position: absolute;
42954
42925
  top: 4px;
42955
42926
  inset-inline-end: 4px;
@@ -42968,8 +42939,8 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42968
42939
  and centre the card. */
42969
42940
  /* `safe` centre so an overflowing tile does not spill out of the top, where
42970
42941
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
42971
- .cn-dashboard-page__card-fit[data-v-347a8f78] .cn-widget-wrapper__content,
42972
- .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-347a8f78] .cn-widget-wrapper__content {
42942
+ .cn-dashboard-page__card-fit[data-v-0270abf8] .cn-widget-wrapper__content,
42943
+ .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-0270abf8] .cn-widget-wrapper__content {
42973
42944
  overflow: hidden;
42974
42945
  display: flex;
42975
42946
  flex-direction: column;
@@ -42985,7 +42956,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42985
42956
  shows up as a scrollbar the user has to drag to see the whole graph. Same
42986
42957
  shape as the card-fit rule above, minus the padding: chart tiles render
42987
42958
  `flush`, and apexcharts already draws its own margins. */
42988
- .cn-dashboard-page__chart-fit[data-v-347a8f78] .cn-widget-wrapper__content {
42959
+ .cn-dashboard-page__chart-fit[data-v-0270abf8] .cn-widget-wrapper__content {
42989
42960
  overflow: hidden;
42990
42961
  display: flex;
42991
42962
  flex-direction: column;
@@ -42995,13 +42966,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
42995
42966
  /* Card content (stat / gauge / delta) must fit the tile width: let the
42996
42967
  widget shrink and its value/label truncate instead of pushing past the
42997
42968
  tile edge (the horizontal clip on long currency values). */
42998
- .cn-dashboard-page__card-fit[data-v-347a8f78] .cn-stat-widget,
42999
- .cn-dashboard-page__card-fit[data-v-347a8f78] .cn-gauge-widget,
43000
- .cn-dashboard-page__card-fit[data-v-347a8f78] .cn-delta-widget {
42969
+ .cn-dashboard-page__card-fit[data-v-0270abf8] .cn-stat-widget,
42970
+ .cn-dashboard-page__card-fit[data-v-0270abf8] .cn-gauge-widget,
42971
+ .cn-dashboard-page__card-fit[data-v-0270abf8] .cn-delta-widget {
43001
42972
  min-width: 0;
43002
42973
  max-width: 100%;
43003
42974
  }
43004
- .cn-dashboard-page__unknown[data-v-347a8f78] {
42975
+ .cn-dashboard-page__unknown[data-v-0270abf8] {
43005
42976
  display: flex;
43006
42977
  align-items: center;
43007
42978
  justify-content: center;
@@ -43012,31 +42983,31 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
43012
42983
  }
43013
42984
 
43014
42985
  /* widget-ref content items */
43015
- .cn-dashboard-page__content[data-v-347a8f78] {
42986
+ .cn-dashboard-page__content[data-v-0270abf8] {
43016
42987
  display: flex;
43017
42988
  flex-direction: column;
43018
42989
  gap: 16px;
43019
42990
  }
43020
- .cn-dashboard-page__content-item[data-v-347a8f78] {
42991
+ .cn-dashboard-page__content-item[data-v-0270abf8] {
43021
42992
  width: 100%;
43022
42993
  }
43023
42994
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
43024
42995
  are 44px: the widget Actions menu and the KPI tiles. */
43025
42996
  @media (max-width: 640px) {
43026
- .cn-dashboard-page--board[data-v-347a8f78] .cn-widget-wrapper__actions .action-item__menutoggle,
43027
- .cn-dashboard-page--board[data-v-347a8f78] .cn-widget-wrapper__actions .button-vue {
42997
+ .cn-dashboard-page--board[data-v-0270abf8] .cn-widget-wrapper__actions .action-item__menutoggle,
42998
+ .cn-dashboard-page--board[data-v-0270abf8] .cn-widget-wrapper__actions .button-vue {
43028
42999
  min-height: 44px;
43029
43000
  }
43030
- .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-347a8f78] {
43001
+ .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-0270abf8] {
43031
43002
  min-height: 44px;
43032
43003
  }
43033
43004
 
43034
43005
  /* The widget Actions menu shows its icon only, so the card title keeps
43035
43006
  the room; the name stays for assistive tech. */
43036
- .cn-dashboard-page--board[data-v-347a8f78] .cn-widget-wrapper__actions .action-item__menutoggle {
43007
+ .cn-dashboard-page--board[data-v-0270abf8] .cn-widget-wrapper__actions .action-item__menutoggle {
43037
43008
  min-width: 44px;
43038
43009
  }
43039
- .cn-dashboard-page--board[data-v-347a8f78] .cn-widget-wrapper__actions .action-item__menutoggle .button-vue__text {
43010
+ .cn-dashboard-page--board[data-v-0270abf8] .cn-widget-wrapper__actions .action-item__menutoggle .button-vue__text {
43040
43011
  position: absolute;
43041
43012
  width: 1px;
43042
43013
  height: 1px;
@@ -43048,7 +43019,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
43048
43019
 
43049
43020
  /* What a registry widget reports for its card header (`header` event): the
43050
43021
  note beside the link ("3 in total") and one action, as on a detail page. */
43051
- .cn-dashboard-page__widget-count[data-v-347a8f78] {
43022
+ .cn-dashboard-page__widget-count[data-v-0270abf8] {
43052
43023
  align-self: center;
43053
43024
  padding: 1px 8px;
43054
43025
  border-radius: 10px;
@@ -43057,13 +43028,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
43057
43028
  font-size: 13px;
43058
43029
  font-weight: 600;
43059
43030
  }
43060
- .cn-dashboard-page__widget-note[data-v-347a8f78] {
43031
+ .cn-dashboard-page__widget-note[data-v-0270abf8] {
43061
43032
  align-self: center;
43062
43033
  color: var(--color-text-maxcontrast);
43063
43034
  font-size: 14px;
43064
43035
  white-space: nowrap;
43065
43036
  }
43066
- .cn-dashboard-page__widget-action[data-v-347a8f78] {
43037
+ .cn-dashboard-page__widget-action[data-v-0270abf8] {
43067
43038
  display: inline-flex;
43068
43039
  align-items: center;
43069
43040
  align-self: center;
@@ -43079,7 +43050,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
43079
43050
  white-space: nowrap;
43080
43051
  cursor: pointer;
43081
43052
  }
43082
- .cn-dashboard-page__widget-action[data-v-347a8f78]:focus-visible {
43053
+ .cn-dashboard-page__widget-action[data-v-0270abf8]:focus-visible {
43083
43054
  outline: 2px solid var(--color-primary-element);
43084
43055
  outline-offset: 2px;
43085
43056
  }
@@ -45838,51 +45809,51 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
45838
45809
  }
45839
45810
 
45840
45811
 
45841
- .cn-reports-page[data-v-327b60f8] {
45812
+ .cn-reports-page[data-v-6feca28f] {
45842
45813
  padding: 16px;
45843
45814
  }
45844
45815
 
45845
45816
  /* Clear the Nextcloud navigation toggle button (44px wide, absolutely
45846
45817
  positioned at the left edge of .app-content) plus 12px breathing room, as
45847
45818
  CnPageHeader does. Only the header shifts; the body keeps the full width. */
45848
- .cn-reports-page__header[data-v-327b60f8] {
45819
+ .cn-reports-page__header[data-v-6feca28f] {
45849
45820
  padding-inline-start: 56px;
45850
45821
  }
45851
- .cn-reports-page__title[data-v-327b60f8] {
45822
+ .cn-reports-page__title[data-v-6feca28f] {
45852
45823
  margin: 0 0 4px;
45853
45824
  }
45854
- .cn-reports-page__heading-row[data-v-327b60f8] {
45825
+ .cn-reports-page__heading-row[data-v-6feca28f] {
45855
45826
  display: flex;
45856
45827
  flex-wrap: wrap;
45857
45828
  align-items: flex-start;
45858
45829
  justify-content: space-between;
45859
45830
  gap: 12px 24px;
45860
45831
  }
45861
- .cn-reports-page__heading-row .cn-reports-page__title[data-v-327b60f8] {
45832
+ .cn-reports-page__heading-row .cn-reports-page__title[data-v-6feca28f] {
45862
45833
  flex: 1 1 320px;
45863
45834
  min-width: 0;
45864
45835
  }
45865
- .cn-reports-page__header-buttons[data-v-327b60f8] {
45836
+ .cn-reports-page__header-buttons[data-v-6feca28f] {
45866
45837
  display: flex;
45867
45838
  flex: none;
45868
45839
  flex-wrap: wrap;
45869
45840
  align-items: center;
45870
45841
  gap: 10px;
45871
45842
  }
45872
- .cn-reports-page__description[data-v-327b60f8] {
45843
+ .cn-reports-page__description[data-v-6feca28f] {
45873
45844
  margin: 0 0 16px;
45874
45845
  color: var(--color-text-maxcontrast);
45875
45846
  }
45876
- .cn-reports-page__filter[data-v-327b60f8] {
45847
+ .cn-reports-page__filter[data-v-6feca28f] {
45877
45848
  display: flex;
45878
45849
  align-items: center;
45879
45850
  gap: 8px;
45880
45851
  margin-bottom: 16px;
45881
45852
  }
45882
- .cn-reports-page__filter-select[data-v-327b60f8] {
45853
+ .cn-reports-page__filter-select[data-v-6feca28f] {
45883
45854
  min-width: 220px;
45884
45855
  }
45885
- .cn-reports-page__grid[data-v-327b60f8] {
45856
+ .cn-reports-page__grid[data-v-6feca28f] {
45886
45857
  display: grid;
45887
45858
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
45888
45859
  gap: 12px;
@@ -45890,7 +45861,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
45890
45861
  margin: 0;
45891
45862
  padding: 0;
45892
45863
  }
45893
- .cn-reports-page__card[data-v-327b60f8] {
45864
+ .cn-reports-page__card[data-v-6feca28f] {
45894
45865
  display: flex;
45895
45866
  flex-direction: column;
45896
45867
  gap: 4px;
@@ -45901,22 +45872,22 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
45901
45872
  color: inherit;
45902
45873
  text-decoration: none;
45903
45874
  }
45904
- .cn-reports-page__card[data-v-327b60f8]:hover,
45905
- .cn-reports-page__card[data-v-327b60f8]:focus {
45875
+ .cn-reports-page__card[data-v-6feca28f]:hover,
45876
+ .cn-reports-page__card[data-v-6feca28f]:focus {
45906
45877
  background-color: var(--color-background-hover);
45907
45878
  }
45908
- .cn-reports-page__card-title[data-v-327b60f8] {
45879
+ .cn-reports-page__card-title[data-v-6feca28f] {
45909
45880
  font-weight: bold;
45910
45881
  }
45911
- .cn-reports-page__card-description[data-v-327b60f8],
45912
- .cn-reports-page__card-category[data-v-327b60f8] {
45882
+ .cn-reports-page__card-description[data-v-6feca28f],
45883
+ .cn-reports-page__card-category[data-v-6feca28f] {
45913
45884
  color: var(--color-text-maxcontrast);
45914
45885
  font-size: 0.9em;
45915
45886
  }
45916
- .cn-reports-page__empty[data-v-327b60f8] {
45887
+ .cn-reports-page__empty[data-v-6feca28f] {
45917
45888
  color: var(--color-text-maxcontrast);
45918
45889
  }
45919
- .cn-reports-page__widgets[data-v-327b60f8] {
45890
+ .cn-reports-page__widgets[data-v-6feca28f] {
45920
45891
  margin-top: 20px;
45921
45892
  }
45922
45893