winduum 2.2.0-next.2 → 2.2.0-next.3

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,6 +1,6 @@
1
1
  {
2
2
  "name": "winduum",
3
- "version": "2.2.0-next.2",
3
+ "version": "2.2.0-next.3",
4
4
  "type": "module",
5
5
  "types": "types/index.d.ts",
6
6
  "main": "plugin/index.cjs",
@@ -22,24 +22,24 @@
22
22
  "@floating-ui/dom": "^1.6.13",
23
23
  "@stylistic/stylelint-config": "^2.0.0",
24
24
  "@tailwindcss/container-queries": "^0.1.1",
25
- "@tailwindcss/vite": "^4.0.0",
26
- "@vitejs/plugin-vue": "^5.2.1",
27
- "autoprefixer": "^10.4.20",
28
- "dts-buddy": "^0.5.4",
29
- "eslint": "^9.18.0",
25
+ "@tailwindcss/vite": "^4.1.4",
26
+ "@vitejs/plugin-vue": "^5.2.3",
27
+ "autoprefixer": "^10.4.21",
28
+ "dts-buddy": "^0.6.1",
29
+ "eslint": "^9.25.1",
30
30
  "fast-glob": "^3.3.3",
31
- "neostandard": "^0.12.0",
32
- "postcss": "^8.5.1",
31
+ "neostandard": "^0.12.1",
32
+ "postcss": "^8.5.3",
33
33
  "postcss-custom-media": "^11.0.5",
34
34
  "postcss-import": "^16.1.0",
35
35
  "postcss-nesting": "^13.0.1",
36
36
  "slide-element": "^2.3.1",
37
- "stylelint": "^16.13.2",
38
- "stylelint-config-standard": "^37.0.0",
39
- "tailwindcss": "^4.0.0",
37
+ "stylelint": "^16.19.1",
38
+ "stylelint-config-standard": "^38.0.0",
39
+ "tailwindcss": "^4.1.4",
40
40
  "tailwindcss-animate": "^1.0.7",
41
41
  "typescript": "^5",
42
- "vite": "^6.0.11",
42
+ "vite": "^6.3.4",
43
43
  "vue": "^3.5.13"
44
44
  },
45
45
  "files": [
@@ -7,7 +7,7 @@
7
7
 
8
8
  > li {
9
9
  &:not(:last-child)::after {
10
- mask: var(--x-breadcrumb-marker);
10
+ mask: var(--x-breadcrumb-marker-mask);
11
11
  background-color: var(--x-breadcrumb-marker-background-color, currentColor);
12
12
  margin-inline: var(--x-breadcrumb-gap);
13
13
  inline-size: var(--x-breadcrumb-marker-size);
@@ -1,5 +1,5 @@
1
1
  :root, :host {
2
2
  --x-breadcrumb-marker-size: 0.875rem;
3
- --x-breadcrumb-marker: var(--mask-chevron-right);
3
+ --x-breadcrumb-marker-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" /></svg>');
4
4
  --x-breadcrumb-gap: calc(var(--spacing) * 1);
5
5
  }
@@ -11,8 +11,8 @@
11
11
  text-wrap: pretty;
12
12
 
13
13
  &:has([type="radio"]) {
14
- --x-check-icon: var(--mask-radio);
15
- --x-check-border-radius: 50%;
14
+ --x-check-icon-mask: var(--x-check-radio-icon-mask);
15
+ --x-check-border-radius: var(--x-check-radio-border-radius, 50%);
16
16
  }
17
17
 
18
18
  :where(input) {
@@ -47,7 +47,7 @@
47
47
  inline-size: var(--x-check-icon-size);
48
48
  block-size: var(--x-check-icon-size);
49
49
  color: var(--x-check-icon-color);
50
- mask: var(--x-check-icon);
50
+ mask: var(--x-check-icon-mask);
51
51
  transition: inherit;
52
52
  content: "";
53
53
  background-color: currentColor;
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  &:where([type="checkbox"]):indeterminate {
38
- --x-check-icon: var(--mask-indeterminate);
38
+ --x-check-icon-mask: var(--x-check-indeterminate-icon-mask);
39
39
  }
40
40
 
41
41
  &:is(:checked, [type="checkbox"]:indeterminate) {
@@ -1,7 +1,5 @@
1
1
  :root, :host {
2
2
  --x-check-size: 1.25rem;
3
- --x-check-icon-size: 1.125rem;
4
- --x-check-icon: var(--mask-check);
5
3
  --x-check-gap: calc(var(--spacing) * 3);
6
4
  --x-check-font-size: var(--text-sm);
7
5
  --x-check-line-height: calc(1em + 0.25rem);
@@ -10,4 +8,8 @@
10
8
  --x-check-background-color: currentColor;
11
9
  --x-check-border-color: currentColor;
12
10
  --x-check-outline-width: 2px;
11
+ --x-check-icon-size: 1.125rem;
12
+ --x-check-icon-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg>');
13
+ --x-check-radio-icon-mask: url('data:image/svg+xml, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 160c-53.019 0-96 42.981-96 96v0c0 53.019 42.981 96 96 96v0c53.019 0 96-42.981 96-96v0c0-53.019-42.981-96-96-96z"></path></svg>');
14
+ --x-check-indeterminate-icon-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" stroke-width="2.5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14" /></svg>');
13
15
  }
@@ -10,14 +10,14 @@
10
10
  var(--x-control-file-background-color, currentColor) var(--x-control-file-background-color-opacity, 15%),
11
11
  var(--x-control-file-background-color-mix, transparent)
12
12
  );
13
- block-size: calc(var(--x-control-block-size) - var(--x-control-border-width) * 2);
13
+ block-size: var(--x-control-block-size);
14
14
  padding-inline: var(--x-control-padding-inline);
15
15
  margin-inline: calc(var(--x-control-padding-inline) * -1) var(--x-control-padding-inline);
16
16
  margin-block-start: calc(var(--x-control-padding-block) * -1);
17
17
  border-start-end-radius: var(--x-control-border-radius);
18
18
  border-end-end-radius: var(--x-control-border-radius);
19
19
  transition: var(--transition-background);
20
- cursor: pointer;
20
+ cursor: var(--cursor-pointer, pointer);
21
21
  }
22
22
 
23
23
  &:is(:hover, :focus) {
@@ -3,6 +3,7 @@
3
3
  @import "./props/icon.css";
4
4
  @import "./props/floating.css";
5
5
  @import "./props/select.css";
6
+ @import "./props/select-picker.css";
6
7
  @import "./default.css";
7
8
  @import "./interactive.css";
8
9
  @import "./invalid.css";
@@ -13,3 +14,4 @@
13
14
  @import "./floating-interactive.css";
14
15
  @import "./select.css";
15
16
  @import "./select-multiple.css";
17
+ @import "./select-picker.css";
@@ -0,0 +1,18 @@
1
+ :root, :host {
2
+ --x-control-select-picker-border-width: 1px;
3
+ --x-control-select-picker-border-radius: var(--radius-lg);
4
+ --x-control-select-picker-border-color: currentColor;
5
+ --x-control-select-picker-background-color: var(--color-body-primary);
6
+ --x-control-select-picker-margin-block: 0.25rem;
7
+ --x-control-select-picker-padding-block: 0.25rem;
8
+ --x-control-select-picker-padding-inline: 0.25rem;
9
+ --x-control-select-picker-gap: 0.125rem;
10
+ --x-control-select-picker-scrollbar-color: currentColor var(--color-body-primary);
11
+ --x-control-select-option-padding-block: 0.5rem;
12
+ --x-control-select-option-padding-inline: 0.5rem;
13
+ --x-control-select-option-font-size: var(--text-sm);
14
+ --x-control-select-option-font-weight: var(--font-weight-semibold);
15
+ --x-control-select-option-line-height: calc(1em + 0.125rem);
16
+ --x-control-select-option-border-radius: var(--radius-md);
17
+ --x-control-select-option-hocus-background-color: var(--color-body-secondary);
18
+ }
@@ -1,4 +1,5 @@
1
1
  :root, :host {
2
- --x-control-select-icon-size: 1.5rem;
2
+ --x-control-select-icon-size: 1.25rem;
3
+ --x-control-select-icon-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" stroke="currentColor"><path d="M10.998 15.467c.491.71 1.513.71 2.004 0l3.767-5.453c.581-.843 0-2.013-1.002-2.014H8.234C7.232 8 6.65 9.17 7.231 10.014z" /></svg>');
3
4
  --x-control-select-icon-margin-inline-end: -0.25rem;
4
5
  }
@@ -0,0 +1,94 @@
1
+ .x-control:has(select:not([multiple])) {
2
+ &::after {
3
+ will-change: transform;
4
+ transition: var(--transition-transform);
5
+ }
6
+
7
+ &:has(select:open) {
8
+ &::after {
9
+ transform: rotate(180deg);
10
+ }
11
+ }
12
+
13
+ select {
14
+ &, &::picker(select) {
15
+ appearance: base-select;
16
+ }
17
+
18
+ &::picker-icon {
19
+ display: none;
20
+ }
21
+
22
+ &::picker(select) {
23
+ border-radius: var(--x-control-select-picker-border-radius);
24
+ border:
25
+ var(--x-control-select-picker-border-width) solid
26
+ color-mix(
27
+ in var(--x-control-select-picker-border-color-space, srgb),
28
+ var(--x-control-select-picker-border-color) var(--x-control-select-picker-border-color-opacity, 15%),
29
+ var(--x-control-select-picker-border-color-mix, transparent)
30
+ );
31
+ background-color: var(--x-control-select-picker-background-color);
32
+ margin-block: var(--x-control-select-picker-margin-block);
33
+ padding-block: var(--x-control-select-picker-padding-block);
34
+ padding-inline: var(--x-control-select-picker-padding-inline);
35
+ gap: var(--x-control-select-picker-gap);
36
+ display: flex;
37
+ flex-direction: column;
38
+ cursor: auto;
39
+ transform-origin: top center;
40
+ scrollbar-width: thin;
41
+ scrollbar-color: var(--x-control-select-picker-scrollbar-color);
42
+ will-change: transform, opacity;
43
+ transition:
44
+ opacity var(--default-transition-duration) var(--ease-in-out),
45
+ transform var(--default-transition-duration) var(--ease-out),
46
+ display var(--default-transition-duration) allow-discrete,
47
+ overlay var(--default-transition-duration) allow-discrete;
48
+ }
49
+
50
+ &:not(:open)::picker(select) {
51
+ opacity: 0%;
52
+ transform: scale(0.9);
53
+ display: revert;
54
+ }
55
+
56
+ &:open::picker(select) {
57
+ opacity: 100%;
58
+ transform: scale(1);
59
+
60
+ @starting-style {
61
+ opacity: 0%;
62
+ transform: scale(0.95);
63
+ }
64
+ }
65
+
66
+ option {
67
+ padding-block: var(--x-control-select-option-padding-block);
68
+ padding-inline: var(--x-control-select-option-padding-inline);
69
+ font-size: var(--x-control-select-option-font-size);
70
+ font-weight: var(--x-control-select-option-font-weight);
71
+ line-height: var(--x-control-select-option-line-height);
72
+ border-radius: var(--x-control-select-option-border-radius);
73
+ transition: var(--transition-background), var(--transition-color);
74
+
75
+ &::checkmark {
76
+ display: none;
77
+ }
78
+
79
+ &:hover, &:focus-visible {
80
+ background-color: var(--x-control-select-option-hocus-background-color);
81
+ }
82
+
83
+ &:checked {
84
+ color: var(--x-control-select-option-checked-color, var(--color-accent));
85
+ background-color:
86
+ color-mix(
87
+ in var(--x-control-select-option-checked-background-color-space, srgb),
88
+ var(--x-control-select-option-checked-background-color, var(--color-accent)) var(--x-control-select-option-checked-background-color-opacity, 10%),
89
+ var(--x-control-select-option-checked-background-color-mix, transparent)
90
+ );
91
+ }
92
+ }
93
+ }
94
+ }
@@ -8,7 +8,7 @@
8
8
  &::after {
9
9
  inline-size: var(--x-control-select-icon-size);
10
10
  block-size: var(--x-control-select-icon-size);
11
- mask: var(--x-control-select-icon-mask, var(--mask-angle-down));
11
+ mask: var(--x-control-select-icon-mask);
12
12
  margin-inline: auto var(--x-control-select-icon-margin-inline-end);
13
13
  grid-area: x-control-padding;
14
14
  background-color: currentColor;
@@ -20,4 +20,8 @@
20
20
  :where(.ms-auto) {
21
21
  margin-inline-end: var(--x-control-select-icon-size);
22
22
  }
23
+
24
+ :where(select, option) {
25
+ cursor: var(--cursor-pointer, pointer);
26
+ }
23
27
  }
@@ -25,7 +25,7 @@
25
25
  }
26
26
 
27
27
  &::before {
28
- mask: var(--x-rating-icon);
28
+ mask: var(--x-rating-icon-mask);
29
29
  background-color: currentColor;
30
30
  content: "";
31
31
  }
@@ -3,5 +3,5 @@
3
3
  --x-rating-block-size: 1.25rem;
4
4
  --x-rating-gap: 0.25rem;
5
5
  --x-rating-opacity: 0.2;
6
- --x-rating-icon: var(--mask-star);
6
+ --x-rating-icon-mask: url('data:image/svg+xml, <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd" /></svg>');
7
7
  }
package/src/tailwind.css CHANGED
@@ -1,2 +1,3 @@
1
1
  @import "tailwindcss/utilities.css";
2
+
2
3
  @source "../playground/**"
package/src/test.css CHANGED
@@ -4,8 +4,11 @@
4
4
  @import "./theme/dark.css" layer(theme);
5
5
  @import "./base/reset.css" layer(base);
6
6
  @import "./base/defaults.css" layer(base);
7
- @import "./components/index.css" layer(components);
8
- @import "./utilities/index.css" layer(utilities);
7
+ @import "./components/index.css" layer(utilities);
8
+ @import "./utilities/container/props/default.css" layer(theme);
9
+ @import "./utilities/ripple/keyframes/default.css";
10
+ @import "./utilities/skeleton/props/default.css" layer(theme);
11
+ @import "./utilities/spinner/keyframes/ring.css";
9
12
  @import "../tailwindcss/utilities/index.css";
10
13
  @import "tailwindcss/utilities" layer(utilities);
11
14
  @import "../tailwindcss/variants/dark.css";
@@ -1,5 +1,4 @@
1
1
  @import "./font.css";
2
- @import "./mask.css";
3
2
  @import "./radius.css";
4
3
  @import "./spacing.css";
5
4
  @import "./transition.css";
@@ -12,6 +12,7 @@
12
12
  &::before, &::after {
13
13
  content: "";
14
14
  flex-grow: 1;
15
+ border: 0;
15
16
  border-block-start:
16
17
  1px solid color-mix(
17
18
  in var(--divider-border-block-color-space, srgb),
@@ -22,7 +23,7 @@
22
23
 
23
24
  &:where(.flex-col) {
24
25
  &::before, &::after {
25
- border-block-start: 0;
26
+ border: 0;
26
27
  border-inline-start:
27
28
  1px solid color-mix(
28
29
  in var(--divider-border-inline-color-space, srgb),
@@ -1,6 +1,5 @@
1
1
  @import "./breakpoint.css";
2
2
  @import "./font.css";
3
- @import "./mask.css";
4
3
  @import "./radius.css";
5
4
  @import "./transition.css";
6
5
  @import "./z.css";
@@ -10,6 +10,7 @@
10
10
  &::before, &::after {
11
11
  content: "";
12
12
  flex-grow: 1;
13
+ border: 0;
13
14
  border-block-start:
14
15
  1px solid color-mix(
15
16
  in var(--divider-border-block-color-space, srgb),
@@ -19,11 +20,11 @@
19
20
  }
20
21
  }
21
22
 
22
- @utility divder-vertical {
23
+ @utility divider-vertical {
23
24
  flex-direction: column;
24
25
 
25
26
  &::before, &::after {
26
- border-block-start: 0;
27
+ border: 0;
27
28
  border-inline-start:
28
29
  1px solid color-mix(
29
30
  in var(--divider-border-inline-color-space, srgb),
@@ -1,8 +0,0 @@
1
- :root, :host {
2
- --mask-check: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg>') no-repeat 50% 50% / contain;
3
- --mask-radio: url('data:image/svg+xml, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 160c-53.019 0-96 42.981-96 96v0c0 53.019 42.981 96 96 96v0c53.019 0 96-42.981 96-96v0c0-53.019-42.981-96-96-96z"></path></svg>') no-repeat 50% 50% / contain;
4
- --mask-angle-down: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" stroke="currentColor"><path d="M10.998 15.467c.491.71 1.513.71 2.004 0l3.767-5.453c.581-.843 0-2.013-1.002-2.014H8.234C7.232 8 6.65 9.17 7.231 10.014z" /></svg>') no-repeat 50% 50% / contain;
5
- --mask-chevron-right: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" /></svg>') no-repeat 50% 50% / contain;
6
- --mask-indeterminate: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" stroke-width="2.5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14" /></svg>') no-repeat 50% 50% / contain;
7
- --mask-star: url('data:image/svg+xml, <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd" /></svg>') no-repeat 50% 50% / contain;
8
- }
@@ -1,8 +0,0 @@
1
- @theme {
2
- --mask-check: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg>') no-repeat 50% 50% / contain;
3
- --mask-radio: url('data:image/svg+xml, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 160c-53.019 0-96 42.981-96 96v0c0 53.019 42.981 96 96 96v0c53.019 0 96-42.981 96-96v0c0-53.019-42.981-96-96-96z"></path></svg>') no-repeat 50% 50% / contain;
4
- --mask-angle-down: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" stroke="currentColor"><path d="M10.998 15.467c.491.71 1.513.71 2.004 0l3.767-5.453c.581-.843 0-2.013-1.002-2.014H8.234C7.232 8 6.65 9.17 7.231 10.014z" /></svg>') no-repeat 50% 50% / contain;
5
- --mask-chevron-right: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" /></svg>') no-repeat 50% 50% / contain;
6
- --mask-indeterminate: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" stroke-width="2.5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14" /></svg>') no-repeat 50% 50% / contain;
7
- --mask-star: url('data:image/svg+xml, <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd" /></svg>') no-repeat 50% 50% / contain;
8
- }