@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
@@ -94,7 +94,7 @@ import HandshakeOutlineIcon from 'vue-material-design-icons/HandshakeOutline.vue
94
94
  import History from 'vue-material-design-icons/History.vue';
95
95
  import ImageOutlineIcon from 'vue-material-design-icons/ImageOutline.vue';
96
96
  import InformationOutline from 'vue-material-design-icons/InformationOutline.vue';
97
- import KeyOutlineIcon from 'vue-material-design-icons/KeyOutline.vue';
97
+ import KeyOutline from 'vue-material-design-icons/KeyOutline.vue';
98
98
  import LayersOutlineIcon from 'vue-material-design-icons/LayersOutline.vue';
99
99
  import LinkVariant from 'vue-material-design-icons/LinkVariant.vue';
100
100
  import LockOutline from 'vue-material-design-icons/LockOutline.vue';
@@ -494,7 +494,7 @@ const SEMANTIC_ICON_COMPONENTS = Object.freeze({
494
494
  History: History,
495
495
  ImageOutline: ImageOutlineIcon,
496
496
  InformationOutline: InformationOutline,
497
- KeyOutline: KeyOutlineIcon,
497
+ KeyOutline: KeyOutline,
498
498
  LayersOutline: LayersOutlineIcon,
499
499
  LinkVariant: LinkVariant,
500
500
  LockOutline: LockOutline,
@@ -1 +1 @@
1
- {"version":3,"file":"semanticIcons.js","sources":["../../../../src/components/CnIcon/semanticIcons.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Conduction B.V.\n * SPDX-License-Identifier: EUPL-1.2\n *\n * semanticIcons — the fleet-wide semantic icon vocabulary (ADR-077).\n *\n * One concept, one icon. A manifest `icon` field holds an MDI PascalCase name;\n * this table is what makes the same concept read the same way in every\n * Conduction app (Store is always StoreOutline, Dashboard is always\n * ViewDashboardOutline). The mapping is a BIJECTION — no concept has two\n * icons and no icon serves two concepts — which is what stops the historical\n * overloading (one glyph standing for 18 unrelated things).\n *\n * Tier A is universal chrome every app has and MUST match. Tier B is the\n * shared domain vocabulary an app SHOULD use when it has the concept.\n *\n * WHY THIS IS A PURE EXPORT AND NOT AN import-time `registerIcons()` CALL:\n * the published dist's `sideEffects` allowlist has previously tree-shaken\n * import-time side effects out of consumer bundles, which fails SILENTLY\n * (nothing renders, no error). So the rendering components import\n * {@link SEMANTIC_ICON_COMPONENTS} and consult it directly — resolution is\n * guaranteed by the component that needs it, with no side-effect ordering to\n * get wrong and nothing for a bundler to drop.\n *\n * Every name below is verified to exist in `vue-material-design-icons` by\n * tests/components/semanticIcons.spec.js — the check that caught invented\n * names like `LedgerOutline` and `FileSignOutline` already live in manifests.\n *\n * Each icon is imported individually (no wildcard / barrel) so the bundle\n * stays tree-shake-friendly.\n *\n * @spec openspec/architecture/adr-077-semantic-icon-vocabulary.md\n */\n\nimport AccountArrowRightOutlineIcon from 'vue-material-design-icons/AccountArrowRightOutline.vue'\nimport AccountBoxOutlineIcon from 'vue-material-design-icons/AccountBoxOutline.vue'\nimport AccountGroupOutlineIcon from 'vue-material-design-icons/AccountGroupOutline.vue'\nimport AccountKeyOutlineIcon from 'vue-material-design-icons/AccountKeyOutline.vue'\nimport AccountMinusOutlineIcon from 'vue-material-design-icons/AccountMinusOutline.vue'\nimport AccountMultipleOutlineIcon from 'vue-material-design-icons/AccountMultipleOutline.vue'\nimport AccountOutlineIcon from 'vue-material-design-icons/AccountOutline.vue'\nimport AccountPlusOutlineIcon from 'vue-material-design-icons/AccountPlusOutline.vue'\nimport AccountSchoolOutlineIcon from 'vue-material-design-icons/AccountSchoolOutline.vue'\nimport AccountSearchOutlineIcon from 'vue-material-design-icons/AccountSearchOutline.vue'\nimport AccountStarOutlineIcon from 'vue-material-design-icons/AccountStarOutline.vue'\nimport AccountSwitchOutlineIcon from 'vue-material-design-icons/AccountSwitchOutline.vue'\nimport AccountTieOutlineIcon from 'vue-material-design-icons/AccountTieOutline.vue'\nimport AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport ApiIcon from 'vue-material-design-icons/Api.vue'\nimport ApplicationOutlineIcon from 'vue-material-design-icons/ApplicationOutline.vue'\nimport BankOutlineIcon from 'vue-material-design-icons/BankOutline.vue'\nimport BankTransferIcon from 'vue-material-design-icons/BankTransfer.vue'\nimport BellOutlineIcon from 'vue-material-design-icons/BellOutline.vue'\nimport BookOpenPageVariantOutlineIcon from 'vue-material-design-icons/BookOpenPageVariantOutline.vue'\nimport BookOpenVariantOutlineIcon from 'vue-material-design-icons/BookOpenVariantOutline.vue'\nimport BookshelfIcon from 'vue-material-design-icons/Bookshelf.vue'\nimport BrainIcon from 'vue-material-design-icons/Brain.vue'\nimport BriefcaseOutlineIcon from 'vue-material-design-icons/BriefcaseOutline.vue'\nimport CalculatorVariantOutlineIcon from 'vue-material-design-icons/CalculatorVariantOutline.vue'\nimport CalendarAccountOutlineIcon from 'vue-material-design-icons/CalendarAccountOutline.vue'\nimport CalendarClockOutlineIcon from 'vue-material-design-icons/CalendarClockOutline.vue'\nimport CalendarOutlineIcon from 'vue-material-design-icons/CalendarOutline.vue'\nimport CalendarRemoveOutlineIcon from 'vue-material-design-icons/CalendarRemoveOutline.vue'\nimport CalendarTextOutlineIcon from 'vue-material-design-icons/CalendarTextOutline.vue'\nimport CalendarWeekendOutlineIcon from 'vue-material-design-icons/CalendarWeekendOutline.vue'\nimport CarOutlineIcon from 'vue-material-design-icons/CarOutline.vue'\nimport CartArrowDownIcon from 'vue-material-design-icons/CartArrowDown.vue'\nimport CartOutlineIcon from 'vue-material-design-icons/CartOutline.vue'\nimport CashSyncIcon from 'vue-material-design-icons/CashSync.vue'\nimport CertificateOutlineIcon from 'vue-material-design-icons/CertificateOutline.vue'\nimport ChartBarIcon from 'vue-material-design-icons/ChartBar.vue'\nimport ChartBoxOutlineIcon from 'vue-material-design-icons/ChartBoxOutline.vue'\nimport ChartLineVariantIcon from 'vue-material-design-icons/ChartLineVariant.vue'\nimport ChartSankeyIcon from 'vue-material-design-icons/ChartSankey.vue'\nimport ChartTimelineVariantIcon from 'vue-material-design-icons/ChartTimelineVariant.vue'\nimport CheckboxMarkedCircleOutlineIcon from 'vue-material-design-icons/CheckboxMarkedCircleOutline.vue'\nimport CheckCircleOutlineIcon from 'vue-material-design-icons/CheckCircleOutline.vue'\nimport CheckDecagramOutlineIcon from 'vue-material-design-icons/CheckDecagramOutline.vue'\nimport ClipboardAccountOutlineIcon from 'vue-material-design-icons/ClipboardAccountOutline.vue'\nimport ClipboardCheckOutlineIcon from 'vue-material-design-icons/ClipboardCheckOutline.vue'\nimport ClipboardListOutlineIcon from 'vue-material-design-icons/ClipboardListOutline.vue'\nimport ClipboardPulseOutlineIcon from 'vue-material-design-icons/ClipboardPulseOutline.vue'\nimport ClipboardTextOutlineIcon from 'vue-material-design-icons/ClipboardTextOutline.vue'\nimport ClockAlertOutlineIcon from 'vue-material-design-icons/ClockAlertOutline.vue'\nimport ClockCheckOutlineIcon from 'vue-material-design-icons/ClockCheckOutline.vue'\nimport ClockOutlineIcon from 'vue-material-design-icons/ClockOutline.vue'\nimport CloseCircleOutlineIcon from 'vue-material-design-icons/CloseCircleOutline.vue'\nimport CloudUploadOutlineIcon from 'vue-material-design-icons/CloudUploadOutline.vue'\nimport CogOutlineIcon from 'vue-material-design-icons/CogOutline.vue'\nimport CommentOutlineIcon from 'vue-material-design-icons/CommentOutline.vue'\nimport CommentQuestionOutlineIcon from 'vue-material-design-icons/CommentQuestionOutline.vue'\nimport ContentCopyIcon from 'vue-material-design-icons/ContentCopy.vue'\nimport ContentSaveIcon from 'vue-material-design-icons/ContentSave.vue'\nimport CreditCardOutlineIcon from 'vue-material-design-icons/CreditCardOutline.vue'\nimport CubeOutlineIcon from 'vue-material-design-icons/CubeOutline.vue'\nimport CurrencyEurIcon from 'vue-material-design-icons/CurrencyEur.vue'\nimport DatabaseArrowRightOutlineIcon from 'vue-material-design-icons/DatabaseArrowRightOutline.vue'\nimport DatabaseExportOutlineIcon from 'vue-material-design-icons/DatabaseExportOutline.vue'\nimport DatabaseImportOutlineIcon from 'vue-material-design-icons/DatabaseImportOutline.vue'\nimport DatabaseOutlineIcon from 'vue-material-design-icons/DatabaseOutline.vue'\nimport DeleteOutlineIcon from 'vue-material-design-icons/DeleteOutline.vue'\nimport DesktopTowerMonitorIcon from 'vue-material-design-icons/DesktopTowerMonitor.vue'\nimport DomainIcon from 'vue-material-design-icons/Domain.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport DownloadIcon from 'vue-material-design-icons/Download.vue'\nimport EmailOutlineIcon from 'vue-material-design-icons/EmailOutline.vue'\nimport EyeOffOutlineIcon from 'vue-material-design-icons/EyeOffOutline.vue'\nimport EyeOutlineIcon from 'vue-material-design-icons/EyeOutline.vue'\nimport FileAlertOutlineIcon from 'vue-material-design-icons/FileAlertOutline.vue'\nimport FileChartOutlineIcon from 'vue-material-design-icons/FileChartOutline.vue'\nimport FileCheckOutlineIcon from 'vue-material-design-icons/FileCheckOutline.vue'\nimport FileDocumentMultipleOutlineIcon from 'vue-material-design-icons/FileDocumentMultipleOutline.vue'\nimport FileDocumentOutlineIcon from 'vue-material-design-icons/FileDocumentOutline.vue'\nimport FileLockOutlineIcon from 'vue-material-design-icons/FileLockOutline.vue'\nimport FileReplaceOutlineIcon from 'vue-material-design-icons/FileReplaceOutline.vue'\nimport FileSignIcon from 'vue-material-design-icons/FileSign.vue'\nimport FileTreeOutlineIcon from 'vue-material-design-icons/FileTreeOutline.vue'\nimport FilterVariantIcon from 'vue-material-design-icons/FilterVariant.vue'\nimport FolderAccountOutlineIcon from 'vue-material-design-icons/FolderAccountOutline.vue'\nimport FolderCogOutlineIcon from 'vue-material-design-icons/FolderCogOutline.vue'\nimport FolderOutlineIcon from 'vue-material-design-icons/FolderOutline.vue'\nimport FormatListChecksIcon from 'vue-material-design-icons/FormatListChecks.vue'\nimport ForumOutlineIcon from 'vue-material-design-icons/ForumOutline.vue'\nimport GaugeIcon from 'vue-material-design-icons/Gauge.vue'\nimport GavelIcon from 'vue-material-design-icons/Gavel.vue'\nimport HandHeartOutlineIcon from 'vue-material-design-icons/HandHeartOutline.vue'\nimport HandshakeOutlineIcon from 'vue-material-design-icons/HandshakeOutline.vue'\nimport HistoryIcon from 'vue-material-design-icons/History.vue'\nimport ImageOutlineIcon from 'vue-material-design-icons/ImageOutline.vue'\nimport InformationOutlineIcon from 'vue-material-design-icons/InformationOutline.vue'\nimport KeyOutlineIcon from 'vue-material-design-icons/KeyOutline.vue'\nimport LayersOutlineIcon from 'vue-material-design-icons/LayersOutline.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport LockOutlineIcon from 'vue-material-design-icons/LockOutline.vue'\nimport MagnifyIcon from 'vue-material-design-icons/Magnify.vue'\nimport MapMarkerOutlineIcon from 'vue-material-design-icons/MapMarkerOutline.vue'\nimport MapMarkerPathIcon from 'vue-material-design-icons/MapMarkerPath.vue'\nimport MapOutlineIcon from 'vue-material-design-icons/MapOutline.vue'\nimport MedalOutlineIcon from 'vue-material-design-icons/MedalOutline.vue'\nimport MessageTextOutlineIcon from 'vue-material-design-icons/MessageTextOutline.vue'\nimport NotebookOutlineIcon from 'vue-material-design-icons/NotebookOutline.vue'\nimport OfficeBuildingOutlineIcon from 'vue-material-design-icons/OfficeBuildingOutline.vue'\nimport OpenInNewIcon from 'vue-material-design-icons/OpenInNew.vue'\nimport PackageVariantClosedIcon from 'vue-material-design-icons/PackageVariantClosed.vue'\nimport PaperclipIcon from 'vue-material-design-icons/Paperclip.vue'\nimport PencilOutlineIcon from 'vue-material-design-icons/PencilOutline.vue'\nimport PercentOutlineIcon from 'vue-material-design-icons/PercentOutline.vue'\nimport PlayCircleOutlineIcon from 'vue-material-design-icons/PlayCircleOutline.vue'\nimport PlayOutlineIcon from 'vue-material-design-icons/PlayOutline.vue'\nimport PlusIcon from 'vue-material-design-icons/Plus.vue'\nimport PrinterOutlineIcon from 'vue-material-design-icons/PrinterOutline.vue'\nimport PulseIcon from 'vue-material-design-icons/Pulse.vue'\nimport PuzzleOutlineIcon from 'vue-material-design-icons/PuzzleOutline.vue'\nimport ReceiptOutlineIcon from 'vue-material-design-icons/ReceiptOutline.vue'\nimport ReceiptTextOutlineIcon from 'vue-material-design-icons/ReceiptTextOutline.vue'\nimport RefreshIcon from 'vue-material-design-icons/Refresh.vue'\nimport RobotOutlineIcon from 'vue-material-design-icons/RobotOutline.vue'\nimport ScaleBalanceIcon from 'vue-material-design-icons/ScaleBalance.vue'\nimport SchoolOutlineIcon from 'vue-material-design-icons/SchoolOutline.vue'\nimport ShareVariantOutlineIcon from 'vue-material-design-icons/ShareVariantOutline.vue'\nimport ShieldAccountOutlineIcon from 'vue-material-design-icons/ShieldAccountOutline.vue'\nimport ShieldAlertOutlineIcon from 'vue-material-design-icons/ShieldAlertOutline.vue'\nimport ShieldCheckOutlineIcon from 'vue-material-design-icons/ShieldCheckOutline.vue'\nimport ShieldCrownOutlineIcon from 'vue-material-design-icons/ShieldCrownOutline.vue'\nimport ShieldKeyOutlineIcon from 'vue-material-design-icons/ShieldKeyOutline.vue'\nimport ShieldLockOutlineIcon from 'vue-material-design-icons/ShieldLockOutline.vue'\nimport ShieldOutlineIcon from 'vue-material-design-icons/ShieldOutline.vue'\nimport SignatureFreehandIcon from 'vue-material-design-icons/SignatureFreehand.vue'\nimport SitemapOutlineIcon from 'vue-material-design-icons/SitemapOutline.vue'\nimport SourceBranchIcon from 'vue-material-design-icons/SourceBranch.vue'\nimport SpeedometerIcon from 'vue-material-design-icons/Speedometer.vue'\nimport StoreOutlineIcon from 'vue-material-design-icons/StoreOutline.vue'\nimport SwapHorizontalIcon from 'vue-material-design-icons/SwapHorizontal.vue'\nimport TableClockIcon from 'vue-material-design-icons/TableClock.vue'\nimport TagOutlineIcon from 'vue-material-design-icons/TagOutline.vue'\nimport TextBoxOutlineIcon from 'vue-material-design-icons/TextBoxOutline.vue'\nimport ToolboxOutlineIcon from 'vue-material-design-icons/ToolboxOutline.vue'\nimport TransitConnectionVariantIcon from 'vue-material-design-icons/TransitConnectionVariant.vue'\nimport TrayFullIcon from 'vue-material-design-icons/TrayFull.vue'\nimport TrendingUpIcon from 'vue-material-design-icons/TrendingUp.vue'\nimport UploadIcon from 'vue-material-design-icons/Upload.vue'\nimport VectorPolylinePlusIcon from 'vue-material-design-icons/VectorPolylinePlus.vue'\nimport ViewColumnOutlineIcon from 'vue-material-design-icons/ViewColumnOutline.vue'\nimport ViewDashboardOutlineIcon from 'vue-material-design-icons/ViewDashboardOutline.vue'\nimport ViewGridOutlineIcon from 'vue-material-design-icons/ViewGridOutline.vue'\nimport WarehouseIcon from 'vue-material-design-icons/Warehouse.vue'\nimport WebhookIcon from 'vue-material-design-icons/Webhook.vue'\n\n/**\n * Tier A — universal chrome. An app that has the concept MUST use this icon.\n *\n * @type {Readonly<Record<string, string>>}\n */\nexport const SEMANTIC_ICONS_TIER_A = Object.freeze({\n\tdashboard: 'ViewDashboardOutline',\n\tdocumentation: 'BookOpenVariantOutline',\n\t'features-roadmap': 'MapMarkerPath',\n\tsettings: 'CogOutline',\n\tadmin: 'ShieldAccountOutline',\n\tsearch: 'Magnify',\n\tstore: 'StoreOutline',\n\ttutorial: 'PlayCircleOutline',\n\tabout: 'InformationOutline',\n\tnotifications: 'BellOutline',\n\tactivity: 'Pulse',\n\t'audit-trail': 'History',\n\t'my-work': 'ClipboardAccountOutline',\n})\n\n/**\n * Tier B — shared domain vocabulary. An app SHOULD use this icon when it has\n * the concept; a genuinely new concept is added here, never invented locally.\n *\n * @type {Readonly<Record<string, string>>}\n */\nexport const SEMANTIC_ICONS_TIER_B = Object.freeze({\n\t// data & records\n\tdata: 'DatabaseOutline',\n\tschema: 'FileTreeOutline',\n\trecord: 'CubeOutline',\n\t'data-quality': 'ClipboardPulseOutline',\n\timport: 'DatabaseImportOutline',\n\texport: 'DatabaseExportOutline',\n\tmigration: 'DatabaseArrowRightOutline',\n\tmapping: 'SwapHorizontal',\n\tlog: 'TextBoxOutline',\n\tjob: 'ClockOutline',\n\t// documents & files\n\tdocument: 'FileDocumentOutline',\n\tdocuments: 'FileDocumentMultipleOutline',\n\tfolder: 'FolderOutline',\n\ttemplate: 'FileReplaceOutline',\n\tcatalogue: 'Bookshelf',\n\tsigning: 'SignatureFreehand',\n\tcontract: 'FileSign',\n\tcorrespondence: 'EmailOutline',\n\tattachment: 'Paperclip',\n\t// cases & process\n\tcase: 'FolderAccountOutline',\n\t'case-type': 'FolderCogOutline',\n\ttask: 'CheckboxMarkedCircleOutline',\n\ttasks: 'FormatListChecks',\n\tworkflow: 'SitemapOutline',\n\tboard: 'ViewColumnOutline',\n\tapproval: 'CheckDecagramOutline',\n\tdecision: 'Gavel',\n\tqueue: 'TrayFull',\n\tdeadline: 'ClockAlertOutline',\n\tobjection: 'FileAlertOutline',\n\tappeal: 'ScaleBalance',\n\t// communication\n\tchat: 'MessageTextOutline',\n\tcomment: 'CommentOutline',\n\tmeeting: 'CalendarAccountOutline',\n\tagenda: 'CalendarTextOutline',\n\tappointment: 'CalendarClockOutline',\n\tcalendar: 'CalendarOutline',\n\tconsultation: 'CommentQuestionOutline',\n\tforum: 'ForumOutline',\n\t// people & organisations\n\tperson: 'AccountOutline',\n\tpeople: 'AccountMultipleOutline',\n\tgroup: 'AccountGroupOutline',\n\trole: 'AccountKeyOutline',\n\torganisation: 'OfficeBuildingOutline',\n\t'organisation-unit': 'Domain',\n\tpartner: 'HandshakeOutline',\n\tclient: 'AccountStarOutline',\n\temployee: 'AccountTieOutline',\n\tlead: 'AccountArrowRightOutline',\n\tprospect: 'AccountSearchOutline',\n\tsubstitution: 'AccountSwitchOutline',\n\t// commerce & finance\n\tsales: 'CartOutline',\n\tpurchasing: 'CartArrowDown',\n\tproduct: 'PackageVariantClosed',\n\tinventory: 'Warehouse',\n\torder: 'ClipboardListOutline',\n\tinvoice: 'ReceiptTextOutline',\n\tpayment: 'CreditCardOutline',\n\tpayroll: 'CashSync',\n\texpense: 'ReceiptOutline',\n\tbank: 'BankOutline',\n\t'bank-transaction': 'BankTransfer',\n\tbookkeeping: 'NotebookOutline',\n\ttax: 'PercentOutline',\n\tbudget: 'CalculatorVariantOutline',\n\tforecast: 'ChartTimelineVariant',\n\trevenue: 'CurrencyEur',\n\tpricing: 'TagOutline',\n\tsubsidy: 'HandHeartOutline',\n\t// reporting & monitoring\n\treport: 'FileChartOutline',\n\treporting: 'ChartBoxOutline',\n\tanalytics: 'ChartLineVariant',\n\tkpi: 'Speedometer',\n\tmonitoring: 'Gauge',\n\tstatistics: 'ChartBar',\n\t'process-mining': 'ChartSankey',\n\t// security & compliance\n\tsecurity: 'ShieldOutline',\n\tcompliance: 'ClipboardCheckOutline',\n\tpolicy: 'ShieldCheckOutline',\n\tvulnerability: 'ShieldAlertOutline',\n\tcertificate: 'CertificateOutline',\n\tvault: 'LockOutline',\n\tkey: 'KeyOutline',\n\tauthorization: 'ShieldKeyOutline',\n\tprivacy: 'ShieldLockOutline',\n\tanonymization: 'EyeOffOutline',\n\tconsent: 'FileCheckOutline',\n\tconfidentiality: 'FileLockOutline',\n\tretention: 'CalendarRemoveOutline',\n\tgovernance: 'ShieldCrownOutline',\n\t// integration & technology\n\tintegration: 'Api',\n\tconnection: 'TransitConnectionVariant',\n\twebhook: 'Webhook',\n\tautomation: 'VectorPolylinePlus',\n\tagent: 'RobotOutline',\n\tai: 'Brain',\n\ttool: 'ToolboxOutline',\n\tapps: 'ViewGridOutline',\n\tmodule: 'PuzzleOutline',\n\tsource: 'SourceBranch',\n\t// location & geo\n\tlocation: 'MapMarkerOutline',\n\tmap: 'MapOutline',\n\t'map-layer': 'LayersOutline',\n\t// learning\n\tcourse: 'BookOpenPageVariantOutline',\n\tlearning: 'SchoolOutline',\n\tcompetency: 'MedalOutline',\n\ttimetable: 'TableClock',\n\tprogress: 'TrendingUp',\n\tportfolio: 'BriefcaseOutline',\n\texam: 'ClipboardTextOutline',\n\tstudent: 'AccountSchoolOutline',\n\t// Publish, Test connection).\n\tview: 'EyeOutline',\n\tcreate: 'Plus',\n\tedit: 'PencilOutline',\n\tdelete: 'DeleteOutline',\n\trun: 'PlayOutline',\n\ttest: 'CheckCircleOutline',\n\tupload: 'Upload',\n\tpublish: 'CloudUploadOutline',\n\tdownload: 'Download',\n\trefresh: 'Refresh',\n\t'open-external': 'OpenInNew',\n\tcopy: 'ContentCopy',\n\tshare: 'ShareVariantOutline',\n\tfilter: 'FilterVariant',\n\tprint: 'PrinterOutline',\n\timage: 'ImageOutline',\n\tlink: 'LinkVariant',\n\tmore: 'DotsHorizontal',\n\tsave: 'ContentSave',\n\tcancel: 'CloseCircleOutline',\n\talert: 'AlertCircleOutline',\n\t// hr\n\tleave: 'CalendarWeekendOutline',\n\thours: 'ClockCheckOutline',\n\tonboarding: 'AccountPlusOutline',\n\toffboarding: 'AccountMinusOutline',\n\tvacancy: 'AccountBoxOutline',\n\tasset: 'DesktopTowerMonitor',\n\tfleet: 'CarOutline',\n})\n\n/**\n * The whole vocabulary — concept slug to canonical MDI name.\n *\n * @type {Readonly<Record<string, string>>}\n */\nexport const SEMANTIC_ICONS = Object.freeze({\n\t...SEMANTIC_ICONS_TIER_A,\n\t...SEMANTIC_ICONS_TIER_B,\n})\n\n/**\n * Which tier a concept belongs to — `'A'` (MUST) or `'B'` (SHOULD). Consumed by\n * hydra's icon-vocabulary gate to decide hard-fail vs warn.\n *\n * @type {Readonly<Record<string, 'A'|'B'>>}\n */\nexport const SEMANTIC_ICON_TIERS = Object.freeze(Object.fromEntries([\n\t...Object.keys(SEMANTIC_ICONS_TIER_A).map((c) => [c, 'A']),\n\t...Object.keys(SEMANTIC_ICONS_TIER_B).map((c) => [c, 'B']),\n]))\n\n/**\n * Canonical MDI name to its Vue component, for every icon in the vocabulary.\n * The rendering components consult this so an app never has to register a\n * vocabulary icon itself.\n *\n * @type {Readonly<Record<string, object>>}\n */\nexport const SEMANTIC_ICON_COMPONENTS = Object.freeze({\n\tAccountArrowRightOutline: AccountArrowRightOutlineIcon,\n\tAccountBoxOutline: AccountBoxOutlineIcon,\n\tAccountGroupOutline: AccountGroupOutlineIcon,\n\tAccountKeyOutline: AccountKeyOutlineIcon,\n\tAccountMinusOutline: AccountMinusOutlineIcon,\n\tAccountMultipleOutline: AccountMultipleOutlineIcon,\n\tAccountOutline: AccountOutlineIcon,\n\tAccountPlusOutline: AccountPlusOutlineIcon,\n\tAccountSchoolOutline: AccountSchoolOutlineIcon,\n\tAccountSearchOutline: AccountSearchOutlineIcon,\n\tAccountStarOutline: AccountStarOutlineIcon,\n\tAccountSwitchOutline: AccountSwitchOutlineIcon,\n\tAccountTieOutline: AccountTieOutlineIcon,\n\tAlertCircleOutline: AlertCircleOutlineIcon,\n\tApi: ApiIcon,\n\tApplicationOutline: ApplicationOutlineIcon,\n\tBankOutline: BankOutlineIcon,\n\tBankTransfer: BankTransferIcon,\n\tBellOutline: BellOutlineIcon,\n\tBookOpenPageVariantOutline: BookOpenPageVariantOutlineIcon,\n\tBookOpenVariantOutline: BookOpenVariantOutlineIcon,\n\tBookshelf: BookshelfIcon,\n\tBrain: BrainIcon,\n\tBriefcaseOutline: BriefcaseOutlineIcon,\n\tCalculatorVariantOutline: CalculatorVariantOutlineIcon,\n\tCalendarAccountOutline: CalendarAccountOutlineIcon,\n\tCalendarClockOutline: CalendarClockOutlineIcon,\n\tCalendarOutline: CalendarOutlineIcon,\n\tCalendarRemoveOutline: CalendarRemoveOutlineIcon,\n\tCalendarTextOutline: CalendarTextOutlineIcon,\n\tCalendarWeekendOutline: CalendarWeekendOutlineIcon,\n\tCarOutline: CarOutlineIcon,\n\tCartArrowDown: CartArrowDownIcon,\n\tCartOutline: CartOutlineIcon,\n\tCashSync: CashSyncIcon,\n\tCertificateOutline: CertificateOutlineIcon,\n\tChartBar: ChartBarIcon,\n\tChartBoxOutline: ChartBoxOutlineIcon,\n\tChartLineVariant: ChartLineVariantIcon,\n\tChartSankey: ChartSankeyIcon,\n\tChartTimelineVariant: ChartTimelineVariantIcon,\n\tCheckCircleOutline: CheckCircleOutlineIcon,\n\tCheckDecagramOutline: CheckDecagramOutlineIcon,\n\tCheckboxMarkedCircleOutline: CheckboxMarkedCircleOutlineIcon,\n\tClipboardAccountOutline: ClipboardAccountOutlineIcon,\n\tClipboardCheckOutline: ClipboardCheckOutlineIcon,\n\tClipboardListOutline: ClipboardListOutlineIcon,\n\tClipboardPulseOutline: ClipboardPulseOutlineIcon,\n\tClipboardTextOutline: ClipboardTextOutlineIcon,\n\tClockAlertOutline: ClockAlertOutlineIcon,\n\tClockCheckOutline: ClockCheckOutlineIcon,\n\tClockOutline: ClockOutlineIcon,\n\tCloseCircleOutline: CloseCircleOutlineIcon,\n\tCloudUploadOutline: CloudUploadOutlineIcon,\n\tCogOutline: CogOutlineIcon,\n\tCommentOutline: CommentOutlineIcon,\n\tCommentQuestionOutline: CommentQuestionOutlineIcon,\n\tContentCopy: ContentCopyIcon,\n\tContentSave: ContentSaveIcon,\n\tCreditCardOutline: CreditCardOutlineIcon,\n\tCubeOutline: CubeOutlineIcon,\n\tCurrencyEur: CurrencyEurIcon,\n\tDatabaseArrowRightOutline: DatabaseArrowRightOutlineIcon,\n\tDatabaseExportOutline: DatabaseExportOutlineIcon,\n\tDatabaseImportOutline: DatabaseImportOutlineIcon,\n\tDatabaseOutline: DatabaseOutlineIcon,\n\tDeleteOutline: DeleteOutlineIcon,\n\tDesktopTowerMonitor: DesktopTowerMonitorIcon,\n\tDomain: DomainIcon,\n\tDotsHorizontal: DotsHorizontalIcon,\n\tDownload: DownloadIcon,\n\tEmailOutline: EmailOutlineIcon,\n\tEyeOffOutline: EyeOffOutlineIcon,\n\tEyeOutline: EyeOutlineIcon,\n\tFileAlertOutline: FileAlertOutlineIcon,\n\tFileChartOutline: FileChartOutlineIcon,\n\tFileCheckOutline: FileCheckOutlineIcon,\n\tFileDocumentMultipleOutline: FileDocumentMultipleOutlineIcon,\n\tFileDocumentOutline: FileDocumentOutlineIcon,\n\tFileLockOutline: FileLockOutlineIcon,\n\tFileReplaceOutline: FileReplaceOutlineIcon,\n\tFileSign: FileSignIcon,\n\tFileTreeOutline: FileTreeOutlineIcon,\n\tFilterVariant: FilterVariantIcon,\n\tFolderAccountOutline: FolderAccountOutlineIcon,\n\tFolderCogOutline: FolderCogOutlineIcon,\n\tFolderOutline: FolderOutlineIcon,\n\tFormatListChecks: FormatListChecksIcon,\n\tForumOutline: ForumOutlineIcon,\n\tGauge: GaugeIcon,\n\tGavel: GavelIcon,\n\tHandHeartOutline: HandHeartOutlineIcon,\n\tHandshakeOutline: HandshakeOutlineIcon,\n\tHistory: HistoryIcon,\n\tImageOutline: ImageOutlineIcon,\n\tInformationOutline: InformationOutlineIcon,\n\tKeyOutline: KeyOutlineIcon,\n\tLayersOutline: LayersOutlineIcon,\n\tLinkVariant: LinkVariantIcon,\n\tLockOutline: LockOutlineIcon,\n\tMagnify: MagnifyIcon,\n\tMapMarkerOutline: MapMarkerOutlineIcon,\n\tMapMarkerPath: MapMarkerPathIcon,\n\tMapOutline: MapOutlineIcon,\n\tMedalOutline: MedalOutlineIcon,\n\tMessageTextOutline: MessageTextOutlineIcon,\n\tNotebookOutline: NotebookOutlineIcon,\n\tOfficeBuildingOutline: OfficeBuildingOutlineIcon,\n\tOpenInNew: OpenInNewIcon,\n\tPackageVariantClosed: PackageVariantClosedIcon,\n\tPaperclip: PaperclipIcon,\n\tPencilOutline: PencilOutlineIcon,\n\tPercentOutline: PercentOutlineIcon,\n\tPlayCircleOutline: PlayCircleOutlineIcon,\n\tPlayOutline: PlayOutlineIcon,\n\tPlus: PlusIcon,\n\tPrinterOutline: PrinterOutlineIcon,\n\tPulse: PulseIcon,\n\tPuzzleOutline: PuzzleOutlineIcon,\n\tReceiptOutline: ReceiptOutlineIcon,\n\tReceiptTextOutline: ReceiptTextOutlineIcon,\n\tRefresh: RefreshIcon,\n\tRobotOutline: RobotOutlineIcon,\n\tScaleBalance: ScaleBalanceIcon,\n\tSchoolOutline: SchoolOutlineIcon,\n\tShareVariantOutline: ShareVariantOutlineIcon,\n\tShieldAccountOutline: ShieldAccountOutlineIcon,\n\tShieldAlertOutline: ShieldAlertOutlineIcon,\n\tShieldCheckOutline: ShieldCheckOutlineIcon,\n\tShieldCrownOutline: ShieldCrownOutlineIcon,\n\tShieldKeyOutline: ShieldKeyOutlineIcon,\n\tShieldLockOutline: ShieldLockOutlineIcon,\n\tShieldOutline: ShieldOutlineIcon,\n\tSignatureFreehand: SignatureFreehandIcon,\n\tSitemapOutline: SitemapOutlineIcon,\n\tSourceBranch: SourceBranchIcon,\n\tSpeedometer: SpeedometerIcon,\n\tStoreOutline: StoreOutlineIcon,\n\tSwapHorizontal: SwapHorizontalIcon,\n\tTableClock: TableClockIcon,\n\tTagOutline: TagOutlineIcon,\n\tTextBoxOutline: TextBoxOutlineIcon,\n\tToolboxOutline: ToolboxOutlineIcon,\n\tTransitConnectionVariant: TransitConnectionVariantIcon,\n\tTrayFull: TrayFullIcon,\n\tTrendingUp: TrendingUpIcon,\n\tUpload: UploadIcon,\n\tVectorPolylinePlus: VectorPolylinePlusIcon,\n\tViewColumnOutline: ViewColumnOutlineIcon,\n\tViewDashboardOutline: ViewDashboardOutlineIcon,\n\tViewGridOutline: ViewGridOutlineIcon,\n\tWarehouse: WarehouseIcon,\n\tWebhook: WebhookIcon,\n})\n\n/**\n * Reverse lookup — the concept a canonical icon name stands for.\n *\n * @param {string} name Canonical MDI icon name.\n * @return {string|null} The concept slug, or null when the name is not in the\n * vocabulary.\n */\nexport function conceptForIcon(name) {\n\tfor (const [concept, icon] of Object.entries(SEMANTIC_ICONS)) {\n\t\tif (icon === name) {\n\t\t\treturn concept\n\t\t}\n\t}\n\treturn null\n}\n\n/**\n * Resolve a vocabulary icon name to its component.\n *\n * @param {string|null|undefined} name Canonical MDI icon name.\n * @return {object|null} The Vue component, or null when not in the vocabulary.\n */\nexport function getSemanticIconComponent(name) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\treturn null\n\t}\n\treturn SEMANTIC_ICON_COMPONENTS[name] ?? null\n}\n"],"names":["AccountGroupOutlineIcon","AccountOutlineIcon","AlertCircleOutlineIcon","BellOutlineIcon","BriefcaseOutlineIcon","CalendarClockOutlineIcon","CalendarOutlineIcon","ChartBarIcon","CheckCircleOutlineIcon","ClipboardCheckOutlineIcon","ClipboardListOutlineIcon","ClockOutlineIcon","CloseCircleOutlineIcon","CogOutlineIcon","CommentOutlineIcon","ContentCopyIcon","ContentSaveIcon","CurrencyEurIcon","DatabaseOutlineIcon","DomainIcon","DotsHorizontalIcon","DownloadIcon","EmailOutlineIcon","EyeOutlineIcon","FileDocumentOutlineIcon","FolderAccountOutlineIcon","FolderOutlineIcon","FormatListChecksIcon","HistoryIcon","InformationOutlineIcon","LinkVariantIcon","LockOutlineIcon","MagnifyIcon","MapMarkerOutlineIcon","MapOutlineIcon","OpenInNewIcon","PackageVariantClosedIcon","PaperclipIcon","PlayCircleOutlineIcon","PlusIcon","PulseIcon","RefreshIcon","ShareVariantOutlineIcon","ShieldAccountOutlineIcon","ShieldKeyOutlineIcon","ShieldOutlineIcon","SitemapOutlineIcon","TagOutlineIcon","UploadIcon","ViewColumnOutlineIcon","ViewDashboardOutlineIcon","ViewGridOutlineIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA0JA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD,CAAC,SAAS,EAAE,sBAAsB;AAClC,CAAC,aAAa,EAAE,wBAAwB;AACxC,CAAC,kBAAkB,EAAE,eAAe;AACpC,CAAC,QAAQ,EAAE,YAAY;AACvB,CAAC,KAAK,EAAE,sBAAsB;AAC9B,CAAC,MAAM,EAAE,SAAS;AAClB,CAAC,KAAK,EAAE,cAAc;AACtB,CAAC,QAAQ,EAAE,mBAAmB;AAC9B,CAAC,KAAK,EAAE,oBAAoB;AAC5B,CAAC,aAAa,EAAE,aAAa;AAC7B,CAAC,QAAQ,EAAE,OAAO;AAClB,CAAC,aAAa,EAAE,SAAS;AACzB,CAAC,SAAS,EAAE,yBAAyB;AACrC,CAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD;AACA,CAAC,IAAI,EAAE,iBAAiB;AACxB,CAAC,MAAM,EAAE,iBAAiB;AAC1B,CAAC,MAAM,EAAE,aAAa;AACtB,CAAC,cAAc,EAAE,uBAAuB;AACxC,CAAC,MAAM,EAAE,uBAAuB;AAChC,CAAC,MAAM,EAAE,uBAAuB;AAChC,CAAC,SAAS,EAAE,2BAA2B;AACvC,CAAC,OAAO,EAAE,gBAAgB;AAC1B,CAAC,GAAG,EAAE,gBAAgB;AACtB,CAAC,GAAG,EAAE,cAAc;AACpB;AACA,CAAC,QAAQ,EAAE,qBAAqB;AAChC,CAAC,SAAS,EAAE,6BAA6B;AACzC,CAAC,MAAM,EAAE,eAAe;AACxB,CAAC,QAAQ,EAAE,oBAAoB;AAC/B,CAAC,SAAS,EAAE,WAAW;AACvB,CAAC,OAAO,EAAE,mBAAmB;AAC7B,CAAC,QAAQ,EAAE,UAAU;AACrB,CAAC,cAAc,EAAE,cAAc;AAC/B,CAAC,UAAU,EAAE,WAAW;AACxB;AACA,CAAC,IAAI,EAAE,sBAAsB;AAC7B,CAAC,WAAW,EAAE,kBAAkB;AAChC,CAAC,IAAI,EAAE,6BAA6B;AACpC,CAAC,KAAK,EAAE,kBAAkB;AAC1B,CAAC,QAAQ,EAAE,gBAAgB;AAC3B,CAAC,KAAK,EAAE,mBAAmB;AAC3B,CAAC,QAAQ,EAAE,sBAAsB;AACjC,CAAC,QAAQ,EAAE,OAAO;AAClB,CAAC,KAAK,EAAE,UAAU;AAClB,CAAC,QAAQ,EAAE,mBAAmB;AAC9B,CAAC,SAAS,EAAE,kBAAkB;AAC9B,CAAC,MAAM,EAAE,cAAc;AACvB;AACA,CAAC,IAAI,EAAE,oBAAoB;AAC3B,CAAC,OAAO,EAAE,gBAAgB;AAC1B,CAAC,OAAO,EAAE,wBAAwB;AAClC,CAAC,MAAM,EAAE,qBAAqB;AAC9B,CAAC,WAAW,EAAE,sBAAsB;AACpC,CAAC,QAAQ,EAAE,iBAAiB;AAC5B,CAAC,YAAY,EAAE,wBAAwB;AACvC,CAAC,KAAK,EAAE,cAAc;AACtB;AACA,CAAC,MAAM,EAAE,gBAAgB;AACzB,CAAC,MAAM,EAAE,wBAAwB;AACjC,CAAC,KAAK,EAAE,qBAAqB;AAC7B,CAAC,IAAI,EAAE,mBAAmB;AAC1B,CAAC,YAAY,EAAE,uBAAuB;AACtC,CAAC,mBAAmB,EAAE,QAAQ;AAC9B,CAAC,OAAO,EAAE,kBAAkB;AAC5B,CAAC,MAAM,EAAE,oBAAoB;AAC7B,CAAC,QAAQ,EAAE,mBAAmB;AAC9B,CAAC,IAAI,EAAE,0BAA0B;AACjC,CAAC,QAAQ,EAAE,sBAAsB;AACjC,CAAC,YAAY,EAAE,sBAAsB;AACrC;AACA,CAAC,KAAK,EAAE,aAAa;AACrB,CAAC,UAAU,EAAE,eAAe;AAC5B,CAAC,OAAO,EAAE,sBAAsB;AAChC,CAAC,SAAS,EAAE,WAAW;AACvB,CAAC,KAAK,EAAE,sBAAsB;AAC9B,CAAC,OAAO,EAAE,oBAAoB;AAC9B,CAAC,OAAO,EAAE,mBAAmB;AAC7B,CAAC,OAAO,EAAE,UAAU;AACpB,CAAC,OAAO,EAAE,gBAAgB;AAC1B,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,kBAAkB,EAAE,cAAc;AACnC,CAAC,WAAW,EAAE,iBAAiB;AAC/B,CAAC,GAAG,EAAE,gBAAgB;AACtB,CAAC,MAAM,EAAE,0BAA0B;AACnC,CAAC,QAAQ,EAAE,sBAAsB;AACjC,CAAC,OAAO,EAAE,aAAa;AACvB,CAAC,OAAO,EAAE,YAAY;AACtB,CAAC,OAAO,EAAE,kBAAkB;AAC5B;AACA,CAAC,MAAM,EAAE,kBAAkB;AAC3B,CAAC,SAAS,EAAE,iBAAiB;AAC7B,CAAC,SAAS,EAAE,kBAAkB;AAC9B,CAAC,GAAG,EAAE,aAAa;AACnB,CAAC,UAAU,EAAE,OAAO;AACpB,CAAC,UAAU,EAAE,UAAU;AACvB,CAAC,gBAAgB,EAAE,aAAa;AAChC;AACA,CAAC,QAAQ,EAAE,eAAe;AAC1B,CAAC,UAAU,EAAE,uBAAuB;AACpC,CAAC,MAAM,EAAE,oBAAoB;AAC7B,CAAC,aAAa,EAAE,oBAAoB;AACpC,CAAC,WAAW,EAAE,oBAAoB;AAClC,CAAC,KAAK,EAAE,aAAa;AACrB,CAAC,GAAG,EAAE,YAAY;AAClB,CAAC,aAAa,EAAE,kBAAkB;AAClC,CAAC,OAAO,EAAE,mBAAmB;AAC7B,CAAC,aAAa,EAAE,eAAe;AAC/B,CAAC,OAAO,EAAE,kBAAkB;AAC5B,CAAC,eAAe,EAAE,iBAAiB;AACnC,CAAC,SAAS,EAAE,uBAAuB;AACnC,CAAC,UAAU,EAAE,oBAAoB;AACjC;AACA,CAAC,WAAW,EAAE,KAAK;AACnB,CAAC,UAAU,EAAE,0BAA0B;AACvC,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,UAAU,EAAE,oBAAoB;AACjC,CAAC,KAAK,EAAE,cAAc;AACtB,CAAC,EAAE,EAAE,OAAO;AACZ,CAAC,IAAI,EAAE,gBAAgB;AACvB,CAAC,IAAI,EAAE,iBAAiB;AACxB,CAAC,MAAM,EAAE,eAAe;AACxB,CAAC,MAAM,EAAE,cAAc;AACvB;AACA,CAAC,QAAQ,EAAE,kBAAkB;AAC7B,CAAC,GAAG,EAAE,YAAY;AAClB,CAAC,WAAW,EAAE,eAAe;AAC7B;AACA,CAAC,MAAM,EAAE,4BAA4B;AACrC,CAAC,QAAQ,EAAE,eAAe;AAC1B,CAAC,UAAU,EAAE,cAAc;AAC3B,CAAC,SAAS,EAAE,YAAY;AACxB,CAAC,QAAQ,EAAE,YAAY;AACvB,CAAC,SAAS,EAAE,kBAAkB;AAC9B,CAAC,IAAI,EAAE,sBAAsB;AAC7B,CAAC,OAAO,EAAE,sBAAsB;AAChC;AACA,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,IAAI,EAAE,eAAe;AACtB,CAAC,MAAM,EAAE,eAAe;AACxB,CAAC,GAAG,EAAE,aAAa;AACnB,CAAC,IAAI,EAAE,oBAAoB;AAC3B,CAAC,MAAM,EAAE,QAAQ;AACjB,CAAC,OAAO,EAAE,oBAAoB;AAC9B,CAAC,QAAQ,EAAE,UAAU;AACrB,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,eAAe,EAAE,WAAW;AAC7B,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,KAAK,EAAE,qBAAqB;AAC7B,CAAC,MAAM,EAAE,eAAe;AACxB,CAAC,KAAK,EAAE,gBAAgB;AACxB,CAAC,KAAK,EAAE,cAAc;AACtB,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,IAAI,EAAE,gBAAgB;AACvB,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,MAAM,EAAE,oBAAoB;AAC7B,CAAC,KAAK,EAAE,oBAAoB;AAC5B;AACA,CAAC,KAAK,EAAE,wBAAwB;AAChC,CAAC,KAAK,EAAE,mBAAmB;AAC3B,CAAC,UAAU,EAAE,oBAAoB;AACjC,CAAC,WAAW,EAAE,qBAAqB;AACnC,CAAC,OAAO,EAAE,mBAAmB;AAC7B,CAAC,KAAK,EAAE,qBAAqB;AAC7B,CAAC,KAAK,EAAE,YAAY;AACpB,CAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AAC8B,MAAM,CAAC,MAAM,CAAC;AAC5C,CAAC,GAAG,qBAAqB;AACzB,CAAC,GAAG,qBAAqB;AACzB,CAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACmC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AACpE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC,CAAC,EAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;AACtD,CAAC,wBAAwB,EAAE,4BAA4B;AACvD,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,mBAAmB,EAAEA,mBAAuB;AAC7C,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,mBAAmB,EAAE,uBAAuB;AAC7C,CAAC,sBAAsB,EAAE,0BAA0B;AACnD,CAAC,cAAc,EAAEC,cAAkB;AACnC,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,oBAAoB,EAAE,wBAAwB;AAC/C,CAAC,oBAAoB,EAAE,wBAAwB;AAC/C,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,oBAAoB,EAAE,wBAAwB;AAC/C,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,kBAAkB,EAAEC,kBAAsB;AAC3C,CAAC,GAAG,EAAE,OAAO;AACb,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,WAAW,EAAE,eAAe;AAC7B,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,WAAW,EAAEC,WAAe;AAC7B,CAAC,0BAA0B,EAAE,8BAA8B;AAC3D,CAAC,sBAAsB,EAAE,0BAA0B;AACnD,CAAC,SAAS,EAAE,aAAa;AACzB,CAAC,KAAK,EAAE,SAAS;AACjB,CAAC,gBAAgB,EAAEC,gBAAoB;AACvC,CAAC,wBAAwB,EAAE,4BAA4B;AACvD,CAAC,sBAAsB,EAAE,0BAA0B;AACnD,CAAC,oBAAoB,EAAEC,oBAAwB;AAC/C,CAAC,eAAe,EAAEC,eAAmB;AACrC,CAAC,qBAAqB,EAAE,yBAAyB;AACjD,CAAC,mBAAmB,EAAE,uBAAuB;AAC7C,CAAC,sBAAsB,EAAE,0BAA0B;AACnD,CAAC,UAAU,EAAE,cAAc;AAC3B,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,WAAW,EAAE,eAAe;AAC7B,CAAC,QAAQ,EAAE,YAAY;AACvB,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,QAAQ,EAAEC,QAAY;AACvB,CAAC,eAAe,EAAE,mBAAmB;AACrC,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,WAAW,EAAE,eAAe;AAC7B,CAAC,oBAAoB,EAAE,wBAAwB;AAC/C,CAAC,kBAAkB,EAAEC,kBAAsB;AAC3C,CAAC,oBAAoB,EAAE,wBAAwB;AAC/C,CAAC,2BAA2B,EAAE,+BAA+B;AAC7D,CAAC,uBAAuB,EAAE,2BAA2B;AACrD,CAAC,qBAAqB,EAAEC,qBAAyB;AACjD,CAAC,oBAAoB,EAAEC,iBAAwB;AAC/C,CAAC,qBAAqB,EAAE,yBAAyB;AACjD,CAAC,oBAAoB,EAAE,wBAAwB;AAC/C,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,YAAY,EAAEC,YAAgB;AAC/B,CAAC,kBAAkB,EAAEC,kBAAsB;AAC3C,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,UAAU,EAAEC,UAAc;AAC3B,CAAC,cAAc,EAAEC,cAAkB;AACnC,CAAC,sBAAsB,EAAE,0BAA0B;AACnD,CAAC,WAAW,EAAEC,WAAe;AAC7B,CAAC,WAAW,EAAEC,WAAe;AAC7B,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,WAAW,EAAE,eAAe;AAC7B,CAAC,WAAW,EAAEC,WAAe;AAC7B,CAAC,yBAAyB,EAAE,6BAA6B;AACzD,CAAC,qBAAqB,EAAE,yBAAyB;AACjD,CAAC,qBAAqB,EAAE,yBAAyB;AACjD,CAAC,eAAe,EAAEC,eAAmB;AACrC,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,mBAAmB,EAAE,uBAAuB;AAC7C,CAAC,MAAM,EAAEC,MAAU;AACnB,CAAC,cAAc,EAAEC,cAAkB;AACnC,CAAC,QAAQ,EAAEC,QAAY;AACvB,CAAC,YAAY,EAAEC,YAAgB;AAC/B,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,UAAU,EAAEC,UAAc;AAC3B,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,2BAA2B,EAAE,+BAA+B;AAC7D,CAAC,mBAAmB,EAAEC,mBAAuB;AAC7C,CAAC,eAAe,EAAE,mBAAmB;AACrC,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,QAAQ,EAAE,YAAY;AACvB,CAAC,eAAe,EAAE,mBAAmB;AACrC,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,oBAAoB,EAAEC,oBAAwB;AAC/C,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,aAAa,EAAEC,aAAiB;AACjC,CAAC,gBAAgB,EAAEC,gBAAoB;AACvC,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,KAAK,EAAE,SAAS;AACjB,CAAC,KAAK,EAAE,SAAS;AACjB,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,gBAAgB,EAAE,oBAAoB;AACvC,CAAC,OAAO,EAAEC,OAAW;AACrB,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,kBAAkB,EAAEC,kBAAsB;AAC3C,CAAC,UAAU,EAAE,cAAc;AAC3B,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,WAAW,EAAEC,WAAe;AAC7B,CAAC,WAAW,EAAEC,WAAe;AAC7B,CAAC,OAAO,EAAEC,OAAW;AACrB,CAAC,gBAAgB,EAAEC,gBAAoB;AACvC,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,UAAU,EAAEC,OAAc;AAC3B,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,eAAe,EAAE,mBAAmB;AACrC,CAAC,qBAAqB,EAAE,yBAAyB;AACjD,CAAC,SAAS,EAAEC,SAAa;AACzB,CAAC,oBAAoB,EAAEC,oBAAwB;AAC/C,CAAC,SAAS,EAAEC,SAAa;AACzB,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,cAAc,EAAE,kBAAkB;AACnC,CAAC,iBAAiB,EAAEC,iBAAqB;AACzC,CAAC,WAAW,EAAE,eAAe;AAC7B,CAAC,IAAI,EAAEC,IAAQ;AACf,CAAC,cAAc,EAAE,kBAAkB;AACnC,CAAC,KAAK,EAAEC,KAAS;AACjB,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,cAAc,EAAE,kBAAkB;AACnC,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,OAAO,EAAEC,OAAW;AACrB,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,aAAa,EAAE,iBAAiB;AACjC,CAAC,mBAAmB,EAAEC,mBAAuB;AAC7C,CAAC,oBAAoB,EAAEC,oBAAwB;AAC/C,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,gBAAgB,EAAEC,gBAAoB;AACvC,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,aAAa,EAAEC,aAAiB;AACjC,CAAC,iBAAiB,EAAE,qBAAqB;AACzC,CAAC,cAAc,EAAEC,cAAkB;AACnC,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,WAAW,EAAE,eAAe;AAC7B,CAAC,YAAY,EAAE,gBAAgB;AAC/B,CAAC,cAAc,EAAE,kBAAkB;AACnC,CAAC,UAAU,EAAE,cAAc;AAC3B,CAAC,UAAU,EAAEC,UAAc;AAC3B,CAAC,cAAc,EAAE,kBAAkB;AACnC,CAAC,cAAc,EAAE,kBAAkB;AACnC,CAAC,wBAAwB,EAAE,4BAA4B;AACvD,CAAC,QAAQ,EAAE,YAAY;AACvB,CAAC,UAAU,EAAE,cAAc;AAC3B,CAAC,MAAM,EAAEC,MAAU;AACnB,CAAC,kBAAkB,EAAE,sBAAsB;AAC3C,CAAC,iBAAiB,EAAEC,iBAAqB;AACzC,CAAC,oBAAoB,EAAEC,oBAAwB;AAC/C,CAAC,eAAe,EAAEC,eAAmB;AACrC,CAAC,SAAS,EAAE,aAAa;AACzB,CAAC,OAAO,EAAE,WAAW;AACrB,CAAC,EAAC;AAiBF;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,IAAI,EAAE;AAC/C,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI;AAC9C;;;;"}
1
+ {"version":3,"file":"semanticIcons.js","sources":["../../../../src/components/CnIcon/semanticIcons.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Conduction B.V.\n * SPDX-License-Identifier: EUPL-1.2\n *\n * semanticIcons — the fleet-wide semantic icon vocabulary (ADR-077).\n *\n * One concept, one icon. A manifest `icon` field holds an MDI PascalCase name;\n * this table is what makes the same concept read the same way in every\n * Conduction app (Store is always StoreOutline, Dashboard is always\n * ViewDashboardOutline). The mapping is a BIJECTION — no concept has two\n * icons and no icon serves two concepts — which is what stops the historical\n * overloading (one glyph standing for 18 unrelated things).\n *\n * Tier A is universal chrome every app has and MUST match. Tier B is the\n * shared domain vocabulary an app SHOULD use when it has the concept.\n *\n * WHY THIS IS A PURE EXPORT AND NOT AN import-time `registerIcons()` CALL:\n * the published dist's `sideEffects` allowlist has previously tree-shaken\n * import-time side effects out of consumer bundles, which fails SILENTLY\n * (nothing renders, no error). So the rendering components import\n * {@link SEMANTIC_ICON_COMPONENTS} and consult it directly — resolution is\n * guaranteed by the component that needs it, with no side-effect ordering to\n * get wrong and nothing for a bundler to drop.\n *\n * Every name below is verified to exist in `vue-material-design-icons` by\n * tests/components/semanticIcons.spec.js — the check that caught invented\n * names like `LedgerOutline` and `FileSignOutline` already live in manifests.\n *\n * Each icon is imported individually (no wildcard / barrel) so the bundle\n * stays tree-shake-friendly.\n *\n * @spec openspec/architecture/adr-077-semantic-icon-vocabulary.md\n */\n\nimport AccountArrowRightOutlineIcon from 'vue-material-design-icons/AccountArrowRightOutline.vue'\nimport AccountBoxOutlineIcon from 'vue-material-design-icons/AccountBoxOutline.vue'\nimport AccountGroupOutlineIcon from 'vue-material-design-icons/AccountGroupOutline.vue'\nimport AccountKeyOutlineIcon from 'vue-material-design-icons/AccountKeyOutline.vue'\nimport AccountMinusOutlineIcon from 'vue-material-design-icons/AccountMinusOutline.vue'\nimport AccountMultipleOutlineIcon from 'vue-material-design-icons/AccountMultipleOutline.vue'\nimport AccountOutlineIcon from 'vue-material-design-icons/AccountOutline.vue'\nimport AccountPlusOutlineIcon from 'vue-material-design-icons/AccountPlusOutline.vue'\nimport AccountSchoolOutlineIcon from 'vue-material-design-icons/AccountSchoolOutline.vue'\nimport AccountSearchOutlineIcon from 'vue-material-design-icons/AccountSearchOutline.vue'\nimport AccountStarOutlineIcon from 'vue-material-design-icons/AccountStarOutline.vue'\nimport AccountSwitchOutlineIcon from 'vue-material-design-icons/AccountSwitchOutline.vue'\nimport AccountTieOutlineIcon from 'vue-material-design-icons/AccountTieOutline.vue'\nimport AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport ApiIcon from 'vue-material-design-icons/Api.vue'\nimport ApplicationOutlineIcon from 'vue-material-design-icons/ApplicationOutline.vue'\nimport BankOutlineIcon from 'vue-material-design-icons/BankOutline.vue'\nimport BankTransferIcon from 'vue-material-design-icons/BankTransfer.vue'\nimport BellOutlineIcon from 'vue-material-design-icons/BellOutline.vue'\nimport BookOpenPageVariantOutlineIcon from 'vue-material-design-icons/BookOpenPageVariantOutline.vue'\nimport BookOpenVariantOutlineIcon from 'vue-material-design-icons/BookOpenVariantOutline.vue'\nimport BookshelfIcon from 'vue-material-design-icons/Bookshelf.vue'\nimport BrainIcon from 'vue-material-design-icons/Brain.vue'\nimport BriefcaseOutlineIcon from 'vue-material-design-icons/BriefcaseOutline.vue'\nimport CalculatorVariantOutlineIcon from 'vue-material-design-icons/CalculatorVariantOutline.vue'\nimport CalendarAccountOutlineIcon from 'vue-material-design-icons/CalendarAccountOutline.vue'\nimport CalendarClockOutlineIcon from 'vue-material-design-icons/CalendarClockOutline.vue'\nimport CalendarOutlineIcon from 'vue-material-design-icons/CalendarOutline.vue'\nimport CalendarRemoveOutlineIcon from 'vue-material-design-icons/CalendarRemoveOutline.vue'\nimport CalendarTextOutlineIcon from 'vue-material-design-icons/CalendarTextOutline.vue'\nimport CalendarWeekendOutlineIcon from 'vue-material-design-icons/CalendarWeekendOutline.vue'\nimport CarOutlineIcon from 'vue-material-design-icons/CarOutline.vue'\nimport CartArrowDownIcon from 'vue-material-design-icons/CartArrowDown.vue'\nimport CartOutlineIcon from 'vue-material-design-icons/CartOutline.vue'\nimport CashSyncIcon from 'vue-material-design-icons/CashSync.vue'\nimport CertificateOutlineIcon from 'vue-material-design-icons/CertificateOutline.vue'\nimport ChartBarIcon from 'vue-material-design-icons/ChartBar.vue'\nimport ChartBoxOutlineIcon from 'vue-material-design-icons/ChartBoxOutline.vue'\nimport ChartLineVariantIcon from 'vue-material-design-icons/ChartLineVariant.vue'\nimport ChartSankeyIcon from 'vue-material-design-icons/ChartSankey.vue'\nimport ChartTimelineVariantIcon from 'vue-material-design-icons/ChartTimelineVariant.vue'\nimport CheckboxMarkedCircleOutlineIcon from 'vue-material-design-icons/CheckboxMarkedCircleOutline.vue'\nimport CheckCircleOutlineIcon from 'vue-material-design-icons/CheckCircleOutline.vue'\nimport CheckDecagramOutlineIcon from 'vue-material-design-icons/CheckDecagramOutline.vue'\nimport ClipboardAccountOutlineIcon from 'vue-material-design-icons/ClipboardAccountOutline.vue'\nimport ClipboardCheckOutlineIcon from 'vue-material-design-icons/ClipboardCheckOutline.vue'\nimport ClipboardListOutlineIcon from 'vue-material-design-icons/ClipboardListOutline.vue'\nimport ClipboardPulseOutlineIcon from 'vue-material-design-icons/ClipboardPulseOutline.vue'\nimport ClipboardTextOutlineIcon from 'vue-material-design-icons/ClipboardTextOutline.vue'\nimport ClockAlertOutlineIcon from 'vue-material-design-icons/ClockAlertOutline.vue'\nimport ClockCheckOutlineIcon from 'vue-material-design-icons/ClockCheckOutline.vue'\nimport ClockOutlineIcon from 'vue-material-design-icons/ClockOutline.vue'\nimport CloseCircleOutlineIcon from 'vue-material-design-icons/CloseCircleOutline.vue'\nimport CloudUploadOutlineIcon from 'vue-material-design-icons/CloudUploadOutline.vue'\nimport CogOutlineIcon from 'vue-material-design-icons/CogOutline.vue'\nimport CommentOutlineIcon from 'vue-material-design-icons/CommentOutline.vue'\nimport CommentQuestionOutlineIcon from 'vue-material-design-icons/CommentQuestionOutline.vue'\nimport ContentCopyIcon from 'vue-material-design-icons/ContentCopy.vue'\nimport ContentSaveIcon from 'vue-material-design-icons/ContentSave.vue'\nimport CreditCardOutlineIcon from 'vue-material-design-icons/CreditCardOutline.vue'\nimport CubeOutlineIcon from 'vue-material-design-icons/CubeOutline.vue'\nimport CurrencyEurIcon from 'vue-material-design-icons/CurrencyEur.vue'\nimport DatabaseArrowRightOutlineIcon from 'vue-material-design-icons/DatabaseArrowRightOutline.vue'\nimport DatabaseExportOutlineIcon from 'vue-material-design-icons/DatabaseExportOutline.vue'\nimport DatabaseImportOutlineIcon from 'vue-material-design-icons/DatabaseImportOutline.vue'\nimport DatabaseOutlineIcon from 'vue-material-design-icons/DatabaseOutline.vue'\nimport DeleteOutlineIcon from 'vue-material-design-icons/DeleteOutline.vue'\nimport DesktopTowerMonitorIcon from 'vue-material-design-icons/DesktopTowerMonitor.vue'\nimport DomainIcon from 'vue-material-design-icons/Domain.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport DownloadIcon from 'vue-material-design-icons/Download.vue'\nimport EmailOutlineIcon from 'vue-material-design-icons/EmailOutline.vue'\nimport EyeOffOutlineIcon from 'vue-material-design-icons/EyeOffOutline.vue'\nimport EyeOutlineIcon from 'vue-material-design-icons/EyeOutline.vue'\nimport FileAlertOutlineIcon from 'vue-material-design-icons/FileAlertOutline.vue'\nimport FileChartOutlineIcon from 'vue-material-design-icons/FileChartOutline.vue'\nimport FileCheckOutlineIcon from 'vue-material-design-icons/FileCheckOutline.vue'\nimport FileDocumentMultipleOutlineIcon from 'vue-material-design-icons/FileDocumentMultipleOutline.vue'\nimport FileDocumentOutlineIcon from 'vue-material-design-icons/FileDocumentOutline.vue'\nimport FileLockOutlineIcon from 'vue-material-design-icons/FileLockOutline.vue'\nimport FileReplaceOutlineIcon from 'vue-material-design-icons/FileReplaceOutline.vue'\nimport FileSignIcon from 'vue-material-design-icons/FileSign.vue'\nimport FileTreeOutlineIcon from 'vue-material-design-icons/FileTreeOutline.vue'\nimport FilterVariantIcon from 'vue-material-design-icons/FilterVariant.vue'\nimport FolderAccountOutlineIcon from 'vue-material-design-icons/FolderAccountOutline.vue'\nimport FolderCogOutlineIcon from 'vue-material-design-icons/FolderCogOutline.vue'\nimport FolderOutlineIcon from 'vue-material-design-icons/FolderOutline.vue'\nimport FormatListChecksIcon from 'vue-material-design-icons/FormatListChecks.vue'\nimport ForumOutlineIcon from 'vue-material-design-icons/ForumOutline.vue'\nimport GaugeIcon from 'vue-material-design-icons/Gauge.vue'\nimport GavelIcon from 'vue-material-design-icons/Gavel.vue'\nimport HandHeartOutlineIcon from 'vue-material-design-icons/HandHeartOutline.vue'\nimport HandshakeOutlineIcon from 'vue-material-design-icons/HandshakeOutline.vue'\nimport HistoryIcon from 'vue-material-design-icons/History.vue'\nimport ImageOutlineIcon from 'vue-material-design-icons/ImageOutline.vue'\nimport InformationOutlineIcon from 'vue-material-design-icons/InformationOutline.vue'\nimport KeyOutlineIcon from 'vue-material-design-icons/KeyOutline.vue'\nimport LayersOutlineIcon from 'vue-material-design-icons/LayersOutline.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport LockOutlineIcon from 'vue-material-design-icons/LockOutline.vue'\nimport MagnifyIcon from 'vue-material-design-icons/Magnify.vue'\nimport MapMarkerOutlineIcon from 'vue-material-design-icons/MapMarkerOutline.vue'\nimport MapMarkerPathIcon from 'vue-material-design-icons/MapMarkerPath.vue'\nimport MapOutlineIcon from 'vue-material-design-icons/MapOutline.vue'\nimport MedalOutlineIcon from 'vue-material-design-icons/MedalOutline.vue'\nimport MessageTextOutlineIcon from 'vue-material-design-icons/MessageTextOutline.vue'\nimport NotebookOutlineIcon from 'vue-material-design-icons/NotebookOutline.vue'\nimport OfficeBuildingOutlineIcon from 'vue-material-design-icons/OfficeBuildingOutline.vue'\nimport OpenInNewIcon from 'vue-material-design-icons/OpenInNew.vue'\nimport PackageVariantClosedIcon from 'vue-material-design-icons/PackageVariantClosed.vue'\nimport PaperclipIcon from 'vue-material-design-icons/Paperclip.vue'\nimport PencilOutlineIcon from 'vue-material-design-icons/PencilOutline.vue'\nimport PercentOutlineIcon from 'vue-material-design-icons/PercentOutline.vue'\nimport PlayCircleOutlineIcon from 'vue-material-design-icons/PlayCircleOutline.vue'\nimport PlayOutlineIcon from 'vue-material-design-icons/PlayOutline.vue'\nimport PlusIcon from 'vue-material-design-icons/Plus.vue'\nimport PrinterOutlineIcon from 'vue-material-design-icons/PrinterOutline.vue'\nimport PulseIcon from 'vue-material-design-icons/Pulse.vue'\nimport PuzzleOutlineIcon from 'vue-material-design-icons/PuzzleOutline.vue'\nimport ReceiptOutlineIcon from 'vue-material-design-icons/ReceiptOutline.vue'\nimport ReceiptTextOutlineIcon from 'vue-material-design-icons/ReceiptTextOutline.vue'\nimport RefreshIcon from 'vue-material-design-icons/Refresh.vue'\nimport RobotOutlineIcon from 'vue-material-design-icons/RobotOutline.vue'\nimport ScaleBalanceIcon from 'vue-material-design-icons/ScaleBalance.vue'\nimport SchoolOutlineIcon from 'vue-material-design-icons/SchoolOutline.vue'\nimport ShareVariantOutlineIcon from 'vue-material-design-icons/ShareVariantOutline.vue'\nimport ShieldAccountOutlineIcon from 'vue-material-design-icons/ShieldAccountOutline.vue'\nimport ShieldAlertOutlineIcon from 'vue-material-design-icons/ShieldAlertOutline.vue'\nimport ShieldCheckOutlineIcon from 'vue-material-design-icons/ShieldCheckOutline.vue'\nimport ShieldCrownOutlineIcon from 'vue-material-design-icons/ShieldCrownOutline.vue'\nimport ShieldKeyOutlineIcon from 'vue-material-design-icons/ShieldKeyOutline.vue'\nimport ShieldLockOutlineIcon from 'vue-material-design-icons/ShieldLockOutline.vue'\nimport ShieldOutlineIcon from 'vue-material-design-icons/ShieldOutline.vue'\nimport SignatureFreehandIcon from 'vue-material-design-icons/SignatureFreehand.vue'\nimport SitemapOutlineIcon from 'vue-material-design-icons/SitemapOutline.vue'\nimport SourceBranchIcon from 'vue-material-design-icons/SourceBranch.vue'\nimport SpeedometerIcon from 'vue-material-design-icons/Speedometer.vue'\nimport StoreOutlineIcon from 'vue-material-design-icons/StoreOutline.vue'\nimport SwapHorizontalIcon from 'vue-material-design-icons/SwapHorizontal.vue'\nimport TableClockIcon from 'vue-material-design-icons/TableClock.vue'\nimport TagOutlineIcon from 'vue-material-design-icons/TagOutline.vue'\nimport TextBoxOutlineIcon from 'vue-material-design-icons/TextBoxOutline.vue'\nimport ToolboxOutlineIcon from 'vue-material-design-icons/ToolboxOutline.vue'\nimport TransitConnectionVariantIcon from 'vue-material-design-icons/TransitConnectionVariant.vue'\nimport TrayFullIcon from 'vue-material-design-icons/TrayFull.vue'\nimport TrendingUpIcon from 'vue-material-design-icons/TrendingUp.vue'\nimport UploadIcon from 'vue-material-design-icons/Upload.vue'\nimport VectorPolylinePlusIcon from 'vue-material-design-icons/VectorPolylinePlus.vue'\nimport ViewColumnOutlineIcon from 'vue-material-design-icons/ViewColumnOutline.vue'\nimport ViewDashboardOutlineIcon from 'vue-material-design-icons/ViewDashboardOutline.vue'\nimport ViewGridOutlineIcon from 'vue-material-design-icons/ViewGridOutline.vue'\nimport WarehouseIcon from 'vue-material-design-icons/Warehouse.vue'\nimport WebhookIcon from 'vue-material-design-icons/Webhook.vue'\n\n/**\n * Tier A — universal chrome. An app that has the concept MUST use this icon.\n *\n * @type {Readonly<Record<string, string>>}\n */\nexport const SEMANTIC_ICONS_TIER_A = Object.freeze({\n\tdashboard: 'ViewDashboardOutline',\n\tdocumentation: 'BookOpenVariantOutline',\n\t'features-roadmap': 'MapMarkerPath',\n\tsettings: 'CogOutline',\n\tadmin: 'ShieldAccountOutline',\n\tsearch: 'Magnify',\n\tstore: 'StoreOutline',\n\ttutorial: 'PlayCircleOutline',\n\tabout: 'InformationOutline',\n\tnotifications: 'BellOutline',\n\tactivity: 'Pulse',\n\t'audit-trail': 'History',\n\t'my-work': 'ClipboardAccountOutline',\n})\n\n/**\n * Tier B — shared domain vocabulary. An app SHOULD use this icon when it has\n * the concept; a genuinely new concept is added here, never invented locally.\n *\n * @type {Readonly<Record<string, string>>}\n */\nexport const SEMANTIC_ICONS_TIER_B = Object.freeze({\n\t// data & records\n\tdata: 'DatabaseOutline',\n\tschema: 'FileTreeOutline',\n\trecord: 'CubeOutline',\n\t'data-quality': 'ClipboardPulseOutline',\n\timport: 'DatabaseImportOutline',\n\texport: 'DatabaseExportOutline',\n\tmigration: 'DatabaseArrowRightOutline',\n\tmapping: 'SwapHorizontal',\n\tlog: 'TextBoxOutline',\n\tjob: 'ClockOutline',\n\t// documents & files\n\tdocument: 'FileDocumentOutline',\n\tdocuments: 'FileDocumentMultipleOutline',\n\tfolder: 'FolderOutline',\n\ttemplate: 'FileReplaceOutline',\n\tcatalogue: 'Bookshelf',\n\tsigning: 'SignatureFreehand',\n\tcontract: 'FileSign',\n\tcorrespondence: 'EmailOutline',\n\tattachment: 'Paperclip',\n\t// cases & process\n\tcase: 'FolderAccountOutline',\n\t'case-type': 'FolderCogOutline',\n\ttask: 'CheckboxMarkedCircleOutline',\n\ttasks: 'FormatListChecks',\n\tworkflow: 'SitemapOutline',\n\tboard: 'ViewColumnOutline',\n\tapproval: 'CheckDecagramOutline',\n\tdecision: 'Gavel',\n\tqueue: 'TrayFull',\n\tdeadline: 'ClockAlertOutline',\n\tobjection: 'FileAlertOutline',\n\tappeal: 'ScaleBalance',\n\t// communication\n\tchat: 'MessageTextOutline',\n\tcomment: 'CommentOutline',\n\tmeeting: 'CalendarAccountOutline',\n\tagenda: 'CalendarTextOutline',\n\tappointment: 'CalendarClockOutline',\n\tcalendar: 'CalendarOutline',\n\tconsultation: 'CommentQuestionOutline',\n\tforum: 'ForumOutline',\n\t// people & organisations\n\tperson: 'AccountOutline',\n\tpeople: 'AccountMultipleOutline',\n\tgroup: 'AccountGroupOutline',\n\trole: 'AccountKeyOutline',\n\torganisation: 'OfficeBuildingOutline',\n\t'organisation-unit': 'Domain',\n\tpartner: 'HandshakeOutline',\n\tclient: 'AccountStarOutline',\n\temployee: 'AccountTieOutline',\n\tlead: 'AccountArrowRightOutline',\n\tprospect: 'AccountSearchOutline',\n\tsubstitution: 'AccountSwitchOutline',\n\t// commerce & finance\n\tsales: 'CartOutline',\n\tpurchasing: 'CartArrowDown',\n\tproduct: 'PackageVariantClosed',\n\tinventory: 'Warehouse',\n\torder: 'ClipboardListOutline',\n\tinvoice: 'ReceiptTextOutline',\n\tpayment: 'CreditCardOutline',\n\tpayroll: 'CashSync',\n\texpense: 'ReceiptOutline',\n\tbank: 'BankOutline',\n\t'bank-transaction': 'BankTransfer',\n\tbookkeeping: 'NotebookOutline',\n\ttax: 'PercentOutline',\n\tbudget: 'CalculatorVariantOutline',\n\tforecast: 'ChartTimelineVariant',\n\trevenue: 'CurrencyEur',\n\tpricing: 'TagOutline',\n\tsubsidy: 'HandHeartOutline',\n\t// reporting & monitoring\n\treport: 'FileChartOutline',\n\treporting: 'ChartBoxOutline',\n\tanalytics: 'ChartLineVariant',\n\tkpi: 'Speedometer',\n\tmonitoring: 'Gauge',\n\tstatistics: 'ChartBar',\n\t'process-mining': 'ChartSankey',\n\t// security & compliance\n\tsecurity: 'ShieldOutline',\n\tcompliance: 'ClipboardCheckOutline',\n\tpolicy: 'ShieldCheckOutline',\n\tvulnerability: 'ShieldAlertOutline',\n\tcertificate: 'CertificateOutline',\n\tvault: 'LockOutline',\n\tkey: 'KeyOutline',\n\tauthorization: 'ShieldKeyOutline',\n\tprivacy: 'ShieldLockOutline',\n\tanonymization: 'EyeOffOutline',\n\tconsent: 'FileCheckOutline',\n\tconfidentiality: 'FileLockOutline',\n\tretention: 'CalendarRemoveOutline',\n\tgovernance: 'ShieldCrownOutline',\n\t// integration & technology\n\tintegration: 'Api',\n\tconnection: 'TransitConnectionVariant',\n\twebhook: 'Webhook',\n\tautomation: 'VectorPolylinePlus',\n\tagent: 'RobotOutline',\n\tai: 'Brain',\n\ttool: 'ToolboxOutline',\n\tapps: 'ViewGridOutline',\n\tmodule: 'PuzzleOutline',\n\tsource: 'SourceBranch',\n\t// location & geo\n\tlocation: 'MapMarkerOutline',\n\tmap: 'MapOutline',\n\t'map-layer': 'LayersOutline',\n\t// learning\n\tcourse: 'BookOpenPageVariantOutline',\n\tlearning: 'SchoolOutline',\n\tcompetency: 'MedalOutline',\n\ttimetable: 'TableClock',\n\tprogress: 'TrendingUp',\n\tportfolio: 'BriefcaseOutline',\n\texam: 'ClipboardTextOutline',\n\tstudent: 'AccountSchoolOutline',\n\t// Publish, Test connection).\n\tview: 'EyeOutline',\n\tcreate: 'Plus',\n\tedit: 'PencilOutline',\n\tdelete: 'DeleteOutline',\n\trun: 'PlayOutline',\n\ttest: 'CheckCircleOutline',\n\tupload: 'Upload',\n\tpublish: 'CloudUploadOutline',\n\tdownload: 'Download',\n\trefresh: 'Refresh',\n\t'open-external': 'OpenInNew',\n\tcopy: 'ContentCopy',\n\tshare: 'ShareVariantOutline',\n\tfilter: 'FilterVariant',\n\tprint: 'PrinterOutline',\n\timage: 'ImageOutline',\n\tlink: 'LinkVariant',\n\tmore: 'DotsHorizontal',\n\tsave: 'ContentSave',\n\tcancel: 'CloseCircleOutline',\n\talert: 'AlertCircleOutline',\n\t// hr\n\tleave: 'CalendarWeekendOutline',\n\thours: 'ClockCheckOutline',\n\tonboarding: 'AccountPlusOutline',\n\toffboarding: 'AccountMinusOutline',\n\tvacancy: 'AccountBoxOutline',\n\tasset: 'DesktopTowerMonitor',\n\tfleet: 'CarOutline',\n})\n\n/**\n * The whole vocabulary — concept slug to canonical MDI name.\n *\n * @type {Readonly<Record<string, string>>}\n */\nexport const SEMANTIC_ICONS = Object.freeze({\n\t...SEMANTIC_ICONS_TIER_A,\n\t...SEMANTIC_ICONS_TIER_B,\n})\n\n/**\n * Which tier a concept belongs to — `'A'` (MUST) or `'B'` (SHOULD). Consumed by\n * hydra's icon-vocabulary gate to decide hard-fail vs warn.\n *\n * @type {Readonly<Record<string, 'A'|'B'>>}\n */\nexport const SEMANTIC_ICON_TIERS = Object.freeze(Object.fromEntries([\n\t...Object.keys(SEMANTIC_ICONS_TIER_A).map((c) => [c, 'A']),\n\t...Object.keys(SEMANTIC_ICONS_TIER_B).map((c) => [c, 'B']),\n]))\n\n/**\n * Canonical MDI name to its Vue component, for every icon in the vocabulary.\n * The rendering components consult this so an app never has to register a\n * vocabulary icon itself.\n *\n * @type {Readonly<Record<string, object>>}\n */\nexport const SEMANTIC_ICON_COMPONENTS = Object.freeze({\n\tAccountArrowRightOutline: AccountArrowRightOutlineIcon,\n\tAccountBoxOutline: AccountBoxOutlineIcon,\n\tAccountGroupOutline: AccountGroupOutlineIcon,\n\tAccountKeyOutline: AccountKeyOutlineIcon,\n\tAccountMinusOutline: AccountMinusOutlineIcon,\n\tAccountMultipleOutline: AccountMultipleOutlineIcon,\n\tAccountOutline: AccountOutlineIcon,\n\tAccountPlusOutline: AccountPlusOutlineIcon,\n\tAccountSchoolOutline: AccountSchoolOutlineIcon,\n\tAccountSearchOutline: AccountSearchOutlineIcon,\n\tAccountStarOutline: AccountStarOutlineIcon,\n\tAccountSwitchOutline: AccountSwitchOutlineIcon,\n\tAccountTieOutline: AccountTieOutlineIcon,\n\tAlertCircleOutline: AlertCircleOutlineIcon,\n\tApi: ApiIcon,\n\tApplicationOutline: ApplicationOutlineIcon,\n\tBankOutline: BankOutlineIcon,\n\tBankTransfer: BankTransferIcon,\n\tBellOutline: BellOutlineIcon,\n\tBookOpenPageVariantOutline: BookOpenPageVariantOutlineIcon,\n\tBookOpenVariantOutline: BookOpenVariantOutlineIcon,\n\tBookshelf: BookshelfIcon,\n\tBrain: BrainIcon,\n\tBriefcaseOutline: BriefcaseOutlineIcon,\n\tCalculatorVariantOutline: CalculatorVariantOutlineIcon,\n\tCalendarAccountOutline: CalendarAccountOutlineIcon,\n\tCalendarClockOutline: CalendarClockOutlineIcon,\n\tCalendarOutline: CalendarOutlineIcon,\n\tCalendarRemoveOutline: CalendarRemoveOutlineIcon,\n\tCalendarTextOutline: CalendarTextOutlineIcon,\n\tCalendarWeekendOutline: CalendarWeekendOutlineIcon,\n\tCarOutline: CarOutlineIcon,\n\tCartArrowDown: CartArrowDownIcon,\n\tCartOutline: CartOutlineIcon,\n\tCashSync: CashSyncIcon,\n\tCertificateOutline: CertificateOutlineIcon,\n\tChartBar: ChartBarIcon,\n\tChartBoxOutline: ChartBoxOutlineIcon,\n\tChartLineVariant: ChartLineVariantIcon,\n\tChartSankey: ChartSankeyIcon,\n\tChartTimelineVariant: ChartTimelineVariantIcon,\n\tCheckCircleOutline: CheckCircleOutlineIcon,\n\tCheckDecagramOutline: CheckDecagramOutlineIcon,\n\tCheckboxMarkedCircleOutline: CheckboxMarkedCircleOutlineIcon,\n\tClipboardAccountOutline: ClipboardAccountOutlineIcon,\n\tClipboardCheckOutline: ClipboardCheckOutlineIcon,\n\tClipboardListOutline: ClipboardListOutlineIcon,\n\tClipboardPulseOutline: ClipboardPulseOutlineIcon,\n\tClipboardTextOutline: ClipboardTextOutlineIcon,\n\tClockAlertOutline: ClockAlertOutlineIcon,\n\tClockCheckOutline: ClockCheckOutlineIcon,\n\tClockOutline: ClockOutlineIcon,\n\tCloseCircleOutline: CloseCircleOutlineIcon,\n\tCloudUploadOutline: CloudUploadOutlineIcon,\n\tCogOutline: CogOutlineIcon,\n\tCommentOutline: CommentOutlineIcon,\n\tCommentQuestionOutline: CommentQuestionOutlineIcon,\n\tContentCopy: ContentCopyIcon,\n\tContentSave: ContentSaveIcon,\n\tCreditCardOutline: CreditCardOutlineIcon,\n\tCubeOutline: CubeOutlineIcon,\n\tCurrencyEur: CurrencyEurIcon,\n\tDatabaseArrowRightOutline: DatabaseArrowRightOutlineIcon,\n\tDatabaseExportOutline: DatabaseExportOutlineIcon,\n\tDatabaseImportOutline: DatabaseImportOutlineIcon,\n\tDatabaseOutline: DatabaseOutlineIcon,\n\tDeleteOutline: DeleteOutlineIcon,\n\tDesktopTowerMonitor: DesktopTowerMonitorIcon,\n\tDomain: DomainIcon,\n\tDotsHorizontal: DotsHorizontalIcon,\n\tDownload: DownloadIcon,\n\tEmailOutline: EmailOutlineIcon,\n\tEyeOffOutline: EyeOffOutlineIcon,\n\tEyeOutline: EyeOutlineIcon,\n\tFileAlertOutline: FileAlertOutlineIcon,\n\tFileChartOutline: FileChartOutlineIcon,\n\tFileCheckOutline: FileCheckOutlineIcon,\n\tFileDocumentMultipleOutline: FileDocumentMultipleOutlineIcon,\n\tFileDocumentOutline: FileDocumentOutlineIcon,\n\tFileLockOutline: FileLockOutlineIcon,\n\tFileReplaceOutline: FileReplaceOutlineIcon,\n\tFileSign: FileSignIcon,\n\tFileTreeOutline: FileTreeOutlineIcon,\n\tFilterVariant: FilterVariantIcon,\n\tFolderAccountOutline: FolderAccountOutlineIcon,\n\tFolderCogOutline: FolderCogOutlineIcon,\n\tFolderOutline: FolderOutlineIcon,\n\tFormatListChecks: FormatListChecksIcon,\n\tForumOutline: ForumOutlineIcon,\n\tGauge: GaugeIcon,\n\tGavel: GavelIcon,\n\tHandHeartOutline: HandHeartOutlineIcon,\n\tHandshakeOutline: HandshakeOutlineIcon,\n\tHistory: HistoryIcon,\n\tImageOutline: ImageOutlineIcon,\n\tInformationOutline: InformationOutlineIcon,\n\tKeyOutline: KeyOutlineIcon,\n\tLayersOutline: LayersOutlineIcon,\n\tLinkVariant: LinkVariantIcon,\n\tLockOutline: LockOutlineIcon,\n\tMagnify: MagnifyIcon,\n\tMapMarkerOutline: MapMarkerOutlineIcon,\n\tMapMarkerPath: MapMarkerPathIcon,\n\tMapOutline: MapOutlineIcon,\n\tMedalOutline: MedalOutlineIcon,\n\tMessageTextOutline: MessageTextOutlineIcon,\n\tNotebookOutline: NotebookOutlineIcon,\n\tOfficeBuildingOutline: OfficeBuildingOutlineIcon,\n\tOpenInNew: OpenInNewIcon,\n\tPackageVariantClosed: PackageVariantClosedIcon,\n\tPaperclip: PaperclipIcon,\n\tPencilOutline: PencilOutlineIcon,\n\tPercentOutline: PercentOutlineIcon,\n\tPlayCircleOutline: PlayCircleOutlineIcon,\n\tPlayOutline: PlayOutlineIcon,\n\tPlus: PlusIcon,\n\tPrinterOutline: PrinterOutlineIcon,\n\tPulse: PulseIcon,\n\tPuzzleOutline: PuzzleOutlineIcon,\n\tReceiptOutline: ReceiptOutlineIcon,\n\tReceiptTextOutline: ReceiptTextOutlineIcon,\n\tRefresh: RefreshIcon,\n\tRobotOutline: RobotOutlineIcon,\n\tScaleBalance: ScaleBalanceIcon,\n\tSchoolOutline: SchoolOutlineIcon,\n\tShareVariantOutline: ShareVariantOutlineIcon,\n\tShieldAccountOutline: ShieldAccountOutlineIcon,\n\tShieldAlertOutline: ShieldAlertOutlineIcon,\n\tShieldCheckOutline: ShieldCheckOutlineIcon,\n\tShieldCrownOutline: ShieldCrownOutlineIcon,\n\tShieldKeyOutline: ShieldKeyOutlineIcon,\n\tShieldLockOutline: ShieldLockOutlineIcon,\n\tShieldOutline: ShieldOutlineIcon,\n\tSignatureFreehand: SignatureFreehandIcon,\n\tSitemapOutline: SitemapOutlineIcon,\n\tSourceBranch: SourceBranchIcon,\n\tSpeedometer: SpeedometerIcon,\n\tStoreOutline: StoreOutlineIcon,\n\tSwapHorizontal: SwapHorizontalIcon,\n\tTableClock: TableClockIcon,\n\tTagOutline: TagOutlineIcon,\n\tTextBoxOutline: TextBoxOutlineIcon,\n\tToolboxOutline: ToolboxOutlineIcon,\n\tTransitConnectionVariant: TransitConnectionVariantIcon,\n\tTrayFull: TrayFullIcon,\n\tTrendingUp: TrendingUpIcon,\n\tUpload: UploadIcon,\n\tVectorPolylinePlus: VectorPolylinePlusIcon,\n\tViewColumnOutline: ViewColumnOutlineIcon,\n\tViewDashboardOutline: ViewDashboardOutlineIcon,\n\tViewGridOutline: ViewGridOutlineIcon,\n\tWarehouse: WarehouseIcon,\n\tWebhook: WebhookIcon,\n})\n\n/**\n * Reverse lookup — the concept a canonical icon name stands for.\n *\n * @param {string} name Canonical MDI icon name.\n * @return {string|null} The concept slug, or null when the name is not in the\n * vocabulary.\n */\nexport function conceptForIcon(name) {\n\tfor (const [concept, icon] of Object.entries(SEMANTIC_ICONS)) {\n\t\tif (icon === name) {\n\t\t\treturn concept\n\t\t}\n\t}\n\treturn null\n}\n\n/**\n * Resolve a vocabulary icon name to its component.\n *\n * @param {string|null|undefined} name Canonical MDI icon name.\n * @return {object|null} The Vue component, or null when not in the vocabulary.\n */\nexport function getSemanticIconComponent(name) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\treturn null\n\t}\n\treturn SEMANTIC_ICON_COMPONENTS[name] ?? null\n}\n"],"names":["AccountGroupOutlineIcon","AccountOutlineIcon","AlertCircleOutlineIcon","BellOutlineIcon","BriefcaseOutlineIcon","CalendarClockOutlineIcon","CalendarOutlineIcon","ChartBarIcon","CheckCircleOutlineIcon","ClipboardCheckOutlineIcon","ClipboardListOutlineIcon","ClockOutlineIcon","CloseCircleOutlineIcon","CogOutlineIcon","CommentOutlineIcon","ContentCopyIcon","ContentSaveIcon","CurrencyEurIcon","DatabaseOutlineIcon","DomainIcon","DotsHorizontalIcon","DownloadIcon","EmailOutlineIcon","EyeOutlineIcon","FileDocumentOutlineIcon","FolderAccountOutlineIcon","FolderOutlineIcon","FormatListChecksIcon","HistoryIcon","InformationOutlineIcon","KeyOutlineIcon","LinkVariantIcon","LockOutlineIcon","MagnifyIcon","MapMarkerOutlineIcon","MapOutlineIcon","OpenInNewIcon","PackageVariantClosedIcon","PaperclipIcon","PlayCircleOutlineIcon","PlusIcon","PulseIcon","RefreshIcon","ShareVariantOutlineIcon","ShieldAccountOutlineIcon","ShieldKeyOutlineIcon","ShieldOutlineIcon","SitemapOutlineIcon","TagOutlineIcon","UploadIcon","ViewColumnOutlineIcon","ViewDashboardOutlineIcon","ViewGridOutlineIcon"],"mappings":"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"}
@@ -467,6 +467,31 @@ var script = {
467
467
  required: true,
468
468
  },
469
469
 
470
+ /**
471
+ * A breadcrumb under the title (manifest `config.breadcrumb`): one
472
+ * crumb `{ label, route?, params?, href?, icon?, separator? }` or a
473
+ * list; the title follows as the current crumb. Drawn as the detail
474
+ * header's breadcrumb row. Null (the default) draws none.
475
+ *
476
+ * @type {object|Array<object>|null}
477
+ * @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
478
+ */
479
+ breadcrumb: {
480
+ type: [Object, Array],
481
+ default: null,
482
+ },
483
+
484
+ /**
485
+ * A note after the breadcrumb and a middle dot (manifest `config.headerMeta`),
486
+ * such as "{total} open": `{total}` and `{shown}` are the list's counts.
487
+ *
488
+ * @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
489
+ */
490
+ headerMeta: {
491
+ type: String,
492
+ default: '',
493
+ },
494
+
470
495
  /** Optional description shown below the title */
471
496
  description: {
472
497
  type: String,
@@ -1090,7 +1115,7 @@ var script = {
1090
1115
  * can open is an ordinary segment; one it cannot (no board columns, no
1091
1116
  * map configured) is drawn disabled, named "<mode>: not available on
1092
1117
  * this list". Fed from `pages[].config.viewSwitch`. Ignored without the
1093
- * board look, and absent the switch is as before.
1118
+ * board look; absent, the board look draws all four.
1094
1119
  *
1095
1120
  * @type {Array<'table' | 'cards' | 'board' | 'map'>}
1096
1121
  * @spec openspec/changes/screens-view-switch-parity/specs/view-switch-board-look/spec.md#requirement-the-manifest-can-draw-segments-the-page-cannot-open
@@ -2413,6 +2438,8 @@ var script = {
2413
2438
  data() {
2414
2439
  return {
2415
2440
  currentViewMode: this.viewMode,
2441
+ /** Whether `?_view=` names a mode the page did not offer yet, to open once it does. */
2442
+ routeViewPending: false,
2416
2443
  /** The column field the reader picked in the board's column switch; '' = the default. */
2417
2444
  boardColumnFieldChoice: '',
2418
2445
  /** The rows a reference column field is built from, by field. */
@@ -2976,11 +3003,14 @@ var script = {
2976
3003
  * @spec openspec/changes/screens-view-switch-parity/specs/view-switch-board-look/spec.md#requirement-the-manifest-can-draw-segments-the-page-cannot-open
2977
3004
  */
2978
3005
  viewSwitchDisabledModes() {
2979
- if (!this.isBoardLook || !Array.isArray(this.viewSwitch)) {
3006
+ if (!this.isBoardLook) {
2980
3007
  return []
2981
3008
  }
3009
+ // The index boards draw all four segments, so the board look does
3010
+ // too unless the manifest names its own list.
3011
+ const listed = Array.isArray(this.viewSwitch) ? this.viewSwitch : ['table', 'cards', 'board', 'map'];
2982
3012
  const offered = [...this.effectiveToggleModes, ...(this.showMapSegment ? ['map'] : [])];
2983
- return this.viewSwitch.filter((mode) => ['table', 'cards', 'board', 'map'].includes(mode) && !offered.includes(mode))
3013
+ return listed.filter((mode) => ['table', 'cards', 'board', 'map'].includes(mode) && !offered.includes(mode))
2984
3014
  },
2985
3015
 
2986
3016
  /**
@@ -3018,6 +3048,17 @@ var script = {
3018
3048
  })
3019
3049
  },
3020
3050
 
3051
+ /**
3052
+ * The modes `?_view=` can open: the toggle's modes plus the map when
3053
+ * the page offers it.
3054
+ *
3055
+ * @return {Array<string>} The modes.
3056
+ * @spec openspec/changes/screens-index-board-gaps/specs/index-list-board-look/spec.md#requirement-the-address-opens-a-view-mode-that-arrives-later
3057
+ */
3058
+ routeViewModes() {
3059
+ return [...this.effectiveToggleModes, ...(this.showMapSegment ? ['map'] : [])]
3060
+ },
3061
+
3021
3062
  /**
3022
3063
  * The column fields the board offers (`board.columnFields`), for the
3023
3064
  * column switch (screens-board-reference-columns).
@@ -4238,6 +4279,21 @@ var script = {
4238
4279
  return this.isSelfFetchMode ? this.list.pagination.value : this.pagination
4239
4280
  },
4240
4281
 
4282
+ /**
4283
+ * Whether the table marks unread rows. The boards draw every row alike,
4284
+ * so under the board look only a page that offers the Unread lens
4285
+ * (`personalLenses`) marks them; the Nextcloud look always does.
4286
+ *
4287
+ * @spec openspec/changes/screens-index-board-gaps/specs/index-list-board-look/spec.md#requirement-unread-rows-are-marked-only-where-the-reader-asked-for-them
4288
+ * @return {boolean} True when unread rows read in bold with the dot.
4289
+ */
4290
+ showUnreadRows() {
4291
+ if (!this.isBoardLook) {
4292
+ return true
4293
+ }
4294
+ return Array.isArray(this.personalLenses) && this.personalLenses.includes('unread')
4295
+ },
4296
+
4241
4297
  /** Resolved schema OBJECT (for column generation / icons / labels). */
4242
4298
  /**
4243
4299
  * Whether the table shows its header filters. A self-fetching page
@@ -4860,8 +4916,9 @@ var script = {
4860
4916
  }
4861
4917
  // The board's header: Export reads "Download" with its icon and
4862
4918
  // the Actions menu reads "Actions", without the manifest saying so.
4863
- if (this.isBoardLook && label === '' && button.action === 'export') {
4864
- label = translate('nextcloud-vue', 'Download');
4919
+ // A labelled Export keeps the icon too, unless it names its own.
4920
+ if (this.isBoardLook && button.action === 'export') {
4921
+ label = label || translate('nextcloud-vue', 'Download');
4865
4922
  icon = icon || 'Download';
4866
4923
  }
4867
4924
  if (label === '' && button.action === 'actions-menu') {
@@ -5144,6 +5201,22 @@ var script = {
5144
5201
  * @spec openspec/changes/screens-table-footer-and-system-dates-parity/specs/index-list-board-look/spec.md#requirement-the-count-reads-in-the-users-language
5145
5202
  * @return {string}
5146
5203
  */
5204
+ /**
5205
+ * The header meta note with the list's counts filled in.
5206
+ *
5207
+ * @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
5208
+ * @return {string}
5209
+ */
5210
+ headerMetaText() {
5211
+ if (!this.headerMeta) {
5212
+ return ''
5213
+ }
5214
+ const total = this.effectivePagination?.total;
5215
+ return this.cnTranslate(this.headerMeta)
5216
+ .replace('{shown}', String(this.effectiveObjects.length))
5217
+ .replace('{total}', typeof total === 'number' ? String(total) : '')
5218
+ },
5219
+
5147
5220
  headerDescription() {
5148
5221
  const total = this.effectivePagination?.total;
5149
5222
  // Board look: the count line is a template over the rows on this page
@@ -5334,6 +5407,12 @@ var script = {
5334
5407
  this.applyViewModeFromRoute();
5335
5408
  },
5336
5409
 
5410
+ routeViewModes() {
5411
+ if (this.routeViewPending) {
5412
+ this.applyViewModeFromRoute();
5413
+ }
5414
+ },
5415
+
5337
5416
  boardFetchKey: {
5338
5417
  immediate: true,
5339
5418
  handler(key) {
@@ -5766,6 +5845,10 @@ var script = {
5766
5845
  */
5767
5846
  async loadFilterCounts() {
5768
5847
  const requestKey = this.countRequestKey;
5848
+ if (this.isNamedSource) {
5849
+ await this.loadNamedSourceCounts(requestKey);
5850
+ return
5851
+ }
5769
5852
  const schema = this.exportSchemaSlug;
5770
5853
  if (requestKey === '' || !this.register || !schema) {
5771
5854
  this.tabCounts = null;
@@ -5797,6 +5880,46 @@ var script = {
5797
5880
  this.savedViewCounts = viewCounts;
5798
5881
  },
5799
5882
 
5883
+ /**
5884
+ * The quick-filter counts of a named source (`entitySource`): each tab
5885
+ * that asks is counted by the source's own `count(config)`, with the
5886
+ * tab's filter over `sourceConfig`. A source without `count` shows
5887
+ * none; a failed count leaves that tab without a number.
5888
+ *
5889
+ * @param {string} requestKey The `countRequestKey` this load answers.
5890
+ * @return {Promise<void>}
5891
+ * @spec openspec/changes/screens-index-board-gaps/specs/index-list-board-look/spec.md#requirement-a-named-source-counts-its-quick-filters
5892
+ */
5893
+ async loadNamedSourceCounts(requestKey) {
5894
+ const count = this.namedSource ? this.namedSource.count : null;
5895
+ if (requestKey === '' || typeof count !== 'function') {
5896
+ this.tabCounts = null;
5897
+ this.savedViewCounts = null;
5898
+ return
5899
+ }
5900
+ const params = (this.$route && this.$route.params) || {};
5901
+ const ctx = typeof this.selfFetchTokenCtx === 'function' ? this.selfFetchTokenCtx() : {};
5902
+ const tabCounts = {};
5903
+ await Promise.all(this.countEntries
5904
+ .filter((entry) => entry.key.startsWith('tab:'))
5905
+ .map(async (entry) => {
5906
+ const config = resolveFilterMap({ ...(this.sourceConfig || {}), ...(entry.filter || {}) }, params, ctx);
5907
+ try {
5908
+ const total = await count(config);
5909
+ if (Number.isFinite(total)) {
5910
+ tabCounts[Number(entry.key.slice(4))] = total;
5911
+ }
5912
+ } catch {
5913
+ // No number for this tab.
5914
+ }
5915
+ }));
5916
+ if (requestKey !== this.countRequestKey) {
5917
+ return
5918
+ }
5919
+ this.tabCounts = tabCounts;
5920
+ this.savedViewCounts = null;
5921
+ },
5922
+
5800
5923
  // ── Split view (case-page-and-list-as-a-place) ──────────────────
5801
5924
 
5802
5925
  /**
@@ -8061,6 +8184,7 @@ var script = {
8061
8184
  * @param {string} mode 'table' or 'cards'
8062
8185
  */
8063
8186
  onViewModeChange(mode) {
8187
+ this.routeViewPending = false;
8064
8188
  this.currentViewMode = mode;
8065
8189
  this.$emit('view-mode-change', mode);
8066
8190
  },
@@ -8070,16 +8194,26 @@ var script = {
8070
8194
  * offers it. The key starts with `_`, like `_search` and `_page`, so it
8071
8195
  * is never read as a list filter. A menu entry's `query` can so open a
8072
8196
  * list as its board, on the one page that lists the schema
8073
- * (screens-board-reference-columns).
8197
+ * (screens-board-reference-columns). A mode the page offers only later
8198
+ * (the map, once rows with a geometry are in) opens when it arrives,
8199
+ * unless the reader picked a view first.
8074
8200
  *
8075
8201
  * @return {void}
8076
8202
  * @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-the-address-can-open-a-list-in-a-view-mode
8203
+ * @spec openspec/changes/screens-index-board-gaps/specs/index-list-board-look/spec.md#requirement-the-address-opens-a-view-mode-that-arrives-later
8077
8204
  */
8078
8205
  applyViewModeFromRoute() {
8079
8206
  const wanted = this.$route?.query?._view;
8080
- if (typeof wanted === 'string' && wanted !== this.currentViewMode && this.effectiveToggleModes.includes(wanted)) {
8207
+ if (typeof wanted !== 'string' || wanted === '' || wanted === this.currentViewMode) {
8208
+ this.routeViewPending = false;
8209
+ return
8210
+ }
8211
+ if (this.routeViewModes.includes(wanted)) {
8081
8212
  this.currentViewMode = wanted;
8213
+ this.routeViewPending = false;
8214
+ return
8082
8215
  }
8216
+ this.routeViewPending = true;
8083
8217
  },
8084
8218
 
8085
8219
  /**