semmet-angular 0.39.0 → 0.41.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.
Files changed (46) hide show
  1. package/README.en.md +22 -0
  2. package/README.md +22 -0
  3. package/README.pt-BR.md +22 -0
  4. package/package.json +1 -1
  5. package/src/accordion/files/__name@dasherize__/__name@dasherize__.css.template +6 -3
  6. package/src/alert/files/__name@dasherize__/__name@dasherize__.css.template +6 -3
  7. package/src/alert-dialog/files/__name@dasherize__/__name@dasherize__.css.template +10 -5
  8. package/src/badge/files/__name@dasherize__/__name@dasherize__.css.template +8 -5
  9. package/src/breadcrumb/files/__name@dasherize__/__name@dasherize__.css.template +3 -2
  10. package/src/button/files/__name@dasherize__/__name@dasherize__.css.template +13 -7
  11. package/src/button-group/files/__name@dasherize__/__name@dasherize__.css.template +12 -6
  12. package/src/card/files/__name@dasherize__/__name@dasherize__.css.template +7 -4
  13. package/src/carousel/files/__name@dasherize__/__name@dasherize__.css.template +7 -4
  14. package/src/checkbox/files/__name@dasherize__/__name@dasherize__.css.template +4 -2
  15. package/src/close-button/files/__name@dasherize__/__name@dasherize__.css.template +9 -6
  16. package/src/combobox/files/__name@dasherize__/__name@dasherize__.css.template +11 -5
  17. package/src/dialog/files/__name@dasherize__/__name@dasherize__.css.template +9 -4
  18. package/src/disclosure/files/__name@dasherize__/__name@dasherize__.css.template +5 -3
  19. package/src/form/files/__name@dasherize__/__name@dasherize__.css.template +11 -7
  20. package/src/input/files/__name@dasherize__/__name@dasherize__.css.template +6 -3
  21. package/src/input-group/files/__name@dasherize__/__name@dasherize__.css.template +8 -5
  22. package/src/landmarks/files/__name@dasherize__/__name@dasherize__.css.template +4 -2
  23. package/src/list-group/files/__name@dasherize__/__name@dasherize__.css.template +12 -7
  24. package/src/listbox/files/__name@dasherize__/__name@dasherize__.css.template +7 -3
  25. package/src/menu-button/files/__name@dasherize__/__name@dasherize__.css.template +11 -5
  26. package/src/meter/files/__name@dasherize__/__name@dasherize__.css.template +2 -1
  27. package/src/navbar/files/__name@dasherize__/__name@dasherize__.css.template +18 -14
  28. package/src/navigation-menu/files/__name@dasherize__/__name@dasherize__.css.template +10 -5
  29. package/src/offcanvas/files/__name@dasherize__/__name@dasherize__.css.template +12 -8
  30. package/src/pagination/files/__name@dasherize__/__name@dasherize__.css.template +7 -4
  31. package/src/popover/files/__name@dasherize__/__name@dasherize__.css.template +17 -12
  32. package/src/progress-bar/files/__name@dasherize__/__name@dasherize__.css.template +7 -3
  33. package/src/radio-group/files/__name@dasherize__/__name@dasherize__.css.template +6 -2
  34. package/src/select/files/__name@dasherize__/__name@dasherize__.css.template +10 -5
  35. package/src/skeleton/files/__name@dasherize__/__name@dasherize__.css.template +2 -1
  36. package/src/slider/files/__name@dasherize__/__name@dasherize__.css.template +2 -1
  37. package/src/spinbutton/files/__name@dasherize__/__name@dasherize__.css.template +6 -4
  38. package/src/spinner/files/__name@dasherize__/__name@dasherize__.css.template +2 -1
  39. package/src/switch/files/__name@dasherize__/__name@dasherize__.css.template +4 -2
  40. package/src/table/files/__name@dasherize__/__name@dasherize__.css.template +4 -2
  41. package/src/tabs/files/__name@dasherize__/__name@dasherize__.css.template +11 -5
  42. package/src/textarea/files/__name@dasherize__/__name@dasherize__.css.template +5 -3
  43. package/src/toast/files/__name@dasherize__/__name@dasherize__.css.template +11 -5
  44. package/src/toolbar/files/__name@dasherize__/__name@dasherize__.css.template +8 -3
  45. package/src/tooltip/files/__name@dasherize__/__name@dasherize__.css.template +7 -3
  46. package/src/tree-view/files/__name@dasherize__/__name@dasherize__.css.template +7 -3
package/README.en.md CHANGED
@@ -35,6 +35,28 @@ Use isolated components when you need fine-grained control, or compositions when
35
35
  - **Compositions / Blocks**: ready-made sections such as `section-card`, `section-faq`, `section-pricing`, `section-stats`, `section-table`, `section-form`, `section-tabs`, `section-list-group`, `section-alert`, `section-progress`, `section-carousel`, `header-navbar`, `footer-navigation`, and `command-list`.
36
36
  - **Delivery**: `ng add`, `ci`, `docker`, `deploy`, and `verify`.
37
37
 
38
+ ## Composition Commands
39
+
40
+ Compositions/blocks generate standalone Angular sections using the matching Semmet components. Generated CSS stays local to the block and uses local spacing tokens to keep landing-page rhythm without injecting global styles into the application.
41
+
42
+ | Command | Generates | Built from |
43
+ |---|---|---|
44
+ | `ng generate semmet-angular:block hero` | Semantic hero section | Section structure |
45
+ | `ng generate semmet-angular:block section-card` | Card section | `card` |
46
+ | `ng generate semmet-angular:block section-faq` | FAQ section | `accordion` |
47
+ | `ng generate semmet-angular:block section-pricing` | Pricing section | `card` |
48
+ | `ng generate semmet-angular:block section-stats` | Stats section | Section structure |
49
+ | `ng generate semmet-angular:block section-table` | Table section | `table` |
50
+ | `ng generate semmet-angular:block section-form` | Form section | `form` |
51
+ | `ng generate semmet-angular:block section-tabs` | Tabs section | `tabs` |
52
+ | `ng generate semmet-angular:block section-list-group` | Action list section | `list-group` |
53
+ | `ng generate semmet-angular:block section-alert` | Alert section | `alert` |
54
+ | `ng generate semmet-angular:block section-progress` | Progress section | `progress-bar` |
55
+ | `ng generate semmet-angular:block section-carousel` | Carousel section | `carousel` |
56
+ | `ng generate semmet-angular:block header-navbar` | Header navigation | `navbar` |
57
+ | `ng generate semmet-angular:block footer-navigation` | Footer navigation | `navbar` |
58
+ | `ng generate semmet-angular:block command-list` | Command list section | Section structure |
59
+
38
60
  ## Generated tests
39
61
 
40
62
  Every component schematic generates test files next to the component:
package/README.md CHANGED
@@ -35,6 +35,28 @@ Use componentes isolados quando precisar de controle fino, ou compositions quand
35
35
  - **Compositions / Blocks**: seções prontas como `section-card`, `section-faq`, `section-pricing`, `section-stats`, `section-table`, `section-form`, `section-tabs`, `section-list-group`, `section-alert`, `section-progress`, `section-carousel`, `header-navbar`, `footer-navigation` e `command-list`.
36
36
  - **Delivery**: `ng add`, `ci`, `docker`, `deploy` e `verify`.
37
37
 
38
+ ## Comandos de Composição
39
+
40
+ Compositions/blocks geram seções Angular standalone usando os componentes correspondentes da própria Semmet. O CSS gerado fica local no block e usa tokens locais de espaçamento para manter ritmo de landing page sem injetar estilo global na aplicação.
41
+
42
+ | Comando | Gera | Usa como base |
43
+ |---|---|---|
44
+ | `ng generate semmet-angular:block hero` | Seção hero semântica | Estrutura de seção |
45
+ | `ng generate semmet-angular:block section-card` | Seção de cards | `card` |
46
+ | `ng generate semmet-angular:block section-faq` | Seção de FAQ | `accordion` |
47
+ | `ng generate semmet-angular:block section-pricing` | Seção de preços | `card` |
48
+ | `ng generate semmet-angular:block section-stats` | Seção de métricas | Estrutura de seção |
49
+ | `ng generate semmet-angular:block section-table` | Seção com tabela | `table` |
50
+ | `ng generate semmet-angular:block section-form` | Seção com formulário | `form` |
51
+ | `ng generate semmet-angular:block section-tabs` | Seção com abas | `tabs` |
52
+ | `ng generate semmet-angular:block section-list-group` | Seção com lista de ações | `list-group` |
53
+ | `ng generate semmet-angular:block section-alert` | Seção com alerta | `alert` |
54
+ | `ng generate semmet-angular:block section-progress` | Seção com progresso | `progress-bar` |
55
+ | `ng generate semmet-angular:block section-carousel` | Seção com carousel | `carousel` |
56
+ | `ng generate semmet-angular:block header-navbar` | Header com navegação | `navbar` |
57
+ | `ng generate semmet-angular:block footer-navigation` | Footer com navegação | `navbar` |
58
+ | `ng generate semmet-angular:block command-list` | Seção de comandos | Estrutura de seção |
59
+
38
60
  ## Fluxo de Entrega
39
61
 
40
62
  Depois de rodar `ng add semmet-angular`, use:
package/README.pt-BR.md CHANGED
@@ -33,6 +33,28 @@ Use componentes isolados quando precisar de controle fino, ou compositions quand
33
33
  - **Compositions / Blocks**: seções prontas como `section-card`, `section-faq`, `section-pricing`, `section-stats`, `section-table`, `section-form`, `section-tabs`, `section-list-group`, `section-alert`, `section-progress`, `section-carousel`, `header-navbar`, `footer-navigation` e `command-list`.
34
34
  - **Delivery**: `ng add`, `ci`, `docker`, `deploy` e `verify`.
35
35
 
36
+ ## Comandos de Composição
37
+
38
+ Compositions/blocks geram seções Angular standalone usando os componentes correspondentes da própria Semmet. O CSS gerado fica local no block e usa tokens locais de espaçamento para manter ritmo de landing page sem injetar estilo global na aplicação.
39
+
40
+ | Comando | Gera | Usa como base |
41
+ |---|---|---|
42
+ | `ng generate semmet-angular:block hero` | Seção hero semântica | Estrutura de seção |
43
+ | `ng generate semmet-angular:block section-card` | Seção de cards | `card` |
44
+ | `ng generate semmet-angular:block section-faq` | Seção de FAQ | `accordion` |
45
+ | `ng generate semmet-angular:block section-pricing` | Seção de preços | `card` |
46
+ | `ng generate semmet-angular:block section-stats` | Seção de métricas | Estrutura de seção |
47
+ | `ng generate semmet-angular:block section-table` | Seção com tabela | `table` |
48
+ | `ng generate semmet-angular:block section-form` | Seção com formulário | `form` |
49
+ | `ng generate semmet-angular:block section-tabs` | Seção com abas | `tabs` |
50
+ | `ng generate semmet-angular:block section-list-group` | Seção com lista de ações | `list-group` |
51
+ | `ng generate semmet-angular:block section-alert` | Seção com alerta | `alert` |
52
+ | `ng generate semmet-angular:block section-progress` | Seção com progresso | `progress-bar` |
53
+ | `ng generate semmet-angular:block section-carousel` | Seção com carousel | `carousel` |
54
+ | `ng generate semmet-angular:block header-navbar` | Header com navegação | `navbar` |
55
+ | `ng generate semmet-angular:block footer-navigation` | Footer com navegação | `navbar` |
56
+ | `ng generate semmet-angular:block command-list` | Seção de comandos | Estrutura de seção |
57
+
36
58
  ## Fluxo de Entrega
37
59
 
38
60
  Depois de rodar `ng add semmet-angular`, use:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semmet-angular",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "description": "Accessible UI delivery dev kit in Angular: schematics that generate components, compositions, tests, and delivery scaffolds as native editable Angular code.",
5
5
  "publisher": "danilodevsilva",
6
6
  "license": "MIT",
@@ -5,6 +5,9 @@
5
5
  --semmet-color-on-surface: #18181b;
6
6
  --semmet-color-on-surface-variant: #52525b;
7
7
  --semmet-radius-md: 12px;
8
+ --semmet-space-2xs: 8px;
9
+ --semmet-space-xs: 16px;
10
+ --semmet-space-sm: 24px;
8
11
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
9
12
 
10
13
  display: block;
@@ -29,9 +32,9 @@ h3:not(:first-of-type) {
29
32
  button {
30
33
  display: flex;
31
34
  align-items: center;
32
- gap: 1rem;
35
+ gap: var(--semmet-space-xs);
33
36
  width: 100%;
34
- padding: 1rem 1rem;
37
+ padding: var(--semmet-space-xs) var(--semmet-space-sm);
35
38
  font: inherit;
36
39
  font-weight: 500;
37
40
  color: inherit;
@@ -68,6 +71,6 @@ button[aria-expanded='true']::after {
68
71
  }
69
72
 
70
73
  [role='region'] {
71
- padding: 0 1rem 1rem;
74
+ padding: 0 var(--semmet-space-sm) var(--semmet-space-sm);
72
75
  color: var(--semmet-color-on-surface-variant);
73
76
  }
@@ -2,6 +2,9 @@
2
2
  --semmet-color-primary: #18181b;
3
3
  --semmet-color-on-primary: #ffffff;
4
4
  --semmet-radius-sm: 8px;
5
+ --semmet-space-3xs: 4px;
6
+ --semmet-space-2xs: 8px;
7
+ --semmet-space-xs: 16px;
5
8
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
6
9
 
7
10
  display: block;
@@ -13,8 +16,8 @@
13
16
  display: flex;
14
17
  align-items: center;
15
18
  justify-content: space-between;
16
- gap: 1rem;
17
- padding: 1rem 1rem;
19
+ gap: var(--semmet-space-xs);
20
+ padding: var(--semmet-space-xs);
18
21
  color: var(--semmet-color-on-primary);
19
22
  background: var(--semmet-color-primary);
20
23
  border-radius: var(--semmet-radius-sm);
@@ -29,7 +32,7 @@ button {
29
32
  border: none;
30
33
  cursor: pointer;
31
34
  border-radius: 4px;
32
- padding: 0.25rem 0.5rem;
35
+ padding: var(--semmet-space-3xs) var(--semmet-space-2xs);
33
36
  transition: background-color var(--semmet-motion);
34
37
  }
35
38
 
@@ -6,6 +6,10 @@
6
6
  --semmet-color-on-surface-variant: #52525b;
7
7
  --semmet-color-scrim: rgba(20, 24, 23, 0.45);
8
8
  --semmet-radius-lg: 20px;
9
+ --semmet-space-2xs: 8px;
10
+ --semmet-space-xs: 16px;
11
+ --semmet-space-sm: 24px;
12
+ --semmet-target-md: 40px;
9
13
  --semmet-elevation-3: 0 8px 24px rgba(20, 24, 23, 0.18), 0 2px 8px rgba(20, 24, 23, 0.1);
10
14
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
11
15
 
@@ -21,7 +25,8 @@ button {
21
25
  background: none;
22
26
  border: none;
23
27
  border-radius: 8px;
24
- padding: 0.5rem 1rem;
28
+ min-height: var(--semmet-target-md);
29
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
25
30
  cursor: pointer;
26
31
  transition: background-color var(--semmet-motion);
27
32
  }
@@ -38,7 +43,7 @@ button:focus-visible {
38
43
  [role='alertdialog'] button:last-of-type {
39
44
  color: var(--semmet-color-on-primary);
40
45
  background: var(--semmet-color-primary);
41
- margin-left: 0.5rem;
46
+ margin-left: var(--semmet-space-2xs);
42
47
  }
43
48
 
44
49
  [role='alertdialog'] button:last-of-type:hover {
@@ -58,7 +63,7 @@ button:focus-visible {
58
63
  transform: translate(-50%, -50%);
59
64
  min-width: 22rem;
60
65
  max-width: 90vw;
61
- padding: 1.5rem;
66
+ padding: var(--semmet-space-sm);
62
67
  border-radius: var(--semmet-radius-lg);
63
68
  background: var(--semmet-color-surface);
64
69
  color: var(--semmet-color-on-surface);
@@ -71,12 +76,12 @@ button:focus-visible {
71
76
  }
72
77
 
73
78
  [role='alertdialog'] h2 {
74
- margin: 0 0 1rem;
79
+ margin: 0 0 var(--semmet-space-xs);
75
80
  font-size: 1.25rem;
76
81
  font-weight: 500;
77
82
  }
78
83
 
79
84
  [role='alertdialog'] > div {
80
- margin-bottom: 1.5rem;
85
+ margin-bottom: var(--semmet-space-sm);
81
86
  color: var(--semmet-color-on-surface-variant);
82
87
  }
@@ -13,6 +13,9 @@
13
13
  --semmet-color-on-info: #ffffff;
14
14
  --semmet-radius-full: 999px;
15
15
  --semmet-radius-sm: 6px;
16
+ --semmet-space-3xs: 4px;
17
+ --semmet-space-2xs: 8px;
18
+ --semmet-target-sm: 32px;
16
19
 
17
20
  display: inline-block;
18
21
  font-family: Roboto, system-ui, -apple-system, 'Segoe UI', sans-serif;
@@ -22,7 +25,7 @@
22
25
  display: inline-flex;
23
26
  align-items: center;
24
27
  justify-content: center;
25
- gap: 0.5rem;
28
+ gap: var(--semmet-space-2xs);
26
29
  border-radius: var(--semmet-radius-sm);
27
30
  font-weight: 700;
28
31
  line-height: 1;
@@ -32,19 +35,19 @@
32
35
 
33
36
  .semmet-badge--sm {
34
37
  min-height: 1.25rem;
35
- padding: 0.25rem 0.5rem;
38
+ padding: var(--semmet-space-3xs) var(--semmet-space-2xs);
36
39
  font-size: 0.6875rem;
37
40
  }
38
41
 
39
42
  .semmet-badge--md {
40
43
  min-height: 1.5rem;
41
- padding: 0.5rem 0.5rem;
44
+ padding: var(--semmet-space-2xs);
42
45
  font-size: 0.75rem;
43
46
  }
44
47
 
45
48
  .semmet-badge--lg {
46
49
  min-height: 1.75rem;
47
- padding: 0.5rem 0.5rem;
50
+ padding: var(--semmet-space-2xs);
48
51
  font-size: 0.8125rem;
49
52
  }
50
53
 
@@ -54,7 +57,7 @@
54
57
 
55
58
  .semmet-badge--dot {
56
59
  min-width: auto;
57
- padding-inline-start: 0.5rem;
60
+ padding-inline-start: var(--semmet-space-2xs);
58
61
  }
59
62
 
60
63
  .semmet-badge--dot:has(.semmet-badge__dot):not(:has(.semmet-badge__label)) {
@@ -2,6 +2,7 @@
2
2
  --semmet-color-primary: #18181b;
3
3
  --semmet-color-on-surface: #18181b;
4
4
  --semmet-color-on-surface-variant: #52525b;
5
+ --semmet-space-2xs: 8px;
5
6
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
6
7
 
7
8
  display: block;
@@ -13,7 +14,7 @@ ol {
13
14
  display: flex;
14
15
  flex-wrap: wrap;
15
16
  align-items: center;
16
- gap: 0.5rem;
17
+ gap: var(--semmet-space-2xs);
17
18
  margin: 0;
18
19
  padding: 0;
19
20
  list-style: none;
@@ -22,7 +23,7 @@ ol {
22
23
  li {
23
24
  display: flex;
24
25
  align-items: center;
25
- gap: 0.5rem;
26
+ gap: var(--semmet-space-2xs);
26
27
  color: var(--semmet-color-on-surface-variant);
27
28
  }
28
29
 
@@ -8,6 +8,12 @@
8
8
  --semmet-color-on-surface: #18181b;
9
9
  --semmet-color-on-surface-variant: #52525b;
10
10
  --semmet-radius-sm: 8px;
11
+ --semmet-space-2xs: 8px;
12
+ --semmet-space-xs: 16px;
13
+ --semmet-space-sm: 24px;
14
+ --semmet-target-sm: 32px;
15
+ --semmet-target-md: 40px;
16
+ --semmet-target-lg: 48px;
11
17
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
12
18
 
13
19
  display: inline-block;
@@ -19,7 +25,7 @@
19
25
  display: inline-flex;
20
26
  align-items: center;
21
27
  justify-content: center;
22
- gap: 0.5rem;
28
+ gap: var(--semmet-space-2xs);
23
29
  min-width: 2.75rem;
24
30
  border: 1px solid transparent;
25
31
  border-radius: var(--semmet-radius-sm);
@@ -38,19 +44,19 @@
38
44
  }
39
45
 
40
46
  .semmet-button--sm {
41
- min-height: 2rem;
42
- padding: 0.5rem 1rem;
47
+ min-height: var(--semmet-target-sm);
48
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
43
49
  font-size: 0.875rem;
44
50
  }
45
51
 
46
52
  .semmet-button--md {
47
- min-height: 2.5rem;
48
- padding: 0.5rem 1rem;
53
+ min-height: var(--semmet-target-md);
54
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
49
55
  }
50
56
 
51
57
  .semmet-button--lg {
52
- min-height: 3rem;
53
- padding: 1rem 1.5rem;
58
+ min-height: var(--semmet-target-lg);
59
+ padding: var(--semmet-space-xs) var(--semmet-space-sm);
54
60
  font-size: 1rem;
55
61
  }
56
62
 
@@ -6,6 +6,12 @@
6
6
  --semmet-color-outline: #d4d4d8;
7
7
  --semmet-color-on-surface: #27272a;
8
8
  --semmet-radius-sm: 8px;
9
+ --semmet-space-2xs: 8px;
10
+ --semmet-space-xs: 16px;
11
+ --semmet-space-sm: 24px;
12
+ --semmet-target-sm: 32px;
13
+ --semmet-target-md: 40px;
14
+ --semmet-target-lg: 48px;
9
15
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
10
16
 
11
17
  display: inline-block;
@@ -55,19 +61,19 @@
55
61
  }
56
62
 
57
63
  .semmet-button-group--sm .semmet-button-group__button {
58
- min-height: 2rem;
59
- padding: 0.5rem 1rem;
64
+ min-height: var(--semmet-target-sm);
65
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
60
66
  font-size: 0.875rem;
61
67
  }
62
68
 
63
69
  .semmet-button-group--md .semmet-button-group__button {
64
- min-height: 2.5rem;
65
- padding: 0.5rem 1rem;
70
+ min-height: var(--semmet-target-md);
71
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
66
72
  }
67
73
 
68
74
  .semmet-button-group--lg .semmet-button-group__button {
69
- min-height: 3rem;
70
- padding: 1rem 1.5rem;
75
+ min-height: var(--semmet-target-lg);
76
+ padding: var(--semmet-space-xs) var(--semmet-space-sm);
71
77
  font-size: 1rem;
72
78
  }
73
79
 
@@ -5,6 +5,9 @@
5
5
  --semmet-color-on-surface: #18181b;
6
6
  --semmet-color-on-surface-variant: #52525b;
7
7
  --semmet-radius-md: 12px;
8
+ --semmet-space-2xs: 8px;
9
+ --semmet-space-xs: 16px;
10
+ --semmet-space-sm: 24px;
8
11
 
9
12
  display: block;
10
13
  font-family: Roboto, system-ui, -apple-system, 'Segoe UI', sans-serif;
@@ -19,7 +22,7 @@ article {
19
22
  }
20
23
 
21
24
  h3 {
22
- margin: 1.5rem 1.5rem 0.5rem;
25
+ margin: var(--semmet-space-sm) var(--semmet-space-sm) var(--semmet-space-2xs);
23
26
  font-size: 1.0625rem;
24
27
  font-weight: 500;
25
28
  color: var(--semmet-color-on-surface);
@@ -36,15 +39,15 @@ p {
36
39
  }
37
40
 
38
41
  .semmet-card__description {
39
- margin: 0 1.5rem 1rem;
42
+ margin: 0 var(--semmet-space-sm) var(--semmet-space-xs);
40
43
  color: var(--semmet-color-on-surface-variant);
41
44
  }
42
45
 
43
46
  .semmet-card__actions {
44
47
  display: flex;
45
48
  flex-wrap: wrap;
46
- gap: 1rem;
47
- margin: 0 1.5rem 1.5rem;
49
+ gap: var(--semmet-space-xs);
50
+ margin: 0 var(--semmet-space-sm) var(--semmet-space-sm);
48
51
  }
49
52
 
50
53
  a {
@@ -5,6 +5,9 @@
5
5
  --semmet-color-outline: #d4d4d8;
6
6
  --semmet-color-on-surface: #18181b;
7
7
  --semmet-radius-md: 12px;
8
+ --semmet-space-xs: 16px;
9
+ --semmet-space-sm: 24px;
10
+ --semmet-target-md: 40px;
8
11
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
9
12
 
10
13
  display: block;
@@ -16,7 +19,7 @@ section {
16
19
  position: relative;
17
20
  display: flex;
18
21
  align-items: center;
19
- gap: 1rem;
22
+ gap: var(--semmet-space-xs);
20
23
  }
21
24
 
22
25
  [aria-live] {
@@ -25,7 +28,7 @@ section {
25
28
  display: flex;
26
29
  align-items: center;
27
30
  justify-content: center;
28
- padding: 1.5rem;
31
+ padding: var(--semmet-space-sm);
29
32
  color: var(--semmet-color-on-surface);
30
33
  background: var(--semmet-color-surface);
31
34
  border: 1px solid var(--semmet-color-outline);
@@ -35,8 +38,8 @@ section {
35
38
 
36
39
  button {
37
40
  flex-shrink: 0;
38
- width: 2.25rem;
39
- height: 2.25rem;
41
+ width: var(--semmet-target-md);
42
+ height: var(--semmet-target-md);
40
43
  font-size: 1.25rem;
41
44
  color: var(--semmet-color-on-primary);
42
45
  background: var(--semmet-color-primary);
@@ -3,6 +3,8 @@
3
3
  --semmet-color-on-primary: #ffffff;
4
4
  --semmet-color-outline: #71717a;
5
5
  --semmet-color-on-surface: #18181b;
6
+ --semmet-space-sm: 24px;
7
+ --semmet-target-sm: 32px;
6
8
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
7
9
 
8
10
  display: inline-block;
@@ -14,8 +16,8 @@
14
16
  position: relative;
15
17
  display: inline-flex;
16
18
  align-items: center;
17
- padding-left: 1.5rem;
18
- min-height: 1.125rem;
19
+ padding-left: var(--semmet-space-sm);
20
+ min-height: var(--semmet-target-sm);
19
21
  color: var(--semmet-color-on-surface);
20
22
  cursor: pointer;
21
23
  user-select: none;
@@ -4,6 +4,9 @@
4
4
  --semmet-color-on-inverse: #ffffff;
5
5
  --semmet-color-hover: #f4f4f5;
6
6
  --semmet-radius-full: 999px;
7
+ --semmet-target-sm: 32px;
8
+ --semmet-target-md: 40px;
9
+ --semmet-target-lg: 48px;
7
10
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
8
11
 
9
12
  display: inline-block;
@@ -28,18 +31,18 @@
28
31
  }
29
32
 
30
33
  .semmet-close-button--sm {
31
- width: 2rem;
32
- height: 2rem;
34
+ width: var(--semmet-target-sm);
35
+ height: var(--semmet-target-sm);
33
36
  }
34
37
 
35
38
  .semmet-close-button--md {
36
- width: 2.5rem;
37
- height: 2.5rem;
39
+ width: var(--semmet-target-md);
40
+ height: var(--semmet-target-md);
38
41
  }
39
42
 
40
43
  .semmet-close-button--lg {
41
- width: 3rem;
42
- height: 3rem;
44
+ width: var(--semmet-target-lg);
45
+ height: var(--semmet-target-lg);
43
46
  }
44
47
 
45
48
  .semmet-close-button--default:hover:not(:disabled),
@@ -6,6 +6,10 @@
6
6
  --semmet-color-on-surface-variant: #52525b;
7
7
  --semmet-radius-sm: 8px;
8
8
  --semmet-radius-md: 12px;
9
+ --semmet-space-3xs: 4px;
10
+ --semmet-space-2xs: 8px;
11
+ --semmet-space-xs: 16px;
12
+ --semmet-target-md: 40px;
9
13
  --semmet-elevation-3: 0 8px 24px rgba(20, 24, 23, 0.18), 0 2px 8px rgba(20, 24, 23, 0.1);
10
14
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
11
15
 
@@ -17,7 +21,7 @@
17
21
 
18
22
  label {
19
23
  display: block;
20
- margin-bottom: 0.5rem;
24
+ margin-bottom: var(--semmet-space-2xs);
21
25
  font-weight: 500;
22
26
  color: var(--semmet-color-on-surface);
23
27
  }
@@ -25,12 +29,13 @@ label {
25
29
  input {
26
30
  width: 100%;
27
31
  min-width: 14rem;
32
+ min-height: var(--semmet-target-md);
28
33
  font: inherit;
29
34
  color: var(--semmet-color-on-surface);
30
35
  background: var(--semmet-color-surface);
31
36
  border: 1px solid var(--semmet-color-outline);
32
37
  border-radius: var(--semmet-radius-sm);
33
- padding: 0.5rem 1rem;
38
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
34
39
  box-sizing: border-box;
35
40
  transition: border-color var(--semmet-motion);
36
41
  }
@@ -47,8 +52,8 @@ ul {
47
52
  top: 100%;
48
53
  left: 0;
49
54
  right: 0;
50
- margin: 0.25rem 0 0;
51
- padding: 0.5rem;
55
+ margin: var(--semmet-space-3xs) 0 0;
56
+ padding: var(--semmet-space-2xs);
52
57
  list-style: none;
53
58
  background: var(--semmet-color-surface);
54
59
  border-radius: var(--semmet-radius-md);
@@ -58,7 +63,8 @@ ul {
58
63
  }
59
64
 
60
65
  [role='option'] {
61
- padding: 0.5rem 1rem;
66
+ min-height: var(--semmet-target-md);
67
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
62
68
  border-radius: 6px;
63
69
  color: var(--semmet-color-on-surface);
64
70
  cursor: pointer;
@@ -5,6 +5,10 @@
5
5
  --semmet-color-on-surface-variant: #52525b;
6
6
  --semmet-color-scrim: rgba(20, 24, 23, 0.45);
7
7
  --semmet-radius-lg: 20px;
8
+ --semmet-space-2xs: 8px;
9
+ --semmet-space-xs: 16px;
10
+ --semmet-space-sm: 24px;
11
+ --semmet-target-md: 40px;
8
12
  --semmet-elevation-3: 0 8px 24px rgba(20, 24, 23, 0.18), 0 2px 8px rgba(20, 24, 23, 0.1);
9
13
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
10
14
 
@@ -20,7 +24,8 @@ button {
20
24
  background: none;
21
25
  border: none;
22
26
  border-radius: 8px;
23
- padding: 0.5rem 1rem;
27
+ min-height: var(--semmet-target-md);
28
+ padding: var(--semmet-space-2xs) var(--semmet-space-xs);
24
29
  cursor: pointer;
25
30
  transition: background-color var(--semmet-motion);
26
31
  }
@@ -47,7 +52,7 @@ button:focus-visible {
47
52
  transform: translate(-50%, -50%);
48
53
  min-width: 22rem;
49
54
  max-width: 90vw;
50
- padding: 1.5rem;
55
+ padding: var(--semmet-space-sm);
51
56
  border-radius: var(--semmet-radius-lg);
52
57
  background: var(--semmet-color-surface);
53
58
  color: var(--semmet-color-on-surface);
@@ -60,12 +65,12 @@ button:focus-visible {
60
65
  }
61
66
 
62
67
  [role='dialog'] h2 {
63
- margin: 0 0 1rem;
68
+ margin: 0 0 var(--semmet-space-xs);
64
69
  font-size: 1.25rem;
65
70
  font-weight: 500;
66
71
  }
67
72
 
68
73
  [role='dialog'] > div {
69
- margin-bottom: 1.5rem;
74
+ margin-bottom: var(--semmet-space-sm);
70
75
  color: var(--semmet-color-on-surface-variant);
71
76
  }
@@ -5,6 +5,8 @@
5
5
  --semmet-color-on-surface: #18181b;
6
6
  --semmet-color-on-surface-variant: #52525b;
7
7
  --semmet-radius-md: 12px;
8
+ --semmet-space-xs: 16px;
9
+ --semmet-space-sm: 24px;
8
10
  --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
9
11
 
10
12
  display: block;
@@ -21,9 +23,9 @@
21
23
  button {
22
24
  display: flex;
23
25
  align-items: center;
24
- gap: 1rem;
26
+ gap: var(--semmet-space-xs);
25
27
  width: 100%;
26
- padding: 1rem 1rem;
28
+ padding: var(--semmet-space-xs) var(--semmet-space-sm);
27
29
  font: inherit;
28
30
  font-weight: 500;
29
31
  color: inherit;
@@ -60,6 +62,6 @@ button[aria-expanded='true']::after {
60
62
  }
61
63
 
62
64
  div {
63
- padding: 0 1rem 1rem;
65
+ padding: 0 var(--semmet-space-sm) var(--semmet-space-sm);
64
66
  color: var(--semmet-color-on-surface-variant);
65
67
  }