@conduction/nextcloud-vue 2.56.0-beta.5 → 2.56.0-beta.7

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 (239) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +14 -1
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  4. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +39 -0
  5. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  6. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +46 -4
  7. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  8. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js +224 -9
  9. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js.map +1 -1
  10. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js +79 -25
  11. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js.map +1 -1
  12. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue2.js +42 -3
  13. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue2.js.map +1 -1
  14. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue3.js +39 -6
  15. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue3.js.map +1 -1
  16. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +46 -0
  17. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
  18. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +11 -4
  19. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
  20. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue.js +10 -0
  21. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue.js.map +1 -0
  22. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js +39 -0
  23. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js.map +1 -0
  24. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js +16 -0
  25. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js.map +1 -0
  26. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +117 -1
  27. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  28. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +147 -89
  29. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  30. package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +10 -0
  31. package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js.map +1 -0
  32. package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +259 -0
  33. package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -0
  34. package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js +131 -0
  35. package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -0
  36. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js +10 -0
  37. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js.map +1 -0
  38. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js +116 -0
  39. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js.map +1 -0
  40. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js +24 -0
  41. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js.map +1 -0
  42. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +503 -28
  43. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  44. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +300 -142
  45. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  46. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue.js +10 -0
  47. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue.js.map +1 -0
  48. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue2.js +237 -0
  49. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue2.js.map +1 -0
  50. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue3.js +120 -0
  51. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue3.js.map +1 -0
  52. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue.js +10 -0
  53. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue.js.map +1 -0
  54. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js +77 -0
  55. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js.map +1 -0
  56. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js +27 -0
  57. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js.map +1 -0
  58. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js +169 -12
  59. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
  60. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +15 -7
  61. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
  62. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue2.js +37 -3
  63. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue2.js.map +1 -1
  64. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue3.js +44 -16
  65. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue3.js.map +1 -1
  66. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +132 -3
  67. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  68. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +6 -3
  69. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  70. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue.js +10 -0
  71. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue.js.map +1 -0
  72. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js +150 -0
  73. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js.map +1 -0
  74. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js +106 -0
  75. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js.map +1 -0
  76. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue.js +9 -0
  77. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue.js.map +1 -0
  78. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js +47 -0
  79. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js.map +1 -0
  80. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue3.js +17 -0
  81. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue3.js.map +1 -0
  82. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +49 -0
  83. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
  84. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
  85. package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue2.js +6 -0
  86. package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue2.js.map +1 -1
  87. package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue3.js.map +1 -1
  88. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue2.js +46 -0
  89. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue2.js.map +1 -1
  90. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue3.js +15 -3
  91. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue3.js.map +1 -1
  92. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js +37 -1
  93. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js.map +1 -1
  94. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js +29 -13
  95. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js.map +1 -1
  96. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js +100 -3
  97. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js.map +1 -1
  98. package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js.map +1 -1
  99. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js +50 -3
  100. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js.map +1 -1
  101. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js.map +1 -1
  102. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js +10 -0
  103. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js.map +1 -0
  104. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js +186 -0
  105. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js.map +1 -0
  106. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js +46 -0
  107. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js.map +1 -0
  108. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue.js +11 -0
  109. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue.js.map +1 -0
  110. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js +298 -0
  111. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js.map +1 -0
  112. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js +77 -0
  113. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js.map +1 -0
  114. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue.js +10 -0
  115. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue.js.map +1 -0
  116. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue2.js +169 -0
  117. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue2.js.map +1 -0
  118. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue3.js +48 -0
  119. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue3.js.map +1 -0
  120. package/dist/esm/components/CnTabs/CnTab.vue2.js +35 -0
  121. package/dist/esm/components/CnTabs/CnTab.vue2.js.map +1 -1
  122. package/dist/esm/components/CnTabs/CnTab.vue3.js.map +1 -1
  123. package/dist/esm/components/CnTabs/CnTabs.vue2.js +120 -7
  124. package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
  125. package/dist/esm/components/CnTabs/CnTabs.vue3.js +57 -5
  126. package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
  127. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +59 -4
  128. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  129. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +6 -2
  130. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  131. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue.js +10 -0
  132. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue.js.map +1 -0
  133. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js +484 -0
  134. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js.map +1 -0
  135. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js +115 -0
  136. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js.map +1 -0
  137. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue.js +10 -0
  138. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue.js.map +1 -0
  139. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue2.js +189 -0
  140. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue2.js.map +1 -0
  141. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue3.js +74 -0
  142. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue3.js.map +1 -0
  143. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +82 -8
  144. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  145. package/dist/esm/index.js +10 -0
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/l10n/en.json.js +54 -1
  148. package/dist/esm/l10n/en.json.js.map +1 -1
  149. package/dist/esm/l10n/nl.json.js +54 -1
  150. package/dist/esm/l10n/nl.json.js.map +1 -1
  151. package/dist/esm/nextcloud-vue.css +931 -4
  152. package/dist/esm/utils/dateVariant.js +124 -0
  153. package/dist/esm/utils/dateVariant.js.map +1 -0
  154. package/dist/esm/utils/detailActionModel.js +260 -0
  155. package/dist/esm/utils/detailActionModel.js.map +1 -0
  156. package/dist/esm/utils/dueRule.js +84 -0
  157. package/dist/esm/utils/dueRule.js.map +1 -0
  158. package/dist/esm/utils/fetchAggregate.js +37 -1
  159. package/dist/esm/utils/fetchAggregate.js.map +1 -1
  160. package/dist/esm/utils/fetchFilterCounts.js +186 -0
  161. package/dist/esm/utils/fetchFilterCounts.js.map +1 -0
  162. package/dist/esm/utils/libraryWidgetKeys.js +5 -0
  163. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  164. package/dist/esm/utils/readPath.js +30 -0
  165. package/dist/esm/utils/readPath.js.map +1 -0
  166. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  167. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  168. package/dist/nextcloud-vue.cjs.js +15070 -8994
  169. package/dist/nextcloud-vue.cjs.js.map +2 -2
  170. package/dist/nextcloud-vue.css +931 -4
  171. package/l10n/en.json +54 -1
  172. package/l10n/nl.json +54 -1
  173. package/package.json +1 -1
  174. package/scripts/.jsdoc-baselines.json +3 -0
  175. package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -1
  176. package/src/components/CnAppNav/CnAppNav.md +26 -0
  177. package/src/components/CnAppNav/CnAppNav.vue +104 -1
  178. package/src/components/CnBannerWidget/CnBannerWidget.vue +365 -10
  179. package/src/components/CnBannerWidgetForm/CnBannerWidgetForm.vue +65 -3
  180. package/src/components/CnBoardView/CnBoardView.vue +77 -0
  181. package/src/components/CnBrandStripe/CnBrandStripe.md +22 -0
  182. package/src/components/CnBrandStripe/CnBrandStripe.vue +100 -0
  183. package/src/components/CnBrandStripe/index.js +4 -0
  184. package/src/components/CnCellRenderer/CnCellRenderer.vue +207 -1
  185. package/src/components/CnConversationThread/CnConversationThread.md +51 -0
  186. package/src/components/CnConversationThread/CnConversationThread.vue +457 -0
  187. package/src/components/CnConversationThread/CnConversationWidget.vue +144 -0
  188. package/src/components/CnConversationThread/index.js +4 -0
  189. package/src/components/CnDetailPage/CnDetailPage.md +16 -0
  190. package/src/components/CnDetailPage/CnDetailPage.vue +683 -48
  191. package/src/components/CnDocumentReviewList/CnDocumentReviewList.md +55 -0
  192. package/src/components/CnDocumentReviewList/CnDocumentReviewList.vue +384 -0
  193. package/src/components/CnDocumentReviewList/CnDocumentReviewWidget.vue +108 -0
  194. package/src/components/CnDocumentReviewList/index.js +4 -0
  195. package/src/components/CnHeaderWidget/CnHeaderWidget.vue +189 -14
  196. package/src/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue +53 -3
  197. package/src/components/CnIndexPage/CnIndexPage.vue +135 -3
  198. package/src/components/CnNextStepCard/CnNextStepCard.md +40 -0
  199. package/src/components/CnNextStepCard/CnNextStepCard.vue +319 -0
  200. package/src/components/CnNextStepCard/CnNextStepWidget.vue +59 -0
  201. package/src/components/CnNextStepCard/index.js +4 -0
  202. package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +49 -0
  203. package/src/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue +6 -0
  204. package/src/components/CnObjectKanban/CnObjectKanban.vue +86 -2
  205. package/src/components/CnQuickFilterBar/CnQuickFilterBar.md +3 -0
  206. package/src/components/CnQuickFilterBar/CnQuickFilterBar.vue +60 -1
  207. package/src/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue +100 -3
  208. package/src/components/CnSavedViewsControl/CnSavedViewsControl.vue +50 -3
  209. package/src/components/CnSegmentedControl/CnSegmentedControl.md +46 -0
  210. package/src/components/CnSegmentedControl/CnSegmentedControl.vue +291 -0
  211. package/src/components/CnSegmentedControl/index.js +4 -0
  212. package/src/components/CnStackedBarWidget/CnStackedBarWidget.md +15 -0
  213. package/src/components/CnStackedBarWidget/CnStackedBarWidget.vue +414 -0
  214. package/src/components/CnStackedBarWidget/index.js +14 -0
  215. package/src/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue +224 -0
  216. package/src/components/CnStackedBarWidgetForm/index.js +4 -0
  217. package/src/components/CnTabs/CnTab.vue +35 -0
  218. package/src/components/CnTabs/CnTabs.vue +244 -10
  219. package/src/components/CnTabsWidget/CnTabsWidget.vue +63 -4
  220. package/src/components/CnWeekStripWidget/CnWeekStripWidget.md +31 -0
  221. package/src/components/CnWeekStripWidget/CnWeekStripWidget.vue +668 -0
  222. package/src/components/CnWeekStripWidget/index.js +14 -0
  223. package/src/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue +265 -0
  224. package/src/components/CnWeekStripWidgetForm/index.js +4 -0
  225. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +74 -0
  226. package/src/components/index.js +11 -0
  227. package/src/css/detail-page.css +47 -0
  228. package/src/index.js +9 -0
  229. package/src/schemas/app-manifest-v2.schema.json +389 -1
  230. package/src/schemas/app-manifest.schema.json +2 -1
  231. package/src/utils/dateVariant.js +120 -0
  232. package/src/utils/detailActionModel.js +256 -0
  233. package/src/utils/dueRule.js +94 -0
  234. package/src/utils/fetchAggregate.js +36 -0
  235. package/src/utils/fetchFilterCounts.js +182 -0
  236. package/src/utils/index.js +1 -0
  237. package/src/utils/libraryWidgetKeys.js +5 -0
  238. package/src/utils/readPath.js +27 -0
  239. package/src/utils/validateManifestV2.compiled.js +2 -2
@@ -2929,6 +2929,53 @@
2929
2929
  }
2930
2930
  }
2931
2931
 
2932
+ /* The action model and case surfaces (detail-action-model-and-case-surfaces) */
2933
+
2934
+ /* Type and status pills above the title. */
2935
+ .cn-detail-page__pills {
2936
+ align-items: center;
2937
+ display: flex;
2938
+ flex-wrap: wrap;
2939
+ gap: calc(2 * var(--default-grid-baseline));
2940
+ margin-bottom: calc(1.5 * var(--default-grid-baseline));
2941
+ }
2942
+
2943
+ .cn-detail-page__next-step {
2944
+ margin-bottom: calc(5 * var(--default-grid-baseline));
2945
+ }
2946
+
2947
+ /* Side column. The page becomes a wrapping flex row in which every child
2948
+ takes a full line, except the body and the side column: those two share a
2949
+ line while there is room for both (520px + 300px) and the column drops
2950
+ under the body when there is not. No breakpoint, so it also holds inside a
2951
+ split pane or beside an open sidebar, where the viewport says nothing about
2952
+ the room the page has. Pages without a side column never get this class. */
2953
+ .cn-detail-page--with-side {
2954
+ align-items: flex-start;
2955
+ column-gap: calc(5 * var(--default-grid-baseline));
2956
+ display: flex;
2957
+ flex-wrap: wrap;
2958
+ }
2959
+
2960
+ .cn-detail-page--with-side > * {
2961
+ flex: 1 1 100%;
2962
+ min-width: 0;
2963
+ }
2964
+
2965
+ .cn-detail-page--with-side > .cn-detail-page__body {
2966
+ flex: 999 1 520px;
2967
+ }
2968
+
2969
+ .cn-detail-page--with-side > .cn-detail-page__side {
2970
+ flex: 1 1 300px;
2971
+ }
2972
+
2973
+ .cn-detail-page__side {
2974
+ display: flex;
2975
+ flex-direction: column;
2976
+ gap: calc(5 * var(--default-grid-baseline));
2977
+ }
2978
+
2932
2979
  /* The record as a place (case-page-and-list-as-a-place) */
2933
2980
 
2934
2981
  /* A skip link that reaches the page's declared primary action. Off screen
@@ -4763,6 +4810,113 @@
4763
4810
  }
4764
4811
 
4765
4812
 
4813
+ .cn-conversation-thread[data-v-22b6724f] {
4814
+ display: flex;
4815
+ flex-direction: column;
4816
+ gap: calc(3.5 * var(--default-grid-baseline));
4817
+ }
4818
+ .cn-conversation-thread__title[data-v-22b6724f] {
4819
+ font-size: 1.1em;
4820
+ font-weight: 700;
4821
+ margin: 0;
4822
+ }
4823
+ .cn-conversation-thread__empty[data-v-22b6724f] {
4824
+ color: var(--color-text-maxcontrast);
4825
+ margin: 0;
4826
+ }
4827
+ .cn-conversation-thread__messages[data-v-22b6724f] {
4828
+ display: flex;
4829
+ flex-direction: column;
4830
+ gap: calc(3.5 * var(--default-grid-baseline));
4831
+ list-style: none;
4832
+ margin: 0;
4833
+ padding: 0;
4834
+ }
4835
+ .cn-conversation-thread__message[data-v-22b6724f] {
4836
+ display: flex;
4837
+ gap: calc(3 * var(--default-grid-baseline));
4838
+ }
4839
+ .cn-conversation-thread__message--us[data-v-22b6724f] {
4840
+ flex-direction: row-reverse;
4841
+ }
4842
+ .cn-conversation-thread__avatar[data-v-22b6724f] {
4843
+ align-items: center;
4844
+ background: var(--color-background-dark);
4845
+ border-radius: 50%;
4846
+ color: var(--color-main-text);
4847
+ display: flex;
4848
+ flex: none;
4849
+ font-size: 0.8em;
4850
+ font-weight: 700;
4851
+ height: 34px;
4852
+ justify-content: center;
4853
+ width: 34px;
4854
+ }
4855
+ .cn-conversation-thread__bubble[data-v-22b6724f] {
4856
+ background: var(--color-background-hover);
4857
+ border-radius: var(--border-radius-large);
4858
+ border-start-start-radius: var(--border-radius-small, 4px);
4859
+ color: var(--color-main-text);
4860
+ display: flex;
4861
+ flex: 1;
4862
+ flex-direction: column;
4863
+ gap: var(--default-grid-baseline);
4864
+ min-width: 0;
4865
+ padding: calc(3 * var(--default-grid-baseline)) calc(3.5 * var(--default-grid-baseline));
4866
+ }
4867
+ .cn-conversation-thread__message--us .cn-conversation-thread__bubble[data-v-22b6724f] {
4868
+ background: var(--color-primary-element-light);
4869
+ border-start-end-radius: var(--border-radius-small, 4px);
4870
+ border-start-start-radius: var(--border-radius-large);
4871
+ color: var(--color-primary-element-light-text);
4872
+ }
4873
+ .cn-conversation-thread__meta[data-v-22b6724f] {
4874
+ display: flex;
4875
+ flex-wrap: wrap;
4876
+ font-size: 0.9em;
4877
+ gap: calc(2 * var(--default-grid-baseline));
4878
+ }
4879
+ .cn-conversation-thread__author[data-v-22b6724f] {
4880
+ font-weight: 600;
4881
+ }
4882
+ .cn-conversation-thread__text[data-v-22b6724f] {
4883
+ overflow-wrap: anywhere;
4884
+ white-space: pre-wrap;
4885
+ }
4886
+ .cn-conversation-thread__reply[data-v-22b6724f] {
4887
+ display: flex;
4888
+ flex-direction: column;
4889
+ gap: calc(2 * var(--default-grid-baseline));
4890
+ }
4891
+ .cn-conversation-thread__reply-label[data-v-22b6724f] {
4892
+ font-weight: 600;
4893
+ }
4894
+ .cn-conversation-thread__input[data-v-22b6724f] {
4895
+ box-sizing: border-box;
4896
+ margin: 0;
4897
+ resize: vertical;
4898
+ width: 100%;
4899
+ }
4900
+ .cn-conversation-thread__error[data-v-22b6724f] {
4901
+ color: var(--color-error-text, var(--color-error));
4902
+ margin: 0;
4903
+ }
4904
+ .cn-conversation-thread__reply-actions[data-v-22b6724f] {
4905
+ display: flex;
4906
+ flex-wrap: wrap;
4907
+ gap: calc(2.5 * var(--default-grid-baseline));
4908
+ justify-content: flex-end;
4909
+ }
4910
+
4911
+
4912
+ .cn-case-widget-card[data-v-57081189] {
4913
+ background: var(--color-main-background);
4914
+ border: 1px solid var(--color-border);
4915
+ border-radius: var(--border-radius-large);
4916
+ padding: calc(5 * var(--default-grid-baseline));
4917
+ }
4918
+
4919
+
4766
4920
  /* Match vue-material-design-icons: inline path icons inherit text colour. */
4767
4921
  .cn-widget-icon__path[data-v-6082e422] {
4768
4922
  fill: currentColor;
@@ -4792,6 +4946,79 @@
4792
4946
  margin: 0;
4793
4947
  }
4794
4948
 
4949
+
4950
+ .cn-document-review-list[data-v-9a0e5e62] {
4951
+ display: flex;
4952
+ flex-direction: column;
4953
+ gap: calc(1.5 * var(--default-grid-baseline));
4954
+ }
4955
+ .cn-document-review-list__header[data-v-9a0e5e62] {
4956
+ align-items: center;
4957
+ display: flex;
4958
+ flex-wrap: wrap;
4959
+ gap: calc(2 * var(--default-grid-baseline));
4960
+ justify-content: space-between;
4961
+ margin-bottom: calc(2 * var(--default-grid-baseline));
4962
+ }
4963
+ .cn-document-review-list__title[data-v-9a0e5e62] {
4964
+ font-size: 1.1em;
4965
+ font-weight: 700;
4966
+ margin: 0;
4967
+ }
4968
+ .cn-document-review-list__summary[data-v-9a0e5e62],
4969
+ .cn-document-review-list__meta[data-v-9a0e5e62],
4970
+ .cn-document-review-list__empty[data-v-9a0e5e62] {
4971
+ color: var(--color-text-maxcontrast);
4972
+ }
4973
+ .cn-document-review-list__empty[data-v-9a0e5e62] {
4974
+ margin: 0;
4975
+ }
4976
+ .cn-document-review-list__rows[data-v-9a0e5e62] {
4977
+ list-style: none;
4978
+ margin: 0;
4979
+ padding: 0;
4980
+ }
4981
+ .cn-document-review-list__row[data-v-9a0e5e62] {
4982
+ align-items: center;
4983
+ border-top: 1px solid var(--color-border);
4984
+ display: flex;
4985
+ flex-wrap: wrap;
4986
+ gap: calc(3 * var(--default-grid-baseline));
4987
+ padding: calc(2.5 * var(--default-grid-baseline)) 0;
4988
+ }
4989
+ .cn-document-review-list__icon[data-v-9a0e5e62] {
4990
+ color: var(--color-text-maxcontrast);
4991
+ flex: none;
4992
+ }
4993
+ .cn-document-review-list__text[data-v-9a0e5e62] {
4994
+ display: flex;
4995
+ flex: 1 1 220px;
4996
+ flex-direction: column;
4997
+ min-width: 0;
4998
+ }
4999
+ .cn-document-review-list__name[data-v-9a0e5e62] {
5000
+ font-weight: 500;
5001
+ overflow-wrap: anywhere;
5002
+ }
5003
+ a.cn-document-review-list__name[data-v-9a0e5e62] {
5004
+ color: var(--color-primary-element);
5005
+ text-decoration: underline;
5006
+ }
5007
+ .cn-document-review-list__meta[data-v-9a0e5e62] {
5008
+ font-size: 0.9em;
5009
+ }
5010
+ .cn-document-review-list__status[data-v-9a0e5e62] {
5011
+ flex: none;
5012
+ }
5013
+
5014
+
5015
+ .cn-case-widget-card[data-v-22291596] {
5016
+ background: var(--color-main-background);
5017
+ border: 1px solid var(--color-border);
5018
+ border-radius: var(--border-radius-large);
5019
+ padding: calc(5 * var(--default-grid-baseline));
5020
+ }
5021
+
4795
5022
  /* required styles */
4796
5023
 
4797
5024
  .leaflet-pane,
@@ -5628,6 +5855,103 @@ svg.leaflet-image-layer.leaflet-interactive path {
5628
5855
  }
5629
5856
 
5630
5857
 
5858
+ .cn-next-step-card[data-v-3a9ce962] {
5859
+ align-items: center;
5860
+ background: var(--color-main-background);
5861
+ border: 1px solid var(--color-border);
5862
+ border-radius: var(--border-radius-large);
5863
+ /* The edge says "this is the thing to act on". An inset shadow, so it
5864
+ follows the card's rounded corners instead of squaring them off. */
5865
+ box-shadow: inset 4px 0 0 var(--color-primary-element);
5866
+ display: flex;
5867
+ flex-wrap: wrap;
5868
+ gap: calc(4 * var(--default-grid-baseline)) calc(8 * var(--default-grid-baseline));
5869
+ padding: calc(5 * var(--default-grid-baseline)) calc(6 * var(--default-grid-baseline));
5870
+ padding-inline-start: calc(7 * var(--default-grid-baseline));
5871
+ }
5872
+ .cn-next-step-card__main[data-v-3a9ce962] {
5873
+ display: flex;
5874
+ flex: 1 1 420px;
5875
+ flex-direction: column;
5876
+ gap: calc(2.5 * var(--default-grid-baseline));
5877
+ min-width: 0;
5878
+ }
5879
+ .cn-next-step-card__title[data-v-3a9ce962] {
5880
+ color: var(--color-main-text);
5881
+ font-size: 0.85em;
5882
+ font-weight: 700;
5883
+ letter-spacing: 0.06em;
5884
+ margin: 0;
5885
+ text-transform: uppercase;
5886
+ }
5887
+ .cn-next-step-card__list[data-v-3a9ce962] {
5888
+ display: grid;
5889
+ gap: calc(2 * var(--default-grid-baseline));
5890
+ list-style: none;
5891
+ margin: 0;
5892
+ padding: 0;
5893
+ }
5894
+ .cn-next-step-card__item[data-v-3a9ce962] {
5895
+ align-items: center;
5896
+ color: var(--color-text-maxcontrast);
5897
+ display: flex;
5898
+ flex-wrap: wrap;
5899
+ gap: calc(2.5 * var(--default-grid-baseline));
5900
+ }
5901
+ .cn-next-step-card__item--current[data-v-3a9ce962] {
5902
+ color: var(--color-main-text);
5903
+ }
5904
+ .cn-next-step-card__item--current .cn-next-step-card__label[data-v-3a9ce962] {
5905
+ font-weight: 700;
5906
+ }
5907
+ .cn-next-step-card__marker[data-v-3a9ce962] {
5908
+ align-items: center;
5909
+ border: 2px solid var(--color-border-maxcontrast);
5910
+ border-radius: 50%;
5911
+ box-sizing: border-box;
5912
+ display: inline-flex;
5913
+ flex: none;
5914
+ height: 20px;
5915
+ justify-content: center;
5916
+ width: 20px;
5917
+ }
5918
+ .cn-next-step-card__item--current .cn-next-step-card__marker[data-v-3a9ce962] {
5919
+ border-color: var(--color-primary-element);
5920
+ }
5921
+ .cn-next-step-card__item--done .cn-next-step-card__marker[data-v-3a9ce962] {
5922
+ background: var(--color-primary-element);
5923
+ border-color: var(--color-primary-element);
5924
+ color: var(--color-primary-element-text);
5925
+ }
5926
+ .cn-next-step-card__hint[data-v-3a9ce962] {
5927
+ color: var(--color-text-maxcontrast);
5928
+ font-weight: 400;
5929
+ }
5930
+
5931
+ /* Read, not seen. */
5932
+ .cn-next-step-card__state[data-v-3a9ce962] {
5933
+ border: 0;
5934
+ clip-path: inset(50%);
5935
+ height: 1px;
5936
+ margin: -1px;
5937
+ overflow: hidden;
5938
+ padding: 0;
5939
+ position: absolute;
5940
+ white-space: nowrap;
5941
+ width: 1px;
5942
+ }
5943
+ .cn-next-step-card__side[data-v-3a9ce962] {
5944
+ align-items: flex-start;
5945
+ display: flex;
5946
+ flex-direction: column;
5947
+ gap: calc(2 * var(--default-grid-baseline));
5948
+ }
5949
+ .cn-next-step-card__after[data-v-3a9ce962] {
5950
+ color: var(--color-text-maxcontrast);
5951
+ font-size: 0.9em;
5952
+ }
5953
+
5954
+
5631
5955
  .cn-fk-resolve-cell[data-v-471db666] {
5632
5956
  white-space: nowrap;
5633
5957
  overflow: hidden;
@@ -5649,6 +5973,52 @@ svg.leaflet-image-layer.leaflet-interactive path {
5649
5973
  .cn-cell-renderer__dash[data-v-37d7b88f] {
5650
5974
  color: var(--color-text-maxcontrast);
5651
5975
  }
5976
+ .cn-cell-renderer__avatar[data-v-37d7b88f] {
5977
+ display: inline-flex;
5978
+ align-items: center;
5979
+ gap: 8px;
5980
+ max-width: 100%;
5981
+ vertical-align: middle;
5982
+ }
5983
+ .cn-cell-renderer__avatar-picture[data-v-37d7b88f] {
5984
+ display: inline-flex;
5985
+ flex: none;
5986
+ }
5987
+ .cn-cell-renderer__avatar-initials[data-v-37d7b88f] {
5988
+ display: inline-flex;
5989
+ flex: none;
5990
+ align-items: center;
5991
+ justify-content: center;
5992
+ border-radius: 50%;
5993
+ background-color: var(--color-primary-element-light);
5994
+ color: var(--color-primary-element-light-text);
5995
+ font-size: 0.75em;
5996
+ font-weight: 700;
5997
+ line-height: 1;
5998
+ }
5999
+ .cn-cell-renderer__avatar-name[data-v-37d7b88f] {
6000
+ min-width: 0;
6001
+ overflow: hidden;
6002
+ text-overflow: ellipsis;
6003
+ white-space: nowrap;
6004
+ }
6005
+
6006
+ /* A date that matched a rule is also set in a heavier weight, so the signal
6007
+ does not rest on colour alone. */
6008
+ .cn-cell-renderer__date--success[data-v-37d7b88f],
6009
+ .cn-cell-renderer__date--warning[data-v-37d7b88f],
6010
+ .cn-cell-renderer__date--error[data-v-37d7b88f] {
6011
+ font-weight: 600;
6012
+ }
6013
+ .cn-cell-renderer__date--success[data-v-37d7b88f] {
6014
+ color: var(--color-text-success, var(--color-success-text));
6015
+ }
6016
+ .cn-cell-renderer__date--warning[data-v-37d7b88f] {
6017
+ color: var(--color-text-warning, var(--color-warning-text));
6018
+ }
6019
+ .cn-cell-renderer__date--error[data-v-37d7b88f] {
6020
+ color: var(--color-text-error, var(--color-error-text));
6021
+ }
5652
6022
  .cn-cell-renderer__icon--success[data-v-37d7b88f] {
5653
6023
  color: var(--color-success);
5654
6024
  }
@@ -15588,6 +15958,81 @@ a.cn-xwiki-card__title[data-v-54e85fe3]:hover {
15588
15958
  }
15589
15959
 
15590
15960
 
15961
+ .cn-stacked-bar[data-v-c0bac1a2] {
15962
+ display: flex;
15963
+ flex-direction: column;
15964
+ gap: 16px;
15965
+ width: 100%;
15966
+ }
15967
+ .cn-stacked-bar__state[data-v-c0bac1a2] {
15968
+ display: flex;
15969
+ align-items: center;
15970
+ gap: 8px;
15971
+ margin: 0;
15972
+ color: var(--color-text-maxcontrast);
15973
+ }
15974
+ .cn-stacked-bar__bar[data-v-c0bac1a2] {
15975
+ display: flex;
15976
+ gap: 3px;
15977
+ height: 12px;
15978
+ }
15979
+ .cn-stacked-bar__segment[data-v-c0bac1a2] {
15980
+ flex-basis: 0;
15981
+ min-width: 4px;
15982
+ border-radius: 6px;
15983
+ }
15984
+ .cn-stacked-bar__legend[data-v-c0bac1a2] {
15985
+ display: grid;
15986
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
15987
+ gap: 12px;
15988
+ margin: 0;
15989
+ padding: 0;
15990
+ list-style: none;
15991
+ }
15992
+ .cn-stacked-bar__legend-item[data-v-c0bac1a2] {
15993
+ display: flex;
15994
+ flex-direction: column;
15995
+ gap: 2px;
15996
+ min-width: 0;
15997
+ }
15998
+ .cn-stacked-bar__label[data-v-c0bac1a2] {
15999
+ display: flex;
16000
+ align-items: center;
16001
+ gap: 8px;
16002
+ font-size: 0.95em;
16003
+ color: var(--color-text-maxcontrast);
16004
+ overflow-wrap: anywhere;
16005
+ }
16006
+ .cn-stacked-bar__dot[data-v-c0bac1a2] {
16007
+ flex: none;
16008
+ width: 10px;
16009
+ height: 10px;
16010
+ border-radius: 3px;
16011
+ }
16012
+ .cn-stacked-bar__count[data-v-c0bac1a2] {
16013
+ font-size: 1.5em;
16014
+ font-weight: 700;
16015
+ line-height: 1.2;
16016
+ color: var(--color-main-text);
16017
+ }
16018
+
16019
+
16020
+ .cn-stacked-bar-form[data-v-56e6c6a2] {
16021
+ display: flex;
16022
+ flex-direction: column;
16023
+ gap: 12px;
16024
+ }
16025
+ .cn-stacked-bar-form__row2[data-v-56e6c6a2] {
16026
+ display: flex;
16027
+ gap: 12px;
16028
+ align-items: flex-end;
16029
+ }
16030
+ .cn-stacked-bar-form__row2[data-v-56e6c6a2] > * {
16031
+ flex: 1;
16032
+ min-width: 0;
16033
+ }
16034
+
16035
+
15591
16036
  .cn-transition-input[data-v-1529f8b6] {
15592
16037
  display: flex;
15593
16038
  flex-direction: column;
@@ -17060,6 +17505,100 @@ to { background-position: -200% 0;
17060
17505
  color: inherit;
17061
17506
  }
17062
17507
 
17508
+ /* Attention card. The severity edge is an inset shadow, so it takes no width. */
17509
+ .cn-banner-widget--attention[data-v-3531692f] {
17510
+ --cn-banner-accent: var(--color-primary-element);
17511
+ --cn-banner-accent-text: var(--color-primary-element);
17512
+ display: flex;
17513
+ flex-wrap: wrap;
17514
+ align-items: center;
17515
+ gap: 16px 24px;
17516
+ box-sizing: border-box;
17517
+ padding: 20px 24px 20px 28px;
17518
+ border: 1px solid var(--color-border);
17519
+ border-radius: var(--border-radius-container, var(--border-radius-large, 12px));
17520
+ background: var(--color-main-background);
17521
+ box-shadow: inset 4px 0 0 0 var(--cn-banner-accent);
17522
+ }
17523
+ .cn-banner-widget--attention.cn-banner-widget--warning[data-v-3531692f] {
17524
+ --cn-banner-accent: var(--color-element-warning, var(--color-warning));
17525
+ --cn-banner-accent-text: var(--color-text-warning, var(--color-warning-text, var(--color-main-text)));
17526
+ }
17527
+ .cn-banner-widget--attention.cn-banner-widget--error[data-v-3531692f] {
17528
+ --cn-banner-accent: var(--color-element-error, var(--color-error));
17529
+ --cn-banner-accent-text: var(--color-text-error, var(--color-error-text));
17530
+ }
17531
+ .cn-banner-widget--attention.cn-banner-widget--success[data-v-3531692f] {
17532
+ --cn-banner-accent: var(--color-element-success, var(--color-success));
17533
+ --cn-banner-accent-text: var(--color-text-success, var(--color-success-text));
17534
+ }
17535
+ .cn-banner-widget__body[data-v-3531692f] {
17536
+ display: flex;
17537
+ flex: 1 1 320px;
17538
+ flex-direction: column;
17539
+ gap: 6px;
17540
+ min-width: 0;
17541
+ }
17542
+ .cn-banner-widget__kicker[data-v-3531692f] {
17543
+ margin: 0;
17544
+ font-size: 0.85em;
17545
+ font-weight: 700;
17546
+ letter-spacing: 0.06em;
17547
+ text-transform: uppercase;
17548
+ color: var(--cn-banner-accent-text);
17549
+ }
17550
+ .cn-banner-widget__title[data-v-3531692f] {
17551
+ margin: 0;
17552
+ font-size: 1.3em;
17553
+ font-weight: 700;
17554
+ line-height: 1.3;
17555
+ color: var(--color-main-text);
17556
+ }
17557
+ .cn-banner-widget__reason[data-v-3531692f] {
17558
+ margin: 0;
17559
+ color: var(--color-text-maxcontrast);
17560
+ }
17561
+ .cn-banner-widget__actions[data-v-3531692f] {
17562
+ display: flex;
17563
+ flex-wrap: wrap;
17564
+ gap: 10px;
17565
+ }
17566
+ .cn-banner-widget__action[data-v-3531692f] {
17567
+ display: inline-flex;
17568
+ align-items: center;
17569
+ justify-content: center;
17570
+ box-sizing: border-box;
17571
+ min-height: var(--default-clickable-area, 40px);
17572
+ margin: 0;
17573
+ padding: 0 16px;
17574
+ border: 1px solid var(--color-border-maxcontrast);
17575
+ border-radius: var(--border-radius-element, var(--border-radius-large, 8px));
17576
+ font: inherit;
17577
+ font-weight: 600;
17578
+ text-decoration: none;
17579
+ cursor: pointer;
17580
+ }
17581
+ .cn-banner-widget__action--secondary[data-v-3531692f] {
17582
+ background: var(--color-main-background);
17583
+ color: var(--color-main-text);
17584
+ }
17585
+ .cn-banner-widget__action--secondary[data-v-3531692f]:hover {
17586
+ background: var(--color-background-hover);
17587
+ }
17588
+ .cn-banner-widget__action--primary[data-v-3531692f] {
17589
+ border-color: var(--color-primary-element);
17590
+ background: var(--color-primary-element);
17591
+ color: var(--color-primary-element-text);
17592
+ }
17593
+ .cn-banner-widget__action--primary[data-v-3531692f]:hover {
17594
+ border-color: var(--color-primary-element-hover);
17595
+ background: var(--color-primary-element-hover);
17596
+ }
17597
+ .cn-banner-widget__action[data-v-3531692f]:focus-visible {
17598
+ outline: 2px solid var(--color-main-text);
17599
+ outline-offset: 2px;
17600
+ }
17601
+
17063
17602
 
17064
17603
  .cn-divider-widget[data-v-621c1f75] {
17065
17604
  width: 100%;
@@ -17112,6 +17651,15 @@ to { background-position: -200% 0;
17112
17651
  border-radius: var(--border-radius-large, 8px);
17113
17652
  overflow: hidden;
17114
17653
  }
17654
+ .cn-header-widget--plain[data-v-1b97430f] {
17655
+ min-height: 0;
17656
+ border-radius: 0;
17657
+ }
17658
+ .cn-header-widget__date[data-v-1b97430f] {
17659
+ font-size: 14px;
17660
+ line-height: 1.4;
17661
+ margin: 0;
17662
+ }
17115
17663
  .cn-header-widget__overlay[data-v-1b97430f] {
17116
17664
  position: absolute;
17117
17665
  inset: 0;
@@ -17792,11 +18340,38 @@ to { background-position: -200% 0;
17792
18340
  .cn-tabs__strip .cn-tabs__scroll[data-v-5c1a056f]:focus {
17793
18341
  background: none;
17794
18342
  }
17795
- .cn-tabs__scroll--start[data-v-5c1a056f] {
17796
- inset-inline-start: 0;
18343
+ .cn-tabs__scroll--start[data-v-5c1a056f] {
18344
+ inset-inline-start: 0;
18345
+ }
18346
+ .cn-tabs__scroll--end[data-v-5c1a056f] {
18347
+ inset-inline-end: 0;
18348
+ }
18349
+
18350
+ /* The count behind a tab's title. Full-contrast text on the page background,
18351
+ so it reads on the idle tab's darker fill and on the open tab alike. */
18352
+ .cn-tabs__count[data-v-5c1a056f] {
18353
+ background-color: var(--color-main-background);
18354
+ border: 1px solid var(--color-border-dark);
18355
+ border-radius: var(--border-radius-pill, 100px);
18356
+ color: var(--color-main-text);
18357
+ display: inline-block;
18358
+ font-size: 0.85em;
18359
+ line-height: 1.4;
18360
+ margin-inline-start: 6px;
18361
+ min-width: 1.4em;
18362
+ padding: 0 6px;
18363
+ text-align: center;
18364
+ }
18365
+ .cn-tabs__more[data-v-5c1a056f] {
18366
+ align-items: center;
18367
+ display: flex;
18368
+ flex: 0 0 auto;
17797
18369
  }
17798
- .cn-tabs__scroll--end[data-v-5c1a056f] {
17799
- inset-inline-end: 0;
18370
+
18371
+ /* Keeps a "More" entry's text on the menu's text column without drawing an icon. */
18372
+ .cn-tabs__more-spacer[data-v-5c1a056f] {
18373
+ display: inline-block;
18374
+ width: 20px;
17800
18375
  }
17801
18376
  .cn-tabs__nav-end[data-v-5c1a056f] {
17802
18377
  align-items: center;
@@ -17904,6 +18479,42 @@ to { background-position: -200% 0;
17904
18479
  padding: 12px;
17905
18480
  }
17906
18481
 
18482
+ /* Segmented variant: the strip is a pill switch that stands on its own, so
18483
+ the bar's rule and the tab-joins-panel treatment are both dropped. */
18484
+ .cn-tabs--segmented .cn-tabs__bar[data-v-5c1a056f] {
18485
+ border-bottom: none;
18486
+ }
18487
+ .cn-tabs--segmented .cn-tabs__strip[data-v-5c1a056f] {
18488
+ flex: 0 1 auto;
18489
+ }
18490
+ .cn-tabs--segmented .cn-tabs__nav[data-v-5c1a056f] {
18491
+ gap: 4px;
18492
+ margin-bottom: 0;
18493
+ padding: 4px;
18494
+ border-radius: var(--border-radius-container, var(--border-radius-large, 10px));
18495
+ background-color: var(--color-background-dark);
18496
+ }
18497
+ .cn-tabs--segmented .cn-tabs__nav-item[data-v-5c1a056f] {
18498
+ border: 1px solid transparent;
18499
+ border-radius: var(--border-radius-element, var(--border-radius-large, 8px));
18500
+ background-color: transparent;
18501
+ font-weight: 600;
18502
+ padding: 6px 16px;
18503
+ }
18504
+ .cn-tabs--segmented .cn-tabs__nav-item[data-v-5c1a056f]:hover {
18505
+ background-color: var(--color-background-hover);
18506
+ }
18507
+
18508
+ /* The open segment is the raised one. Its border survives forced-colours
18509
+ mode, which drops the background and the shadow. */
18510
+ .cn-tabs--segmented .cn-tabs__nav-item--active[data-v-5c1a056f] {
18511
+ border: 1px solid var(--color-border-dark);
18512
+ background-color: var(--color-main-background);
18513
+ box-shadow: 0 1px 2px var(--color-box-shadow);
18514
+ font-weight: 600;
18515
+ padding-top: 6px;
18516
+ }
18517
+
17907
18518
 
17908
18519
  /* The panel is the card; the strip is not inside it. There is no title bar
17909
18520
  above the tabs either: the open tab names the panel, so a title row would
@@ -18050,6 +18661,135 @@ to { background-position: -200% 0;
18050
18661
  }
18051
18662
 
18052
18663
 
18664
+ .cn-week-strip[data-v-153dd4cb] {
18665
+ width: 100%;
18666
+ }
18667
+ .cn-week-strip__state[data-v-153dd4cb] {
18668
+ display: flex;
18669
+ align-items: center;
18670
+ gap: 8px;
18671
+ margin: 0;
18672
+ padding: 12px 4px;
18673
+ color: var(--color-text-maxcontrast);
18674
+ }
18675
+ .cn-week-strip__scroll[data-v-153dd4cb] {
18676
+ overflow-x: auto;
18677
+ border-radius: var(--border-radius-large, 8px);
18678
+ }
18679
+ .cn-week-strip__scroll[data-v-153dd4cb]:focus-visible {
18680
+ outline: 2px solid var(--color-primary-element);
18681
+ outline-offset: 2px;
18682
+ }
18683
+ .cn-week-strip__days[data-v-153dd4cb] {
18684
+ display: grid;
18685
+ grid-template-columns: repeat(var(--cn-week-strip-columns, 5), minmax(128px, 1fr));
18686
+ gap: 10px;
18687
+ /* 5 columns of 128px plus gaps: below this the region scrolls sideways. */
18688
+ min-width: calc(var(--cn-week-strip-columns, 5) * 136px);
18689
+ margin: 0;
18690
+ padding: 0;
18691
+ list-style: none;
18692
+ }
18693
+ .cn-week-strip__day[data-v-153dd4cb] {
18694
+ display: flex;
18695
+ flex-direction: column;
18696
+ gap: 8px;
18697
+ min-width: 0;
18698
+ padding: 10px;
18699
+ border: 1px solid var(--color-border);
18700
+ border-radius: var(--border-radius-large, 8px);
18701
+ background: var(--color-background-hover);
18702
+ }
18703
+ .cn-week-strip__day--today[data-v-153dd4cb] {
18704
+ border-color: var(--color-primary-element);
18705
+ background: var(--color-primary-element-light);
18706
+ }
18707
+ .cn-week-strip__head[data-v-153dd4cb] {
18708
+ display: flex;
18709
+ align-items: center;
18710
+ justify-content: space-between;
18711
+ gap: 6px;
18712
+ font-size: 0.85em;
18713
+ font-weight: 600;
18714
+ color: var(--color-main-text);
18715
+ }
18716
+ .cn-week-strip__today[data-v-153dd4cb] {
18717
+ padding: 1px 8px;
18718
+ border-radius: var(--border-radius-pill, 10px);
18719
+ background: var(--color-primary-element);
18720
+ color: var(--color-primary-element-text);
18721
+ font-size: 0.85em;
18722
+ font-weight: 700;
18723
+ }
18724
+ .cn-week-strip__items[data-v-153dd4cb] {
18725
+ display: flex;
18726
+ flex-direction: column;
18727
+ gap: 6px;
18728
+ margin: 0;
18729
+ padding: 0;
18730
+ list-style: none;
18731
+ }
18732
+ .cn-week-strip__item[data-v-153dd4cb] {
18733
+ display: flex;
18734
+ flex-direction: column;
18735
+ gap: 4px;
18736
+ padding: 10px 12px;
18737
+ border: 1px solid var(--color-border);
18738
+ border-radius: var(--border-radius-large, 8px);
18739
+ background: var(--color-main-background);
18740
+ color: var(--color-main-text);
18741
+ text-decoration: none;
18742
+ }
18743
+ .cn-week-strip__item--link[data-v-153dd4cb]:hover {
18744
+ border-color: var(--color-primary-element);
18745
+ }
18746
+ .cn-week-strip__item--link[data-v-153dd4cb]:focus-visible {
18747
+ outline: 2px solid var(--color-primary-element);
18748
+ outline-offset: 2px;
18749
+ }
18750
+
18751
+ /* The edge is drawn inside the box, so a late item is as wide as the others. */
18752
+ .cn-week-strip__item--late[data-v-153dd4cb] {
18753
+ border-color: var(--color-element-error, var(--color-error));
18754
+ box-shadow: inset 3px 0 0 0 var(--color-element-error, var(--color-error));
18755
+ }
18756
+ .cn-week-strip__title[data-v-153dd4cb] {
18757
+ font-size: 0.95em;
18758
+ line-height: 1.3;
18759
+ overflow-wrap: anywhere;
18760
+ }
18761
+ .cn-week-strip__meta[data-v-153dd4cb] {
18762
+ font-size: 0.85em;
18763
+ color: var(--color-text-maxcontrast);
18764
+ overflow-wrap: anywhere;
18765
+ }
18766
+ .cn-week-strip__late[data-v-153dd4cb] {
18767
+ font-size: 0.8em;
18768
+ font-weight: 600;
18769
+ color: var(--color-text-error, var(--color-error-text));
18770
+ }
18771
+ .cn-week-strip__empty[data-v-153dd4cb] {
18772
+ font-size: 0.9em;
18773
+ color: var(--color-text-maxcontrast);
18774
+ }
18775
+
18776
+
18777
+ .cn-week-strip-form[data-v-4a9dc393] {
18778
+ display: flex;
18779
+ flex-direction: column;
18780
+ gap: 12px;
18781
+ }
18782
+ .cn-week-strip-form__row2[data-v-4a9dc393] {
18783
+ display: flex;
18784
+ gap: 12px;
18785
+ align-items: flex-end;
18786
+ }
18787
+ .cn-week-strip-form__row2[data-v-4a9dc393] > * {
18788
+ flex: 1;
18789
+ min-width: 0;
18790
+ }
18791
+
18792
+
18053
18793
  .cn-color-picker__swatch[data-v-307491dd] {
18054
18794
  --cn-color-picker-checker:
18055
18795
  linear-gradient(45deg, var(--color-background-dark) 25%, transparent 25%),
@@ -23194,6 +23934,29 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-75628
23194
23934
  display: block;
23195
23935
  }
23196
23936
 
23937
+ /* A late card: an edge in the error colour, drawn as an inset shadow so the
23938
+ card keeps its size and its rounded corners. The label below carries the
23939
+ meaning; the edge only helps a sighted reader find it. */
23940
+ .cn-board-view__card--overdue[data-v-997a7a5e] {
23941
+ border-color: var(--color-error);
23942
+ box-shadow: inset 3px 0 0 var(--color-error);
23943
+ }
23944
+
23945
+ .cn-board-view__due[data-v-997a7a5e] {
23946
+ display: block;
23947
+ font-size: 0.85em;
23948
+ font-weight: 700;
23949
+ }
23950
+
23951
+ .cn-board-view__due--overdue[data-v-997a7a5e] {
23952
+ color: var(--color-error-text, var(--color-error));
23953
+ }
23954
+
23955
+ .cn-board-view__due--soon[data-v-997a7a5e] {
23956
+ color: var(--color-warning-text, var(--color-main-text));
23957
+ font-weight: 600;
23958
+ }
23959
+
23197
23960
  /*
23198
23961
  * The card's opening control. The cursor and the focus ring live here now,
23199
23962
  * on the thing that actually does something, rather than on the box.
@@ -23429,6 +24192,25 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-75628
23429
24192
  .cn-object-kanban__card--pending[data-v-3523a46f] {
23430
24193
  opacity: 0.6;
23431
24194
  }
24195
+
24196
+ /* A late card. The label carries the meaning; the edge helps a sighted
24197
+ reader find it. An inset shadow, so the card keeps its size. */
24198
+ .cn-object-kanban__card--overdue[data-v-3523a46f] {
24199
+ border-color: var(--color-error);
24200
+ box-shadow: inset 3px 0 0 var(--color-error);
24201
+ }
24202
+ .cn-object-kanban__due[data-v-3523a46f] {
24203
+ display: block;
24204
+ font-size: 0.85em;
24205
+ font-weight: 700;
24206
+ }
24207
+ .cn-object-kanban__due--overdue[data-v-3523a46f] {
24208
+ color: var(--color-error-text, var(--color-error));
24209
+ }
24210
+ .cn-object-kanban__due--soon[data-v-3523a46f] {
24211
+ color: var(--color-warning-text, var(--color-main-text));
24212
+ font-weight: 600;
24213
+ }
23432
24214
  .cn-object-kanban__card-title[data-v-3523a46f] {
23433
24215
  font-weight: 500;
23434
24216
  cursor: pointer;
@@ -27483,6 +28265,21 @@ to {
27483
28265
  line-height: 1;
27484
28266
  }
27485
28267
 
28268
+ /* Inherits the chip's own text colour, so it stays readable on the active
28269
+ (primary) fill as well as on the resting one. The count's text starts with
28270
+ a space: the chip is a flex row, so the space is not drawn, but it keeps a
28271
+ screen reader from reading label and count as one word. */
28272
+ .cn-quick-filter-bar__count[data-v-8e121822] {
28273
+ min-width: 1.5em;
28274
+ padding: 2px 6px;
28275
+ border: 1px solid currentColor;
28276
+ border-radius: var(--border-radius-pill, 10px);
28277
+ font-size: 0.85em;
28278
+ font-weight: 600;
28279
+ line-height: 1;
28280
+ text-align: center;
28281
+ }
28282
+
27486
28283
  /* NcPopover wraps its trigger in a plain `<div class="v-popper">`, which as a
27487
28284
  block would drop the chip onto its own line under the strip. */
27488
28285
  .cn-quick-filter-bar[data-v-8e121822] > .v-popper {
@@ -31475,6 +32272,39 @@ a.cn-integration-card__title[data-v-f7e9bbfa]:hover {
31475
32272
  }
31476
32273
 
31477
32274
 
32275
+ /* The brand block at the top of the navigation. */
32276
+ .cn-app-nav__brand {
32277
+ align-items: center;
32278
+ display: flex;
32279
+ gap: calc(2.5 * var(--default-grid-baseline));
32280
+ min-width: 0;
32281
+ padding: calc(2 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline)) calc(3 * var(--default-grid-baseline));
32282
+ }
32283
+ .cn-app-nav__brand-logo {
32284
+ flex: none;
32285
+ height: 34px;
32286
+ max-width: 50%;
32287
+ object-fit: contain;
32288
+ width: auto;
32289
+ }
32290
+ .cn-app-nav__brand-text {
32291
+ display: flex;
32292
+ flex-direction: column;
32293
+ line-height: 1.15;
32294
+ min-width: 0;
32295
+ }
32296
+ .cn-app-nav__brand-name {
32297
+ color: var(--color-main-text);
32298
+ font-size: 1.2em;
32299
+ font-weight: 700;
32300
+ overflow-wrap: anywhere;
32301
+ }
32302
+ .cn-app-nav__brand-caption {
32303
+ color: var(--color-text-maxcontrast);
32304
+ font-size: 0.85em;
32305
+ overflow-wrap: anywhere;
32306
+ }
32307
+
31478
32308
  /*
31479
32309
  * The legacy `icon-*` classes in Nextcloud render a background-image
31480
32310
  * with a hardcoded dark fill, so they stay grey when an entry becomes
@@ -33325,6 +34155,103 @@ a.cn-integration-card__title[data-v-f7e9bbfa]:hover {
33325
34155
  }
33326
34156
 
33327
34157
 
34158
+ .cn-segmented-control[data-v-7b344b4f] {
34159
+ display: inline-flex;
34160
+ gap: 4px;
34161
+ max-width: 100%;
34162
+ padding: 4px;
34163
+ border-radius: var(--border-radius-container, var(--border-radius-large, 10px));
34164
+ background-color: var(--color-background-dark);
34165
+ overflow-x: auto;
34166
+ }
34167
+ .cn-segmented-control--stretch[data-v-7b344b4f] {
34168
+ display: flex;
34169
+ }
34170
+ .cn-segmented-control--stretch .cn-segmented-control__option[data-v-7b344b4f] {
34171
+ flex: 1 1 0;
34172
+ }
34173
+
34174
+ /* The parent class outscores Nextcloud's server rule that gives every plain
34175
+ `button` a margin and a border. */
34176
+ .cn-segmented-control .cn-segmented-control__option[data-v-7b344b4f] {
34177
+ display: inline-flex;
34178
+ align-items: center;
34179
+ justify-content: center;
34180
+ gap: 8px;
34181
+ box-sizing: border-box;
34182
+ min-height: 36px;
34183
+ margin: 0;
34184
+ padding: 0 16px;
34185
+ border: 1px solid transparent;
34186
+ border-radius: var(--border-radius-element, var(--border-radius-large, 8px));
34187
+ background-color: transparent;
34188
+ /* Full-contrast label on every option: the choice is carried by the
34189
+ raised surface, not by dimming the others. */
34190
+ color: var(--color-main-text);
34191
+ font: inherit;
34192
+ font-weight: 600;
34193
+ white-space: nowrap;
34194
+ cursor: pointer;
34195
+ }
34196
+ .cn-segmented-control .cn-segmented-control__option[data-v-7b344b4f]:hover {
34197
+ background-color: var(--color-background-hover);
34198
+ }
34199
+ .cn-segmented-control .cn-segmented-control__option[data-v-7b344b4f]:focus-visible {
34200
+ outline: 2px solid var(--color-primary-element);
34201
+ outline-offset: 2px;
34202
+ }
34203
+
34204
+ /* The border survives forced-colours mode, which drops background and shadow. */
34205
+ .cn-segmented-control .cn-segmented-control__option--checked[data-v-7b344b4f],
34206
+ .cn-segmented-control .cn-segmented-control__option--checked[data-v-7b344b4f]:hover {
34207
+ border-color: var(--color-border-dark);
34208
+ background-color: var(--color-main-background);
34209
+ box-shadow: 0 1px 2px var(--color-box-shadow);
34210
+ }
34211
+ .cn-segmented-control .cn-segmented-control__option[disabled][data-v-7b344b4f] {
34212
+ cursor: default;
34213
+ opacity: 0.5;
34214
+ }
34215
+ .cn-segmented-control__count[data-v-7b344b4f] {
34216
+ font-weight: 400;
34217
+ }
34218
+
34219
+
34220
+ .cn-brand-stripe[data-v-6fdfa763] {
34221
+ display: flex;
34222
+ flex: none;
34223
+ width: 100%;
34224
+ height: var(--cn-brand-stripe-height, 4px);
34225
+ }
34226
+ .cn-brand-stripe--vertical[data-v-6fdfa763] {
34227
+ flex-direction: column;
34228
+ width: var(--cn-brand-stripe-height, 4px);
34229
+ height: 100%;
34230
+ }
34231
+ .cn-brand-stripe__band[data-v-6fdfa763] {
34232
+ flex-basis: 0;
34233
+ flex-shrink: 1;
34234
+ }
34235
+ .cn-brand-stripe__band--1[data-v-6fdfa763] {
34236
+ flex-grow: var(--cn-brand-stripe-ratio-1, 1);
34237
+ background-color: var(--cn-brand-stripe-color-1, var(--color-primary-element));
34238
+ }
34239
+ .cn-brand-stripe__band--2[data-v-6fdfa763] {
34240
+ flex-grow: var(--cn-brand-stripe-ratio-2, 1);
34241
+ background-color: var(--cn-brand-stripe-color-2, var(--color-primary-element));
34242
+ }
34243
+ .cn-brand-stripe__band--3[data-v-6fdfa763] {
34244
+ flex-grow: var(--cn-brand-stripe-ratio-3, 1);
34245
+ background-color: var(--cn-brand-stripe-color-3, var(--color-primary-element));
34246
+ }
34247
+ @media print {
34248
+ .cn-brand-stripe[data-v-6fdfa763] {
34249
+ print-color-adjust: exact;
34250
+ -webkit-print-color-adjust: exact;
34251
+ }
34252
+ }
34253
+
34254
+
33328
34255
  .cn-ai-agent-picker {
33329
34256
  width: 100%;
33330
34257
  }