@7365admin1/layer-common 4.136.0 → 4.137.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @iservice365/layer-common
2
2
 
3
+ ## 4.137.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 5e44e4e: Schedule screens explain themselves (How it works panels, worked example, status meanings, plain row sentences, Extend or repeat, link to the day's checklist, staff preview) and readable text sizes across every screen (body/table 15px, secondary at least 13px).
8
+
3
9
  ## 4.136.0
4
10
 
5
11
  ### Minor Changes
@@ -3371,11 +3377,11 @@ Monthly report: a month that had patrols opens the list of that month's patrol r
3371
3377
  `utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
3372
3378
  own rule from two endpoints the console already calls, unprojected:
3373
3379
 
3374
- GET /api/members/user/:user/app/admin the Seven365 staff membership
3375
- GET /api/roles/id/:role that membership's role document
3380
+ GET /api/members/user/:user/app/admin the Seven365 staff membership
3381
+ GET /api/roles/id/:role that membership's role document
3376
3382
 
3377
- owner = member.type === "admin" && role.type === "admin" && role.default === true
3378
- staff = member.type === "admin" && role.type === "admin"
3383
+ owner = member.type === "admin" && role.type === "admin" && role.default === true
3384
+ staff = member.type === "admin" && role.type === "admin"
3379
3385
 
3380
3386
  `role.default` is the marker because it is the only property of a platform
3381
3387
  staff role no API caller can set - `role.controller.ts` validates create and
@@ -195,7 +195,7 @@
195
195
  align-items: center;
196
196
  gap: 5px;
197
197
  margin-top: 4px;
198
- font-size: 12.5px;
198
+ font-size: 13.5px;
199
199
  font-weight: 600;
200
200
  color: var(--muted);
201
201
  }
@@ -268,7 +268,7 @@
268
268
  }
269
269
 
270
270
  .app-toolbar__count {
271
- font-size: 12.5px;
271
+ font-size: 13.5px;
272
272
  font-weight: 600;
273
273
  color: var(--muted);
274
274
  font-variant-numeric: tabular-nums;
@@ -336,7 +336,7 @@
336
336
  align-items: center;
337
337
  padding: var(--cellpad) var(--cellpad-x);
338
338
  border-top: 1px solid var(--border);
339
- font-size: 13px;
339
+ font-size: 14px;
340
340
  font-weight: 600;
341
341
  color: var(--text);
342
342
  }
@@ -371,7 +371,7 @@
371
371
  gap: 8px;
372
372
  padding: 52px var(--cellpad-x);
373
373
  border-top: 1px solid var(--border);
374
- font-size: 13px;
374
+ font-size: 14px;
375
375
  font-weight: 600;
376
376
  color: var(--muted);
377
377
  text-align: center;
@@ -605,7 +605,7 @@ button.app-btn--err {
605
605
  }
606
606
 
607
607
  .app-field__label {
608
- font-size: 12px;
608
+ font-size: 13px;
609
609
  font-weight: 600;
610
610
  color: var(--muted);
611
611
  white-space: nowrap;
@@ -928,7 +928,7 @@ select option {
928
928
  background: transparent;
929
929
  color: var(--muted);
930
930
  font-family: inherit;
931
- font-size: 12.5px;
931
+ font-size: 13.5px;
932
932
  font-weight: 700;
933
933
  line-height: 1.2;
934
934
  white-space: nowrap;
@@ -1055,7 +1055,7 @@ select option {
1055
1055
  padding-inline-start: 12px;
1056
1056
  color: var(--text2);
1057
1057
  font-family: var(--font-sans);
1058
- font-size: 13.5px;
1058
+ font-size: 14.5px;
1059
1059
  font-weight: 700;
1060
1060
  opacity: 1;
1061
1061
  }
@@ -1136,7 +1136,7 @@ select option {
1136
1136
  align-items: center;
1137
1137
  padding: 3px 8px;
1138
1138
  border-radius: 999px;
1139
- font-size: 11.5px;
1139
+ font-size: 13px;
1140
1140
  font-weight: 800;
1141
1141
  line-height: 1.2;
1142
1142
  background: var(--ok-bg);
@@ -1150,7 +1150,7 @@ select option {
1150
1150
 
1151
1151
  .app-kpi__sub {
1152
1152
  margin-top: 6px;
1153
- font-size: 12.5px;
1153
+ font-size: 13.5px;
1154
1154
  font-weight: 600;
1155
1155
  color: var(--muted);
1156
1156
  }
@@ -1208,7 +1208,7 @@ select option {
1208
1208
 
1209
1209
  .v-data-table__td-title {
1210
1210
  color: var(--muted);
1211
- font-size: 12px;
1211
+ font-size: 13px;
1212
1212
  }
1213
1213
 
1214
1214
  .v-data-table__td-value {
@@ -1241,7 +1241,7 @@ select option {
1241
1241
  /* ------------------------------------------------------------------ */
1242
1242
  .app-input-label {
1243
1243
  font-family: var(--font-sans);
1244
- font-size: 12.5px;
1244
+ font-size: 13.5px;
1245
1245
  font-weight: 700;
1246
1246
  letter-spacing: 0;
1247
1247
  color: var(--text);
@@ -1251,3 +1251,46 @@ select option {
1251
1251
  .app-input-label__req {
1252
1252
  color: var(--err);
1253
1253
  }
1254
+
1255
+ /* ------------------------------------------------------------------ */
1256
+ /* READABLE TEXT FLOOR (owner 21 Oct 2026: "the font size is too small"). */
1257
+ /* ------------------------------------------------------------------ */
1258
+ /*
1259
+ * Vuetify's stock small sizes, raised once here so every screen in every app
1260
+ * follows without per-page edits: captions, field hints/errors, small chips
1261
+ * and buttons, table footers and list subtitles. Body/table text is 15px via
1262
+ * the tokens; secondary text is at least 13px; nothing is under 12px.
1263
+ * `!important` only where Vuetify's own rule is a utility (`.text-caption`)
1264
+ * or outranks a single class.
1265
+ */
1266
+ .text-caption {
1267
+ font-size: 13px !important;
1268
+ line-height: 1.4 !important;
1269
+ }
1270
+ .text-overline {
1271
+ font-size: 12px !important;
1272
+ }
1273
+ .v-messages,
1274
+ .v-messages__message {
1275
+ font-size: 13px;
1276
+ line-height: 1.35;
1277
+ }
1278
+ .v-chip.v-chip--size-small {
1279
+ font-size: 13px;
1280
+ }
1281
+ .v-chip.v-chip--size-x-small {
1282
+ font-size: 12px;
1283
+ }
1284
+ .v-btn.v-btn--size-small {
1285
+ font-size: 13px;
1286
+ }
1287
+ .v-btn.v-btn--size-x-small {
1288
+ font-size: 12px;
1289
+ }
1290
+ .v-data-table-footer,
1291
+ .v-data-table-footer .v-field__input {
1292
+ font-size: 13.5px;
1293
+ }
1294
+ .v-list-item-subtitle {
1295
+ font-size: 14px;
1296
+ }
@@ -656,7 +656,7 @@
656
656
  }
657
657
 
658
658
  .table-card__range {
659
- font-size: 12px;
659
+ font-size: 13px;
660
660
  font-weight: 600;
661
661
  color: var(--muted);
662
662
  font-variant-numeric: tabular-nums;
@@ -1233,7 +1233,7 @@
1233
1233
  justify-content: center;
1234
1234
  pointer-events: none;
1235
1235
  font-family: var(--font-sans);
1236
- font-size: 12.5px;
1236
+ font-size: 13.5px;
1237
1237
  font-weight: 600;
1238
1238
  letter-spacing: 0;
1239
1239
  color: rgb(139, 143, 152); /* light `--muted` - the pad is paper */
@@ -1241,7 +1241,7 @@
1241
1241
 
1242
1242
  .screen-signpad__label {
1243
1243
  font-family: var(--font-sans);
1244
- font-size: 12.5px;
1244
+ font-size: 13.5px;
1245
1245
  font-weight: 600;
1246
1246
  letter-spacing: 0;
1247
1247
  color: var(--muted);
@@ -122,41 +122,46 @@
122
122
  --font-sans: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
123
123
  "Helvetica Neue", Arial, sans-serif;
124
124
 
125
- /* Type scale - size / weight / letter-spacing, straight from the contract. */
126
- --fs-h1: 22px;
125
+ /*
126
+ * Type scale. Raised 21 Oct 2026 (owner: "most of the pages the font size is
127
+ * too small"): body and table text 15px, secondary text at least 13px,
128
+ * nothing under 12px. Was h1 22 / card 15.5 / head 11 / cell 13.5 / dense 13 /
129
+ * nav 13 / section 10.5 / btn 13.5 / chip 11.5 / chip-lg 12 / crumb 12.5.
130
+ */
131
+ --fs-h1: 24px;
127
132
  --fw-h1: 800;
128
133
  --ls-h1: -0.01em;
129
134
 
130
- --fs-card-title: 15.5px;
135
+ --fs-card-title: 16.5px;
131
136
  --fw-card-title: 800;
132
137
 
133
138
  --fs-kpi: 30px;
134
139
  --fw-kpi: 800;
135
140
  --ls-kpi: -0.02em;
136
141
 
137
- --fs-table-head: 11px;
142
+ --fs-table-head: 12.5px;
138
143
  --fw-table-head: 800;
139
144
  --ls-table-head: 0.07em;
140
145
 
141
- --fs-cell: 13.5px;
146
+ --fs-cell: 15px;
142
147
  --fw-cell: 600;
143
- --fs-cell-dense: 13px;
148
+ --fs-cell-dense: 14px;
144
149
 
145
- --fs-nav: 13px;
150
+ --fs-nav: 14px;
146
151
 
147
- --fs-section-label: 10.5px;
152
+ --fs-section-label: 12px;
148
153
  --fw-section-label: 800;
149
154
  --ls-section-label: 0.09em;
150
155
 
151
- --fs-btn: 13.5px;
156
+ --fs-btn: 14px;
152
157
  --fw-btn: 700;
153
158
  --fw-btn-strong: 800;
154
159
 
155
- --fs-chip: 11.5px;
156
- --fs-chip-lg: 12px;
160
+ --fs-chip: 13px;
161
+ --fs-chip-lg: 13px;
157
162
  --fw-chip: 700;
158
163
 
159
- --fs-breadcrumb: 12.5px;
164
+ --fs-breadcrumb: 13.5px;
160
165
 
161
166
  /* Shape */
162
167
  --r-card: 14px;
@@ -179,7 +179,7 @@ const isBlocked = computed(() => props.cameras?.some((c) => c.list === "blocked"
179
179
  border: 1px solid var(--border);
180
180
  background: var(--card);
181
181
  color: var(--text);
182
- font-size: 11px;
182
+ font-size: 12px;
183
183
  line-height: 18px;
184
184
  cursor: pointer;
185
185
  }
@@ -983,7 +983,7 @@ async function toggleFullscreen() {
983
983
  justify-content: space-between;
984
984
  gap: 6px;
985
985
  margin: 6px 0 0;
986
- font-size: 11px;
986
+ font-size: 12px;
987
987
  }
988
988
  .vms__picker-range {
989
989
  color: var(--vms-text-dim);
@@ -999,7 +999,7 @@ async function toggleFullscreen() {
999
999
  align-items: center;
1000
1000
  justify-content: space-between;
1001
1001
  margin: 0 0 6px;
1002
- font-size: 11px;
1002
+ font-size: 12px;
1003
1003
  letter-spacing: 0.06em;
1004
1004
  text-transform: uppercase;
1005
1005
  color: var(--vms-text-dim);
@@ -1008,7 +1008,7 @@ async function toggleFullscreen() {
1008
1008
  .vms__picker-empty,
1009
1009
  .vms__picker-note {
1010
1010
  margin: 6px 0 0;
1011
- font-size: 11px;
1011
+ font-size: 12px;
1012
1012
  line-height: 15px;
1013
1013
  color: var(--vms-text-dim);
1014
1014
  }
@@ -1017,7 +1017,7 @@ async function toggleFullscreen() {
1017
1017
  background: none;
1018
1018
  border: none;
1019
1019
  color: var(--vms-accent);
1020
- font-size: 11px;
1020
+ font-size: 12px;
1021
1021
  cursor: pointer;
1022
1022
  padding: 0;
1023
1023
  text-transform: none;
@@ -1186,7 +1186,7 @@ async function toggleFullscreen() {
1186
1186
  */
1187
1187
  .vms__caps-head {
1188
1188
  margin: 0 0 6px;
1189
- font-size: 11px;
1189
+ font-size: 12px;
1190
1190
  letter-spacing: 0.06em;
1191
1191
  text-transform: uppercase;
1192
1192
  color: var(--vms-text-dim);
@@ -1238,7 +1238,7 @@ async function toggleFullscreen() {
1238
1238
  }
1239
1239
 
1240
1240
  .vms__cap-tag {
1241
- font-size: 11px;
1241
+ font-size: 12px;
1242
1242
  font-weight: 400;
1243
1243
  padding: 1px 6px;
1244
1244
  border-radius: var(--vms-radius);
@@ -1266,7 +1266,7 @@ async function toggleFullscreen() {
1266
1266
  margin: 6px 0 0;
1267
1267
  padding-top: 6px;
1268
1268
  border-top: 1px solid var(--vms-line);
1269
- font-size: 11px;
1269
+ font-size: 12px;
1270
1270
  line-height: 16px;
1271
1271
  color: var(--vms-text-dim);
1272
1272
  }
@@ -606,7 +606,7 @@ async function toggleFullscreen() {
606
606
  }
607
607
 
608
608
  .vms-tile--dense .vms-tile__reason {
609
- font-size: 11px;
609
+ font-size: 12px;
610
610
  line-height: 15px;
611
611
  }
612
612
 
@@ -659,7 +659,7 @@ async function toggleFullscreen() {
659
659
 
660
660
  .vms-tile__state {
661
661
  color: var(--vms-text, #e8ecf1);
662
- font-size: 11px;
662
+ font-size: 12px;
663
663
  line-height: 14px;
664
664
  white-space: nowrap;
665
665
  }
@@ -673,7 +673,7 @@ async function toggleFullscreen() {
673
673
  }
674
674
 
675
675
  .vms-tile--dense .vms-tile__state {
676
- font-size: 10px;
676
+ font-size: 12px;
677
677
  line-height: 13px;
678
678
  }
679
679
 
@@ -715,7 +715,7 @@ async function toggleFullscreen() {
715
715
  border-radius: var(--vms-radius, 3px);
716
716
  background: var(--vms-scrim, rgba(7, 9, 12, 0.62));
717
717
  color: var(--vms-text-dim, #94a0b0);
718
- font-size: 11px;
718
+ font-size: 12px;
719
719
  line-height: 15px;
720
720
  white-space: nowrap;
721
721
  overflow: hidden;
@@ -723,7 +723,7 @@ async function toggleFullscreen() {
723
723
  }
724
724
 
725
725
  .vms-tile--dense .vms-tile__health {
726
- font-size: 10px;
726
+ font-size: 12px;
727
727
  line-height: 14px;
728
728
  }
729
729
 
@@ -752,7 +752,7 @@ async function toggleFullscreen() {
752
752
  padding: 1px 6px;
753
753
  border-radius: var(--vms-radius, 3px);
754
754
  background: var(--vms-scrim, rgba(7, 9, 12, 0.62));
755
- font-size: 11px;
755
+ font-size: 12px;
756
756
  line-height: 15px;
757
757
  /* The row is click-through; this one control is not. */
758
758
  pointer-events: auto;
@@ -768,7 +768,7 @@ async function toggleFullscreen() {
768
768
  border: none;
769
769
  padding: 2px 2px;
770
770
  color: var(--vms-accent, #5b9be0);
771
- font-size: 11px;
771
+ font-size: 12px;
772
772
  line-height: 15px;
773
773
  cursor: pointer;
774
774
  }
@@ -791,7 +791,7 @@ async function toggleFullscreen() {
791
791
  }
792
792
 
793
793
  .vms-tile--dense .vms-tile__name {
794
- font-size: 11px;
794
+ font-size: 12px;
795
795
  line-height: 15px;
796
796
  }
797
797
 
@@ -84,7 +84,7 @@ defineProps({
84
84
  }
85
85
 
86
86
  .chat-listcard__initials {
87
- font-size: 9px;
87
+ font-size: 12px;
88
88
  font-weight: 700;
89
89
  letter-spacing: 0;
90
90
  }
@@ -7,8 +7,42 @@
7
7
  :site="site"
8
8
  :service-type="serviceType"
9
9
  :schedule-route="scheduleRoute"
10
- text="A new checklist is created for every area automatically each midnight. Staff tick off each unit on the mobile app."
11
- />
10
+ text="The app makes a new checklist for every area automatically each midnight. Staff tick off each unit on their mobile app; you follow progress here."
11
+ how-title="How the Daily Checklist works"
12
+ how-key="daily-checklist"
13
+ >
14
+ <ol class="sg-steps">
15
+ <li>
16
+ Every midnight a new row appears here for the day. It holds every
17
+ area, with as many visits as the area's "visits per day", plus
18
+ any <strong>Extra Visits</strong> set for that day.
19
+ </li>
20
+ <li>
21
+ Staff open the same list in their mobile app and tick each unit
22
+ when it is done (a photo is needed to finish a visit).
23
+ </li>
24
+ <li>
25
+ <strong>Closes in</strong> counts down to midnight. When it
26
+ reaches zero the day's list closes: it becomes view-only, and any
27
+ unit not ticked counts as <strong>Missed</strong>.
28
+ </li>
29
+ <li>
30
+ Click a row to see its areas, then an area to see each unit,
31
+ send a unit back (<strong>Needs redo</strong>) or add a remark.
32
+ </li>
33
+ <li>
34
+ <strong>Download PDF</strong> saves that day's report - every
35
+ area, unit, who ticked it and when - to send to your client.
36
+ </li>
37
+ </ol>
38
+ <div class="sg-h">What the status words mean</div>
39
+ <dl class="sg-legend">
40
+ <template v-for="h in DAILY_STATUS_HELP" :key="h.word">
41
+ <dt><StatusChip :status="h.word" :label="h.word" /></dt>
42
+ <dd>{{ h.meaning }}</dd>
43
+ </template>
44
+ </dl>
45
+ </ScheduleGuide>
12
46
  <TableMain
13
47
  v-if="canViewSchedules"
14
48
  :title="pageTitle"
@@ -24,10 +58,11 @@
24
58
  >
25
59
  <template #no-data>
26
60
  <div class="cs-empty">
27
- <strong>No daily lists yet.</strong>
61
+ <strong>No daily checklists here yet.</strong>
28
62
  <span>
29
- A list is created automatically every midnight, once your Areas
30
- and Units are set up.
63
+ A checklist is made automatically every midnight once your Areas
64
+ and Units are set up. If you filtered by date or status, clear
65
+ the filter to see every day.
31
66
  </span>
32
67
  </div>
33
68
  </template>
@@ -122,7 +157,7 @@
122
157
  @click.stop="downloadItem(item)"
123
158
  >
124
159
  <v-icon left>mdi-download</v-icon>
125
- Download
160
+ Download PDF
126
161
  </v-btn>
127
162
  </template>
128
163
  </TableMain>
@@ -133,7 +168,8 @@
133
168
  -->
134
169
  <AppCard class="pa-4">
135
170
  <div class="cs-no-permission">
136
- You do not have permission to view cleaning schedules.
171
+ You do not have permission to view the Daily Checklist. Ask your
172
+ administrator to give your role access to it.
137
173
  </div>
138
174
  </AppCard>
139
175
  </div>
@@ -149,9 +185,10 @@
149
185
  <script lang="ts" setup>
150
186
  import useCleaningSchedules from "../composables/useCleaningSchedules";
151
187
  import {
188
+ DAILY_STATUS_HELP,
189
+ dailyChecklistTitle,
152
190
  dailyStatusLabel,
153
191
  hasListForToday,
154
- scheduleNameFor,
155
192
  } from "../utils/schedule-task";
156
193
  import useUtils from "../composables/useUtils";
157
194
 
@@ -168,20 +205,19 @@ const props = defineProps({
168
205
  canGenerateChecklist: { type: Boolean, default: false },
169
206
  });
170
207
 
171
- // "Daily Schedule - Cleaning" / "- Landscape" / "- Pest" / "- Pool" / "- Technician"
172
- const pageTitle = `Daily Schedule – ${scheduleNameFor(props.serviceType).title.replace(
173
- / Schedule$/,
174
- "",
175
- )}`;
208
+ // "Daily Checklist – Cleaning" / "– Landscape" / "– Pest" / "– Pool" / "– Technician"
209
+ const pageTitle = dailyChecklistTitle(props.serviceType);
176
210
 
177
- const startDate = ref("");
178
- const endDate = ref("");
211
+ // `?date=YYYY-MM-DD` (from an Extra Visit's "See that day's checklist") opens on that one day.
212
+ const linkedDay = String(useRoute().query.date ?? "");
213
+ const startDate = ref(/^\d{4}-\d{2}-\d{2}$/.test(linkedDay) ? linkedDay : "");
214
+ const endDate = ref(startDate.value);
179
215
  const status = ref<TScheduleAreaStatus>("all");
180
216
  const statusOptions = [
181
217
  { title: "All", value: "all" },
182
- { title: "Open", value: "open" },
218
+ { title: "Not started", value: "open" },
183
219
  { title: "In progress", value: "ongoing" },
184
- { title: "Completed", value: "completed" },
220
+ { title: "Done", value: "completed" },
185
221
  { title: "Closed", value: "closed" },
186
222
  ] as const;
187
223
 
@@ -191,10 +227,10 @@ const pages = ref(0);
191
227
  const pageRange = ref("-- - -- of --");
192
228
 
193
229
  const headers = [
194
- { title: "Created Date", value: "createdAt" },
195
- { title: "Close in", value: "closeIn" },
230
+ { title: "Day", value: "createdAt" },
231
+ { title: "Closes in", value: "closeIn" },
196
232
  { title: "Status", value: "status" },
197
- { title: "Completion Date", value: "completedAt" },
233
+ { title: "Finished on", value: "completedAt" },
198
234
  { title: "", value: "download" },
199
235
  ];
200
236
  const remainingTime = ref({} as Record<string, string>);
@@ -899,7 +899,7 @@ onUnmounted(() => {
899
899
  position: absolute;
900
900
  top: -8px;
901
901
  left: 9px;
902
- font-size: 10px;
902
+ font-size: 12px;
903
903
  color: var(--muted);
904
904
  background: var(--card);
905
905
  padding: 0 3px;
@@ -463,7 +463,7 @@ onMounted(load)
463
463
  }
464
464
  .sub-free-badge {
465
465
  display: block;
466
- font-size: 11px;
466
+ font-size: 12px;
467
467
  font-weight: 700;
468
468
  color: var(--text2);
469
469
  margin-top: 2px;
@@ -69,7 +69,7 @@
69
69
  :y="label.y"
70
70
  text-anchor="end"
71
71
  alignment-baseline="middle"
72
- style="fill: #64748b; font-size: 11px; font-weight: 500"
72
+ style="fill: #64748b; font-size: 12px; font-weight: 500"
73
73
  >
74
74
  {{ label.text }}
75
75
  </text>
@@ -471,7 +471,7 @@
471
471
  :y="label.y"
472
472
  text-anchor="end"
473
473
  alignment-baseline="middle"
474
- style="fill: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)); font-size: 11px; font-weight: 500"
474
+ style="fill: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)); font-size: 12px; font-weight: 500"
475
475
  >
476
476
  {{ label.text }}
477
477
  </text>
@@ -4283,7 +4283,7 @@ function formatDashboardTime(value?: string) {
4283
4283
 
4284
4284
  .print-kpi-title {
4285
4285
  color: #64748b;
4286
- font-size: 11px;
4286
+ font-size: 12px;
4287
4287
  font-weight: 700;
4288
4288
  text-transform: uppercase;
4289
4289
  margin-bottom: 8px;
@@ -4299,7 +4299,7 @@ function formatDashboardTime(value?: string) {
4299
4299
 
4300
4300
  .print-kpi-meta {
4301
4301
  color: #64748b;
4302
- font-size: 11px;
4302
+ font-size: 12px;
4303
4303
  margin-top: 6px;
4304
4304
  }
4305
4305
 
@@ -4349,7 +4349,7 @@ function formatDashboardTime(value?: string) {
4349
4349
 
4350
4350
  .print-status-badge {
4351
4351
  display: inline-block;
4352
- font-size: 11px;
4352
+ font-size: 12px;
4353
4353
  font-weight: 600;
4354
4354
  padding: 2px 8px;
4355
4355
  border-radius: 4px;
@@ -4636,7 +4636,7 @@ function formatDashboardTime(value?: string) {
4636
4636
 
4637
4637
  .figma-list-main p {
4638
4638
  color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
4639
- font-size: 11px;
4639
+ font-size: 12px;
4640
4640
  font-weight: 700;
4641
4641
  line-height: 1.3;
4642
4642
  margin: 3px 0 0;
@@ -4662,7 +4662,7 @@ function formatDashboardTime(value?: string) {
4662
4662
  color: var(--muted);
4663
4663
  display: flex;
4664
4664
  font-family: var(--font-sans);
4665
- font-size: 11px;
4665
+ font-size: 12px;
4666
4666
  font-weight: 700;
4667
4667
  gap: 8px;
4668
4668
  min-width: 0;
@@ -4766,7 +4766,7 @@ function formatDashboardTime(value?: string) {
4766
4766
  .active-patrol-main span {
4767
4767
  color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
4768
4768
  display: block;
4769
- font-size: 11px;
4769
+ font-size: 12px;
4770
4770
  line-height: 1.25;
4771
4771
  overflow-wrap: anywhere;
4772
4772
  }
@@ -4811,7 +4811,7 @@ function formatDashboardTime(value?: string) {
4811
4811
 
4812
4812
  .active-patrol-assignee span {
4813
4813
  color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
4814
- font-size: 11px;
4814
+ font-size: 12px;
4815
4815
  font-weight: 600;
4816
4816
  line-height: 1.2;
4817
4817
  min-width: 0;
@@ -4830,7 +4830,7 @@ function formatDashboardTime(value?: string) {
4830
4830
 
4831
4831
  .active-patrol-status-pill {
4832
4832
  border-radius: 20px;
4833
- font-size: 11px;
4833
+ font-size: 12px;
4834
4834
  font-weight: 600;
4835
4835
  line-height: 1.2;
4836
4836
  padding: 5px 10px;
@@ -4846,7 +4846,7 @@ function formatDashboardTime(value?: string) {
4846
4846
  color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
4847
4847
  display: inline-flex;
4848
4848
  flex: 0 0 auto;
4849
- font-size: 11px;
4849
+ font-size: 12px;
4850
4850
  font-weight: 800;
4851
4851
  height: 24px;
4852
4852
  justify-content: center;
@@ -4869,7 +4869,7 @@ function formatDashboardTime(value?: string) {
4869
4869
  box-shadow: var(--shadow-menu);
4870
4870
  color: var(--card);
4871
4871
  content: attr(data-tooltip);
4872
- font-size: 11px;
4872
+ font-size: 12px;
4873
4873
  font-weight: 600;
4874
4874
  left: 50%;
4875
4875
  line-height: 1.35;
@@ -5099,7 +5099,7 @@ function formatDashboardTime(value?: string) {
5099
5099
  color: var(--accent-text);
5100
5100
  display: inline-flex;
5101
5101
  flex-shrink: 0;
5102
- font-size: 11px;
5102
+ font-size: 12px;
5103
5103
  font-weight: 800;
5104
5104
  height: 30px;
5105
5105
  justify-content: center;