@7365admin1/layer-common 3.2.2-staging.131 → 3.2.2-staging.133

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.
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <v-btn v-if="!prop.iconOnly" text="Close" class="bg-grey-lighten-2 text-capitalize" :height="prop.height" @click="emit('click')" />
3
- <v-btn v-else icon="mdi-close" size="small" class="bg-grey-lighten-2 text-capitalize" :height="prop.height" @click="emit('click')" />
2
+ <v-btn v-if="!prop.iconOnly" text="Close" variant="flat" class="screen-btn-ghost" :height="prop.height" @click="emit('click')" />
3
+ <v-btn v-else icon="mdi-close" variant="flat" size="small" class="screen-modal__close" :height="prop.height" @click="emit('click')" />
4
4
  </template>
5
5
 
6
6
  <script setup lang="ts">
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-card flat border="sm grey-lighten-2" color="grey-lighten-3" class="w-100">
2
+ <v-card flat class="w-100 member-summary">
3
3
  <v-card-text>
4
4
  <v-row no-gutters>
5
5
  <v-col cols="10" no-gutters>
@@ -13,7 +13,7 @@
13
13
  </v-row>
14
14
  </v-col>
15
15
  <v-col cols="2" class="d-flex align-center justify-center">
16
- <v-btn icon="mdi-trash-outline" size="small" color="red" @click="emit('remove')" />
16
+ <v-btn class="member-summary__remove" icon="mdi-trash-outline" variant="text" size="small" @click="emit('remove')" />
17
17
  </v-col>
18
18
  </v-row>
19
19
  </v-card-text>
@@ -45,4 +45,29 @@ const displayFields: Record<keyof TMemberInfo, string> = {
45
45
 
46
46
  </script>
47
47
 
48
- <style scoped></style>
48
+ <style scoped>
49
+ /*
50
+ * Was `border="sm grey-lighten-2" color="grey-lighten-3"` - two LITERAL light
51
+ * greys, i.e. a pale slab with a pale frame drawn straight across the dark
52
+ * theme. The design draws an added-member row as an inset on the card it sits
53
+ * in, so it takes `--hover` (the neutral wash the chips and avatars use) on
54
+ * `--border`, at the inner radius.
55
+ *
56
+ * The remove action was `color="red"` - not a token, and a solid red circle the
57
+ * design never draws. It is the `--err` glyph the rest of the layer uses.
58
+ */
59
+ .member-summary {
60
+ background: var(--hover);
61
+ border: 1px solid var(--border);
62
+ border-radius: var(--r-inner);
63
+ color: var(--text);
64
+ }
65
+
66
+ .member-summary :deep(.v-card-text) {
67
+ font-size: var(--fs-cell);
68
+ }
69
+
70
+ .member-summary__remove {
71
+ color: var(--err);
72
+ }
73
+ </style>
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <v-card flat border="md black">
2
+ <v-card flat class="screen-card toggle-card">
3
3
  <v-card-text class="d-flex justify-space-between align-center py-0">
4
- <p>{{ label }}</p>
4
+ <p class="toggle-card__label">{{ label }}</p>
5
5
  <v-switch v-model="toggle" :color="toggleColor" hide-details />
6
6
  </v-card-text>
7
7
  </v-card>
@@ -22,4 +22,16 @@ defineProps({
22
22
  const toggle = defineModel({default: false})
23
23
  </script>
24
24
 
25
- <style scoped></style>
25
+ <style scoped>
26
+ /*
27
+ * Was `border="md black"` - a 2px LITERAL black frame, which is a black box
28
+ * drawn across the dark theme. The design draws a settings row as the ordinary
29
+ * 1px card, so this is `.screen-card` plus the design's cell type on the label
30
+ * (Vuetify's `<p>` inherits the body size, not the design's).
31
+ */
32
+ .toggle-card__label {
33
+ font-size: var(--fs-cell);
34
+ color: var(--text);
35
+ margin: 0;
36
+ }
37
+ </style>
@@ -10,7 +10,7 @@
10
10
  "
11
11
  :disabled="readOnly"
12
12
  size="small"
13
- class="me-2"
13
+ class="me-2 checklist-action"
14
14
  icon
15
15
  @click.stop="handleReject"
16
16
  >
@@ -27,6 +27,7 @@
27
27
  "
28
28
  :disabled="readOnly"
29
29
  size="small"
30
+ class="checklist-action"
30
31
  icon
31
32
  @click.stop="handleApprove"
32
33
  >
@@ -52,3 +53,26 @@ function handleApprove() {
52
53
  emit("approve", props.item);
53
54
  }
54
55
  </script>
56
+
57
+ <style scoped>
58
+ /*
59
+ * The reject/approve pair is the design's bordered icon square (`.screen-icon-btn`
60
+ * geometry) rather than Vuetify's pill: 36px, `--r-inner`, `--border`.
61
+ *
62
+ * `color="error"` / `color="success"` are LEFT ALONE - unlike `--success`/`--error`,
63
+ * which are not CSS tokens, Vuetify's `success`/`error` theme names are mapped in
64
+ * `utils/theme.ts` to the design's `ok`/`err`, so the chosen state already paints
65
+ * the right tone. Only the un-chosen (outlined) state was factory Vuetify.
66
+ */
67
+ .checklist-action.v-btn {
68
+ width: var(--icon-btn);
69
+ height: var(--icon-btn);
70
+ min-width: var(--icon-btn);
71
+ border-radius: var(--r-inner);
72
+ }
73
+
74
+ .checklist-action.v-btn--variant-outlined {
75
+ border: 1px solid var(--border);
76
+ color: var(--text2);
77
+ }
78
+ </style>
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div class="arrow-navigation">
3
- <v-btn icon="mdi-chevron-left" variant="text" density="comfortable" :disabled="page <= 1" @click="decrement" />
3
+ <v-btn class="pager-arrow" icon="mdi-chevron-left" variant="text" density="comfortable" :disabled="page <= 1" @click="decrement" />
4
4
  <v-btn
5
- icon="mdi-chevron-right" variant="text" density="comfortable" :disabled="page >= props.length"
5
+ class="pager-arrow" icon="mdi-chevron-right" variant="text" density="comfortable" :disabled="page >= props.length"
6
6
  @click="increment" />
7
7
  </div>
8
8
  </template>
@@ -28,4 +28,28 @@ const props = defineProps({
28
28
  default: 0
29
29
  }
30
30
  });
31
- </script>
31
+ </script>
32
+
33
+ <style scoped>
34
+ /*
35
+ * The pager sits in EVERY converted table's toolbar (TableMain's `right`
36
+ * slot), so it was the last piece of factory Vuetify on an otherwise
37
+ * on-design card: Vuetify's own `on-surface` ink and its comfortable-density
38
+ * box. The design draws a toolbar arrow borderless - so this is ink, size and
39
+ * hover only, no border and no fill invented.
40
+ */
41
+ .arrow-navigation :deep(.pager-arrow) {
42
+ width: var(--icon-btn);
43
+ height: var(--icon-btn);
44
+ border-radius: var(--r-inner);
45
+ color: var(--text2);
46
+ }
47
+
48
+ .arrow-navigation :deep(.pager-arrow:hover) {
49
+ background: var(--hover);
50
+ }
51
+
52
+ .arrow-navigation :deep(.pager-arrow.v-btn--disabled) {
53
+ color: var(--muted);
54
+ }
55
+ </style>
@@ -1,13 +1,12 @@
1
1
  <template>
2
2
  <v-row no-gutters class="w-100">
3
- <v-card class="w-100">
3
+ <v-card flat class="w-100 screen-card">
4
4
  <v-card-text>
5
5
  <v-btn
6
6
  block
7
- color="primary-button"
8
7
  :height="40"
9
8
  text="Scan QR Code"
10
- class="text-capitalize"
9
+ class="screen-btn-primary"
11
10
  prepend-icon="mdi-qrcode"
12
11
  @click="handleScanQRCode"
13
12
  />
@@ -15,7 +14,7 @@
15
14
  v-model="selectedPass"
16
15
  v-model:search="passInput"
17
16
  :hide-no-data="false"
18
- class="mt-3"
17
+ class="mt-3 filter-field"
19
18
  :items="passItems"
20
19
  :rules="props.passRules"
21
20
  item-title="prefixAndName"
@@ -23,7 +22,6 @@
23
22
  label="Pass"
24
23
  variant="outlined"
25
24
  hide-details
26
- density="compact"
27
25
  persistent-hint
28
26
  small-chips
29
27
  :clearable="props.clearable"
@@ -45,7 +43,7 @@
45
43
  v-model="selectedKeys"
46
44
  v-model:search="keyInput"
47
45
  :hide-no-data="false"
48
- class="mt-3"
46
+ class="mt-3 filter-field"
49
47
  :items="keyItems"
50
48
  :rules="props.passRules"
51
49
  item-title="prefixAndName"
@@ -54,7 +52,6 @@
54
52
  multiple
55
53
  variant="outlined"
56
54
  hide-details
57
- density="compact"
58
55
  persistent-hint
59
56
  small-chips
60
57
  closable-chips
@@ -78,10 +75,10 @@
78
75
  <template v-if="selectedType">
79
76
  <v-number-input
80
77
  v-model="count"
78
+ class="filter-field"
81
79
  variant="outlined"
82
80
  :min="1"
83
81
  :precision="0"
84
- density="compact"
85
82
  :rules="countRules"
86
83
  />
87
84
  </template>
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.131",
5
+ "version": "3.2.2-staging.133",
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.",