@nexdom/uimed-vue 2.0.0-beta.53 → 2.0.0-beta.55

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/AGENTS.md CHANGED
@@ -173,6 +173,7 @@ Use an existing composable (e.g. `use-toast`) as the reference, and deliver in t
173
173
  - A new component/composable must be listed in its guide page (`docs/guide/…`), its API page (`docs/api/…`), both sidebars in `docs/.vitepress/config.ts`, the guide index table (`docs/guide/index.md`) and the API index list (`docs/api/index.md`).
174
174
  - Never write CSS or `<style>` blocks, and expose styling to consumers only through props.
175
175
  - Adjustments that Vuetify exposes as Sass variables (e.g. a font family or a line height) go in `src/styles/settings.scss`, which `vitePluginUimed()` compiles into Vuetify's stylesheets in the apps. That file only configures variables: still no CSS rules.
176
+ - It also limits Vuetify's utility classes to the families the components use, without breakpoint and print variants, and its color classes to black, white and transparent, since the utility stylesheet blocks the apps' first render. Using a class from another family (e.g. `ga-2` or `overflow-hidden`) means enabling its key in `$utilities` there; the unit tests of `src/__tests__/plugins.test.ts` fail when a class used in `src` isn't generated. The theme's colors (`bg-primary`, `text-primary-text`, ...) don't depend on it.
176
177
  - Don't add spacing to Vuetify components: no padding or margin utility classes (`pa-*`, `pt-6`, `px-4`, `ma-2`, ...) and no spacing props overriding the defaults. Vuetify already applies Material Design 3 spacing, and overriding it breaks what it handles on its own, such as button paddings and the scrollbar of scrollable content. If the default spacing looks wrong, stop and ask instead of adjusting it. The one accepted layout margin is `mt-auto` on `v-card-actions` (as in `USection`), which pushes the actions to the bottom of a full-height card without setting any spacing value.
177
178
  - Prefer a Vuetify component's own props to building its parts by hand (e.g. `title`/`text` on `v-card` instead of `v-card-item` > `v-card-title` > `v-card-text`). A non-spacing utility class is acceptable only when no prop covers the need (e.g. `text-wrap` on a card title), with a comment saying why. Props covered by the shared composables below are the exception: they always go through them.
178
179
  - Reuse the shared internal composables for props that recur across components, so every component maps them to Vuetify the same way, instead of mapping them again:
@@ -168,6 +168,7 @@ var skeleton_loader_default = /* @__PURE__ */ defineComponent({
168
168
  const { t } = useLocale();
169
169
  const widthClass = useFullWidth(() => props.fullWidth);
170
170
  const heightClass = useFullHeight(() => props.fullHeight);
171
+ const alignContentClass = computed(() => props.fullHeight ? "align-content-space-between" : void 0);
171
172
  const loadingAttrs = computed(() => ({
172
173
  ariaLabel: void 0,
173
174
  ariaLive: void 0,
@@ -179,7 +180,11 @@ var skeleton_loader_default = /* @__PURE__ */ defineComponent({
179
180
  loading: props.loading,
180
181
  type: props.type,
181
182
  color: props.color,
182
- class: [unref(widthClass), unref(heightClass)]
183
+ class: [
184
+ unref(widthClass),
185
+ unref(heightClass),
186
+ alignContentClass.value
187
+ ]
183
188
  }, loadingAttrs.value), {
184
189
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
185
190
  _: 3
@@ -2,5 +2,154 @@
2
2
  $body-font-family: var(--v-font-body, "Unimed Slab", sans-serif),
3
3
  // Unimed Slab's ascent and descent take 1.26em, more than the subtitles' default 1rem line
4
4
  // height, which clipped its descenders and accented capitals
5
- $list-item-subtitle-line-height: normal
5
+ $list-item-subtitle-line-height: normal,
6
+ // The utility classes are a render-blocking stylesheet in the apps, so only the ones the
7
+ // components use are generated. The theme's colors (`primary`, ...) don't come from here, and
8
+ // the palettes are left out: only the shades (black, white and transparent) remain, since
9
+ // Vuetify uses `bg-transparent` itself (e.g. on the navigation drawer's list)
10
+ $colors: (
11
+ "red": (),
12
+ "pink": (),
13
+ "purple": (),
14
+ "deep-purple": (),
15
+ "indigo": (),
16
+ "blue": (),
17
+ "light-blue": (),
18
+ "cyan": (),
19
+ "teal": (),
20
+ "green": (),
21
+ "light-green": (),
22
+ "lime": (),
23
+ "yellow": (),
24
+ "amber": (),
25
+ "orange": (),
26
+ "deep-orange": (),
27
+ "brown": (),
28
+ "blue-grey": (),
29
+ "grey": (),
30
+ ),
31
+ // The utility families the components use, or that Vuetify applies to them (e.g. `rounded-0` on
32
+ // list items), without the breakpoint and print variants, which they don't use. A class from
33
+ // another family needs its key enabled here
34
+ $utilities: (
35
+ "display": (
36
+ responsive: false,
37
+ print: false,
38
+ ),
39
+ "flex": (
40
+ responsive: false,
41
+ ),
42
+ "flex-direction": (
43
+ responsive: false,
44
+ ),
45
+ "flex-wrap": (
46
+ responsive: false,
47
+ ),
48
+ "justify-content": (
49
+ responsive: false,
50
+ ),
51
+ "align-items": (
52
+ responsive: false,
53
+ ),
54
+ "align-content": (
55
+ responsive: false,
56
+ ),
57
+ "margin": (
58
+ responsive: false,
59
+ ),
60
+ "margin-top": (
61
+ responsive: false,
62
+ ),
63
+ "margin-left": (
64
+ responsive: false,
65
+ ),
66
+ "negative-margin-right": (
67
+ responsive: false,
68
+ ),
69
+ "padding": (
70
+ responsive: false,
71
+ ),
72
+ "padding-x": (
73
+ responsive: false,
74
+ ),
75
+ "padding-y": (
76
+ responsive: false,
77
+ ),
78
+ "padding-top": (
79
+ responsive: false,
80
+ ),
81
+ "text-align": (
82
+ responsive: false,
83
+ ),
84
+ "height": (
85
+ responsive: false,
86
+ ),
87
+ "width": (
88
+ responsive: false,
89
+ ),
90
+ "overflow": false,
91
+ "overflow-x": false,
92
+ "overflow-y": false,
93
+ "float": false,
94
+ "float:rtl": false,
95
+ "float:ltr": false,
96
+ "flex-grow": false,
97
+ "flex-shrink": false,
98
+ "justify-items": false,
99
+ "align-self": false,
100
+ "order": false,
101
+ "gap": false,
102
+ "gap-row": false,
103
+ "gap-column": false,
104
+ "margin-x": false,
105
+ "margin-y": false,
106
+ "margin-right": false,
107
+ "margin-bottom": false,
108
+ "margin-start": false,
109
+ "margin-end": false,
110
+ "negative-margin": false,
111
+ "negative-margin-x": false,
112
+ "negative-margin-y": false,
113
+ "negative-margin-top": false,
114
+ "negative-margin-bottom": false,
115
+ "negative-margin-left": false,
116
+ "negative-margin-start": false,
117
+ "negative-margin-end": false,
118
+ "padding-right": false,
119
+ "padding-bottom": false,
120
+ "padding-left": false,
121
+ "padding-start": false,
122
+ "padding-end": false,
123
+ "rounded-top": false,
124
+ "rounded-end": false,
125
+ "rounded-bottom": false,
126
+ "rounded-start": false,
127
+ "rounded-top-start": false,
128
+ "rounded-top-end": false,
129
+ "rounded-bottom-end": false,
130
+ "rounded-bottom-start": false,
131
+ "border-current": false,
132
+ "border-opacity": false,
133
+ "border-top": false,
134
+ "border-end": false,
135
+ "border-bottom": false,
136
+ "border-start": false,
137
+ "border-style": false,
138
+ "white-space": false,
139
+ "overflow-wrap": false,
140
+ "opacity": false,
141
+ "text-overflow": false,
142
+ "typography": false,
143
+ "text-transform": false,
144
+ "font-weight": false,
145
+ "font-italic": false,
146
+ "text-mono": false,
147
+ "position": false,
148
+ "top": false,
149
+ "right": false,
150
+ "bottom": false,
151
+ "left": false,
152
+ "cursor": false,
153
+ "fill-height": false,
154
+ )
6
155
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexdom/uimed-vue",
3
- "version": "2.0.0-beta.53",
3
+ "version": "2.0.0-beta.55",
4
4
  "description": "A ui framework for NEXDOM applications.",
5
5
  "keywords": [
6
6
  "lib",