@7365admin1/layer-common 3.2.7 → 3.2.8-staging.201

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 (283) hide show
  1. package/assets/css/primitives.css +1113 -0
  2. package/assets/css/screens.css +1097 -0
  3. package/assets/css/shell.css +258 -0
  4. package/assets/css/tokens.css +236 -0
  5. package/components/AcceptDialog.vue +17 -18
  6. package/components/AccessCard/AvailableStats.vue +24 -16
  7. package/components/AccessCardAddForm.vue +42 -42
  8. package/components/AccessCardAssignToUnitForm.vue +13 -21
  9. package/components/AccessCardDeleteDialog.vue +41 -39
  10. package/components/AccessCardDetailsDialog.vue +125 -79
  11. package/components/AccessCardPreviewDialog.vue +58 -84
  12. package/components/AccessCardQrTagging.vue +60 -63
  13. package/components/AccessCardReplaceForm.vue +27 -23
  14. package/components/AccessManagement.vue +86 -85
  15. package/components/AddEqupmentForm.vue +18 -22
  16. package/components/AddPassKeyToVisitor.vue +95 -73
  17. package/components/AppButton.vue +62 -0
  18. package/components/AppCard.vue +20 -0
  19. package/components/AppDateField.vue +49 -0
  20. package/components/AppField.vue +76 -0
  21. package/components/AppKpiTile.vue +65 -0
  22. package/components/AppSegmented.vue +38 -0
  23. package/components/AppSelect.vue +247 -0
  24. package/components/AreaChecklistHistoryLogs.vue +51 -44
  25. package/components/AreaChecklistHistoryMain.vue +14 -7
  26. package/components/AreaFormDialog.vue +71 -59
  27. package/components/AreaMain.vue +73 -107
  28. package/components/AttachmentsViewer.vue +84 -22
  29. package/components/AttendanceCheckInOutDialog.vue +85 -88
  30. package/components/AttendanceDetailsDialog.vue +57 -63
  31. package/components/AttendanceMain.vue +4 -3
  32. package/components/AttendanceMapSearchDialog.vue +42 -44
  33. package/components/AttendanceSettingsDialog.vue +79 -63
  34. package/components/Avatar/Main.vue +54 -2
  35. package/components/BillingMain.vue +26 -30
  36. package/components/BtnUploadFile.vue +53 -11
  37. package/components/BuildingForm.vue +34 -27
  38. package/components/BuildingManagement/buildings.vue +39 -39
  39. package/components/BuildingManagement/units.vue +26 -42
  40. package/components/BuildingUnitFormAdd.vue +20 -23
  41. package/components/BuildingUnitFormEdit.vue +8 -4
  42. package/components/BulletinBoardForm.vue +19 -24
  43. package/components/BulletinBoardManagement.vue +49 -57
  44. package/components/BulletinBoardView.vue +9 -6
  45. package/components/BulletinExpirationChip.vue +13 -4
  46. package/components/Button/Close.vue +2 -2
  47. package/components/CameraForm.vue +21 -22
  48. package/components/CameraMain.vue +50 -49
  49. package/components/Card/DeleteConfirmation.vue +24 -22
  50. package/components/Card/MemberInfoSummary.vue +28 -3
  51. package/components/Card/Toggle.vue +15 -3
  52. package/components/CardToolbar.vue +37 -0
  53. package/components/Carousel.vue +56 -36
  54. package/components/Chat/Bubbles.vue +43 -14
  55. package/components/Chat/Information.vue +49 -32
  56. package/components/Chat/ListCard.vue +38 -9
  57. package/components/Chat/Message.vue +41 -15
  58. package/components/Chat/Navigation.vue +27 -15
  59. package/components/Chat/SkeletonLoader.vue +9 -2
  60. package/components/ChecklistItemRow.vue +25 -1
  61. package/components/CleaningScheduleMain.vue +44 -49
  62. package/components/ClientDetailForm.vue +81 -56
  63. package/components/ClientMain.vue +92 -82
  64. package/components/ConfirmDialog.vue +14 -8
  65. package/components/Container/Standard.vue +9 -7
  66. package/components/CreateSubsciptionPlan.vue +148 -89
  67. package/components/DashboardEmptyState.vue +48 -3
  68. package/components/DashboardMain.vue +924 -676
  69. package/components/DashboardPanel.vue +84 -21
  70. package/components/DeliveryCompany.vue +34 -20
  71. package/components/Dialog/DeleteConfirmation.vue +20 -21
  72. package/components/Dialog/ReplaceAutofillPrompt.vue +19 -26
  73. package/components/Dialog/ReusablePrompt.vue +30 -29
  74. package/components/Dialog/UpdateMoreAction.vue +62 -59
  75. package/components/DocumentForm.vue +14 -21
  76. package/components/DocumentManagement.vue +162 -108
  77. package/components/DocumentViewer.vue +29 -12
  78. package/components/DrawImage.vue +29 -21
  79. package/components/EntryPass/QrTemplatePreview.vue +27 -16
  80. package/components/EntryPassInformation.vue +40 -10
  81. package/components/EntryPassMain.vue +49 -27
  82. package/components/EquipmentItemMain.vue +84 -97
  83. package/components/EquipmentManagementMain.vue +81 -103
  84. package/components/Facility/BookingSetup.vue +43 -52
  85. package/components/Feedback/Form.vue +26 -12
  86. package/components/FeedbackMain.vue +35 -49
  87. package/components/FileInput.vue +75 -58
  88. package/components/FileInputWithList.vue +59 -12
  89. package/components/FormDialog.vue +60 -21
  90. package/components/HidAccessLogDashboard.vue +512 -490
  91. package/components/HidCameraCaptureDialog.vue +216 -0
  92. package/components/HidEnabledGate.vue +67 -9
  93. package/components/HidIntercomManagement.vue +1322 -653
  94. package/components/HidQrCodeConfiguration.vue +1030 -258
  95. package/components/HidReaderForm.vue +142 -59
  96. package/components/HidReaderManagement.vue +211 -323
  97. package/components/HidServiceSettingsPanel.vue +44 -13
  98. package/components/HidUserEnrollment.vue +1185 -412
  99. package/components/HygieneUpdateMoreAction.vue +44 -44
  100. package/components/IncidentReport/Authorities.vue +30 -18
  101. package/components/IncidentReport/IncidentInformation.vue +10 -10
  102. package/components/IncidentReport/IncidentInformationDownload.vue +3 -4
  103. package/components/IncidentReport/affectedEntities.vue +41 -20
  104. package/components/Input/Date.vue +3 -0
  105. package/components/Input/DatePicker.vue +1 -2
  106. package/components/Input/DateTimePicker.vue +1 -1
  107. package/components/Input/File.vue +55 -10
  108. package/components/Input/FileV2.vue +39 -6
  109. package/components/Input/InputPhoneNumberV2.vue +2 -1
  110. package/components/Input/ListGroupSelection.vue +56 -8
  111. package/components/Input/NRICNumber.vue +1 -0
  112. package/components/Input/NewDate.vue +1 -0
  113. package/components/Input/Number.vue +1 -0
  114. package/components/Input/Password.vue +1 -0
  115. package/components/Input/PhoneNumber.vue +21 -1
  116. package/components/Input/VehicleNumber.vue +1 -0
  117. package/components/InputLabel.vue +2 -2
  118. package/components/InvitationClientForm.vue +21 -19
  119. package/components/InvitationForm.vue +15 -21
  120. package/components/InvitationMain.vue +46 -61
  121. package/components/Layout/Header.vue +263 -36
  122. package/components/Layout/NavigationDrawer.vue +300 -30
  123. package/components/ListItem.vue +33 -3
  124. package/components/LocalPagination.vue +27 -3
  125. package/components/ManageChecklistMain.vue +136 -86
  126. package/components/MemberInformation.vue +32 -16
  127. package/components/MemberMain.vue +113 -93
  128. package/components/MyAttendanceMain.vue +3 -5
  129. package/components/NavigationItem.vue +83 -3
  130. package/components/Nfc/NFCPatrolReportMain.vue +47 -33
  131. package/components/Nfc/NFCPatrolRouteForm.vue +18 -20
  132. package/components/Nfc/NFCPatrolRouteMain.vue +116 -103
  133. package/components/Nfc/NFCPatrolSettings.vue +14 -4
  134. package/components/Nfc/NFCTagForm.vue +22 -8
  135. package/components/Nfc/NFCTagMain.vue +41 -43
  136. package/components/Nfc/PatrolReport/DailyReportTab.vue +8 -1
  137. package/components/Nfc/PatrolReport/MonthlyReportTab.vue +8 -1
  138. package/components/Nfc/PatrolReport/MonthlyReportTable.vue +5 -3
  139. package/components/Nfc/PatrolReport/PatrolActivityTable.vue +26 -6
  140. package/components/Nfc/PatrolReport/PatrolReportTab.vue +8 -0
  141. package/components/Nfc/PatrolReport/PatrolRouteSummary.vue +41 -9
  142. package/components/Nfc/PatrolReport/RemarksDialog.vue +39 -9
  143. package/components/Nfc/PatrolReport/ReportEmptyState.vue +29 -9
  144. package/components/Nfc/PatrolReport/ReportFilters.vue +19 -10
  145. package/components/Nfc/PatrolReport/ReportLocationHeader.vue +32 -6
  146. package/components/Nfc/PatrolReport/SummaryReportTable.vue +28 -6
  147. package/components/NotificationSettings.vue +373 -0
  148. package/components/NumberSettingField.vue +9 -2
  149. package/components/OnlineFormConfigurationForm.vue +725 -237
  150. package/components/OnlineFormFill.vue +213 -106
  151. package/components/OnlineFormRenderPreview.vue +25 -30
  152. package/components/OnlineFormsConfiguration.vue +113 -109
  153. package/components/OrgViewDialog.vue +34 -16
  154. package/components/OvernightParkingAvailability.vue +49 -26
  155. package/components/OvernightParkingManagement.vue +78 -18
  156. package/components/PageHeader.vue +43 -0
  157. package/components/PassInformation.vue +109 -53
  158. package/components/PasswordConfirmation.vue +44 -26
  159. package/components/PeopleForm.vue +41 -20
  160. package/components/PhotoUpload.vue +110 -48
  161. package/components/PlaceholderComponent.vue +35 -19
  162. package/components/PlanActionsMenu.vue +12 -2
  163. package/components/PlanStatusBadge.vue +7 -8
  164. package/components/PlateNumberDisplay.vue +9 -6
  165. package/components/QrTemplate/PrintDialog.vue +66 -43
  166. package/components/RolePermissionFormCreate.vue +104 -79
  167. package/components/RolePermissionFormPreviewUpdate.vue +111 -109
  168. package/components/RolePermissionMain.vue +183 -81
  169. package/components/ScanVisitorQRCode.vue +99 -35
  170. package/components/ScheduleAreaMain.vue +34 -59
  171. package/components/ScheduleTaskForm.vue +61 -42
  172. package/components/ScheduleTaskMain.vue +56 -69
  173. package/components/SearchVehicleNumberUser.vue +39 -37
  174. package/components/ServiceProviderFormCreate.vue +29 -20
  175. package/components/ServiceProviderInvitationPrompt.vue +155 -0
  176. package/components/ServiceProviderMain.vue +601 -432
  177. package/components/Signature.vue +40 -34
  178. package/components/SignaturePad.vue +5 -29
  179. package/components/SiteSettings.vue +41 -11
  180. package/components/SiteSettingsWorkOrder.vue +61 -30
  181. package/components/SlideCardGroup.vue +35 -11
  182. package/components/Snackbar.vue +36 -3
  183. package/components/SpecificAttr.vue +18 -8
  184. package/components/StatusChip.vue +156 -0
  185. package/components/StockCard.vue +17 -12
  186. package/components/SubscriptionPlanTable.vue +207 -140
  187. package/components/SwitchContext.vue +201 -9
  188. package/components/TableHygiene.vue +36 -46
  189. package/components/TableList.vue +10 -10
  190. package/components/TableListSecondary.vue +105 -54
  191. package/components/TableMain.vue +251 -78
  192. package/components/TableV3.vue +61 -70
  193. package/components/TiptapEditor.vue +33 -40
  194. package/components/TiptapEditorQr.vue +5 -2
  195. package/components/Tooltip/Info.vue +69 -24
  196. package/components/UnitMain.vue +40 -60
  197. package/components/UnitPersonCard.vue +42 -13
  198. package/components/VehicleAddSelection.vue +48 -32
  199. package/components/VehicleForm.vue +112 -129
  200. package/components/VehicleManagement.vue +26 -12
  201. package/components/VehicleUpdateMoreAction.vue +59 -46
  202. package/components/VisitorDataFromScannedQRCodeForm.vue +90 -65
  203. package/components/VisitorForm.vue +774 -210
  204. package/components/VisitorFormSelection.vue +40 -37
  205. package/components/VisitorManagement.vue +239 -82
  206. package/components/VisitorPassKeyQRScanner.vue +65 -18
  207. package/components/VisitorSearchResultSummary.vue +60 -16
  208. package/components/VisitorSocketPopUp.vue +22 -14
  209. package/components/VisitorsReportPreview.vue +44 -29
  210. package/components/WorkOrder/Create.vue +26 -17
  211. package/components/WorkOrder/ListView.vue +38 -7
  212. package/components/WorkOrder/Main.vue +62 -59
  213. package/composables/useFeedback.ts +3 -3
  214. package/composables/useHidAmico.ts +269 -0
  215. package/composables/useHidNavigation.ts +2 -9
  216. package/composables/useMember.ts +3 -3
  217. package/composables/useNFCPatrolDailyReport.ts +13 -0
  218. package/composables/useNFCPatrolMonthlyReport.ts +22 -56
  219. package/composables/useNFCPatrolReport.ts +13 -0
  220. package/composables/useNotificationPreference.ts +87 -0
  221. package/composables/useOnlineFormPages.ts +2 -0
  222. package/composables/useRole.ts +22 -0
  223. package/composables/useServiceProvider.ts +3 -3
  224. package/composables/useServiceProviderInvitation.ts +145 -0
  225. package/composables/useSipWebPhone.ts +336 -0
  226. package/composables/useSubscriptionPlan.ts +62 -0
  227. package/composables/useThemePreference.ts +63 -0
  228. package/composables/useVisitor.ts +6 -1
  229. package/composables/useWebUsb.ts +127 -37
  230. package/composables/useWorkOrder.ts +17 -3
  231. package/error.vue +30 -6
  232. package/nuxt.config.ts +36 -0
  233. package/package.json +25 -4
  234. package/pages/[org]/[site]/access-mgmt/administrator/index.vue +2 -2
  235. package/pages/[org]/[site]/access-mgmt/{identity-mapping → hid-cards}/index.vue +2 -2
  236. package/pages/[org]/[site]/access-mgmt/intercom/index.vue +1 -1
  237. package/pages/notification-settings.vue +19 -0
  238. package/pages/payment-method-linked.vue +34 -10
  239. package/pages/require-customer.vue +48 -10
  240. package/pages/require-organization-membership.vue +32 -8
  241. package/pages/unauthorized.vue +29 -4
  242. package/plugins/secure-member.client.ts +21 -56
  243. package/plugins/vuetify.ts +69 -2
  244. package/types/nfc-patrol-report.ts +3 -2
  245. package/types/site.d.ts +71 -0
  246. package/types/subscription.ts +18 -11
  247. package/utils/breadcrumb.test.ts +108 -0
  248. package/utils/breadcrumb.ts +82 -0
  249. package/utils/dashboard.test.ts +118 -0
  250. package/utils/dashboard.ts +53 -0
  251. package/utils/data.test.ts +95 -0
  252. package/utils/data.ts +40 -2
  253. package/utils/hid-discover.test.ts +102 -0
  254. package/utils/list-page.test.ts +60 -0
  255. package/utils/list-page.ts +38 -0
  256. package/utils/materialSymbols.ts +363 -0
  257. package/utils/nav-sections.test.ts +190 -0
  258. package/utils/nav-sections.ts +151 -0
  259. package/utils/nfc-patrol-report.test.ts +130 -0
  260. package/utils/nfc-patrol-report.ts +101 -0
  261. package/utils/role.test.ts +69 -0
  262. package/utils/role.ts +10 -0
  263. package/utils/route-name.test.ts +85 -0
  264. package/utils/route-name.ts +24 -0
  265. package/utils/status.test.ts +110 -0
  266. package/utils/status.ts +135 -0
  267. package/utils/table-card.test.ts +84 -0
  268. package/utils/theme-aa-ledger.ts +148 -0
  269. package/utils/theme.test.ts +485 -7
  270. package/utils/theme.ts +295 -110
  271. package/.changeset/README.md +0 -8
  272. package/.changeset/config.json +0 -11
  273. package/.editorconfig +0 -12
  274. package/.github/workflows/main.yml +0 -17
  275. package/.github/workflows/publish-staging.yml +0 -47
  276. package/.github/workflows/publish.yml +0 -39
  277. package/PUBLISHING.md +0 -269
  278. package/components/HidIdentityMapping.vue +0 -975
  279. package/components/ScheduleTaskAreaFormDialog.vue +0 -144
  280. package/components/ScheduleTaskAreaUpdateMoreAction.vue +0 -109
  281. package/components/ScheduleTastTicketMain.vue +0 -182
  282. package/components/TableWithButton.vue +0 -94
  283. package/test/visitor-socket.test.mjs +0 -36
@@ -0,0 +1,156 @@
1
+ <!--
2
+ THE STATUS CHIP.
3
+
4
+ A pill in the tone the design assigns to the status WORD, with the 6px
5
+ leading dot. The word -> tone mapping is `utils/status.ts` and is shared, so
6
+ "Open" is the same green on a work order and on a Daily Occurrence Book, and
7
+ a status the design never named comes out neutral rather than guessed.
8
+
9
+ Colour only. The chip prints the label it is given; it does not decide, map,
10
+ translate or shorten a status.
11
+ -->
12
+ <template>
13
+ <span
14
+ class="status-chip"
15
+ :class="[toneClass, { 'status-chip--plain': !dot && !pill, 'status-chip--pill': pill }]"
16
+ >
17
+ <span v-if="dot" class="status-chip__dot" />
18
+ <!-- The slot is for the chips that already carried an icon next to their
19
+ word - a padlock on "Closed - View Only" - so adopting the design's
20
+ pill does not quietly drop it. -->
21
+ <slot>{{ label ?? status }}</slot>
22
+ <!--
23
+ The remove control. NEW design, approved by the owner on 2026-08-14 - the
24
+ handoff draws no removable chip. It is an affordance ON the existing pill,
25
+ not a second shape, so a removable "KEY-309" and a read-only "Issued" stay
26
+ visibly the same family: same 999px pill, same 4px 10px, same 12px/700,
27
+ same 24px height. A chip that cannot be removed is byte-for-byte unchanged.
28
+ -->
29
+ <button
30
+ v-if="removable"
31
+ type="button"
32
+ class="status-chip__x"
33
+ :aria-label="removeLabel || `Remove ${label ?? status}`"
34
+ @click="emit('remove')"
35
+ >
36
+ <v-icon icon="mdi-close" :size="12" />
37
+ </button>
38
+ </span>
39
+ </template>
40
+
41
+ <script setup lang="ts">
42
+ import { statusToneClass } from "../utils/status";
43
+
44
+ const props = defineProps({
45
+ /** The status word - what decides the colour. */
46
+ status: { type: String, default: "" },
47
+ /** What to PRINT, when that differs from the word being matched on. */
48
+ label: { type: String, default: undefined },
49
+ /** The design's tag chips (pass IDs, counts) carry no leading dot. */
50
+ dot: { type: Boolean, default: true },
51
+ /**
52
+ * The handoff draws TWO dotless chips, and they are not the same shape: the
53
+ * 7px-radius 11px tag on a pass, and the 999px 11.5px pill a role name sits
54
+ * in on the Members screen. `pill` picks the second.
55
+ */
56
+ pill: { type: Boolean, default: false },
57
+ /**
58
+ * For the chips that are not a status WORD at all - a countdown, a rating, a
59
+ * count - where the screen has already worked out the meaning and only needs
60
+ * the design's tone. Given, it wins over the word mapping.
61
+ */
62
+ tone: {
63
+ type: String as PropType<"ok" | "warn" | "err" | "info" | "neutral" | "">,
64
+ default: "",
65
+ },
66
+ /** Draws the × and emits `remove` when it is pressed. */
67
+ removable: { type: Boolean, default: false },
68
+ /**
69
+ * The × 's accessible name. Defaults to `Remove <the printed label>`, which
70
+ * is right for an identifier chip ("Remove KEY-309"); give it explicitly
71
+ * whenever the printed text alone would not tell a screen-reader user what
72
+ * is about to be taken away.
73
+ */
74
+ removeLabel: { type: String, default: "" },
75
+ });
76
+
77
+ const emit = defineEmits<{ (e: "remove"): void }>();
78
+
79
+ const toneClass = computed(() =>
80
+ props.tone ? `tone-${props.tone}` : statusToneClass(props.status)
81
+ );
82
+ </script>
83
+
84
+ <style scoped>
85
+ .status-chip {
86
+ display: inline-flex;
87
+ align-items: center;
88
+ gap: 6px;
89
+ padding: 4px 10px;
90
+ border-radius: var(--r-pill);
91
+ font-family: var(--font-sans);
92
+ font-size: var(--fs-chip-lg);
93
+ font-weight: var(--fw-chip);
94
+ line-height: 1.4;
95
+ white-space: nowrap;
96
+ /* `--tone-bg` is set alongside the colour by the `.tone-*` class - see
97
+ assets/css/tokens.css - so one class carries both halves of the pair the
98
+ contrast was measured on. */
99
+ background: var(--tone-bg);
100
+ }
101
+
102
+ .status-chip--plain {
103
+ border-radius: var(--r-tag);
104
+ font-size: var(--fs-chip);
105
+ }
106
+
107
+ /* The role tag: `padding:3px 10px;border-radius:999px;font-size:11.5px`. */
108
+ .status-chip--pill {
109
+ padding: 3px 10px;
110
+ font-size: var(--fs-chip);
111
+ }
112
+
113
+ /*
114
+ * A 12px glyph needs a 24px target to stay pressable at 360px, but the chip is
115
+ * only 24px tall - so the hit area is INSET into the pill's own padding rather
116
+ * than added to it. The negative margin is what keeps the × from making a
117
+ * removable chip taller than the read-only one beside it.
118
+ */
119
+ .status-chip__x {
120
+ display: inline-flex;
121
+ align-items: center;
122
+ justify-content: center;
123
+ width: 24px;
124
+ height: 24px;
125
+ margin: -6px -6px -6px 0;
126
+ padding: 0;
127
+ border: none;
128
+ border-radius: var(--r-pill);
129
+ background: transparent;
130
+ /* Chips read as labels first and controls second, so the × sits back from
131
+ the word until it is reached for. */
132
+ color: inherit;
133
+ opacity: 0.62;
134
+ cursor: pointer;
135
+ transition: opacity var(--motion) ease, background var(--motion) ease;
136
+ }
137
+
138
+ .status-chip__x:hover,
139
+ .status-chip__x:focus-visible {
140
+ opacity: 1;
141
+ background: rgba(0, 0, 0, 0.06);
142
+ }
143
+
144
+ .v-theme--dark .status-chip__x:hover,
145
+ .v-theme--dark .status-chip__x:focus-visible {
146
+ background: rgba(255, 255, 255, 0.08);
147
+ }
148
+
149
+ .status-chip__dot {
150
+ width: 6px;
151
+ height: 6px;
152
+ border-radius: var(--r-pill);
153
+ background: currentColor;
154
+ flex: 0 0 6px;
155
+ }
156
+ </style>
@@ -5,15 +5,18 @@
5
5
  color="page-background-color fill-height header-row"
6
6
  >
7
7
  <v-col cols="12" sm="12" md="11" lg="12" xl="12">
8
- <v-row no-gutters class="mb-4">
9
- <v-col cols="auto">
10
- <v-btn variant="text" color="primary" class="text-none" @click="back">
11
- <v-icon left>mdi-arrow-left</v-icon>
8
+ <!-- The loose Back link above the card becomes the design's title row -
9
+ the page name on the left, its action right-aligned on the same line.
10
+ `title` was already declared here and never drawn. -->
11
+ <PageHeader :title="title">
12
+ <template #actions>
13
+ <AppButton variant="ghost" icon="mdi-arrow-left" @click="back">
12
14
  Back
13
- </v-btn>
14
- </v-col>
15
- </v-row>
16
- <v-card class="pa-5 position-relative rounded-lg">
15
+ </AppButton>
16
+ </template>
17
+ </PageHeader>
18
+
19
+ <AppCard class="pa-5 position-relative">
17
20
  <!-- Stock Information -->
18
21
  <v-row class="pt-2">
19
22
  <v-col cols="12">
@@ -104,7 +107,7 @@
104
107
  </TableMain>
105
108
  </v-col>
106
109
  </v-row>
107
- </v-card>
110
+ </AppCard>
108
111
  </v-col>
109
112
  </v-row>
110
113
  </template>
@@ -181,9 +184,11 @@ watchEffect(() => {
181
184
  </script>
182
185
 
183
186
  <style scoped>
184
- .text-fontgray {
185
- color: #7e7e7e;
186
- }
187
+ /* The scoped `.text-fontgray { color: #7e7e7e }` that used to sit here is gone.
188
+ It out-specified the layer's tokenised rule in `assets/css/screens.css`, which
189
+ is why these four field labels were the estate's one measured 4.06:1 - the
190
+ same fixed grey in both themes. The surface under them is `AppCard`, which is
191
+ itself tokenised, so the ink can safely follow the theme. */
187
192
 
188
193
  :deep() .v-table .v-table__wrapper > table > thead > tr > th:not(:last-child) {
189
194
  border-right: thin solid rgba(var(--v-border-color), var(--v-border-opacity));