@lucca-front/scss 22.0.5 → 22.1.0-rc.2

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 (44) hide show
  1. package/dist/lucca-front.min.css +1 -1
  2. package/package.json +3 -3
  3. package/src/commons/config.scss +1 -1
  4. package/src/commons/utils/highlight-prisme.scss +2 -0
  5. package/src/components/activityFeed/component.scss +7 -5
  6. package/src/components/activityFeed/index.scss +4 -0
  7. package/src/components/activityFeed/states.scss +6 -0
  8. package/src/components/dataTableSticked/mods.scss +6 -0
  9. package/src/components/dialog/component.scss +6 -3
  10. package/src/components/dialog/mods.scss +2 -2
  11. package/src/components/dialog/vars.scss +6 -0
  12. package/src/components/fancyBox/component.scss +87 -14
  13. package/src/components/fancyBox/mods.scss +8 -8
  14. package/src/components/fancyBox/vars.scss +25 -7
  15. package/src/components/highlightData/index.scss +12 -0
  16. package/src/components/highlightData/mods.scss +27 -0
  17. package/src/components/highlightData/vars.scss +9 -0
  18. package/src/components/index.scss +1 -0
  19. package/src/components/link/index.scss +4 -0
  20. package/src/components/link/mods.scss +5 -0
  21. package/src/components/multiSelect/component.scss +17 -0
  22. package/src/components/multiSelect/index.scss +18 -0
  23. package/src/components/multiSelect/mods.scss +33 -0
  24. package/src/components/multiSelect/states.scss +4 -0
  25. package/src/components/multiSelect/vars.scss +1 -0
  26. package/src/components/priorityLevels/component.scss +38 -0
  27. package/src/components/priorityLevels/exports.scss +4 -0
  28. package/src/components/priorityLevels/index.scss +30 -0
  29. package/src/components/priorityLevels/mods.scss +28 -0
  30. package/src/components/priorityLevels/states.scss +0 -0
  31. package/src/components/priorityLevels/vars.scss +8 -0
  32. package/src/components/simpleSelect/component.scss +23 -0
  33. package/src/components/simpleSelect/index.scss +18 -0
  34. package/src/components/simpleSelect/mods.scss +20 -0
  35. package/src/components/simpleSelect/states.scss +4 -0
  36. package/src/components/simpleSelect/vars.scss +1 -0
  37. package/src/components/tag/component.scss +6 -6
  38. package/src/components/tag/index.scss +17 -0
  39. package/src/components/tag/mods.scss +4 -0
  40. package/src/components/tag/states.scss +4 -0
  41. package/src/components/tag/vars.scss +2 -0
  42. package/src/components/textField/index.scss +8 -0
  43. package/src/components/textField/mods.scss +5 -0
  44. package/src/components/userPopover/component.scss +5 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucca-front/scss",
3
- "version": "22.0.5",
3
+ "version": "22.1.0-rc.2",
4
4
  "description": "A Sass framework for Lucca products.",
5
5
  "main": "src/main.scss",
6
6
  "scripts": {},
@@ -24,7 +24,7 @@
24
24
  "normalize.css": "^8.0.0"
25
25
  },
26
26
  "peerDependencies": {
27
- "@lucca-front/icons": "22.0.5",
28
- "@lucca/prisme": "22.0.5"
27
+ "@lucca-front/icons": "22.1.0-rc.2",
28
+ "@lucca/prisme": "22.1.0-rc.2"
29
29
  }
30
30
  }
@@ -184,7 +184,7 @@ $palettesAssets: (
184
184
  'timmi': ('brand': 'brand', 'secondary': 'glacier')
185
185
  );
186
186
 
187
- $fieldsWidth: 20, 30, 40, 50, 60 !default;
187
+ $fieldsWidth: 10, 20, 30, 40, 50, 60 !default;
188
188
 
189
189
  // Palettes
190
190
 
@@ -20,6 +20,7 @@
20
20
  .newBadge,
21
21
  .numericBadge,
22
22
  .plgPush,
23
+ .priorityLevels,
23
24
  .readMore,
24
25
  .statusBadge,
25
26
  .tag,
@@ -155,6 +156,7 @@
155
156
  lu-new-badge,
156
157
  lu-numeric-badge,
157
158
  lu-plg-push .plgPush,
159
+ lu-priority-levels,
158
160
  lu-read-more,
159
161
  lu-status-badge,
160
162
  lu-tag .tag,
@@ -1,5 +1,6 @@
1
1
  @use '@lucca-front/scss/src/commons/utils/namespace';
2
2
  @use '@lucca-front/scss/src/commons/utils/reset';
3
+ @use '@lucca-front/icons/src/icon/exports' as icons;
3
4
 
4
5
  @mixin component($atRoot: namespace.$defaultAtRoot) {
5
6
  list-style-type: '';
@@ -36,6 +37,11 @@
36
37
  }
37
38
 
38
39
  .activityFeed-step-state {
40
+ @include icons.S;
41
+
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
39
45
  inline-size: var(--pr-t-spacings-400);
40
46
  block-size: var(--pr-t-spacings-400);
41
47
  border-radius: var(--pr-t-border-radius-full);
@@ -44,12 +50,8 @@
44
50
 
45
51
  &::before {
46
52
  color: var(--palettes-700, var(--palettes-neutral-700));
47
- font-size: calc(1.5 * var(--pr-t-font-body-M-fontSize));
53
+ font-size: var(--icon-size);
48
54
  block-size: var(--pr-t-font-body-M-lineHeight);
49
- inset: 0;
50
- margin: auto;
51
- position: absolute;
52
- text-align: center;
53
55
  }
54
56
  }
55
57
 
@@ -34,6 +34,10 @@
34
34
  @include critical;
35
35
  }
36
36
 
37
+ .activityFeed-step-state.mod-icon {
38
+ @include withIcon;
39
+ }
40
+
37
41
  .activityFeed-content-update-item {
38
42
  &:has(.activityFeed-content-update-item-before:empty, .activityFeed-content-update-item-after:empty) {
39
43
  @include single;
@@ -24,3 +24,9 @@
24
24
  @include icon.generate('sign_close');
25
25
  }
26
26
  }
27
+
28
+ @mixin withIcon {
29
+ @include color.palette('product');
30
+
31
+ color: var(--palettes-product-700);
32
+ }
@@ -155,6 +155,12 @@
155
155
  }
156
156
  }
157
157
  }
158
+
159
+ .dataTable-body-row.mod-group .dataTable-body-row-cell-expand {
160
+ position: sticky;
161
+ inset-inline-start: var(--components-dataTable-cell-padding-inline);
162
+ inline-size: fit-content;
163
+ }
158
164
  }
159
165
 
160
166
  @mixin stickyColumnBorder {
@@ -6,7 +6,7 @@
6
6
 
7
7
  @mixin component($atRoot: namespace.$defaultAtRoot) {
8
8
  animation-name: var(--components-dialog-animationOpening);
9
- animation-duration: var(--commons-animations-durations-standard);
9
+ animation-duration: var(--components-dialog-animationDuration);
10
10
  inset: var(--components-dialog-inset);
11
11
  inline-size: var(--components-dialog-width);
12
12
  block-size: var(--components-dialog-height);
@@ -21,7 +21,7 @@
21
21
  max-inline-size: var(--components-dialog-maxWidth) !important;
22
22
  max-block-size: var(--components-dialog-maxHeight) !important;
23
23
  transition-property: scale, translate, inline-size, block-size, inset;
24
- transition-duration: var(--commons-animations-durations-standard);
24
+ transition-duration: var(--components-dialog-animationDuration);
25
25
  overflow: hidden;
26
26
  translate: var(--components-dialog-translateX) var(--components-dialog-translateY);
27
27
  scale: var(--components-dialog-scale);
@@ -147,10 +147,12 @@
147
147
  position: var(--components-dialog-inside-header-button-position);
148
148
  inset-block-start: var(--components-dialog-inside-header-button-insetBlockStart);
149
149
  inset-inline-end: var(--components-dialog-inside-header-button-insetInlineEnd);
150
+ justify-self: var(--components-dialog-inside-header-button-justifySelf);
150
151
  }
151
152
 
152
153
  .dialog-inside-header-content {
153
154
  grid-area: content;
155
+ padding-block-start: var(--components-dialog-inside-header-content-paddingBlockStart);
154
156
 
155
157
  &:empty {
156
158
  display: none;
@@ -166,6 +168,7 @@
166
168
  flex-grow: var(--components-dialog-insideContent-flexGrow);
167
169
  display: block;
168
170
  outline: none;
171
+ isolation: isolate;
169
172
 
170
173
  &:empty {
171
174
  display: none;
@@ -177,7 +180,7 @@
177
180
  }
178
181
 
179
182
  .dialog-inside-header-container-title {
180
- font: var(--pr-t-font-heading-2);
183
+ font: var(--components-dialog-insideHeaderTitleFont);
181
184
  padding: var(--components-dialog-insideHeaderTitlePadding);
182
185
  text-align: var(--components-dialog-insideHeaderTitleAlign);
183
186
  margin: 0;
@@ -79,10 +79,10 @@
79
79
  @mixin sheet {
80
80
  --components-dialog-width: 100%;
81
81
  --components-dialog-maxWidth: none;
82
- --components-dialog-maxHeight: calc(100% - var(--pr-t-spacings-150));
82
+ --components-dialog-maxHeight: min(calc(100% - var(--pr-t-spacings-150)), calc(var(--components-dialog-visibleViewportBlockSize) - var(--pr-t-spacings-150)));
83
83
  --components-dialog-maxHeightFallback: var(--components-dialog-maxHeight);
84
84
  --components-dialog-borderRadius: var(--pr-t-border-radius-structure) var(--pr-t-border-radius-structure) 0 0;
85
- --components-dialog-inset: auto 0 0;
85
+ --components-dialog-inset: auto 0 var(--components-dialog-insetBlockEnd) 0;
86
86
  }
87
87
 
88
88
  @mixin sheetNarrow {
@@ -8,11 +8,15 @@
8
8
  --components-dialog-maxHeightFallback: calc(100vh - (var(--pr-t-spacings-200) * 2));
9
9
  --components-dialog-borderRadius: var(--pr-t-border-radius-structure);
10
10
  --components-dialog-inset: 0 var(--commons-pushPanel-inlineSize) 0 0;
11
+ --components-dialog-insetBlockEnd: 0px;
12
+ --components-dialog-visibleViewportBlockSize: 100%;
11
13
  --components-dialog-animationOpening: scaleIn;
14
+ --components-dialog-animationDuration: var(--commons-animations-durations-standard);
12
15
  --components-dialog-insideHeaderAreas:
13
16
  'container close'
14
17
  'content content';
15
18
  --components-dialog-insideHeaderTitleAlign: left;
19
+ --components-dialog-insideHeaderTitleFont: var(--pr-t-font-heading-2);
16
20
  --components-dialog-insideHeaderTitlePadding: calc(var(--pr-t-spacings-50) / 2) 0;
17
21
  --components-dialog-insideHeaderButtonDisplay: flex;
18
22
  --components-dialog-insideHeaderLinkDisplay: none;
@@ -32,6 +36,7 @@
32
36
  --components-dialog-inside-header-position: relative;
33
37
  --components-dialog-inside-header-paddingBlock: var(--pr-t-spacings-200);
34
38
  --components-dialog-inside-header-paddingInline: var(--pr-t-spacings-300);
39
+ --components-dialog-inside-header-content-paddingBlockStart: 0px;
35
40
  --components-dialog-inside-header-button-position: static;
36
41
  --components-dialog-inside-backgroundImage: none;
37
42
  --components-dialog-minBlockSize: 0px;
@@ -41,6 +46,7 @@
41
46
  --components-dialog-inside-fancyIllustrations-inlineSize: var(--components-dialog-inside-paddingInlineEnd);
42
47
  --components-dialog-inside-header-button-insetBlockStart: var(--pr-t-spacings-200);
43
48
  --components-dialog-inside-header-button-insetInlineEnd: var(--pr-t-spacings-300);
49
+ --components-dialog-inside-header-button-justifySelf: auto;
44
50
  --components-dialog-inside-header-marginBlock: 0px;
45
51
  --components-dialog-inside-footer-marginBlock: 0px;
46
52
  --components-dialog-inside-footer-actions-button-icon-menuDots-display: block;
@@ -9,7 +9,91 @@
9
9
  margin-inline: var(--components-fancyBox-marginInline);
10
10
  contain: layout;
11
11
 
12
+ &:has(.fancyBox-content-backgroundEndStart),
13
+ &:has(.fancyBox-content-backgroundStartEnd),
14
+ &:has(.fancyBox-content-foregroundStartEnd),
15
+ &:has(.fancyBox-content-foregroundEndStart) {
16
+ .fancyBox-content {
17
+ &::before,
18
+ &::after {
19
+ content: none;
20
+ }
21
+ }
22
+ }
23
+
12
24
  @at-root ($atRoot) {
25
+ :is(
26
+ .fancyBox-content-backgroundEndStart,
27
+ .fancyBox-content-backgroundStartEnd,
28
+ .fancyBox-content-foregroundStartEnd,
29
+ .fancyBox-content-foregroundEndStart
30
+ ) {
31
+ position: absolute;
32
+ transition-duration: var(--commons-animations-durations-slow);
33
+ pointer-events: none;
34
+ transition-property: inline-size, block-size, inset;
35
+
36
+ svg {
37
+ display: block;
38
+ inline-size: 100%;
39
+ block-size: auto;
40
+ }
41
+ }
42
+
43
+ .fancyBox-content-backgroundEndStart,
44
+ .fancyBox-content-backgroundStartEnd {
45
+ z-index: -1;
46
+ }
47
+
48
+ .fancyBox-content-backgroundEndStart {
49
+ inset-block-end: var(--components-fancyBox-content-backgroundEndStart-insetBlockEnd);
50
+ inset-inline-start: var(--components-fancyBox-content-backgroundEndStart-insetInlineStart);
51
+ inline-size: var(--components-fancyBox-content-backgroundEndStart-inlineSize);
52
+ block-size: var(--components-fancyBox-content-backgroundEndStart-blockSize);
53
+ }
54
+
55
+ .fancyBox-content-backgroundStartEnd {
56
+ inset-block-start: var(--components-fancyBox-content-backgroundStartEnd-insetBlockStart);
57
+ inset-inline-end: var(--components-fancyBox-content-backgroundStartEnd-insetInlineEnd);
58
+ inline-size: var(--components-fancyBox-content-backgroundStartEnd-inlineSize);
59
+ block-size: var(--components-fancyBox-content-backgroundStartEnd-blockSize);
60
+ }
61
+
62
+ .fancyBox-content-foregroundStartEnd {
63
+ inset-block-start: var(--components-fancyBox-content-foregroundStartEnd-insetBlockStart);
64
+ inset-inline-end: var(--components-fancyBox-content-foregroundStartEnd-insetInlineEnd);
65
+ inline-size: var(--components-fancyBox-content-foregroundStartEnd-inlineSize);
66
+ block-size: var(--components-fancyBox-content-foregroundStartEnd-blockSize);
67
+ }
68
+
69
+ .fancyBox-content-foregroundEndStart {
70
+ inset-block-end: var(--components-fancyBox-content-foregroundEndStart-insetBlockEnd);
71
+ inset-inline-start: var(--components-fancyBox-content-foregroundEndStart-insetInlineStart);
72
+ inline-size: var(--components-fancyBox-content-foregroundEndStart-inlineSize);
73
+ block-size: var(--components-fancyBox-content-foregroundEndStart-blockSize);
74
+ }
75
+
76
+ // deprecated
77
+ .fancyBox-content-foreground {
78
+ inset-block-start: var(--components-fancyBox-content-foregroundStartEnd-insetBlockStart);
79
+ inset-inline-end: var(--components-fancyBox-content-foregroundStartEnd-insetInlineEnd);
80
+ inline-size: var(--components-fancyBox-content-foregroundStartEnd-inlineSize);
81
+ block-size: var(--components-fancyBox-content-foregroundStartEnd-blockSize);
82
+ background-repeat: no-repeat;
83
+ background-image: var(--components-fancyBox-foreground);
84
+ background-size: contain;
85
+ position: absolute;
86
+ transition-duration: var(--commons-animations-durations-slow);
87
+ pointer-events: none;
88
+ transition-property: inline-size, block-size, inset;
89
+
90
+ svg {
91
+ display: block;
92
+ inline-size: 100%;
93
+ block-size: auto;
94
+ }
95
+ }
96
+
13
97
  .fancyBox-content {
14
98
  position: relative;
15
99
  min-block-size: var(--components-fancyBox-contentMinBlockSize);
@@ -25,6 +109,7 @@
25
109
  align-items: center;
26
110
  justify-content: center;
27
111
 
112
+ // deprecated
28
113
  &::before,
29
114
  &::after {
30
115
  content: '';
@@ -38,6 +123,7 @@
38
123
  pointer-events: none;
39
124
  }
40
125
 
126
+ // deprecated
41
127
  &::before {
42
128
  transition-property: inline-size, block-size, inset-block-end, inset-inline-start;
43
129
  inset-block-end: var(--components-fancyBox-offsetBlock);
@@ -45,6 +131,7 @@
45
131
  background-image: var(--components-fancyBox-background-left);
46
132
  }
47
133
 
134
+ // deprecated
48
135
  &::after {
49
136
  transition-property: inline-size, block-size, inset-block-start, inset-inline-end;
50
137
  inset-block-start: var(--components-fancyBox-offsetBlock);
@@ -52,19 +139,5 @@
52
139
  background-image: var(--components-fancyBox-background-right);
53
140
  }
54
141
  }
55
-
56
- .fancyBox-content-foreground {
57
- position: absolute;
58
- inline-size: var(--components-fancyBox-imageWidth);
59
- block-size: var(--components-fancyBox-imageHeight);
60
- background-repeat: no-repeat;
61
- inset-block-start: var(--components-fancyBox-offsetBlock);
62
- inset-inline-end: var(--components-fancyBox-offsetInline);
63
- background-image: var(--components-fancyBox-foreground);
64
- background-size: contain;
65
- transition-property: inline-size, block-size, inset-block-start, inset-inline-end;
66
- transition-duration: var(--commons-animations-durations-slow);
67
- pointer-events: none;
68
- }
69
142
  }
70
143
  }
@@ -1,16 +1,16 @@
1
1
  @mixin narrow {
2
- --components-fancyBox-imageWidth: 11.25rem;
3
- --components-fancyBox-imageHeight: 9rem;
4
- --components-fancyBox-offsetInline: -8.75rem;
5
- --components-fancyBox-offsetBlock: -0.5rem;
2
+ --components-fancyBox-content-foregroundStartEnd-inlineSize: 11.25rem;
3
+ --components-fancyBox-content-foregroundStartEnd-blockSize: 9rem;
4
+ --components-fancyBox-content-foregroundStartEnd-insetInlineEnd: -8.75rem;
5
+ --components-fancyBox-content-foregroundStartEnd-insetBlockStart: -0.5rem;
6
6
  }
7
7
 
8
8
  @mixin S {
9
- --components-fancyBox-offsetInline: -9rem;
10
- --components-fancyBox-offsetBlock: -0.75rem;
11
- --components-fancyBox-imageWidth: 9.375rem;
12
- --components-fancyBox-imageHeight: 7.5rem;
13
9
  --components-fancyBox-contentMinInlineSize: min(17rem, 100%);
14
10
  --components-fancyBox-contentPaddingBlock: var(--pr-t-spacings-150);
15
11
  --components-fancyBox-contentPaddingInline: var(--pr-t-spacings-200);
12
+ --components-fancyBox-content-foregroundStartEnd-insetInlineEnd: -9rem;
13
+ --components-fancyBox-content-foregroundStartEnd-insetBlockStart: -0.75rem;
14
+ --components-fancyBox-content-foregroundStartEnd-inlineSize: 9.375rem;
15
+ --components-fancyBox-content-foregroundStartEnd-blockSize: 7.5rem;
16
16
  }
@@ -1,19 +1,37 @@
1
1
  @mixin vars {
2
2
  --components-fancyBox-paddingInline: var(--pr-t-spacings-200);
3
3
  --components-fancyBox-marginInline: auto;
4
-
5
- // Content
6
4
  --components-fancyBox-contentMinBlockSize: 7rem;
7
5
  --components-fancyBox-contentMinInlineSize: min(22rem, 100%);
8
6
  --components-fancyBox-contentPaddingBlock: var(--pr-t-spacings-300);
9
7
  --components-fancyBox-contentPaddingInline: var(--pr-t-spacings-700);
10
8
 
11
- // Visuals
9
+ --components-fancyBox-content-foregroundStartEnd-insetBlockStart: -1.5rem;
10
+ --components-fancyBox-content-foregroundStartEnd-insetInlineEnd: -10rem;
11
+ --components-fancyBox-content-foregroundStartEnd-inlineSize: 12.5rem;
12
+ --components-fancyBox-content-foregroundStartEnd-blockSize: 10rem;
13
+
14
+ --components-fancyBox-content-backgroundStartEnd-insetBlockStart: var(--components-fancyBox-content-foregroundStartEnd-insetBlockStart);
15
+ --components-fancyBox-content-backgroundStartEnd-insetInlineEnd: var(--components-fancyBox-content-foregroundStartEnd-insetInlineEnd);
16
+ --components-fancyBox-content-backgroundStartEnd-inlineSize: var(--components-fancyBox-content-foregroundStartEnd-inlineSize);
17
+ --components-fancyBox-content-backgroundStartEnd-blockSize: var(--components-fancyBox-content-foregroundStartEnd-blockSize);
18
+
19
+ --components-fancyBox-content-foregroundEndStart-insetBlockEnd: var(--components-fancyBox-content-foregroundStartEnd-insetBlockStart);
20
+ --components-fancyBox-content-foregroundEndStart-insetInlineStart: var(--components-fancyBox-content-foregroundStartEnd-insetInlineEnd);
21
+ --components-fancyBox-content-foregroundEndStart-inlineSize: var(--components-fancyBox-content-foregroundStartEnd-inlineSize);
22
+ --components-fancyBox-content-foregroundEndStart-blockSize: var(--components-fancyBox-content-foregroundStartEnd-blockSize);
23
+
24
+ --components-fancyBox-content-backgroundEndStart-insetBlockEnd: var(--components-fancyBox-content-foregroundStartEnd-insetBlockStart);
25
+ --components-fancyBox-content-backgroundEndStart-insetInlineStart: var(--components-fancyBox-content-foregroundStartEnd-insetInlineEnd);
26
+ --components-fancyBox-content-backgroundEndStart-inlineSize: var(--components-fancyBox-content-foregroundStartEnd-inlineSize);
27
+ --components-fancyBox-content-backgroundEndStart-blockSize: var(--components-fancyBox-content-foregroundStartEnd-blockSize);
28
+
29
+ // Deprecated
30
+ --components-fancyBox-offsetInline: var(--components-fancyBox-content-foregroundStartEnd-insetInlineEnd);
31
+ --components-fancyBox-offsetBlock: var(--components-fancyBox-content-foregroundStartEnd-insetBlockStart);
32
+ --components-fancyBox-imageWidth: var(--components-fancyBox-content-foregroundStartEnd-inlineSize);
33
+ --components-fancyBox-imageHeight: var(--components-fancyBox-content-foregroundStartEnd-blockSize);
12
34
  --components-fancyBox-background-left: none;
13
35
  --components-fancyBox-background-right: none;
14
36
  --components-fancyBox-foreground: none;
15
- --components-fancyBox-imageWidth: 12.5rem;
16
- --components-fancyBox-imageHeight: 10rem;
17
- --components-fancyBox-offsetInline: -10rem;
18
- --components-fancyBox-offsetBlock: -1.5rem;
19
37
  }
@@ -15,6 +15,18 @@
15
15
  @include dark;
16
16
  }
17
17
 
18
+ &.palette-success {
19
+ @include success;
20
+ }
21
+
22
+ &.palette-warning {
23
+ @include warning;
24
+ }
25
+
26
+ &.palette-critical {
27
+ @include critical;
28
+ }
29
+
18
30
  &.mod-valueFirst {
19
31
  @include valueFirst;
20
32
  }
@@ -4,6 +4,33 @@
4
4
 
5
5
  @mixin dark {
6
6
  --components-highlightData-background: var(--palettes-100, var(--palettes-product-100));
7
+ --palettes-assets-primary: var(--components-highlightData-bubble-primary-dark);
8
+ --palettes-assets-secondary: var(--components-highlightData-bubble-secondary-dark);
9
+ --palettes-assets-brand: var(--components-highlightData-bubble-brand-dark);
10
+ }
11
+
12
+ @mixin success {
13
+ --components-highlightData-bubble-primary-light: var(--palettes-success-100);
14
+ --components-highlightData-bubble-primary-dark: var(--palettes-success-300);
15
+ --components-highlightData-bubble-secondary-light: var(--palettes-brand-300);
16
+ --components-highlightData-bubble-secondary-dark: var(--palettes-brand-100);
17
+ --components-highlightData-bubble-brand-dark: var(--palettes-assets-primary-light);
18
+ }
19
+
20
+ @mixin warning {
21
+ --components-highlightData-bubble-primary-light: var(--palettes-warning-100);
22
+ --components-highlightData-bubble-primary-dark: var(--palettes-warning-300);
23
+ --components-highlightData-bubble-secondary-light: var(--palettes-brand-300);
24
+ --components-highlightData-bubble-secondary-dark: var(--palettes-assets-brand-lighter);
25
+ --components-highlightData-bubble-brand-dark: var(--palettes-assets-primary-dark);
26
+ }
27
+
28
+ @mixin critical {
29
+ --components-highlightData-bubble-primary-light: var(--palettes-critical-100);
30
+ --components-highlightData-bubble-primary-dark: var(--palettes-critical-300);
31
+ --components-highlightData-bubble-secondary-light: var(--palettes-brand-300);
32
+ --components-highlightData-bubble-secondary-dark: var(--palettes-assets-brand-lighter);
33
+ --components-highlightData-bubble-brand-dark: var(--palettes-brand-300);
7
34
  }
8
35
 
9
36
  @mixin valueFirst {
@@ -18,4 +18,13 @@
18
18
  --components-highlightData-illustrations-width: 86px;
19
19
  --components-highlightData-illustrations-height: 72px;
20
20
  --components-highlightData-illustrations-display: grid;
21
+ --components-highlightData-bubble-primary-light: var(--palettes-assets-primary-light);
22
+ --components-highlightData-bubble-primary-dark: var(--palettes-assets-primary-dark);
23
+ --components-highlightData-bubble-secondary-light: var(--palettes-assets-secondary-light);
24
+ --components-highlightData-bubble-secondary-dark: var(--palettes-assets-secondary-lighter);
25
+ --components-highlightData-bubble-brand-light: var(--palettes-assets-brand-dark);
26
+ --components-highlightData-bubble-brand-dark: var(--palettes-assets-brand-lighter);
27
+ --palettes-assets-primary: var(--components-highlightData-bubble-primary-light);
28
+ --palettes-assets-secondary: var(--components-highlightData-bubble-secondary-light);
29
+ --palettes-assets-brand: var(--components-highlightData-bubble-brand-light);
21
30
  }
@@ -116,6 +116,7 @@
116
116
  @forward 'bubbleIllustration';
117
117
  @forward 'bubbleIcon';
118
118
  @forward 'softwareIcon';
119
+ @forward 'priorityLevels';
119
120
  @forward 'progressStepper';
120
121
  @forward 'activityFeed';
121
122
  @forward 'impersonation';
@@ -20,6 +20,10 @@
20
20
  }
21
21
  }
22
22
 
23
+ &.mod-neutral {
24
+ @include neutral;
25
+ }
26
+
23
27
  @include media.isNotTouchDevice {
24
28
  &.mod-hiddenIcon {
25
29
  &:not(:hover, :focus-visible) {
@@ -10,6 +10,11 @@
10
10
  --components-link-color-hover: var(--palettes-brand-800);
11
11
  }
12
12
 
13
+ @mixin neutral {
14
+ --components-link-color: var(--pr-t-color-text);
15
+ --components-link-color-hover: var(--palettes-neutral-900);
16
+ }
17
+
13
18
  @mixin hasLinkText {
14
19
  --components-link-textDecoration: none;
15
20
  }
@@ -8,6 +8,7 @@
8
8
 
9
9
  @mixin component($atRoot: namespace.$defaultAtRoot) {
10
10
  display: flex;
11
+ inline-size: var(--components-multiSelect-width);
11
12
  box-shadow: 0 0 0 1px var(--components-multiSelect-border-color);
12
13
  background-color: var(--components-multiSelect-background);
13
14
  border-radius: var(--pr-t-border-radius-input);
@@ -69,6 +70,22 @@
69
70
  &::placeholder {
70
71
  color: var(--components-multiSelect-placeholder);
71
72
  }
73
+
74
+ // Below the S breakpoint the trigger is a button instead of a text input, so the native
75
+ // button chrome has to be stripped and its text — standing in for the placeholder, which a
76
+ // button has no equivalent of — coloured and aligned the way the placeholder was.
77
+ &.mod-button {
78
+ appearance: none;
79
+ text-align: start;
80
+ color: var(--components-multiSelect-placeholder);
81
+ white-space: nowrap;
82
+ overflow: hidden;
83
+ text-overflow: ellipsis;
84
+
85
+ &:empty {
86
+ @include a11y.mask;
87
+ }
88
+ }
72
89
  }
73
90
 
74
91
  .multipleSelect-displayer-label {
@@ -1,3 +1,5 @@
1
+ @use '@lucca-front/scss/src/commons/config';
2
+
1
3
  @use 'exports' as *;
2
4
 
3
5
  .multiSelect {
@@ -7,6 +9,12 @@
7
9
  }
8
10
 
9
11
  @layer mods {
12
+ @each $value in config.$fieldsWidth {
13
+ &.mod-width#{$value} {
14
+ @include width($value);
15
+ }
16
+ }
17
+
10
18
  &.mod-S {
11
19
  @include S;
12
20
  }
@@ -41,6 +49,10 @@
41
49
 
42
50
  &:has(.multipleSelect-displayer-search[aria-invalid='true']) {
43
51
  @include invalid;
52
+
53
+ &:hover {
54
+ @include invalidHover;
55
+ }
44
56
  }
45
57
 
46
58
  &:has(.multipleSelect-displayer-search:disabled) {
@@ -73,3 +85,9 @@
73
85
  }
74
86
  }
75
87
  }
88
+
89
+ @layer mods {
90
+ .dialog.mod-select {
91
+ @include select;
92
+ }
93
+ }
@@ -1,9 +1,14 @@
1
+ @use 'sass:math';
1
2
  @use '@lucca-front/icons/src/icon/exports' as icon;
2
3
  @use '@lucca-front/scss/src/commons/utils/a11y';
3
4
  @use '@lucca-front/scss/src/components/clear/exports' as clear;
4
5
  @use '@lucca-front/scss/src/components/chip/exports' as chip;
5
6
  @use '@lucca-front/scss/src/components/numericBadge/exports' as numericBadge;
6
7
 
8
+ @mixin width($value) {
9
+ --components-multiSelect-width: #{math.div($value, 2) * 1rem};
10
+ }
11
+
7
12
  @mixin S {
8
13
  --components-multiSelect-font: var(--pr-t-font-body-S);
9
14
  --components-multiSelect-padding: var(--pr-t-spacings-75);
@@ -76,3 +81,31 @@
76
81
  }
77
82
  }
78
83
  }
84
+
85
+ @mixin select {
86
+ --components-dialog-animationDuration: 0s;
87
+ --components-dialog-insideHeaderTitleAlign: center;
88
+ --components-dialog-insideHeaderTitleFont: var(--pr-t-font-heading-4);
89
+ --components-dialog-insideHeaderColumns: 1fr auto 1fr;
90
+ --components-dialog-inside-header-button-justifySelf: end;
91
+ --components-dialog-insideHeaderAreas:
92
+ 'spacer container close '
93
+ 'content content content';
94
+ --components-dialog-inside-header-paddingInline: var(--pr-t-spacings-200);
95
+ --components-dialog-inside-header-content-paddingBlockStart: var(--pr-t-spacings-100);
96
+ --components-dialog-insideContent-paddingInline: var(--pr-t-spacings-50);
97
+ --components-dialog-insideContent-paddingBlock: var(--pr-t-spacings-50);
98
+
99
+ // The sheet is how the select is reached on a touch device, where there is no hover to reveal
100
+ // either the tree's onlyParent/onlyChildren buttons or a group's « select all » link: inside a
101
+ // sheet both are shown for good. The tree buttons also leave their absolute position on the way,
102
+ // so that being there all the time shortens the option's label instead of covering it.
103
+ .optionItem-icons {
104
+ position: static;
105
+ opacity: 1;
106
+ }
107
+
108
+ .listboxOption-content {
109
+ --components-listboxOption-content-link-opacity: 1;
110
+ }
111
+ }
@@ -11,6 +11,10 @@
11
11
  --components-multiSelect-placeholder: var(--pr-t-color-input-text-placeholder-critical);
12
12
  }
13
13
 
14
+ @mixin invalidHover {
15
+ --components-multiSelect-border-color: var(--pr-t-color-input-border-critical-hover);
16
+ }
17
+
14
18
  @mixin disabled {
15
19
  --components-multiSelect-background: var(--pr-t-color-input-background-disabled);
16
20
  --components-multiSelect-placeholder: var(--commons-disabled-placeholder);
@@ -1,4 +1,5 @@
1
1
  @mixin vars {
2
+ --components-multiSelect-width: auto;
2
3
  --components-multiSelect-font: var(--pr-t-font-body-M);
3
4
  --components-multiSelect-padding: var(--pr-t-spacings-100);
4
5
  --components-multiSelect-gap: var(--pr-t-spacings-100);