@conduction/nextcloud-vue 2.92.0 → 2.94.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 (199) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +1 -1
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +2 -1
  4. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  6. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +28 -8
  7. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  8. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +37 -2
  9. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  10. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +57 -4
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  12. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +44 -17
  13. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  14. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
  15. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js +44 -2
  16. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  17. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +140 -59
  18. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  19. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
  20. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +139 -3
  21. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
  22. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js +60 -12
  23. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js.map +1 -1
  24. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  25. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +111 -42
  26. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  27. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +117 -73
  28. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  29. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +34 -39
  30. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  31. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +7 -7
  32. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  33. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +5 -3
  34. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  35. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  36. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  37. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +6 -4
  38. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  39. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  40. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js +46 -0
  41. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js.map +1 -1
  42. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue3.js +6 -2
  43. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue3.js.map +1 -1
  44. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
  45. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +82 -9
  46. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
  47. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js +104 -90
  48. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
  49. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +9 -0
  50. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js.map +1 -0
  51. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +355 -0
  52. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -0
  53. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +462 -0
  54. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -0
  55. package/dist/esm/components/CnFormDialog/CnFormDialog.vue.js +1 -1
  56. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +21 -0
  57. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  58. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +402 -391
  59. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  60. package/dist/esm/components/CnIcon/semanticIcons.js +2 -2
  61. package/dist/esm/components/CnIcon/semanticIcons.js.map +1 -1
  62. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +141 -7
  63. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  64. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -2
  65. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  66. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
  67. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +22 -1
  68. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
  69. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +20 -14
  70. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
  71. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue.js +1 -1
  72. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js +2 -0
  73. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js.map +1 -1
  74. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js +15 -5
  75. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js.map +1 -1
  76. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js +8 -0
  77. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js.map +1 -0
  78. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js +114 -0
  79. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js.map +1 -0
  80. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js +45 -0
  81. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js.map +1 -0
  82. package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js +38 -2
  83. package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js.map +1 -1
  84. package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js +12 -2
  85. package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js.map +1 -1
  86. package/dist/esm/components/CnPagination/CnPagination.vue2.js.map +1 -1
  87. package/dist/esm/components/CnPagination/CnPagination.vue3.js +56 -51
  88. package/dist/esm/components/CnPagination/CnPagination.vue3.js.map +1 -1
  89. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  90. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +3 -3
  91. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  92. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  93. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue.js +1 -1
  94. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js +8 -30
  95. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js.map +1 -1
  96. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue3.js.map +1 -1
  97. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  98. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +24 -0
  99. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  100. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +3 -1
  101. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  102. package/dist/esm/components/CnTabs/CnTabs.vue.js +1 -1
  103. package/dist/esm/components/CnTabs/CnTabs.vue2.js +39 -2
  104. package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
  105. package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
  106. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  107. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +85 -8
  108. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  109. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +37 -9
  110. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  111. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +9 -0
  112. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js.map +1 -0
  113. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js +164 -0
  114. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -0
  115. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js +93 -0
  116. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -0
  117. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
  118. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
  119. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -3
  120. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  121. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  122. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +32 -0
  123. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  124. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +31 -20
  125. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  126. package/dist/esm/composables/indexSources.js +9 -0
  127. package/dist/esm/composables/indexSources.js.map +1 -1
  128. package/dist/esm/l10n/en.json.js +24 -1
  129. package/dist/esm/l10n/en.json.js.map +1 -1
  130. package/dist/esm/l10n/nl.json.js +24 -1
  131. package/dist/esm/l10n/nl.json.js.map +1 -1
  132. package/dist/esm/library-style.js +1 -1
  133. package/dist/esm/nextcloud-vue.css +1190 -410
  134. package/dist/esm/utils/dueText.js +49 -8
  135. package/dist/esm/utils/dueText.js.map +1 -1
  136. package/dist/esm/utils/featureCatalog.js +135 -0
  137. package/dist/esm/utils/featureCatalog.js.map +1 -0
  138. package/dist/esm/utils/fillTemplate.js +74 -3
  139. package/dist/esm/utils/fillTemplate.js.map +1 -1
  140. package/dist/esm/utils/headerMeta.js +62 -12
  141. package/dist/esm/utils/headerMeta.js.map +1 -1
  142. package/dist/esm/utils/roadmapIssues.js +86 -0
  143. package/dist/esm/utils/roadmapIssues.js.map +1 -0
  144. package/dist/esm/utils/userDisplayName.js +47 -0
  145. package/dist/esm/utils/userDisplayName.js.map +1 -0
  146. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  147. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  148. package/dist/nextcloud-vue.cjs.js +16229 -13423
  149. package/dist/nextcloud-vue.cjs.js.map +2 -2
  150. package/dist/nextcloud-vue.css +1190 -410
  151. package/l10n/en.json +24 -1
  152. package/l10n/nl.json +24 -1
  153. package/package.json +1 -1
  154. package/src/components/CnActionsMenu/CnActionsMenu.vue +3 -1
  155. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +39 -1
  156. package/src/components/CnAppRoot/CnAppRoot.md +2 -0
  157. package/src/components/CnAppRoot/CnAppRoot.vue +66 -5
  158. package/src/components/CnChoiceCards/CnChoiceCards.md +27 -0
  159. package/src/components/CnChoiceCards/CnChoiceCards.vue +168 -3
  160. package/src/components/CnCountdownWidget/CnCountdownWidget.vue +222 -6
  161. package/src/components/CnDashboardPage/CnDashboardPage.vue +141 -8
  162. package/src/components/CnDataTable/CnDataTable.md +1 -0
  163. package/src/components/CnDataTable/CnDataTable.vue +41 -46
  164. package/src/components/CnDetailPage/CnDetailPage.vue +5 -3
  165. package/src/components/CnFactsWidget/CnFactsWidget.vue +6 -4
  166. package/src/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue +51 -1
  167. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +98 -13
  168. package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +1053 -0
  169. package/src/components/CnFormDialog/CnFormDialog.vue +606 -562
  170. package/src/components/CnIndexPage/CnIndexPage.vue +144 -7
  171. package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +23 -2
  172. package/src/components/CnNotificationPreferences/CnNotificationPreferences.vue +5 -0
  173. package/src/components/CnPageHeader/CnHeaderTrail.vue +140 -0
  174. package/src/components/CnPageHeader/CnPageHeader.md +11 -0
  175. package/src/components/CnPageHeader/CnPageHeader.vue +42 -0
  176. package/src/components/CnPagination/CnPagination.vue +10 -2
  177. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +3 -3
  178. package/src/components/CnRoadmapTab/CnRoadmapTab.vue +6 -28
  179. package/src/components/CnSettingsPage/CnSettingsPage.vue +26 -0
  180. package/src/components/CnTabs/CnTabs.vue +39 -2
  181. package/src/components/CnTabsWidget/CnTabsWidget.vue +106 -13
  182. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +305 -0
  183. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +4 -3
  184. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +8 -0
  185. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +43 -2
  186. package/src/composables/indexSources.js +9 -0
  187. package/src/css/dialog.css +61 -0
  188. package/src/css/look-board-detail.css +8 -0
  189. package/src/css/look-board-index.css +27 -1
  190. package/src/css/look-board.css +60 -0
  191. package/src/css/page-header.css +16 -0
  192. package/src/schemas/app-manifest-v2.schema.json +30 -17
  193. package/src/utils/dueText.js +49 -8
  194. package/src/utils/featureCatalog.js +132 -0
  195. package/src/utils/fillTemplate.js +73 -2
  196. package/src/utils/headerMeta.js +62 -12
  197. package/src/utils/roadmapIssues.js +82 -0
  198. package/src/utils/userDisplayName.js +54 -0
  199. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -9,21 +9,22 @@ import Download from 'vue-material-design-icons/Download.vue';
9
9
  import Pencil from 'vue-material-design-icons/Pencil.vue';
10
10
  import Restore from 'vue-material-design-icons/Restore.vue';
11
11
  import ViewDashboardOutline from 'vue-material-design-icons/ViewDashboardOutline.vue';
12
- import __sfc_main$d from '../../dialogs/CnWidgetStyleEditorModal.vue.js';
13
- import __sfc_main$8 from '../CnBodySections/CnBodySections.vue.js';
14
- import __sfc_main$c from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
15
- import __sfc_main$5 from '../CnChartWidget/CnChartWidget.vue.js';
16
- import __sfc_main$1 from '../CnDashboardGrid/CnDashboardGrid.vue.js';
17
- import __sfc_main$9 from '../CnDateRangePicker/CnDateRangePicker.vue.js';
18
- import __sfc_main from '../CnEmptyContent/CnEmptyContent.vue.js';
19
- import __sfc_main$g from '../CnKpiGrid/CnKpiGrid.vue.js';
20
- import __sfc_main$f from '../CnSegmentedControl/CnSegmentedControl.vue.js';
21
- import __sfc_main$6 from '../CnStatsBlockWidget/CnStatsBlockWidget.vue.js';
22
- import __sfc_main$4 from '../CnTileWidget/CnTileWidget.vue.js';
23
- import __sfc_main$h from '../CnWidgetGrid/CnWidgetIcon.vue.js';
24
- import __sfc_main$7 from '../CnWidgetRefItem/CnWidgetRefItem.vue.js';
25
- import __sfc_main$3 from '../CnWidgetRenderer/CnWidgetRenderer.vue.js';
26
- import __sfc_main$2 from '../CnWidgetWrapper/CnWidgetWrapper.vue.js';
12
+ import __sfc_main$e from '../../dialogs/CnWidgetStyleEditorModal.vue.js';
13
+ import __sfc_main$9 from '../CnBodySections/CnBodySections.vue.js';
14
+ import __sfc_main$d from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
15
+ import __sfc_main$6 from '../CnChartWidget/CnChartWidget.vue.js';
16
+ import __sfc_main$2 from '../CnDashboardGrid/CnDashboardGrid.vue.js';
17
+ import __sfc_main$a from '../CnDateRangePicker/CnDateRangePicker.vue.js';
18
+ import __sfc_main$1 from '../CnEmptyContent/CnEmptyContent.vue.js';
19
+ import __sfc_main$h from '../CnKpiGrid/CnKpiGrid.vue.js';
20
+ import __sfc_main from '../CnPageHeader/CnHeaderTrail.vue.js';
21
+ import __sfc_main$g from '../CnSegmentedControl/CnSegmentedControl.vue.js';
22
+ import __sfc_main$7 from '../CnStatsBlockWidget/CnStatsBlockWidget.vue.js';
23
+ import __sfc_main$5 from '../CnTileWidget/CnTileWidget.vue.js';
24
+ import __sfc_main$i from '../CnWidgetGrid/CnWidgetIcon.vue.js';
25
+ import __sfc_main$8 from '../CnWidgetRefItem/CnWidgetRefItem.vue.js';
26
+ import __sfc_main$4 from '../CnWidgetRenderer/CnWidgetRenderer.vue.js';
27
+ import __sfc_main$3 from '../CnWidgetWrapper/CnWidgetWrapper.vue.js';
27
28
  import { useIntegrationRegistry } from '../../composables/useIntegrationRegistry.js';
28
29
  import { normalizeLook } from '../../composables/useLook.js';
29
30
  import { pageViews } from '../../mixins/pageViews.js';
@@ -34,12 +35,12 @@ import { pickDeclaredProps } from '../../utils/declaredProps.js';
34
35
  import { userLocale } from '../../utils/userLocale.js';
35
36
  import { isWorkspaceCondition, evaluateWorkspaceCondition, readVisibleWhenValue, compareVisibleWhen } from '../../utils/visibleWhen.js';
36
37
  import { canonicalWidgetType } from '../../utils/widgetTypeAliases.js';
37
- import __sfc_main$b from '../CnActionButtons/CnActionButtons.vue.js';
38
- import __sfc_main$e from '../CnLeafMountHost/CnLeafMountHost.vue.js';
38
+ import __sfc_main$c from '../CnActionButtons/CnActionButtons.vue.js';
39
+ import __sfc_main$f from '../CnLeafMountHost/CnLeafMountHost.vue.js';
39
40
  import { BUILT_IN_WIDGETS } from '../CnWidgetGrid/builtInWidgets.js';
40
41
  import { getWidgetTypeEntry } from '../CnWidgetGrid/dashboardWidgetRegistry.js';
41
42
  import '../CnWidgetGrid/registerDashboardWidgets.js';
42
- import __sfc_main$a from '../CnActionsMenu/CnActionsMenu.vue.js';
43
+ import __sfc_main$b from '../CnActionsMenu/CnActionsMenu.vue.js';
43
44
  import { DEFAULT_DATE_RANGE_PRESETS, translatePresetLabel, resolvePresetWindow } from '../CnDateRangePicker/CnDateRangePicker.vue2.js';
44
45
 
45
46
  /** Surfaces understood by the pluggable integration registry (AD-19). */
@@ -158,12 +159,13 @@ var script = {
158
159
  name: 'CnDashboardPage',
159
160
 
160
161
  components: {
162
+ CnHeaderTrail: __sfc_main,
161
163
  NcActions,
162
164
  NcActionButton,
163
165
  NcActionInput,
164
166
  NcActionSeparator,
165
167
  NcButton,
166
- CnEmptyContent: __sfc_main,
168
+ CnEmptyContent: __sfc_main$1,
167
169
  NcLoadingIcon,
168
170
  NcSelect,
169
171
  Pencil,
@@ -173,23 +175,23 @@ var script = {
173
175
  CalendarRange,
174
176
  ViewDashboardOutline,
175
177
  Download,
176
- CnDashboardGrid: __sfc_main$1,
177
- CnWidgetWrapper: __sfc_main$2,
178
- CnWidgetRenderer: __sfc_main$3,
179
- CnTileWidget: __sfc_main$4,
180
- CnChartWidget: __sfc_main$5,
181
- CnStatsBlockWidget: __sfc_main$6,
182
- CnWidgetRefItem: __sfc_main$7,
183
- CnBodySections: __sfc_main$8,
184
- CnDateRangePicker: __sfc_main$9,
185
- CnActionsMenu: __sfc_main$a,
186
- CnActionButtons: __sfc_main$b,
187
- CnBuildiqEditButton: __sfc_main$c,
188
- CnWidgetStyleEditorModal: __sfc_main$d,
189
- CnLeafMountHost: __sfc_main$e,
190
- CnSegmentedControl: __sfc_main$f,
191
- CnKpiGrid: __sfc_main$g,
192
- CnWidgetIcon: __sfc_main$h,
178
+ CnDashboardGrid: __sfc_main$2,
179
+ CnWidgetWrapper: __sfc_main$3,
180
+ CnWidgetRenderer: __sfc_main$4,
181
+ CnTileWidget: __sfc_main$5,
182
+ CnChartWidget: __sfc_main$6,
183
+ CnStatsBlockWidget: __sfc_main$7,
184
+ CnWidgetRefItem: __sfc_main$8,
185
+ CnBodySections: __sfc_main$9,
186
+ CnDateRangePicker: __sfc_main$a,
187
+ CnActionsMenu: __sfc_main$b,
188
+ CnActionButtons: __sfc_main$c,
189
+ CnBuildiqEditButton: __sfc_main$d,
190
+ CnWidgetStyleEditorModal: __sfc_main$e,
191
+ CnLeafMountHost: __sfc_main$f,
192
+ CnSegmentedControl: __sfc_main$g,
193
+ CnKpiGrid: __sfc_main$h,
194
+ CnWidgetIcon: __sfc_main$i,
193
195
  },
194
196
 
195
197
  mixins: [pageViews],
@@ -257,6 +259,30 @@ var script = {
257
259
  default: '',
258
260
  },
259
261
 
262
+ /**
263
+ * A breadcrumb under the title (manifest `config.breadcrumb`): one
264
+ * crumb `{ label, route?, params?, href?, icon?, separator? }` or a
265
+ * list; the title follows as the current crumb. Drawn as the detail
266
+ * header's breadcrumb row. Null (the default) draws none.
267
+ *
268
+ * @type {object|Array<object>|null}
269
+ * @spec openspec/changes/page-header-breadcrumb/specs/page-header/spec.md#requirement-a-list-dashboard-or-settings-page-can-show-a-breadcrumb-and-a-meta-note
270
+ */
271
+ breadcrumb: {
272
+ type: [Object, Array],
273
+ default: null,
274
+ },
275
+
276
+ /**
277
+ * A note after the breadcrumb and a middle dot (manifest `config.headerMeta`).
278
+ *
279
+ * @spec openspec/changes/page-header-breadcrumb/specs/page-header/spec.md#requirement-a-list-dashboard-or-settings-page-can-show-a-breadcrumb-and-a-meta-note
280
+ */
281
+ headerMeta: {
282
+ type: String,
283
+ default: '',
284
+ },
285
+
260
286
  /** Page description (shown below title) */
261
287
  description: {
262
288
  type: String,
@@ -296,12 +322,16 @@ var script = {
296
322
  * October 2026", `"full"` uses the whole display name. The page
297
323
  * `description`, when set, follows after another middle dot. Off by
298
324
  * default: the subtitle is the description alone, as before.
325
+ * `"date"` leads with the date alone, and `{ label }` puts the
326
+ * translated label where the greeting would be ("Customer contact ·
327
+ * Wednesday 7 October 2026 · ...").
299
328
  *
300
329
  * @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-greet-the-reader
301
- * @type {boolean|string}
330
+ * @spec openspec/changes/dashboard-greeting-label/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-lead-with-a-label-or-the-date
331
+ * @type {boolean|string|object}
302
332
  */
303
333
  greeting: {
304
- type: [Boolean, String],
334
+ type: [Boolean, String, Object],
305
335
  default: false,
306
336
  },
307
337
 
@@ -1036,6 +1066,10 @@ var script = {
1036
1066
  * @return {string}
1037
1067
  */
1038
1068
  greetingLine() {
1069
+ if (this.greeting && typeof this.greeting === 'object') {
1070
+ const label = typeof this.greeting.label === 'string' ? this.greeting.label.trim() : '';
1071
+ return label ? this.effectiveTranslate(label) : ''
1072
+ }
1039
1073
  if (this.greeting !== true && this.greeting !== 'first' && this.greeting !== 'full') {
1040
1074
  return ''
1041
1075
  }
@@ -1058,17 +1092,20 @@ var script = {
1058
1092
  },
1059
1093
 
1060
1094
  /**
1061
- * The header subtitle: with `greeting` on, the greeting, today's date
1062
- * written out and the description, joined by a middle dot; else the
1063
- * description alone, as before.
1095
+ * The header subtitle: with `greeting` on, the greeting (or the
1096
+ * label), today's date written out and the description, joined by a
1097
+ * middle dot; with `greeting: "date"` the date leads, capitalised;
1098
+ * else the description alone, as before.
1064
1099
  *
1065
1100
  * @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-greet-the-reader
1101
+ * @spec openspec/changes/dashboard-greeting-label/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-lead-with-a-label-or-the-date
1066
1102
  * @return {string}
1067
1103
  */
1068
1104
  subtitleText() {
1069
1105
  const description = this.description ? this.resolvedDescription : '';
1106
+ const dateOnly = this.greeting === 'date';
1070
1107
  const greeting = this.greetingLine;
1071
- if (greeting === '') {
1108
+ if (greeting === '' && !dateOnly) {
1072
1109
  return description
1073
1110
  }
1074
1111
  const options = { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' };
@@ -1078,6 +1115,9 @@ var script = {
1078
1115
  } catch {
1079
1116
  date = new Intl.DateTimeFormat(undefined, options).format(new Date());
1080
1117
  }
1118
+ if (dateOnly) {
1119
+ date = date.charAt(0).toLocaleUpperCase() + date.slice(1);
1120
+ }
1081
1121
  return [greeting, date, description].filter((part) => part !== '').join(' · ')
1082
1122
  },
1083
1123
 
@@ -1290,6 +1330,20 @@ var script = {
1290
1330
  return this.dateRangeEnabled && this.dateRange.showHeaderPicker !== false
1291
1331
  },
1292
1332
 
1333
+ /**
1334
+ * Whether the segmented period group sits at the end of the
1335
+ * description line (`dateRange.placement: "description"`) instead of
1336
+ * in a row of its own. Only for the segmented control without a
1337
+ * custom range, whose from/to popover keeps the row of its own.
1338
+ *
1339
+ * @return {boolean}
1340
+ * @spec openspec/changes/page-header-breadcrumb/specs/page-header/spec.md#requirement-a-dashboard-can-show-its-period-on-the-description-line
1341
+ */
1342
+ datePeriodInDescription() {
1343
+ return this.showHeaderDateRange && this.dateRangeControl === 'segmented'
1344
+ && this.dateRange.placement === 'description' && !this.hasCustomPreset
1345
+ },
1346
+
1293
1347
  /**
1294
1348
  * The preset list passed to the picker. Falls back to the
1295
1349
  * `DEFAULT_DATE_RANGE_PRESETS` constant when the consumer
@@ -2001,6 +2055,7 @@ var script = {
2001
2055
  widgetId: item.widgetId,
2002
2056
  title: this.getWidgetTitle(item),
2003
2057
  eyebrow: this.getWidgetEyebrow(item),
2058
+ subtitle: this.getWidgetSubtitle(item),
2004
2059
  showTitle: this.widgetShowTitle(item),
2005
2060
  showActions: this.widgetShowActions(item),
2006
2061
  showRefresh: this.getWidgetShowRefresh(item),
@@ -3119,6 +3174,20 @@ var script = {
3119
3174
  this.showWidgetConfig = false;
3120
3175
  },
3121
3176
 
3177
+ /**
3178
+ * The line under a widget's title (`subtitle` on the widget
3179
+ * definition), translated; empty when it carries none.
3180
+ *
3181
+ * @param {object} item Layout item.
3182
+ * @return {string}
3183
+ * @spec openspec/changes/page-header-breadcrumb/specs/page-header/spec.md#requirement-a-dashboard-widget-card-can-carry-a-line-under-its-title
3184
+ */
3185
+ getWidgetSubtitle(item) {
3186
+ const def = this.getWidgetDef(item.widgetId);
3187
+ const subtitle = def && typeof def.subtitle === 'string' ? def.subtitle : '';
3188
+ return subtitle ? this.effectiveTranslate(subtitle) : ''
3189
+ },
3190
+
3122
3191
  /**
3123
3192
  * The line above a widget's title (`eyebrow` on the widget
3124
3193
  * definition: "Saldo per week" above "Prognose 13 weken"), through the