@conduction/nextcloud-vue 2.120.0 → 2.122.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.
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +53 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +546 -523
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/useNamedSource.js +9 -0
- package/dist/esm/components/CnIndexPage/useNamedSource.js.map +1 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js +1 -0
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
- package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue.js +9 -0
- package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue.js.map +1 -0
- package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue2.js +214 -0
- package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue2.js.map +1 -0
- package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue3.js +125 -0
- package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue3.js.map +1 -0
- package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue.js +9 -0
- package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue.js.map +1 -0
- package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue2.js +163 -0
- package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue3.js +131 -0
- package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnSchemaRulesWidget/schemaRules.js +127 -0
- package/dist/esm/components/CnSchemaRulesWidget/schemaRules.js.map +1 -0
- package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue.js +9 -0
- package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue.js.map +1 -0
- package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue2.js +82 -0
- package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue2.js.map +1 -0
- package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue3.js +61 -0
- package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue3.js.map +1 -0
- package/dist/esm/components/CnSearchIndexStatus/searchIndexStatus.js +60 -0
- package/dist/esm/components/CnSearchIndexStatus/searchIndexStatus.js.map +1 -0
- package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue.js +10 -0
- package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue.js.map +1 -0
- package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue2.js +226 -0
- package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue2.js.map +1 -0
- package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue3.js +126 -0
- package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue3.js.map +1 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +42 -32
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/composables/indexSources.js +116 -16
- package/dist/esm/composables/indexSources.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +42 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +42 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +309 -13
- package/dist/esm/utils/libraryWidgetKeys.js +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +14136 -12578
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +309 -13
- package/l10n/en.json +42 -1
- package/l10n/nl.json +42 -1
- package/package.json +1 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +74 -3
- package/src/components/CnIndexPage/useNamedSource.js +9 -0
- package/src/components/CnIndexSidebar/CnIndexSidebar.vue +1 -0
- package/src/components/CnReadinessChecklist/CnReadinessChecklist.vue +335 -0
- package/src/components/CnReadinessChecklist/index.js +9 -0
- package/src/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue +300 -0
- package/src/components/CnSchemaRulesWidget/index.js +10 -0
- package/src/components/CnSchemaRulesWidget/schemaRules.js +123 -0
- package/src/components/CnSearchIndexStatus/CnSearchIndexStatus.vue +160 -0
- package/src/components/CnSearchIndexStatus/index.js +10 -0
- package/src/components/CnSearchIndexStatus/searchIndexStatus.js +56 -0
- package/src/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue +328 -0
- package/src/components/CnShippedConfigurationSection/index.js +9 -0
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +10 -0
- package/src/components/index.js +4 -0
- package/src/composables/indexSources.js +116 -16
- package/src/css/index-page.css +7 -0
- package/src/css/look-board-detail.css +27 -0
- package/src/css/look-board-index.css +108 -12
- package/src/css/look-board.css +27 -1
- package/src/index.js +4 -0
- package/src/utils/libraryWidgetKeys.js +1 -0
|
@@ -295,9 +295,15 @@
|
|
|
295
295
|
look sets 600 on each button, so every NcButton on a board page draws the
|
|
296
296
|
board's weight without a rule per surface. Breadcrumb buttons keep the
|
|
297
297
|
crumb weight.
|
|
298
|
-
|
|
298
|
+
The boards also draw a button's text at 14px, against Nextcloud's 15px.
|
|
299
|
+
NcButton reads its size from --default-font-size, so the look sets that
|
|
300
|
+
variable on the button: a surface that sets its own `font-size` (the next
|
|
301
|
+
step card's 15px) keeps it.
|
|
302
|
+
@spec openspec/changes/board-button-weight/specs/board-button-weight/spec.md#requirement-a-board-button-draws-at-600
|
|
303
|
+
@spec openspec/changes/board-control-text/specs/board-control-text/spec.md#requirement-a-board-button-draws-its-text-at-14px */
|
|
299
304
|
.cn-look-board .button-vue:not(.cn-look-nextcloud *):not(.vue-crumb *) {
|
|
300
305
|
--font-weight-element: 600;
|
|
306
|
+
--default-font-size: 14px;
|
|
301
307
|
}
|
|
302
308
|
|
|
303
309
|
/* ---- A button with an icon and a label --------------------------------- */
|
|
@@ -460,6 +466,26 @@
|
|
|
460
466
|
background: var(--color-background-hover);
|
|
461
467
|
}
|
|
462
468
|
|
|
469
|
+
/* ---- A secondary button --------------------------------------------------- */
|
|
470
|
+
/* The boards draw every secondary button neutral: the main background, a 1px
|
|
471
|
+
control border, the main text, the hover ground on hover (DqFlow "Testen
|
|
472
|
+
met een zaak", DqFunctionaliteiten "Documentatie", DqTaak "Afronden").
|
|
473
|
+
NcButton draws its secondary from the primary-light variables, on a 2px
|
|
474
|
+
bottom edge; the look points those variables at the neutral colours on the
|
|
475
|
+
button itself. The selector weighs (0,3,0): it outranks NcButton's border
|
|
476
|
+
(0,2,0), and a surface rule of the same weight later in the cascade (a
|
|
477
|
+
dialog's cancel) still decides for its surface.
|
|
478
|
+
@spec openspec/changes/board-secondary-neutral/specs/board-secondary-neutral/spec.md#requirement-a-board-secondary-button-is-neutral */
|
|
479
|
+
.cn-look-board .button-vue.button-vue--secondary:where(:not(.cn-look-nextcloud *):not(.vue-crumb *)),
|
|
480
|
+
.cn-look-board .button-vue.button-vue--vue-secondary:where(:not(.cn-look-nextcloud *):not(.vue-crumb *)) {
|
|
481
|
+
--color-primary-element-light: var(--color-main-background);
|
|
482
|
+
--color-primary-element-light-hover: var(--color-background-hover);
|
|
483
|
+
--color-primary-element-light-text: var(--color-main-text);
|
|
484
|
+
--nldesign-color-on-surface: var(--color-main-text);
|
|
485
|
+
border: 1px solid var(--cn-board-control-border);
|
|
486
|
+
color: var(--color-main-text);
|
|
487
|
+
}
|
|
488
|
+
|
|
463
489
|
/* ---- Header action buttons (CnActionButtons) ----------------------------- */
|
|
464
490
|
/* The board draws a page's secondary actions as neutral 40px buttons: the
|
|
465
491
|
main background, a grey border, the main text at 600 (DqZaak "Bericht",
|
|
@@ -3456,16 +3482,36 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
3456
3482
|
width: 18%;
|
|
3457
3483
|
}
|
|
3458
3484
|
|
|
3459
|
-
/*
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3485
|
+
/* An index table pads every cell 16px at the sides (DqZaken). The plain-title
|
|
3486
|
+
table (`rowTitle: "plain"`: PqTickets, OcPublicaties) sets its data cells
|
|
3487
|
+
12px apart and its title column 18px from the selection column; the
|
|
3488
|
+
selection and menu columns keep 16px. The title column is left out of the
|
|
3489
|
+
12px rule, which would otherwise outrank the 18px one.
|
|
3490
|
+
@spec openspec/changes/board-table-density/specs/board-table-density/spec.md#requirement-a-board-table-pads-its-cells-as-the-boards-draw-them */
|
|
3491
|
+
.cn-look-board .cn-index-page__main--table .cn-table-container--board.cn-table-container--title-plain .cn-data-table th:not(.cn-table-col--checkbox):not(.cn-table-col--actions):not(.cn-table-col--icon):not(.cn-table-head--title),
|
|
3492
|
+
.cn-look-board .cn-index-page__main--table .cn-table-container--board.cn-table-container--title-plain .cn-data-table td:not(.cn-table-col--checkbox):not(.cn-table-col--actions):not(.cn-table-col--icon):not(.cn-table-col--title) {
|
|
3463
3493
|
padding-inline: 12px;
|
|
3464
3494
|
}
|
|
3465
3495
|
|
|
3466
|
-
.cn-look-board .cn-index-page__main--table .cn-table-container--board .cn-data-table th.cn-table-head--title,
|
|
3467
|
-
.cn-look-board .cn-index-page__main--table .cn-table-container--board .cn-data-table td.cn-table-col--title {
|
|
3468
|
-
padding-inline
|
|
3496
|
+
.cn-look-board .cn-index-page__main--table .cn-table-container--board.cn-table-container--title-plain .cn-data-table th.cn-table-head--title,
|
|
3497
|
+
.cn-look-board .cn-index-page__main--table .cn-table-container--board.cn-table-container--title-plain .cn-data-table td.cn-table-col--title {
|
|
3498
|
+
padding-inline: 18px 12px;
|
|
3499
|
+
}
|
|
3500
|
+
|
|
3501
|
+
/* A table that is not an index page's main list sits in a card and is the
|
|
3502
|
+
compact one: 10px 12px in the header, 11px 12px in the cells
|
|
3503
|
+
(DqInstellingen, DqVthInstellingen, DqZaaktype, DqTermijnen). The selection
|
|
3504
|
+
column keeps its 16px, so it stays 60px wide. */
|
|
3505
|
+
.cn-look-board .cn-table-container--board:not(.cn-index-page__main--table > *) .cn-data-table th {
|
|
3506
|
+
padding: 10px 12px;
|
|
3507
|
+
}
|
|
3508
|
+
|
|
3509
|
+
.cn-look-board .cn-table-container--board:not(.cn-index-page__main--table > *) .cn-data-table td {
|
|
3510
|
+
padding: 11px 12px;
|
|
3511
|
+
}
|
|
3512
|
+
|
|
3513
|
+
.cn-look-board .cn-table-container--board:not(.cn-index-page__main--table > *) .cn-data-table .cn-table-col--checkbox {
|
|
3514
|
+
padding-inline: 16px;
|
|
3469
3515
|
}
|
|
3470
3516
|
|
|
3471
3517
|
.cn-look-board .cn-index-page__main--table .cn-table-container--board .cn-data-table td > .cn-cell-renderer {
|
|
@@ -3695,12 +3741,15 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
3695
3741
|
}
|
|
3696
3742
|
|
|
3697
3743
|
/* A page link is a <button>: Nextcloud's `button` rule sets it bold, the
|
|
3698
|
-
boards set the links at the regular weight and only the current page at 600.
|
|
3744
|
+
boards set the links at the regular weight and only the current page at 600.
|
|
3745
|
+
The boards size a link's content box at 34px, so a bordered link is 36px
|
|
3746
|
+
and the borderless current page 34px (DqZaken "2", "Volgende", "1").
|
|
3747
|
+
@spec openspec/changes/board-pagination-links/specs/board-pagination-links/spec.md#requirement-a-board-page-link-is-sized-as-the-boards-draw-it */
|
|
3699
3748
|
.cn-look-board .cn-pagination--board .cn-pagination__board-link {
|
|
3700
3749
|
box-sizing: border-box;
|
|
3701
|
-
min-width:
|
|
3702
|
-
height:
|
|
3703
|
-
min-height:
|
|
3750
|
+
min-width: 36px;
|
|
3751
|
+
height: 36px;
|
|
3752
|
+
min-height: 36px;
|
|
3704
3753
|
margin: 0;
|
|
3705
3754
|
padding: 0 8px;
|
|
3706
3755
|
border: 1px solid var(--color-border);
|
|
@@ -3725,7 +3774,10 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
3725
3774
|
}
|
|
3726
3775
|
|
|
3727
3776
|
.cn-look-board .cn-pagination--board .cn-pagination__board-link--current {
|
|
3728
|
-
|
|
3777
|
+
min-width: 34px;
|
|
3778
|
+
height: 34px;
|
|
3779
|
+
min-height: 34px;
|
|
3780
|
+
border: 0;
|
|
3729
3781
|
background: var(--color-primary-element);
|
|
3730
3782
|
color: var(--color-primary-element-text);
|
|
3731
3783
|
font-weight: 600;
|
|
@@ -4228,6 +4280,76 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
4228
4280
|
border-bottom: none;
|
|
4229
4281
|
padding-block: 2px;
|
|
4230
4282
|
}
|
|
4283
|
+
|
|
4284
|
+
/* ---- The index side panel (CnIndexSidebar, board IndexZijpaneel) -------- */
|
|
4285
|
+
/* The panel's title is 20px bold without the schema icon, and its tabs are
|
|
4286
|
+
one row of 40px labels, 14px weight 600 in the soft ink, the open one in
|
|
4287
|
+
the deep primary ink and underlined 2px in the primary colour on the
|
|
4288
|
+
strip's rule (DqFilterBeheren). NcAppSidebar stacks the icon over the
|
|
4289
|
+
label in a 54px tile with a highlight bar; the board does neither. The
|
|
4290
|
+
header rule repeats NcAppSidebar's own chain to outrank it.
|
|
4291
|
+
@spec openspec/changes/board-index-sidebar-tabs/specs/board-index-sidebar-tabs/spec.md#requirement-the-board-index-side-panel-draws-the-boards-header-and-tab-row */
|
|
4292
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container h2.app-sidebar-header__mainname {
|
|
4293
|
+
font-size: 20px;
|
|
4294
|
+
font-weight: 700;
|
|
4295
|
+
line-height: 1.2;
|
|
4296
|
+
min-height: 0;
|
|
4297
|
+
}
|
|
4298
|
+
|
|
4299
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-header__figure:has(> .cn-index-sidebar__header-icon) {
|
|
4300
|
+
display: none;
|
|
4301
|
+
}
|
|
4302
|
+
|
|
4303
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__nav[role="tablist"] {
|
|
4304
|
+
justify-content: flex-start;
|
|
4305
|
+
gap: 4px;
|
|
4306
|
+
margin: 0;
|
|
4307
|
+
padding: 14px 12px 0;
|
|
4308
|
+
border-bottom: 1px solid var(--color-border);
|
|
4309
|
+
}
|
|
4310
|
+
|
|
4311
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__highlight {
|
|
4312
|
+
display: none;
|
|
4313
|
+
}
|
|
4314
|
+
|
|
4315
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__tab[role="tab"] {
|
|
4316
|
+
flex: 0 0 auto;
|
|
4317
|
+
flex-direction: row;
|
|
4318
|
+
align-items: center;
|
|
4319
|
+
gap: 6px;
|
|
4320
|
+
box-sizing: border-box;
|
|
4321
|
+
height: 40px;
|
|
4322
|
+
min-height: 40px;
|
|
4323
|
+
margin: 0 0 -1px;
|
|
4324
|
+
padding: 0 10px;
|
|
4325
|
+
border: 0;
|
|
4326
|
+
border-bottom: 2px solid transparent;
|
|
4327
|
+
border-radius: 0;
|
|
4328
|
+
background: transparent;
|
|
4329
|
+
color: var(--cn-board-text-soft);
|
|
4330
|
+
font-size: 14px;
|
|
4331
|
+
font-weight: 600;
|
|
4332
|
+
}
|
|
4333
|
+
|
|
4334
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__tab[role="tab"] * {
|
|
4335
|
+
font-weight: inherit;
|
|
4336
|
+
}
|
|
4337
|
+
|
|
4338
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__tab[role="tab"]::after {
|
|
4339
|
+
content: none;
|
|
4340
|
+
}
|
|
4341
|
+
|
|
4342
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__tab[role="tab"]:hover {
|
|
4343
|
+
background: transparent;
|
|
4344
|
+
border-bottom-color: var(--color-border-dark);
|
|
4345
|
+
color: var(--color-main-text);
|
|
4346
|
+
}
|
|
4347
|
+
|
|
4348
|
+
.cn-look-board .cn-index-sidebar-panel .app-sidebar-tabs__tab[role="tab"][aria-selected="true"] {
|
|
4349
|
+
background: transparent;
|
|
4350
|
+
border-bottom-color: var(--color-primary-element);
|
|
4351
|
+
color: var(--color-primary-element-light-text);
|
|
4352
|
+
}
|
|
4231
4353
|
/* ========================================
|
|
4232
4354
|
@conduction/nextcloud-vue — Table Styles
|
|
4233
4355
|
======================================== */
|
|
@@ -7092,6 +7214,13 @@ a.cn-kpi-card--board * {
|
|
|
7092
7214
|
color: var(--color-text-maxcontrast);
|
|
7093
7215
|
}
|
|
7094
7216
|
|
|
7217
|
+
/* A note the named source read off its answer, above the rows. */
|
|
7218
|
+
.cn-index-page__source-note {
|
|
7219
|
+
margin: 0 0 8px;
|
|
7220
|
+
color: var(--color-text-maxcontrast);
|
|
7221
|
+
font-size: 0.9em;
|
|
7222
|
+
}
|
|
7223
|
+
|
|
7095
7224
|
.cn-index-page__scope-heading {
|
|
7096
7225
|
display: flex;
|
|
7097
7226
|
flex-direction: column;
|
|
@@ -9476,6 +9605,33 @@ li[data-cn-admin-tag] > .action-link::after {
|
|
|
9476
9605
|
.cn-look-board .cn-tasks-widget .cn-tasks-widget__cell-actions .button-vue .button-vue__text.button-vue__text {
|
|
9477
9606
|
padding-inline: 0;
|
|
9478
9607
|
}
|
|
9608
|
+
|
|
9609
|
+
/* ---- Grouped cards (CnGroupedCardsWidget, DqZaaktype "Fasen en taken") --- */
|
|
9610
|
+
/* Groups 14px apart, each padded 14px with a 10px radius and a bold title; a
|
|
9611
|
+
card in a group is padded 9px 12px with the 8px control radius, its title
|
|
9612
|
+
15px. The doubled class outranks the widget's scoped rules.
|
|
9613
|
+
@spec openspec/changes/board-grouped-cards/specs/board-grouped-cards/spec.md#requirement-board-grouped-cards-take-the-boards-group-and-card-shape */
|
|
9614
|
+
.cn-look-board .cn-grouped-cards__grid.cn-grouped-cards__grid {
|
|
9615
|
+
gap: 14px;
|
|
9616
|
+
}
|
|
9617
|
+
|
|
9618
|
+
.cn-look-board .cn-grouped-cards__group.cn-grouped-cards__group {
|
|
9619
|
+
padding: 14px;
|
|
9620
|
+
border-radius: 10px;
|
|
9621
|
+
}
|
|
9622
|
+
|
|
9623
|
+
.cn-look-board .cn-grouped-cards__group-title.cn-grouped-cards__group-title {
|
|
9624
|
+
font-weight: 700;
|
|
9625
|
+
}
|
|
9626
|
+
|
|
9627
|
+
.cn-look-board .cn-grouped-cards__item.cn-grouped-cards__item {
|
|
9628
|
+
padding: 9px 12px;
|
|
9629
|
+
border-radius: var(--cn-board-control-radius, 8px);
|
|
9630
|
+
}
|
|
9631
|
+
|
|
9632
|
+
.cn-look-board .cn-grouped-cards__item-title.cn-grouped-cards__item-title {
|
|
9633
|
+
font-size: 15px;
|
|
9634
|
+
}
|
|
9479
9635
|
/*
|
|
9480
9636
|
* The reports page under the board look (screens-reports-page-board-look,
|
|
9481
9637
|
* board DcRapportages): a 28px title over a muted lead, one section per
|
|
@@ -25769,6 +25925,46 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
|
|
|
25769
25925
|
}
|
|
25770
25926
|
|
|
25771
25927
|
|
|
25928
|
+
.cn-schema-rules__hint[data-v-1d1c1c13] {
|
|
25929
|
+
font-size: 12px;
|
|
25930
|
+
color: var(--color-text-maxcontrast);
|
|
25931
|
+
margin: 4px 0 12px;
|
|
25932
|
+
}
|
|
25933
|
+
.cn-schema-rules__table[data-v-1d1c1c13] {
|
|
25934
|
+
width: 100%;
|
|
25935
|
+
border-collapse: collapse;
|
|
25936
|
+
}
|
|
25937
|
+
.cn-schema-rules__table th[data-v-1d1c1c13],
|
|
25938
|
+
.cn-schema-rules__table td[data-v-1d1c1c13] {
|
|
25939
|
+
text-align: start;
|
|
25940
|
+
padding: 6px 8px;
|
|
25941
|
+
border-bottom: 1px solid var(--color-border);
|
|
25942
|
+
}
|
|
25943
|
+
.cn-schema-rules__trial[data-v-1d1c1c13] {
|
|
25944
|
+
margin-top: 16px;
|
|
25945
|
+
border-top: 1px solid var(--color-border);
|
|
25946
|
+
padding-top: 12px;
|
|
25947
|
+
}
|
|
25948
|
+
.cn-schema-rules__trace[data-v-1d1c1c13] {
|
|
25949
|
+
margin-top: 8px;
|
|
25950
|
+
padding: 8px 12px;
|
|
25951
|
+
border-radius: var(--border-radius-large, 8px);
|
|
25952
|
+
background-color: var(--color-background-hover);
|
|
25953
|
+
}
|
|
25954
|
+
.cn-schema-rules__trace p[data-v-1d1c1c13] {
|
|
25955
|
+
margin: 0;
|
|
25956
|
+
}
|
|
25957
|
+
.cn-schema-rules__verdict[data-v-1d1c1c13] {
|
|
25958
|
+
font-weight: bold;
|
|
25959
|
+
}
|
|
25960
|
+
.cn-schema-rules__error[data-v-1d1c1c13] {
|
|
25961
|
+
color: var(--color-error-text);
|
|
25962
|
+
}
|
|
25963
|
+
.cn-schema-rules__empty[data-v-1d1c1c13] {
|
|
25964
|
+
color: var(--color-text-maxcontrast);
|
|
25965
|
+
}
|
|
25966
|
+
|
|
25967
|
+
|
|
25772
25968
|
.cn-stacked-bar[data-v-29628f56] {
|
|
25773
25969
|
display: flex;
|
|
25774
25970
|
flex-direction: column;
|
|
@@ -51565,6 +51761,106 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
|
|
|
51565
51761
|
}
|
|
51566
51762
|
|
|
51567
51763
|
|
|
51764
|
+
.cn-shipped-configuration__intro[data-v-fd515054],
|
|
51765
|
+
.cn-shipped-configuration__muted[data-v-fd515054] {
|
|
51766
|
+
color: var(--color-text-maxcontrast);
|
|
51767
|
+
}
|
|
51768
|
+
.cn-shipped-configuration__picker[data-v-fd515054] {
|
|
51769
|
+
max-width: 320px;
|
|
51770
|
+
}
|
|
51771
|
+
.cn-shipped-configuration__table[data-v-fd515054] {
|
|
51772
|
+
width: 100%;
|
|
51773
|
+
border-collapse: collapse;
|
|
51774
|
+
margin-top: 12px;
|
|
51775
|
+
/* Nextcloud sets `table { white-space: nowrap }`; a cell here can be a sentence. */
|
|
51776
|
+
white-space: normal;
|
|
51777
|
+
}
|
|
51778
|
+
.cn-shipped-configuration__table th[data-v-fd515054],
|
|
51779
|
+
.cn-shipped-configuration__table td[data-v-fd515054] {
|
|
51780
|
+
padding: 6px 8px;
|
|
51781
|
+
border-bottom: 1px solid var(--color-border);
|
|
51782
|
+
text-align: start;
|
|
51783
|
+
}
|
|
51784
|
+
|
|
51785
|
+
|
|
51786
|
+
/* Label above value, and the label wraps: Nextcloud's settings stylesheet gives a `dt` a fixed width. */
|
|
51787
|
+
.cn-search-index-status__figures[data-v-52b442a4] {
|
|
51788
|
+
display: grid;
|
|
51789
|
+
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
|
|
51790
|
+
gap: 16px 24px;
|
|
51791
|
+
margin-block: 0 12px;
|
|
51792
|
+
}
|
|
51793
|
+
.cn-search-index-status__figures > div[data-v-52b442a4] {
|
|
51794
|
+
display: flex;
|
|
51795
|
+
flex-direction: column;
|
|
51796
|
+
gap: 2px;
|
|
51797
|
+
min-width: 0;
|
|
51798
|
+
}
|
|
51799
|
+
.cn-search-index-status__figures dt[data-v-52b442a4] {
|
|
51800
|
+
display: block;
|
|
51801
|
+
float: none;
|
|
51802
|
+
width: auto;
|
|
51803
|
+
margin: 0;
|
|
51804
|
+
padding: 0;
|
|
51805
|
+
text-align: start;
|
|
51806
|
+
white-space: normal;
|
|
51807
|
+
overflow-wrap: anywhere;
|
|
51808
|
+
color: var(--color-text-maxcontrast);
|
|
51809
|
+
}
|
|
51810
|
+
.cn-search-index-status__figures dd[data-v-52b442a4] {
|
|
51811
|
+
font-weight: bold;
|
|
51812
|
+
margin: 0;
|
|
51813
|
+
overflow-wrap: anywhere;
|
|
51814
|
+
}
|
|
51815
|
+
|
|
51816
|
+
|
|
51817
|
+
.cn-readiness-checklist__description[data-v-4e10a556],
|
|
51818
|
+
.cn-readiness-checklist__empty[data-v-4e10a556] {
|
|
51819
|
+
color: var(--color-text-maxcontrast);
|
|
51820
|
+
margin: 0 0 12px;
|
|
51821
|
+
}
|
|
51822
|
+
.cn-readiness-checklist__group-title[data-v-4e10a556] {
|
|
51823
|
+
margin: 12px 0 4px;
|
|
51824
|
+
}
|
|
51825
|
+
.cn-readiness-checklist__list[data-v-4e10a556] {
|
|
51826
|
+
list-style: none;
|
|
51827
|
+
margin: 0;
|
|
51828
|
+
padding: 0;
|
|
51829
|
+
}
|
|
51830
|
+
.cn-readiness-checklist__item[data-v-4e10a556] {
|
|
51831
|
+
display: flex;
|
|
51832
|
+
gap: calc(var(--default-grid-baseline, 4px) * 3);
|
|
51833
|
+
padding-block: calc(var(--default-grid-baseline, 4px) * 2);
|
|
51834
|
+
border-block-end: 1px solid var(--color-border);
|
|
51835
|
+
}
|
|
51836
|
+
.cn-readiness-checklist__state[data-v-4e10a556] {
|
|
51837
|
+
flex: 0 0 auto;
|
|
51838
|
+
min-width: 6em;
|
|
51839
|
+
font-weight: bold;
|
|
51840
|
+
}
|
|
51841
|
+
.cn-readiness-checklist__state--met[data-v-4e10a556] {
|
|
51842
|
+
color: var(--color-success-text, var(--color-success));
|
|
51843
|
+
}
|
|
51844
|
+
.cn-readiness-checklist__state--unmet[data-v-4e10a556] {
|
|
51845
|
+
color: var(--color-error-text, var(--color-error));
|
|
51846
|
+
}
|
|
51847
|
+
.cn-readiness-checklist__state--unknown[data-v-4e10a556] {
|
|
51848
|
+
color: var(--color-text-maxcontrast);
|
|
51849
|
+
}
|
|
51850
|
+
.cn-readiness-checklist__body[data-v-4e10a556] {
|
|
51851
|
+
display: flex;
|
|
51852
|
+
flex-direction: column;
|
|
51853
|
+
gap: 2px;
|
|
51854
|
+
min-width: 0;
|
|
51855
|
+
}
|
|
51856
|
+
.cn-readiness-checklist__explanation[data-v-4e10a556] {
|
|
51857
|
+
color: var(--color-text-maxcontrast);
|
|
51858
|
+
}
|
|
51859
|
+
.cn-readiness-checklist__failure[data-v-4e10a556] {
|
|
51860
|
+
color: var(--color-error-text, var(--color-error));
|
|
51861
|
+
}
|
|
51862
|
+
|
|
51863
|
+
|
|
51568
51864
|
.cn-ai-agent-picker {
|
|
51569
51865
|
width: 100%;
|
|
51570
51866
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libraryWidgetKeys.js","sources":["../../../src/utils/libraryWidgetKeys.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Conduction B.V.\n * SPDX-License-Identifier: EUPL-1.2\n *\n * libraryWidgetKeys — the one vocabulary of widget keys the LIBRARY itself\n * renders, and the only list `validateManifestV2` is allowed to consult.\n *\n * WHY THIS MODULE EXISTS\n * ----------------------\n * The validator used to carry its own hand-written array of \"library built-in\n * widget keys\", with a comment instructing whoever added a built-in to append\n * it \"in the same PR\". That instruction was followed for five keys and missed\n * for six, so the validator knew 11 keys while the library actually rendered\n * 45. Nothing failed when the two disagreed, because the only consumer is an\n * exemption: a key the validator does not recognise is treated as a CUSTOM\n * registry component, which makes a legitimate single-widget library dashboard\n * fail the ADR-036 Decision 1 anti-pattern rule with advice (\"declare it as\n * type:'custom'\") that is wrong for a library widget.\n *\n * A comment cannot enforce anything, so the array moved here and\n * `tests/utils/libraryWidgetKeys.spec.js` now binds it to the two registries\n * that actually resolve a key at runtime:\n *\n * 1. `BUILT_IN_WIDGETS` (components/CnWidgetGrid/builtInWidgets.js) — the v2\n * manifest widget set `CnWidgetGrid` resolves a `widgetKey` against.\n * 2. The dashboard widget catalog (`dashboardWidgetRegistry`), populated by\n * `registerDashboardWidgets.js`. `CnWidgetGrid` falls back to it (third in\n * the chain, after the consumer registry and `BUILT_IN_WIDGETS`), so a\n * catalog key renders on a v2 page exactly like a `BUILT_IN_WIDGETS` one.\n *\n * The test asserts SET EQUALITY in both directions against the live registries,\n * so adding a widget to either registry without touching this file fails CI,\n * and deleting one without removing it here fails too. The lists below are the\n * validator's view; the registries are the truth the test holds them to.\n *\n * THE CATALOG IS NOT LEGACY. It is a live half of the same vocabulary, and the\n * old array already conceded the point by exempting `chart` and `stats-block`,\n * which are catalog-only keys that `BUILT_IN_WIDGETS` has never held. What it\n * got wrong was doing that for two keys and not the other thirty-seven.\n * `widgetDispatch.js` unified the two resolution paths for the same reason: a\n * widget authored against one vocabulary was invisible to the other and said\n * nothing about why (101 of 236 detail widgets on hrmq).\n *\n * @module utils/libraryWidgetKeys\n */\n\nimport { WIDGET_TYPE_ALIASES } from './widgetTypeAliases.js'\n\n/**\n * Keys of `BUILT_IN_WIDGETS` — the v2 manifest widget set.\n *\n * Kept in the registry's own declaration order so a diff against\n * `builtInWidgets.js` reads straight down.\n *\n * @type {string[]} Frozen.\n */\nexport const BUILT_IN_WIDGET_KEYS = Object.freeze([\n\t'object-table',\n\t'form-renderer',\n\t'map-viewer',\n\t'notice',\n\t'decision-list',\n\t'object-geo',\n\t'card-grid',\n\t'nav-card-grid',\n\t'data',\n\t'metadata',\n\t'related',\n\t'integration',\n\t'banner',\n\t'audit-trail',\n\t'timeline',\n\t'header',\n\t'text',\n\t'divider',\n\t'saved-view-alert',\n\t'exports',\n\t'object-translations',\n])\n\n/**\n * Widget types the LIBRARY registers into the dashboard catalog at import time\n * (`registerDashboardWidgets.js` and the widget `index.js` modules it pulls in).\n *\n * Deliberately a static list rather than a read of `dashboardWidgetRegistry`:\n * that object is mutable and consumer-extensible, so deriving the exemption\n * from it at call time would let an app register its own full-page component in\n * the catalog and walk straight through the ADR-036 Decision 1 rule the\n * exemption exists to enforce. Only keys the library itself ships are exempt.\n *\n * Sorted, because unlike `BUILT_IN_WIDGETS` these registrations are spread over\n * ~30 files and have no meaningful declaration order.\n *\n * @type {string[]} Frozen.\n */\nexport const DASHBOARD_CATALOG_WIDGET_KEYS = Object.freeze([\n\t'ai-chat',\n\t'attention-flag',\n\t'audit-trail',\n\t'banner',\n\t'calendar',\n\t'chart',\n\t'checklist',\n\t'checklist-run',\n\t'chips-field',\n\t'choice-picker',\n\t'container',\n\t'conversation',\n\t'countdown',\n\t'data',\n\t'delta',\n\t'device-frames',\n\t'divider',\n\t'document-review',\n\t'events',\n\t'facts',\n\t'field-list',\n\t'files',\n\t'flow-runs',\n\t'gauge',\n\t'grouped-cards',\n\t'header',\n\t'image',\n\t'interaction-form',\n\t'kb-search',\n\t'label',\n\t'link',\n\t'linked',\n\t'links',\n\t'macros',\n\t'mail',\n\t'map',\n\t'markdown',\n\t'menu',\n\t'nc-widget',\n\t'next-step',\n\t'notepad',\n\t// `news` was here until the widget moved to LaunchPad, which owns the feed\n\t// fetching. An app that renders one now gets it from LaunchPad's registry.\n\t'object-geo',\n\t'object-list',\n\t'object-table',\n\t'parties',\n\t'party-actions',\n\t'people',\n\t'plan',\n\t'quicklinks',\n\t'radio-cards',\n\t'record-list',\n\t'related',\n\t'retention',\n\t'saved-view',\n\t'saved-views',\n\t'sections',\n\t'settings-form',\n\t'spend-analytics',\n\t'stacked-bar',\n\t'stages',\n\t'stat',\n\t'stats-block',\n\t'status-explainer',\n\t'switch-rows',\n\t'table',\n\t'tabs',\n\t'tasks',\n\t'team-workload',\n\t'text',\n\t'tile',\n\t'timeline',\n\t'toggle-table',\n\t'video',\n\t'week-strip',\n\t'working-calendar',\n\t'work-queue',\n\t'workspace-filter',\n])\n\n/**\n * Expand a key set over `WIDGET_TYPE_ALIASES` so both spellings of an aliased\n * widget are present whenever either one is.\n *\n * `CnWidgetGrid` resolves a key and its canonical form (`object-table` ⇄\n * `table`, `map-viewer` ⇄ `map`), so both spellings render and both must be\n * exempt. Today each registry happens to hold one side of each pair, which is\n * exactly the accident that would silently stop being true when the next alias\n * lands.\n *\n * @param {Set<string>} keys The key set to expand, mutated in place.\n * @return {Set<string>} The same set.\n */\nfunction expandAliases(keys) {\n\tfor (const [alias, canonical] of Object.entries(WIDGET_TYPE_ALIASES)) {\n\t\tif (keys.has(alias) || keys.has(canonical)) {\n\t\t\tkeys.add(alias)\n\t\t\tkeys.add(canonical)\n\t\t}\n\t}\n\treturn keys\n}\n\n/**\n * Every widget key the library renders itself: both registries, plus both\n * spellings of every alias.\n *\n * A `widgetKey` in this list is served by a library `Cn*` SFC and does NOT\n * count as a custom registry component for the single-12×12-widget dashboard\n * rule (ADR-036 Decision 1).\n *\n * @type {string[]} Frozen.\n */\nexport const LIBRARY_WIDGET_KEYS = Object.freeze([\n\t...expandAliases(new Set([\n\t\t...BUILT_IN_WIDGET_KEYS,\n\t\t...DASHBOARD_CATALOG_WIDGET_KEYS,\n\t])),\n])\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libraryWidgetKeys.js","sources":["../../../src/utils/libraryWidgetKeys.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Conduction B.V.\n * SPDX-License-Identifier: EUPL-1.2\n *\n * libraryWidgetKeys — the one vocabulary of widget keys the LIBRARY itself\n * renders, and the only list `validateManifestV2` is allowed to consult.\n *\n * WHY THIS MODULE EXISTS\n * ----------------------\n * The validator used to carry its own hand-written array of \"library built-in\n * widget keys\", with a comment instructing whoever added a built-in to append\n * it \"in the same PR\". That instruction was followed for five keys and missed\n * for six, so the validator knew 11 keys while the library actually rendered\n * 45. Nothing failed when the two disagreed, because the only consumer is an\n * exemption: a key the validator does not recognise is treated as a CUSTOM\n * registry component, which makes a legitimate single-widget library dashboard\n * fail the ADR-036 Decision 1 anti-pattern rule with advice (\"declare it as\n * type:'custom'\") that is wrong for a library widget.\n *\n * A comment cannot enforce anything, so the array moved here and\n * `tests/utils/libraryWidgetKeys.spec.js` now binds it to the two registries\n * that actually resolve a key at runtime:\n *\n * 1. `BUILT_IN_WIDGETS` (components/CnWidgetGrid/builtInWidgets.js) — the v2\n * manifest widget set `CnWidgetGrid` resolves a `widgetKey` against.\n * 2. The dashboard widget catalog (`dashboardWidgetRegistry`), populated by\n * `registerDashboardWidgets.js`. `CnWidgetGrid` falls back to it (third in\n * the chain, after the consumer registry and `BUILT_IN_WIDGETS`), so a\n * catalog key renders on a v2 page exactly like a `BUILT_IN_WIDGETS` one.\n *\n * The test asserts SET EQUALITY in both directions against the live registries,\n * so adding a widget to either registry without touching this file fails CI,\n * and deleting one without removing it here fails too. The lists below are the\n * validator's view; the registries are the truth the test holds them to.\n *\n * THE CATALOG IS NOT LEGACY. It is a live half of the same vocabulary, and the\n * old array already conceded the point by exempting `chart` and `stats-block`,\n * which are catalog-only keys that `BUILT_IN_WIDGETS` has never held. What it\n * got wrong was doing that for two keys and not the other thirty-seven.\n * `widgetDispatch.js` unified the two resolution paths for the same reason: a\n * widget authored against one vocabulary was invisible to the other and said\n * nothing about why (101 of 236 detail widgets on hrmq).\n *\n * @module utils/libraryWidgetKeys\n */\n\nimport { WIDGET_TYPE_ALIASES } from './widgetTypeAliases.js'\n\n/**\n * Keys of `BUILT_IN_WIDGETS` — the v2 manifest widget set.\n *\n * Kept in the registry's own declaration order so a diff against\n * `builtInWidgets.js` reads straight down.\n *\n * @type {string[]} Frozen.\n */\nexport const BUILT_IN_WIDGET_KEYS = Object.freeze([\n\t'object-table',\n\t'form-renderer',\n\t'map-viewer',\n\t'notice',\n\t'decision-list',\n\t'object-geo',\n\t'card-grid',\n\t'nav-card-grid',\n\t'data',\n\t'metadata',\n\t'related',\n\t'integration',\n\t'banner',\n\t'audit-trail',\n\t'timeline',\n\t'header',\n\t'text',\n\t'divider',\n\t'saved-view-alert',\n\t'exports',\n\t'object-translations',\n])\n\n/**\n * Widget types the LIBRARY registers into the dashboard catalog at import time\n * (`registerDashboardWidgets.js` and the widget `index.js` modules it pulls in).\n *\n * Deliberately a static list rather than a read of `dashboardWidgetRegistry`:\n * that object is mutable and consumer-extensible, so deriving the exemption\n * from it at call time would let an app register its own full-page component in\n * the catalog and walk straight through the ADR-036 Decision 1 rule the\n * exemption exists to enforce. Only keys the library itself ships are exempt.\n *\n * Sorted, because unlike `BUILT_IN_WIDGETS` these registrations are spread over\n * ~30 files and have no meaningful declaration order.\n *\n * @type {string[]} Frozen.\n */\nexport const DASHBOARD_CATALOG_WIDGET_KEYS = Object.freeze([\n\t'ai-chat',\n\t'attention-flag',\n\t'audit-trail',\n\t'banner',\n\t'calendar',\n\t'chart',\n\t'checklist',\n\t'checklist-run',\n\t'chips-field',\n\t'choice-picker',\n\t'container',\n\t'conversation',\n\t'countdown',\n\t'data',\n\t'delta',\n\t'device-frames',\n\t'divider',\n\t'document-review',\n\t'events',\n\t'facts',\n\t'field-list',\n\t'files',\n\t'flow-runs',\n\t'gauge',\n\t'grouped-cards',\n\t'header',\n\t'image',\n\t'interaction-form',\n\t'kb-search',\n\t'label',\n\t'link',\n\t'linked',\n\t'links',\n\t'macros',\n\t'mail',\n\t'map',\n\t'markdown',\n\t'menu',\n\t'nc-widget',\n\t'next-step',\n\t'notepad',\n\t// `news` was here until the widget moved to LaunchPad, which owns the feed\n\t// fetching. An app that renders one now gets it from LaunchPad's registry.\n\t'object-geo',\n\t'object-list',\n\t'object-table',\n\t'parties',\n\t'party-actions',\n\t'people',\n\t'plan',\n\t'quicklinks',\n\t'radio-cards',\n\t'record-list',\n\t'related',\n\t'retention',\n\t'saved-view',\n\t'saved-views',\n\t'schema-rules',\n\t'sections',\n\t'settings-form',\n\t'spend-analytics',\n\t'stacked-bar',\n\t'stages',\n\t'stat',\n\t'stats-block',\n\t'status-explainer',\n\t'switch-rows',\n\t'table',\n\t'tabs',\n\t'tasks',\n\t'team-workload',\n\t'text',\n\t'tile',\n\t'timeline',\n\t'toggle-table',\n\t'video',\n\t'week-strip',\n\t'working-calendar',\n\t'work-queue',\n\t'workspace-filter',\n])\n\n/**\n * Expand a key set over `WIDGET_TYPE_ALIASES` so both spellings of an aliased\n * widget are present whenever either one is.\n *\n * `CnWidgetGrid` resolves a key and its canonical form (`object-table` ⇄\n * `table`, `map-viewer` ⇄ `map`), so both spellings render and both must be\n * exempt. Today each registry happens to hold one side of each pair, which is\n * exactly the accident that would silently stop being true when the next alias\n * lands.\n *\n * @param {Set<string>} keys The key set to expand, mutated in place.\n * @return {Set<string>} The same set.\n */\nfunction expandAliases(keys) {\n\tfor (const [alias, canonical] of Object.entries(WIDGET_TYPE_ALIASES)) {\n\t\tif (keys.has(alias) || keys.has(canonical)) {\n\t\t\tkeys.add(alias)\n\t\t\tkeys.add(canonical)\n\t\t}\n\t}\n\treturn keys\n}\n\n/**\n * Every widget key the library renders itself: both registries, plus both\n * spellings of every alias.\n *\n * A `widgetKey` in this list is served by a library `Cn*` SFC and does NOT\n * count as a custom registry component for the single-12×12-widget dashboard\n * rule (ADR-036 Decision 1).\n *\n * @type {string[]} Frozen.\n */\nexport const LIBRARY_WIDGET_KEYS = Object.freeze([\n\t...expandAliases(new Set([\n\t\t...BUILT_IN_WIDGET_KEYS,\n\t\t...DASHBOARD_CATALOG_WIDGET_KEYS,\n\t])),\n])\n"],"names":[],"mappings":"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"}
|