@lucca-front/scss 16.2.7-rc.2 → 16.3.0-rc.1

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.
Files changed (106) hide show
  1. package/dist/lucca-front.min.css +1 -1
  2. package/package.json +2 -2
  3. package/src/components/button/index.scss +1 -1
  4. package/src/components/button/mods.scss +6 -5
  5. package/src/components/button/states.scss +7 -3
  6. package/src/components/checkbox/mods.scss +1 -1
  7. package/src/components/checkboxField/component.scss +85 -0
  8. package/src/components/checkboxField/index.scss +72 -0
  9. package/src/components/checkboxField/mods.scss +18 -0
  10. package/src/components/checkboxField/states.scss +167 -0
  11. package/src/components/checkboxField/vars.scss +8 -0
  12. package/src/components/chip/index.scss +0 -8
  13. package/src/components/chip/mods.scss +0 -20
  14. package/src/components/clear/index.scss +1 -1
  15. package/src/components/clear/mods.scss +1 -1
  16. package/src/components/footer/component.scss +36 -0
  17. package/src/components/footer/exports.scss +4 -0
  18. package/src/components/footer/index.scss +10 -0
  19. package/src/components/footer/mods.scss +4 -0
  20. package/src/components/footer/vars.scss +2 -0
  21. package/src/components/formLabel/component.scss +21 -0
  22. package/src/components/formLabel/exports.scss +4 -0
  23. package/src/components/formLabel/index.scss +18 -0
  24. package/src/components/formLabel/mods.scss +17 -0
  25. package/src/components/formLabel/states.scss +8 -0
  26. package/src/components/formLabel/vars.scss +7 -0
  27. package/src/components/index.scss +13 -2
  28. package/src/components/inlineMessage/component.scss +13 -0
  29. package/src/components/inlineMessage/exports.scss +4 -0
  30. package/src/components/inlineMessage/index.scss +22 -0
  31. package/src/components/inlineMessage/mods.scss +5 -0
  32. package/src/components/inlineMessage/states.scss +41 -0
  33. package/src/components/inlineMessage/vars.scss +7 -0
  34. package/src/components/list/component.scss +16 -6
  35. package/src/components/list/mods.scss +4 -5
  36. package/src/components/menu/component.scss +2 -2
  37. package/src/components/menu/mods.scss +1 -1
  38. package/src/components/menu/states.scss +12 -2
  39. package/src/components/mobileHeader/component.scss +30 -0
  40. package/src/components/mobileHeader/exports.scss +4 -0
  41. package/src/components/mobileHeader/index.scss +10 -0
  42. package/src/components/mobileHeader/mods.scss +23 -0
  43. package/src/components/mobileHeader/states.scss +0 -0
  44. package/src/components/mobileHeader/vars.scss +3 -0
  45. package/src/components/mobileNavigation/component.scss +56 -0
  46. package/src/components/mobileNavigation/exports.scss +4 -0
  47. package/src/components/mobileNavigation/index.scss +10 -0
  48. package/src/components/mobileNavigation/mods.scss +5 -0
  49. package/src/components/mobileNavigation/states.scss +0 -0
  50. package/src/components/mobileNavigation/vars.scss +2 -0
  51. package/src/components/navside/component.scss +6 -3
  52. package/src/components/navside/mods.scss +9 -1
  53. package/src/components/navside/states.scss +1 -1
  54. package/src/components/newBadge/component.scss +10 -0
  55. package/src/components/newBadge/exports.scss +4 -0
  56. package/src/components/newBadge/index.scss +6 -0
  57. package/src/components/newBadge/mods.scss +0 -0
  58. package/src/components/newBadge/states.scss +0 -0
  59. package/src/components/newBadge/vars.scss +2 -0
  60. package/src/components/numericBadge/component.scss +17 -0
  61. package/src/components/numericBadge/exports.scss +4 -0
  62. package/src/components/numericBadge/index.scss +14 -0
  63. package/src/components/numericBadge/mods.scss +13 -0
  64. package/src/components/numericBadge/states.scss +0 -0
  65. package/src/components/numericBadge/vars.scss +8 -0
  66. package/src/components/pagination/component.scss +1 -1
  67. package/src/components/radioButtons/component.scss +5 -0
  68. package/src/components/radioField/component.scss +98 -0
  69. package/src/components/radioField/exports.scss +4 -0
  70. package/src/components/radioField/index.scss +32 -0
  71. package/src/components/radioField/mods.scss +18 -0
  72. package/src/components/radioField/states.scss +122 -0
  73. package/src/components/radioField/vars.scss +7 -0
  74. package/src/components/switchField/component.scss +110 -0
  75. package/src/components/switchField/exports.scss +4 -0
  76. package/src/components/switchField/index.scss +32 -0
  77. package/src/components/switchField/mods.scss +18 -0
  78. package/src/components/switchField/states.scss +119 -0
  79. package/src/components/switchField/vars.scss +7 -0
  80. package/src/components/table/component.scss +4 -16
  81. package/src/components/table/mods.scss +9 -3
  82. package/src/components/table/vars.scss +1 -1
  83. package/src/components/textfield/component.scss +113 -61
  84. package/src/components/textfield/index.scss +10 -380
  85. package/src/components/textfield/mods.scss +61 -619
  86. package/src/components/textfield/states.scss +80 -228
  87. package/src/components/textfield/vars.scss +12 -39
  88. package/src/components/textfields/component.scss +77 -0
  89. package/src/components/textfields/exports.scss +4 -0
  90. package/src/components/textfields/index.scss +402 -0
  91. package/src/components/textfields/mods.scss +560 -0
  92. package/src/components/textfields/states.scss +224 -0
  93. package/src/components/textfields/vars.scss +41 -0
  94. package/src/components/title/component.scss +1 -1
  95. package/src/components/verticalNavigation/component.scss +42 -0
  96. package/src/components/verticalNavigation/exports.scss +4 -0
  97. package/src/components/verticalNavigation/index.scss +26 -0
  98. package/src/components/verticalNavigation/mods.scss +7 -0
  99. package/src/components/verticalNavigation/states.scss +28 -0
  100. package/src/components/verticalNavigation/vars.scss +4 -0
  101. package/src/components/sortableList/component.scss +0 -68
  102. package/src/components/sortableList/index.scss +0 -16
  103. package/src/components/sortableList/mods.scss +0 -19
  104. package/src/components/sortableList/vars.scss +0 -8
  105. /package/src/components/{sortableList → checkboxField}/exports.scss +0 -0
  106. /package/src/components/{sortableList → footer}/states.scss +0 -0
@@ -1,77 +1,129 @@
1
+ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel;
2
+ @use '@lucca-front/scss/src/commons/utils/a11y';
3
+
1
4
  @mixin component($atRoot: 'without: rule') {
2
- vertical-align: middle;
3
- width: var(--components-textfield-sizes-default);
5
+ display: grid;
6
+ grid-gap: var(--spacings-XXS) 0;
7
+ grid-template-columns: auto 1fr auto auto;
8
+ font-size: var(--component-textField-label-fontSize);
9
+ line-height: var(--component-textField-label-lineHeight);
4
10
 
5
11
  @at-root ($atRoot) {
6
- .textfield-input {
7
- min-width: 0;
8
- border: 0;
9
- box-shadow: 0 0 0 1px var(--palettes-grey-300);
10
- line-height: var(--sizes-M-lineHeight);
11
- -webkit-appearance: none;
12
- background-color: var(--colors-white-color);
13
- border-radius: var(--components-textfield-border-radius);
14
- padding: var(--components-textfield-input-padding-vertical) var(--components-textfield-input-padding-horizontal);
15
- transition-property: box-shadow, background-color, color;
16
- transition-duration: var(--commons-animations-durations-fast);
17
-
18
- &::placeholder {
19
- color: var(--palettes-grey-400);
20
- transition-property: color;
21
- transition-duration: var(--commons-animations-durations-fast);
22
- opacity: 1;
23
- }
12
+ .textField-label {
13
+ display: contents;
14
+ }
15
+
16
+ .textField-label-prefix {
17
+ display: flex;
18
+ align-self: flex-start;
19
+ color: var(--component-textField-input-prefix);
20
+ cursor: text;
21
+ line-height: var(--component-textField-input-lineHeight);
22
+ grid-column: 1;
23
+ grid-row: 2;
24
+ }
24
25
 
25
- &[type='search'] {
26
- &::-webkit-search-cancel-button,
27
- &::-webkit-search-decoration {
28
- appearance: none;
29
- }
26
+ .textField-label-suffix {
27
+ display: flex;
28
+ align-self: flex-start;
29
+ color: var(--component-textField-input-prefix);
30
+ cursor: text;
31
+ line-height: var(--component-textField-input-lineHeight);
32
+ grid-row: 2;
33
+ grid-column: 3;
34
+ }
35
+
36
+ .textField-label-prefix-item {
37
+ padding: var(--component-textField-input-paddingVertical) var(--spacings-XS);
38
+
39
+ &::selection {
40
+ background-color: var(--palettes-primary-200);
41
+ }
42
+
43
+ &:last-child {
44
+ padding-right: 0;
45
+ }
46
+ }
47
+
48
+ .textField-label-suffix-item {
49
+ padding: var(--component-textField-input-paddingVertical) var(--spacings-XS);
50
+
51
+ &::selection {
52
+ background-color: var(--palettes-primary-200);
30
53
  }
54
+
55
+ &:first-child {
56
+ padding-left: 0;
57
+ }
58
+ }
59
+
60
+ .textField-label-input {
61
+ grid-column: 1 / span 4;
62
+ border: 1px solid var(--component-textField-input-border);
63
+ grid-row: 2;
64
+ pointer-events: none;
65
+ border-radius: calc(var(--commons-borderRadius-M) + 1px);
66
+ background-color: var(--component-textField-input-background);
67
+ transition-property: border-color;
68
+ transition-duration: var(--commons-animations-durations-fast);
31
69
  }
32
70
 
33
- .textfield-suffix {
34
- color: var(--palettes-grey-600);
35
- top: calc(var(--components-textfield-suffix-top) + var(--components-textfield-input-padding-vertical));
36
- right: var(--components-textfield-input-padding-horizontal);
37
- position: absolute;
38
- pointer-events: none;
39
- line-height: var(--sizes-M-lineHeight);
40
- z-index: 1;
71
+ .textField-action {
72
+ display: flex;
73
+ padding-right: var(--spacings-XS);
74
+ align-items: center;
75
+ grid-row: 2;
76
+ grid-column: 4;
77
+ color: var(--palettes-grey-600);
41
78
  }
42
79
 
43
- .textfield-options {
44
- box-shadow: var(--commons-boxShadow-M);
45
- background-color: var(--colors-white-color);
46
- border-radius: var(--commons-borderRadius-M);
47
- transition-duration: var(--commons-animations-durations-fast);
48
- transition-property: all;
49
- list-style: none;
50
- overflow: auto;
51
- position: absolute;
52
- transform-origin: right top;
53
- transform: scaleY(0);
54
- margin: 3px 0 0;
55
- max-height: 15rem;
56
- opacity: 0;
57
- padding: 0;
58
- left: 0;
59
- top: 100%;
60
- z-index: 999;
61
- width: 100%;
80
+ .textField-input {
81
+ grid-column: 2;
82
+ grid-row: 2;
83
+ border: 0;
84
+ outline: none;
85
+ padding: var(--component-textField-input-paddingVertical) var(--spacings-XS);
86
+ min-width: var(--spacings-M);
87
+ font: inherit;
88
+ color: var(--component-textField-input-color);
89
+ background-color: transparent;
90
+ z-index: 1;
91
+ line-height: var(--component-textField-input-lineHeight);
92
+
93
+ &::selection {
94
+ background-color: var(--palettes-primary-200);
95
+ }
96
+
97
+ &::placeholder {
98
+ color: var(--component-textField-input-placeholder);
99
+ opacity: 1;
100
+ }
101
+
102
+ &:hover {
103
+ ~ .textField-label {
104
+ --component-textField-input-border: var(--palettes-grey-400);
105
+ }
106
+ }
107
+
108
+ &:focus-visible {
109
+ ~ .textField-label {
110
+ .textField-label-input {
111
+ @include a11y.focusVisible;
112
+ }
113
+ }
114
+ }
62
115
  }
63
116
 
64
- .textfield-options-mark {
65
- background-color: transparent;
66
- text-decoration: underline;
67
- color: inherit;
117
+ .formLabel {
118
+ @include formLabel.label;
119
+ grid-column-start: 1;
120
+ grid-column-end: -1;
121
+ grid-row: 1;
68
122
  }
69
123
 
70
- .textfield-options-entry {
71
- transition-duration: var(--commons-animations-durations-fast);
72
- transition-property: background-color;
73
- padding: var(--spacings-XS) var(--spacings-S);
74
- cursor: pointer;
124
+ .inlineMessage {
125
+ grid-column-start: 1;
126
+ grid-column-end: -1;
75
127
  }
76
128
  }
77
129
  }
@@ -1,402 +1,32 @@
1
1
  @use 'exports' as *;
2
2
 
3
- .textfield {
3
+ .textField {
4
4
  @include vars;
5
5
  @include component;
6
6
 
7
- .textfield-input {
8
- &:is([disabled], .is-disabled, .disabled, [readonly], .is-readonly, .readonly) {
9
- @include inputDisabled;
10
- }
11
- }
12
-
13
- &:is(.is-open, .open) {
14
- @include open;
15
- }
16
-
17
- &.mod-password {
18
- @include password;
19
-
20
- .textfield-suffix-action {
21
- &:is([aria-pressed='true']) {
22
- @include passwordActionPressed;
23
- }
24
-
25
- &:is([aria-pressed='false']) {
26
- @include passwordActionNotPressed;
27
- }
28
- }
29
- }
30
-
31
- &.mod-search,
32
- &.mod-autocomplete {
33
- @include search;
34
-
35
- &.mod-clearable {
36
- @include searchClearable;
37
- }
38
-
39
- &.mod-S {
40
- @include searchS;
41
-
42
- &.mod-clearable {
43
- @include searchClearableS;
44
- }
45
- }
46
-
47
- &.mod-XS {
48
- @include searchXS;
49
-
50
- &.mod-clearable {
51
- @include searchClearableXS;
52
- }
53
- }
54
- }
55
-
56
- &.mod-clearable {
57
- @include clearable;
58
-
59
- &.mod-S {
60
- @include clearableS;
61
- }
62
-
63
- &.mod-XS {
64
- @include clearableXS;
65
- }
66
- }
67
-
68
- &.mod-withSuffix {
69
- @include suffix;
70
- }
71
-
72
- &.mod-noLabel {
73
- @include noLabel;
74
-
75
- &.mod-XS {
76
- @include noLabelXS;
77
- }
78
- }
79
-
80
- &.mod-multiline {
81
- @include multiline;
82
-
83
- &.mod-S {
84
- @include multilineS;
85
- }
86
- }
87
-
88
- &.mod-invert {
89
- @include invert;
90
- }
91
-
92
- &.mod-radio {
93
- @include radio;
94
- }
95
-
96
- &.mod-filter {
97
- @include filter;
98
-
99
- &:is(:hover) {
100
- @include filterHover;
101
- }
102
- }
103
-
104
7
  &.mod-S {
105
8
  @include S;
106
-
107
- &.textfield-input {
108
- &.mod-icon {
109
- @include SInputIcon;
110
- }
111
- }
112
9
  }
113
10
 
114
11
  &.mod-XS {
115
12
  @include XS;
116
-
117
- &.textfield-input {
118
- &.mod-icon {
119
- @include XSInputIcon;
120
- }
121
- }
122
- }
123
-
124
- &.mod-shortest {
125
- @include size('shortest');
126
- }
127
-
128
- &.mod-shorter {
129
- @include size('shorter');
130
- }
131
-
132
- &.mod-short {
133
- @include size('short');
134
- }
135
-
136
- &.mod-default {
137
- @include size('default');
138
- }
139
-
140
- &.mod-long {
141
- @include size('long');
142
- }
143
-
144
- &.mod-longer {
145
- @include size('longer');
146
- }
147
-
148
- &.mod-longest {
149
- @include size('longest');
150
- }
151
-
152
- &.mod-compact {
153
- @include compact;
154
-
155
- &.mod-multiline {
156
- @include compactMultiline;
157
- }
158
-
159
- &.mod-shortest {
160
- @include compactSize('shortest');
161
- }
162
-
163
- &.mod-shorter {
164
- @include compactSize('shorter');
165
- }
166
-
167
- &.mod-short {
168
- @include compactSize('short');
169
- }
170
-
171
- &.mod-default {
172
- @include compactSize('default');
173
- }
174
-
175
- &.mod-long {
176
- @include compactSize('long');
177
- }
178
-
179
- &.mod-longer {
180
- @include compactSize('longer');
181
- }
182
-
183
- &.mod-longest {
184
- @include compactSize('longest');
185
- }
186
- }
187
-
188
- &.mod-material {
189
- @include material;
190
-
191
- &.mod-search {
192
- &.mod-block {
193
- &.mod-clearable {
194
- @include materialSearchBlockClearableInput;
195
- }
196
- }
197
- }
198
-
199
- .textfield-input {
200
- &:is(:focus, .is-focused, .focused) {
201
- @include materialInputFocus;
202
- }
203
-
204
- &:is(.is-filled, .filled) {
205
- @include materialInputFilled;
206
- }
207
-
208
- &:is([disabled], .is-disabled, .disabled, [readonly], .is-readonly, .readonly) {
209
- @include materialInputDisabled;
210
- }
211
-
212
- &:is(.is-invalid, .invalid, .is-error, .error) {
213
- @include materialInputState('error');
214
- }
215
-
216
- &:is(.is-warning, .warning) {
217
- @include materialInputState('warning');
218
- }
219
-
220
- &:is(.is-success, .success) {
221
- @include materialInputState('success');
222
- }
223
- }
224
-
225
- &.mod-S {
226
- @include materialS;
227
- }
228
-
229
- &.mod-withSuffix {
230
- @include materialSuffix;
231
- }
232
-
233
- &.mod-noLabel {
234
- @include materialNoLabel;
235
- }
236
-
237
- &.mod-search,
238
- &.mod-autocomplete {
239
- @include materialSearch;
240
- }
241
-
242
- &.mod-radio {
243
- @include materialRadio;
244
- }
245
-
246
- &:is(.is-loading, .loading) {
247
- @include materialLoading;
248
- }
249
-
250
- &:is(.is-valid, .valid) {
251
- @include materialValid;
252
- }
253
- }
254
- }
255
-
256
- .textfield-input {
257
- &:is(:hover) {
258
- @include inputHover;
259
- }
260
-
261
- &:is(:focus-visible, .is-focused, .focused) {
262
- @include inputFocus;
263
13
  }
264
14
  }
265
15
 
266
- .textfield-suffix {
267
- &.mod-icon {
268
- @include suffixIcon;
16
+ .textField-input {
17
+ &[aria-invalid='true'] {
18
+ @include invalid;
269
19
  }
270
- }
271
20
 
272
- .textfield-options-entry {
273
- &:is(:hover, .is-focus, .focus) {
274
- @include entryHover;
21
+ &:disabled {
22
+ @include disabled;
275
23
  }
276
- }
277
24
 
278
- .textfield.mod-framed,
279
- .form.mod-framed .textfield {
280
- @include framed;
281
-
282
- &.mod-multiline {
283
- @include framedMultiline;
284
-
285
- &.mod-S {
286
- @include framedMultilineS;
287
- }
25
+ &:read-only:not(:disabled) {
26
+ @include readonly;
288
27
  }
289
28
 
290
- &.mod-search {
291
- @include framedSearch;
292
- }
293
-
294
- &:is(.is-error, .error) {
295
- @include framedState('error');
296
-
297
- &:is(:focus-within, :hover) {
298
- @include framedErrorHover;
299
- }
300
-
301
- &:is(:hover) {
302
- @include framedStateHover('error');
303
- }
304
-
305
- &:is(:focus-within) {
306
- @include framedStateFocus('error');
307
- }
308
-
309
- .textfield-input {
310
- &:hover {
311
- @include framedStateInputHover('error');
312
- }
313
-
314
- &:focus {
315
- @include framedStateInputFocus('error');
316
- }
317
- }
318
-
319
- &.mod-search,
320
- &.mod-autocomplete,
321
- &.mod-select {
322
- @include framedStateSearch('error');
323
- }
324
- }
325
-
326
- &:is(.is-loading, .loading) {
327
- @include framedLoading;
328
- }
329
-
330
- &:is(.is-warning, .warning) {
331
- @include framedState('warning');
332
-
333
- &:is(:hover) {
334
- @include framedStateHover('warning');
335
- }
336
-
337
- &:is(:focus-within) {
338
- @include framedStateFocus('warning');
339
- }
340
-
341
- .textfield-input {
342
- &:hover {
343
- @include framedStateInputHover('warning');
344
- }
345
-
346
- &:focus {
347
- @include framedStateInputFocus('warning');
348
- }
349
- }
350
-
351
- &.mod-search,
352
- &.mod-autocomplete,
353
- &.mod-select {
354
- @include framedStateSearch('warning');
355
- }
356
- }
357
-
358
- &:is(.is-success, .is-valid, .valid, .success) {
359
- @include framedState('success');
360
-
361
- &:is(:hover) {
362
- @include framedStateHover('success');
363
- }
364
-
365
- &:is(:focus-within) {
366
- @include framedStateFocus('success');
367
- }
368
-
369
- .textfield-input {
370
- &:hover {
371
- @include framedStateInputHover('success');
372
- }
373
-
374
- &:focus {
375
- @include framedStateInputFocus('success');
376
- }
377
- }
378
-
379
- &.mod-search,
380
- &.mod-autocomplete,
381
- &.mod-select {
382
- @include framedStateSearch('success');
383
- }
384
- }
385
-
386
- .textfield-input {
387
- &:is(:hover) {
388
- @include framedInputHover;
389
- }
390
-
391
- &:is(:focus) {
392
- @include framedInputFocus;
393
- }
394
-
395
- &:is(:invalid, .is-invalid, .invalid) {
396
- @include framedInputInvalid;
397
- }
398
-
399
- &:is(.is-error, .invalid) {
400
- }
29
+ &:is(textarea) {
30
+ @include textarea;
401
31
  }
402
32
  }