@flux-ui/components 3.0.0-next.2 → 3.0.0-next.4

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,7 +1,7 @@
1
1
  {
2
2
  "name": "@flux-ui/components",
3
3
  "description": "A set of opiniated UI components.",
4
- "version": "3.0.0-next.2",
4
+ "version": "3.0.0-next.4",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/basmilius",
@@ -52,9 +52,9 @@
52
52
  "typings": "./dist/index.d.ts",
53
53
  "sideEffects": false,
54
54
  "dependencies": {
55
- "@basmilius/utils": "^1.12.0",
56
- "@flux-ui/internals": "3.0.0-next.0",
57
- "@flux-ui/types": "3.0.0-next.0",
55
+ "@basmilius/utils": "^1.13.0",
56
+ "@flux-ui/internals": "3.0.0-next.4",
57
+ "@flux-ui/types": "3.0.0-next.4",
58
58
  "@fortawesome/fontawesome-common-types": "^6.7.2",
59
59
  "clsx": "^2.1.1",
60
60
  "imask": "^7.6.1",
@@ -63,15 +63,15 @@
63
63
  "vue": "^3.5.13"
64
64
  },
65
65
  "devDependencies": {
66
- "@basmilius/vite-vue-preset": "^2.6.0",
66
+ "@basmilius/vite-vue-preset": "^3.0.0",
67
67
  "@types/lodash-es": "^4.17.12",
68
68
  "@types/luxon": "^3.6.2",
69
69
  "@types/node": "^22.14.1",
70
70
  "@vitejs/plugin-vue": "^5.2.3",
71
71
  "pinia": "^3.0.2",
72
- "sass-embedded": "^1.86.3",
72
+ "sass-embedded": "^1.87.0",
73
73
  "typescript": "^5.8.3",
74
- "vite": "^6.2.6",
75
- "vue-tsc": "^2.2.8"
74
+ "vite": "^6.3.2",
75
+ "vue-tsc": "^2.2.10"
76
76
  }
77
77
  }
@@ -1,10 +1,7 @@
1
1
  @use '$flux/css/mixin';
2
2
 
3
- @value button, buttonIcon, buttonLabel from './base/Button.module.scss';
4
- @value basePaneStructure from './base/Pane.module.scss';
5
-
6
3
  .action {
7
- composes: button;
4
+ composes: button from './base/Button.module.scss';
8
5
 
9
6
  height: 30px;
10
7
  width: 30px;
@@ -28,7 +25,7 @@
28
25
  }
29
26
 
30
27
  .actionIcon {
31
- composes: buttonIcon;
28
+ composes: buttonIcon from './base/Button.module.scss';
32
29
 
33
30
  color: var(--foreground);
34
31
  font-size: 18px;
@@ -39,7 +36,7 @@
39
36
  }
40
37
 
41
38
  .actionLabel {
42
- composes: buttonLabel;
39
+ composes: buttonLabel from './base/Button.module.scss';
43
40
 
44
41
  color: var(--foreground);
45
42
  }
@@ -59,7 +56,7 @@
59
56
  }
60
57
  }
61
58
 
62
- :local(.basePaneStructure) > .actionBar {
59
+ .basePaneStructure > .actionBar {
63
60
  padding: 15px 21px;
64
61
  background: rgb(var(--gray-1));
65
62
  border: 1px solid rgb(var(--gray-2));
@@ -1,9 +1,7 @@
1
1
  @use '$flux/css/mixin';
2
2
 
3
- @value button, buttonIcon, buttonLabel, isSmall, isMedium, isLarge, isXl from './base/Button.module.scss';
4
-
5
3
  .primaryButton {
6
- composes: button;
4
+ composes: button from './base/Button.module.scss';
7
5
 
8
6
  background: rgb(var(--primary-7));
9
7
  border-color: rgb(var(--primary-9));
@@ -26,17 +24,17 @@
26
24
  }
27
25
 
28
26
  .primaryButtonIcon {
29
- composes: buttonIcon;
27
+ composes: buttonIcon from './base/Button.module.scss';
30
28
 
31
29
  color: rgb(var(--primary-0));
32
30
  }
33
31
 
34
32
  .primaryButtonLabel {
35
- composes: buttonLabel;
33
+ composes: buttonLabel from './base/Button.module.scss';
36
34
  }
37
35
 
38
36
  .secondaryButton {
39
- composes: button;
37
+ composes: button from './base/Button.module.scss';
40
38
 
41
39
  background: rgb(var(--gray-0));
42
40
  border-color: rgb(var(--gray-3));
@@ -54,17 +52,17 @@
54
52
  }
55
53
 
56
54
  .secondaryButtonIcon {
57
- composes: buttonIcon;
55
+ composes: buttonIcon from './base/Button.module.scss';
58
56
 
59
57
  color: var(--foreground-prominent);
60
58
  }
61
59
 
62
60
  .secondaryButtonLabel {
63
- composes: buttonLabel;
61
+ composes: buttonLabel from './base/Button.module.scss';
64
62
  }
65
63
 
66
64
  .destructiveButton {
67
- composes: button;
65
+ composes: button from './base/Button.module.scss';
68
66
 
69
67
  background: rgb(var(--gray-0));
70
68
  border-color: rgb(var(--gray-3));
@@ -86,13 +84,13 @@
86
84
  }
87
85
 
88
86
  .destructiveButtonIcon {
89
- composes: buttonIcon;
87
+ composes: buttonIcon from './base/Button.module.scss';
90
88
 
91
89
  color: rgb(var(--danger-7));
92
90
  }
93
91
 
94
92
  .destructiveButtonLabel {
95
- composes: buttonLabel;
93
+ composes: buttonLabel from './base/Button.module.scss';
96
94
 
97
95
  &:only-child {
98
96
  color: rgb(var(--danger-7));
@@ -119,7 +117,7 @@
119
117
  }
120
118
 
121
119
  .linkButton {
122
- composes: button;
120
+ composes: button from './base/Button.module.scss';
123
121
 
124
122
  display: inline-flex;
125
123
  height: unset;
@@ -143,7 +141,7 @@
143
141
  }
144
142
 
145
143
  .linkButtonIcon {
146
- composes: buttonIcon;
144
+ composes: buttonIcon from './base/Button.module.scss';
147
145
 
148
146
  color: rgb(var(--primary-7));
149
147
  transition: inherit;
@@ -155,7 +153,7 @@
155
153
  }
156
154
 
157
155
  .linkButtonLabel {
158
- composes: buttonLabel;
156
+ composes: buttonLabel from './base/Button.module.scss';
159
157
  }
160
158
 
161
159
  .publishButton {
@@ -1,7 +1,7 @@
1
- @value basePaneStructure, basePaneLoader from './base/Pane.module.scss';
1
+ @use '$flux/css/mixin';
2
2
 
3
3
  .calendar {
4
- composes: basePaneStructure;
4
+ composes: basePaneStructure from './base/Pane.module.scss';
5
5
 
6
6
  display: flex;
7
7
  flex-flow: column;
@@ -14,7 +14,7 @@
14
14
  }
15
15
 
16
16
  .calendarLoader {
17
- composes: basePaneLoader;
17
+ composes: basePaneLoader from './base/Pane.module.scss';
18
18
  }
19
19
 
20
20
  .calendarCurrent {
@@ -32,10 +32,8 @@
32
32
  line-height: 1.5em;
33
33
  text-transform: capitalize;
34
34
 
35
- @media (hover: hover) {
36
- &:hover {
37
- color: rgb(var(--primary-7));
38
- }
35
+ @include mixin.hover {
36
+ color: rgb(var(--primary-7));
39
37
  }
40
38
  }
41
39
 
@@ -163,9 +161,7 @@
163
161
  }
164
162
  }
165
163
 
166
- @media (hover: hover) {
167
- &:hover {
168
- background: rgb(var(--primary-3));
169
- }
164
+ @include mixin.hover {
165
+ background: rgb(var(--primary-3));
170
166
  }
171
167
  }
@@ -1,7 +1,5 @@
1
1
  @use '$flux/css/mixin';
2
2
 
3
- @value basePane from './base/Pane.module.scss';
4
-
5
3
  .expandable {
6
4
  display: flex;
7
5
  flex-flow: column;
@@ -71,15 +69,15 @@
71
69
  padding: 0 21px 21px;
72
70
  }
73
71
 
74
- :local(.basePane) > .expandable {
72
+ .basePane > .expandable {
75
73
  border-radius: inherit;
76
74
  }
77
75
 
78
- :local(.basePane) > .expandable .expandableHeader {
76
+ .basePane > .expandable .expandableHeader {
79
77
  border-radius: inherit;
80
78
  }
81
79
 
82
- :local(.basePane) > .expandableOpened .expandableHeader {
80
+ .basePane > .expandableOpened .expandableHeader {
83
81
  border-bottom-left-radius: 0;
84
82
  border-bottom-right-radius: 0;
85
83
  }
@@ -101,12 +99,12 @@
101
99
  }
102
100
  }
103
101
 
104
- :local(.basePane) > .expandableGroup:first-child .expandable:first-child .expandableHeader {
102
+ .basePane > .expandableGroup:first-child .expandable:first-child .expandableHeader {
105
103
  border-top-left-radius: var(--radius);
106
104
  border-top-right-radius: var(--radius);
107
105
  }
108
106
 
109
- :local(.basePane) > .expandableGroup:last-child .expandable:not(.expandableOpened):last-child .expandableHeader {
107
+ .basePane > .expandableGroup:last-child .expandable:not(.expandableOpened):last-child .expandableHeader {
110
108
  border-bottom-left-radius: var(--radius);
111
109
  border-bottom-right-radius: var(--radius);
112
110
  }
@@ -1,5 +1,3 @@
1
- @value basePaneStructure from './base/Pane.module.scss';
2
-
3
1
  .filter {
4
2
  max-height: 50dvh;
5
3
  max-width: 100%;
@@ -1,8 +1,5 @@
1
1
  @use '$flux/css/mixin';
2
2
 
3
- @value button, buttonLabel from './base/Button.module.scss';
4
- @value basePaneStructure from './base/Pane.module.scss';
5
-
6
3
  %-form-input-group-inner-styles {
7
4
  height: 100%;
8
5
  min-height: unset;
@@ -29,6 +26,7 @@
29
26
 
30
27
  .form {
31
28
  composes: formStructureElement;
29
+
32
30
  gap: 42px;
33
31
  }
34
32
 
@@ -40,13 +38,14 @@
40
38
  .formColumn,
41
39
  .formSection {
42
40
  composes: formStructureElement;
41
+
43
42
  gap: 18px;
44
43
  }
45
44
 
46
45
  .form,
47
46
  .formColumn,
48
47
  .formSection {
49
- > :local(.button) {
48
+ > .button {
50
49
  align-self: flex-start;
51
50
  }
52
51
  }
@@ -63,6 +62,13 @@
63
62
  font-weight: 800;
64
63
  }
65
64
 
65
+ @include mixin.breakpoint-down(sm) {
66
+ .formRow {
67
+ flex-flow: column;
68
+ gap: 18px;
69
+ }
70
+ }
71
+
66
72
  .formField {
67
73
  display: flex;
68
74
  flex: 1 1 0;
@@ -106,12 +112,15 @@
106
112
 
107
113
  .formFieldAddition {
108
114
  display: flex;
115
+ margin-top: 3px;
116
+ margin-bottom: 3px;
109
117
  gap: 9px;
110
118
  font-size: 14px;
119
+ line-height: 24px;
111
120
  }
112
121
 
113
122
  .formFieldAdditionIcon {
114
- margin-top: 3px;
123
+ margin-top: 4px;
115
124
  }
116
125
 
117
126
  .formFieldAdditionError {
@@ -126,6 +135,10 @@
126
135
  color: var(--foreground-secondary);
127
136
  }
128
137
 
138
+ .formFieldAddition + .formFieldAddition {
139
+ margin-top: 0;
140
+ }
141
+
129
142
  .formInput {
130
143
  position: relative;
131
144
  display: block;
@@ -283,25 +296,25 @@
283
296
 
284
297
  @include mixin.focus-ring(-1px, true);
285
298
 
286
- > :is(.formInput, .formSelect, :local(.button)) {
299
+ > :is(.formInput, .formSelect, .button) {
287
300
  @extend %-form-input-group-inner-styles;
288
301
 
289
- + :is(:local(.button), :local(.buttonGroup)) {
302
+ + :is(.button, .buttonGroup) {
290
303
  margin: 0;
291
304
  border-left: 1px solid rgb(var(--gray-3));
292
305
  }
293
306
  }
294
307
 
295
- > :local(.buttonGroup) > :local(.button) {
308
+ > .buttonGroup > .button {
296
309
  @extend %-form-input-group-inner-styles;
297
310
 
298
- + :local(.button) {
311
+ + .button {
299
312
  margin: 0;
300
313
  border-left: 1px solid rgb(var(--gray-3));
301
314
  }
302
315
  }
303
316
 
304
- > :local(.buttonGroup):not(:first-child) > :local(.button):first-child {
317
+ > .buttonGroup:not(:first-child) > .button:first-child {
305
318
  border-top-left-radius: 0;
306
319
  border-bottom-left-radius: 0;
307
320
  }
@@ -446,7 +459,7 @@
446
459
  }
447
460
 
448
461
  .formSelectPopup {
449
- composes: basePaneStructure;
462
+ composes: basePaneStructure from './base/Pane.module.scss';
450
463
 
451
464
  position: fixed;
452
465
  display: block;
@@ -482,7 +495,7 @@
482
495
  inset: -1px;
483
496
  pointer-events: none;
484
497
 
485
- :local(.buttonLabel) {
498
+ .buttonLabel {
486
499
  overflow: hidden;
487
500
  text-overflow: ellipsis;
488
501
  white-space: nowrap;
@@ -595,6 +608,7 @@
595
608
  }
596
609
 
597
610
  .quantitySelector {
611
+ min-width: max-content;
598
612
  align-self: center;
599
613
  justify-self: center;
600
614
  border: 1px solid rgb(var(--gray-3));
@@ -1,7 +1,5 @@
1
1
  @use '$flux/css/mixin';
2
2
 
3
- @value placeholder from './Placeholder.module.scss';
4
-
5
3
  .gallery {
6
4
  display: grid;
7
5
  gap: 9px;
@@ -9,7 +7,7 @@
9
7
  }
10
8
 
11
9
  .galleryAdd {
12
- composes: placeholder;
10
+ composes: placeholder from './Placeholder.module.scss';
13
11
 
14
12
  aspect-ratio: 1 / 1;
15
13
  color: rgb(var(--gray-7));
@@ -1,104 +1,100 @@
1
- @value basePane from './base/Pane.module.scss';
2
-
3
- @layer flux-base {
4
- .icon {
5
- height: 1em;
6
- width: 1em;
7
- flex-shrink: 0;
8
- font-size: 20px;
9
- line-height: 1;
10
- }
1
+ .icon {
2
+ height: 1em;
3
+ width: 1em;
4
+ flex-shrink: 0;
5
+ font-size: 20px;
6
+ line-height: 1;
7
+ }
11
8
 
12
- .fontAwesomeIcon {
13
- composes: icon;
9
+ .fontAwesomeIcon {
10
+ composes: icon;
14
11
 
15
- display: inline-block;
16
- }
12
+ display: inline-block;
13
+ }
17
14
 
18
- .materialSymbolIcon {
19
- composes: icon;
20
-
21
- display: inline-flex;
22
- color: currentColor;
23
- font-family: 'Material Symbols Outlined', sans-serif;
24
- font-weight: 400;
25
- font-style: normal;
26
- user-select: none;
27
- -webkit-font-feature-settings: 'liga';
28
- -webkit-font-smoothing: antialiased;
29
- }
15
+ .materialSymbolIcon {
16
+ composes: icon;
17
+
18
+ display: inline-flex;
19
+ color: currentColor;
20
+ font-family: 'Material Symbols Outlined', sans-serif;
21
+ font-weight: 400;
22
+ font-style: normal;
23
+ user-select: none;
24
+ -webkit-font-feature-settings: 'liga';
25
+ -webkit-font-smoothing: antialiased;
26
+ }
30
27
 
31
- .iconBoxed {
32
- composes: basePane;
28
+ .iconBoxed {
29
+ composes: basePane from './base/Pane.module.scss';
33
30
 
34
- display: flex;
35
- height: 1em;
36
- width: 1em;
37
- align-items: center;
38
- flex-shrink: 0;
39
- justify-content: center;
40
- font-size: 42px;
31
+ display: flex;
32
+ height: 1em;
33
+ width: 1em;
34
+ align-items: center;
35
+ flex-shrink: 0;
36
+ justify-content: center;
37
+ font-size: 42px;
41
38
 
42
- .icon {
43
- font-size: .33em;
44
- }
39
+ .icon {
40
+ font-size: .33em;
41
+ }
45
42
 
46
- .materialSymbolIcon {
47
- font-size: .5em;
48
- }
43
+ .materialSymbolIcon {
44
+ font-size: .5em;
49
45
  }
46
+ }
50
47
 
51
- .iconBoxedDefault {
52
- composes: iconBoxed;
48
+ .iconBoxedDefault {
49
+ composes: iconBoxed;
53
50
 
54
- box-shadow: var(--shadow-sm);
55
- }
51
+ box-shadow: var(--shadow-sm);
52
+ }
56
53
 
57
- .iconBoxedColored {
58
- composes: iconBoxed;
54
+ .iconBoxedColored {
55
+ composes: iconBoxed;
59
56
 
60
- border: 0;
61
- }
57
+ border: 0;
58
+ }
62
59
 
63
- .iconBoxedGray {
64
- composes: iconBoxedColored;
60
+ .iconBoxedGray {
61
+ composes: iconBoxedColored;
65
62
 
66
- background: rgb(var(--gray-2));
67
- color: var(--foreground);
68
- }
63
+ background: rgb(var(--gray-2));
64
+ color: var(--foreground);
65
+ }
69
66
 
70
- .iconBoxedPrimary {
71
- composes: iconBoxedColored;
67
+ .iconBoxedPrimary {
68
+ composes: iconBoxedColored;
72
69
 
73
- background: rgb(var(--primary-2));
74
- color: rgb(var(--primary-10));
75
- }
70
+ background: rgb(var(--primary-2));
71
+ color: rgb(var(--primary-10));
72
+ }
76
73
 
77
- .iconBoxedDanger {
78
- composes: iconBoxedColored;
74
+ .iconBoxedDanger {
75
+ composes: iconBoxedColored;
79
76
 
80
- background: rgb(var(--danger-2));
81
- color: rgb(var(--danger-10));
82
- }
77
+ background: rgb(var(--danger-2));
78
+ color: rgb(var(--danger-10));
79
+ }
83
80
 
84
- .iconBoxedInfo {
85
- composes: iconBoxedColored;
81
+ .iconBoxedInfo {
82
+ composes: iconBoxedColored;
86
83
 
87
- background: rgb(var(--info-2));
88
- color: rgb(var(--info-10));
89
- }
84
+ background: rgb(var(--info-2));
85
+ color: rgb(var(--info-10));
86
+ }
90
87
 
91
- .iconBoxedSuccess {
92
- composes: iconBoxedColored;
88
+ .iconBoxedSuccess {
89
+ composes: iconBoxedColored;
93
90
 
94
- background: rgb(var(--success-2));
95
- color: rgb(var(--success-10));
96
- }
91
+ background: rgb(var(--success-2));
92
+ color: rgb(var(--success-10));
93
+ }
97
94
 
98
- .iconBoxedWarning {
99
- composes: iconBoxedColored;
95
+ .iconBoxedWarning {
96
+ composes: iconBoxedColored;
100
97
 
101
- background: rgb(var(--warning-2));
102
- color: rgb(var(--warning-10));
103
- }
98
+ background: rgb(var(--warning-2));
99
+ color: rgb(var(--warning-10));
104
100
  }