@volverjs/style 0.1.4 → 0.1.6

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/package.json CHANGED
@@ -1,18 +1,84 @@
1
1
  {
2
2
  "name": "@volverjs/style",
3
- "version": "0.1.4",
4
- "description": "@volverjs/style is a lightweight responsive CSS utility library to accompany @volverjs/ui and static webpages as well.",
5
- "main": "dist/style.css",
6
- "style": "dist/style.css",
7
- "type": "module",
3
+ "description": "@volverjs/style is a lightweight responsive CSS utility library to accompany @volverjs/ui-* and static webpages as well.",
4
+ "author": "24/Consulting",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "css",
8
+ "scss",
9
+ "design-system",
10
+ "volver",
11
+ "volverjs",
12
+ "css custom properties",
13
+ "css variables",
14
+ "utility classes",
15
+ "design tokens",
16
+ "responsive",
17
+ "components library"
18
+ ],
19
+ "homepage": "https://volverjs.github.io/style",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/volverjs/style"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/volverjs/style/issues"
26
+ },
27
+ "version": "0.1.6",
8
28
  "engines": {
9
29
  "node": ">= 12.x"
10
30
  },
11
31
  "packageManager": "pnpm@7.8.0",
32
+ "type": "module",
33
+ "main": "dist/style.css",
34
+ "style": "dist/style.css",
12
35
  "files": [
13
36
  "src/*",
14
37
  "dist/*"
15
38
  ],
39
+ "devDependencies": {
40
+ "@iconify/vue": "^4.0.2",
41
+ "@vitejs/plugin-vue": "^4.0.0",
42
+ "@vueuse/core": "^9.11.0",
43
+ "@vueuse/head": "^1.0.22",
44
+ "eslint": "^8.32.0",
45
+ "eslint-config-prettier": "^8.6.0",
46
+ "eslint-plugin-vue": "^9.9.0",
47
+ "glob": "^8.1.0",
48
+ "icss-utils": "^5.1.0",
49
+ "markdown-it-anchor": "^8.6.6",
50
+ "markdown-it-prism": "^2.3.0",
51
+ "postcss": "^8.4.21",
52
+ "postcss-html": "^1.5.0",
53
+ "postcss-preset-env": "^7.8.3",
54
+ "prism-themes": "^1.9.0",
55
+ "prismjs": "1.29.0",
56
+ "remark": "^14.0.2",
57
+ "remark-frontmatter": "^4.0.1",
58
+ "remark-gfm": "^3.0.1",
59
+ "remark-lint": "^9.1.1",
60
+ "sass": "^1.57.1",
61
+ "stylelint": "^14.16.1",
62
+ "stylelint-config-prettier": "^9.0.4",
63
+ "stylelint-config-recommended-scss": "^8.0.0",
64
+ "stylelint-config-recommended-vue": "^1.4.0",
65
+ "stylelint-config-standard-scss": "^6.1.0",
66
+ "unplugin-auto-import": "^0.12.1",
67
+ "unplugin-vue-components": "^0.22.12",
68
+ "vite": "^4.0.4",
69
+ "vite-plugin-css-export": "^1.2.1",
70
+ "vite-plugin-eslint": "^1.8.1",
71
+ "vite-plugin-handlebars": "^1.6.0",
72
+ "vite-plugin-markdown": "^2.1.0",
73
+ "vite-plugin-pages": "^0.28.0",
74
+ "vite-plugin-stylelint": "^4.1.6",
75
+ "vite-plugin-vue-layouts": "^0.7.0",
76
+ "vite-ssg": "^0.22.1",
77
+ "vite-ssg-sitemap": "^0.4.3",
78
+ "vue": "^3.2.45",
79
+ "vue-live": "2.3.2",
80
+ "vue-router": "^4.1.6"
81
+ },
16
82
  "exports": {
17
83
  ".": "./dist/volver.css",
18
84
  "./scss/context": "./src/_context.scss",
@@ -147,64 +213,6 @@
147
213
  "./scss/utilities/typography": "./src/utilities/typography.scss",
148
214
  "./scss": "./src/volver.scss"
149
215
  },
150
- "repository": {
151
- "type": "git",
152
- "url": "https://github.com/volverjs/style"
153
- },
154
- "keywords": [
155
- "css",
156
- "design-system",
157
- "volverjs"
158
- ],
159
- "author": "24/Consulting",
160
- "license": "MIT",
161
- "bugs": {
162
- "url": "https://github.com/volverjs/style/issues"
163
- },
164
- "homepage": "https://github.com/volverjs/style#readme",
165
- "devDependencies": {
166
- "@iconify/vue": "^4.0.2",
167
- "@vitejs/plugin-vue": "^4.0.0",
168
- "@vueuse/core": "^9.10.0",
169
- "@vueuse/head": "^1.0.22",
170
- "eslint": "^8.32.0",
171
- "eslint-config-prettier": "^8.6.0",
172
- "eslint-plugin-vue": "^9.9.0",
173
- "glob": "^8.1.0",
174
- "icss-utils": "^5.1.0",
175
- "markdown-it-anchor": "^8.6.6",
176
- "markdown-it-prism": "^2.3.0",
177
- "postcss": "^8.4.21",
178
- "postcss-html": "^1.5.0",
179
- "postcss-preset-env": "^7.8.3",
180
- "prism-themes": "^1.9.0",
181
- "prismjs": "1.29.0",
182
- "remark": "^14.0.2",
183
- "remark-frontmatter": "^4.0.1",
184
- "remark-gfm": "^3.0.1",
185
- "remark-lint": "^9.1.1",
186
- "sass": "^1.57.1",
187
- "stylelint": "^14.16.1",
188
- "stylelint-config-prettier": "^9.0.4",
189
- "stylelint-config-recommended-scss": "^8.0.0",
190
- "stylelint-config-recommended-vue": "^1.4.0",
191
- "stylelint-config-standard-scss": "^6.1.0",
192
- "unplugin-auto-import": "^0.12.1",
193
- "unplugin-vue-components": "^0.22.12",
194
- "vite": "^4.0.4",
195
- "vite-plugin-css-export": "^1.2.1",
196
- "vite-plugin-eslint": "^1.8.1",
197
- "vite-plugin-handlebars": "^1.6.0",
198
- "vite-plugin-markdown": "^2.1.0",
199
- "vite-plugin-pages": "^0.28.0",
200
- "vite-plugin-stylelint": "^4.1.6",
201
- "vite-plugin-vue-layouts": "^0.7.0",
202
- "vite-ssg": "^0.22.1",
203
- "vite-ssg-sitemap": "^0.4.3",
204
- "vue": "^3.2.45",
205
- "vue-live": "2.3.2",
206
- "vue-router": "^4.1.6"
207
- },
208
216
  "scripts": {
209
217
  "dev": "vite --port 3000 --open",
210
218
  "build": "node ./scripts/build.js",
@@ -365,6 +365,7 @@
365
365
  @extend %vv-select !optional;
366
366
  @extend %vv-select__wrapper !optional;
367
367
  @extend %vv-select__input !optional;
368
+ @extend %vv-select-modifier-dirty__input !optional;
368
369
 
369
370
  &:disabled {
370
371
  @extend %vv-select--disabled !optional;
@@ -36,7 +36,13 @@ $component-selector: '.#{ $component-name}';
36
36
  $selector: $component-selector,
37
37
  $enabled: $zero-specificity-for-components
38
38
  ) {
39
- &:where(a[href], button, input[type='button'], input[type='submit'], input[type='reset']),
39
+ &:where(
40
+ a[href],
41
+ button,
42
+ input[type='button'],
43
+ input[type='submit'],
44
+ input[type='reset']
45
+ ),
40
46
  &::file-selector-button {
41
47
  @extend %#{$component-name};
42
48
  }
package/src/reset.scss CHANGED
@@ -2,8 +2,20 @@
2
2
  Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property
3
3
  - The "symbol *" part is to solve Firefox SVG sprite bug
4
4
  */
5
- *:where(:not(html, iframe, canvas, img, svg, video, details, summary, svg
6
- *, symbol *)) {
5
+ *:where(
6
+ :not(
7
+ html,
8
+ iframe,
9
+ canvas,
10
+ img,
11
+ svg,
12
+ video,
13
+ details,
14
+ summary,
15
+ svg *,
16
+ symbol *
17
+ )
18
+ ) {
7
19
  all: unset;
8
20
  display: revert;
9
21
  }
@@ -15,7 +15,8 @@ $input: (
15
15
  min-width: 0,
16
16
  label: (
17
17
  color: var(--color-word-2),
18
- display: block,
18
+ display: flex,
19
+ align-items: center,
19
20
  font-size: var(--text-xs),
20
21
  gap: var(--spacing-xs),
21
22
  white-space: nowrap,
@@ -50,4 +51,12 @@ $input: (
50
51
  invalid: (
51
52
  color: var(--color-danger),
52
53
  ),
54
+ floating: (
55
+ padding-top: calc(var(--input-spacing-top) + 0.55em),
56
+ padding-bottom: calc(var(--input-spacing-bottom) - 0.55em),
57
+ label: (
58
+ font-size: var(--text-12),
59
+ transform: translateY(-0.8em),
60
+ ),
61
+ ),
53
62
  ) !default;
@@ -52,6 +52,7 @@ $vv-button: (
52
52
  flex-shrink: 0,
53
53
  stroke-linecap: round,
54
54
  stroke-linejoin: round,
55
+ [min-height]: calc(1em * var(--button-line-height)),
55
56
  ),
56
57
  label: (
57
58
  white-space: nowrap,
@@ -64,7 +65,7 @@ $vv-button: (
64
65
  icon-only: (
65
66
  element: (
66
67
  icon: (
67
- margin-inline: calc(var(--spacing-9) * -1),
68
+ margin-inline: calc(var(--spacing-6) * -1),
68
69
  ),
69
70
  ),
70
71
  ),
@@ -312,7 +313,7 @@ $vv-button: (
312
313
  ),
313
314
  column: (
314
315
  flex-direction: column,
315
- gap: 0.2em,
316
+ gap: var(--spacing-2),
316
317
  ),
317
318
  full-bleed: (
318
319
  min-width: 20ch,
@@ -10,6 +10,7 @@ $vv-input-text: (
10
10
  label: (
11
11
  _alias: '> label',
12
12
  display: var(--input-label-display),
13
+ align-items: var(--input-label-align-items),
13
14
  font-size: var(--input-label-font-size),
14
15
  color: var(--input-label-color),
15
16
  margin: 0 0 var(--input-label-gap) 0,
@@ -27,7 +28,6 @@ $vv-input-text: (
27
28
  background-color: var(--input-background-color),
28
29
  will-change: background-color,
29
30
  transition: var(--transition-colors),
30
- min-height: var(--spacing-50),
31
31
  pseudo: (
32
32
  before: (
33
33
  position: absolute,
@@ -65,14 +65,17 @@ $vv-input-text: (
65
65
  display: block,
66
66
  flex: 1,
67
67
  color: var(--input-color),
68
- [margin-block]: var(--input-spacing-top) var(--input-spacing-bottom),
68
+ line-height: var(--leading-none),
69
+ [padding-block]: var(--input-spacing-top)
70
+ var(--input-spacing-bottom),
69
71
  [padding-inline]: var(--input-spacing-left)
70
72
  var(--input-spacing-right),
71
73
  min-width: 0,
72
- block-size: calc(var(--input-line-height) * var(--input-font-size)),
74
+ min-height: var(--input-min-height),
73
75
  pseudo: (
74
76
  placeholder: (
75
77
  color: var(--input-placeholder-color),
78
+ text-overlow: ellipsis,
76
79
  ),
77
80
  calendar-picker-indicator: (
78
81
  position: absolute,
@@ -280,8 +283,6 @@ $vv-input-text: (
280
283
  label: (
281
284
  position: absolute,
282
285
  z-index: 1,
283
- display: flex,
284
- align-items: center,
285
286
  min-height: var(--input-min-height),
286
287
  pointer-events: none,
287
288
  font-size: inherit,
@@ -308,11 +309,13 @@ $vv-input-text: (
308
309
  focus-within: (
309
310
  element: (
310
311
  label: (
311
- transform: translateY(-0.8em),
312
- font-size: var(--text-12),
312
+ transform: var(--input-floating-label-transform),
313
+ font-size: var(--input-floating-label-font-size),
313
314
  ),
314
315
  input: (
315
- transform: translateY(0.55em),
316
+ [padding-top]: var(--input-floating-padding-top),
317
+ [padding-bottom]:
318
+ var(--input-floating-padding-bottom),
316
319
  pseudo: (
317
320
  placeholder: (
318
321
  opacity: var(--opacity-100),
@@ -324,11 +327,13 @@ $vv-input-text: (
324
327
  dirty: (
325
328
  element: (
326
329
  label: (
327
- transform: translateY(-0.8em),
328
- font-size: var(--text-12),
330
+ transform: var(--input-floating-label-transform),
331
+ font-size: var(--input-floating-label-font-size),
329
332
  ),
330
333
  input: (
331
- transform: translateY(0.55em),
334
+ [padding-top]: var(--input-floating-padding-top),
335
+ [padding-bottom]:
336
+ var(--input-floating-padding-bottom),
332
337
  pseudo: (
333
338
  placeholder: (
334
339
  opacity: var(--opacity-100),
@@ -11,6 +11,7 @@ $vv-select: (
11
11
  label: (
12
12
  _alias: '> label',
13
13
  display: var(--input-label-display),
14
+ align-items: var(--input-label-align-items),
14
15
  font-size: var(--input-label-font-size),
15
16
  color: var(--input-label-color),
16
17
  margin: 0 0 var(--input-label-gap) 0,
@@ -79,7 +80,7 @@ $vv-select: (
79
80
  background-repeat: no-repeat,
80
81
  [background-position]: right var(--input-spacing-right) center,
81
82
  background-size: 1em,
82
- min-height: var(--spacing-50),
83
+ min-height: var(--input-min-height),
83
84
  state: (
84
85
  disabled: (
85
86
  cursor: not-allowed,
@@ -94,6 +95,9 @@ $vv-select: (
94
95
  ),
95
96
  ),
96
97
  ),
98
+ option: (
99
+ _alias: 'select > option',
100
+ ),
97
101
  icon: (
98
102
  _alias: ':where(svg, [data-icon])',
99
103
  margin: var(--input-spacing-top) var(--input-spacing-right)
@@ -129,6 +133,36 @@ $vv-select: (
129
133
  ),
130
134
  ),
131
135
  ),
136
+ multiple: (
137
+ element: (
138
+ wrapper: (
139
+ align-items: flex-start,
140
+ ),
141
+ input: (
142
+ overflow: auto,
143
+ background-image: none,
144
+ padding: 0,
145
+ ),
146
+ option: (
147
+ [padding]: var(--input-spacing-top)
148
+ var(--input-spacing-right) var(--input-spacing-bottom)
149
+ var(--input-spacing-left),
150
+ min-height: var(--input-min-height),
151
+ display: flex,
152
+ align-items: center,
153
+ color: var(--input-color),
154
+ state: (
155
+ checked: (
156
+ color: var(--color-brand),
157
+ background-color: var(--color-surface-brand),
158
+ ),
159
+ disabled: (
160
+ color: var(--input-placeholder-color),
161
+ ),
162
+ ),
163
+ ),
164
+ ),
165
+ ),
132
166
  icon-left: (
133
167
  --input-spacing-left: calc(var(--spacing-sm) * 2 + 1em),
134
168
  ),
@@ -201,6 +235,7 @@ $vv-select: (
201
235
  label: (
202
236
  position: absolute,
203
237
  z-index: 1,
238
+ min-height: var(--input-min-height),
204
239
  pointer-events: none,
205
240
  font-size: inherit,
206
241
  [padding-top]: var(--input-spacing-top),
@@ -212,30 +247,37 @@ $vv-select: (
212
247
  transition: var(--transition-all),
213
248
  ),
214
249
  input: (
215
- pseudo: (
216
- placeholder: (
217
- opacity: var(--opacity-0),
250
+ opacity: var(--opacity-0),
251
+ ),
252
+ ),
253
+ state: (
254
+ focus-within: (
255
+ element: (
256
+ label: (
257
+ transform: var(--input-floating-label-transform),
258
+ font-size: var(--input-floating-label-font-size),
259
+ ),
260
+ input: (
261
+ [padding-top]: var(--input-floating-padding-top),
262
+ [padding-bottom]:
263
+ var(--input-floating-padding-bottom),
264
+ opacity: var(--opacity-100),
218
265
  ),
219
266
  ),
220
267
  ),
221
268
  ),
222
- state: (
269
+ modifier: (
223
270
  dirty: (
224
271
  element: (
225
272
  label: (
226
- transform: translateY(-0.8em),
227
- font-size: var(--text-12),
273
+ transform: var(--input-floating-label-transform),
274
+ font-size: var(--input-floating-label-font-size),
228
275
  ),
229
276
  input: (
230
- [padding-top]:
231
- calc(var(--input-spacing-top) + 0.55em),
277
+ [padding-top]: var(--input-floating-padding-top),
232
278
  [padding-bottom]:
233
- calc(var(--input-spacing-bottom) - 0.55em),
234
- pseudo: (
235
- placeholder: (
236
- opacity: var(--opacity-100),
237
- ),
238
- ),
279
+ var(--input-floating-padding-bottom),
280
+ opacity: var(--opacity-100),
239
281
  ),
240
282
  ),
241
283
  ),
@@ -10,6 +10,7 @@ $vv-textarea: (
10
10
  label: (
11
11
  _alias: '> label',
12
12
  display: var(--input-label-display),
13
+ align-items: var(--input-label-align-items),
13
14
  font-size: var(--input-label-font-size),
14
15
  color: var(--input-label-color),
15
16
  margin: 0 0 var(--input-label-gap) 0,
@@ -34,7 +35,7 @@ $vv-textarea: (
34
35
  background-color: var(--input-background-color),
35
36
  will-change: background-color,
36
37
  transition: var(--transition-colors),
37
- min-height: var(--spacing-50),
38
+ min-height: var(--input-min-height),
38
39
  pseudo: (
39
40
  before: (
40
41
  position: absolute,
@@ -78,6 +79,7 @@ $vv-textarea: (
78
79
  pseudo: (
79
80
  placeholder: (
80
81
  color: var(--input-placeholder-color),
82
+ text-overlow: ellipsis,
81
83
  ),
82
84
  ),
83
85
  state: (
@@ -210,6 +212,7 @@ $vv-textarea: (
210
212
  label: (
211
213
  position: absolute,
212
214
  z-index: 1,
215
+ min-height: var(--input-min-height),
213
216
  pointer-events: none,
214
217
  font-size: inherit,
215
218
  [padding-top]: var(--input-spacing-top),
@@ -235,11 +238,13 @@ $vv-textarea: (
235
238
  focus-within: (
236
239
  element: (
237
240
  label: (
238
- transform: translateY(-0.8em),
239
- font-size: var(--text-12),
241
+ transform: var(--input-floating-label-transform),
242
+ font-size: var(--input-floating-label-font-size),
240
243
  ),
241
244
  input: (
242
- transform: translateY(0.55em),
245
+ [padding-top]: var(--input-floating-padding-top),
246
+ [padding-bottom]:
247
+ var(--input-floating-padding-bottom),
243
248
  pseudo: (
244
249
  placeholder: (
245
250
  opacity: var(--opacity-100),
@@ -251,11 +256,13 @@ $vv-textarea: (
251
256
  dirty: (
252
257
  element: (
253
258
  label: (
254
- transform: translateY(-0.8em),
255
- font-size: var(--text-12),
259
+ transform: var(--input-floating-label-transform),
260
+ font-size: var(--input-floating-label-font-size),
256
261
  ),
257
262
  input: (
258
- transform: translateY(0.55em),
263
+ [padding-top]: var(--input-floating-padding-top),
264
+ [padding-bottom]:
265
+ var(--input-floating-padding-bottom),
259
266
  pseudo: (
260
267
  placeholder: (
261
268
  opacity: var(--opacity-100),
@@ -173,34 +173,40 @@
173
173
 
174
174
  // Transform a map into a list of modifiers
175
175
  @mixin spread-map-into-modifiers(
176
+ $original: null,
176
177
  $map: (),
177
178
  $prefix: '',
178
179
  $key: 'modifier',
179
180
  $block: null,
181
+ $modifier: '',
180
182
  $props: true,
181
183
  $zero-specificity: true,
182
184
  $bps: (
183
185
  xxs: 0,
184
186
  )
185
187
  ) {
188
+ @if not $original {
189
+ $original: $map;
190
+ }
186
191
  @if not $block {
187
192
  $block: &;
188
193
  }
189
194
  @if type-of(map.get($map, $key)) == 'map' {
190
- @each $modifier, $value in map.get($map, $key) {
191
- $selector: $block + '--' + $modifier;
195
+ @each $item, $value in map.get($map, $key) {
196
+ $selector: $block + '--' + $item;
192
197
 
193
- %#{$prefix + '--' + $modifier} {
198
+ %#{$prefix + '--' + $item} {
194
199
  @include spread-map-into-attrs(
195
- $original: $map,
200
+ $original: $original,
196
201
  $map: $value,
197
202
  $prefix: $prefix,
198
- $variant: #{$key}-#{$modifier},
203
+ $variant: #{$key}-#{$item},
199
204
  $deep: true,
200
205
  $ignore: (
201
206
  'state',
202
207
  'breakpoint',
203
208
  'element',
209
+ 'modifier',
204
210
  ),
205
211
  $props: $props
206
212
  );
@@ -208,21 +214,21 @@
208
214
 
209
215
  // map props and attributes
210
216
  @include wrap-with-where(
211
- $selector: $selector + $block,
217
+ $selector: $modifier + $selector + $block,
212
218
  $enabled: $zero-specificity
213
219
  ) {
214
- @extend %#{$prefix + '--' + $modifier};
220
+ @extend %#{$prefix + '--' + $item};
215
221
  }
216
222
 
217
223
  // map elements
218
224
  @if map.get($value, 'element') {
219
225
  @include spread-map-into-elements(
220
- $original: $map,
226
+ $original: $original,
221
227
  $map: $value,
222
- $prefix: #{$prefix}-#{$key}-#{$modifier},
228
+ $prefix: #{$prefix}-#{$key}-#{$item},
223
229
  $key: 'element',
224
230
  $block: $block,
225
- $modifier: $selector,
231
+ $modifier: $modifier + $selector,
226
232
  $props: $props,
227
233
  $zero-specificity: $zero-specificity
228
234
  );
@@ -231,12 +237,12 @@
231
237
  // map states
232
238
  @if map.get($value, 'state') {
233
239
  @include spread-map-into-states(
234
- $original: $map,
240
+ $original: $original,
235
241
  $map: $value,
236
- $prefix: #{$prefix}-#{$key}-#{$modifier},
242
+ $prefix: #{$prefix}-#{$key}-#{$item},
237
243
  $key: 'state',
238
244
  $block: $block,
239
- $modifier: $selector,
245
+ $modifier: $modifier + $selector,
240
246
  $props: $props,
241
247
  $zero-specificity: $zero-specificity
242
248
  );
@@ -246,13 +252,28 @@
246
252
  @if map.get($value, 'breakpoint') {
247
253
  @include spread-map-into-breakpoints(
248
254
  $map: $value,
249
- $prefix: #{$prefix}-#{$key}-#{$modifier},
255
+ $prefix: #{$prefix}-#{$key}-#{$item},
250
256
  $key: 'breakpoint',
251
257
  $block: $selector,
252
258
  $props: $props,
253
259
  $zero-specificity: $zero-specificity
254
260
  );
255
261
  }
262
+
263
+ // map modifiers
264
+ @if map.get($value, 'modifier') {
265
+ @include spread-map-into-modifiers(
266
+ $original: $original,
267
+ $map: $value,
268
+ $prefix: #{$prefix}-#{$key}-#{$item},
269
+ $key: 'modifier',
270
+ $block: $block,
271
+ $modifier: $modifier + $selector,
272
+ $props: $props,
273
+ $zero-specificity: $zero-specificity,
274
+ $bps: $bps
275
+ );
276
+ }
256
277
  }
257
278
  }
258
279
  }