@7365admin1/layer-common 3.2.2-staging.171 → 3.2.2-staging.173

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.
@@ -387,6 +387,62 @@
387
387
  filter: brightness(1.06);
388
388
  }
389
389
 
390
+ /*
391
+ * THE `type="button"` TIE, AND WHY THIS BLOCK EXISTS.
392
+ *
393
+ * Vuetify ships `[type="button"] { color: inherit }`. That is an ATTRIBUTE
394
+ * selector at (0,1,0) - an exact tie with every `.app-btn` rule above, which is
395
+ * also (0,1,0). A tie is broken by INJECTION ORDER, so in a document where
396
+ * Vuetify's stylesheet lands after this one, the background from the rules above
397
+ * still applies and the `color` does not: the button keeps its accent fill and
398
+ * takes the page ink instead of its own.
399
+ *
400
+ * `AppButton` renders `<button :type="type">` with `type` defaulting to
401
+ * "button", so EVERY variant carries the attribute the tie needs.
402
+ *
403
+ * MEASURED, 2026-08-16. Injecting `[type="button"] { color: inherit }` last, on
404
+ * a real primary in the harness:
405
+ *
406
+ * before fill rgb(75,116,196) ink rgb(255,255,255) 4.57:1
407
+ * after fill rgb(75,116,196) ink rgb(25,27,31) 3.77:1
408
+ *
409
+ * `rgb(25,27,31)` is `--text` on the light theme - the button had stopped
410
+ * choosing its own ink at all.
411
+ *
412
+ * Naming the ELEMENT makes each of these (0,1,1), which beats an attribute
413
+ * selector WHATEVER the order. No `!important`: a screen that wants a different
414
+ * label colour must still be able to say so.
415
+ *
416
+ * This is an ADDITIONAL block rather than an edit to the rules above, and
417
+ * deliberately so: `AppButton` renders a `NuxtLink` when `to` is given, which is
418
+ * an `<a>` with no `type` attribute. Putting `button` on the original selectors
419
+ * would have taken the colour away from that path entirely. The values below are
420
+ * copied verbatim from the rules above; if one changes, change both.
421
+ */
422
+ button.app-btn {
423
+ color: var(--on-accent-strong);
424
+ }
425
+
426
+ button.app-btn--ghost {
427
+ color: var(--text2);
428
+ }
429
+
430
+ button.app-btn--icon {
431
+ color: var(--text2);
432
+ }
433
+
434
+ button.app-btn--row {
435
+ color: var(--muted);
436
+ }
437
+
438
+ button.app-btn--ok {
439
+ color: var(--on-ok);
440
+ }
441
+
442
+ button.app-btn--err {
443
+ color: var(--err);
444
+ }
445
+
390
446
  .app-btn:disabled {
391
447
  opacity: 0.5;
392
448
  cursor: default;
@@ -120,7 +120,7 @@
120
120
 
121
121
  <template #item.qrTag="{ item }">
122
122
  <v-icon
123
- :color="item.qrTag ? 'success' : 'grey-lighten-1'"
123
+ :color="item.qrTag ? 'success' : 'muted'"
124
124
  size="22"
125
125
  >
126
126
  {{ item.qrTag ? "mdi-check-circle" : "mdi-circle-outline" }}
@@ -37,7 +37,7 @@
37
37
  <template v-slot:prepend>
38
38
  <v-checkbox-btn
39
39
  :color="
40
- selectedSomeRecipients ? 'indigo-darken-4' : undefined
40
+ selectedSomeRecipients ? 'primary-button' : undefined
41
41
  "
42
42
  :indeterminate="
43
43
  selectedSomeRecipients && !selectedAllRecipients
@@ -91,7 +91,7 @@
91
91
  density="comfortable"
92
92
  true-value="active"
93
93
  false-value="inactive"
94
- :color="camera.status === 'active' ? 'success' : 'grey'"
94
+ :color="camera.status === 'active' ? 'success' : 'muted'"
95
95
  :label="camera.status === 'active' ? 'Active' : 'Inactive'"
96
96
  ></v-switch>
97
97
  </v-col>
@@ -123,7 +123,7 @@
123
123
  <v-icon
124
124
  size="18"
125
125
  :color="
126
- isFolderItem(item._raw) ? 'amber-darken-2' : 'grey-darken-2'
126
+ isFolderItem(item._raw) ? 'warning' : 'muted'
127
127
  "
128
128
  >
129
129
  {{
@@ -81,7 +81,10 @@
81
81
  <span class="d-flex ga-3 align-center"><strong>{{ label }}:</strong></span>
82
82
  <!-- <PlateNumberDisplay :plate-numbers="selectedVehicleObject[key]" show-all :default-value="selectedVehicleObject.plateNumber" /> -->
83
83
  <v-col cols="12">
84
- <v-card flat outlined class="pa-2" border="sm black" :loading="loadingPlateNumberDetails">
84
+ <!-- `border="sm black"` pinned a hard black edge on BOTH themes. Dropping only
85
+ the colour word keeps the width and lets the edge fall back to
86
+ `--v-border-color`, which is the design's `--border` in each theme. -->
87
+ <v-card flat outlined class="pa-2" border="sm" :loading="loadingPlateNumberDetails">
85
88
  <v-data-table :items="selectedVehicleObject[key]" :headers="plateHeaders" hide-default-footer>
86
89
  <template #item.status="{ value }">
87
90
  <v-chip :color="formatVehicleStatus(value).color" size="x-small" dark>
@@ -102,13 +105,13 @@
102
105
  title="Approve" prepend-icon="mdi-check-circle" base-color="success"
103
106
  @click="handleApproveVehicle(plateNumberItem as TPlateNumber)" />
104
107
  <v-list-item v-if="(plateNumberItem as TPlateNumber)?.status == 'deleted'" title="Restore"
105
- prepend-icon="mdi-restore" base-color="orange"
108
+ prepend-icon="mdi-restore" base-color="warning"
106
109
  @click="handleRestoreVehicle(plateNumberItem as TPlateNumber)" />
107
110
  <v-list-item
108
111
  v-if="((plateNumberItem as TPlateNumber)?.type === 'whitelist' || (plateNumberItem as TPlateNumber)?.type === 'blocklist') && plateNumberItem?.status == 'active'"
109
112
  :title="(plateNumberItem as TPlateNumber)?.type === 'blocklist' ? 'Whitelist' : 'Blocklist'"
110
113
  prepend-icon="mdi-swap-horizontal"
111
- :base-color="(plateNumberItem as TPlateNumber)?.type === 'blocklist' ? 'primary' : 'red'"
114
+ :base-color="(plateNumberItem as TPlateNumber)?.type === 'blocklist' ? 'primary' : 'error'"
112
115
  @click="handleUpdateType(plateNumberItem as TPlateNumber)" />
113
116
 
114
117
  <v-list-item
@@ -49,7 +49,7 @@
49
49
  v-if="snackBarMessage.isUnregistered"
50
50
  rounded="md"
51
51
  variant="text"
52
- color="baseButton"
52
+ color="primary"
53
53
  class="text-truncate text-decoration-underline px-0"
54
54
  @click="goToUnregistered"
55
55
  >
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.171",
5
+ "version": "3.2.2-staging.173",
6
6
  "author": "7365admin1",
7
7
  "main": "./nuxt.config.ts",
8
8
  "//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",