al-design-system 1.0.1 → 1.2.0
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/README.md +5 -3
- package/README.pt-BR.md +5 -3
- package/dist/al.css +223 -2
- package/dist/components/link.css +101 -0
- package/dist/components/progress.css +115 -0
- package/dist/foundation.css +4 -1
- package/dist/tokens.json +5 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ An open-source design system, from Figma to code. Plain CSS, a little vanilla Ja
|
|
|
10
10
|
|
|
11
11
|
## What it is
|
|
12
12
|
|
|
13
|
-
- **Foundation +
|
|
13
|
+
- **Foundation + 25 components**, designed in Figma and coded from the same tokens.
|
|
14
14
|
- **Light and dark themes** built in. It follows the operating system by default, and you can force one.
|
|
15
15
|
- **Accessibility is checked by the build.** Every rendered combination (variant × state × theme) is measured for contrast against the background it actually sits on, and each component's markup contract is verified. If something fails, the build stops.
|
|
16
16
|
- **Nothing is typed by hand.** Tokens, CSS variables, `tokens.json` and the documentation tables are all generated from one source.
|
|
@@ -22,6 +22,7 @@ An open-source design system, from Figma to code. Plain CSS, a little vanilla Ja
|
|
|
22
22
|
| Actions and display | Button | | [guidelines](src/components/button/guidelines.md) |
|
|
23
23
|
| | Icon | | (70 icons, see [Icons](#icons)) |
|
|
24
24
|
| | Icon Button | | [guidelines](src/components/icon-button/guidelines.md) |
|
|
25
|
+
| | Link | | [guidelines](src/components/link/guidelines.md) |
|
|
25
26
|
| | Tag | | [guidelines](src/components/tag/guidelines.md) |
|
|
26
27
|
| | Avatar | | [guidelines](src/components/avatar/guidelines.md) |
|
|
27
28
|
| Forms | Select | | [guidelines](src/components/select/guidelines.md) |
|
|
@@ -42,6 +43,7 @@ An open-source design system, from Figma to code. Plain CSS, a little vanilla Ja
|
|
|
42
43
|
| Feedback | Tooltip | ✓ | [guidelines](src/components/tooltip/guidelines.md) |
|
|
43
44
|
| | Toast | ✓ | [guidelines](src/components/toast/guidelines.md) |
|
|
44
45
|
| | Alert | ✓ | [guidelines](src/components/alert/guidelines.md) |
|
|
46
|
+
| | Progress | | [guidelines](src/components/progress/guidelines.md) |
|
|
45
47
|
|
|
46
48
|
Each guidelines file holds the usage rules (when to use it, when not to, content, behavior and accessibility) and, when there are any, the contrast exceptions the component declares.
|
|
47
49
|
|
|
@@ -54,7 +56,7 @@ npm install al-design-system
|
|
|
54
56
|
Or straight from a CDN, pinned to a version:
|
|
55
57
|
|
|
56
58
|
```html
|
|
57
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/al-design-system@1.0
|
|
59
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/al-design-system@1.2.0/dist/al.css">
|
|
58
60
|
```
|
|
59
61
|
|
|
60
62
|
Each [GitHub Release](https://github.com/guilhermedworakowski/al-design-system/releases) also carries the `dist/` folder as a zip.
|
|
@@ -63,7 +65,7 @@ Each [GitHub Release](https://github.com/guilhermedworakowski/al-design-system/r
|
|
|
63
65
|
|
|
64
66
|
| File | What it is |
|
|
65
67
|
|---|---|
|
|
66
|
-
| `al.css` | Foundation + all
|
|
68
|
+
| `al.css` | Foundation + all 25 components, in one file |
|
|
67
69
|
| `foundation.css` | Only the Foundation: color, typography, spacing, radius, icon size, elevation, focus ring and motion |
|
|
68
70
|
| `components/<name>.css` | One component (its tokens + its CSS) |
|
|
69
71
|
| `components/<name>.js` | The behavior, for the 9 components that have a script |
|
package/README.pt-BR.md
CHANGED
|
@@ -10,7 +10,7 @@ Design system open source, do Figma ao código. CSS puro, um pouco de JavaScript
|
|
|
10
10
|
|
|
11
11
|
## O que é
|
|
12
12
|
|
|
13
|
-
- **Foundation +
|
|
13
|
+
- **Foundation + 25 componentes**, desenhados no Figma e codados a partir dos mesmos tokens.
|
|
14
14
|
- **Temas claro e escuro** já incluídos. Por padrão segue o sistema operacional, e dá para forçar um.
|
|
15
15
|
- **A acessibilidade é conferida no build.** Cada combinação renderizada (variante × estado × tema) tem o contraste medido contra o fundo onde ela realmente aparece, e o contrato de marcação de cada componente é verificado. Se algo reprova, o build para.
|
|
16
16
|
- **Nada é digitado à mão.** Tokens, variáveis CSS, `tokens.json` e as tabelas da documentação saem todos de uma fonte só.
|
|
@@ -22,6 +22,7 @@ Design system open source, do Figma ao código. CSS puro, um pouco de JavaScript
|
|
|
22
22
|
| Ações e exibição | Button | | [diretrizes](src/components/button/guidelines.md) |
|
|
23
23
|
| | Icon | | (70 ícones, ver [Ícones](#ícones)) |
|
|
24
24
|
| | Icon Button | | [diretrizes](src/components/icon-button/guidelines.md) |
|
|
25
|
+
| | Link | | [diretrizes](src/components/link/guidelines.md) |
|
|
25
26
|
| | Tag | | [diretrizes](src/components/tag/guidelines.md) |
|
|
26
27
|
| | Avatar | | [diretrizes](src/components/avatar/guidelines.md) |
|
|
27
28
|
| Formulários | Select | | [diretrizes](src/components/select/guidelines.md) |
|
|
@@ -42,6 +43,7 @@ Design system open source, do Figma ao código. CSS puro, um pouco de JavaScript
|
|
|
42
43
|
| Feedback | Tooltip | ✓ | [diretrizes](src/components/tooltip/guidelines.md) |
|
|
43
44
|
| | Toast | ✓ | [diretrizes](src/components/toast/guidelines.md) |
|
|
44
45
|
| | Alert | ✓ | [diretrizes](src/components/alert/guidelines.md) |
|
|
46
|
+
| | Progress | | [diretrizes](src/components/progress/guidelines.md) |
|
|
45
47
|
|
|
46
48
|
Cada arquivo de diretrizes traz as regras de uso (quando usar, quando não usar, conteúdo, comportamento e acessibilidade) e, quando houver, as exceções de contraste que o componente declara. Por enquanto as diretrizes estão em inglês; a versão em português chega junto com o site novo.
|
|
47
49
|
|
|
@@ -54,7 +56,7 @@ npm install al-design-system
|
|
|
54
56
|
Ou direto de uma CDN, fixado numa versão:
|
|
55
57
|
|
|
56
58
|
```html
|
|
57
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/al-design-system@1.0
|
|
59
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/al-design-system@1.2.0/dist/al.css">
|
|
58
60
|
```
|
|
59
61
|
|
|
60
62
|
Cada [Release no GitHub](https://github.com/guilhermedworakowski/al-design-system/releases) também traz a pasta `dist/` num zip.
|
|
@@ -63,7 +65,7 @@ Cada [Release no GitHub](https://github.com/guilhermedworakowski/al-design-syste
|
|
|
63
65
|
|
|
64
66
|
| Arquivo | O que é |
|
|
65
67
|
|---|---|
|
|
66
|
-
| `al.css` | Foundation + os
|
|
68
|
+
| `al.css` | Foundation + os 25 componentes, num arquivo só |
|
|
67
69
|
| `foundation.css` | Só a Foundation: cor, tipografia, espaçamento, radius, tamanho de ícone, elevação, anel de foco e motion |
|
|
68
70
|
| `components/<nome>.css` | Um componente (os tokens + o CSS dele) |
|
|
69
71
|
| `components/<nome>.js` | O comportamento, para os 9 componentes que têm script |
|
package/dist/al.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/* AL Design System 1.0
|
|
1
|
+
/* AL Design System 1.2.0 - Foundation + 25 components.
|
|
2
2
|
* MIT. https://github.com/guilhermedworakowski/al-design-system
|
|
3
3
|
*/
|
|
4
4
|
/* AL Design System - Foundation
|
|
5
|
-
* v1.0
|
|
5
|
+
* v1.2.0 - MIT
|
|
6
6
|
* GENERATED by src/foundation/css.py. Do not edit by hand: run the script.
|
|
7
7
|
*/
|
|
8
8
|
|
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
--al-bg-active-raised: #E0E0E0;
|
|
91
91
|
--al-bg-thumb: #B3B3B3;
|
|
92
92
|
--al-bg-thumb-disabled: #CECECE;
|
|
93
|
+
--al-bg-track: #E0E0E0;
|
|
93
94
|
--al-bg-scrim: #1818188F;
|
|
94
95
|
--al-bg-brand: #FC5000;
|
|
95
96
|
--al-bg-brand-hover: #C53900;
|
|
@@ -247,6 +248,7 @@
|
|
|
247
248
|
--al-bg-active-raised: #717171;
|
|
248
249
|
--al-bg-thumb: #717171;
|
|
249
250
|
--al-bg-thumb-disabled: #565656;
|
|
251
|
+
--al-bg-track: #565656;
|
|
250
252
|
--al-bg-scrim: #000000A3;
|
|
251
253
|
--al-bg-brand: #FC5000;
|
|
252
254
|
--al-bg-brand-hover: #EA4900;
|
|
@@ -312,6 +314,7 @@
|
|
|
312
314
|
--al-bg-active-raised: #717171;
|
|
313
315
|
--al-bg-thumb: #717171;
|
|
314
316
|
--al-bg-thumb-disabled: #565656;
|
|
317
|
+
--al-bg-track: #565656;
|
|
315
318
|
--al-bg-scrim: #000000A3;
|
|
316
319
|
--al-bg-brand: #FC5000;
|
|
317
320
|
--al-bg-brand-hover: #EA4900;
|
|
@@ -6825,3 +6828,221 @@
|
|
|
6825
6828
|
transition: none;
|
|
6826
6829
|
}
|
|
6827
6830
|
}
|
|
6831
|
+
|
|
6832
|
+
/* AL Design System - Link tokens
|
|
6833
|
+
* GENERATED by src/components/link/tokens.py. Do not edit by hand.
|
|
6834
|
+
*
|
|
6835
|
+
* The default ink is the theme-invariant brand primitive; hover and focus
|
|
6836
|
+
* point to text-brand, which the theme switches on :root.
|
|
6837
|
+
*/
|
|
6838
|
+
|
|
6839
|
+
:root {
|
|
6840
|
+
/* color - underline and icon inherit through currentColor */
|
|
6841
|
+
--al-link-text-default: var(--al-color-orange-500);
|
|
6842
|
+
--al-link-text-hover: var(--al-text-brand);
|
|
6843
|
+
--al-link-text-focus: var(--al-text-brand);
|
|
6844
|
+
|
|
6845
|
+
/* focus */
|
|
6846
|
+
--al-link-ring: var(--al-focus-ring-default);
|
|
6847
|
+
|
|
6848
|
+
/* geometry */
|
|
6849
|
+
--al-link-underline-default: var(--al-border-width-1);
|
|
6850
|
+
--al-link-underline-hover: var(--al-border-width-2);
|
|
6851
|
+
--al-link-underline-offset: var(--al-space-4);
|
|
6852
|
+
--al-link-gap: var(--al-space-8);
|
|
6853
|
+
--al-link-icon-size: var(--al-icon-size-20);
|
|
6854
|
+
|
|
6855
|
+
/* type - standalone only; inline inherits the paragraph */
|
|
6856
|
+
--al-link-font-size: var(--al-font-size-sm);
|
|
6857
|
+
--al-link-line-height: var(--al-line-height-sm);
|
|
6858
|
+
--al-link-font-weight: var(--al-font-weight-medium);
|
|
6859
|
+
--al-link-tracking: 0em;
|
|
6860
|
+
}
|
|
6861
|
+
|
|
6862
|
+
/* AL Design System - Link
|
|
6863
|
+
*
|
|
6864
|
+
* Always an <a href>. One type, always underlined: the underline is what
|
|
6865
|
+
* separates the link from text, not the color (WCAG 1.4.1) - and it is what
|
|
6866
|
+
* pays the default's declared contrast exception. Never remove it.
|
|
6867
|
+
*
|
|
6868
|
+
* Standalone (.al-link) uses label-md. Inside running text (.al-link--inline)
|
|
6869
|
+
* it inherits the paragraph font and takes no icon.
|
|
6870
|
+
*
|
|
6871
|
+
* The underline is text-decoration, not a bottom border: it has to follow the
|
|
6872
|
+
* text when an inline link wraps across lines. Its color is currentColor, so
|
|
6873
|
+
* it follows the state's ink with no token of its own; the icon does the same.
|
|
6874
|
+
*/
|
|
6875
|
+
|
|
6876
|
+
.al-link {
|
|
6877
|
+
display: inline-flex;
|
|
6878
|
+
align-items: center;
|
|
6879
|
+
gap: var(--al-link-gap);
|
|
6880
|
+
color: var(--al-link-text-default);
|
|
6881
|
+
font-family: var(--al-font-sans);
|
|
6882
|
+
font-size: var(--al-link-font-size);
|
|
6883
|
+
line-height: var(--al-link-line-height);
|
|
6884
|
+
font-weight: var(--al-link-font-weight);
|
|
6885
|
+
letter-spacing: var(--al-link-tracking);
|
|
6886
|
+
text-decoration-line: underline;
|
|
6887
|
+
text-decoration-thickness: var(--al-link-underline-default);
|
|
6888
|
+
text-underline-offset: var(--al-link-underline-offset);
|
|
6889
|
+
outline: none;
|
|
6890
|
+
transition:
|
|
6891
|
+
color var(--al-motion-duration-feedback) var(--al-motion-easing-exit),
|
|
6892
|
+
text-decoration-thickness var(--al-motion-duration-feedback) var(--al-motion-easing-exit);
|
|
6893
|
+
}
|
|
6894
|
+
|
|
6895
|
+
/* the icon is decorative (aria-hidden in the markup); the text says it all */
|
|
6896
|
+
.al-link__icon {
|
|
6897
|
+
flex: none;
|
|
6898
|
+
width: var(--al-link-icon-size);
|
|
6899
|
+
height: var(--al-link-icon-size);
|
|
6900
|
+
color: currentColor;
|
|
6901
|
+
}
|
|
6902
|
+
|
|
6903
|
+
/* inline: inherits the paragraph; a ring split across lines repeats per line */
|
|
6904
|
+
.al-link--inline {
|
|
6905
|
+
display: inline;
|
|
6906
|
+
font: inherit;
|
|
6907
|
+
letter-spacing: inherit;
|
|
6908
|
+
-webkit-box-decoration-break: clone;
|
|
6909
|
+
box-decoration-break: clone;
|
|
6910
|
+
}
|
|
6911
|
+
.al-link--inline .al-link__icon {
|
|
6912
|
+
display: none;
|
|
6913
|
+
}
|
|
6914
|
+
|
|
6915
|
+
.al-link:hover {
|
|
6916
|
+
color: var(--al-link-text-hover);
|
|
6917
|
+
text-decoration-thickness: var(--al-link-underline-hover);
|
|
6918
|
+
transition-timing-function: var(--al-motion-easing-enter);
|
|
6919
|
+
}
|
|
6920
|
+
|
|
6921
|
+
/* :focus-visible, not :focus - the ring shows from the keyboard, not on click.
|
|
6922
|
+
Same ring as the Button: a shadow, so it doesn't push the layout. */
|
|
6923
|
+
.al-link:focus-visible {
|
|
6924
|
+
color: var(--al-link-text-focus);
|
|
6925
|
+
text-decoration-thickness: var(--al-link-underline-hover);
|
|
6926
|
+
box-shadow: var(--al-link-ring);
|
|
6927
|
+
transition-timing-function: var(--al-motion-easing-enter);
|
|
6928
|
+
}
|
|
6929
|
+
|
|
6930
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6931
|
+
.al-link { transition: none; }
|
|
6932
|
+
}
|
|
6933
|
+
|
|
6934
|
+
/* AL Design System - Progress tokens
|
|
6935
|
+
* GENERATED by src/components/progress/tokens.py. Do not edit by hand.
|
|
6936
|
+
*
|
|
6937
|
+
* Every color is a semantic the theme switches on :root.
|
|
6938
|
+
*/
|
|
6939
|
+
|
|
6940
|
+
:root {
|
|
6941
|
+
/* color */
|
|
6942
|
+
--al-progress-track-bg: var(--al-bg-track);
|
|
6943
|
+
--al-progress-fill-bg: var(--al-bg-brand);
|
|
6944
|
+
--al-progress-label-text: var(--al-text-primary);
|
|
6945
|
+
--al-progress-meta-text: var(--al-text-secondary);
|
|
6946
|
+
|
|
6947
|
+
/* geometry */
|
|
6948
|
+
--al-progress-radius: var(--al-radius-full);
|
|
6949
|
+
--al-progress-height: var(--al-space-8);
|
|
6950
|
+
--al-progress-height-thin: var(--al-space-4);
|
|
6951
|
+
--al-progress-gap: var(--al-space-8);
|
|
6952
|
+
|
|
6953
|
+
/* type - label and meta share one style */
|
|
6954
|
+
--al-progress-font-size: var(--al-font-size-sm);
|
|
6955
|
+
--al-progress-line-height: var(--al-line-height-sm);
|
|
6956
|
+
--al-progress-font-weight: var(--al-font-weight-regular);
|
|
6957
|
+
}
|
|
6958
|
+
|
|
6959
|
+
/* AL Design System - Progress
|
|
6960
|
+
*
|
|
6961
|
+
* Determinate only. The bar is a native <progress value max>: the browser
|
|
6962
|
+
* exposes the value to assistive tech with no extra ARIA, and the name comes
|
|
6963
|
+
* from the visible label through aria-labelledby (Thin: aria-label).
|
|
6964
|
+
*
|
|
6965
|
+
* Three types, one block:
|
|
6966
|
+
* .al-progress Label - label + percentage over an 8px bar
|
|
6967
|
+
* .al-progress--steps Steps - "N of total" in the meta ink
|
|
6968
|
+
* .al-progress--thin Thin - a 4px bar alone, no header
|
|
6969
|
+
*
|
|
6970
|
+
* The bar is never the only carrier of progress (usage rule 22): that is what
|
|
6971
|
+
* pays the declared fill-on-track exception. No focus, no aria-live - the end
|
|
6972
|
+
* of the task is announced by a Toast or an Alert, not by the bar.
|
|
6973
|
+
*
|
|
6974
|
+
* <progress> needs vendor pseudo-elements: WebKit/Blink draw the track in
|
|
6975
|
+
* ::-webkit-progress-bar and the fill in ::-webkit-progress-value; Firefox
|
|
6976
|
+
* paints the track on the element and the fill in ::-moz-progress-bar.
|
|
6977
|
+
*/
|
|
6978
|
+
|
|
6979
|
+
.al-progress {
|
|
6980
|
+
display: flex;
|
|
6981
|
+
flex-direction: column;
|
|
6982
|
+
gap: var(--al-progress-gap);
|
|
6983
|
+
inline-size: 100%;
|
|
6984
|
+
font-family: var(--al-font-sans);
|
|
6985
|
+
font-size: var(--al-progress-font-size);
|
|
6986
|
+
line-height: var(--al-progress-line-height);
|
|
6987
|
+
font-weight: var(--al-progress-font-weight);
|
|
6988
|
+
}
|
|
6989
|
+
|
|
6990
|
+
.al-progress__header {
|
|
6991
|
+
display: flex;
|
|
6992
|
+
justify-content: space-between;
|
|
6993
|
+
gap: var(--al-progress-gap);
|
|
6994
|
+
}
|
|
6995
|
+
|
|
6996
|
+
.al-progress__label {
|
|
6997
|
+
color: var(--al-progress-label-text);
|
|
6998
|
+
}
|
|
6999
|
+
|
|
7000
|
+
/* percentage; tabular figures keep it from jittering as it counts up */
|
|
7001
|
+
.al-progress__value {
|
|
7002
|
+
flex: none;
|
|
7003
|
+
color: var(--al-progress-meta-text);
|
|
7004
|
+
font-variant-numeric: tabular-nums;
|
|
7005
|
+
}
|
|
7006
|
+
|
|
7007
|
+
.al-progress--steps .al-progress__label {
|
|
7008
|
+
color: var(--al-progress-meta-text);
|
|
7009
|
+
}
|
|
7010
|
+
|
|
7011
|
+
/* ----------------------------------------------------------------- bar */
|
|
7012
|
+
.al-progress__bar {
|
|
7013
|
+
-webkit-appearance: none;
|
|
7014
|
+
appearance: none;
|
|
7015
|
+
display: block;
|
|
7016
|
+
inline-size: 100%;
|
|
7017
|
+
block-size: var(--al-progress-height);
|
|
7018
|
+
border: none;
|
|
7019
|
+
border-radius: var(--al-progress-radius);
|
|
7020
|
+
overflow: hidden;
|
|
7021
|
+
background-color: var(--al-progress-track-bg);
|
|
7022
|
+
color: var(--al-progress-fill-bg);
|
|
7023
|
+
}
|
|
7024
|
+
|
|
7025
|
+
.al-progress--thin .al-progress__bar {
|
|
7026
|
+
block-size: var(--al-progress-height-thin);
|
|
7027
|
+
}
|
|
7028
|
+
|
|
7029
|
+
.al-progress__bar::-webkit-progress-bar {
|
|
7030
|
+
background-color: var(--al-progress-track-bg);
|
|
7031
|
+
border-radius: var(--al-progress-radius);
|
|
7032
|
+
}
|
|
7033
|
+
|
|
7034
|
+
/* the width change is the only motion: no shimmer, no loop (rule 23) */
|
|
7035
|
+
.al-progress__bar::-webkit-progress-value {
|
|
7036
|
+
background-color: var(--al-progress-fill-bg);
|
|
7037
|
+
border-radius: var(--al-progress-radius);
|
|
7038
|
+
transition: inline-size var(--al-motion-duration-feedback) var(--al-motion-easing-enter);
|
|
7039
|
+
}
|
|
7040
|
+
|
|
7041
|
+
.al-progress__bar::-moz-progress-bar {
|
|
7042
|
+
background-color: var(--al-progress-fill-bg);
|
|
7043
|
+
border-radius: var(--al-progress-radius);
|
|
7044
|
+
}
|
|
7045
|
+
|
|
7046
|
+
@media (prefers-reduced-motion: reduce) {
|
|
7047
|
+
.al-progress__bar::-webkit-progress-value { transition: none; }
|
|
7048
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* AL Design System - Link tokens
|
|
2
|
+
* GENERATED by src/components/link/tokens.py. Do not edit by hand.
|
|
3
|
+
*
|
|
4
|
+
* The default ink is the theme-invariant brand primitive; hover and focus
|
|
5
|
+
* point to text-brand, which the theme switches on :root.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
/* color - underline and icon inherit through currentColor */
|
|
10
|
+
--al-link-text-default: var(--al-color-orange-500);
|
|
11
|
+
--al-link-text-hover: var(--al-text-brand);
|
|
12
|
+
--al-link-text-focus: var(--al-text-brand);
|
|
13
|
+
|
|
14
|
+
/* focus */
|
|
15
|
+
--al-link-ring: var(--al-focus-ring-default);
|
|
16
|
+
|
|
17
|
+
/* geometry */
|
|
18
|
+
--al-link-underline-default: var(--al-border-width-1);
|
|
19
|
+
--al-link-underline-hover: var(--al-border-width-2);
|
|
20
|
+
--al-link-underline-offset: var(--al-space-4);
|
|
21
|
+
--al-link-gap: var(--al-space-8);
|
|
22
|
+
--al-link-icon-size: var(--al-icon-size-20);
|
|
23
|
+
|
|
24
|
+
/* type - standalone only; inline inherits the paragraph */
|
|
25
|
+
--al-link-font-size: var(--al-font-size-sm);
|
|
26
|
+
--al-link-line-height: var(--al-line-height-sm);
|
|
27
|
+
--al-link-font-weight: var(--al-font-weight-medium);
|
|
28
|
+
--al-link-tracking: 0em;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* AL Design System - Link
|
|
32
|
+
*
|
|
33
|
+
* Always an <a href>. One type, always underlined: the underline is what
|
|
34
|
+
* separates the link from text, not the color (WCAG 1.4.1) - and it is what
|
|
35
|
+
* pays the default's declared contrast exception. Never remove it.
|
|
36
|
+
*
|
|
37
|
+
* Standalone (.al-link) uses label-md. Inside running text (.al-link--inline)
|
|
38
|
+
* it inherits the paragraph font and takes no icon.
|
|
39
|
+
*
|
|
40
|
+
* The underline is text-decoration, not a bottom border: it has to follow the
|
|
41
|
+
* text when an inline link wraps across lines. Its color is currentColor, so
|
|
42
|
+
* it follows the state's ink with no token of its own; the icon does the same.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
.al-link {
|
|
46
|
+
display: inline-flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
gap: var(--al-link-gap);
|
|
49
|
+
color: var(--al-link-text-default);
|
|
50
|
+
font-family: var(--al-font-sans);
|
|
51
|
+
font-size: var(--al-link-font-size);
|
|
52
|
+
line-height: var(--al-link-line-height);
|
|
53
|
+
font-weight: var(--al-link-font-weight);
|
|
54
|
+
letter-spacing: var(--al-link-tracking);
|
|
55
|
+
text-decoration-line: underline;
|
|
56
|
+
text-decoration-thickness: var(--al-link-underline-default);
|
|
57
|
+
text-underline-offset: var(--al-link-underline-offset);
|
|
58
|
+
outline: none;
|
|
59
|
+
transition:
|
|
60
|
+
color var(--al-motion-duration-feedback) var(--al-motion-easing-exit),
|
|
61
|
+
text-decoration-thickness var(--al-motion-duration-feedback) var(--al-motion-easing-exit);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* the icon is decorative (aria-hidden in the markup); the text says it all */
|
|
65
|
+
.al-link__icon {
|
|
66
|
+
flex: none;
|
|
67
|
+
width: var(--al-link-icon-size);
|
|
68
|
+
height: var(--al-link-icon-size);
|
|
69
|
+
color: currentColor;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* inline: inherits the paragraph; a ring split across lines repeats per line */
|
|
73
|
+
.al-link--inline {
|
|
74
|
+
display: inline;
|
|
75
|
+
font: inherit;
|
|
76
|
+
letter-spacing: inherit;
|
|
77
|
+
-webkit-box-decoration-break: clone;
|
|
78
|
+
box-decoration-break: clone;
|
|
79
|
+
}
|
|
80
|
+
.al-link--inline .al-link__icon {
|
|
81
|
+
display: none;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.al-link:hover {
|
|
85
|
+
color: var(--al-link-text-hover);
|
|
86
|
+
text-decoration-thickness: var(--al-link-underline-hover);
|
|
87
|
+
transition-timing-function: var(--al-motion-easing-enter);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* :focus-visible, not :focus - the ring shows from the keyboard, not on click.
|
|
91
|
+
Same ring as the Button: a shadow, so it doesn't push the layout. */
|
|
92
|
+
.al-link:focus-visible {
|
|
93
|
+
color: var(--al-link-text-focus);
|
|
94
|
+
text-decoration-thickness: var(--al-link-underline-hover);
|
|
95
|
+
box-shadow: var(--al-link-ring);
|
|
96
|
+
transition-timing-function: var(--al-motion-easing-enter);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (prefers-reduced-motion: reduce) {
|
|
100
|
+
.al-link { transition: none; }
|
|
101
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* AL Design System - Progress tokens
|
|
2
|
+
* GENERATED by src/components/progress/tokens.py. Do not edit by hand.
|
|
3
|
+
*
|
|
4
|
+
* Every color is a semantic the theme switches on :root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
/* color */
|
|
9
|
+
--al-progress-track-bg: var(--al-bg-track);
|
|
10
|
+
--al-progress-fill-bg: var(--al-bg-brand);
|
|
11
|
+
--al-progress-label-text: var(--al-text-primary);
|
|
12
|
+
--al-progress-meta-text: var(--al-text-secondary);
|
|
13
|
+
|
|
14
|
+
/* geometry */
|
|
15
|
+
--al-progress-radius: var(--al-radius-full);
|
|
16
|
+
--al-progress-height: var(--al-space-8);
|
|
17
|
+
--al-progress-height-thin: var(--al-space-4);
|
|
18
|
+
--al-progress-gap: var(--al-space-8);
|
|
19
|
+
|
|
20
|
+
/* type - label and meta share one style */
|
|
21
|
+
--al-progress-font-size: var(--al-font-size-sm);
|
|
22
|
+
--al-progress-line-height: var(--al-line-height-sm);
|
|
23
|
+
--al-progress-font-weight: var(--al-font-weight-regular);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* AL Design System - Progress
|
|
27
|
+
*
|
|
28
|
+
* Determinate only. The bar is a native <progress value max>: the browser
|
|
29
|
+
* exposes the value to assistive tech with no extra ARIA, and the name comes
|
|
30
|
+
* from the visible label through aria-labelledby (Thin: aria-label).
|
|
31
|
+
*
|
|
32
|
+
* Three types, one block:
|
|
33
|
+
* .al-progress Label - label + percentage over an 8px bar
|
|
34
|
+
* .al-progress--steps Steps - "N of total" in the meta ink
|
|
35
|
+
* .al-progress--thin Thin - a 4px bar alone, no header
|
|
36
|
+
*
|
|
37
|
+
* The bar is never the only carrier of progress (usage rule 22): that is what
|
|
38
|
+
* pays the declared fill-on-track exception. No focus, no aria-live - the end
|
|
39
|
+
* of the task is announced by a Toast or an Alert, not by the bar.
|
|
40
|
+
*
|
|
41
|
+
* <progress> needs vendor pseudo-elements: WebKit/Blink draw the track in
|
|
42
|
+
* ::-webkit-progress-bar and the fill in ::-webkit-progress-value; Firefox
|
|
43
|
+
* paints the track on the element and the fill in ::-moz-progress-bar.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
.al-progress {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
gap: var(--al-progress-gap);
|
|
50
|
+
inline-size: 100%;
|
|
51
|
+
font-family: var(--al-font-sans);
|
|
52
|
+
font-size: var(--al-progress-font-size);
|
|
53
|
+
line-height: var(--al-progress-line-height);
|
|
54
|
+
font-weight: var(--al-progress-font-weight);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.al-progress__header {
|
|
58
|
+
display: flex;
|
|
59
|
+
justify-content: space-between;
|
|
60
|
+
gap: var(--al-progress-gap);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.al-progress__label {
|
|
64
|
+
color: var(--al-progress-label-text);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* percentage; tabular figures keep it from jittering as it counts up */
|
|
68
|
+
.al-progress__value {
|
|
69
|
+
flex: none;
|
|
70
|
+
color: var(--al-progress-meta-text);
|
|
71
|
+
font-variant-numeric: tabular-nums;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.al-progress--steps .al-progress__label {
|
|
75
|
+
color: var(--al-progress-meta-text);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* ----------------------------------------------------------------- bar */
|
|
79
|
+
.al-progress__bar {
|
|
80
|
+
-webkit-appearance: none;
|
|
81
|
+
appearance: none;
|
|
82
|
+
display: block;
|
|
83
|
+
inline-size: 100%;
|
|
84
|
+
block-size: var(--al-progress-height);
|
|
85
|
+
border: none;
|
|
86
|
+
border-radius: var(--al-progress-radius);
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
background-color: var(--al-progress-track-bg);
|
|
89
|
+
color: var(--al-progress-fill-bg);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.al-progress--thin .al-progress__bar {
|
|
93
|
+
block-size: var(--al-progress-height-thin);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.al-progress__bar::-webkit-progress-bar {
|
|
97
|
+
background-color: var(--al-progress-track-bg);
|
|
98
|
+
border-radius: var(--al-progress-radius);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* the width change is the only motion: no shimmer, no loop (rule 23) */
|
|
102
|
+
.al-progress__bar::-webkit-progress-value {
|
|
103
|
+
background-color: var(--al-progress-fill-bg);
|
|
104
|
+
border-radius: var(--al-progress-radius);
|
|
105
|
+
transition: inline-size var(--al-motion-duration-feedback) var(--al-motion-easing-enter);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.al-progress__bar::-moz-progress-bar {
|
|
109
|
+
background-color: var(--al-progress-fill-bg);
|
|
110
|
+
border-radius: var(--al-progress-radius);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@media (prefers-reduced-motion: reduce) {
|
|
114
|
+
.al-progress__bar::-webkit-progress-value { transition: none; }
|
|
115
|
+
}
|
package/dist/foundation.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* AL Design System - Foundation
|
|
2
|
-
* v1.0
|
|
2
|
+
* v1.2.0 - MIT
|
|
3
3
|
* GENERATED by src/foundation/css.py. Do not edit by hand: run the script.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
--al-bg-active-raised: #E0E0E0;
|
|
88
88
|
--al-bg-thumb: #B3B3B3;
|
|
89
89
|
--al-bg-thumb-disabled: #CECECE;
|
|
90
|
+
--al-bg-track: #E0E0E0;
|
|
90
91
|
--al-bg-scrim: #1818188F;
|
|
91
92
|
--al-bg-brand: #FC5000;
|
|
92
93
|
--al-bg-brand-hover: #C53900;
|
|
@@ -244,6 +245,7 @@
|
|
|
244
245
|
--al-bg-active-raised: #717171;
|
|
245
246
|
--al-bg-thumb: #717171;
|
|
246
247
|
--al-bg-thumb-disabled: #565656;
|
|
248
|
+
--al-bg-track: #565656;
|
|
247
249
|
--al-bg-scrim: #000000A3;
|
|
248
250
|
--al-bg-brand: #FC5000;
|
|
249
251
|
--al-bg-brand-hover: #EA4900;
|
|
@@ -309,6 +311,7 @@
|
|
|
309
311
|
--al-bg-active-raised: #717171;
|
|
310
312
|
--al-bg-thumb: #717171;
|
|
311
313
|
--al-bg-thumb-disabled: #565656;
|
|
314
|
+
--al-bg-track: #565656;
|
|
312
315
|
--al-bg-scrim: #000000A3;
|
|
313
316
|
--al-bg-brand: #FC5000;
|
|
314
317
|
--al-bg-brand-hover: #EA4900;
|
package/dist/tokens.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"meta": {
|
|
3
3
|
"name": "AL Design System",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"brandAnchor": "#FC5000",
|
|
7
7
|
"colorSpace": "OKLCH",
|
|
@@ -151,6 +151,10 @@
|
|
|
151
151
|
"#CECECE",
|
|
152
152
|
"#565656"
|
|
153
153
|
],
|
|
154
|
+
"bg-track": [
|
|
155
|
+
"#E0E0E0",
|
|
156
|
+
"#565656"
|
|
157
|
+
],
|
|
154
158
|
"bg-scrim": [
|
|
155
159
|
"#1818188F",
|
|
156
160
|
"#000000A3"
|