|
1 | 1 | .ds-alert {
|
| 2 | + --dsc-alert-background: var(--ds-color-info-surface-default); |
2 | 3 | --dsc-alert-border-color: var(--ds-color-info-border-strong);
|
3 | 4 | --dsc-alert-border-radius: min(1rem, var(--ds-border-radius-md));
|
4 | 5 | --dsc-alert-color: var(--ds-color-neutral-text-default);
|
5 |
| - --dsc-alert-icon-color: var(--ds-color-neutral-text-subtle); |
| 6 | + --dsc-alert-gap: var(--ds-spacing-2); |
| 7 | + --dsc-alert-icon-color: var(--ds-color-info-text-subtle); |
6 | 8 | --dsc-alert-icon-size: var(--ds-sizing-7);
|
7 |
| - --dsc-alert-background: var(--ds-color-info-surface-default); |
| 9 | + --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M3.25 4A.75.75 0 0 1 4 3.25h16a.75.75 0 0 1 .75.75v16a.75.75 0 0 1-.75.75H4a.75.75 0 0 1-.75-.75zM11 7.75a1 1 0 1 1 2 0 1 1 0 0 1-2 0m-1.25 3a.75.75 0 0 1 .75-.75H12a.75.75 0 0 1 .75.75v4.75h.75a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5h.75v-4h-.75a.75.75 0 0 1-.75-.75'/%3E%3C/svg%3E"); |
8 | 10 | --dsc-alert-padding: var(--ds-spacing-6);
|
9 | 11 |
|
10 |
| - border: 1px solid var(--dsc-alert-border-color); |
11 |
| - border-radius: var(--dsc-alert-border-radius); |
12 | 12 | background: var(--dsc-alert-background);
|
| 13 | + border-radius: var(--dsc-alert-border-radius); |
| 14 | + border: 1px solid var(--dsc-alert-border-color); |
13 | 15 | color: var(--dsc-alert-color);
|
14 |
| - padding: var(--dsc-alert-padding); |
15 |
| - display: grid; |
16 |
| - grid-auto-flow: column; |
17 |
| - grid-auto-columns: min-content auto; |
18 |
| - gap: var(--ds-spacing-2); |
19 |
| -} |
20 |
| - |
21 |
| -.ds-alert__icon { |
22 |
| - height: var(--dsc-alert-icon-size); |
23 |
| - width: var(--dsc-alert-icon-size); |
24 |
| - color: var(--dsc-alert-icon-color); |
25 |
| -} |
26 |
| - |
27 |
| -.ds-alert__content { |
28 |
| - display: flex; |
29 |
| - flex-direction: column; |
30 |
| -} |
| 16 | + padding-block: var(--dsc-alert-padding); |
| 17 | + padding-inline: calc(var(--dsc-alert-padding) + var(--dsc-alert-icon-size) + var(--dsc-alert-gap)) var(--dsc-alert-padding); |
31 | 18 |
|
32 |
| -.ds-alert--info { |
33 |
| - --dsc-alert-border-color: var(--ds-color-info-border-strong); |
34 |
| - --dsc-alert-icon-color: var(--ds-color-info-text-subtle); |
35 |
| - --dsc-alert-background: var(--ds-color-info-surface-default); |
36 |
| -} |
37 |
| - |
38 |
| -.ds-alert--warning { |
39 |
| - --dsc-alert-border-color: var(--ds-color-warning-border-default); |
40 |
| - --dsc-alert-icon-color: var(--ds-color-warning-text-subtle); |
41 |
| - --dsc-alert-background: var(--ds-color-warning-surface-default); |
42 |
| -} |
| 19 | + & > :is(h1,h2,h3,h4,h5,h6):first-child::before, /* If Alert starts with Heading, align icon to this */ |
| 20 | + &:not(:has(> :is(h1,h2,h3,h4,h5,h6):first-child))::before /* If there is no Heading, align icon to Alert itself */ { |
| 21 | + background-color: var(--dsc-alert-icon-color); |
| 22 | + content: ''; |
| 23 | + display: block; |
| 24 | + height: var(--dsc-alert-icon-size); |
| 25 | + margin-inline: calc((var(--dsc-alert-icon-size) + var(--dsc-alert-gap)) * -1); /* Using margin instead of top/left to avoid position: relative and to support dir="rtl" */ |
| 26 | + mask: var(--dsc-alert-icon-url) center/contain no-repeat; |
| 27 | + position: absolute; |
| 28 | + translate: 0 calc(.5lh - var(--dsc-alert-icon-size) / 2); /* Center icon to line height */ |
| 29 | + width: var(--dsc-alert-icon-size); |
| 30 | + } |
43 | 31 |
|
44 |
| -.ds-alert--success { |
45 |
| - --dsc-alert-border-color: var(--ds-color-success-border-default); |
46 |
| - --dsc-alert-icon-color: var(--ds-color-success-text-subtle); |
47 |
| - --dsc-alert-background: var(--ds-color-success-surface-default); |
48 |
| -} |
| 32 | + /** |
| 33 | + * Colors |
| 34 | + */ |
| 35 | + &[data-color="warning"] { |
| 36 | + --dsc-alert-border-color: var(--ds-color-warning-border-default); |
| 37 | + --dsc-alert-icon-color: var(--ds-color-warning-text-subtle); |
| 38 | + --dsc-alert-background: var(--ds-color-warning-surface-default); |
| 39 | + --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 2.25a.75.75 0 0 1 .66.39l9.52 17.25a.75.75 0 0 1-.65 1.11H2.47a.75.75 0 0 1-.65-1.11l9.52-17.25a.75.75 0 0 1 .66-.39m0 6.5a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0v-4a.75.75 0 0 1 .75-.75m-1 7.75a1 1 0 1 1 2 0 1 1 0 0 1-2 0'/%3E%3C/svg%3E"); |
| 40 | + } |
49 | 41 |
|
50 |
| -.ds-alert--danger { |
51 |
| - --dsc-alert-border-color: var(--ds-color-danger-border-default); |
52 |
| - --dsc-alert-icon-color: var(--ds-color-danger-text-subtle); |
53 |
| - --dsc-alert-background: var(--ds-color-danger-surface-default); |
54 |
| -} |
| 42 | + &[data-color="success"] { |
| 43 | + --dsc-alert-background: var(--ds-color-success-surface-default); |
| 44 | + --dsc-alert-border-color: var(--ds-color-success-border-default); |
| 45 | + --dsc-alert-icon-color: var(--ds-color-success-text-subtle); |
| 46 | + --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 21.75a9.75 9.75 0 1 0 0-19.5 9.75 9.75 0 0 0 0 19.5m4.95-12.47a.81.81 0 0 0-1.24-1.05l-5.39 6.36-2.62-2.62a.81.81 0 0 0-1.15 1.15l3.25 3.25a.81.81 0 0 0 1.2-.05z'/%3E%3C/svg%3E"); |
| 47 | + } |
55 | 48 |
|
56 |
| -.ds-alert--sm { |
57 |
| - --dsc-alert-padding: var(--ds-spacing-5); |
58 |
| - --dsc-alert-icon-size: var(--ds-sizing-6); |
59 |
| -} |
| 49 | + &[data-color="danger"] { |
| 50 | + --dsc-alert-background: var(--ds-color-danger-surface-default); |
| 51 | + --dsc-alert-border-color: var(--ds-color-danger-border-default); |
| 52 | + --dsc-alert-icon-color: var(--ds-color-danger-text-subtle); |
| 53 | + --dsc-alert-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M7.74 2.47a.75.75 0 0 1 .53-.22h7.46a.75.75 0 0 1 .53.22l5.27 5.27c.14.14.22.33.22.53v7.46a.75.75 0 0 1-.22.53l-5.27 5.27a.75.75 0 0 1-.53.22H8.27a.75.75 0 0 1-.53-.22l-5.27-5.27a.75.75 0 0 1-.22-.53V8.27a.75.75 0 0 1 .22-.53zm1.29 5.5a.75.75 0 0 0-1.06 1.06L10.94 12l-2.97 2.97a.75.75 0 1 0 1.06 1.06L12 13.06l2.97 2.97a.75.75 0 1 0 1.06-1.06L13.06 12l2.97-2.97a.75.75 0 0 0-1.06-1.06L12 10.94z'/%3E%3C/svg%3E"); |
| 54 | + } |
60 | 55 |
|
61 |
| -.ds-alert--md { |
62 |
| - --dsc-alert-padding: var(--ds-spacing-6); |
63 |
| - --dsc-alert-icon-size: var(--ds-sizing-7); |
64 |
| -} |
| 56 | + /** |
| 57 | + * Sizes |
| 58 | + */ |
| 59 | + &[data-size="sm"] { |
| 60 | + --dsc-alert-icon-size: var(--ds-sizing-6); |
| 61 | + --dsc-alert-padding: var(--ds-spacing-5); |
| 62 | + } |
65 | 63 |
|
66 |
| -.ds-alert--lg { |
67 |
| - --dsc-alert-padding: var(--ds-spacing-7); |
68 |
| - --dsc-alert-icon-size: var(--ds-sizing-8); |
| 64 | + &[data-size="lg"] { |
| 65 | + --dsc-alert-icon-size: var(--ds-sizing-8); |
| 66 | + --dsc-alert-padding: var(--ds-spacing-7); |
| 67 | + } |
69 | 68 | }
|
0 commit comments