@lucca-front/scss 22.0.0-rc.2 → 22.0.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 (123) hide show
  1. package/dist/lucca-front.min.css +1 -1
  2. package/package.json +3 -3
  3. package/src/commons/config.scss +26 -27
  4. package/src/commons/utils/a11y.scss +2 -2
  5. package/src/commons/utils/color.scss +15 -6
  6. package/src/commons/utils/highlight-prisme.scss +6 -2
  7. package/src/commons/utils/index.scss +4 -0
  8. package/src/commons/vars.scss +20 -5
  9. package/src/components/activityFeed/component.scss +33 -6
  10. package/src/components/activityFeed/index.scss +4 -4
  11. package/src/components/activityFeed/states.scss +2 -2
  12. package/src/components/activityFeed/vars.scss +2 -2
  13. package/src/components/appLayout/component.scss +6 -3
  14. package/src/components/avatar/component.scss +2 -0
  15. package/src/components/avatar/index.scss +31 -3
  16. package/src/components/avatar/mods.scss +28 -0
  17. package/src/components/box/index.scss +1 -3
  18. package/src/components/box/mods.scss +1 -3
  19. package/src/components/bubbleIcon/index.scss +4 -0
  20. package/src/components/bubbleIcon/mods.scss +9 -1
  21. package/src/components/button/mods.scss +8 -6
  22. package/src/components/button/states.scss +5 -1
  23. package/src/components/calendar/component.scss +33 -20
  24. package/src/components/calendar/index.scss +48 -0
  25. package/src/components/calendar/mods.scss +6 -0
  26. package/src/components/calendar/states.scss +77 -0
  27. package/src/components/calendar/vars.scss +4 -1
  28. package/src/components/callout/mods.scss +1 -1
  29. package/src/components/card/index.scss +1 -3
  30. package/src/components/checkbox/states.scss +1 -1
  31. package/src/components/checkboxField/states.scss +1 -1
  32. package/src/components/code/component.scss +1 -0
  33. package/src/components/color/component.scss +3 -1
  34. package/src/components/color/index.scss +1 -2
  35. package/src/components/comment/component.scss +1 -1
  36. package/src/components/dataTable/component.scss +6 -1
  37. package/src/components/dataTable/index.scss +6 -0
  38. package/src/components/dataTable/mods.scss +4 -0
  39. package/src/components/dateField/index.scss +8 -0
  40. package/src/components/dateField/mods.scss +8 -0
  41. package/src/components/dateField/vars.scss +2 -0
  42. package/src/components/dialog/component.scss +7 -4
  43. package/src/components/dialog/index.scss +8 -2
  44. package/src/components/dialog/mods.scss +11 -3
  45. package/src/components/dialog/vars.scss +3 -0
  46. package/src/components/fieldset/index.scss +4 -0
  47. package/src/components/fieldset/mods.scss +10 -0
  48. package/src/components/fieldset/vars.scss +1 -1
  49. package/src/components/fileEntry/component.scss +2 -2
  50. package/src/components/fileUpload/component.scss +1 -1
  51. package/src/components/filterPill/component.scss +29 -5
  52. package/src/components/filterPill/index.scss +14 -11
  53. package/src/components/filterPill/states.scss +7 -8
  54. package/src/components/filterPill/vars.scss +2 -1
  55. package/src/components/footer/component.scss +1 -0
  56. package/src/components/footer/mods.scss +1 -0
  57. package/src/components/footer/vars.scss +1 -0
  58. package/src/components/form/component.scss +6 -0
  59. package/src/components/form/mods.scss +1 -1
  60. package/src/components/form/vars.scss +1 -1
  61. package/src/components/grid/mods.scss +1 -1
  62. package/src/components/highlightText/component.scss +30 -0
  63. package/src/components/highlightText/exports.scss +4 -0
  64. package/src/components/highlightText/index.scss +8 -0
  65. package/src/components/highlightText/mods.scss +0 -0
  66. package/src/components/highlightText/states.scss +0 -0
  67. package/src/components/highlightText/vars.scss +9 -0
  68. package/src/components/horizontalNavigation/component.scss +23 -1
  69. package/src/components/horizontalNavigation/index.scss +27 -1
  70. package/src/components/horizontalNavigation/mods.scss +14 -0
  71. package/src/components/horizontalNavigation/vars.scss +7 -0
  72. package/src/components/impersonation/component.scss +58 -0
  73. package/src/components/impersonation/exports.scss +4 -0
  74. package/src/components/impersonation/index.scss +22 -0
  75. package/src/components/impersonation/mods.scss +0 -0
  76. package/src/components/impersonation/states.scss +18 -0
  77. package/src/components/impersonation/vars.scss +10 -0
  78. package/src/components/index.scss +2 -0
  79. package/src/components/indexTable/component.scss +4 -0
  80. package/src/components/link/component.scss +3 -0
  81. package/src/components/link/index.scss +9 -0
  82. package/src/components/link/mods.scss +4 -0
  83. package/src/components/link/vars.scss +1 -0
  84. package/src/components/listing/component.scss +2 -2
  85. package/src/components/mobilePush/component.scss +1 -1
  86. package/src/components/multiSelect/component.scss +11 -0
  87. package/src/components/multiSelect/index.scss +8 -2
  88. package/src/components/multiSelect/mods.scss +2 -0
  89. package/src/components/multiSelect/states.scss +10 -2
  90. package/src/components/multiSelect/vars.scss +1 -0
  91. package/src/components/numericBadge/component.scss +0 -2
  92. package/src/components/numericBadge/mods.scss +0 -12
  93. package/src/components/numericBadge/vars.scss +0 -4
  94. package/src/components/popover/component.scss +10 -0
  95. package/src/components/popover/vars.scss +2 -0
  96. package/src/components/presentation/component.scss +1 -0
  97. package/src/components/radio/states.scss +3 -3
  98. package/src/components/radioField/states.scss +3 -3
  99. package/src/components/richText/vars.scss +1 -1
  100. package/src/components/scrollBox/component.scss +2 -0
  101. package/src/components/section/index.scss +1 -3
  102. package/src/components/simpleSelect/index.scss +1 -0
  103. package/src/components/skeleton/component.scss +30 -0
  104. package/src/components/skeleton/mods.scss +2 -2
  105. package/src/components/skeleton/states.scss +3 -3
  106. package/src/components/skeleton/vars.scss +2 -2
  107. package/src/components/skipLinks/component.scss +9 -0
  108. package/src/components/statusBadge/component.scss +1 -1
  109. package/src/components/tableStickedDeprecated/mods.scss +3 -3
  110. package/src/components/tag/component.scss +6 -0
  111. package/src/components/tag/index.scss +5 -0
  112. package/src/components/tag/mods.scss +9 -1
  113. package/src/components/tag/vars.scss +1 -0
  114. package/src/components/textField/component.scss +16 -0
  115. package/src/components/textField/index.scss +12 -0
  116. package/src/components/textField/mods.scss +23 -0
  117. package/src/components/textField/states.scss +6 -0
  118. package/src/components/textFlow/component.scss +2 -0
  119. package/src/components/timepicker/component.scss +32 -8
  120. package/src/components/timepicker/mods.scss +24 -3
  121. package/src/components/timepicker/vars.scss +6 -3
  122. package/src/components/toast/component.scss +1 -0
  123. package/src/components/userPopover/component.scss +1 -1
@@ -5,4 +5,5 @@
5
5
  --components-link-color-hover: var(--commons-text-link-hover);
6
6
  --components-link-cursor: pointer;
7
7
  --components-link-icon-marginInlineStart: 0;
8
+ --components-link-icon-opacity: 1;
8
9
  }
@@ -30,7 +30,7 @@
30
30
  &::before {
31
31
  content: var(--components-listing-item-before-content);
32
32
  border-inline-start: var(--commons-divider-border);
33
- height: 0.75lh;
33
+ block-size: 0.75lh;
34
34
  align-self: center;
35
35
  }
36
36
  }
@@ -59,7 +59,7 @@
59
59
  .listing-item-icon {
60
60
  inline-size: var(--pr-t-spacings-250);
61
61
  aspect-ratio: 1;
62
- margin-top: var(--pr-t-spacings-25);
62
+ margin-block-start: var(--pr-t-spacings-25);
63
63
  background-color: var(--components-listing-item-icon-backgroundColor);
64
64
  color: var(--palettes-700, var(--palettes-neutral-700));
65
65
  border-radius: var(--pr-t-border-radius-full);
@@ -58,7 +58,7 @@
58
58
 
59
59
  .mobilePush-content-downloadApps-link-badge {
60
60
  display: block;
61
- height: 1.75rem;
61
+ block-size: 1.75rem;
62
62
  }
63
63
  }
64
64
  }
@@ -32,6 +32,13 @@
32
32
  flex: 1;
33
33
  }
34
34
 
35
+ .multipleSelect-displayer-suffix {
36
+ display: var(--components-multiSelect-displayer-suffix-display);
37
+ gap: var(--pr-t-spacings-50);
38
+ flex: 1;
39
+ order: 1;
40
+ }
41
+
35
42
  .multipleSelect-displayer-chip.chip {
36
43
  min-inline-size: 0;
37
44
 
@@ -92,5 +99,9 @@
92
99
  .multipleSelect-pill-displayer-label {
93
100
  font-weight: var(--pr-t-font-fontWeight-semibold);
94
101
  }
102
+
103
+ .multiSelect-field-icon {
104
+ order: 1;
105
+ }
95
106
  }
96
107
  }
@@ -23,10 +23,16 @@
23
23
  @include filterPillDisplayerFocused;
24
24
  }
25
25
  }
26
+
27
+ &.is-selected {
28
+ @include filterPillSelected;
29
+ }
26
30
  }
27
31
 
28
- &.is-selected {
29
- @include selected;
32
+ &:not(.mod-filterPill) {
33
+ &.is-selected {
34
+ @include selected;
35
+ }
30
36
  }
31
37
 
32
38
  &:has(.multipleSelect-displayer-search:focus-visible) {
@@ -37,6 +37,8 @@
37
37
  }
38
38
 
39
39
  @mixin filterPill {
40
+ --components-multiSelect-displayer-suffix-display: flex;
41
+
40
42
  flex-direction: column;
41
43
  align-items: stretch;
42
44
  box-shadow: none;
@@ -42,8 +42,16 @@
42
42
 
43
43
  @mixin selected {
44
44
  .multipleSelect-displayer-search {
45
- &[readonly],
46
- &:not(:focus) {
45
+ &:not(:focus),
46
+ &[readonly] {
47
+ @include a11y.mask;
48
+ }
49
+ }
50
+ }
51
+
52
+ @mixin filterPillSelected {
53
+ .multipleSelect-displayer-search {
54
+ &[readonly] {
47
55
  @include a11y.mask;
48
56
  }
49
57
  }
@@ -6,4 +6,5 @@
6
6
  --components-multiSelect-border-color: var(--pr-t-color-input-border);
7
7
  --components-multiSelect-placeholder: var(--pr-t-color-input-text-placeholder);
8
8
  --components-multiSelect-arrow-color: var(--pr-t-color-input-icon);
9
+ --components-multiSelect-displayer-suffix-display: contents;
9
10
  }
@@ -8,8 +8,6 @@
8
8
  min-inline-size: var(--components-numericBadge-size);
9
9
  padding: var(--pr-t-spacings-50);
10
10
  font: var(--components-numericBadge-font);
11
- font-size: var(--components-numericBadge-fontSize); // Deprecated
12
- line-height: var(--components-numericBadge-lineHeight); // Deprecated
13
11
  font-weight: var(--pr-t-font-fontWeight-semibold);
14
12
  background-color: var(--components-numericBadge-background);
15
13
  color: var(--components-numericBadge-color);
@@ -4,30 +4,18 @@
4
4
  --components-numericBadge-size: 1.5rem;
5
5
  --components-numericBadge-borderRadius: var(--pr-t-border-radius-default);
6
6
  --components-numericBadge-font: var(--pr-t-font-body-S);
7
-
8
- // Deprecated
9
- --components-numericBadge-fontSize: var(--pr-t-font-body-S-fontSize);
10
- --components-numericBadge-lineHeight: var(--pr-t-font-body-S-lineHeight);
11
7
  }
12
8
 
13
9
  @mixin S {
14
10
  --components-numericBadge-size: 1.25rem;
15
11
  --components-numericBadge-borderRadius: var(--pr-t-border-radius-small);
16
12
  --components-numericBadge-font: var(--pr-t-font-body-XS);
17
-
18
- // Deprecated
19
- --components-numericBadge-fontSize: var(--pr-t-font-body-XS-fontSize);
20
- --components-numericBadge-lineHeight: var(--pr-t-font-body-XS-lineHeight);
21
13
  }
22
14
 
23
15
  @mixin XS {
24
16
  --components-numericBadge-size: 1rem;
25
17
  --components-numericBadge-borderRadius: var(--pr-t-border-radius-small);
26
18
  --components-numericBadge-font: var(--pr-t-font-body-XS);
27
-
28
- // Deprecated
29
- --components-numericBadge-fontSize: var(--pr-t-font-body-XS-fontSize);
30
- --components-numericBadge-lineHeight: var(--pr-t-font-body-XS-lineHeight);
31
19
  }
32
20
 
33
21
  @mixin inherit {
@@ -5,8 +5,4 @@
5
5
  --components-numericBadge-size: 1.5rem;
6
6
  --components-numericBadge-font: var(--pr-t-font-body-S);
7
7
  --components-numericBadge-borderRadius: var(--pr-t-border-radius-default);
8
-
9
- // Deprecated
10
- --components-numericBadge-fontSize: var(--pr-t-font-body-S-fontSize);
11
- --components-numericBadge-lineHeight: var(--pr-t-font-body-S-lineHeight);
12
8
  }
@@ -33,6 +33,16 @@
33
33
  }
34
34
 
35
35
  @at-root ($atRoot) {
36
+ .popover-content {
37
+ overflow: auto;
38
+ max-block-size: min(var(--components-popover-content-maxBlockSize), calc(100dvh - var(--pr-t-spacings-200)));
39
+ max-inline-size: min(var(--components-popover-content-maxInlineSize), calc(100dvw - var(--pr-t-spacings-400)));
40
+
41
+ &:focus-visible {
42
+ @include a11y.focusVisible($borderRadius: var(--pr-t-border-radius-default));
43
+ }
44
+ }
45
+
36
46
  .popover-contentOptional {
37
47
  padding: var(--components-popover-padding);
38
48
  }
@@ -1,3 +1,5 @@
1
1
  @mixin vars {
2
2
  --components-popover-padding: var(--pr-t-spacings-100);
3
+ --components-popover-content-maxBlockSize: 9999px;
4
+ --components-popover-content-maxInlineSize: 9999px;
3
5
  }
@@ -47,6 +47,7 @@
47
47
  .presentation-definition {
48
48
  margin: 0;
49
49
  color: var(--pr-t-color-text);
50
+ overflow-wrap: anywhere;
50
51
 
51
52
  > *:not(:has(.lucca-icon), .presentation-definition-link) {
52
53
  color: var(--pr-t-color-text);
@@ -4,7 +4,7 @@
4
4
  cursor: default;
5
5
 
6
6
  &::before {
7
- border-color: var(--palettes-neutral-500);
7
+ border-color: var(--palettes-neutral-300);
8
8
  border-width: 2px;
9
9
  border-style: solid;
10
10
  }
@@ -18,13 +18,13 @@
18
18
  @mixin disabledChecked {
19
19
  ~ .radio-label {
20
20
  &::before {
21
- border-color: var(--palettes-neutral-500); // disabled token candidate
21
+ border-color: var(--palettes-neutral-300); // disabled token candidate
22
22
  border-width: 2px;
23
23
  border-style: solid;
24
24
  }
25
25
 
26
26
  &::after {
27
- background-color: var(--palettes-neutral-500); // disabled token candidate
27
+ background-color: var(--palettes-neutral-300); // disabled token candidate
28
28
  }
29
29
  }
30
30
  }
@@ -28,8 +28,8 @@
28
28
 
29
29
  @mixin checkedDisabled {
30
30
  ~ .radioField-icon {
31
- background-color: var(--palettes-neutral-500); // disabled token candidate
32
- border-color: var(--palettes-neutral-500); // disabled token candidate
31
+ background-color: var(--palettes-neutral-300); // disabled token candidate
32
+ border-color: var(--palettes-neutral-300); // disabled token candidate
33
33
  color: var(--palettes-neutral-500); // disabled token candidate
34
34
  }
35
35
  }
@@ -58,7 +58,7 @@
58
58
  cursor: default;
59
59
 
60
60
  ~ .radioField-icon {
61
- border-color: var(--palettes-neutral-500); // disabled token candidate
61
+ border-color: var(--palettes-neutral-300); // disabled token candidate
62
62
  }
63
63
  }
64
64
 
@@ -9,6 +9,6 @@
9
9
  // with css vars deprecated before values
10
10
  --components-richTextField-content-resize: var(--components-richTextField-resize, vertical);
11
11
  --components-richTextField-content-height: var(--components-richTextField-height, calc(3lh + var(--pr-t-spacings-200)));
12
- --components-richTextField-content-minHeight: var(--components-richTextField-minHeigh, calc(2lh + var(--pr-t-spacings-200)));
12
+ --components-richTextField-content-minHeight: var(--components-richTextField-minHeight, calc(2lh + var(--pr-t-spacings-200)));
13
13
  --components-richTextField-content-maxHeight: var(--components-richTextField-maxHeight, 90dvh);
14
14
  }
@@ -15,6 +15,8 @@
15
15
  padding-block: var(--components-scrollBox-paddingBlock);
16
16
  margin-block: var(--components-scrollBox-marginBlock);
17
17
  border-radius: var(--pr-t-border-radius-default);
18
+ transform: translate3d(0, 0, 0);
19
+ will-change: scroll-position;
18
20
 
19
21
  > * {
20
22
  flex-shrink: 0;
@@ -8,9 +8,7 @@
8
8
  }
9
9
 
10
10
  @layer mods {
11
- // .mod-grey is deprecated
12
- &.mod-neutral,
13
- &.mod-grey {
11
+ &.mod-neutral {
14
12
  @include neutral;
15
13
  }
16
14
 
@@ -40,6 +40,7 @@
40
40
  @include XS;
41
41
  }
42
42
 
43
+ &.mod-impersonation,
43
44
  &.mod-filterPill {
44
45
  @include filterPill;
45
46
  }
@@ -5,6 +5,36 @@
5
5
  .skeleton-item {
6
6
  animation: skeletonFade var(--commons-animations-durations-fast) ease-in 1 forwards;
7
7
  }
8
+
9
+ .skeletonCard {
10
+ background-color: var(--pr-t-elevation-surface-raised);
11
+ box-shadow: var(--pr-t-elevation-shadow-raised);
12
+ border-radius: var(--pr-t-border-radius-structure);
13
+ padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);
14
+ }
15
+
16
+ .skeletonHighlight {
17
+ background-color: var(--pr-t-elevation-surface-raised);
18
+ padding: var(--pr-t-spacings-150) var(--pr-t-spacings-200);
19
+ border-radius: var(--pr-t-border-radius-structure);
20
+
21
+ &.mod-dark {
22
+ background-color: var(--pr-t-elevation-surface-default);
23
+ }
24
+ }
25
+
26
+ .skeletonFancyBox {
27
+ padding: var(--pr-t-spacings-300) var(--pr-t-spacings-700);
28
+ background-color: var(--pr-t-elevation-surface-raised);
29
+ border-radius: var(--pr-t-border-radius-structure);
30
+ inline-size: fit-content;
31
+ margin-inline: auto;
32
+ min-inline-size: min(22rem, 100%);
33
+ min-block-size: 7rem;
34
+ display: flex;
35
+ flex-direction: column;
36
+ justify-content: center;
37
+ }
8
38
  }
9
39
 
10
40
  // fades content in on load
@@ -1,6 +1,6 @@
1
1
  @mixin dark {
2
- --components-skeleton-gradient-step-one: var(--palettes-neutral-200);
3
- --components-skeleton-gradient-step-two: var(--palettes-neutral-500);
2
+ --components-skeleton-gradient-step-one: var(--palettes-neutral-100);
3
+ --components-skeleton-gradient-step-two: var(--palettes-neutral-300);
4
4
  }
5
5
 
6
6
  @mixin square {
@@ -104,9 +104,9 @@
104
104
  background-image:
105
105
  linear-gradient(
106
106
  90deg,
107
- var(--components-skeleton-gradient-step-one, var(--palettes-neutral-50)),
108
- var(--components-skeleton-gradient-step-two, var(--palettes-neutral-200)),
109
- var(--components-skeleton-gradient-step-one, var(--palettes-neutral-50))
107
+ var(--components-skeleton-gradient-step-one),
108
+ var(--components-skeleton-gradient-step-two),
109
+ var(--components-skeleton-gradient-step-one)
110
110
  );
111
111
  background-size: 150% 100%;
112
112
  background-repeat: repeat-x;
@@ -1,6 +1,6 @@
1
1
  @mixin vars {
2
- --components-skeleton-gradient-step-one: var(--palettes-neutral-50);
3
- --components-skeleton-gradient-step-two: var(--palettes-neutral-200);
2
+ --components-skeleton-gradient-step-one: var(--palettes-neutral-25);
3
+ --components-skeleton-gradient-step-two: var(--palettes-neutral-100);
4
4
  --components-skeleton-shape-height: 1.5rem;
5
5
  --components-skeleton-shape-width: 1.5rem;
6
6
  --components-skeleton-text-offset: var(--pr-t-spacings-75);
@@ -5,6 +5,9 @@
5
5
  list-style-type: none;
6
6
  justify-content: center;
7
7
  display: flex;
8
+ flex-direction: column;
9
+ align-items: center;
10
+ gap: var(--pr-t-spacings-100);
8
11
  margin: 0;
9
12
  padding: 0;
10
13
  z-index: 9010;
@@ -12,6 +15,12 @@
12
15
  inset-block-end: auto;
13
16
 
14
17
  @at-root ($atRoot) {
18
+ .skipLinks_target {
19
+ &:focus-visible {
20
+ @include a11y.focusVisible;
21
+ }
22
+ }
23
+
15
24
  .skipLinks-action {
16
25
  border: 0;
17
26
  margin: 0;
@@ -19,7 +19,7 @@
19
19
  &::before {
20
20
  background-color: var(--palettes-700, var(--palettes-product-700));
21
21
  border-radius: var(--pr-t-border-radius-full);
22
- content: ' ' / ''; // Unbreakable space to avoid vertical alignement issues with inline-flex in some contexts like tables
22
+ content: ' ' / ''; // Unbreakable space to avoid vertical alignment issues with inline-flex in some contexts like tables
23
23
  display: block;
24
24
  block-size: var(--components-statusBadge-dot-size);
25
25
  flex-shrink: 0;
@@ -190,14 +190,14 @@
190
190
 
191
191
  @mixin stickyHeaderBanner {
192
192
  .table-head-row-cell {
193
- inset-block-start: var(commons-banner-height);
193
+ inset-block-start: var(--commons-banner-height);
194
194
  }
195
195
 
196
196
  .table-body-row-cell,
197
197
  .table-foot-row-cell {
198
198
  inset-block-start:
199
199
  calc(
200
- var(commons-banner-height)
200
+ var(--commons-banner-height)
201
201
  + var(--sticky-header-shadow-offset-top)
202
202
  + var(--components-tableFixed-column-sticky-shadow-width)
203
203
  );
@@ -206,7 +206,7 @@
206
206
  &::after {
207
207
  inset-block-start:
208
208
  calc(
209
- var(commons-banner-height)
209
+ var(--commons-banner-height)
210
210
  + var(--sticky-header-shadow-offset-top)
211
211
  + var(--components-tableFixed-column-sticky-shadow-width)
212
212
  );
@@ -24,6 +24,12 @@
24
24
  max-inline-size: 100%;
25
25
  position: var(--components-tag-position);
26
26
 
27
+ &::before {
28
+ content: var(--components-tag-before-content);
29
+ inline-size: 0;
30
+ margin-inline-start: calc(var(--components-tag-gap) * -1);
31
+ }
32
+
27
33
  &,
28
34
  &:is(a, button) {
29
35
  color: var(--components-tag-color);
@@ -1,3 +1,4 @@
1
+ @use '@lucca-front/scss/src/commons/config';
1
2
  @use 'exports' as *;
2
3
 
3
4
  .tag {
@@ -36,5 +37,9 @@
36
37
  &:has(.tag-content:focus-visible) {
37
38
  @include focusVisible;
38
39
  }
40
+
41
+ &:has(.lucca-icon) {
42
+ @include withIcon;
43
+ }
39
44
  }
40
45
  }
@@ -63,10 +63,18 @@
63
63
  --components-tag-boxShadow: none;
64
64
  --components-tag-position: relative;
65
65
 
66
- @include color.borderGradient(135deg, var(--palettes-brand-400), var(--palettes-AI-500), var(--pr-t-border-radius-small));
66
+ @include color.borderGradient(
67
+ $gradient: var(--pr-t-color-border-ai),
68
+ $radius: var(--pr-t-border-radius-small),
69
+ $pseudo: '::after',
70
+ );
67
71
 
68
72
  .lucca-icon {
69
73
  @include icons.AI;
70
74
  }
71
75
  }
72
76
  }
77
+
78
+ @mixin withIcon {
79
+ --components-tag-before-content: ' ';
80
+ }
@@ -8,6 +8,7 @@
8
8
  --components-tag-cursor: inherit;
9
9
  --components-tag-boxShadow: 0 0 0 1px var(--components-tag-shadow);
10
10
  --components-tag-position: static;
11
+ --components-tag-before-content: none;
11
12
 
12
13
  // Deprecated
13
14
  --components-tag-fontSize: var(--pr-t-font-body-S-fontSize);
@@ -130,6 +130,22 @@
130
130
  }
131
131
  }
132
132
 
133
+ .textField-prefix-lang {
134
+ min-inline-size: calc(var(--pr-t-spacings-300) + var(--pr-t-spacings-50));
135
+ position: relative;
136
+
137
+ &::after {
138
+ content: '';
139
+ position: absolute;
140
+ inset: var(--pr-t-spacings-25) 0;
141
+ border-right: 1px solid var(--palettes-neutral-200);
142
+ }
143
+
144
+ &:has(.formLabel-required) {
145
+ min-inline-size: calc(var(--pr-t-spacings-400) + var(--pr-t-spacings-50));
146
+ }
147
+ }
148
+
133
149
  .textField-suffix {
134
150
  display: inline-flex;
135
151
  padding-inline-end: var(--component-textField-padding);
@@ -13,6 +13,10 @@
13
13
 
14
14
  &.mod-S {
15
15
  @include S;
16
+
17
+ &.mod-multilanguage {
18
+ @include multilanguageS;
19
+ }
16
20
  }
17
21
 
18
22
  &.mod-XS {
@@ -23,6 +27,10 @@
23
27
  @include valueAlignRight;
24
28
  }
25
29
 
30
+ &.mod-multilanguage {
31
+ @include multilanguage;
32
+ }
33
+
26
34
  &.is-invalid,
27
35
  &:has(.textField-input-value[aria-invalid='true']) {
28
36
  @include invalid;
@@ -35,6 +43,10 @@
35
43
  &.is-disabled,
36
44
  &:has(.textField-input-value:disabled) {
37
45
  @include disabled;
46
+
47
+ &.mod-multilanguage {
48
+ @include multilanguageDisabled;
49
+ }
38
50
  }
39
51
 
40
52
  &.mod-autoResize {
@@ -1,4 +1,5 @@
1
1
  @use '@lucca-front/scss/src/components/clear/exports' as clear;
2
+ @use '@lucca-front/scss/src/components/button/exports' as button;
2
3
  @use '@lucca-front/icons/src/icon/exports' as icon;
3
4
 
4
5
  @mixin S {
@@ -90,3 +91,25 @@
90
91
 
91
92
  @include S;
92
93
  }
94
+
95
+ @mixin multilanguage {
96
+ .textField-input-affix-toggle {
97
+ @include button.outlined;
98
+ @include button.S;
99
+
100
+ pointer-events: auto;
101
+ padding: var(--pr-t-spacings-50);
102
+ color: var(--palettes-product-700);
103
+
104
+ &:hover {
105
+ --components-button-backgroundColor: var(--palettes-product-50);
106
+ --components-button-boxShadow: var(--pr-t-elevation-shadow-button), 0 0 0 var(--commons-divider-width) var(--palettes-product-300);
107
+ }
108
+ }
109
+ }
110
+
111
+ @mixin multilanguageS {
112
+ .textField-input-affix-toggle {
113
+ @include button.XS;
114
+ }
115
+ }
@@ -21,3 +21,9 @@
21
21
  --component-textField-color: var(--pr-t-color-text-subtle);
22
22
  --component-textField-textDecoration: line-through;
23
23
  }
24
+
25
+ @mixin multilanguageDisabled {
26
+ .textField-input-affix-toggle {
27
+ color: var(--pr-t-color-text-disabled);
28
+ }
29
+ }
@@ -1,6 +1,8 @@
1
1
  @use '@lucca-front/scss/src/commons/utils/namespace';
2
2
 
3
3
  @mixin component($atRoot: namespace.$defaultAtRoot) {
4
+ overflow-wrap: anywhere;
5
+
4
6
  h1 {
5
7
  margin-block: var(--pr-t-spacings-300);
6
8
  }
@@ -28,18 +28,37 @@
28
28
  &:focus-within {
29
29
  @include a11y.focusVisible($offset: 3px);
30
30
  }
31
+
32
+ .timePicker-fieldset {
33
+ box-shadow: initial;
34
+
35
+ &:focus-within {
36
+ outline: initial;
37
+ }
38
+ }
39
+ }
40
+
41
+ .timePicker-arrow {
42
+ align-self: stretch;
43
+ display: flex;
44
+ align-items: center;
45
+ color: var(--pr-t-color-text-subtle);
46
+ }
47
+
48
+ .timePicker-arrow-icon .lucca-icon {
49
+ @include icons.S;
31
50
  }
32
51
 
33
52
  .timePicker-fieldset-groupSeparator {
34
- pointer-events: none;
35
53
  display: grid;
36
54
  place-items: center;
37
55
  text-align: center;
38
- inline-size: var(--pr-t-spacings-200);
39
- margin-block: 0;
40
- margin-inline: calc(var(--pr-t-spacings-100) * -1);
56
+ inline-size: fit-content;
57
+ block-size: calc(var(--components-timepicker-input-height) + var(--components-timepicker-input-padding-block) * 2);
58
+ margin-inline: calc(var(--pr-t-spacings-25) * -1);
41
59
  position: relative;
42
60
  inset-inline-start: calc(var(--pr-t-spacings-25) * -1);
61
+ z-index: 1;
43
62
  }
44
63
 
45
64
  .timePicker-fieldset-group {
@@ -47,6 +66,9 @@
47
66
 
48
67
  ~ .timePicker-fieldset-group {
49
68
  margin-inline-start: calc(var(--pr-t-spacings-50) * -1);
69
+
70
+ --components-timepicker-input-padding-inline: var(--components-timepicker-end) var(--components-timepicker-start);
71
+ --components-timepicker-display-inset-inline: var(--components-timepicker-input-padding-inline);
50
72
  }
51
73
  }
52
74
 
@@ -83,7 +105,8 @@
83
105
 
84
106
  .timePicker-fieldset-group-textfield-display {
85
107
  position: absolute;
86
- inset: var(--components-timepicker-display-padding-inline) var(--components-timepicker-display-padding-block);
108
+ inset-block: var(--components-timepicker-display-inset-block);
109
+ inset-inline: var(--components-timepicker-display-inset-inline);
87
110
  border-radius: var(--pr-t-border-radius-50);
88
111
  pointer-events: none;
89
112
  display: grid;
@@ -134,8 +157,8 @@
134
157
 
135
158
  .timePicker-fieldset-meridiem {
136
159
  box-sizing: content-box;
137
- inline-size: calc(var(--components-timepicker-input-minInlineSize) + 2ch);
138
- padding-inline: var(--components-timepicker-display-padding-block);
160
+ inline-size: calc(var(--pr-t-spacings-100) + 2ch);
161
+ padding-inline: var(--pr-t-spacings-50);
139
162
  position: relative;
140
163
  align-self: stretch;
141
164
  margin-inline-start: calc(var(--pr-t-spacings-50) * -1);
@@ -143,7 +166,8 @@
143
166
  &::after {
144
167
  content: '';
145
168
  position: absolute;
146
- inset: var(--components-timepicker-display-padding-inline) var(--components-timepicker-display-padding-block);
169
+ inset-block: var(--components-timepicker-display-inset-block);
170
+ inset-inline: var(--pr-t-spacings-50);
147
171
  border-radius: var(--pr-t-border-radius-50);
148
172
  display: grid;
149
173
  place-items: center;