@lucca-front/scss 22.0.3 → 22.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucca-front/scss",
3
- "version": "22.0.3",
3
+ "version": "22.1.0-rc.1",
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.3",
28
- "@lucca/prisme": "22.0.3"
27
+ "@lucca-front/icons": "22.1.0-rc.1",
28
+ "@lucca/prisme": "22.1.0-rc.1"
29
29
  }
30
30
  }
@@ -24,29 +24,11 @@
24
24
  @mixin base($atRoot: namespace.$defaultAtRoot) {
25
25
  @at-root ($atRoot) {
26
26
  @if config.$fontFamily {
27
- @include core.fontFace(
28
- config.$fontFamily,
29
- config.$fontWeights,
30
- config.$fontStyles,
31
- $unicodeRange: config.$fontCoreRange
32
- );
33
- @include core.fontFace(
34
- config.$fontFamily,
35
- config.$fontWeights,
36
- config.$fontStyles,
37
- $unicodeRange: config.$fontExtendedRange,
38
- $filenameSuffix: '-extended'
39
- );
27
+ @include core.fontFace(config.$fontFamily, config.$fontWeights, config.$fontStyles);
40
28
  }
41
29
 
42
30
  @if config.$fontFamilyBrand {
43
- @include core.fontFace(
44
- config.$fontFamilyBrand,
45
- config.$fontWeightsBrand,
46
- config.$fontStylesBrand,
47
- $path: config.$fontPathBrand,
48
- $unicodeRangeFolder: config.$fontUnicodeRangeFolderBrand
49
- );
31
+ @include core.fontFace(config.$fontFamilyBrand, config.$fontWeightsBrand, config.$fontStylesBrand);
50
32
  }
51
33
 
52
34
  @if config.$fontFamilyCursive {
@@ -13,35 +13,6 @@ $deprecatedUtilityPrefix: false !default;
13
13
  $prefersContrast: 'no-preference' !default;
14
14
 
15
15
  $fontFamily: 'SourceSans' !default;
16
-
17
- $fontPath: '//cdn.lucca.fr/transverse/fonts' !default;
18
-
19
- $fontPathBrand: $fontPath !default;
20
-
21
- $fontUnicodeRangeFolder: 'unicode-range' !default;
22
-
23
- $fontUnicodeRangeFolderBrand: $fontUnicodeRangeFolder !default;
24
-
25
- // Covers fr/en/de/es/it/nl/pt/ca on their own: ASCII
26
- // + Latin-1 Supplement (letters/punctuation/currency), Œ œ Ÿ,
27
- // and common typographic punctuation.
28
-
29
- // ¡ ¢ £ ¥ ¨ © ª « ® ° ± ´ · ¸ º » ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý ß à á â ã ä å æ ç è
30
- // é ê ë ì í î ï ñ ò ó ô õ ö ÷ ø ù ú û ü ý ÿ Œ œ Ÿ – — ‘ ’ ‚ “ ” „ • … ‰ ‹ › ⁄ € ™ − fi fl (+ a thin space, U+2009)
31
-
32
- $fontCoreRange: 'U+0020-007E, U+00A0-00A3, U+00A5, U+00A8-00AB, U+00AE, U+00B0-00B1, U+00B4, U+00B7-00B8, U+00BA-00BB, U+00BF-00CF, U+00D1-00DD, U+00DF-00EF, U+00F1-00FD, U+00FF, U+0152-0153, U+0178, U+2009, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+202F-2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02' !default;
33
-
34
- // Only fetched by the browser when a page actually renders one of these glyphs:
35
- // Central/Eastern European Latin
36
- // Extended-A/B (pl/cs/hr/ro/hu/tr),
37
- // Vietnamese-style tilde/grave vowels and ẞ found in LuccaSans,
38
- // spacing modifiers, and arrows.
39
-
40
- // Ă ă Ą ą Ć ć Č č Ď ď Đ đ Ę ę Ě ě Ğ ğ Ĩ ĩ İ ı Ł ł Ń ń Ň ň Ő ő Ř ř Ś ś Ş ş Š š Ť ť Ũ ũ Ů ů Ű ű Ŷ ŷ Ź ź Ż ż Ž ž Ș ș
41
- // Ț ț ˆ ˜ ô ẞ Ẽ ẽ Ỳ ỳ Ỹ ỹ ← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ≈ ≠ ≤ ≥
42
-
43
- $fontExtendedRange: 'U+0102-0107, U+010C-0111, U+0118-011B, U+011E-011F, U+0128-0129, U+0130-0131, U+0141-0144, U+0147-0148, U+0150-0151, U+0158-015B, U+015E-0161, U+0164-0165, U+0168-0169, U+016E-0171, U+0176-0177, U+0179-017E, U+0218-021B, U+02C6, U+02DC, U+0302, U+1E9E, U+1EBC-1EBD, U+1EF2-1EF3, U+1EF8-1EF9, U+2190-2199, U+2248, U+2260, U+2264-2265' !default;
44
-
45
16
  $fontFamilyBrand: 'LuccaSans' !default;
46
17
  $fontWeights: (
47
18
  'regular': 400,
@@ -157,46 +157,28 @@ $cursor: 'pointer', 'auto', 'default', 'text';
157
157
  }
158
158
  }
159
159
 
160
- @mixin fontFace(
161
- $family,
162
- $weights,
163
- $styles,
164
- $path: config.$fontPath,
165
- $unicodeRange: null,
166
- $filenameSuffix: '',
167
- $unicodeRangeFolder: config.$fontUnicodeRangeFolder
168
- ) {
169
- $familyPath: '#{$path}/#{$family}';
170
-
171
- @if $unicodeRange {
172
- $familyPath: '#{$familyPath}/#{$unicodeRangeFolder}';
173
- }
174
-
160
+ @mixin fontFace($family, $weights, $styles, $path: '//cdn.lucca.fr/transverse/fonts') {
175
161
  @each $keyword, $number in $weights {
176
162
  @each $style in $styles {
177
163
  @if $style == 'normal' {
178
164
  @font-face {
179
165
  font-family: '#{$family}';
180
- src: url('#{$familyPath}/#{$keyword}#{$filenameSuffix}.woff2') format('woff2');
166
+ src:
167
+ url('#{$path}/#{$family}/#{$keyword}.woff2') format('woff2'),
168
+ url('#{$path}/#{$family}/#{$keyword}.woff') format('woff');
181
169
  font-weight: #{$number};
182
170
  font-style: #{$style};
183
171
  font-display: swap;
184
-
185
- @if $unicodeRange {
186
- unicode-range: #{$unicodeRange};
187
- }
188
172
  }
189
173
  } @else {
190
174
  @font-face {
191
175
  font-family: '#{$family}';
192
- src: url('#{$familyPath}/#{$keyword}#{$filenameSuffix}-#{$style}.woff2') format('woff2');
176
+ src:
177
+ url('#{$path}/#{$family}/#{$keyword}-#{$style}.woff2') format('woff2'),
178
+ url('#{$path}/#{$family}/#{$keyword}-#{$style}.woff') format('woff');
193
179
  font-weight: #{$number};
194
180
  font-style: #{$style};
195
181
  font-display: swap;
196
-
197
- @if $unicodeRange {
198
- unicode-range: #{$unicodeRange};
199
- }
200
182
  }
201
183
  }
202
184
  }
@@ -13,6 +13,7 @@
13
13
  .bubbleIcon,
14
14
  .softwareIcon,
15
15
  .lucca-icon,
16
+ .icon,
16
17
 
17
18
  // Texts
18
19
  .code,
@@ -147,7 +148,7 @@
147
148
  lu-bubble-illustration .bubbleIllustration,
148
149
  lu-bubble-icon,
149
150
  lu-software-icon .softwareIcon,
150
- lu-icon .lucca-icon,
151
+ lu-icon .icon,
151
152
 
152
153
  // Texts
153
154
  lu-code .code,
@@ -11,17 +11,7 @@
11
11
  // TOKENS : TYPO
12
12
 
13
13
  --pr-t-font-family: '#{config.$fontFamily}', Tahoma, sans-serif;
14
- --pr-t-font-family-brand: var(--pr-t-font-family);
15
-
16
- &:lang(fr),
17
- &:lang(en),
18
- &:lang(de),
19
- &:lang(nl),
20
- &:lang(it),
21
- &:lang(pt),
22
- &:lang(es) {
23
- --pr-t-font-family-brand: '#{config.$fontFamilyBrand}', Tahoma, sans-serif;
24
- }
14
+ --pr-t-font-family-brand: '#{config.$fontFamilyBrand}', Tahoma, sans-serif;
25
15
 
26
16
  @if (config.$fontFamilyCursive) {
27
17
  --pr-t-font-family-cursive: '#{config.$fontFamilyCursive}', cursive;
@@ -32,7 +32,6 @@
32
32
  .activityFeed-step-state,
33
33
  .activityFeed-step-avatar {
34
34
  margin-block: var(--pr-t-spacings-75);
35
- flex-shrink: 0;
36
35
  }
37
36
 
38
37
  .activityFeed-step-state {
@@ -3,25 +3,19 @@
3
3
  @mixin XS {
4
4
  --components-bubbleIcon-size: var(--pr-t-spacings-300);
5
5
 
6
- .lucca-icon {
7
- @include icon.XS;
8
- }
6
+ @include icon.XS;
9
7
  }
10
8
 
11
9
  @mixin S {
12
10
  --components-bubbleIcon-size: var(--pr-t-spacings-400);
13
11
 
14
- .lucca-icon {
15
- @include icon.S;
16
- }
12
+ @include icon.S;
17
13
  }
18
14
 
19
15
  @mixin L {
20
16
  --components-bubbleIcon-size: var(--pr-t-spacings-600);
21
17
 
22
- .lucca-icon {
23
- @include icon.L;
24
- }
18
+ @include icon.L;
25
19
  }
26
20
 
27
21
  @mixin left {
@@ -1,11 +1,12 @@
1
- @use '@lucca-front/icons/src/icon/exports' as icons;
2
- @use '@lucca-front/icons/src/commons/utils/icon';
1
+ @use '@lucca-front/icons/src/icon/exports' as luccaIcon;
2
+ @use '@lucca-front/icons/src/commons/utils/icon' as utilsIcon;
3
+ @use '@lucca-front/scss/src/components/icon/exports' as icon;
3
4
  @use '@lucca-front/scss/src/commons/utils/a11y';
4
5
  @use '@lucca-front/scss/src/commons/utils/color';
5
6
  @use '@lucca-front/scss/src/components/numericBadge/exports' as numericBadge;
6
7
 
7
8
  @mixin M {
8
- @include icons.M;
9
+ @include luccaIcon.M;
9
10
 
10
11
  --components-button-font: var(--pr-t-font-body-M);
11
12
  --components-button-paddingBlock: var(--pr-t-spacings-100);
@@ -22,7 +23,7 @@
22
23
  }
23
24
 
24
25
  @mixin S {
25
- @include icons.S;
26
+ @include luccaIcon.S;
26
27
 
27
28
  --components-button-font: var(--pr-t-font-body-S);
28
29
  --components-button-paddingBlock: var(--pr-t-spacings-75);
@@ -45,7 +46,7 @@
45
46
  }
46
47
 
47
48
  @mixin XS {
48
- @include icons.XS;
49
+ @include luccaIcon.XS;
49
50
 
50
51
  --components-button-font: var(--pr-t-font-body-XS);
51
52
  --components-button-paddingBlock: var(--pr-t-spacings-50);
@@ -150,7 +151,7 @@
150
151
  --components-button-padding: 0;
151
152
 
152
153
  &::after {
153
- @include icon.generate('arrow_chevron_bottom');
154
+ @include utilsIcon.generate('arrow_chevron_bottom');
154
155
 
155
156
  block-size: 0;
156
157
  order: -1;
@@ -283,8 +284,12 @@
283
284
  @include color.borderGradient($gradient: var(--pr-t-color-border-ai));
284
285
 
285
286
  &:not(.mod-invert) {
286
- .lucca-icon {
287
- @include icons.AI;
287
+ @include icon.whenRawIcon {
288
+ @include luccaIcon.AI;
289
+ }
290
+
291
+ @include icon.whenIconComponent {
292
+ @include icon.AI;
288
293
  }
289
294
  }
290
295
  }
@@ -1,4 +1,5 @@
1
1
  @use '@lucca-front/icons/src/icon/exports' as icons;
2
+ @use '@lucca-front/scss/src/components/icon/exports' as icon;
2
3
  @use '@lucca-front/scss/src/commons/utils/color';
3
4
  @use '@lucca-front/scss/src/commons/utils/a11y';
4
5
  @use '@lucca-front/scss/src/components/button/exports' as button;
@@ -37,9 +38,13 @@
37
38
  @include color.borderGradient($gradient: var(--pr-t-color-border-ai));
38
39
 
39
40
  .callout-icon {
40
- .lucca-icon {
41
+ @include icon.whenRawIcon {
41
42
  @include icons.AI;
42
43
  }
44
+
45
+ @include icon.whenIconComponent {
46
+ @include icon.AI;
47
+ }
43
48
  }
44
49
  }
45
50
 
@@ -160,8 +160,6 @@
160
160
 
161
161
  .statusBadge,
162
162
  .tag,
163
- lu-tag,
164
- pr-tag,
165
163
  .avatar {
166
164
  vertical-align: top;
167
165
  }
@@ -108,7 +108,6 @@
108
108
  }
109
109
 
110
110
  .dialog-inside-header-actionOptional {
111
- grid-area: action;
112
111
  margin-inline-end: calc(var(--pr-t-spacings-100) * -1);
113
112
 
114
113
  &:empty {
@@ -0,0 +1,8 @@
1
+ @use '@lucca-front/scss/src/commons/utils/namespace';
2
+
3
+ @mixin component($atRoot: namespace.$defaultAtRoot) {
4
+ block-size: var(--components-icon-size, var(--icon-size, var(--components-icon-sizeDefault)));
5
+ inline-size: var(--components-icon-size, var(--icon-size, var(--components-icon-sizeDefault)));
6
+ color: var(--components-icon-color);
7
+ fill: currentColor;
8
+ }
@@ -0,0 +1,4 @@
1
+ @forward 'vars';
2
+ @forward 'mods';
3
+ @forward 'states';
4
+ @forward 'component';
@@ -0,0 +1,67 @@
1
+ @use 'exports' as *;
2
+
3
+ // where is for specificity here
4
+ :where(lu-icon, pr-icon) .lucca-icon {
5
+ @layer components {
6
+ @include vars;
7
+ @include component;
8
+ }
9
+
10
+ @layer mods {
11
+ &.mod-XXS {
12
+ @include XXS;
13
+ }
14
+
15
+ &.mod-XS {
16
+ @include XS;
17
+ }
18
+
19
+ &.mod-S {
20
+ @include S;
21
+ }
22
+
23
+ &.mod-M {
24
+ @include M;
25
+ }
26
+
27
+ &.mod-L {
28
+ @include L;
29
+ }
30
+
31
+ &.mod-XL {
32
+ @include XL;
33
+ }
34
+
35
+ &.mod-XXL {
36
+ @include XXL;
37
+ }
38
+
39
+ &.icon-color-product {
40
+ @include colorProduct;
41
+ }
42
+
43
+ &.icon-color-error {
44
+ @include colorError;
45
+ }
46
+
47
+ &.icon-color-warning {
48
+ @include colorWarning;
49
+ }
50
+
51
+ &.icon-color-success {
52
+ @include colorSuccess;
53
+ }
54
+
55
+ &.icon-color-light {
56
+ @include colorLight;
57
+ }
58
+
59
+ &.icon-color-placeholder {
60
+ @include colorPlaceholder;
61
+ }
62
+
63
+ &.mod-AI {
64
+ @include AI;
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,67 @@
1
+ @mixin XXS {
2
+ --components-icon-size: 0.75rem;
3
+ }
4
+
5
+ @mixin XS {
6
+ --components-icon-size: 1rem;
7
+ }
8
+
9
+ @mixin S {
10
+ --components-icon-size: 1.25rem;
11
+ }
12
+
13
+ @mixin M {
14
+ --components-icon-size: 1.5rem;
15
+ }
16
+
17
+ @mixin L {
18
+ --components-icon-size: 1.75rem;
19
+ }
20
+
21
+ @mixin XL {
22
+ --components-icon-size: 2rem;
23
+ }
24
+
25
+ @mixin XXL {
26
+ --components-icon-size: 2.5rem;
27
+ }
28
+
29
+ @mixin colorProduct {
30
+ --components-icon-color: var(--palettes-product-700);
31
+ }
32
+
33
+ @mixin colorError {
34
+ --components-icon-color: var(--palettes-error-700);
35
+ }
36
+
37
+ @mixin colorWarning {
38
+ --components-icon-color: var(--palettes-warning-700);
39
+ }
40
+
41
+ @mixin colorSuccess {
42
+ --components-icon-color: var(--palettes-success-700);
43
+ }
44
+
45
+ @mixin colorLight {
46
+ --components-icon-color: var(--palettes-neutral-600);
47
+ }
48
+
49
+ @mixin colorPlaceholder {
50
+ --components-icon-color: var(--palettes-neutral-400);
51
+ }
52
+
53
+ @mixin AI {
54
+ fill: url('#lu-icon-ai-gradient');
55
+ }
56
+
57
+ @mixin whenIconComponent {
58
+ :where(lu-icon, pr-icon) .lucca-icon {
59
+ @content;
60
+ }
61
+ }
62
+
63
+ @mixin whenRawIcon {
64
+ .lucca-icon:where(:not(:where(lu-icon, pr-icon) .lucca-icon)) {
65
+ @content;
66
+ }
67
+ }
File without changes
@@ -0,0 +1,4 @@
1
+ @mixin vars {
2
+ --components-icon-color: inherit;
3
+ --components-icon-sizeDefault: 1.5rem;
4
+ }
@@ -116,6 +116,7 @@
116
116
  @forward 'bubbleIllustration';
117
117
  @forward 'bubbleIcon';
118
118
  @forward 'softwareIcon';
119
+ @forward 'icon';
119
120
  @forward 'progressStepper';
120
121
  @forward 'activityFeed';
121
122
  @forward 'impersonation';
@@ -277,8 +277,6 @@
277
277
 
278
278
  .statusBadge,
279
279
  .tag,
280
- lu-tag,
281
- pr-tag,
282
280
  .avatar {
283
281
  vertical-align: top;
284
282
  }
@@ -66,11 +66,6 @@
66
66
  }
67
67
  }
68
68
 
69
- .listboxOption-content-value {
70
- flex-grow: 1;
71
- min-inline-size: 0;
72
- }
73
-
74
69
  .listboxOption-content-checkboxField.checkboxField {
75
70
  margin-block-start: var(--pr-t-spacings-25);
76
71
  display: var(--components-listboxOption-content-checkboxField-display);
@@ -6,13 +6,11 @@
6
6
  border-radius: var(--pr-t-border-radius-small);
7
7
  padding-block: 0;
8
8
  padding-inline: var(--pr-t-spacings-50);
9
-
10
- /* autoprefixer: off */
11
9
  text-decoration: var(--components-tag-decoration);
12
10
  box-shadow: 0 0 0 1px var(--components-tag-shadow);
13
11
  gap: var(--components-tag-gap);
14
12
  cursor: var(--components-tag-cursor);
15
- display: inline-flex;
13
+ display: var(--components-tag-display);
16
14
  align-items: center;
17
15
  text-align: center;
18
16
  vertical-align: baseline;
@@ -42,9 +40,11 @@
42
40
  @at-root ($atRoot) {
43
41
  .tag-content {
44
42
  outline: none;
45
-
46
- /* autoprefixer: off */
47
43
  text-decoration: var(--components-tag-decoration);
44
+
45
+ &:empty {
46
+ display: none;
47
+ }
48
48
  }
49
49
  }
50
50
  }
@@ -41,5 +41,15 @@
41
41
  &:has(.lucca-icon) {
42
42
  @include withIcon;
43
43
  }
44
+
45
+ &:has(.tag-content:empty) {
46
+ &:not(:has(.lucca-icon)) {
47
+ @include empty;
48
+ }
49
+ }
50
+
51
+ &:empty {
52
+ @include empty;
53
+ }
44
54
  }
45
55
  }
@@ -1,4 +1,5 @@
1
1
  @use '@lucca-front/icons/src/icon/exports' as icons;
2
+ @use '@lucca-front/scss/src/components/icon/exports' as icon;
2
3
  @use '@lucca-front/scss/src/commons/utils/color';
3
4
 
4
5
  @mixin clickable {
@@ -69,9 +70,13 @@
69
70
  $pseudo: '::after',
70
71
  );
71
72
 
72
- .lucca-icon {
73
+ @include icon.whenRawIcon {
73
74
  @include icons.AI;
74
75
  }
76
+
77
+ @include icon.whenIconComponent {
78
+ @include icon.AI;
79
+ }
75
80
  }
76
81
  }
77
82
 
@@ -8,3 +8,7 @@
8
8
  @mixin focusVisible {
9
9
  @include a11y.focusVisible;
10
10
  }
11
+
12
+ @mixin empty {
13
+ --components-tag-display: none;
14
+ }
@@ -9,6 +9,7 @@
9
9
  --components-tag-boxShadow: 0 0 0 1px var(--components-tag-shadow);
10
10
  --components-tag-position: static;
11
11
  --components-tag-before-content: none;
12
+ --components-tag-display: inline-flex;
12
13
 
13
14
  // Deprecated
14
15
  --components-tag-fontSize: var(--pr-t-font-body-S-fontSize);
@@ -13,25 +13,13 @@
13
13
  margin: var(--components-tooltip-margin);
14
14
  text-align: center;
15
15
  inline-size: fit-content;
16
- animation-name: scaleIn, tooltipPointerEventsIn;
17
- animation-delay: var(--components-tooltip-animationDelay);
16
+ animation-name: scaleIn;
18
17
  animation-duration: var(--commons-animations-durations-fast);
19
18
  animation-iteration-count: 1;
20
- animation-fill-mode: backwards;
21
19
  overflow-wrap: break-word;
22
20
 
23
21
  @include keyframe.scaleIn;
24
22
 
25
- @keyframes tooltipPointerEventsIn {
26
- 0% {
27
- pointer-events: none;
28
- }
29
-
30
- 1% {
31
- pointer-events: auto;
32
- }
33
- }
34
-
35
23
  &:empty {
36
24
  display: none;
37
25
  }
@@ -4,5 +4,4 @@
4
4
  --components-tooltip-max-width: 15rem;
5
5
  --components-tooltip-transformOrigin: center;
6
6
  --components-tooltip-margin: 0;
7
- --components-tooltip-animationDelay: 300ms;
8
7
  }