@7365admin1/layer-common 3.2.2-staging.130 → 3.2.2-staging.132

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.
@@ -77,7 +77,7 @@
77
77
  [class*="text-overline"],
78
78
  .v-badge__badge,
79
79
  .v-kbd
80
- ),
80
+ ):not(.material-symbols-outlined),
81
81
  .v-overlay-container
82
82
  :is(
83
83
  [class*="text-h"],
@@ -88,7 +88,7 @@
88
88
  [class*="text-overline"],
89
89
  .v-badge__badge,
90
90
  .v-kbd
91
- ) {
91
+ ):not(.material-symbols-outlined) {
92
92
  font-family: var(--font-sans, Roboto, sans-serif);
93
93
  }
94
94
 
@@ -124,6 +124,23 @@
124
124
  -webkit-font-smoothing: antialiased;
125
125
  }
126
126
 
127
+ /**
128
+ * The icon face, re-asserted at (0,3,0).
129
+ *
130
+ * A `<v-icon class="text-h6">` carries BOTH the icon class and a typography
131
+ * utility, so the re-point above (a descendant of `.v-application`, (0,2,0))
132
+ * would otherwise beat the single-class rule (0,1,0) and the ligature would
133
+ * fall back to Manrope - drawing the literal word "local_shipping" instead of
134
+ * a truck. The `:not()` guard above stops that here; this block stops it
135
+ * anywhere an app ships its own copy of the re-point, whatever the stylesheet
136
+ * order. Repeating the class is how the weight is raised - no `!important`,
137
+ * same precedent as the re-point itself, so a screen can still override.
138
+ */
139
+ .v-application .material-symbols-outlined.material-symbols-outlined,
140
+ .v-overlay-container .material-symbols-outlined.material-symbols-outlined {
141
+ font-family: "Material Symbols Outlined";
142
+ }
143
+
127
144
  /* mdi's spin modifier, kept working now the glyph is not a `:before`.
128
145
  `@keyframes mdi-spin` still comes from `@mdi/font`, which stays loaded so
129
146
  that any icon name without a mapping keeps drawing its old glyph. */
@@ -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>
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.130",
5
+ "version": "3.2.2-staging.132",
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.",