fokus-styles 2.6.2 → 2.7.0
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/README.md +5 -0
- package/dist/css/components.css +534 -27
- package/dist/css/components.min.css +1 -1
- package/dist/css/fokus-components.css +534 -27
- package/dist/css/fokus-components.min.css +1 -1
- package/dist/css/fokus-core.css +42 -0
- package/dist/css/fokus-core.min.css +1 -1
- package/dist/css/fokus-dark.css +42 -0
- package/dist/css/fokus-dark.min.css +1 -1
- package/dist/css/fokus-helpers.css +646 -0
- package/dist/css/fokus-helpers.min.css +2 -0
- package/dist/css/fokus-rtl.css +9667 -2716
- package/dist/css/fokus-rtl.min.css +1 -1
- package/dist/css/fokus-utilities.css +9175 -2682
- package/dist/css/fokus-utilities.min.css +1 -1
- package/dist/css/fokus.css +9893 -2799
- package/dist/css/fokus.min.css +1 -1
- package/dist/css/forms.css +206 -28
- package/dist/css/forms.min.css +1 -1
- package/dist/css/helpers.css +9175 -2682
- package/dist/css/helpers.min.css +1 -1
- package/dist/css/layout.css +42 -0
- package/dist/css/layout.min.css +1 -1
- package/dist/js/fokus.js +91 -69
- package/dist/js/fokus.min.js +19 -19
- package/package.json +2 -1
- package/packages/fokus-components/scss/components/_button-group.scss +12 -0
- package/packages/fokus-components/scss/components/_buttons.scss +39 -6
- package/packages/fokus-components/scss/components/_datepicker.scss +47 -1
- package/packages/fokus-components/scss/components/_dropdown.scss +212 -6
- package/packages/fokus-components/scss/components/_index.scss +1 -0
- package/packages/fokus-components/scss/components/_menu.scss +95 -0
- package/packages/fokus-components/scss/components/_pagination.scss +43 -16
- package/packages/fokus-components/scss/components/_segmented-control.scss +16 -1
- package/packages/fokus-components/scss/components/_tabs.scss +58 -0
- package/packages/fokus-components/scss/components/_tag.scss +32 -0
- package/packages/fokus-components/scss/forms/_forms.scss +155 -28
- package/packages/fokus-components/scss/forms/_range.scss +29 -0
- package/packages/fokus-core/scss/base/_motion.scss +3 -1
- package/packages/fokus-core/scss/settings/_config.scss +39 -1
- package/packages/fokus-core/scss/settings/_index.scss +1 -0
- package/packages/fokus-core/scss/settings/_utilities.scss +86 -0
- package/packages/fokus-core/scss/themes/_dark.scss +9 -0
- package/packages/fokus-core/scss/tokens/_root.scss +23 -0
- package/packages/fokus-js/js/combobox.js +2 -6
- package/packages/fokus-js/js/command-palette.js +2 -6
- package/packages/fokus-js/js/core/positioning.d.ts +2 -0
- package/packages/fokus-js/js/core/positioning.js +2 -2
- package/packages/fokus-js/js/core/theme.js +8 -0
- package/packages/fokus-js/js/datatable.js +6 -2
- package/packages/fokus-js/js/datepicker.js +13 -5
- package/packages/fokus-js/js/dropdown.js +37 -5
- package/packages/fokus-js/js/nested-menu.js +2 -6
- package/packages/fokus-js/js/notification-center.js +2 -6
- package/packages/fokus-js/js/pagination.js +15 -9
- package/packages/fokus-js/js/popover.js +2 -6
- package/packages/fokus-js/js/select.js +4 -0
- package/packages/fokus-js/js/tabs.js +4 -4
- package/packages/fokus-js/js/tooltip.js +2 -6
- package/packages/fokus-utilities/scss/utilities/_api.scss +62 -69
- package/packages/fokus-utilities/scss/utilities/_borders.scss +39 -0
- package/packages/fokus-utilities/scss/utilities/_colors.scss +27 -0
- package/packages/fokus-utilities/scss/utilities/_display.scss +20 -16
- package/packages/fokus-utilities/scss/utilities/_effects.scss +53 -0
- package/packages/fokus-utilities/scss/utilities/_flex.scss +50 -35
- package/packages/fokus-utilities/scss/utilities/_generated.scss +21 -0
- package/packages/fokus-utilities/scss/utilities/_grid.scss +25 -0
- package/packages/fokus-utilities/scss/utilities/_helpers.scss +35 -0
- package/packages/fokus-utilities/scss/utilities/_index.scss +11 -0
- package/packages/fokus-utilities/scss/utilities/_interactivity.scss +51 -0
- package/packages/fokus-utilities/scss/utilities/_layout.scss +61 -0
- package/packages/fokus-utilities/scss/utilities/_motion.scss +51 -0
- package/packages/fokus-utilities/scss/utilities/_position.scss +6 -6
- package/packages/fokus-utilities/scss/utilities/_print.scss +22 -18
- package/packages/fokus-utilities/scss/utilities/_shadow.scss +7 -3
- package/packages/fokus-utilities/scss/utilities/_sizing.scss +46 -0
- package/packages/fokus-utilities/scss/utilities/_spacing.scss +40 -113
- package/packages/fokus-utilities/scss/utilities/_states.scss +26 -10
- package/packages/fokus-utilities/scss/utilities/_transforms.scss +67 -0
- package/packages/fokus-utilities/scss/utilities/_typography.scss +72 -94
- package/scss/entries/helpers-entry.scss +5 -0
- package/scss/entries/rtl-entry.scss +6 -3
|
@@ -9,9 +9,47 @@
|
|
|
9
9
|
@layer components {
|
|
10
10
|
.fs-tabs {
|
|
11
11
|
display: flex;
|
|
12
|
+
max-inline-size: 100%;
|
|
13
|
+
overflow-x: auto;
|
|
14
|
+
scrollbar-width: thin;
|
|
12
15
|
border-bottom: var(--fs-border-width) solid var(--fs-color-border-default);
|
|
13
16
|
}
|
|
14
17
|
|
|
18
|
+
.fs-tabs .fs-nav-link { flex: 0 0 auto; }
|
|
19
|
+
|
|
20
|
+
.fs-tabs-boxed {
|
|
21
|
+
border: var(--fs-border-width) solid var(--fs-color-border-default);
|
|
22
|
+
border-radius: var(--fs-radius-md);
|
|
23
|
+
padding: 0.25rem;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.fs-tabs-boxed .fs-nav-link,
|
|
27
|
+
.fs-tabs-toggle .fs-nav-link {
|
|
28
|
+
margin-block-end: 0;
|
|
29
|
+
border: 0;
|
|
30
|
+
border-radius: var(--fs-radius-sm);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.fs-tabs-boxed .fs-nav-link.is-active,
|
|
34
|
+
.fs-tabs-toggle .fs-nav-link.is-active {
|
|
35
|
+
color: var(--fs-color-text);
|
|
36
|
+
background-color: var(--fs-color-surface);
|
|
37
|
+
box-shadow: var(--fs-shadow-sm);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.fs-tabs-toggle {
|
|
41
|
+
gap: 0;
|
|
42
|
+
padding: 0.25rem;
|
|
43
|
+
border: 0;
|
|
44
|
+
border-radius: var(--fs-radius-md);
|
|
45
|
+
background-color: var(--fs-color-subtle);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.fs-tabs-toggle .fs-nav-link {
|
|
49
|
+
flex: 1 1 0;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
}
|
|
52
|
+
|
|
15
53
|
.fs-tabs .fs-nav-link {
|
|
16
54
|
margin-bottom: -1px;
|
|
17
55
|
border-bottom: 2px solid transparent;
|
|
@@ -77,6 +115,26 @@
|
|
|
77
115
|
text-align: center;
|
|
78
116
|
}
|
|
79
117
|
|
|
118
|
+
.fs-tabs-vertical {
|
|
119
|
+
flex-direction: column;
|
|
120
|
+
align-items: stretch;
|
|
121
|
+
overflow-x: visible;
|
|
122
|
+
border-inline-start: var(--fs-border-width) solid var(--fs-color-border-default);
|
|
123
|
+
border-block-end: 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.fs-tabs-vertical .fs-nav-link {
|
|
127
|
+
justify-content: flex-start;
|
|
128
|
+
margin-block-end: 0;
|
|
129
|
+
margin-inline-start: -1px;
|
|
130
|
+
border-block-end: 0;
|
|
131
|
+
border-inline-start: 2px solid transparent;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.fs-tabs-vertical .fs-nav-link.is-active {
|
|
135
|
+
border-inline-start-color: var(--fs-color-primary);
|
|
136
|
+
}
|
|
137
|
+
|
|
80
138
|
// Tamanhos — mesma escala sm/lg dos outros componentes.
|
|
81
139
|
.fs-tabs-sm .fs-nav-link {
|
|
82
140
|
padding: 6px 10px;
|
|
@@ -22,6 +22,38 @@
|
|
|
22
22
|
padding-inline-end: var(--fs-tag-padding-inline-end);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
.fs-tag-rounded {
|
|
26
|
+
--fs-badge-radius: 999px;
|
|
27
|
+
--fs-tag-padding-inline-start: 8px;
|
|
28
|
+
--fs-tag-padding-inline-end: 8px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.fs-tag-addons {
|
|
32
|
+
--fs-tag-addon-padding-inline: 8px;
|
|
33
|
+
|
|
34
|
+
display: inline-flex;
|
|
35
|
+
align-items: stretch;
|
|
36
|
+
gap: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.fs-tag-addons > .fs-tag {
|
|
40
|
+
--fs-tag-padding-inline-start: var(--fs-tag-addon-padding-inline);
|
|
41
|
+
--fs-tag-padding-inline-end: var(--fs-tag-addon-padding-inline);
|
|
42
|
+
|
|
43
|
+
min-inline-size: 0;
|
|
44
|
+
border-radius: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.fs-tag-addons > .fs-tag:first-child {
|
|
48
|
+
border-start-start-radius: var(--fs-badge-radius);
|
|
49
|
+
border-end-start-radius: var(--fs-badge-radius);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.fs-tag-addons > .fs-tag:last-child {
|
|
53
|
+
border-start-end-radius: var(--fs-badge-radius);
|
|
54
|
+
border-end-end-radius: var(--fs-badge-radius);
|
|
55
|
+
}
|
|
56
|
+
|
|
25
57
|
// O texto fica em um elemento próprio quando a tag puder ser truncada. A
|
|
26
58
|
// string integral permanece no DOM, portanto continua disponível para AT.
|
|
27
59
|
.fs-tag-label {
|
|
@@ -90,39 +90,87 @@
|
|
|
90
90
|
display: block;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
.fs-form-control
|
|
93
|
+
.fs-form-control,
|
|
94
|
+
.fs-form-textarea,
|
|
95
|
+
.fs-form-date,
|
|
96
|
+
.fs-form-time {
|
|
94
97
|
width: 100%;
|
|
95
98
|
min-width: 0;
|
|
96
99
|
height: var(--fs-control-height);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
min-block-size: var(--fs-control-height);
|
|
101
|
+
padding-block: 0;
|
|
102
|
+
padding-inline: var(--fs-control-padding-x);
|
|
103
|
+
border: var(--fs-border-width) solid var(--fs-control-border-color);
|
|
104
|
+
border-radius: var(--fs-control-radius);
|
|
100
105
|
color: var(--fs-color-text);
|
|
101
|
-
background-color: var(--fs-
|
|
106
|
+
background-color: var(--fs-control-bg);
|
|
102
107
|
font-size: $font-size-md;
|
|
103
108
|
font-weight: $font-weight-medium;
|
|
109
|
+
line-height: 1.35;
|
|
110
|
+
transition: var(--fs-control-transition);
|
|
111
|
+
color-scheme: light;
|
|
104
112
|
}
|
|
105
113
|
|
|
106
|
-
.fs-form-control
|
|
107
|
-
|
|
114
|
+
[data-theme="dark"] .fs-form-control,
|
|
115
|
+
[data-theme="dark"] .fs-form-textarea,
|
|
116
|
+
[data-theme="dark"] .fs-form-date,
|
|
117
|
+
[data-theme="dark"] .fs-form-time,
|
|
118
|
+
[data-fs-theme="dark"] .fs-form-control,
|
|
119
|
+
[data-fs-theme="dark"] .fs-form-textarea,
|
|
120
|
+
[data-fs-theme="dark"] .fs-form-date,
|
|
121
|
+
[data-fs-theme="dark"] .fs-form-time {
|
|
122
|
+
color-scheme: dark;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.fs-form-textarea {
|
|
126
|
+
height: auto;
|
|
127
|
+
min-block-size: 96px;
|
|
128
|
+
padding-block: var(--fs-space-2);
|
|
129
|
+
resize: vertical;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.fs-form-control::placeholder,
|
|
133
|
+
.fs-form-textarea::placeholder {
|
|
134
|
+
color: var(--fs-control-placeholder-color);
|
|
135
|
+
opacity: 1;
|
|
108
136
|
}
|
|
109
137
|
|
|
110
|
-
.fs-form-control:focus-visible
|
|
138
|
+
.fs-form-control:focus-visible,
|
|
139
|
+
.fs-form-textarea:focus-visible,
|
|
140
|
+
.fs-form-date:focus-visible,
|
|
141
|
+
.fs-form-time:focus-visible {
|
|
111
142
|
@include focus-ring;
|
|
112
143
|
}
|
|
113
144
|
|
|
114
|
-
.fs-form-control:disabled
|
|
145
|
+
.fs-form-control:disabled,
|
|
146
|
+
.fs-form-textarea:disabled,
|
|
147
|
+
.fs-form-date:disabled,
|
|
148
|
+
.fs-form-time:disabled {
|
|
115
149
|
color: var(--fs-color-muted);
|
|
116
150
|
background-color: var(--fs-color-subtle);
|
|
117
|
-
opacity: var(--fs-disabled-opacity);
|
|
151
|
+
opacity: var(--fs-control-disabled-opacity);
|
|
118
152
|
pointer-events: none;
|
|
119
153
|
}
|
|
120
154
|
|
|
121
|
-
.fs-form-control:read-only
|
|
155
|
+
.fs-form-control:read-only,
|
|
156
|
+
.fs-form-textarea:read-only,
|
|
157
|
+
.fs-form-date:read-only,
|
|
158
|
+
.fs-form-time:read-only {
|
|
122
159
|
background-color: var(--fs-color-subtle);
|
|
123
160
|
cursor: default;
|
|
124
161
|
}
|
|
125
162
|
|
|
163
|
+
.fs-form-control[type="search"] {
|
|
164
|
+
appearance: auto;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.fs-form-control[type="date"],
|
|
168
|
+
.fs-form-control[type="time"],
|
|
169
|
+
.fs-form-date,
|
|
170
|
+
.fs-form-time {
|
|
171
|
+
accent-color: var(--fs-color-primary);
|
|
172
|
+
}
|
|
173
|
+
|
|
126
174
|
.fs-floating-label {
|
|
127
175
|
position: relative;
|
|
128
176
|
}
|
|
@@ -143,25 +191,49 @@
|
|
|
143
191
|
}
|
|
144
192
|
|
|
145
193
|
.fs-form-control[aria-invalid="true"],
|
|
194
|
+
.fs-form-textarea[aria-invalid="true"],
|
|
195
|
+
.fs-form-date[aria-invalid="true"],
|
|
196
|
+
.fs-form-time[aria-invalid="true"],
|
|
146
197
|
.fs-was-validated .fs-form-control:invalid {
|
|
147
|
-
border-color: var(--fs-color
|
|
198
|
+
border-color: var(--fs-control-invalid-color);
|
|
148
199
|
}
|
|
149
200
|
|
|
150
201
|
.fs-form-control[aria-invalid="false"],
|
|
202
|
+
.fs-form-textarea[aria-invalid="false"],
|
|
203
|
+
.fs-form-date[aria-invalid="false"],
|
|
204
|
+
.fs-form-time[aria-invalid="false"],
|
|
151
205
|
.fs-was-validated .fs-form-control:valid {
|
|
152
|
-
border-color: var(--fs-color
|
|
206
|
+
border-color: var(--fs-control-valid-color);
|
|
153
207
|
}
|
|
154
208
|
|
|
155
209
|
.fs-form-control-sm {
|
|
156
210
|
height: var(--fs-control-height-sm);
|
|
211
|
+
min-block-size: var(--fs-control-height-sm);
|
|
212
|
+
padding-inline: var(--fs-control-padding-x-sm);
|
|
157
213
|
font-size: $font-size-xs;
|
|
158
214
|
}
|
|
159
215
|
|
|
160
216
|
.fs-form-control-lg {
|
|
161
217
|
height: var(--fs-control-height-lg);
|
|
218
|
+
min-block-size: var(--fs-control-height-lg);
|
|
219
|
+
padding-inline: var(--fs-control-padding-x-lg);
|
|
162
220
|
font-size: $font-size-md;
|
|
163
221
|
}
|
|
164
222
|
|
|
223
|
+
.fs-form-control-xs {
|
|
224
|
+
height: var(--fs-control-height-xs);
|
|
225
|
+
min-block-size: var(--fs-control-height-xs);
|
|
226
|
+
padding-inline: var(--fs-control-padding-x-xs);
|
|
227
|
+
font-size: $font-size-xs;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.fs-form-control-xl {
|
|
231
|
+
height: var(--fs-control-height-xl);
|
|
232
|
+
min-block-size: var(--fs-control-height-xl);
|
|
233
|
+
padding-inline: var(--fs-control-padding-x-xl);
|
|
234
|
+
font-size: $font-size-lg;
|
|
235
|
+
}
|
|
236
|
+
|
|
165
237
|
.fs-form-size-sm {
|
|
166
238
|
width: 120px;
|
|
167
239
|
}
|
|
@@ -205,15 +277,24 @@
|
|
|
205
277
|
justify-content: space-between;
|
|
206
278
|
width: 100%;
|
|
207
279
|
height: var(--fs-control-height);
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
280
|
+
min-block-size: var(--fs-control-height);
|
|
281
|
+
padding-block: 0;
|
|
282
|
+
padding-inline: var(--fs-control-padding-x);
|
|
283
|
+
border: var(--fs-border-width) solid var(--fs-control-border-color);
|
|
284
|
+
border-radius: var(--fs-control-radius);
|
|
211
285
|
color: var(--fs-color-text);
|
|
212
|
-
background-color: var(--fs-
|
|
286
|
+
background-color: var(--fs-control-bg);
|
|
213
287
|
font-size: $font-size-md;
|
|
214
288
|
font-weight: $font-weight-medium;
|
|
215
289
|
text-align: left;
|
|
216
290
|
cursor: pointer;
|
|
291
|
+
transition: var(--fs-control-transition);
|
|
292
|
+
color-scheme: light;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
[data-theme="dark"] .fs-form-select,
|
|
296
|
+
[data-fs-theme="dark"] .fs-form-select {
|
|
297
|
+
color-scheme: dark;
|
|
217
298
|
}
|
|
218
299
|
|
|
219
300
|
.fs-form-select::after {
|
|
@@ -241,14 +322,32 @@
|
|
|
241
322
|
|
|
242
323
|
.fs-form-select-sm {
|
|
243
324
|
height: var(--fs-control-height-sm);
|
|
325
|
+
min-block-size: var(--fs-control-height-sm);
|
|
326
|
+
padding-inline: var(--fs-control-padding-x-sm);
|
|
244
327
|
font-size: $font-size-xs;
|
|
245
328
|
}
|
|
246
329
|
|
|
247
330
|
.fs-form-select-lg {
|
|
248
331
|
height: var(--fs-control-height-lg);
|
|
332
|
+
min-block-size: var(--fs-control-height-lg);
|
|
333
|
+
padding-inline: var(--fs-control-padding-x-lg);
|
|
249
334
|
font-size: $font-size-md;
|
|
250
335
|
}
|
|
251
336
|
|
|
337
|
+
.fs-form-select-xs {
|
|
338
|
+
height: var(--fs-control-height-xs);
|
|
339
|
+
min-block-size: var(--fs-control-height-xs);
|
|
340
|
+
padding-inline: var(--fs-control-padding-x-xs);
|
|
341
|
+
font-size: $font-size-xs;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
.fs-form-select-xl {
|
|
345
|
+
height: var(--fs-control-height-xl);
|
|
346
|
+
min-block-size: var(--fs-control-height-xl);
|
|
347
|
+
padding-inline: var(--fs-control-padding-x-xl);
|
|
348
|
+
font-size: $font-size-lg;
|
|
349
|
+
}
|
|
350
|
+
|
|
252
351
|
.fs-file-upload {
|
|
253
352
|
position: relative;
|
|
254
353
|
display: inline-flex;
|
|
@@ -356,10 +455,11 @@
|
|
|
356
455
|
.fs-input-group-text {
|
|
357
456
|
display: flex;
|
|
358
457
|
align-items: center;
|
|
359
|
-
|
|
360
|
-
|
|
458
|
+
min-block-size: var(--fs-control-height);
|
|
459
|
+
padding-inline: var(--fs-control-padding-x);
|
|
460
|
+
border: var(--fs-border-width) solid var(--fs-control-border-color);
|
|
361
461
|
color: var(--fs-color-muted);
|
|
362
|
-
background-color: var(--fs-
|
|
462
|
+
background-color: var(--fs-control-addon-bg);
|
|
363
463
|
font-size: $font-size-md;
|
|
364
464
|
font-weight: $font-weight-medium;
|
|
365
465
|
white-space: nowrap;
|
|
@@ -383,28 +483,55 @@
|
|
|
383
483
|
}
|
|
384
484
|
|
|
385
485
|
.fs-input-group > :first-child {
|
|
386
|
-
border-
|
|
387
|
-
border-
|
|
486
|
+
border-start-start-radius: var(--fs-control-radius);
|
|
487
|
+
border-end-start-radius: var(--fs-control-radius);
|
|
388
488
|
}
|
|
389
489
|
|
|
390
490
|
.fs-input-group > :last-child {
|
|
391
|
-
border-
|
|
392
|
-
border-
|
|
491
|
+
border-start-end-radius: var(--fs-control-radius);
|
|
492
|
+
border-end-end-radius: var(--fs-control-radius);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.fs-input-group:focus-within {
|
|
496
|
+
--fs-control-border-color: var(--fs-focus-color);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.fs-input-group.is-invalid,
|
|
500
|
+
.fs-input-group:has([aria-invalid="true"], .is-invalid) {
|
|
501
|
+
--fs-control-border-color: var(--fs-control-invalid-color);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
.fs-input-group.is-valid,
|
|
505
|
+
.fs-input-group:has([aria-invalid="false"], .is-valid) {
|
|
506
|
+
--fs-control-border-color: var(--fs-control-valid-color);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.fs-input-group-stack-sm {
|
|
510
|
+
flex-wrap: wrap;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.fs-input-group-stack-sm > * {
|
|
514
|
+
flex: 1 1 100%;
|
|
515
|
+
width: 100%;
|
|
516
|
+
margin-inline-start: 0;
|
|
517
|
+
border-radius: var(--fs-control-radius);
|
|
393
518
|
}
|
|
394
519
|
|
|
395
520
|
.fs-input-group-sm > .fs-form-control,
|
|
396
521
|
.fs-input-group-sm > .fs-form-select,
|
|
397
522
|
.fs-input-group-sm > .fs-input-group-text {
|
|
398
|
-
height:
|
|
399
|
-
|
|
523
|
+
height: var(--fs-control-height-sm);
|
|
524
|
+
min-block-size: var(--fs-control-height-sm);
|
|
525
|
+
padding-inline: var(--fs-control-padding-x-sm);
|
|
400
526
|
font-size: $font-size-xs;
|
|
401
527
|
}
|
|
402
528
|
|
|
403
529
|
.fs-input-group-lg > .fs-form-control,
|
|
404
530
|
.fs-input-group-lg > .fs-form-select,
|
|
405
531
|
.fs-input-group-lg > .fs-input-group-text {
|
|
406
|
-
height:
|
|
407
|
-
|
|
532
|
+
height: var(--fs-control-height-lg);
|
|
533
|
+
min-block-size: var(--fs-control-height-lg);
|
|
534
|
+
padding-inline: var(--fs-control-padding-x-lg);
|
|
408
535
|
font-size: $font-size-lg;
|
|
409
536
|
}
|
|
410
537
|
}
|
|
@@ -25,6 +25,34 @@
|
|
|
25
25
|
background: transparent;
|
|
26
26
|
appearance: none;
|
|
27
27
|
cursor: pointer;
|
|
28
|
+
accent-color: var(--fs-range-fill-color);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.fs-form-range-xs {
|
|
32
|
+
--fs-range-track-height: 4px;
|
|
33
|
+
--fs-range-thumb-size: 14px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.fs-form-range-sm {
|
|
37
|
+
--fs-range-track-height: 5px;
|
|
38
|
+
--fs-range-thumb-size: 16px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.fs-form-range-lg {
|
|
42
|
+
--fs-range-track-height: 8px;
|
|
43
|
+
--fs-range-thumb-size: 22px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.fs-form-range-xl {
|
|
47
|
+
--fs-range-track-height: 10px;
|
|
48
|
+
--fs-range-thumb-size: 26px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.fs-form-range-vertical {
|
|
52
|
+
width: var(--fs-range-thumb-size);
|
|
53
|
+
height: 160px;
|
|
54
|
+
writing-mode: vertical-lr;
|
|
55
|
+
direction: rtl;
|
|
28
56
|
}
|
|
29
57
|
|
|
30
58
|
.fs-form-range::-webkit-slider-runnable-track {
|
|
@@ -96,4 +124,5 @@
|
|
|
96
124
|
font-weight: $font-weight-medium;
|
|
97
125
|
text-align: center;
|
|
98
126
|
}
|
|
127
|
+
|
|
99
128
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Respeita a preferência do sistema sem remover a funcionalidade dos
|
|
2
2
|
// componentes: apenas reduz transições e animações ao estado final.
|
|
3
3
|
@layer base {
|
|
4
|
-
@
|
|
4
|
+
@if fs-feature-enabled(reduced-motion, true) {
|
|
5
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5
6
|
*,
|
|
6
7
|
*::before,
|
|
7
8
|
*::after {
|
|
@@ -21,4 +22,5 @@
|
|
|
21
22
|
animation-iteration-count: infinite !important;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
}
|
|
24
26
|
}
|
|
@@ -7,16 +7,40 @@ $fs-config: (
|
|
|
7
7
|
preset: full,
|
|
8
8
|
components: all,
|
|
9
9
|
utilities: all,
|
|
10
|
+
helpers: all,
|
|
10
11
|
colors: all,
|
|
12
|
+
layout: all,
|
|
13
|
+
columns: all,
|
|
11
14
|
spacing: all,
|
|
12
15
|
sizing: all,
|
|
16
|
+
typography: all,
|
|
17
|
+
borders: all,
|
|
18
|
+
effects: all,
|
|
19
|
+
motion: all,
|
|
20
|
+
interactivity: all,
|
|
21
|
+
display: all,
|
|
22
|
+
flex: all,
|
|
23
|
+
grid: all,
|
|
13
24
|
responsive: true,
|
|
14
25
|
states: true,
|
|
15
26
|
pseudo-variants: (responsive, focus-visible, disabled, checked, hover, print),
|
|
16
27
|
fluid-type: true,
|
|
17
|
-
color-modes: true
|
|
28
|
+
color-modes: true,
|
|
29
|
+
print: true,
|
|
30
|
+
rtl: true,
|
|
31
|
+
dark-mode: true,
|
|
32
|
+
reduced-motion: true,
|
|
33
|
+
important-utilities: true
|
|
18
34
|
) !default;
|
|
19
35
|
|
|
36
|
+
$fs-enable-dark-mode: true !default;
|
|
37
|
+
$fs-enable-rounded: true !default;
|
|
38
|
+
$fs-enable-shadows: true !default;
|
|
39
|
+
$fs-enable-important-utilities: true !default;
|
|
40
|
+
$fs-enable-helpers: true !default;
|
|
41
|
+
$fs-enable-print-utilities: true !default;
|
|
42
|
+
$fs-enable-rtl: true !default;
|
|
43
|
+
|
|
20
44
|
@function fs-config-list-enabled($key, $item) {
|
|
21
45
|
|
|
22
46
|
$value: fs-config-get($key, all);
|
|
@@ -39,5 +63,19 @@ $fs-config: (
|
|
|
39
63
|
@function fs-feature-enabled($feature, $fallback: true) {
|
|
40
64
|
$value: fs-config-get($feature, $fallback);
|
|
41
65
|
|
|
66
|
+
@if $feature == dark-mode and $fs-enable-dark-mode == false { @return false; }
|
|
67
|
+
|
|
68
|
+
@if $feature == helpers and $fs-enable-helpers == false { @return false; }
|
|
69
|
+
|
|
70
|
+
@if $feature == print and $fs-enable-print-utilities == false { @return false; }
|
|
71
|
+
|
|
72
|
+
@if $feature == rtl and $fs-enable-rtl == false { @return false; }
|
|
73
|
+
|
|
74
|
+
@if $feature == important-utilities and $fs-enable-important-utilities == false { @return false; }
|
|
75
|
+
|
|
76
|
+
@if $feature == rounded and $fs-enable-rounded == false { @return false; }
|
|
77
|
+
|
|
78
|
+
@if $feature == shadows and $fs-enable-shadows == false { @return false; }
|
|
79
|
+
|
|
42
80
|
@return $value != false;
|
|
43
81
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Mapas públicos que alimentam os utilitários atômicos. Todos usam !default
|
|
2
|
+
// para que consumidores possam estender a escala antes do entry-point Sass.
|
|
3
|
+
$fs-utility-sizes: (
|
|
4
|
+
0: 0,
|
|
5
|
+
25: 25%,
|
|
6
|
+
50: 50%,
|
|
7
|
+
75: 75%,
|
|
8
|
+
100: 100%,
|
|
9
|
+
auto: auto,
|
|
10
|
+
full: 100%,
|
|
11
|
+
screen: 100vw,
|
|
12
|
+
svh: 100svh,
|
|
13
|
+
dvh: 100dvh,
|
|
14
|
+
lvh: 100lvh
|
|
15
|
+
) !default;
|
|
16
|
+
|
|
17
|
+
$fs-utility-border-widths: (
|
|
18
|
+
0: 0,
|
|
19
|
+
1: 1px,
|
|
20
|
+
2: 2px,
|
|
21
|
+
4: 4px,
|
|
22
|
+
8: 8px
|
|
23
|
+
) !default;
|
|
24
|
+
|
|
25
|
+
$fs-utility-radii: (
|
|
26
|
+
none: 0,
|
|
27
|
+
sm: var(--fs-radius-sm),
|
|
28
|
+
md: var(--fs-radius-md),
|
|
29
|
+
lg: var(--fs-radius-lg),
|
|
30
|
+
full: 9999px
|
|
31
|
+
) !default;
|
|
32
|
+
|
|
33
|
+
$fs-utility-transition-durations: (
|
|
34
|
+
none: 0ms,
|
|
35
|
+
fast: var(--fs-transition-fast),
|
|
36
|
+
normal: var(--fs-transition-normal),
|
|
37
|
+
slow: 500ms
|
|
38
|
+
) !default;
|
|
39
|
+
|
|
40
|
+
$fs-utility-easings: (
|
|
41
|
+
standard: var(--fs-ease-standard),
|
|
42
|
+
entrance: cubic-bezier(0, 0, 0.2, 1),
|
|
43
|
+
exit: cubic-bezier(0.4, 0, 1, 1),
|
|
44
|
+
linear: linear
|
|
45
|
+
) !default;
|
|
46
|
+
|
|
47
|
+
// Registro declarativo para extensões simples. Os módulos de categoria
|
|
48
|
+
// continuam sendo responsáveis pelas APIs históricas; este mapa é a nova
|
|
49
|
+
// superfície de extensão para consumidores e para utilitários sem aliases.
|
|
50
|
+
$fs-utility-object-values: (
|
|
51
|
+
contain: contain,
|
|
52
|
+
cover: cover,
|
|
53
|
+
fill: fill,
|
|
54
|
+
none: none,
|
|
55
|
+
"scale-down": scale-down
|
|
56
|
+
) !default;
|
|
57
|
+
|
|
58
|
+
$fs-utility-z-values: (
|
|
59
|
+
base: var(--fs-z-base, 0),
|
|
60
|
+
dropdown: var(--fs-z-dropdown, 1000),
|
|
61
|
+
sticky: var(--fs-z-sticky, 1020),
|
|
62
|
+
modal: var(--fs-z-modal, 1050),
|
|
63
|
+
offcanvas: var(--fs-z-offcanvas, 1060),
|
|
64
|
+
notification: var(--fs-z-notification, 1080),
|
|
65
|
+
toast: var(--fs-z-toast, 1090),
|
|
66
|
+
tooltip: var(--fs-z-tooltip, 1100)
|
|
67
|
+
) !default;
|
|
68
|
+
|
|
69
|
+
$fs-utilities: (
|
|
70
|
+
object-fit: (
|
|
71
|
+
property: object-fit,
|
|
72
|
+
class: object,
|
|
73
|
+
values: $fs-utility-object-values,
|
|
74
|
+
category: layout,
|
|
75
|
+
responsive: false,
|
|
76
|
+
important: true
|
|
77
|
+
),
|
|
78
|
+
z-index: (
|
|
79
|
+
property: z-index,
|
|
80
|
+
class: z,
|
|
81
|
+
values: $fs-utility-z-values,
|
|
82
|
+
category: interactivity,
|
|
83
|
+
responsive: false,
|
|
84
|
+
important: true
|
|
85
|
+
)
|
|
86
|
+
) !default;
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// contraste com o branco); `info` não tem margem e fica sem alteração (100%).
|
|
13
13
|
// Misturas em `$method: oklch` (ver tools/_mixins.scss) — recalibrado e
|
|
14
14
|
// revalidado com `npm run contrast` após a migração para OKLCH.
|
|
15
|
+
@if fs-feature-enabled(dark-mode, true) {
|
|
15
16
|
@layer tokens {
|
|
16
17
|
$dark-color-weights: (
|
|
17
18
|
primary: 95%,
|
|
@@ -51,6 +52,13 @@
|
|
|
51
52
|
--fs-color-focus: var(--fs-color-primary);
|
|
52
53
|
--fs-color-action-primary: var(--fs-color-primary);
|
|
53
54
|
--fs-color-action-danger: var(--fs-color-danger);
|
|
55
|
+
--fs-control-bg: var(--fs-color-surface);
|
|
56
|
+
--fs-control-border-color: var(--fs-color-border);
|
|
57
|
+
--fs-control-hover-bg: var(--fs-color-subtle);
|
|
58
|
+
--fs-control-placeholder-color: var(--fs-color-muted);
|
|
59
|
+
--fs-control-invalid-color: var(--fs-color-danger);
|
|
60
|
+
--fs-control-valid-color: var(--fs-color-success);
|
|
61
|
+
--fs-control-addon-bg: var(--fs-color-subtle);
|
|
54
62
|
--fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);
|
|
55
63
|
--fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);
|
|
56
64
|
--fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);
|
|
@@ -129,3 +137,4 @@
|
|
|
129
137
|
}
|
|
130
138
|
}
|
|
131
139
|
}
|
|
140
|
+
}
|
|
@@ -50,9 +50,26 @@
|
|
|
50
50
|
--fs-control-height: 38px;
|
|
51
51
|
--fs-control-height-sm: 30px;
|
|
52
52
|
--fs-control-height-lg: 46px;
|
|
53
|
+
--fs-control-height-xs: 26px;
|
|
54
|
+
--fs-control-height-xl: 52px;
|
|
53
55
|
--fs-control-padding-x: 12px;
|
|
54
56
|
--fs-control-padding-x-sm: 8px;
|
|
55
57
|
--fs-control-padding-x-lg: 16px;
|
|
58
|
+
--fs-control-padding-x-xs: 6px;
|
|
59
|
+
--fs-control-padding-x-xl: 20px;
|
|
60
|
+
--fs-control-border-color: var(--fs-color-border);
|
|
61
|
+
--fs-control-bg: var(--fs-color-surface);
|
|
62
|
+
--fs-control-hover-bg: var(--fs-color-subtle);
|
|
63
|
+
--fs-control-placeholder-color: var(--fs-color-muted);
|
|
64
|
+
--fs-control-focus-color: var(--fs-focus-color);
|
|
65
|
+
--fs-control-invalid-color: var(--fs-color-danger);
|
|
66
|
+
--fs-control-valid-color: var(--fs-color-success);
|
|
67
|
+
--fs-control-disabled-opacity: var(--fs-disabled-opacity);
|
|
68
|
+
--fs-control-radius: var(--fs-radius-sm);
|
|
69
|
+
--fs-control-touch-target: 44px;
|
|
70
|
+
--fs-control-transition: color var(--fs-transition-fast) var(--fs-ease-standard), background-color var(--fs-transition-fast) var(--fs-ease-standard), border-color var(--fs-transition-fast) var(--fs-ease-standard), box-shadow var(--fs-transition-fast) var(--fs-ease-standard);
|
|
71
|
+
--fs-control-option-gap: var(--fs-space-2);
|
|
72
|
+
--fs-control-addon-bg: var(--fs-color-subtle);
|
|
56
73
|
--fs-focus-width: 2px;
|
|
57
74
|
--fs-focus-offset: 2px;
|
|
58
75
|
--fs-focus-color: var(--fs-color-primary);
|
|
@@ -103,6 +120,12 @@
|
|
|
103
120
|
@each $name, $bg in $theme-bg-colors {
|
|
104
121
|
--fs-feedback-#{$name}-bg: #{rgb-fallback($bg)};
|
|
105
122
|
}
|
|
123
|
+
|
|
124
|
+
@each $name, $color in $theme-colors {
|
|
125
|
+
--fs-color-#{$name}-bg-subtle: var(--fs-feedback-#{$name}-bg);
|
|
126
|
+
--fs-color-#{$name}-border-subtle: var(--fs-color-#{$name});
|
|
127
|
+
--fs-color-#{$name}-text-emphasis: var(--fs-alert-#{$name}-text);
|
|
128
|
+
}
|
|
106
129
|
}
|
|
107
130
|
|
|
108
131
|
// Bloco condicional: valores nativos em OKLCH. `@supports (color: oklch(0%
|