@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
@@ -0,0 +1,224 @@
1
+ @use '@lucca-front/scss/src/commons/utils/form';
2
+ @use '@lucca-front/scss/src/commons/utils/a11y';
3
+
4
+ @mixin inputHover {
5
+ box-shadow: 0 0 0 1px var(--palettes-grey-400);
6
+ }
7
+
8
+ @mixin inputFocus {
9
+ @include a11y.focusVisible($offset: 3px);
10
+ }
11
+
12
+ @mixin inputDisabled {
13
+ background-color: var(--components-textfield-disabled-background);
14
+ color: var(--components-textfield-disabled-color);
15
+ box-shadow: 0 0 0 1px var(--palettes-grey-300);
16
+ cursor: default;
17
+
18
+ &::placeholder {
19
+ color: var(--commons-disabled-placeholder);
20
+ }
21
+
22
+ ~ .textfield-clear {
23
+ color: var(--palettes-grey-500) !important;
24
+ pointer-events: none;
25
+ }
26
+ }
27
+
28
+ @mixin filterHover {
29
+ background-color: var(--palettes-grey-50);
30
+ }
31
+
32
+ @mixin open {
33
+ z-index: 999 !important;
34
+
35
+ .textfield-options {
36
+ opacity: 1;
37
+ transform: scaleY(1);
38
+ }
39
+ }
40
+
41
+ @mixin framedInputHover {
42
+ &:not(:disabled, .is-error, .is-success, .is-valid, .is-warning, .is-invalid) {
43
+ position: relative;
44
+ z-index: 1;
45
+ background-color: var(--colors-white-color);
46
+ box-shadow: form.fakeBorderOverlay(var(--components-field-framed-color));
47
+ }
48
+ }
49
+
50
+ @mixin framedInputFocus {
51
+ &:not(:disabled, .is-error, .is-success, .is-valid, .is-warning, .is-invalid) {
52
+ position: relative;
53
+ z-index: 4;
54
+ background-color: var(--colors-white-color);
55
+ box-shadow: form.fakeBorderOverlay(var(--components-field-framed-color)), 0 0 0 4px var(--components-field-framed-color50);
56
+ }
57
+ }
58
+
59
+ @mixin framedInputInvalid {
60
+ ~ .textfield-label {
61
+ color: var(--palettes-error-700);
62
+ }
63
+ }
64
+
65
+ @mixin framedState($state) {
66
+ @if $state == 'error' {
67
+ z-index: 3;
68
+ box-shadow: form.fakeBorderOverlay(var(--palettes-error-700));
69
+ background-color: var(--palettes-error-50);
70
+ }
71
+
72
+ // todo: déplacer dans field
73
+ .radiosfield-label,
74
+ .checkboxesfield-label,
75
+ .textfield-label {
76
+ color: var(--palettes-#{$state}-700);
77
+ }
78
+
79
+ .textfield-input {
80
+ &::placeholder {
81
+ color: var(--palettes-#{$state}-300);
82
+ }
83
+
84
+ @if $state == 'error' {
85
+ background-color: var(--palettes-error-50) !important;
86
+ box-shadow: form.fakeBorderOverlay(var(--palettes-error-700)) !important;
87
+ }
88
+ }
89
+ }
90
+
91
+ @mixin framedLoading {
92
+ &::before,
93
+ &::after {
94
+ right: var(--components-field-framed-side-padding) !important;
95
+ top: var(--components-field-framed-side-padding) !important;
96
+ bottom: auto !important;
97
+ }
98
+ }
99
+
100
+ @mixin framedStateInputHover($state) {
101
+ background-color: var(--palettes-#{$state}-50) !important;
102
+
103
+ @if $state == 'error' {
104
+ background-color: var(--palettes-#{$state}-100) !important;
105
+ }
106
+ }
107
+
108
+ @mixin framedStateInputFocus($state) {
109
+ background-color: var(--colors-white-color) !important;
110
+ box-shadow: form.fakeBorderOverlay(var(--palettes-#{$state}-700)), 0 0 0 4px var(--palettes-#{$state}-50) !important;
111
+
112
+ @if $state == 'error' {
113
+ box-shadow: form.fakeBorderOverlay(var(--palettes-#{$state}-700)), 0 0 0 4px var(--palettes-#{$state}-50) !important;
114
+ background-color: var(--colors-white-color) !important;
115
+ }
116
+ }
117
+
118
+ @mixin framedErrorHover {
119
+ z-index: 4;
120
+ }
121
+
122
+ @mixin framedStateSearch($state) {
123
+ &::after {
124
+ color: var(--palettes-#{$state}-700);
125
+ }
126
+ }
127
+
128
+ @mixin framedStateHover($state) {
129
+ background-color: var(--palettes-#{$state}-50);
130
+
131
+ // todo: déplacer dans field
132
+ .textfield-messages,
133
+ .radiosfield-messages,
134
+ .checkboxesfield-messages {
135
+ transform: translateY(100%);
136
+ }
137
+ }
138
+
139
+ @mixin framedStateFocus($state) {
140
+ background-color: var(--colors-white-color);
141
+ box-shadow: form.fakeBorderOverlay(var(--palettes-#{$state}-700)), 0 0 0 4px var(--palettes-#{$state}-50);
142
+
143
+ // todo: déplacer dans field
144
+ .textfield-messages,
145
+ .radiosfield-messages,
146
+ .checkboxesfield-messages {
147
+ transform: translateY(100%);
148
+ }
149
+ }
150
+
151
+ @mixin passwordActionPressed {
152
+ .icon-watch {
153
+ display: none;
154
+ }
155
+ }
156
+
157
+ @mixin passwordActionNotPressed {
158
+ .icon-unwatch {
159
+ display: none;
160
+ }
161
+ }
162
+
163
+ @mixin materialInputFocus {
164
+ outline: none;
165
+
166
+ &::placeholder {
167
+ opacity: 1;
168
+ }
169
+
170
+ .textfield-label,
171
+ ~ .textfield-label {
172
+ font-size: var(--sizes-S-fontSize);
173
+ color: var(--palettes-700, var(--components-textfield-material-default-palette-color));
174
+ top: 0;
175
+ }
176
+ }
177
+
178
+ @mixin materialLoading {
179
+ &::before,
180
+ &::after {
181
+ bottom: 0.4rem !important;
182
+ right: 0 !important;
183
+ }
184
+ }
185
+
186
+ @mixin materialInputFilled {
187
+ ~ .textfield-label {
188
+ font-size: var(--sizes-S-fontSize);
189
+ top: 0;
190
+ }
191
+ }
192
+
193
+ @mixin materialInputDisabled {
194
+ background-image: linear-gradient(to right, var(--components-textfield-material-border-color) 33%, rgba(255, 255, 255, 0) 0%);
195
+ background-size: 3px 1px;
196
+ background-color: transparent;
197
+ background-position: bottom;
198
+ background-repeat: repeat-x;
199
+ box-shadow: none;
200
+ }
201
+
202
+ @mixin materialInputState($state) {
203
+ @if $state == 'error' {
204
+ box-shadow: 0 2px 0 0 var(--palettes-#{$state}-700);
205
+ }
206
+
207
+ &:focus {
208
+ box-shadow: 0 2px 0 0 var(--palettes-#{$state}-700);
209
+ }
210
+
211
+ ~ .textfield-label {
212
+ color: var(--palettes-#{$state}-700);
213
+ }
214
+
215
+ &:focus {
216
+ ~ .textfield-label {
217
+ color: var(--palettes-#{$state}-700);
218
+ }
219
+ }
220
+ }
221
+
222
+ @mixin entryHover {
223
+ background-color: var(--palettes-primary-50);
224
+ }
@@ -0,0 +1,41 @@
1
+ @mixin vars {
2
+ --components-textfield-border-radius: 4px;
3
+ --components-textfield-input-padding-horizontal: var(--spacings-XS);
4
+ --components-textfield-input-padding-vertical: var(--spacings-XS);
5
+ --components-textfield-input-placeholder: var(--palettes-primary-400);
6
+ --components-textfield-hover-background: var(--palettes-primary-100);
7
+ --components-textfield-hover-placeholder: var(--palettes-primary-400);
8
+ --components-textfield-focus-placeholder: var(--palettes-primary-300);
9
+ --components-textfield-focus-shadow-color: var(--palettes-primary-200);
10
+ --components-textfield-focus-border-color: var(--palettes-primary-600);
11
+ --components-textfield-disabled-background: var(--commons-disabled-background);
12
+ --components-textfield-disabled-color: var(--palettes-grey-600);
13
+ --components-textfield-suffix-top: 1.75rem;
14
+ --components-textfield-suffix-padding-right: var(--spacings-L);
15
+ --components-textfield-sizes-shortest: 3rem;
16
+ --components-textfield-sizes-shorter: 6rem;
17
+ --components-textfield-sizes-short: 9rem;
18
+ --components-textfield-sizes-default: 13rem;
19
+ --components-textfield-sizes-long: 17rem;
20
+ --components-textfield-sizes-longer: 22rem;
21
+ --components-textfield-sizes-longest: 28rem;
22
+
23
+ --components-textfield-material-padding-top: var(--spacings-S);
24
+ --components-textfield-material-default-palette-color: var(--palettes-grey-600);
25
+ --components-textfield-material-border-color: #ccc;
26
+ --components-textfield-material-label-color: var(--palettes-grey-600);
27
+ --components-textfield-material-label-font-size: var(--sizes-M-fontSize);
28
+ --components-textfield-material-suffix-padding-right: var(--spacings-S);
29
+
30
+ --components-textfield-compact-padding: var(--spacings-XS);
31
+ --components-textfield-compact-label-color: #96a6c5;
32
+ --components-textfield-compact-label-font-size: var(--sizes-M-fontSize);
33
+ --components-textfield-compact-label-right-margin: 0.3rem;
34
+ --components-textfield-compact-label-sizes-shorter: 3rem;
35
+ --components-textfield-compact-label-sizes-short: 5rem;
36
+ --components-textfield-compact-label-sizes-default: 7rem;
37
+ --components-textfield-compact-label-sizes-long: 9rem;
38
+ --components-textfield-compact-label-sizes-longer: 11rem;
39
+
40
+ --components-textfield-filter-width: 18rem;
41
+ }
@@ -5,7 +5,7 @@
5
5
  margin-bottom: var(--spacings-S);
6
6
 
7
7
  // suffix here
8
- font-weight: 600 #{$suffix};
8
+ font-weight: var(--components-title-weight, 600) #{$suffix};
9
9
  font-size: var(--sizes-fontSize) #{$suffix};
10
10
  line-height: var(--sizes-lineHeight) #{$suffix};
11
11
  padding-top: var(--sizes-verticalPadding) #{$suffix};
@@ -0,0 +1,42 @@
1
+ @use '@lucca-front/scss/src/commons/utils/a11y';
2
+ @use '@lucca-front/scss/src/commons/utils/reset';
3
+
4
+ @mixin component($atRoot: 'without: rule') {
5
+
6
+ @at-root ($atRoot) {
7
+ .verticalNavigation-list {
8
+ @include reset.list;
9
+ background-color: var(--colors-white-color);
10
+ }
11
+
12
+ .verticalNavigation-list-item-link {
13
+ @include reset.button;
14
+ display: flex;
15
+ padding: var(--spacings-XS) var(--spacings-S);
16
+ border-radius: var(--commons-borderRadius-M);
17
+ color: var(--components-verticalNavigation-link-color);
18
+ text-decoration: none;
19
+ background-color: var(--components-verticalNavigation-link-background);
20
+ transition: background-color var(--commons-animations-durations-fast) ease;
21
+ font-weight: 600;
22
+
23
+ .lucca-icon {
24
+ margin-left: auto;
25
+ font-size: var(--sizes-M-lineHeight);
26
+ }
27
+
28
+ &:hover {
29
+ --components-verticalNavigation-link-background: var(--palettes-grey-50);
30
+ color: var(--components-verticalNavigation-link-color);
31
+ }
32
+
33
+ &:focus-visible {
34
+ @include a11y.focusVisible();
35
+ }
36
+
37
+ &:active {
38
+ --components-verticalNavigation-link-background: var(--palettes-grey-100);
39
+ }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,4 @@
1
+ @forward 'vars';
2
+ @forward 'mods';
3
+ @forward 'states';
4
+ @forward 'component';
@@ -0,0 +1,26 @@
1
+ @use 'exports' as *;
2
+
3
+ .vertical-navigation {
4
+ @include vars;
5
+ @include component;
6
+ }
7
+
8
+ .verticalNavigation-list {
9
+ &.mod-child {
10
+ @include child;
11
+ }
12
+ }
13
+
14
+ .verticalNavigation-list-item-link {
15
+ &[aria-expanded="true"] {
16
+ @include expanded;
17
+ }
18
+
19
+ &[aria-current="page"] {
20
+ @include active;
21
+ }
22
+
23
+ &[disabled], &.is-disabled {
24
+ @include disabled;
25
+ }
26
+ }
@@ -0,0 +1,7 @@
1
+ @mixin child {
2
+ display: none;
3
+
4
+ .verticalNavigation-list-item-link {
5
+ font-weight: 400;
6
+ }
7
+ }
@@ -0,0 +1,28 @@
1
+ @mixin active {
2
+ --components-verticalNavigation-link-background: var(--palettes-primary-50);
3
+ color: var(--components-verticalNavigation-link-color);
4
+
5
+ &:hover {
6
+ --components-verticalNavigation-link-background: var(--palettes-primary-100);
7
+ }
8
+
9
+ &:active {
10
+ --components-verticalNavigation-link-background: var(--palettes-primary-200);
11
+ }
12
+ }
13
+
14
+ @mixin disabled {
15
+ --components-verticalNavigation-link-background: transparent;
16
+ color: var(--palettes-grey-500);
17
+ pointer-events: none;
18
+ }
19
+
20
+ @mixin expanded {
21
+ ~ .verticalNavigation-list {
22
+ display: block;
23
+ }
24
+
25
+ .lucca-icon {
26
+ transform: rotate(180deg);
27
+ }
28
+ }
@@ -0,0 +1,4 @@
1
+ @mixin vars {
2
+ --components-verticalNavigation-link-background: var(--colors-white-color);
3
+ --components-verticalNavigation-link-color: var(--palettes-grey-800);
4
+ }
@@ -1,68 +0,0 @@
1
- @use '@lucca-front/icons/src/commons/utils/icon';
2
-
3
- @mixin component($atRoot: 'without: rule') {
4
- background-color: var(--colors-white-color);
5
- border: var(--commons-divider-width) solid var(--commons-divider-color);
6
- border-radius: var(--commons-borderRadius-M);
7
- list-style: none;
8
- padding: 0;
9
-
10
- @at-root ($atRoot) {
11
- .sortableList-item {
12
- border-bottom-width: var(--commons-divider-width);
13
- border-bottom-color: var(--commons-divider-color);
14
- border-bottom-style: solid;
15
- color: var(--palettes-grey-800);
16
- display: flex;
17
- position: relative;
18
- text-decoration: none;
19
- gap: var(--spacings-XS);
20
- padding: var(--components-sortableList-padding);
21
-
22
- &:last-child {
23
- border: 0;
24
- }
25
- }
26
-
27
- .sortableList-item-content {
28
- color: var(--palettes-grey-800);
29
- text-decoration: none;
30
- width: 100%;
31
- }
32
-
33
- .sortableList-item-content-description {
34
- margin: 0;
35
- font-size: var(--components-sortableList-description-fontSize);
36
- line-height: var(--components-sortableList-description-lineHeight);
37
- }
38
-
39
- .sortableList-item-content-helper {
40
- margin: 0;
41
- color: var(--palettes-grey-600);
42
- font-size: var(--components-sortableList-helper-fontSize);
43
- line-height: var(--components-sortableList-helper-lineHeight);
44
- }
45
-
46
- .sortableList-item-actions {
47
- margin-left: auto;
48
- white-space: nowrap;
49
- padding-left: 0;
50
- }
51
-
52
-
53
- .sortableList-item-handler {
54
- color: var(--palettes-grey-600);
55
- font-size: var(--components-sortableList-handler-size);
56
- cursor: move;
57
-
58
- &::before {
59
- @include icon.generate('drag');
60
- vertical-align: top;
61
- }
62
- }
63
-
64
- .sortableList-clear {
65
- margin-top: var(--spacings-XXS);
66
- }
67
- }
68
- }
@@ -1,16 +0,0 @@
1
- @use 'exports' as *;
2
-
3
- .sortableList {
4
- @include vars;
5
- @include component;
6
-
7
- &.mod-S {
8
- @include S;
9
- }
10
- }
11
-
12
- .sortableList-item {
13
- &.mod-clickable {
14
- @include clickable;
15
- }
16
- }
@@ -1,19 +0,0 @@
1
- @mixin clickable {
2
- transition-duration: var(--commons-animations-durations-fast);
3
- transition-property: background-color;
4
- text-decoration: none;
5
- cursor: pointer;
6
-
7
- &:hover {
8
- background-color: var(--palettes-grey-50);
9
- }
10
- }
11
-
12
- @mixin S {
13
- --components-sortableList-padding: .375rem var(--spacings-XS);
14
- --components-sortableList-handler-size: var(--sizes-S-lineHeight);
15
- --components-sortableList-description-fontSize: var(--sizes-S-fontSize);
16
- --components-sortableList-description-lineHeight: var(--sizes-S-lineHeight);
17
- --components-sortableList-helper-fontSize: var(--sizes-XS-fontSize);
18
- --components-sortableList-helper-lineHeight: var(--sizes-XS-lineHeight);
19
- }
@@ -1,8 +0,0 @@
1
- @mixin vars {
2
- --components-sortableList-padding: var(--spacings-XS) .75rem;
3
- --components-sortableList-handler-size: var(--sizes-M-lineHeight);
4
- --components-sortableList-description-fontSize: var(--sizes-M-fontSize);
5
- --components-sortableList-description-lineHeight: var(--sizes-M-lineHeight);
6
- --components-sortableList-helper-fontSize: var(--sizes-S-fontSize);
7
- --components-sortableList-helper-lineHeight: var(--sizes-S-lineHeight);
8
- }