@7365admin1/layer-common 3.2.2-staging.88 → 3.2.2-staging.90

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.
@@ -643,12 +643,16 @@ onUnmounted(() => {
643
643
  gap: 12px;
644
644
  padding: 12px 0;
645
645
  background: transparent;
646
+ /* The title, the 260px search and the invite button do not fit a phone on
647
+ one line, and without this the whole page scrolled sideways. */
648
+ flex-wrap: wrap;
646
649
  }
647
650
  .topbar-right {
648
651
  margin-left: auto;
649
652
  display: flex;
650
653
  align-items: center;
651
654
  gap: 12px;
655
+ flex-wrap: wrap;
652
656
  }
653
657
  .btn-invite {
654
658
  background: var(--card);
@@ -667,6 +671,7 @@ onUnmounted(() => {
667
671
  .search-wrap {
668
672
  position: relative;
669
673
  width: 260px;
674
+ max-width: 100%;
670
675
  flex-shrink: 0;
671
676
  }
672
677
  .search-input {
@@ -709,7 +714,14 @@ onUnmounted(() => {
709
714
  .filter-wrap {
710
715
  display: flex;
711
716
  gap: 10px;
712
- flex-shrink: 0;
717
+ /* Three filters do not fit a phone beside the search box. `flex-shrink: 0`
718
+ kept this row at its 463px content width, so it never wrapped and the
719
+ whole page scrolled sideways at 360. */
720
+ flex-wrap: wrap;
721
+ min-width: 0;
722
+ }
723
+ .filter-wrap > * {
724
+ max-width: 100%;
713
725
  }
714
726
  .filter-field {
715
727
  position: relative;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div
3
- class="d-flex flex-column align-center justify-center text-center text-blue-grey-lighten-1"
3
+ class="d-flex flex-column align-center justify-center text-center dashboard-empty"
4
4
  :style="{ minHeight: compact ? '72px' : '140px', gap: '8px' }"
5
5
  >
6
6
  <v-icon icon="mdi-database-search-outline" size="28" />
@@ -16,3 +16,13 @@ defineProps({
16
16
  },
17
17
  });
18
18
  </script>
19
+
20
+ <style scoped>
21
+ /* Was `text-blue-grey-lighten-1`, a fixed Vuetify grey that measured 2.4:1 in
22
+ LIGHT mode - the empty state was the hardest thing on the page to read. The
23
+ muted token is the design's own and follows the theme. */
24
+ .dashboard-empty {
25
+ font-family: var(--font-sans);
26
+ color: var(--muted);
27
+ }
28
+ </style>
@@ -207,7 +207,7 @@
207
207
  class="d-flex flex-column flex-md-row align-md-start justify-space-between ga-5 mb-6"
208
208
  >
209
209
  <div>
210
- <h1 class="text-h5 font-weight-black text-high-emphasis mb-0">
210
+ <h1 class="dashboard-title mb-0">
211
211
  {{ dashboardTitle }}
212
212
  </h1>
213
213
  <div class="d-flex align-center text-medium-emphasis ga-1 mt-2 text-caption">
@@ -300,9 +300,7 @@
300
300
  >
301
301
  <v-card
302
302
  flat
303
- border
304
- rounded="lg"
305
- class="pa-4 flex-grow-1"
303
+ class="dashboard-card dashboard-kpi-card pa-4 flex-grow-1"
306
304
  style="min-height: 158px"
307
305
  >
308
306
  <div class="d-flex align-start justify-space-between">
@@ -360,9 +358,7 @@
360
358
  </div>
361
359
 
362
360
  <div class="mt-6 w-100">
363
- <p
364
- class="text-caption font-weight-black text-uppercase text-medium-emphasis mb-3"
365
- >
361
+ <p class="dashboard-kpi-label mb-3">
366
362
  {{ card.title }}
367
363
  </p>
368
364
  <template
@@ -383,7 +379,7 @@
383
379
  </template>
384
380
  <template v-else>
385
381
  <div class="d-flex align-center mb-3" style="min-height: 31px">
386
- <span class="text-h5 font-weight-black text-high-emphasis">
382
+ <span class="dashboard-kpi-value">
387
383
  {{ card.value }}
388
384
  </span>
389
385
  </div>
@@ -419,12 +415,10 @@
419
415
  <v-card
420
416
  v-if="isWidgetVisible('activity')"
421
417
  flat
422
- border
423
- rounded="lg"
424
- class="px-5 pt-4 pb-3 mt-3"
418
+ class="dashboard-card px-5 pt-4 pb-3 mt-3"
425
419
  >
426
420
  <div class="d-flex align-center justify-space-between">
427
- <h2 class="text-body-1 font-weight-black text-high-emphasis mb-0">
421
+ <h2 class="dashboard-card-title mb-0">
428
422
  {{ activityTitle }}
429
423
  </h2>
430
424
  </div>
@@ -556,9 +550,7 @@
556
550
  v-for="item in taskScheduleItems"
557
551
  :key="item.id"
558
552
  flat
559
- border
560
- rounded="lg"
561
- class="pa-3"
553
+ class="dashboard-row-card pa-3"
562
554
  >
563
555
  <div class="d-flex align-center flex-wrap ga-3">
564
556
  <div class="flex-grow-1" style="min-width: 0">
@@ -622,9 +614,7 @@
622
614
  v-for="item in staffStatusItems"
623
615
  :key="item.id"
624
616
  flat
625
- border
626
- rounded="lg"
627
- class="pa-3"
617
+ class="dashboard-row-card pa-3"
628
618
  >
629
619
  <div class="d-flex align-start ga-3">
630
620
  <AvatarMain :name="item.name" :size="32" />
@@ -663,7 +653,7 @@
663
653
  <div
664
654
  v-for="item in feedbackItems"
665
655
  :key="item.id"
666
- class="d-flex align-center justify-space-between"
656
+ class="d-flex align-center justify-space-between dashboard-feedback-row"
667
657
  style="
668
658
  padding: 16px 20px;
669
659
  border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
@@ -1128,7 +1118,7 @@
1128
1118
  <div
1129
1119
  v-for="item in feedbackItems"
1130
1120
  :key="item.id"
1131
- class="d-flex align-center justify-space-between"
1121
+ class="d-flex align-center justify-space-between dashboard-feedback-row"
1132
1122
  style="
1133
1123
  padding: 16px 20px;
1134
1124
  border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
@@ -3250,31 +3240,37 @@ function getInitials(name?: string) {
3250
3240
  function getStatusPillStyle(status: any) {
3251
3241
  const tone = getStatusTone(status);
3252
3242
  const map: Record<string, { backgroundColor: string; color: string }> = {
3253
- success: { backgroundColor: "#72e3a1", color: "#0f5132" },
3254
- warning: { backgroundColor: "#fde68a", color: "#92400e" },
3255
- error: { backgroundColor: "#fecaca", color: "#b91c1c" },
3256
- neutral: { backgroundColor: "#e2e8f0", color: "#64748b" },
3243
+ success: { backgroundColor: "var(--ok-bg)", color: "var(--ok)" },
3244
+ warning: { backgroundColor: "var(--warn-bg)", color: "var(--warn)" },
3245
+ error: { backgroundColor: "var(--err-bg)", color: "var(--err)" },
3246
+ neutral: { backgroundColor: "var(--hover)", color: "var(--text2)" },
3257
3247
  };
3258
3248
  return map[tone] || map.neutral;
3259
3249
  }
3260
3250
 
3251
+ /**
3252
+ * The pills are drawn by inline style, so the literal colours lived here rather
3253
+ * than in the stylesheet - which is why they survived the dark-mode repair and
3254
+ * still measured 3.86:1. Same three cases, same words, the design's tones.
3255
+ */
3261
3256
  function getPatrolStatusStyle(status: any) {
3262
3257
  const s = String(status || "").toLowerCase();
3263
3258
  if (s === "completed" || s === "complete")
3264
- return { backgroundColor: "#72e3a1", color: "#0f5132" };
3259
+ return { backgroundColor: "var(--ok-bg)", color: "var(--ok)" };
3265
3260
  if (s === "on paused" || s === "paused")
3266
- return { backgroundColor: "#dcdcdc", color: "#64748b" };
3267
- return { backgroundColor: "#e2e8f0", color: "#64748b" };
3261
+ return { backgroundColor: "var(--hover)", color: "var(--text2)" };
3262
+ return { backgroundColor: "var(--hover)", color: "var(--text2)" };
3268
3263
  }
3269
3264
 
3270
3265
  function getStaffStatusPillStyle(status: any) {
3271
3266
  const s = String(status || "").toLowerCase();
3272
3267
  if (s === "on duty" || s === "on-duty")
3273
- return { backgroundColor: "#72e3a1", color: "#0f5132" };
3268
+ return { backgroundColor: "var(--ok-bg)", color: "var(--ok)" };
3274
3269
  if (s === "on break" || s === "on-break")
3275
- return { backgroundColor: "#fde68a", color: "#92400e" };
3276
- if (s === "absent") return { backgroundColor: "#fecaca", color: "#b91c1c" };
3277
- return { backgroundColor: "#e2e8f0", color: "#64748b" };
3270
+ return { backgroundColor: "var(--warn-bg)", color: "var(--warn)" };
3271
+ if (s === "absent")
3272
+ return { backgroundColor: "var(--err-bg)", color: "var(--err)" };
3273
+ return { backgroundColor: "var(--hover)", color: "var(--text2)" };
3278
3274
  }
3279
3275
 
3280
3276
  function getStatusProgressStyle(item: { percent: number; color: string }) {
@@ -4154,37 +4150,98 @@ function formatDashboardTime(value?: string) {
4154
4150
  text-transform: capitalize;
4155
4151
  }
4156
4152
 
4153
+ /* Was five pairs of literal pastels - the same pale green on the dark page,
4154
+ and none of them the tones the rest of the product uses. */
4157
4155
  .badge-success {
4158
- background-color: #d1fae5;
4159
- color: #065f46;
4156
+ background-color: var(--ok-bg);
4157
+ color: var(--ok);
4160
4158
  }
4161
4159
 
4162
4160
  .badge-info {
4163
- background-color: #e0f2fe;
4164
- color: #075985;
4161
+ background-color: var(--info-bg);
4162
+ color: var(--info);
4165
4163
  }
4166
4164
 
4167
4165
  .badge-danger,
4168
4166
  .badge-error {
4169
- background-color: #fee2e2;
4170
- color: #991b1b;
4167
+ background-color: var(--err-bg);
4168
+ color: var(--err);
4171
4169
  }
4172
4170
 
4173
4171
  .badge-warning {
4174
- background-color: #fef3c7;
4175
- color: #92400e;
4172
+ background-color: var(--warn-bg);
4173
+ color: var(--warn);
4176
4174
  }
4177
4175
 
4178
4176
  .badge-neutral {
4179
- background-color: #f1f5f9;
4180
- color: #475569;
4177
+ background-color: var(--hover);
4178
+ color: var(--text2);
4181
4179
  }
4182
4180
 
4181
+ /* ------------------------------------------------------------------ */
4182
+ /* PHASE 5 - the design's card, type and semantic tones. */
4183
+ /* */
4184
+ /* The dark-mode repair earlier today moved these surfaces off literal */
4185
+ /* white onto the Vuetify theme; this keeps that and takes the last */
4186
+ /* step, onto the design tokens themselves - so the dashboard's cards, */
4187
+ /* headings and pills are the same 14px card, the same Manrope and the */
4188
+ /* same four status tones as every other screen. */
4189
+ /* ------------------------------------------------------------------ */
4190
+
4183
4191
  .dashboard-card {
4184
- background: rgb(var(--v-theme-surface));
4185
- border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
4186
- border-radius: 8px;
4187
- box-shadow: 0 1px 2px rgba(15, 35, 54, 0.04);
4192
+ background: var(--card);
4193
+ border: 1px solid var(--border);
4194
+ border-radius: var(--r-card);
4195
+ box-shadow: var(--shadow);
4196
+ font-family: var(--font-sans);
4197
+ }
4198
+
4199
+ /* The KPI tile and the rows inside a panel are the same card, one step in. */
4200
+ .dashboard-kpi-card,
4201
+ .dashboard-row-card {
4202
+ background: var(--card);
4203
+ border: 1px solid var(--border);
4204
+ border-radius: var(--r-card);
4205
+ box-shadow: var(--shadow);
4206
+ font-family: var(--font-sans);
4207
+ }
4208
+
4209
+ .dashboard-title {
4210
+ font-family: var(--font-sans);
4211
+ font-size: var(--fs-h1);
4212
+ font-weight: var(--fw-h1);
4213
+ letter-spacing: var(--ls-h1);
4214
+ color: var(--text);
4215
+ }
4216
+
4217
+ .dashboard-card-title {
4218
+ font-family: var(--font-sans);
4219
+ font-size: var(--fs-card-title);
4220
+ font-weight: var(--fw-card-title);
4221
+ letter-spacing: 0;
4222
+ color: var(--text);
4223
+ }
4224
+
4225
+ /* 11px/800 uppercase over a 30px/800 number, tabular so the columns of
4226
+ figures line up - the design's KPI, and the same header type the table
4227
+ card already uses. */
4228
+ .dashboard-kpi-label {
4229
+ font-family: var(--font-sans);
4230
+ font-size: var(--fs-table-head);
4231
+ font-weight: var(--fw-table-head);
4232
+ letter-spacing: var(--ls-table-head);
4233
+ text-transform: uppercase;
4234
+ color: var(--muted);
4235
+ }
4236
+
4237
+ .dashboard-kpi-value {
4238
+ font-family: var(--font-sans);
4239
+ font-size: var(--fs-kpi);
4240
+ font-weight: var(--fw-kpi);
4241
+ letter-spacing: var(--ls-kpi);
4242
+ line-height: 1.1;
4243
+ color: var(--text);
4244
+ font-variant-numeric: tabular-nums;
4188
4245
  }
4189
4246
 
4190
4247
  .dashboard-section-grid {
@@ -4219,14 +4276,17 @@ function formatDashboardTime(value?: string) {
4219
4276
  min-height: 18px;
4220
4277
  }
4221
4278
 
4279
+ /* The panel heading is the design's card title: 15.5px/800, sentence case. It
4280
+ was a 12px/900 uppercase label from the earlier Figma. */
4222
4281
  .figma-panel-header h2 {
4223
- color: rgb(var(--v-theme-on-surface));
4224
- font-size: 12px;
4225
- font-weight: 900;
4282
+ color: var(--text);
4283
+ font-family: var(--font-sans);
4284
+ font-size: var(--fs-card-title);
4285
+ font-weight: var(--fw-card-title);
4226
4286
  letter-spacing: 0;
4227
4287
  line-height: 1.2;
4228
4288
  margin: 0;
4229
- text-transform: uppercase;
4289
+ text-transform: none;
4230
4290
  }
4231
4291
 
4232
4292
  .figma-panel-action,
@@ -4373,30 +4433,30 @@ function formatDashboardTime(value?: string) {
4373
4433
 
4374
4434
  .figma-event-dot-info,
4375
4435
  .figma-event-dot-neutral {
4376
- background: #c9e6ff;
4377
- border: 2px solid #77bef9;
4436
+ background: var(--info-bg);
4437
+ border: 2px solid var(--info);
4378
4438
  }
4379
4439
 
4380
4440
  .figma-event-dot-success {
4381
- background: #2fb84d;
4382
- border: 2px solid #c9efd4;
4441
+ background: var(--ok-bg);
4442
+ border: 2px solid var(--ok);
4383
4443
  }
4384
4444
 
4385
4445
  .figma-event-dot-danger {
4386
- background: #ffd9d6;
4387
- border: 2px solid #f9a6a0;
4446
+ background: var(--err-bg);
4447
+ border: 2px solid var(--err);
4388
4448
  }
4389
4449
 
4390
4450
  .figma-event-dot-warning {
4391
- background: #ffe9c7;
4392
- border: 2px solid #f9c97c;
4451
+ background: var(--warn-bg);
4452
+ border: 2px solid var(--warn);
4393
4453
  }
4394
4454
 
4395
4455
  .active-patrol-row {
4396
4456
  align-items: center;
4397
- background-color: rgb(var(--v-theme-surface-bright));
4398
- border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
4399
- border-radius: 8px;
4457
+ background-color: var(--card);
4458
+ border: 1px solid var(--border);
4459
+ border-radius: var(--r-inner-lg);
4400
4460
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.02);
4401
4461
  display: grid;
4402
4462
  gap: 10px;
@@ -4449,6 +4509,21 @@ function formatDashboardTime(value?: string) {
4449
4509
  padding: 2px 8px 2px 3px;
4450
4510
  }
4451
4511
 
4512
+ /**
4513
+ * Carried from Phase 1: `AvatarMain` colours each person from their NAME, and
4514
+ * writes WHITE initials on whatever tint it picks - 2.34:1 on this dashboard.
4515
+ * That is right in a members list, where the colour tells two people apart,
4516
+ * and wrong on a dashboard, where the same face appears in four panels.
4517
+ *
4518
+ * The component is left alone - Phase 2 took exactly this route for the top
4519
+ * bar's own avatar - and the dashboard paints every avatar it draws with the
4520
+ * design's accent pair instead. One rule, all seven call sites.
4521
+ */
4522
+ .unified-dashboard :deep(.v-avatar) {
4523
+ background: var(--accent-soft) !important;
4524
+ color: var(--accent-text) !important;
4525
+ }
4526
+
4452
4527
  .active-patrol-assignee span {
4453
4528
  color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
4454
4529
  font-size: 11px;
@@ -4503,11 +4578,11 @@ function formatDashboardTime(value?: string) {
4503
4578
  }
4504
4579
 
4505
4580
  .active-patrol-tooltip::after {
4506
- background: #0f2638;
4507
- border-radius: 6px;
4581
+ background: var(--text);
4582
+ border-radius: var(--r-inner-sm);
4508
4583
  bottom: calc(100% + 8px);
4509
- box-shadow: 0 8px 24px rgba(15, 38, 56, 0.18);
4510
- color: #ffffff;
4584
+ box-shadow: var(--shadow-menu);
4585
+ color: var(--card);
4511
4586
  content: attr(data-tooltip);
4512
4587
  font-size: 11px;
4513
4588
  font-weight: 600;
@@ -4537,6 +4612,28 @@ function formatDashboardTime(value?: string) {
4537
4612
  }
4538
4613
  }
4539
4614
 
4615
+ /**
4616
+ * Carried from Phase 1: the dashboard scrolled sideways at 360. This row is a
4617
+ * four-column grid whose last two columns are `max-content`, so on a phone the
4618
+ * assignee pill, the status pill and the action button cannot fit beside a
4619
+ * 120px title and the row pushes ~39px past the viewport.
4620
+ *
4621
+ * Below 600 the four columns become one. Nothing is hidden, dropped or
4622
+ * reordered - the same four blocks, stacked in the same order.
4623
+ */
4624
+ @media (max-width: 599.98px) {
4625
+ .active-patrol-row {
4626
+ grid-template-columns: minmax(0, 1fr);
4627
+ }
4628
+
4629
+ .active-patrol-action,
4630
+ .active-patrol-statuses,
4631
+ .active-patrol-assignees {
4632
+ justify-self: start;
4633
+ text-align: left;
4634
+ }
4635
+ }
4636
+
4540
4637
  .figma-icon-badge {
4541
4638
  align-items: center;
4542
4639
  border-radius: 50%;
@@ -4548,28 +4645,28 @@ function formatDashboardTime(value?: string) {
4548
4645
  }
4549
4646
 
4550
4647
  .figma-icon-badge-danger {
4551
- background: #ffe0de;
4552
- color: #d72f2f;
4648
+ background: var(--err-bg);
4649
+ color: var(--err);
4553
4650
  }
4554
4651
 
4555
4652
  .figma-icon-badge-info {
4556
- background: #e8e2ff;
4557
- color: #6d4bd8;
4653
+ background: var(--info-bg);
4654
+ color: var(--info);
4558
4655
  }
4559
4656
 
4560
4657
  .figma-icon-badge-success {
4561
- background: #ddf7e6;
4562
- color: #229852;
4658
+ background: var(--ok-bg);
4659
+ color: var(--ok);
4563
4660
  }
4564
4661
 
4565
4662
  .figma-icon-badge-warning {
4566
- background: #ffeed4;
4567
- color: #c57916;
4663
+ background: var(--warn-bg);
4664
+ color: var(--warn);
4568
4665
  }
4569
4666
 
4570
4667
  .figma-icon-badge-neutral {
4571
- background: #edf2f6;
4572
- color: #607386;
4668
+ background: var(--hover);
4669
+ color: var(--text2);
4573
4670
  }
4574
4671
 
4575
4672
  .figma-status-stack {
@@ -4620,9 +4717,9 @@ function formatDashboardTime(value?: string) {
4620
4717
 
4621
4718
  .feedback-row {
4622
4719
  align-items: center;
4623
- background: rgb(var(--v-theme-surface-bright));
4624
- border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
4625
- border-radius: 8px;
4720
+ background: var(--card);
4721
+ border: 1px solid var(--border);
4722
+ border-radius: var(--r-inner-lg);
4626
4723
  display: grid;
4627
4724
  gap: 16px;
4628
4725
  grid-template-columns: minmax(180px, 225px) minmax(130px, 175px) 100px auto;
@@ -4631,6 +4728,39 @@ function formatDashboardTime(value?: string) {
4631
4728
  transition: border-color 0.16s ease, box-shadow 0.16s ease;
4632
4729
  }
4633
4730
 
4731
+ /**
4732
+ * The property-mode feedback row is four flex children that each ask for at
4733
+ * least 140px, so on a 360px phone the status pill and the View button were
4734
+ * clipped by the card edge - visible, but cut in half. It wraps now, and below
4735
+ * 600 each block takes the full width: same four blocks, same order.
4736
+ */
4737
+ .dashboard-feedback-row {
4738
+ flex-wrap: wrap;
4739
+ gap: 12px;
4740
+ }
4741
+
4742
+ @media (max-width: 599.98px) {
4743
+ .dashboard-feedback-row > div {
4744
+ flex: 1 1 100% !important;
4745
+ justify-content: flex-start !important;
4746
+ text-align: left !important;
4747
+ }
4748
+ }
4749
+
4750
+ /* Same story as the patrol row: four fixed-ish columns need ~600px, so on a
4751
+ phone the status pill and the View button were clipped by the card edge.
4752
+ One column below 600, same blocks, same order. */
4753
+ @media (max-width: 599.98px) {
4754
+ .feedback-row {
4755
+ grid-template-columns: minmax(0, 1fr);
4756
+ }
4757
+
4758
+ .feedback-status-pill,
4759
+ .feedback-action {
4760
+ justify-self: start;
4761
+ }
4762
+ }
4763
+
4634
4764
  .feedback-row:hover {
4635
4765
  border-color: rgba(var(--v-border-color), var(--v-border-opacity));
4636
4766
  box-shadow: 0 6px 14px rgba(15, 44, 69, 0.04);
@@ -4675,11 +4805,13 @@ function formatDashboardTime(value?: string) {
4675
4805
  white-space: nowrap;
4676
4806
  }
4677
4807
 
4808
+ /* Carried from Phase 1: the initials measured 1.26:1 in dark mode, because the
4809
+ tint was a literal light blue whatever the theme. */
4678
4810
  .feedback-avatar {
4679
4811
  align-items: center;
4680
- background: #d1e8ff;
4812
+ background: var(--accent-soft);
4681
4813
  border-radius: 50%;
4682
- color: #1d5f99;
4814
+ color: var(--accent-text);
4683
4815
  display: inline-flex;
4684
4816
  flex-shrink: 0;
4685
4817
  font-size: 11px;
@@ -4698,24 +4830,25 @@ function formatDashboardTime(value?: string) {
4698
4830
  white-space: nowrap;
4699
4831
  }
4700
4832
 
4833
+ /* The other two carried Phase 1 items: hard-coded chips. */
4701
4834
  .feedback-status-pill-completed {
4702
- background: #72e3a1;
4703
- color: #0f5132;
4835
+ background: var(--ok-bg);
4836
+ color: var(--ok);
4704
4837
  }
4705
4838
 
4706
4839
  .feedback-status-pill-progress {
4707
- background: #fde68a;
4708
- color: #92400e;
4840
+ background: var(--warn-bg);
4841
+ color: var(--warn);
4709
4842
  }
4710
4843
 
4711
4844
  .feedback-status-pill-danger {
4712
- background: #fecaca;
4713
- color: #b91c1c;
4845
+ background: var(--err-bg);
4846
+ color: var(--err);
4714
4847
  }
4715
4848
 
4716
4849
  .feedback-status-pill-todo {
4717
- background: #e2e8f0;
4718
- color: #64748b;
4850
+ background: var(--hover);
4851
+ color: var(--text2);
4719
4852
  }
4720
4853
 
4721
4854
  .feedback-view-button {
@@ -38,7 +38,7 @@
38
38
  <div class="d-flex mt-3 pb-5 pr-5">
39
39
  <p class="mr-6 font-weight-medium flex-grow-1">
40
40
  NFC / QR Code Pass
41
- <span class="d-block text-caption text-grey-darken-1 mt-1">
41
+ <span class="d-block text-caption screen-hint mt-1">
42
42
  NFC Card Pass uses Near Field Communication (NFC) technology
43
43
  to enable secure and convenient entry within ~4 cm proximity.
44
44
  </span>
@@ -59,7 +59,7 @@
59
59
  <div class="mt-5 pb-5">
60
60
  <p class="font-weight-medium mb-1">
61
61
  Access Door / Lift
62
- <span class="d-block text-caption text-grey-darken-1 mt-1">
62
+ <span class="d-block text-caption screen-hint mt-1">
63
63
  Choose the access method(s) for door and lift control.
64
64
  At least one method must be enabled.
65
65
  </span>
@@ -190,7 +190,7 @@
190
190
  <div class="d-flex mt-3 pb-5">
191
191
  <p class="font-weight-medium flex-grow-1">
192
192
  Upload Access Cards Template
193
- <span class="d-block text-caption text-grey-darken-1 mt-1">
193
+ <span class="d-block text-caption screen-hint mt-1">
194
194
  <a
195
195
  v-if="currentEntryPassSettings.template?.id"
196
196
  href="#"
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@7365admin1/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "3.2.2-staging.88",
5
+ "version": "3.2.2-staging.90",
6
6
  "author": "7365admin1",
7
7
  "main": "./nuxt.config.ts",
8
8
  "publishConfig": {