@lucca-front/scss 19.3.0-rc.2 → 19.3.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/lucca-front.min.css +1 -1
  2. package/package.json +2 -2
  3. package/src/commons/base.scss +11 -3
  4. package/src/commons/config.scss +11 -1
  5. package/src/commons/core.scss +25 -13
  6. package/src/commons/utils/color.scss +2 -0
  7. package/src/commons/utils/index.scss +6 -2
  8. package/src/commons/utils/keyframe.scss +1 -0
  9. package/src/commons/utils/loading.scss +1 -1
  10. package/src/commons/utils/media.scss +4 -0
  11. package/src/commons/utils/reset.scss +1 -1
  12. package/src/commons/vars.scss +8 -0
  13. package/src/components/_sample/component.scss +3 -3
  14. package/src/components/avatar/component.scss +0 -1
  15. package/src/components/avatar/mods.scss +1 -0
  16. package/src/components/box/index.scss +4 -0
  17. package/src/components/box/mods.scss +5 -0
  18. package/src/components/button/component.scss +2 -2
  19. package/src/components/calendar/component.scss +2 -0
  20. package/src/components/calendar/states.scss +3 -1
  21. package/src/components/callout/component.scss +1 -1
  22. package/src/components/calloutAccordion/component.scss +1 -1
  23. package/src/components/calloutAccordion/mods.scss +0 -4
  24. package/src/components/calloutDisclosure/component.scss +1 -1
  25. package/src/components/calloutPopover/component.scss +2 -1
  26. package/src/components/card/mods.scss +1 -1
  27. package/src/components/checkbox/mods.scss +1 -0
  28. package/src/components/checkboxField/component.scss +2 -1
  29. package/src/components/checkboxField/states.scss +1 -8
  30. package/src/components/clear/component.scss +1 -1
  31. package/src/components/comment/component.scss +2 -5
  32. package/src/components/dataTable/mods.scss +0 -7
  33. package/src/components/dataTableSticked/mods.scss +12 -15
  34. package/src/components/dateRangeField/vars.scss +1 -1
  35. package/src/components/dialog/mods.scss +0 -1
  36. package/src/components/divider/component.scss +2 -5
  37. package/src/components/dropdown/component.scss +2 -1
  38. package/src/components/emptyState/component.scss +1 -0
  39. package/src/components/errorPage/component.scss +2 -0
  40. package/src/components/fancyBox/component.scss +2 -0
  41. package/src/components/fileEntry/component.scss +199 -0
  42. package/src/components/fileEntry/exports.scss +4 -0
  43. package/src/components/fileEntry/index.scss +34 -0
  44. package/src/components/fileEntry/mods.scss +39 -0
  45. package/src/components/fileEntry/states.scss +22 -0
  46. package/src/components/fileEntry/vars.scss +27 -0
  47. package/src/components/fileToolbar/component.scss +35 -0
  48. package/src/components/fileToolbar/exports.scss +4 -0
  49. package/src/components/fileToolbar/index.scss +14 -0
  50. package/src/components/fileToolbar/mods.scss +9 -0
  51. package/src/components/fileToolbar/states.scss +0 -0
  52. package/src/components/fileToolbar/vars.scss +5 -0
  53. package/src/components/fileUpload/component.scss +103 -0
  54. package/src/components/fileUpload/exports.scss +4 -0
  55. package/src/components/fileUpload/index.scss +46 -0
  56. package/src/components/fileUpload/mods.scss +24 -0
  57. package/src/components/fileUpload/states.scss +37 -0
  58. package/src/components/fileUpload/vars.scss +26 -0
  59. package/src/components/filterBar/mods.scss +2 -2
  60. package/src/components/filterBarDeprecated/component.scss +3 -0
  61. package/src/components/filterPill/component.scss +2 -1
  62. package/src/components/filterPill/states.scss +2 -3
  63. package/src/components/footer/component.scss +1 -0
  64. package/src/components/form/index.scss +2 -0
  65. package/src/components/form/mods.scss +0 -1
  66. package/src/components/grid/component.scss +2 -3
  67. package/src/components/grid/mods.scss +1 -0
  68. package/src/components/highlightData/component.scss +5 -3
  69. package/src/components/highlightData/mods.scss +1 -0
  70. package/src/components/horizontalNavigation/component.scss +1 -3
  71. package/src/components/horizontalNavigation/index.scss +1 -0
  72. package/src/components/horizontalNavigation/mods.scss +2 -2
  73. package/src/components/index.scss +3 -0
  74. package/src/components/indexTable/component.scss +6 -9
  75. package/src/components/indexTable/index.scss +2 -1
  76. package/src/components/indexTable/mods.scss +41 -16
  77. package/src/components/indexTable/states.scss +5 -0
  78. package/src/components/indexTable/vars.scss +3 -0
  79. package/src/components/inlineMessage/component.scss +16 -3
  80. package/src/components/link/mods.scss +8 -8
  81. package/src/components/list/mods.scss +1 -0
  82. package/src/components/loading/component.scss +1 -1
  83. package/src/components/loading/mods.scss +4 -0
  84. package/src/components/mobileNavigation/component.scss +3 -1
  85. package/src/components/multiSelect/component.scss +1 -0
  86. package/src/components/multiSelect/mods.scss +4 -1
  87. package/src/components/multiSelect/states.scss +1 -0
  88. package/src/components/navside/component.scss +0 -2
  89. package/src/components/notchBox/component.scss +2 -0
  90. package/src/components/notchBox/mods.scss +3 -0
  91. package/src/components/numericBadge/component.scss +1 -2
  92. package/src/components/pagination/component.scss +1 -1
  93. package/src/components/popover/component.scss +1 -0
  94. package/src/components/radio/component.scss +1 -1
  95. package/src/components/radioButtons/component.scss +9 -11
  96. package/src/components/radioField/component.scss +1 -0
  97. package/src/components/radioField/states.scss +1 -8
  98. package/src/components/segmentedControl/component.scss +3 -3
  99. package/src/components/simpleSelect/component.scss +1 -0
  100. package/src/components/skeleton/component.scss +1 -0
  101. package/src/components/skeleton/states.scss +3 -0
  102. package/src/components/sortableList/component.scss +1 -0
  103. package/src/components/statusBadge/component.scss +1 -1
  104. package/src/components/switchField/component.scss +3 -1
  105. package/src/components/table/mods.scss +0 -14
  106. package/src/components/tableSortable/mods.scss +4 -2
  107. package/src/components/tableSortable/states.scss +2 -2
  108. package/src/components/tableSticked/index.scss +2 -2
  109. package/src/components/tableSticked/mods.scss +16 -6
  110. package/src/components/tag/component.scss +0 -2
  111. package/src/components/textField/component.scss +1 -0
  112. package/src/components/textfields/component.scss +1 -1
  113. package/src/components/textfields/index.scss +2 -2
  114. package/src/components/textfields/mods.scss +3 -2
  115. package/src/components/textfields/states.scss +3 -4
  116. package/src/components/timeline/component.scss +3 -2
  117. package/src/components/timeline/index.scss +13 -3
  118. package/src/components/timeline/mods.scss +22 -8
  119. package/src/components/timepicker/component.scss +0 -1
  120. package/src/components/timepickerDeprecated/component.scss +3 -2
  121. package/src/components/title/component.scss +1 -0
  122. package/src/components/tooltip/component.scss +1 -0
  123. package/src/components/verticalNavigation/component.scss +5 -1
  124. package/src/components/verticalNavigation/states.scss +2 -0
@@ -51,14 +51,17 @@
51
51
  display: none;
52
52
  }
53
53
  }
54
+
54
55
  &[aria-expanded='true'] {
55
56
  .filterBarDeprecated-footer-toggleButton-label {
56
57
  @include a11y.mask;
57
58
  }
59
+
58
60
  .lucca-icon {
59
61
  transform: rotate(180deg);
60
62
  }
61
63
  }
64
+
62
65
  .lucca-icon {
63
66
  transition: transform var(--commons-animations-durations-standard);
64
67
  }
@@ -121,7 +121,6 @@
121
121
  overflow: hidden;
122
122
  text-overflow: ellipsis;
123
123
  cursor: var(--components-filterPill-label-cursor);
124
-
125
124
  display: flex;
126
125
  align-items: center;
127
126
  gap: var(--pr-t-spacings-50);
@@ -183,6 +182,8 @@
183
182
  font-weight: 400;
184
183
  font-size: 1rem;
185
184
  direction: ltr;
185
+
186
+ // stylelint-disable-next-line font-family-no-missing-generic-family-keyword -- This font is for icons and should not have fallback.
186
187
  font-family: 'Lucca icons';
187
188
  font-feature-settings: 'liga';
188
189
  font-style: normal;
@@ -4,12 +4,10 @@
4
4
  --components-filterPill-borderColor: var(--palettes-product-300);
5
5
  --components-filterPill-backgroundColor: var(--palettes-product-50);
6
6
  --components-filterPill-color: var(--palettes-product-800);
7
-
8
7
  --components-filterPill-checkbox-backgroundColor: var(--palettes-product-700);
9
8
  --components-filterPill-checkbox-borderColor: var(--palettes-product-700);
10
9
  --components-filterPill-checkbox-icon-scale: 1;
11
10
  --components-filterPill-checkbox-icon-timingFonction: cubic-bezier(0.5, 1, 0.5, 1.5);
12
-
13
11
  --components-filterPill-label-fontWeight: var(--components-filterPill-label-fontWeightChecked);
14
12
  }
15
13
 
@@ -25,6 +23,7 @@
25
23
 
26
24
  @mixin active {
27
25
  --components-filterPill-backgroundColor: var(--palettes-neutral-0);
26
+
28
27
  box-shadow:
29
28
  0 0 0 1px var(--palettes-product-500),
30
29
  var(--pr-t-elevation-shadow-raised);
@@ -104,7 +103,7 @@
104
103
  box-shadow: var(--components-filterPill-shadow);
105
104
 
106
105
  // TODO
107
- //--components-filterPill-checkbox-borderColor: var(--palettes-neutral-600);
106
+ // --components-filterPill-checkbox-borderColor: var(--palettes-neutral-600);
108
107
  }
109
108
 
110
109
  @mixin hidden {
@@ -19,6 +19,7 @@
19
19
  }
20
20
 
21
21
  .footer-actions {
22
+ flex-shrink: 0;
22
23
  margin-inline-start: var(--components-footer-actions-margin);
23
24
  display: flex;
24
25
  gap: var(--pr-t-spacings-200);
@@ -95,6 +95,7 @@
95
95
 
96
96
  // deprecated
97
97
 
98
+ // stylelint-disable no-duplicate-selectors -- deprecated
98
99
  .form {
99
100
  @include vars;
100
101
  }
@@ -165,3 +166,4 @@
165
166
  }
166
167
  }
167
168
  }
169
+ // stylelint-enable
@@ -273,7 +273,6 @@
273
273
  }
274
274
 
275
275
  @mixin framed {
276
- margin-block-end: 0;
277
276
  background-color: var(--palettes-neutral-0);
278
277
  padding: 0;
279
278
  box-shadow: form.fakeBorderOverlay(var(--palettes-neutral-200));
@@ -24,13 +24,10 @@
24
24
  .grid-column {
25
25
  align-self: var(--grid-align, var(--grid-column-align));
26
26
  justify-self: var(--grid-justify, var(--grid-column-justify));
27
-
28
27
  grid-column-start: var(--grid-column, var(--grid-column-start));
29
28
  grid-row-start: var(--grid-row, var(--grid-row-start));
30
-
31
29
  grid-column-end: span var(--grid-colspan, var(--grid-column-end));
32
30
  grid-row-end: span var(--grid-rowspan, var(--grid-row-end));
33
-
34
31
  min-inline-size: 0;
35
32
 
36
33
  @each $breakpoint, $value in config.$breakpoints {
@@ -51,6 +48,7 @@
51
48
  grid-row-start: var(--grid-rowAtMediaMin#{$breakpoint});
52
49
  }
53
50
 
51
+ // stylelint-disable custom-property-pattern -- TODO Make PR to Stylelint to take SCSS function within CSS variable into consideration.
54
52
  // workaround for Angular replacing CamelCase by kebab-case
55
53
  &[style*='grid-colspan-at-media-min-#{string.to-lower-case($breakpoint)}'] {
56
54
  grid-column-end: span var(--grid-colspan-at-media-min-#{string.to-lower-case($breakpoint)});
@@ -108,6 +106,7 @@
108
106
  &[style*='grid-row-at-container-min-#{string.to-lower-case($breakpoint)}'] {
109
107
  grid-row-start: var(--grid-row-at-container-min-#{string.to-lower-case($breakpoint)});
110
108
  }
109
+ // stylelint-enable
111
110
  }
112
111
  }
113
112
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  @mixin auto {
6
6
  --grid-template-columns: none;
7
+
7
8
  grid-auto-columns: 1fr;
8
9
 
9
10
  .grid-column {
@@ -12,9 +12,9 @@
12
12
  position: relative;
13
13
 
14
14
  @at-root ($atRoot) {
15
-
16
15
  .highlightData-content {
17
16
  @include reset.list($list: 'dl');
17
+
18
18
  display: var(--components-highlightData-display);
19
19
  grid-template-columns: 1fr auto;
20
20
  grid-template-areas:
@@ -34,8 +34,10 @@
34
34
 
35
35
  .highlightData-content-value {
36
36
  grid-area: value;
37
+
37
38
  @include title.component;
38
39
  @include title.h1;
40
+
39
41
  order: var(--components-highlightData-value-order);
40
42
  }
41
43
 
@@ -49,14 +51,14 @@
49
51
  .highlightData-content-action {
50
52
  grid-area: action;
51
53
  padding-block-start: var(--components-highlightData-action-padding);
52
-
54
+
53
55
  &:empty {
54
56
  display: none;
55
57
  }
56
58
 
57
59
  .link {
58
60
  --commons-text-link-color: var(--palettes-700, var(--palettes-product-700));
59
- --commons-text-link-hover: var(--palettes-600, var(--palettes-product-600));
61
+ --commons-text-link-hover: var(--palettes-800, var(--palettes-product-800));
60
62
  }
61
63
 
62
64
  .button {
@@ -34,6 +34,7 @@
34
34
  --components-highlightData-display: flex;
35
35
  --components-highlightData-alignItem: start;
36
36
  --components-highlightData-action-padding: var(--pr-t-spacings-150);
37
+
37
38
  padding-inline-end: calc(var(--components-highlightData-illustrations-width) + var(--components-highlightData-padding-inline));
38
39
  }
39
40
 
@@ -3,7 +3,6 @@
3
3
  @use '@lucca-front/scss/src/commons/utils/namespace';
4
4
 
5
5
  @mixin component($atRoot: namespace.$defaultAtRoot) {
6
- position: relative;
7
6
  column-gap: var(--pr-t-spacings-400);
8
7
  align-items: center;
9
8
  display: flex;
@@ -77,7 +76,7 @@
77
76
  z-index: 1;
78
77
  scroll-margin-inline: var(--pr-t-spacings-200);
79
78
 
80
- &:before {
79
+ &::before {
81
80
  content: '';
82
81
  position: absolute;
83
82
  inset-block: calc(var(--components-horizontalNavigation-listItemActionPaddingBlock) - var(--pr-t-spacings-25));
@@ -136,7 +135,6 @@
136
135
  .menu-link-placeholder {
137
136
  &::after {
138
137
  content: attr(data-content-after);
139
-
140
138
  display: block;
141
139
  block-size: 0;
142
140
  overflow: hidden;
@@ -47,6 +47,7 @@
47
47
  &.active {
48
48
  @include active;
49
49
  }
50
+
50
51
  // .disabled is deprecated
51
52
  // [disabled] is deprecated
52
53
  &.is-disabled,
@@ -61,7 +61,7 @@
61
61
  --components-horizontalNavigation-listItemActionPadding: var(--pr-t-spacings-50) var(--pr-t-spacings-200);
62
62
  --components-horizontalNavigation-listItemActionAlign: left;
63
63
 
64
- &:before {
64
+ &::before {
65
65
  inset-block: calc(
66
66
  var(--components-horizontalNavigation-listItemActionPaddingBlock) - var(--pr-t-spacings-150) - var(--pr-t-spacings-25)
67
67
  );
@@ -95,7 +95,7 @@
95
95
  .menu-list-item-action {
96
96
  --components-horizontalNavigation-listItemActionPadding: var(--pr-t-spacings-50) var(--pr-t-spacings-150);
97
97
 
98
- &:before {
98
+ &::before {
99
99
  inset-block: calc(
100
100
  var(--components-horizontalNavigation-listItemActionPaddingBlock) - var(--pr-t-spacings-150) - var(--pr-t-spacings-25)
101
101
  );
@@ -98,6 +98,9 @@
98
98
  @forward 'richText';
99
99
  @forward 'readMore';
100
100
  @forward 'highlightData';
101
+ @forward 'fileUpload';
102
+ @forward 'fileEntry';
103
+ @forward 'fileToolbar';
101
104
 
102
105
  // Deprecated CSS components
103
106
  // @forward 'tableFixedDeprecated'; // 33 Ko
@@ -27,7 +27,7 @@
27
27
  display: table-row-group;
28
28
  }
29
29
 
30
- //There might be more than one footer
30
+ // There might be more than one footer
31
31
  .indexTable-foot {
32
32
  display: table-row-group;
33
33
 
@@ -42,10 +42,6 @@
42
42
  display: table-row;
43
43
  }
44
44
 
45
- .indexTable-body-row {
46
- border-radius: var(--commons-borderRadius-L);
47
- }
48
-
49
45
  .indexTable-head-row-transparentCell,
50
46
  .indexTable-body-row-transparentCell,
51
47
  .indexTable-head-row-cell,
@@ -78,6 +74,8 @@
78
74
  }
79
75
 
80
76
  .indexTable-body-row {
77
+ border-radius: var(--commons-borderRadius-L);
78
+
81
79
  &:has(.indexTable-body-row-cell-link) {
82
80
  .indexTable-body-row-cell {
83
81
  &:not(:has(button, a, input, textarea, select, details, [tabindex='0']), .mod-allowTextSelection) {
@@ -98,6 +96,7 @@
98
96
  }
99
97
 
100
98
  .indexTable-foot-row-cell {
99
+ text-align: end;
101
100
  padding-block: var(--pr-t-spacings-50);
102
101
  }
103
102
 
@@ -149,6 +148,7 @@
149
148
  border-radius: var(--components-indexTable-cell-border-radius-left) var(--components-indexTable-cell-border-radius-right)
150
149
  var(--components-indexTable-cell-border-radius-right) var(--components-indexTable-cell-border-radius-left);
151
150
  background-color: var(--components-indexTable-cell-background-color, var(--components-indexTable-cell-background-color-default));
151
+
152
152
  // shadow-mask : since the card apparence is put on every cell (du to a Safari bug), we need to hide the left part of the box shadow for everycell exept the first one.
153
153
  // We do this with a rectangular white box-shadow above it.
154
154
  box-shadow: var(--components-indexTable-shadow-mask, 0 0 0 0),
@@ -199,6 +199,7 @@
199
199
  content: '';
200
200
  position: absolute;
201
201
  inset: 0 -9999px;
202
+ z-index: -1;
202
203
  }
203
204
 
204
205
  &,
@@ -246,10 +247,6 @@
246
247
  font-weight: 600;
247
248
  }
248
249
 
249
- .indexTable-foot-row-cell {
250
- text-align: end;
251
- }
252
-
253
250
  // A wrapper is needed for pagination
254
251
  .indexTableWrapper {
255
252
  @include vars;
@@ -7,6 +7,7 @@
7
7
 
8
8
  &.mod-selectable {
9
9
  @include selectable;
10
+
10
11
  // Selectable states
11
12
  @include selectableSelectedRow;
12
13
  @include selectableHoveredRow;
@@ -29,7 +30,7 @@
29
30
  @include massSelection;
30
31
  }
31
32
 
32
- .indexTable-body-row-cell.mod-actions {
33
+ :where(.indexTable-body-row-cell.mod-actions) {
33
34
  @include actions;
34
35
  }
35
36
 
@@ -41,11 +41,12 @@
41
41
  .indexTable-body-row-cell {
42
42
  // because we can't set an individual spacing for each row, transparent border are used for this
43
43
  border-block-end: var(--components-indexTable-row-stack-border-bottom) solid transparent;
44
+
44
45
  // stack apparence
45
- background-image:
46
- var(--components-indexTable-row-stack2-background-image, none), var(--components-indexTable-row-stack3-background-image, none);
47
- background-position:
48
- var(--components-indexTable-row-stack2-background-position, 0 0), var(--components-indexTable-row-stack3-background-position, 0 0);
46
+ background-image: var(--components-indexTable-row-stack2-background-image, none),
47
+ var(--components-indexTable-row-stack3-background-image, none);
48
+ background-position: var(--components-indexTable-row-stack2-background-position, 0 0),
49
+ var(--components-indexTable-row-stack3-background-position, 0 0);
49
50
  background-repeat: no-repeat, no-repeat;
50
51
  transition-property: background-image, background-position;
51
52
  transition-duration: var(--commons-animations-durations-fast);
@@ -80,9 +81,10 @@
80
81
  z-index: 3;
81
82
  }
82
83
 
83
- //hide box-shadow from underneath rows that slighly appear on edges of the sticky header when scrolling
84
+ // hide box-shadow from underneath rows that slighly appear on edges of the sticky header when scrolling
84
85
  .indexTable-head-row-cell {
85
86
  position: relative;
87
+
86
88
  &::before,
87
89
  &::after {
88
90
  content: '';
@@ -90,15 +92,19 @@
90
92
  inset: calc(var(--components-indexTable-row-spacing) * -1) calc(var(--components-indexTable-padding) * -1) 0;
91
93
  z-index: -1;
92
94
  }
95
+
93
96
  &::before {
94
97
  background-color: var(--commons-background-base);
95
98
  }
99
+
96
100
  &::after {
97
101
  background-color: var(--components-indexTable-background-color);
98
102
  }
103
+
99
104
  &:first-child::after {
100
105
  border-start-start-radius: var(--components-indexTable-border-radius);
101
106
  }
107
+
102
108
  &:last-child::after {
103
109
  border-start-end-radius: var(--components-indexTable-border-radius);
104
110
  }
@@ -124,6 +130,7 @@
124
130
  .indexTable-foot-row {
125
131
  position: relative;
126
132
  display: grid;
133
+
127
134
  // Grid layout by default is a basic one column template.
128
135
  // The user can override this and build a specific layout by using --components-indexTable-row-responsive-grid-template-columns, --components-indexTable-row-responsive-grid-template-rows and --components-indexTable-row-responsive-grid-template-areas
129
136
  grid-template-columns: var(--components-indexTable-row-responsive-grid-template-columns, 1fr);
@@ -134,11 +141,13 @@
134
141
  padding-block: var(--components-indexTable-row-spacing-responsive);
135
142
  padding-inline: 0;
136
143
  margin-block-end: var(--components-indexTable-row-spacing-responsive);
144
+
137
145
  // "Title" lines that do not contain "card" cells are smaller
138
146
  &:not(:has(.indexTable-body-row-cell)) {
139
147
  padding: 0;
140
148
  margin-block-end: 0;
141
149
  }
150
+
142
151
  &:last-child {
143
152
  margin-block-end: 0;
144
153
  }
@@ -160,12 +169,14 @@
160
169
  --components-indexTable-cell-border-radius-left: var(--components-indexTable-cell-border-radius);
161
170
  --components-indexTable-cell-border-radius-right: var(--components-indexTable-cell-border-radius);
162
171
  }
172
+
163
173
  &::after {
164
174
  --components-indexTable-outline-border-width-left: var(--components-indexTable-outline-border-width);
165
175
  --components-indexTable-outline-border-width-right: var(--components-indexTable-outline-border-width);
166
176
  --components-indexTable-outline-border-radius-left: var(--components-indexTable-outline-border-radius);
167
177
  --components-indexTable-outline-border-radius-right: var(--components-indexTable-outline-border-radius);
168
178
  }
179
+
169
180
  ~ .indexTable-body-row-cell {
170
181
  &::before,
171
182
  &::after {
@@ -198,15 +209,19 @@
198
209
  1fr
199
210
  );
200
211
  }
212
+
201
213
  .indexTable-body-row-transparentCell {
202
214
  inline-size: auto;
215
+
203
216
  // we add a padding-inline-start to keep a correct indent between lvl 1 and lvl 2 titles in nested tables. * .75 is just for cosmetic
204
217
  &:first-child[colspan='2'] + .indexTable-body-row-transparentCell {
205
218
  padding-inline-start: calc(var(--components-indexTable-row-cell-transparent-width) * 0.75);
206
219
  }
207
220
  }
221
+
208
222
  .indexTable-body-row-cell {
209
223
  --components-indexTable-cell-inset-x-left: var(--components-indexTable-row-cell-transparent-width);
224
+
210
225
  grid-column-start: 2;
211
226
  }
212
227
  }
@@ -224,33 +239,39 @@
224
239
  border-block-end-width: var(--components-indexTable-row-stack-border-bottom);
225
240
  border-style: solid;
226
241
  border-color: transparent;
242
+
227
243
  &::before,
228
244
  &::after {
229
245
  content: '';
230
246
  position: absolute;
231
247
  inset-block-start: 0;
232
248
  inset-block-end: calc((var(--components-indexTable-row-spacing-responsive) + var(--components-indexTable-stack3-row-spacing)) * -1);
233
- background-image:
234
- var(--components-indexTable-row-stack2-background-image, none), var(--components-indexTable-row-stack3-background-image, none);
235
- background-position:
236
- var(--components-indexTable-row-stack2-background-position, 0 0), var(--components-indexTable-row-stack3-background-position, 0 0);
249
+ background-image: var(--components-indexTable-row-stack2-background-image, none),
250
+ var(--components-indexTable-row-stack3-background-image, none);
251
+ background-position: var(--components-indexTable-row-stack2-background-position, 0 0),
252
+ var(--components-indexTable-row-stack3-background-position, 0 0);
237
253
  background-repeat: no-repeat, no-repeat;
238
254
  transition-property: background-image, background-position;
239
255
  transition-duration: var(--commons-animations-durations-fast);
240
256
  }
257
+
241
258
  &::before {
242
259
  inset-inline-start: var(--components-indexTable-cell-inset-x-left, 0);
243
260
  inset-inline-end: 50%;
261
+
244
262
  --components-indexTable-row-stack2-background-position: left -2px bottom 6px;
245
263
  --components-indexTable-row-stack3-background-position: left 1px bottom 2px;
246
264
  }
265
+
247
266
  &::after {
248
267
  inset-inline-start: 50%;
249
268
  inset-inline-end: 0;
269
+
250
270
  --components-indexTable-row-stack2-background-position: right -2px bottom 6px;
251
271
  --components-indexTable-row-stack3-background-position: right 1px bottom 2px;
252
272
  }
253
273
  }
274
+
254
275
  .indexTable-body-row-cell {
255
276
  border-block-end: 0;
256
277
  background-image: none;
@@ -263,7 +284,7 @@
263
284
  padding: var(--pr-t-spacings-50);
264
285
  white-space: nowrap;
265
286
 
266
- .button {
287
+ :where(.button) {
267
288
  @include button.S;
268
289
  @include button.text;
269
290
  @include button.onlyIconS;
@@ -277,7 +298,7 @@
277
298
  transition: opacity ease var(--commons-animations-durations-fast);
278
299
  }
279
300
 
280
- //If there are 4 actions or more, the buttons are hidden (not on touch device) and replaced should be replaced with a dropdown
301
+ // If there are 4 actions or more, the buttons are hidden (not on touch device) and replaced should be replaced with a dropdown
281
302
  &:has(.indexTable-body-row-cell-subActionDropdownTrigger) {
282
303
  .indexTable-body-row-cell-subAction {
283
304
  display: none;
@@ -294,21 +315,24 @@
294
315
  }
295
316
 
296
317
  @mixin layoutFixed {
297
- table-layout: fixed;
298
-
299
318
  [class*='row-cell'] {
300
319
  --cell-width: calc(var(--components-indexTable-cell-fixed-width, var(--components-index-table-cell-fixed-width)) * 1rem);
301
320
  }
302
321
 
303
- &.mod-layoutFixed [class*='row-cell'] {
304
- @include cellFixedWidth;
322
+ &.mod-layoutFixed {
323
+ table-layout: fixed;
324
+
325
+ [class*='row-cell'] {
326
+ @include cellFixedWidth;
327
+ }
305
328
  }
306
329
 
307
- //Layout fixed at breakpoint
330
+ // Layout fixed at breakpoint
308
331
  @each $breakpoint, $value in config.$breakpoints {
309
332
  @include media.min($breakpoint) {
310
333
  &.mod-layoutFixedAtMediaMin#{$breakpoint} {
311
334
  table-layout: fixed;
335
+
312
336
  [class*='row-cell'] {
313
337
  @include cellFixedWidth;
314
338
  }
@@ -327,6 +351,7 @@
327
351
  .indexTable-head-row-cell {
328
352
  padding: 0;
329
353
  }
354
+
330
355
  .indexTable-head-row-cell-massSelection {
331
356
  display: flex;
332
357
  align-items: center;
@@ -7,9 +7,11 @@
7
7
  display: none;
8
8
  }
9
9
  }
10
+
10
11
  .indexTable-body-row-cellTitle-button[aria-expanded='false'] .lucca-icon {
11
12
  transform: rotate(180deg);
12
13
  }
14
+
13
15
  // subTotal in header are not displayed when the row is open
14
16
  .indexTable-body-row:has(.indexTable-body-row-cellTitle-button[aria-expanded='true']) {
15
17
  .indexTable-body-row-subTotal {
@@ -28,6 +30,7 @@
28
30
  ) {
29
31
  --components-indexTable-cell-subAction-opacity: 1;
30
32
  }
33
+
31
34
  &:has(.indexTable-body-row-cell-action:focus-visible, .indexTable-body-row-cell-link:focus-visible) {
32
35
  --components-indexTable-outline-opacity: 1;
33
36
  }
@@ -62,8 +65,10 @@
62
65
  @mixin selectedCells {
63
66
  // !important here for overriding a potential overrided non blank row background color
64
67
  --components-indexTable-cell-background-color: var(--components-indexTable-cell-background-color-selected) !important;
68
+
65
69
  // !important here if for overriding a potential selectableHoveredRow reset
66
70
  --components-indexTable-cell-shadow: var(--components-indexTable-cell-shadow-selected) !important;
71
+
67
72
  // if selected stackable row : we also change the stacks background color
68
73
  --components-indexTable-stack-svg: var(--components-indexTable-stack-svg-selected);
69
74
  }
@@ -3,6 +3,7 @@
3
3
  --components-indexTable-border-radius: 12px;
4
4
  --components-indexTable-background-color: var(--palettes-neutral-50);
5
5
  --components-indexTable-row-spacing: 4px;
6
+
6
7
  // on responsive, row spacing is increased
7
8
  --components-indexTable-row-spacing-responsive: 8px;
8
9
 
@@ -10,6 +11,7 @@
10
11
  --components-indexTable-cell-paddingBlock: var(--pr-t-spacings-100);
11
12
  --components-indexTable-cell-border-radius: var(--commons-borderRadius-L);
12
13
  --components-indexTable-cell-background-color-default: var(--palettes-neutral-0);
14
+
13
15
  // shadows
14
16
  --components-indexTable-cell-shadow-default: var(--pr-t-elevation-shadow-raised);
15
17
  --components-indexTable-cell-background-color-selected: var(--palettes-product-50);
@@ -25,6 +27,7 @@
25
27
 
26
28
  // rows stacks apparence is an url encoded svg
27
29
  --components-indexTable-stack-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2008' height='48' fill='none'%3E%3Cg filter='url(%23a)'%3E%3Crect width='2000' height='40' x='4' y='2' fill='%23fff' rx='8'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='2008' height='48' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3E%3CfeOffset dy='2'/%3E%3CfeGaussianBlur stdDeviation='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.67451 0 0 0 0 0.733333 0 0 0 0 0.843137 0 0 0 0.2 0'/%3E%3CfeBlend in2='BackgroundImageFix' result='effect1_dropShadow_1214_48875'/%3E%3CfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3E%3CfeOffset dy='1'/%3E%3CfeGaussianBlur stdDeviation='1'/%3E%3CfeColorMatrix values='0 0 0 0 0.67451 0 0 0 0 0.733333 0 0 0 0 0.843137 0 0 0 0.4 0'/%3E%3CfeBlend in2='effect1_dropShadow_1214_48875' mode='multiply' result='effect2_dropShadow_1214_48875'/%3E%3CfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3E%3CfeMorphology in='SourceAlpha' operator='dilate' radius='1' result='effect3_dropShadow_1214_48875'/%3E%3CfeOffset/%3E%3CfeColorMatrix values='0 0 0 0 0.67451 0 0 0 0 0.733333 0 0 0 0 0.843137 0 0 0 0.08 0'/%3E%3CfeBlend in2='effect2_dropShadow_1214_48875' result='effect3_dropShadow_1214_48875'/%3E%3CfeBlend in='SourceGraphic' in2='effect3_dropShadow_1214_48875' result='shape'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E%0A");
30
+
28
31
  // selected rows stacks apparence. Inline svg can't use css vars for coloring or fill :(
29
32
  --components-indexTable-stack-svg-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2008' height='48' fill='none' viewBox='0 0 2008 48'%3E%3Crect width='2000' height='40' x='4' y='2' fill='%23FFF1EB' stroke='%23FF9361' rx='8'/%3E%3C/svg%3E%0A");
30
33
 
@@ -1,6 +1,8 @@
1
1
  @use '@lucca-front/icons/src/icon/exports' as icon;
2
2
  @use '@lucca-front/scss/src/commons/utils/namespace';
3
3
 
4
+ @use '@lucca-front/scss/src/commons/utils/a11y';
5
+
4
6
  @mixin component($atRoot: namespace.$defaultAtRoot) {
5
7
  display: flex;
6
8
  gap: var(--components-inlineMessage-gap);
@@ -8,12 +10,23 @@
8
10
  font-size: var(--components-inlineMessage-fontSize);
9
11
  line-height: var(--components-inlineMessage-lineHeight);
10
12
  color: var(--components-inlineMessage-color);
13
+ border-radius: var(--commons-borderRadius-M);
14
+
15
+ &:has(.inlineMessage-content:focus-visible) {
16
+ @include a11y.focusVisible;
17
+ }
11
18
 
12
19
  @at-root ($atRoot) {
13
20
  .inlineMessage-content {
14
- display: flex;
15
- gap: var(--components-inlineMessage-gap);
16
- margin: 0;
21
+ &:not(p) {
22
+ display: flex;
23
+ gap: var(--components-inlineMessage-gap);
24
+ margin: 0;
25
+ }
26
+
27
+ &:is(p) {
28
+ outline: none;
29
+ }
17
30
  }
18
31
 
19
32
  // .lucca-icon:first-child is deprecated
@@ -1,6 +1,13 @@
1
1
  @use '@lucca-front/scss/src/commons/utils/namespace';
2
2
 
3
3
  @mixin icon($atRoot: namespace.$defaultAtRoot) {
4
+ .lucca-icon {
5
+ text-decoration: none;
6
+ font-size: 1em;
7
+ line-height: 1lh;
8
+ vertical-align: bottom;
9
+ }
10
+
4
11
  &:has(.link-text) {
5
12
  text-decoration: none;
6
13
  }
@@ -11,13 +18,6 @@
11
18
  }
12
19
  }
13
20
 
14
- .lucca-icon {
15
- text-decoration: none;
16
- font-size: 1em;
17
- line-height: 1lh;
18
- vertical-align: bottom;
19
- }
20
-
21
21
  @at-root ($atRoot) {
22
22
  .link-text {
23
23
  text-decoration: underline;
@@ -56,5 +56,5 @@
56
56
 
57
57
  @mixin brand {
58
58
  --commons-text-link-color: var(--palettes-brand-700);
59
- --commons-text-link-hover: var(--palettes-brand-600);
59
+ --commons-text-link-hover: var(--palettes-brand-800);
60
60
  }
@@ -45,6 +45,7 @@
45
45
  .button {
46
46
  &:not(:focus) {
47
47
  @include a11y.mask;
48
+
48
49
  opacity: 0;
49
50
  }
50
51
  }
@@ -11,7 +11,7 @@
11
11
  text-align: var(--components-loading-textAlign);
12
12
  vertical-align: top;
13
13
 
14
- @include loading.spinner();
14
+ @include loading.spinner;
15
15
 
16
16
  &:not(:empty) {
17
17
  --components-loading-padding: 0 0 0 var(--pr-t-spacings-400);