@conduction/nextcloud-vue 2.82.0 → 2.83.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 (78) hide show
  1. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js +2 -2
  2. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  4. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +24 -0
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  6. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +9 -4
  7. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.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 +9 -0
  10. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  12. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +96 -12
  13. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  14. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +95 -50
  15. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  16. package/dist/esm/components/CnMassActionBar/CnMassActionBar.vue2.js +2 -2
  17. package/dist/esm/components/CnMassActionBar/CnMassActionBar.vue2.js.map +1 -1
  18. package/dist/esm/components/CnMassImportDialog/CnMassImportDialog.vue2.js +2 -2
  19. package/dist/esm/components/CnMassImportDialog/CnMassImportDialog.vue2.js.map +1 -1
  20. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue.js +1 -1
  21. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue2.js +16 -2
  22. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue2.js.map +1 -1
  23. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue3.js +3 -3
  24. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue3.js.map +1 -1
  25. package/dist/esm/components/CnReportsPage/CnReportsPage.vue.js +1 -1
  26. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js +43 -0
  27. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js.map +1 -1
  28. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js +130 -53
  29. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js.map +1 -1
  30. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue.js +1 -1
  31. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue2.js +70 -5
  32. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue2.js.map +1 -1
  33. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue3.js +61 -35
  34. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue3.js.map +1 -1
  35. package/dist/esm/components/CnStatWidget/CnStatWidget.vue.js +1 -1
  36. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +3 -1
  37. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  38. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  39. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue.js +1 -1
  40. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js +55 -3
  41. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js.map +1 -1
  42. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js +88 -71
  43. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js.map +1 -1
  44. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue.js +1 -1
  45. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue2.js +18 -4
  46. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue2.js.map +1 -1
  47. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue3.js.map +1 -1
  48. package/dist/esm/l10n/nl.json.js +3 -3
  49. package/dist/esm/library-style.js +1 -1
  50. package/dist/esm/nextcloud-vue.css +549 -338
  51. package/dist/esm/utils/fetchAggregate.js +25 -2
  52. package/dist/esm/utils/fetchAggregate.js.map +1 -1
  53. package/dist/esm/utils/switchValues.js +62 -0
  54. package/dist/esm/utils/switchValues.js.map +1 -0
  55. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  56. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  57. package/dist/nextcloud-vue.cjs.js +36086 -35536
  58. package/dist/nextcloud-vue.cjs.js.map +2 -2
  59. package/dist/nextcloud-vue.css +549 -338
  60. package/l10n/nl.json +3 -3
  61. package/package.json +1 -1
  62. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +31 -2
  63. package/src/components/CnDashboardPage/CnDashboardPage.vue +9 -0
  64. package/src/components/CnIndexPage/CnIndexPage.vue +125 -15
  65. package/src/components/CnRadioCardsWidget/CnRadioCardsWidget.vue +54 -3
  66. package/src/components/CnReportsPage/CnReportsPage.vue +84 -4
  67. package/src/components/CnSettingsFormWidget/CnSettingsFormWidget.vue +110 -18
  68. package/src/components/CnStatWidget/CnStatWidget.vue +3 -1
  69. package/src/components/CnStatsBlockWidget/CnStatsBlockWidget.vue +92 -5
  70. package/src/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue +18 -4
  71. package/src/css/index-page.css +11 -0
  72. package/src/css/index.css +1 -0
  73. package/src/css/look-board-reports.css +117 -0
  74. package/src/css/look-board.css +32 -1
  75. package/src/schemas/app-manifest-v2.schema.json +2 -2
  76. package/src/utils/fetchAggregate.js +24 -1
  77. package/src/utils/switchValues.js +59 -0
  78. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -503,9 +503,20 @@
503
503
  align-items: start;
504
504
  }
505
505
 
506
- /* The card: a section of the shell, or a CnSettingsCard of the page. */
506
+ /* An app component that wraps its sections in one element (decidiq's
507
+ Settings.vue) takes no box of its own: its sections are grid items and
508
+ cards, as if the shell held them directly. Only an element whose own
509
+ children are sections; anything else keeps spanning the grid. */
510
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section),
511
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) {
512
+ display: contents;
513
+ }
514
+
515
+ /* The card: a section of the shell (also one inside a wrapping element), or a CnSettingsCard of the page. */
507
516
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
508
517
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
518
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
519
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
509
520
  .cn-look-board .cn-settings-page__sections:not(.cn-look-nextcloud *) > .cn-settings-card {
510
521
  box-sizing: border-box;
511
522
  display: flex;
@@ -532,7 +543,12 @@
532
543
  display: none;
533
544
  }
534
545
 
546
+ /* NcSettingsSection draws its name `display: inline-flex; justify-content:
547
+ center`; in the card's flex column the name spans the card, so the title
548
+ sat centred. The board's card titles start at the left edge. */
535
549
  .cn-look-board .settings-section:not(.cn-look-nextcloud *) .settings-section__name {
550
+ justify-content: flex-start;
551
+ text-align: start;
536
552
  margin: 0;
537
553
  font-size: 19px;
538
554
  font-weight: 700;
@@ -734,6 +750,21 @@
734
750
  margin-inline-start: auto;
735
751
  }
736
752
 
753
+ /* The title and meta take the room the pill and the date leave, and a long
754
+ title wraps inside it: the pill and the date stay on the title line, as the
755
+ board draws them. They drop under the text only when the card is too narrow
756
+ to hold 240px of text beside them (PqMijnWerk). */
757
+ .cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-list__main {
758
+ flex: 1 1 240px;
759
+ }
760
+
761
+ /* ---- Saved views on a dashboard card (PqMijnWerk) ------------------------ */
762
+ /* The card body is flush, so the list and its empty line carry the card's
763
+ inset themselves, the same 24px at the sides as a record list. */
764
+ .cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-saved-views-widget {
765
+ padding: 4px 24px 20px;
766
+ }
767
+
737
768
  /* The board draws no chevron after the pill and date. */
738
769
  .cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-list__chevron {
739
770
  display: none;
@@ -4992,6 +5023,17 @@ a.cn-kpi-card--board * {
4992
5023
  padding: calc(5 * var(--default-grid-baseline));
4993
5024
  }
4994
5025
 
5026
+ /* A group heading in the header's Actions menu (`{ heading }` in items), as
5027
+ the board's "Ga naar" and "Selectie": 12px bold capitals, muted. The menu
5028
+ is a popover outside the page, so the class is not under the look class. */
5029
+ .cn-index-header-menu__heading {
5030
+ font-size: 12px;
5031
+ font-weight: 700;
5032
+ letter-spacing: 0.04em;
5033
+ text-transform: uppercase;
5034
+ color: var(--color-text-maxcontrast);
5035
+ }
5036
+
4995
5037
  /* The board's header buttons (`headerButtons`) at the end of the title row,
4996
5038
  centred on the title and its count line. They wrap under the title on a
4997
5039
  narrow page. */
@@ -6927,6 +6969,123 @@ a.cn-kpi-card--board * {
6927
6969
  .cn-look-board:has(.cn-detail-page) > .app-sidebar__toggle {
6928
6970
  display: none;
6929
6971
  }
6972
+ /*
6973
+ * The reports page under the board look (screens-reports-page-board-look,
6974
+ * board DcRapportages): a 28px title over a muted lead, one section per
6975
+ * category headed at 18px, and two-up cards with an icon tile. Scoped under
6976
+ * `.cn-look-board` with the page guard, so an app without the look renders as
6977
+ * before.
6978
+ */
6979
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) {
6980
+ box-sizing: border-box;
6981
+ display: flex;
6982
+ flex-direction: column;
6983
+ gap: var(--cn-board-section-gap);
6984
+ padding: var(--cn-board-content-padding);
6985
+ max-width: var(--cn-board-content-max-width);
6986
+ }
6987
+
6988
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__header {
6989
+ display: flex;
6990
+ flex-direction: column;
6991
+ gap: 14px;
6992
+ padding: 4px 0 8px;
6993
+ }
6994
+
6995
+ /* The 56px inset clears the navigation toggle only while the navigation is
6996
+ closed, as on the other board pages. */
6997
+ .cn-look-board:has(.app-navigation--closed) .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__header {
6998
+ padding-inline-start: 56px;
6999
+ }
7000
+
7001
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__title {
7002
+ margin: 0;
7003
+ font-size: 28px;
7004
+ font-weight: 700;
7005
+ line-height: 1.2;
7006
+ }
7007
+
7008
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__description {
7009
+ margin: 0;
7010
+ font-size: 14px;
7011
+ color: var(--color-text-maxcontrast);
7012
+ }
7013
+
7014
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__section {
7015
+ display: flex;
7016
+ flex-direction: column;
7017
+ gap: 12px;
7018
+ /* A host's own `section` rule (a width cap, a margin) does not reach it. */
7019
+ max-width: none;
7020
+ margin: 0;
7021
+ }
7022
+
7023
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__section-title {
7024
+ margin: 0;
7025
+ font-size: 18px;
7026
+ font-weight: 700;
7027
+ }
7028
+
7029
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__grid {
7030
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
7031
+ gap: 14px;
7032
+ }
7033
+
7034
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card {
7035
+ box-sizing: border-box;
7036
+ flex-direction: row;
7037
+ align-items: flex-start;
7038
+ gap: 14px;
7039
+ padding: 18px 20px;
7040
+ border: 1px solid var(--color-border);
7041
+ border-radius: var(--cn-board-card-radius);
7042
+ background: var(--color-main-background);
7043
+ color: var(--color-main-text);
7044
+ }
7045
+
7046
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card:hover,
7047
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card:focus-visible {
7048
+ background: var(--color-background-hover);
7049
+ }
7050
+
7051
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card-icon {
7052
+ flex: none;
7053
+ display: flex;
7054
+ align-items: center;
7055
+ justify-content: center;
7056
+ width: 44px;
7057
+ height: 44px;
7058
+ border-radius: 10px;
7059
+ background: var(--color-primary-element-light);
7060
+ color: var(--color-primary-element-light-text);
7061
+ }
7062
+
7063
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card-text {
7064
+ display: flex;
7065
+ flex-direction: column;
7066
+ gap: 4px;
7067
+ }
7068
+
7069
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card-title {
7070
+ font-size: 17px;
7071
+ font-weight: 700;
7072
+ }
7073
+
7074
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card-description {
7075
+ font-size: 14px;
7076
+ line-height: 1.5;
7077
+ color: var(--color-text-maxcontrast);
7078
+ }
7079
+
7080
+ /* The widgets under the cards sit in the page's own padding: the dashboard
7081
+ inside draws no second frame. */
7082
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__widgets {
7083
+ margin-top: 0;
7084
+ }
7085
+
7086
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-dashboard-page {
7087
+ padding: 0;
7088
+ }
6930
7089
  /* CnReferencePreview — a reference that shows what it points at. */
6931
7090
 
6932
7091
  .cn-reference-preview {
@@ -22339,6 +22498,214 @@ a.cn-kpi-card--board * {
22339
22498
  .cn-stats-block__breakdown-value--published[data-v-770aba44] { color: var(--color-element-success);
22340
22499
  }
22341
22500
 
22501
+ /* ========================================
22502
+ @conduction/nextcloud-vue — Status Badge
22503
+ ======================================== */
22504
+
22505
+ /* The two board tones without a Nextcloud colour role (screens-cell-pill-parity).
22506
+ A theme may redefine them; the six role variants below use Nextcloud's own. */
22507
+ :root {
22508
+ --cn-status-purple-bg: #e8e6f6;
22509
+ --cn-status-purple-text: #4a3f8f;
22510
+ --cn-status-teal-bg: #e3f1f3;
22511
+ --cn-status-teal-text: #1d5e66;
22512
+ }
22513
+
22514
+ .cn-status-badge {
22515
+ display: inline-flex;
22516
+ align-items: center;
22517
+ gap: calc(0.5 * var(--default-grid-baseline));
22518
+ padding: calc(0.5 * var(--default-grid-baseline)) calc(2.5 * var(--default-grid-baseline));
22519
+ border-radius: var(--border-radius-pill);
22520
+ font-size: 0.85em;
22521
+ font-weight: 500;
22522
+ line-height: 1.4;
22523
+ white-space: nowrap;
22524
+ }
22525
+
22526
+ /* Size variants */
22527
+ .cn-status-badge--small {
22528
+ padding: calc(0.25 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));
22529
+ font-size: 0.75em;
22530
+ }
22531
+
22532
+ /* Color variants */
22533
+ .cn-status-badge--default {
22534
+ background-color: var(--color-background-dark);
22535
+ color: var(--color-main-text);
22536
+ }
22537
+
22538
+ .cn-status-badge--primary {
22539
+ background-color: var(--color-primary-element-light);
22540
+ color: var(--color-primary-element);
22541
+ }
22542
+
22543
+ .cn-status-badge--success {
22544
+ background-color: var(--color-success-light, rgba(70, 186, 97, 0.15));
22545
+ color: var(--color-success-text, var(--color-success));
22546
+ }
22547
+
22548
+ .cn-status-badge--warning {
22549
+ background-color: var(--color-warning-light, rgba(232, 163, 39, 0.15));
22550
+ color: var(--color-warning-text, var(--color-warning));
22551
+ }
22552
+
22553
+ .cn-status-badge--error {
22554
+ background-color: var(--color-error-light, rgba(224, 68, 68, 0.15));
22555
+ color: var(--color-error-text, var(--color-error));
22556
+ }
22557
+
22558
+ .cn-status-badge--info {
22559
+ background-color: var(--color-info-light, rgba(0, 130, 201, 0.15));
22560
+ color: var(--color-info-text, var(--color-info, #0082c9));
22561
+ }
22562
+
22563
+ /* Work in progress ("In behandeling"), a board tone. */
22564
+ .cn-status-badge--purple {
22565
+ background-color: var(--cn-status-purple-bg);
22566
+ color: var(--cn-status-purple-text);
22567
+ }
22568
+
22569
+ /* Handed on ("Omgezet naar een zaak"), a board tone. */
22570
+ .cn-status-badge--teal {
22571
+ background-color: var(--cn-status-teal-bg);
22572
+ color: var(--cn-status-teal-text);
22573
+ }
22574
+
22575
+ /* Solid variants — solid background with white text for use on colored backgrounds */
22576
+ .cn-status-badge--solid.cn-status-badge--default {
22577
+ background-color: var(--color-background-dark);
22578
+ color: var(--color-main-text);
22579
+ }
22580
+
22581
+ .cn-status-badge--solid.cn-status-badge--primary {
22582
+ background-color: var(--color-primary-element);
22583
+ color: white;
22584
+ }
22585
+
22586
+ .cn-status-badge--solid.cn-status-badge--success {
22587
+ background-color: var(--color-success);
22588
+ color: white;
22589
+ }
22590
+
22591
+ .cn-status-badge--solid.cn-status-badge--warning {
22592
+ background-color: var(--color-warning);
22593
+ color: var(--color-primary-text);
22594
+ }
22595
+
22596
+ .cn-status-badge--solid.cn-status-badge--error {
22597
+ background-color: var(--color-error);
22598
+ color: white;
22599
+ }
22600
+
22601
+ .cn-status-badge--solid.cn-status-badge--info {
22602
+ background-color: var(--color-info, #0082c9);
22603
+ color: white;
22604
+ }
22605
+
22606
+ .cn-status-badge--solid.cn-status-badge--purple {
22607
+ background-color: var(--cn-status-purple-text);
22608
+ color: white;
22609
+ }
22610
+
22611
+ .cn-status-badge--solid.cn-status-badge--teal {
22612
+ background-color: var(--cn-status-teal-text);
22613
+ color: white;
22614
+ }
22615
+
22616
+
22617
+ /*
22618
+ * The card itself — its box, body stack, icon circle, title and value
22619
+ * typography — is the CANONICAL KPI card in src/css/kpi-card.css, shared with
22620
+ * CnStatsBlock. What remains here is only what is specific to THIS widget: the
22621
+ * range select, the "/ limit" denominator, the trend chip and the error glyph.
22622
+ *
22623
+ * Every size below is expressed against the shared `--cn-kpi-*` scale rather
22624
+ * than as its own number, so the widget's extras re-scale with the card they
22625
+ * sit in. Resist adding card styling back, and resist restating a value the
22626
+ * scale already holds; that is what split the two KPI looks apart in the first
22627
+ * place.
22628
+ */
22629
+
22630
+ /* The title row carries an optional range select beside the label, which the
22631
+ canonical `__title` (a plain truncating heading) does not account for. */
22632
+ .cn-stat-widget__label[data-v-644c38a1] {
22633
+ display: flex;
22634
+ align-items: center;
22635
+ justify-content: space-between;
22636
+ gap: 8px;
22637
+ width: 100%;
22638
+ }
22639
+
22640
+ /* Stacked tile: the label and its range select centre over the number rather
22641
+ than spreading to the card's edges. */
22642
+ .cn-kpi-card--vertical .cn-stat-widget__label[data-v-644c38a1] {
22643
+ justify-content: center;
22644
+ width: auto;
22645
+ }
22646
+
22647
+ /* Sized down to sit inside the label row without pushing the tile taller —
22648
+ the tile's height is fixed by its grid cell (ADR-062). */
22649
+ .cn-stat-widget__range[data-v-644c38a1] {
22650
+ flex: 0 0 auto;
22651
+ max-width: 50%;
22652
+ padding: 0 4px;
22653
+ border: none;
22654
+ border-radius: var(--border-radius);
22655
+ background: transparent;
22656
+ color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
22657
+ font-size: var(--cn-kpi-label-size, 13px);
22658
+ font-weight: normal;
22659
+ cursor: pointer;
22660
+ }
22661
+ .cn-stat-widget__range[data-v-644c38a1]:hover,
22662
+ .cn-stat-widget__range[data-v-644c38a1]:focus-visible {
22663
+ background: var(--color-background-hover);
22664
+ color: var(--color-main-text);
22665
+ }
22666
+
22667
+ /* Badge mode: the pill takes the value's place in the row. Sized to the
22668
+ card's label scale so it sits in the row without pushing the tile taller. */
22669
+ .cn-stat-widget__badge[data-v-644c38a1] {
22670
+ flex: 0 1 auto;
22671
+ min-width: 0;
22672
+ max-width: 100%;
22673
+ overflow: hidden;
22674
+ text-overflow: ellipsis;
22675
+ font-size: var(--cn-kpi-label-size, 13px);
22676
+ }
22677
+
22678
+ /* The denominator of a "value / limit" pair. Deliberately quieter and smaller
22679
+ than the value: the tile's subject is what the number IS, not what it is
22680
+ allowed to reach. Shares the value's `nowrap` so the pair never breaks. */
22681
+ .cn-stat-widget__limit[data-v-644c38a1] {
22682
+ flex: 0 0 auto;
22683
+ font-size: var(--cn-kpi-value-size-compact, 1.25rem);
22684
+ font-weight: var(--cn-kpi-title-weight, 600);
22685
+ line-height: var(--cn-kpi-value-line, 1.1);
22686
+ color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
22687
+ white-space: nowrap;
22688
+ }
22689
+ .cn-stat-widget__trend[data-v-644c38a1] {
22690
+ display: inline-flex;
22691
+ align-items: center;
22692
+ gap: 2px;
22693
+ font-size: var(--cn-kpi-label-size, 13px);
22694
+ font-weight: var(--cn-kpi-title-weight, 600);
22695
+ }
22696
+
22697
+ /* The dash shown when the number could not be fetched. It stands where the
22698
+ value stands, so it takes the value's size and weight — CnStatsBlock's own
22699
+ error dash is literally a `cn-kpi-card__value`, and two components showing
22700
+ the same failure at two different sizes is the drift this consolidation
22701
+ exists to remove. Only the colour differs: a failure is not a number. */
22702
+ .cn-stat-widget__error[data-v-644c38a1] {
22703
+ font-size: var(--cn-kpi-value-size, 2rem);
22704
+ font-weight: var(--cn-kpi-value-weight, 700);
22705
+ line-height: var(--cn-kpi-value-line, 1.1);
22706
+ color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
22707
+ }
22708
+
22342
22709
 
22343
22710
  /*
22344
22711
  * This widget draws no KPI of its own — every tile it shows is a CnStatsBlock,
@@ -22372,67 +22739,81 @@ a.cn-kpi-card--board * {
22372
22739
  * modes render this root, so both collapse. The bug was found on a
22373
22740
  * single-entry stats-block.
22374
22741
  */
22375
- .cn-stats-block-widget[data-v-75d3ad28] {
22742
+ .cn-stats-block-widget[data-v-c1220134] {
22376
22743
  flex: 1 1 auto;
22377
22744
  min-width: 0;
22378
22745
  width: 100%;
22379
22746
  }
22380
- .cn-stats-block-widget--multi[data-v-75d3ad28] {
22747
+ .cn-stats-block-widget--multi[data-v-c1220134] {
22381
22748
  display: flex;
22382
22749
  flex-direction: column;
22383
22750
  gap: var(--cn-kpi-stack-gap, 12px);
22384
22751
  }
22385
22752
 
22386
22753
  /* Rows layout: the board's "label left, number right" card body. */
22387
- .cn-stats-block-widget--rows[data-v-75d3ad28] {
22754
+ .cn-stats-block-widget--rows[data-v-c1220134] {
22388
22755
  display: flex;
22389
22756
  flex-direction: column;
22390
22757
  gap: 12px;
22391
22758
  box-sizing: border-box;
22392
22759
  padding: 20px 22px;
22393
22760
  }
22394
- .cn-stats-block-widget__rows-title[data-v-75d3ad28] {
22761
+ .cn-stats-block-widget__rows-title[data-v-c1220134] {
22395
22762
  margin: 0;
22396
22763
  font-size: 15px;
22397
22764
  font-weight: 600;
22398
22765
  color: var(--color-text-maxcontrast);
22399
22766
  }
22400
- .cn-stats-block-widget__rows[data-v-75d3ad28] {
22767
+ .cn-stats-block-widget--grid[data-v-c1220134] {
22768
+ padding: 4px 24px 20px;
22769
+ }
22770
+ .cn-stats-block-widget__grid[data-v-c1220134] {
22771
+ display: grid;
22772
+ grid-template-columns: repeat(var(--cn-stats-block-columns, 2), minmax(0, 1fr));
22773
+ gap: 16px 20px;
22774
+ }
22775
+
22776
+ /* A tile in the grid is a part of the card, not a card: no box, no inset. */
22777
+ .cn-stats-block-widget__grid-stat[data-v-c1220134] {
22778
+ padding: 0;
22779
+ min-width: 0;
22780
+ }
22781
+ .cn-stats-block-widget__rows[data-v-c1220134] {
22401
22782
  display: flex;
22402
22783
  flex-direction: column;
22403
22784
  gap: 8px;
22404
22785
  margin: 0;
22405
22786
  font-size: 14px;
22406
22787
  }
22407
- .cn-stats-block-widget__row[data-v-75d3ad28] {
22788
+ .cn-stats-block-widget__row[data-v-c1220134] {
22408
22789
  display: flex;
22409
22790
  align-items: baseline;
22410
22791
  justify-content: space-between;
22411
22792
  gap: 16px;
22412
22793
  }
22413
- .cn-stats-block-widget__row-label[data-v-75d3ad28] {
22794
+ .cn-stats-block-widget__row-label[data-v-c1220134] {
22414
22795
  min-width: 0;
22415
22796
  margin: 0;
22416
22797
  overflow: hidden;
22417
22798
  text-overflow: ellipsis;
22418
22799
  }
22419
- .cn-stats-block-widget__row-value[data-v-75d3ad28] {
22800
+ .cn-stats-block-widget__row-value[data-v-c1220134] {
22420
22801
  flex: none;
22421
22802
  margin: 0;
22422
22803
  font-size: 17px;
22423
22804
  font-weight: 700;
22424
22805
  text-align: right;
22425
22806
  }
22426
- .cn-stats-block-widget__row-value--success[data-v-75d3ad28] {
22807
+ .cn-stats-block-widget__row-value--success[data-v-c1220134] {
22427
22808
  color: var(--color-text-success, var(--color-success-text));
22428
22809
  }
22429
- .cn-stats-block-widget__row-value--warning[data-v-75d3ad28] {
22810
+ .cn-stats-block-widget__row-value--warning[data-v-c1220134] {
22430
22811
  color: var(--color-text-warning, var(--color-warning-text));
22431
22812
  }
22432
- .cn-stats-block-widget__row-value--error[data-v-75d3ad28] {
22813
+ .cn-stats-block-widget__row-value--error[data-v-c1220134] {
22433
22814
  color: var(--color-text-error, var(--color-error-text));
22434
22815
  }
22435
- .cn-stats-block-widget__row-value--primary[data-v-75d3ad28] {
22816
+ .cn-stats-block-widget__row-value--primary[data-v-c1220134] {
22436
22817
  color: var(--color-primary-element);
22437
22818
  }
22438
22819
 
@@ -28066,214 +28447,6 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28066
28447
  background: transparent;
28067
28448
  }
28068
28449
 
28069
- /* ========================================
28070
- @conduction/nextcloud-vue — Status Badge
28071
- ======================================== */
28072
-
28073
- /* The two board tones without a Nextcloud colour role (screens-cell-pill-parity).
28074
- A theme may redefine them; the six role variants below use Nextcloud's own. */
28075
- :root {
28076
- --cn-status-purple-bg: #e8e6f6;
28077
- --cn-status-purple-text: #4a3f8f;
28078
- --cn-status-teal-bg: #e3f1f3;
28079
- --cn-status-teal-text: #1d5e66;
28080
- }
28081
-
28082
- .cn-status-badge {
28083
- display: inline-flex;
28084
- align-items: center;
28085
- gap: calc(0.5 * var(--default-grid-baseline));
28086
- padding: calc(0.5 * var(--default-grid-baseline)) calc(2.5 * var(--default-grid-baseline));
28087
- border-radius: var(--border-radius-pill);
28088
- font-size: 0.85em;
28089
- font-weight: 500;
28090
- line-height: 1.4;
28091
- white-space: nowrap;
28092
- }
28093
-
28094
- /* Size variants */
28095
- .cn-status-badge--small {
28096
- padding: calc(0.25 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));
28097
- font-size: 0.75em;
28098
- }
28099
-
28100
- /* Color variants */
28101
- .cn-status-badge--default {
28102
- background-color: var(--color-background-dark);
28103
- color: var(--color-main-text);
28104
- }
28105
-
28106
- .cn-status-badge--primary {
28107
- background-color: var(--color-primary-element-light);
28108
- color: var(--color-primary-element);
28109
- }
28110
-
28111
- .cn-status-badge--success {
28112
- background-color: var(--color-success-light, rgba(70, 186, 97, 0.15));
28113
- color: var(--color-success-text, var(--color-success));
28114
- }
28115
-
28116
- .cn-status-badge--warning {
28117
- background-color: var(--color-warning-light, rgba(232, 163, 39, 0.15));
28118
- color: var(--color-warning-text, var(--color-warning));
28119
- }
28120
-
28121
- .cn-status-badge--error {
28122
- background-color: var(--color-error-light, rgba(224, 68, 68, 0.15));
28123
- color: var(--color-error-text, var(--color-error));
28124
- }
28125
-
28126
- .cn-status-badge--info {
28127
- background-color: var(--color-info-light, rgba(0, 130, 201, 0.15));
28128
- color: var(--color-info-text, var(--color-info, #0082c9));
28129
- }
28130
-
28131
- /* Work in progress ("In behandeling"), a board tone. */
28132
- .cn-status-badge--purple {
28133
- background-color: var(--cn-status-purple-bg);
28134
- color: var(--cn-status-purple-text);
28135
- }
28136
-
28137
- /* Handed on ("Omgezet naar een zaak"), a board tone. */
28138
- .cn-status-badge--teal {
28139
- background-color: var(--cn-status-teal-bg);
28140
- color: var(--cn-status-teal-text);
28141
- }
28142
-
28143
- /* Solid variants — solid background with white text for use on colored backgrounds */
28144
- .cn-status-badge--solid.cn-status-badge--default {
28145
- background-color: var(--color-background-dark);
28146
- color: var(--color-main-text);
28147
- }
28148
-
28149
- .cn-status-badge--solid.cn-status-badge--primary {
28150
- background-color: var(--color-primary-element);
28151
- color: white;
28152
- }
28153
-
28154
- .cn-status-badge--solid.cn-status-badge--success {
28155
- background-color: var(--color-success);
28156
- color: white;
28157
- }
28158
-
28159
- .cn-status-badge--solid.cn-status-badge--warning {
28160
- background-color: var(--color-warning);
28161
- color: var(--color-primary-text);
28162
- }
28163
-
28164
- .cn-status-badge--solid.cn-status-badge--error {
28165
- background-color: var(--color-error);
28166
- color: white;
28167
- }
28168
-
28169
- .cn-status-badge--solid.cn-status-badge--info {
28170
- background-color: var(--color-info, #0082c9);
28171
- color: white;
28172
- }
28173
-
28174
- .cn-status-badge--solid.cn-status-badge--purple {
28175
- background-color: var(--cn-status-purple-text);
28176
- color: white;
28177
- }
28178
-
28179
- .cn-status-badge--solid.cn-status-badge--teal {
28180
- background-color: var(--cn-status-teal-text);
28181
- color: white;
28182
- }
28183
-
28184
-
28185
- /*
28186
- * The card itself — its box, body stack, icon circle, title and value
28187
- * typography — is the CANONICAL KPI card in src/css/kpi-card.css, shared with
28188
- * CnStatsBlock. What remains here is only what is specific to THIS widget: the
28189
- * range select, the "/ limit" denominator, the trend chip and the error glyph.
28190
- *
28191
- * Every size below is expressed against the shared `--cn-kpi-*` scale rather
28192
- * than as its own number, so the widget's extras re-scale with the card they
28193
- * sit in. Resist adding card styling back, and resist restating a value the
28194
- * scale already holds; that is what split the two KPI looks apart in the first
28195
- * place.
28196
- */
28197
-
28198
- /* The title row carries an optional range select beside the label, which the
28199
- canonical `__title` (a plain truncating heading) does not account for. */
28200
- .cn-stat-widget__label[data-v-50eb91c3] {
28201
- display: flex;
28202
- align-items: center;
28203
- justify-content: space-between;
28204
- gap: 8px;
28205
- width: 100%;
28206
- }
28207
-
28208
- /* Stacked tile: the label and its range select centre over the number rather
28209
- than spreading to the card's edges. */
28210
- .cn-kpi-card--vertical .cn-stat-widget__label[data-v-50eb91c3] {
28211
- justify-content: center;
28212
- width: auto;
28213
- }
28214
-
28215
- /* Sized down to sit inside the label row without pushing the tile taller —
28216
- the tile's height is fixed by its grid cell (ADR-062). */
28217
- .cn-stat-widget__range[data-v-50eb91c3] {
28218
- flex: 0 0 auto;
28219
- max-width: 50%;
28220
- padding: 0 4px;
28221
- border: none;
28222
- border-radius: var(--border-radius);
28223
- background: transparent;
28224
- color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
28225
- font-size: var(--cn-kpi-label-size, 13px);
28226
- font-weight: normal;
28227
- cursor: pointer;
28228
- }
28229
- .cn-stat-widget__range[data-v-50eb91c3]:hover,
28230
- .cn-stat-widget__range[data-v-50eb91c3]:focus-visible {
28231
- background: var(--color-background-hover);
28232
- color: var(--color-main-text);
28233
- }
28234
-
28235
- /* Badge mode: the pill takes the value's place in the row. Sized to the
28236
- card's label scale so it sits in the row without pushing the tile taller. */
28237
- .cn-stat-widget__badge[data-v-50eb91c3] {
28238
- flex: 0 1 auto;
28239
- min-width: 0;
28240
- max-width: 100%;
28241
- overflow: hidden;
28242
- text-overflow: ellipsis;
28243
- font-size: var(--cn-kpi-label-size, 13px);
28244
- }
28245
-
28246
- /* The denominator of a "value / limit" pair. Deliberately quieter and smaller
28247
- than the value: the tile's subject is what the number IS, not what it is
28248
- allowed to reach. Shares the value's `nowrap` so the pair never breaks. */
28249
- .cn-stat-widget__limit[data-v-50eb91c3] {
28250
- flex: 0 0 auto;
28251
- font-size: var(--cn-kpi-value-size-compact, 1.25rem);
28252
- font-weight: var(--cn-kpi-title-weight, 600);
28253
- line-height: var(--cn-kpi-value-line, 1.1);
28254
- color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
28255
- white-space: nowrap;
28256
- }
28257
- .cn-stat-widget__trend[data-v-50eb91c3] {
28258
- display: inline-flex;
28259
- align-items: center;
28260
- gap: 2px;
28261
- font-size: var(--cn-kpi-label-size, 13px);
28262
- font-weight: var(--cn-kpi-title-weight, 600);
28263
- }
28264
-
28265
- /* The dash shown when the number could not be fetched. It stands where the
28266
- value stands, so it takes the value's size and weight — CnStatsBlock's own
28267
- error dash is literally a `cn-kpi-card__value`, and two components showing
28268
- the same failure at two different sizes is the drift this consolidation
28269
- exists to remove. Only the colour differs: a failure is not a number. */
28270
- .cn-stat-widget__error[data-v-50eb91c3] {
28271
- font-size: var(--cn-kpi-value-size, 2rem);
28272
- font-weight: var(--cn-kpi-value-weight, 700);
28273
- line-height: var(--cn-kpi-value-line, 1.1);
28274
- color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
28275
- }
28276
-
28277
28450
 
28278
28451
  .cn-delta-form[data-v-59878180] {
28279
28452
  display: flex;
@@ -29199,35 +29372,44 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29199
29372
  }
29200
29373
 
29201
29374
 
29202
- .cn-settings-form[data-v-66086856] {
29375
+ .cn-settings-form[data-v-7325a0ee] {
29203
29376
  display: flex;
29204
29377
  flex-direction: column;
29205
29378
  gap: 14px;
29206
29379
  min-width: 0;
29207
29380
  }
29208
- .cn-settings-form__grid[data-v-66086856] {
29381
+ .cn-settings-form__grid[data-v-7325a0ee] {
29209
29382
  display: grid;
29210
29383
  gap: 14px 16px;
29211
29384
  grid-template-columns: minmax(0, 1fr);
29212
29385
  }
29213
- .cn-settings-form__grid--2[data-v-66086856] {
29386
+ .cn-settings-form__grid--2[data-v-7325a0ee] {
29214
29387
  grid-template-columns: repeat(2, minmax(0, 1fr));
29215
29388
  }
29216
- .cn-settings-form__field[data-v-66086856] {
29389
+ .cn-settings-form__field[data-v-7325a0ee] {
29217
29390
  display: flex;
29218
29391
  flex-direction: column;
29219
29392
  gap: 4px;
29220
29393
  min-width: 0;
29221
29394
  }
29222
- .cn-settings-form__field--wide[data-v-66086856] {
29395
+ .cn-settings-form__field--wide[data-v-7325a0ee] {
29223
29396
  grid-column: 1 / -1;
29224
29397
  }
29225
- .cn-settings-form__label[data-v-66086856] {
29398
+ .cn-settings-form__label[data-v-7325a0ee] {
29226
29399
  font-size: 13px;
29227
29400
  font-weight: 600;
29228
29401
  color: var(--color-main-text);
29229
29402
  }
29230
- .cn-settings-form__control[data-v-66086856] {
29403
+ .cn-settings-form__reference[data-v-7325a0ee] {
29404
+ display: flex;
29405
+ flex-direction: column;
29406
+ gap: 6px;
29407
+ }
29408
+ .cn-settings-form__sublabel[data-v-7325a0ee] {
29409
+ font-size: 12px;
29410
+ color: var(--color-text-maxcontrast);
29411
+ }
29412
+ .cn-settings-form__control[data-v-7325a0ee] {
29231
29413
  width: 100%;
29232
29414
  box-sizing: border-box;
29233
29415
  height: var(--cn-board-control-height, 40px);
@@ -29238,13 +29420,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29238
29420
  color: var(--color-main-text);
29239
29421
  font: inherit;
29240
29422
  }
29241
- .cn-settings-form__file[data-v-66086856] {
29423
+ .cn-settings-form__file[data-v-7325a0ee] {
29242
29424
  display: flex;
29243
29425
  flex-wrap: wrap;
29244
29426
  align-items: center;
29245
29427
  gap: 8px;
29246
29428
  }
29247
- .cn-settings-form__control--file[data-v-66086856] {
29429
+ .cn-settings-form__control--file[data-v-7325a0ee] {
29248
29430
  display: inline-flex;
29249
29431
  align-items: center;
29250
29432
  width: auto;
@@ -29252,64 +29434,64 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29252
29434
  flex: 0 1 auto;
29253
29435
  overflow-wrap: anywhere;
29254
29436
  }
29255
- .cn-settings-form__control--placeholder[data-v-66086856] {
29437
+ .cn-settings-form__control--placeholder[data-v-7325a0ee] {
29256
29438
  color: var(--color-text-maxcontrast);
29257
29439
  }
29258
- .cn-settings-form__control--area[data-v-66086856] {
29440
+ .cn-settings-form__control--area[data-v-7325a0ee] {
29259
29441
  height: auto;
29260
29442
  padding: 10px 12px;
29261
29443
  resize: vertical;
29262
29444
  }
29263
- .cn-settings-form__control[data-v-66086856]:focus-visible {
29445
+ .cn-settings-form__control[data-v-7325a0ee]:focus-visible {
29264
29446
  outline: 2px solid var(--color-primary-element);
29265
29447
  outline-offset: 1px;
29266
29448
  }
29267
- .cn-settings-form__hint[data-v-66086856],
29268
- .cn-settings-form__error[data-v-66086856] {
29449
+ .cn-settings-form__hint[data-v-7325a0ee],
29450
+ .cn-settings-form__error[data-v-7325a0ee] {
29269
29451
  margin: 0;
29270
29452
  font-size: 12px;
29271
29453
  color: var(--color-text-maxcontrast);
29272
29454
  }
29273
- .cn-settings-form__error[data-v-66086856] {
29455
+ .cn-settings-form__error[data-v-7325a0ee] {
29274
29456
  color: var(--color-error-text);
29275
29457
  }
29276
- .cn-settings-form__actions[data-v-66086856] {
29458
+ .cn-settings-form__actions[data-v-7325a0ee] {
29277
29459
  display: flex;
29278
29460
  justify-content: flex-start;
29279
29461
  }
29280
29462
  @media (max-width: 640px) {
29281
- .cn-settings-form__grid--2[data-v-66086856] {
29463
+ .cn-settings-form__grid--2[data-v-7325a0ee] {
29282
29464
  grid-template-columns: minmax(0, 1fr);
29283
29465
  }
29284
29466
  }
29285
29467
 
29286
29468
 
29287
- .cn-switch-rows[data-v-7a6ac51c] {
29469
+ .cn-switch-rows[data-v-21bccfa9] {
29288
29470
  display: flex;
29289
29471
  flex-direction: column;
29290
29472
  gap: 8px;
29291
29473
  min-width: 0;
29292
29474
  }
29293
- .cn-switch-rows__list[data-v-7a6ac51c] {
29475
+ .cn-switch-rows__list[data-v-21bccfa9] {
29294
29476
  list-style: none;
29295
29477
  margin: 0;
29296
29478
  padding: 0;
29297
29479
  display: flex;
29298
29480
  flex-direction: column;
29299
29481
  }
29300
- .cn-switch-rows__row[data-v-7a6ac51c] {
29482
+ .cn-switch-rows__row[data-v-21bccfa9] {
29301
29483
  padding: 10px 0;
29302
29484
  border-top: 1px solid var(--cn-board-hairline, var(--color-border));
29303
29485
  }
29304
- .cn-switch-rows__row[data-v-7a6ac51c]:first-child {
29486
+ .cn-switch-rows__row[data-v-21bccfa9]:first-child {
29305
29487
  border-top: none;
29306
29488
  padding-top: 0;
29307
29489
  }
29308
- .cn-switch-rows__label[data-v-7a6ac51c] {
29490
+ .cn-switch-rows__label[data-v-21bccfa9] {
29309
29491
  display: block;
29310
29492
  font-weight: 600;
29311
29493
  }
29312
- .cn-switch-rows__hint[data-v-7a6ac51c] {
29494
+ .cn-switch-rows__hint[data-v-21bccfa9] {
29313
29495
  display: block;
29314
29496
  font-size: 12px;
29315
29497
  font-weight: 400;
@@ -29317,7 +29499,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29317
29499
  }
29318
29500
 
29319
29501
 
29320
- .cn-radio-cards[data-v-3b685691] {
29502
+ .cn-radio-cards[data-v-8ac292d6] {
29321
29503
  display: flex;
29322
29504
  flex-direction: column;
29323
29505
  gap: 8px;
@@ -29326,23 +29508,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29326
29508
  padding: 0;
29327
29509
  border: 0;
29328
29510
  }
29329
- .cn-radio-cards__legend[data-v-3b685691] {
29511
+ .cn-radio-cards__legend[data-v-8ac292d6] {
29330
29512
  padding: 0;
29331
29513
  margin-bottom: 6px;
29332
29514
  font-weight: 600;
29333
29515
  }
29334
- .cn-radio-cards__grid[data-v-3b685691] {
29516
+ .cn-radio-cards__grid[data-v-8ac292d6] {
29335
29517
  display: grid;
29336
29518
  gap: 10px;
29337
29519
  grid-template-columns: minmax(0, 1fr);
29338
29520
  }
29339
- .cn-radio-cards__grid--2[data-v-3b685691] {
29521
+ .cn-radio-cards__grid--2[data-v-8ac292d6] {
29340
29522
  grid-template-columns: repeat(2, minmax(0, 1fr));
29341
29523
  }
29342
- .cn-radio-cards__grid--3[data-v-3b685691] {
29524
+ .cn-radio-cards__grid--3[data-v-8ac292d6] {
29343
29525
  grid-template-columns: repeat(3, minmax(0, 1fr));
29344
29526
  }
29345
- .cn-radio-cards__card[data-v-3b685691] {
29527
+ .cn-radio-cards__card[data-v-8ac292d6] {
29346
29528
  position: relative;
29347
29529
  display: flex;
29348
29530
  align-items: flex-start;
@@ -29353,25 +29535,25 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29353
29535
  background: var(--color-main-background);
29354
29536
  cursor: pointer;
29355
29537
  }
29356
- .cn-radio-cards__card--selected[data-v-3b685691] {
29538
+ .cn-radio-cards__card--selected[data-v-8ac292d6] {
29357
29539
  border-color: var(--color-primary-element);
29358
29540
  background: var(--color-primary-element-light);
29359
29541
  box-shadow: 0 0 0 1px var(--color-primary-element);
29360
29542
  }
29361
- .cn-radio-cards__card[data-v-3b685691]:focus-within {
29543
+ .cn-radio-cards__card[data-v-8ac292d6]:focus-within {
29362
29544
  outline: 2px solid var(--color-primary-element);
29363
29545
  outline-offset: 2px;
29364
29546
  }
29365
29547
 
29366
29548
  /* The real input stays in the DOM and in the accessibility tree; the dot is its picture. */
29367
- .cn-radio-cards__input[data-v-3b685691] {
29549
+ .cn-radio-cards__input[data-v-8ac292d6] {
29368
29550
  position: absolute;
29369
29551
  opacity: 0;
29370
29552
  inset: 0;
29371
29553
  margin: 0;
29372
29554
  cursor: pointer;
29373
29555
  }
29374
- .cn-radio-cards__dot[data-v-3b685691] {
29556
+ .cn-radio-cards__dot[data-v-8ac292d6] {
29375
29557
  flex: 0 0 auto;
29376
29558
  width: 14px;
29377
29559
  height: 14px;
@@ -29381,25 +29563,54 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29381
29563
  border-radius: 50%;
29382
29564
  background: var(--color-main-background);
29383
29565
  }
29384
- .cn-radio-cards__card--selected .cn-radio-cards__dot[data-v-3b685691] {
29566
+ .cn-radio-cards__card--selected .cn-radio-cards__dot[data-v-8ac292d6] {
29385
29567
  border: 4px solid var(--color-primary-element);
29386
29568
  }
29387
- .cn-radio-cards__text[data-v-3b685691] {
29569
+ .cn-radio-cards__text[data-v-8ac292d6] {
29388
29570
  display: flex;
29389
29571
  flex-direction: column;
29390
29572
  gap: 2px;
29391
29573
  min-width: 0;
29392
29574
  }
29393
- .cn-radio-cards__title[data-v-3b685691] {
29575
+ .cn-radio-cards__title[data-v-8ac292d6] {
29394
29576
  font-weight: 600;
29395
29577
  }
29396
- .cn-radio-cards__description[data-v-3b685691] {
29578
+ .cn-radio-cards__description[data-v-8ac292d6] {
29397
29579
  font-size: 12px;
29398
29580
  color: var(--color-text-maxcontrast);
29399
29581
  }
29582
+
29583
+ /* `variant: "list"`: one radio button per line, the description under the
29584
+ label, no card around each (board DcBeheer, "Soort organisatie"). */
29585
+ .cn-radio-cards--list .cn-radio-cards__grid[data-v-8ac292d6] {
29586
+ gap: 8px;
29587
+ }
29588
+ .cn-radio-cards--list .cn-radio-cards__card[data-v-8ac292d6],
29589
+ .cn-radio-cards--list .cn-radio-cards__card--selected[data-v-8ac292d6] {
29590
+ padding: 0;
29591
+ border: 0;
29592
+ border-radius: 0;
29593
+ background: transparent;
29594
+ box-shadow: none;
29595
+ font-size: 15px;
29596
+ }
29597
+ .cn-radio-cards--list .cn-radio-cards__dot[data-v-8ac292d6] {
29598
+ width: 18px;
29599
+ height: 18px;
29600
+ margin-top: 2px;
29601
+ }
29602
+ .cn-radio-cards--list .cn-radio-cards__card--selected .cn-radio-cards__dot[data-v-8ac292d6] {
29603
+ border-width: 5px;
29604
+ }
29605
+ .cn-radio-cards--list .cn-radio-cards__title[data-v-8ac292d6] {
29606
+ font-weight: 400;
29607
+ }
29608
+ .cn-radio-cards--list .cn-radio-cards__description[data-v-8ac292d6] {
29609
+ font-size: 13px;
29610
+ }
29400
29611
  @media (max-width: 640px) {
29401
- .cn-radio-cards__grid--2[data-v-3b685691],
29402
- .cn-radio-cards__grid--3[data-v-3b685691] {
29612
+ .cn-radio-cards__grid--2[data-v-8ac292d6],
29613
+ .cn-radio-cards__grid--3[data-v-8ac292d6] {
29403
29614
  grid-template-columns: minmax(0, 1fr);
29404
29615
  }
29405
29616
  }
@@ -33982,28 +34193,28 @@ to {
33982
34193
  }
33983
34194
 
33984
34195
 
33985
- .cn-admin-settings-shell[data-v-533044f8] {
34196
+ .cn-admin-settings-shell[data-v-2f22ff08] {
33986
34197
  max-width: 900px;
33987
34198
  }
33988
34199
 
33989
34200
  /* The board look lifts the width and lays the header and cards on a grid (look-board.css). */
33990
- .cn-support-info[data-v-533044f8] {
34201
+ .cn-support-info[data-v-2f22ff08] {
33991
34202
  margin-top: 16px;
33992
34203
  padding-top: 16px;
33993
34204
  border-top: 1px solid var(--color-border);
33994
34205
  }
33995
- .cn-support-info h4[data-v-533044f8] {
34206
+ .cn-support-info h4[data-v-2f22ff08] {
33996
34207
  margin: 0 0 8px 0;
33997
34208
  font-size: 14px;
33998
34209
  font-weight: 600;
33999
34210
  color: var(--color-main-text);
34000
34211
  }
34001
- .cn-support-info p[data-v-533044f8] {
34212
+ .cn-support-info p[data-v-2f22ff08] {
34002
34213
  margin: 4px 0;
34003
34214
  color: var(--color-text-maxcontrast);
34004
34215
  font-size: 14px;
34005
34216
  }
34006
- .cn-support-info a[data-v-533044f8] {
34217
+ .cn-support-info a[data-v-2f22ff08] {
34007
34218
  color: var(--color-primary-element);
34008
34219
  }
34009
34220
 
@@ -37505,7 +37716,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37505
37716
  }
37506
37717
 
37507
37718
 
37508
- .cn-dashboard-page[data-v-b753474e] {
37719
+ .cn-dashboard-page[data-v-4475ac48] {
37509
37720
  padding: 20px;
37510
37721
  max-width: 1800px;
37511
37722
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -37519,7 +37730,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37519
37730
  overflow-y: auto;
37520
37731
  box-sizing: border-box;
37521
37732
  }
37522
- .cn-dashboard-page__header[data-v-b753474e] {
37733
+ .cn-dashboard-page__header[data-v-4475ac48] {
37523
37734
  display: flex;
37524
37735
  justify-content: space-between;
37525
37736
  align-items: flex-start;
@@ -37531,21 +37742,21 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37531
37742
  room. Only the HEADER shifts right — body widgets keep full width. */
37532
37743
  padding-inline-start: 56px;
37533
37744
  }
37534
- .cn-dashboard-page__header-left[data-v-b753474e] {
37745
+ .cn-dashboard-page__header-left[data-v-4475ac48] {
37535
37746
  min-width: 0;
37536
37747
  }
37537
- .cn-dashboard-page__title-row[data-v-b753474e] {
37748
+ .cn-dashboard-page__title-row[data-v-4475ac48] {
37538
37749
  display: flex;
37539
37750
  align-items: center;
37540
37751
  flex-wrap: wrap;
37541
37752
  gap: 12px;
37542
37753
  }
37543
- .cn-dashboard-page__title[data-v-b753474e] {
37754
+ .cn-dashboard-page__title[data-v-4475ac48] {
37544
37755
  margin: 0;
37545
37756
  font-size: 20px;
37546
37757
  font-weight: 700;
37547
37758
  }
37548
- .cn-dashboard-page__description[data-v-b753474e] {
37759
+ .cn-dashboard-page__description[data-v-4475ac48] {
37549
37760
  margin: 4px 0 0;
37550
37761
  font-size: 14px;
37551
37762
  color: var(--color-text-maxcontrast);
@@ -37553,19 +37764,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37553
37764
 
37554
37765
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
37555
37766
  under it, and 40px buttons with a 10px gap. */
37556
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-b753474e] {
37767
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-4475ac48] {
37557
37768
  font-size: 28px;
37558
37769
  font-weight: 700;
37559
37770
  line-height: 1.2;
37560
37771
  }
37561
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-b753474e] {
37772
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-4475ac48] {
37562
37773
  margin: 6px 0 0;
37563
37774
  font-size: 15px;
37564
37775
  }
37565
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-b753474e] {
37776
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4475ac48] {
37566
37777
  gap: 10px;
37567
37778
  }
37568
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-b753474e] .button-vue {
37779
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4475ac48] .button-vue {
37569
37780
  min-height: var(--cn-board-control-height, 40px);
37570
37781
  height: var(--cn-board-control-height, 40px);
37571
37782
  }
@@ -37573,17 +37784,17 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37573
37784
  /* The switch row under the header (screens-dashboard-greeting-header): the
37574
37785
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
37575
37786
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
37576
- .cn-dashboard-page__switch-row[data-v-b753474e] {
37787
+ .cn-dashboard-page__switch-row[data-v-4475ac48] {
37577
37788
  display: flex;
37578
37789
  flex-wrap: wrap;
37579
37790
  align-items: center;
37580
37791
  gap: 10px;
37581
37792
  margin-bottom: var(--cn-board-section-gap, 20px);
37582
37793
  }
37583
- .cn-dashboard-page__switch-row-spacer[data-v-b753474e] {
37794
+ .cn-dashboard-page__switch-row-spacer[data-v-4475ac48] {
37584
37795
  flex: 1 1 auto;
37585
37796
  }
37586
- .cn-dashboard-page__view-link[data-v-b753474e] {
37797
+ .cn-dashboard-page__view-link[data-v-4475ac48] {
37587
37798
  display: inline-flex;
37588
37799
  align-items: center;
37589
37800
  gap: 6px;
@@ -37597,36 +37808,36 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37597
37808
  white-space: nowrap;
37598
37809
  text-decoration: none !important;
37599
37810
  }
37600
- .cn-dashboard-page__view-link[data-v-b753474e]:hover {
37811
+ .cn-dashboard-page__view-link[data-v-4475ac48]:hover {
37601
37812
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
37602
37813
  }
37603
- .cn-dashboard-page__view-link[data-v-b753474e]:focus-visible {
37814
+ .cn-dashboard-page__view-link[data-v-4475ac48]:focus-visible {
37604
37815
  outline: 2px solid var(--color-main-text);
37605
37816
  outline-offset: 2px;
37606
37817
  }
37607
- .cn-dashboard-page__view-link-icon[data-v-b753474e] {
37818
+ .cn-dashboard-page__view-link-icon[data-v-4475ac48] {
37608
37819
  display: inline-flex;
37609
37820
  }
37610
37821
 
37611
37822
  /* The period group, in a row of its own between the header and the KPI row. */
37612
- .cn-dashboard-page__date-range--segmented[data-v-b753474e] {
37823
+ .cn-dashboard-page__date-range--segmented[data-v-4475ac48] {
37613
37824
  margin-bottom: 16px;
37614
37825
  }
37615
- .cn-dashboard-page__date-segmented[data-v-b753474e] {
37826
+ .cn-dashboard-page__date-segmented[data-v-4475ac48] {
37616
37827
  display: flex;
37617
37828
  align-items: center;
37618
37829
  gap: 8px;
37619
37830
  }
37620
37831
 
37621
37832
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
37622
- .cn-dashboard-page__kpi-row[data-v-b753474e] {
37833
+ .cn-dashboard-page__kpi-row[data-v-4475ac48] {
37623
37834
  margin-bottom: var(--cn-board-section-gap, 16px);
37624
37835
  }
37625
- .cn-dashboard-page__kpi-cell[data-v-b753474e] {
37836
+ .cn-dashboard-page__kpi-cell[data-v-4475ac48] {
37626
37837
  display: flex;
37627
37838
  min-width: 0;
37628
37839
  }
37629
- .cn-dashboard-page__kpi-cell[data-v-b753474e] > * {
37840
+ .cn-dashboard-page__kpi-cell[data-v-4475ac48] > * {
37630
37841
  flex: 1 1 auto;
37631
37842
  min-width: 0;
37632
37843
  }
@@ -37639,7 +37850,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37639
37850
  scoped chip rules then silently don't match and the chip collapses into
37640
37851
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
37641
37852
  data-testid is stable across chunks, so those rules match regardless. */
37642
- .cn-dashboard-page__header-actions[data-v-b753474e] {
37853
+ .cn-dashboard-page__header-actions[data-v-4475ac48] {
37643
37854
  display: flex;
37644
37855
  align-items: center;
37645
37856
  gap: 8px;
@@ -37655,19 +37866,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37655
37866
 
37656
37867
  /* Date-range header band. Kept compact so it doesn't open a tall gap
37657
37868
  above the grid; the pills variant is a single tidy toggle row. */
37658
- .cn-dashboard-page__date-range[data-v-b753474e] {
37869
+ .cn-dashboard-page__date-range[data-v-4475ac48] {
37659
37870
  margin-bottom: 12px;
37660
37871
  }
37661
- .cn-dashboard-page__date-range--pills[data-v-b753474e] {
37872
+ .cn-dashboard-page__date-range--pills[data-v-4475ac48] {
37662
37873
  margin-bottom: 8px;
37663
37874
  }
37664
- .cn-dashboard-page__date-pills[data-v-b753474e] {
37875
+ .cn-dashboard-page__date-pills[data-v-4475ac48] {
37665
37876
  display: flex;
37666
37877
  align-items: center;
37667
37878
  flex-wrap: wrap;
37668
37879
  gap: 6px;
37669
37880
  }
37670
- .cn-dashboard-page__date-pill[data-v-b753474e] {
37881
+ .cn-dashboard-page__date-pill[data-v-4475ac48] {
37671
37882
  display: inline-flex;
37672
37883
  align-items: center;
37673
37884
  padding: 5px 14px;
@@ -37682,77 +37893,77 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37682
37893
  cursor: pointer;
37683
37894
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
37684
37895
  }
37685
- .cn-dashboard-page__date-pill[data-v-b753474e]:hover {
37896
+ .cn-dashboard-page__date-pill[data-v-4475ac48]:hover {
37686
37897
  background: var(--color-background-hover);
37687
37898
  }
37688
- .cn-dashboard-page__date-pill[data-v-b753474e]:focus-visible {
37899
+ .cn-dashboard-page__date-pill[data-v-4475ac48]:focus-visible {
37689
37900
  outline: 2px solid var(--color-primary-element);
37690
37901
  outline-offset: 2px;
37691
37902
  }
37692
- .cn-dashboard-page__date-pill--active[data-v-b753474e] {
37903
+ .cn-dashboard-page__date-pill--active[data-v-4475ac48] {
37693
37904
  background: var(--color-primary-element);
37694
37905
  border-color: var(--color-primary-element);
37695
37906
  color: var(--color-primary-element-text);
37696
37907
  }
37697
- .cn-dashboard-page__date-pill--active[data-v-b753474e]:hover {
37908
+ .cn-dashboard-page__date-pill--active[data-v-4475ac48]:hover {
37698
37909
  background: var(--color-primary-element-hover, var(--color-primary-element));
37699
37910
  }
37700
37911
 
37701
37912
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
37702
37913
  so it reads as an escape hatch rather than a primary option. */
37703
- .cn-dashboard-page__date-pill--custom[data-v-b753474e] {
37914
+ .cn-dashboard-page__date-pill--custom[data-v-4475ac48] {
37704
37915
  border-style: dashed;
37705
37916
  color: var(--color-text-maxcontrast);
37706
37917
  }
37707
- .cn-dashboard-page__date-pill-custom[data-v-b753474e] .action-item__menutoggle {
37918
+ .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .action-item__menutoggle {
37708
37919
  min-width: 0;
37709
37920
  min-height: 0;
37710
37921
  padding: 0;
37711
37922
  background: transparent;
37712
37923
  border: none;
37713
37924
  }
37714
- .cn-dashboard-page__date-pill-custom[data-v-b753474e] .button-vue,
37715
- .cn-dashboard-page__date-pill-custom[data-v-b753474e] .button-vue__wrapper,
37716
- .cn-dashboard-page__date-pill-custom[data-v-b753474e] .button-vue__icon {
37925
+ .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .button-vue,
37926
+ .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .button-vue__wrapper,
37927
+ .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .button-vue__icon {
37717
37928
  width: auto !important;
37718
37929
  min-width: 0 !important;
37719
37930
  overflow: visible !important;
37720
37931
  }
37721
- .cn-dashboard-page__empty[data-v-b753474e] {
37932
+ .cn-dashboard-page__empty[data-v-4475ac48] {
37722
37933
  padding: 60px 20px;
37723
37934
  }
37724
37935
 
37725
37936
  /* The page's view switch on a page without a header row: at the end of its
37726
37937
  own row, above the grids, where the header would have put it. */
37727
- .cn-dashboard-page__view-switch[data-v-b753474e] {
37938
+ .cn-dashboard-page__view-switch[data-v-4475ac48] {
37728
37939
  display: flex;
37729
37940
  justify-content: flex-end;
37730
37941
  margin-bottom: 12px;
37731
37942
  }
37732
37943
 
37733
37944
  /* A view the switch shows with nothing to draw. */
37734
- .cn-page-view-region--empty[data-v-b753474e] {
37945
+ .cn-page-view-region--empty[data-v-4475ac48] {
37735
37946
  padding: 40px 20px;
37736
37947
  }
37737
- .cn-dashboard-page__page-filters[data-v-b753474e] {
37948
+ .cn-dashboard-page__page-filters[data-v-4475ac48] {
37738
37949
  display: flex;
37739
37950
  flex-wrap: wrap;
37740
37951
  gap: 16px;
37741
37952
  align-items: flex-end;
37742
37953
  margin-bottom: 12px;
37743
37954
  }
37744
- .cn-dashboard-page__page-filter[data-v-b753474e] {
37955
+ .cn-dashboard-page__page-filter[data-v-4475ac48] {
37745
37956
  display: flex;
37746
37957
  flex-direction: column;
37747
37958
  gap: 4px;
37748
37959
  min-width: 200px;
37749
37960
  }
37750
- .cn-dashboard-page__page-filter-label[data-v-b753474e] {
37961
+ .cn-dashboard-page__page-filter-label[data-v-4475ac48] {
37751
37962
  font-size: 0.85em;
37752
37963
  font-weight: 600;
37753
37964
  color: var(--color-text-maxcontrast);
37754
37965
  }
37755
- .cn-dashboard-page__widget-edit[data-v-b753474e] {
37966
+ .cn-dashboard-page__widget-edit[data-v-4475ac48] {
37756
37967
  position: absolute;
37757
37968
  top: 4px;
37758
37969
  inset-inline-end: 4px;
@@ -37771,8 +37982,8 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37771
37982
  and centre the card. */
37772
37983
  /* `safe` centre so an overflowing tile does not spill out of the top, where
37773
37984
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
37774
- .cn-dashboard-page__card-fit[data-v-b753474e] .cn-widget-wrapper__content,
37775
- .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-b753474e] .cn-widget-wrapper__content {
37985
+ .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-widget-wrapper__content,
37986
+ .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-4475ac48] .cn-widget-wrapper__content {
37776
37987
  overflow: hidden;
37777
37988
  display: flex;
37778
37989
  flex-direction: column;
@@ -37788,7 +37999,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37788
37999
  shows up as a scrollbar the user has to drag to see the whole graph. Same
37789
38000
  shape as the card-fit rule above, minus the padding: chart tiles render
37790
38001
  `flush`, and apexcharts already draws its own margins. */
37791
- .cn-dashboard-page__chart-fit[data-v-b753474e] .cn-widget-wrapper__content {
38002
+ .cn-dashboard-page__chart-fit[data-v-4475ac48] .cn-widget-wrapper__content {
37792
38003
  overflow: hidden;
37793
38004
  display: flex;
37794
38005
  flex-direction: column;
@@ -37798,13 +38009,13 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37798
38009
  /* Card content (stat / gauge / delta) must fit the tile width: let the
37799
38010
  widget shrink and its value/label truncate instead of pushing past the
37800
38011
  tile edge (the horizontal clip on long currency values). */
37801
- .cn-dashboard-page__card-fit[data-v-b753474e] .cn-stat-widget,
37802
- .cn-dashboard-page__card-fit[data-v-b753474e] .cn-gauge-widget,
37803
- .cn-dashboard-page__card-fit[data-v-b753474e] .cn-delta-widget {
38012
+ .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-stat-widget,
38013
+ .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-gauge-widget,
38014
+ .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-delta-widget {
37804
38015
  min-width: 0;
37805
38016
  max-width: 100%;
37806
38017
  }
37807
- .cn-dashboard-page__unknown[data-v-b753474e] {
38018
+ .cn-dashboard-page__unknown[data-v-4475ac48] {
37808
38019
  display: flex;
37809
38020
  align-items: center;
37810
38021
  justify-content: center;
@@ -37815,29 +38026,29 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37815
38026
  }
37816
38027
 
37817
38028
  /* widget-ref content items */
37818
- .cn-dashboard-page__content[data-v-b753474e] {
38029
+ .cn-dashboard-page__content[data-v-4475ac48] {
37819
38030
  display: flex;
37820
38031
  flex-direction: column;
37821
38032
  gap: 16px;
37822
38033
  }
37823
- .cn-dashboard-page__content-item[data-v-b753474e] {
38034
+ .cn-dashboard-page__content-item[data-v-4475ac48] {
37824
38035
  width: 100%;
37825
38036
  }
37826
38037
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
37827
38038
  are 44px: the widget Actions menu and the KPI tiles. */
37828
38039
  @media (max-width: 640px) {
37829
- .cn-dashboard-page--board[data-v-b753474e] .cn-widget-wrapper__actions .action-item__menutoggle,
37830
- .cn-dashboard-page--board[data-v-b753474e] .cn-widget-wrapper__actions .button-vue {
38040
+ .cn-dashboard-page--board[data-v-4475ac48] .cn-widget-wrapper__actions .action-item__menutoggle,
38041
+ .cn-dashboard-page--board[data-v-4475ac48] .cn-widget-wrapper__actions .button-vue {
37831
38042
  min-height: 44px;
37832
38043
  }
37833
- .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-b753474e] {
38044
+ .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-4475ac48] {
37834
38045
  min-height: 44px;
37835
38046
  }
37836
38047
  }
37837
38048
 
37838
38049
  /* What a registry widget reports for its card header (`header` event): the
37839
38050
  note beside the link ("3 in total") and one action, as on a detail page. */
37840
- .cn-dashboard-page__widget-count[data-v-b753474e] {
38051
+ .cn-dashboard-page__widget-count[data-v-4475ac48] {
37841
38052
  align-self: center;
37842
38053
  padding: 1px 8px;
37843
38054
  border-radius: 10px;
@@ -37846,13 +38057,13 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37846
38057
  font-size: 13px;
37847
38058
  font-weight: 600;
37848
38059
  }
37849
- .cn-dashboard-page__widget-note[data-v-b753474e] {
38060
+ .cn-dashboard-page__widget-note[data-v-4475ac48] {
37850
38061
  align-self: center;
37851
38062
  color: var(--color-text-maxcontrast);
37852
38063
  font-size: 14px;
37853
38064
  white-space: nowrap;
37854
38065
  }
37855
- .cn-dashboard-page__widget-action[data-v-b753474e] {
38066
+ .cn-dashboard-page__widget-action[data-v-4475ac48] {
37856
38067
  display: inline-flex;
37857
38068
  align-items: center;
37858
38069
  align-self: center;
@@ -37868,7 +38079,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37868
38079
  white-space: nowrap;
37869
38080
  cursor: pointer;
37870
38081
  }
37871
- .cn-dashboard-page__widget-action[data-v-b753474e]:focus-visible {
38082
+ .cn-dashboard-page__widget-action[data-v-4475ac48]:focus-visible {
37872
38083
  outline: 2px solid var(--color-primary-element);
37873
38084
  outline-offset: 2px;
37874
38085
  }
@@ -40202,33 +40413,33 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40202
40413
  }
40203
40414
 
40204
40415
 
40205
- .cn-reports-page[data-v-7597ff10] {
40416
+ .cn-reports-page[data-v-7629715a] {
40206
40417
  padding: 16px;
40207
40418
  }
40208
40419
 
40209
40420
  /* Clear the Nextcloud navigation toggle button (44px wide, absolutely
40210
40421
  positioned at the left edge of .app-content) plus 12px breathing room, as
40211
40422
  CnPageHeader does. Only the header shifts; the body keeps the full width. */
40212
- .cn-reports-page__header[data-v-7597ff10] {
40423
+ .cn-reports-page__header[data-v-7629715a] {
40213
40424
  padding-inline-start: 56px;
40214
40425
  }
40215
- .cn-reports-page__title[data-v-7597ff10] {
40426
+ .cn-reports-page__title[data-v-7629715a] {
40216
40427
  margin: 0 0 4px;
40217
40428
  }
40218
- .cn-reports-page__description[data-v-7597ff10] {
40429
+ .cn-reports-page__description[data-v-7629715a] {
40219
40430
  margin: 0 0 16px;
40220
40431
  color: var(--color-text-maxcontrast);
40221
40432
  }
40222
- .cn-reports-page__filter[data-v-7597ff10] {
40433
+ .cn-reports-page__filter[data-v-7629715a] {
40223
40434
  display: flex;
40224
40435
  align-items: center;
40225
40436
  gap: 8px;
40226
40437
  margin-bottom: 16px;
40227
40438
  }
40228
- .cn-reports-page__filter-select[data-v-7597ff10] {
40439
+ .cn-reports-page__filter-select[data-v-7629715a] {
40229
40440
  min-width: 220px;
40230
40441
  }
40231
- .cn-reports-page__grid[data-v-7597ff10] {
40442
+ .cn-reports-page__grid[data-v-7629715a] {
40232
40443
  display: grid;
40233
40444
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
40234
40445
  gap: 12px;
@@ -40236,7 +40447,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40236
40447
  margin: 0;
40237
40448
  padding: 0;
40238
40449
  }
40239
- .cn-reports-page__card[data-v-7597ff10] {
40450
+ .cn-reports-page__card[data-v-7629715a] {
40240
40451
  display: flex;
40241
40452
  flex-direction: column;
40242
40453
  gap: 4px;
@@ -40247,22 +40458,22 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40247
40458
  color: inherit;
40248
40459
  text-decoration: none;
40249
40460
  }
40250
- .cn-reports-page__card[data-v-7597ff10]:hover,
40251
- .cn-reports-page__card[data-v-7597ff10]:focus {
40461
+ .cn-reports-page__card[data-v-7629715a]:hover,
40462
+ .cn-reports-page__card[data-v-7629715a]:focus {
40252
40463
  background-color: var(--color-background-hover);
40253
40464
  }
40254
- .cn-reports-page__card-title[data-v-7597ff10] {
40465
+ .cn-reports-page__card-title[data-v-7629715a] {
40255
40466
  font-weight: bold;
40256
40467
  }
40257
- .cn-reports-page__card-description[data-v-7597ff10],
40258
- .cn-reports-page__card-category[data-v-7597ff10] {
40468
+ .cn-reports-page__card-description[data-v-7629715a],
40469
+ .cn-reports-page__card-category[data-v-7629715a] {
40259
40470
  color: var(--color-text-maxcontrast);
40260
40471
  font-size: 0.9em;
40261
40472
  }
40262
- .cn-reports-page__empty[data-v-7597ff10] {
40473
+ .cn-reports-page__empty[data-v-7629715a] {
40263
40474
  color: var(--color-text-maxcontrast);
40264
40475
  }
40265
- .cn-reports-page__widgets[data-v-7597ff10] {
40476
+ .cn-reports-page__widgets[data-v-7629715a] {
40266
40477
  margin-top: 20px;
40267
40478
  }
40268
40479