@uncinq/css-components 0.3.0 → 1.0.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 (32) hide show
  1. package/css/components/alert.css +67 -0
  2. package/css/components/badge.css +63 -0
  3. package/css/components/banner.css +54 -0
  4. package/css/{component → components}/breadcrumb.css +3 -3
  5. package/css/{component → components}/btn-close.css +7 -7
  6. package/css/components/btn-filter.css +22 -0
  7. package/css/{component → components}/btn-menu.css +8 -7
  8. package/css/components/btn-search.css +22 -0
  9. package/css/components/btn-share.css +22 -0
  10. package/css/components/btn-toc.css +22 -0
  11. package/css/{component → components}/button.css +47 -35
  12. package/css/components/card.css +87 -0
  13. package/css/{component → components}/drawer.css +15 -8
  14. package/css/{component → components}/dropdown.css +17 -8
  15. package/css/{component → components}/embed.css +1 -1
  16. package/css/components/form.css +24 -0
  17. package/css/components/items.css +18 -0
  18. package/css/{component → components}/list.css +2 -9
  19. package/css/{component → components}/map.css +2 -2
  20. package/css/{component → components}/media.css +2 -2
  21. package/css/{component → components}/nav-accessibility.css +7 -4
  22. package/css/components/nav-title.css +13 -0
  23. package/css/{component → components}/nav.css +10 -5
  24. package/css/{component → components}/pagination.css +5 -5
  25. package/css/index.css +24 -19
  26. package/package.json +2 -2
  27. package/css/component/alert.css +0 -41
  28. package/css/component/badge.css +0 -23
  29. package/css/component/banner.css +0 -29
  30. package/css/component/btn-search.css +0 -44
  31. package/css/component/card.css +0 -54
  32. package/css/component/nav-title.css +0 -12
@@ -0,0 +1,67 @@
1
+ /* components/alert.css */
2
+ @layer components {
3
+ .alert {
4
+ --color-link-default: var(--alert-color-text);
5
+ background-color: var(--alert-color-background);
6
+ border: var(--alert-border-width) var(--alert-border-style) var(--alert-color-border);
7
+ border-radius: var(--alert-border-radius);
8
+ color: var(--alert-color-text);
9
+ display: flex;
10
+ flex-direction: column;
11
+ font-size: var(--alert-font-size);
12
+ gap: var(--alert-gap);
13
+ margin: var(--alert-margin);
14
+ padding: var(--alert-padding);
15
+
16
+ > * {
17
+ margin: 0;
18
+ }
19
+
20
+ .alert-heading {
21
+ align-items: center;
22
+ color: var(--alert-color-text);
23
+ display: flex;
24
+ font-weight: var(--font-weight-semibold);
25
+ gap: var(--alert-gap);
26
+ }
27
+
28
+ &:has(.icon:first-child):not(:has(.alert-heading)) {
29
+ flex-direction: row;
30
+ align-items: flex-start;
31
+ }
32
+ }
33
+
34
+ /* Variants */
35
+ .alert-danger {
36
+ --alert-color-background: var(--color-danger-muted);
37
+ --alert-color-text: var(--color-danger-strong);
38
+ }
39
+ .alert-dark {
40
+ --alert-color-background: var(--color-dark-muted);
41
+ --alert-color-text: var(--color-dark-strong);
42
+ }
43
+ .alert-info {
44
+ --alert-color-background: var(--color-info-muted);
45
+ --alert-color-text: var(--color-info-strong);
46
+ }
47
+ .alert-light {
48
+ --alert-color-background: var(--color-light-muted);
49
+ --alert-color-text: var(--color-light-strong);
50
+ }
51
+ .alert-primary {
52
+ --alert-color-background: var(--color-primary-muted);
53
+ --alert-color-text: var(--color-primary-strong);
54
+ }
55
+ .alert-secondary {
56
+ --alert-color-background: var(--color-secondary-muted);
57
+ --alert-color-text: var(--color-secondary-strong);
58
+ }
59
+ .alert-success {
60
+ --alert-color-background: var(--color-success-muted);
61
+ --alert-color-text: var(--color-success-strong);
62
+ }
63
+ .alert-warning {
64
+ --alert-color-background: var(--color-warning-muted);
65
+ --alert-color-text: var(--color-warning-strong);
66
+ }
67
+ }
@@ -0,0 +1,63 @@
1
+ /* components/badge.css */
2
+ @layer components {
3
+ .badge {
4
+ background-color: var(--badge-color-background);
5
+ border: var(--badge-border-width) var(--badge-border-style) var(--badge-color-border);
6
+ border-radius: var(--badge-border-radius);
7
+ color: var(--badge-color-text);
8
+ display: inline-flex;
9
+ font-size: var(--badge-font-size);
10
+ font-weight: var(--badge-font-weight);
11
+ padding: var(--badge-padding-block) var(--badge-padding-inline);
12
+ text-decoration: none;
13
+ }
14
+
15
+ @media (hover: hover) and (pointer: fine) {
16
+ a.badge:hover {
17
+ background-color: var(--badge-color-background-hover, var(--badge-color-background));
18
+ color: var(--badge-color-text-hover, var(--badge-color-text));
19
+ }
20
+ }
21
+
22
+ /* Variants */
23
+ .badge-danger {
24
+ --badge-color-background: var(--color-danger);
25
+ --badge-color-background-hover: var(--color-danger-strong);
26
+ --badge-color-text: var(--color-text-on-danger);
27
+ }
28
+ .badge-dark {
29
+ --badge-color-background: var(--color-dark);
30
+ --badge-color-background-hover: var(--color-dark-strong);
31
+ --badge-color-text: var(--color-text-on-dark);
32
+ }
33
+ .badge-info {
34
+ --badge-color-background: var(--color-info);
35
+ --badge-color-background-hover: var(--color-info-strong);
36
+ --badge-color-text: var(--color-text-on-info);
37
+ }
38
+ .badge-light {
39
+ --badge-color-background: var(--color-light);
40
+ --badge-color-background-hover: var(--color-light-strong);
41
+ --badge-color-text: var(--color-text-on-light);
42
+ }
43
+ .badge-primary {
44
+ --badge-color-background: var(--color-primary);
45
+ --badge-color-background-hover: var(--color-primary-strong);
46
+ --badge-color-text: var(--color-text-on-primary);
47
+ }
48
+ .badge-secondary {
49
+ --badge-color-background: var(--color-secondary);
50
+ --badge-color-background-hover: var(--color-secondary-strong);
51
+ --badge-color-text: var(--color-text-on-secondary);
52
+ }
53
+ .badge-success {
54
+ --badge-color-background: var(--color-success);
55
+ --badge-color-background-hover: var(--color-success-strong);
56
+ --badge-color-text: var(--color-text-on-success);
57
+ }
58
+ .badge-warning {
59
+ --badge-color-background: var(--color-warning);
60
+ --badge-color-background-hover: var(--color-warning-strong);
61
+ --badge-color-text: var(--color-text-on-warning);
62
+ }
63
+ }
@@ -0,0 +1,54 @@
1
+ /* components/banner.css */
2
+ @layer components {
3
+ .banner {
4
+ --color-link: var(--alert-color-text);
5
+ background-color: var(--alert-color-background);
6
+ border-radius: var(--alert-border-radius);
7
+ color: var(--alert-color-text);
8
+ display: flex;
9
+ flex-direction: column;
10
+ font-size: var(--alert-font-size);
11
+ gap: var(--alert-gap);
12
+ padding: var(--alert-padding);
13
+ padding-inline: 0;
14
+ text-align: center;
15
+
16
+ p {
17
+ margin: 0 auto;
18
+ }
19
+ }
20
+
21
+ /* Variants */
22
+ .banner-danger {
23
+ --alert-color-background: var(--color-danger-muted);
24
+ --alert-color-text: var(--color-danger-strong);
25
+ }
26
+ .banner-dark {
27
+ --alert-color-background: var(--color-dark-muted);
28
+ --alert-color-text: var(--color-dark-strong);
29
+ }
30
+ .banner-info {
31
+ --alert-color-background: var(--color-info-muted);
32
+ --alert-color-text: var(--color-info-strong);
33
+ }
34
+ .banner-light {
35
+ --alert-color-background: var(--color-light-muted);
36
+ --alert-color-text: var(--color-light-strong);
37
+ }
38
+ .banner-primary {
39
+ --alert-color-background: var(--color-primary-muted);
40
+ --alert-color-text: var(--color-primary-strong);
41
+ }
42
+ .banner-secondary {
43
+ --alert-color-background: var(--color-secondary-muted);
44
+ --alert-color-text: var(--color-secondary-strong);
45
+ }
46
+ .banner-success {
47
+ --alert-color-background: var(--color-success-muted);
48
+ --alert-color-text: var(--color-success-strong);
49
+ }
50
+ .banner-warning {
51
+ --alert-color-background: var(--color-warning-muted);
52
+ --alert-color-text: var(--color-warning-strong);
53
+ }
54
+ }
@@ -1,9 +1,9 @@
1
1
  /* components/breadcrumb.css */
2
2
  @layer components {
3
3
  .breadcrumb-wrapper {
4
- border-bottom: var(--breadcrumb-border-width) solid var(--breadcrumb-color-border);
5
- border-top: var(--breadcrumb-border-width) solid var(--breadcrumb-color-border);
6
- padding-block: var(--breadcrumb-padding);
4
+ border-block-end: var(--breadcrumb-border-width) var(--breadcrumb-border-style) var(--breadcrumb-color-border);
5
+ border-block-start: var(--breadcrumb-border-width) var(--breadcrumb-border-style) var(--breadcrumb-color-border);
6
+ padding-block: var(--breadcrumb-padding-block);
7
7
 
8
8
  ol {
9
9
  display: flex;
@@ -1,19 +1,19 @@
1
- /* component/btn-close.css */
1
+ /* components/btn-close.css */
2
2
  /* Close button */
3
3
  @layer components {
4
4
  .btn-close {
5
5
  align-items: center;
6
6
  appearance: none;
7
- background-color: var(--btn-close-color-bg, var(--btn-color-bg));
8
- border: var(--btn-close-border-width, var(--btn-border-width)) var(--btn-close-border-style, var(--btn-border-style)) var(--btn-close-color-border, var(--btn-color-border));
7
+ background-color: var(--btn-close-color-background, var(--btn-control-color-background));
8
+ border: var(--btn-close-border-width, var(--btn-border-width)) var(--btn-close-border-style, var(--btn-border-style)) var(--btn-close-color-border, var(--btn-control-color-border));
9
9
  border-radius: var(--btn-close-border-radius, var(--btn-border-radius));
10
- color: var(--btn-close-color-text, var(--btn-color-text));
10
+ color: var(--btn-close-color-text, var(--btn-control-color-text));
11
11
  cursor: pointer;
12
12
  display: inline-flex;
13
13
  font-size: var(--btn-close-font-size, var(--btn-font-size));
14
14
  font-weight: var(--btn-close-font-weight, var(--btn-font-weight));
15
15
  gap: var(--btn-close-gap, var(--btn-gap));
16
- padding: var(--btn-close-padding-y, var(--btn-padding-y)) var(--btn-close-padding-x, var(--btn-padding-x));
16
+ padding: var(--btn-close-padding-block, var(--btn-padding-block)) var(--btn-close-padding-inline, var(--btn-padding-inline));
17
17
  text-decoration-color: var(--btn-close-color-text-decoration, var(--btn-color-text-decoration));
18
18
  text-decoration-line: var(--btn-text-decoration-line);
19
19
  text-decoration-thickness: var(--text-decoration-thickness);
@@ -31,8 +31,8 @@
31
31
 
32
32
  @media (hover: hover) and (pointer: fine) {
33
33
  &:hover {
34
- background-color: var(--btn-close-color-bg-hover, var(--btn-color-bg-hover));
35
- color: var(--btn-close-color-text-hover, var(--btn-color-text-hover));
34
+ background-color: var(--btn-close-color-background-hover, var(--btn-control-color-background-hover));
35
+ color: var(--btn-close-color-text-hover, var(--btn-control-color-text-hover));
36
36
  text-decoration-color: var(--btn-close-color-text-decoration-hover, var(--btn-color-text-decoration-hover));
37
37
  }
38
38
  }
@@ -0,0 +1,22 @@
1
+ /* components/btn-filter.css */
2
+ /* Filters toggle button — requires .btn base class */
3
+ @layer components {
4
+ .btn-filter {
5
+ /* Scope --btn-color-* to control values, allow per-button overrides */
6
+ --btn-color-background: var(--btn-filter-color-background, var(--btn-control-color-background));
7
+ --btn-color-background-hover: var(--btn-filter-color-background-hover, var(--btn-control-color-background-hover));
8
+ --btn-color-border: var(--btn-filter-color-border, var(--btn-control-color-border));
9
+ --btn-color-border-hover: var(--btn-filter-color-border-hover, var(--btn-control-color-border-hover));
10
+ --btn-color-text: var(--btn-filter-color-text, var(--btn-control-color-text));
11
+ --btn-color-text-hover: var(--btn-filter-color-text-hover, var(--btn-control-color-text-hover));
12
+
13
+ &::before {
14
+ background-color: currentColor;
15
+ content: '';
16
+ flex-shrink: 0;
17
+ height: var(--icon-size);
18
+ mask: var(--icon-filter) center / var(--icon-size) no-repeat;
19
+ width: var(--icon-size);
20
+ }
21
+ }
22
+ }
@@ -1,19 +1,20 @@
1
- /* component/btn-menu.css */
1
+ /* components/btn-menu.css */
2
2
  /* Menu toggle button */
3
3
  @layer components {
4
4
  .btn-menu {
5
5
  align-items: center;
6
6
  appearance: none;
7
- background-color: var(--btn-menu-color-bg, var(--btn-color-bg));
8
- border: var(--btn-menu-border-width, var(--btn-border-width)) var(--btn-menu-border-style, var(--btn-border-style)) var(--btn-menu-color-border, var(--btn-color-border));
7
+ background-color: var(--btn-menu-color-background, var(--btn-control-color-background));
8
+ border: var(--btn-menu-border-width, var(--btn-border-width)) var(--btn-menu-border-style, var(--btn-border-style)) var(--btn-menu-color-border, var(--btn-control-color-border));
9
9
  border-radius: var(--btn-menu-border-radius, var(--btn-border-radius));
10
- color: var(--btn-menu-color-text, var(--btn-color-text));
10
+ color: var(--btn-menu-color-text, var(--btn-control-color-text));
11
11
  cursor: pointer;
12
12
  display: inline-flex;
13
13
  font-size: var(--btn-menu-font-size, var(--btn-font-size));
14
14
  font-weight: var(--btn-menu-font-weight, var(--btn-font-weight));
15
15
  gap: var(--btn-menu-gap, var(--btn-gap));
16
- padding: var(--btn-menu-padding-y, var(--btn-padding-y)) var(--btn-menu-padding-x, var(--btn-padding-x));
16
+ padding-block: var(--btn-menu-padding-block, var(--btn-padding-block));
17
+ padding-inline: var(--btn-menu-padding-inline, var(--btn-padding-inline));
17
18
  text-decoration-color: var(--btn-menu-color-text-decoration, var(--btn-color-text-decoration));
18
19
  text-decoration-line: var(--btn-text-decoration-line);
19
20
  text-decoration-thickness: var(--text-decoration-thickness);
@@ -31,8 +32,8 @@
31
32
 
32
33
  @media (hover: hover) and (pointer: fine) {
33
34
  &:hover {
34
- background-color: var(--btn-menu-color-bg-hover, var(--btn-color-bg-hover));
35
- color: var(--btn-menu-color-text-hover, var(--btn-color-text-hover));
35
+ background-color: var(--btn-menu-color-background-hover, var(--btn-control-color-background-hover));
36
+ color: var(--btn-menu-color-text-hover, var(--btn-control-color-text-hover));
36
37
  text-decoration-color: var(--btn-menu-color-text-decoration-hover, var(--btn-color-text-decoration-hover));
37
38
  }
38
39
  }
@@ -0,0 +1,22 @@
1
+ /* components/btn-search.css */
2
+ /* Search button — requires .btn base class */
3
+ @layer components {
4
+ .btn-search {
5
+ /* Scope --btn-color-* to control values, allow per-button overrides */
6
+ --btn-color-background: var(--btn-search-color-background, var(--btn-control-color-background));
7
+ --btn-color-background-hover: var(--btn-search-color-background-hover, var(--btn-control-color-background-hover));
8
+ --btn-color-border: var(--btn-search-color-border, var(--btn-control-color-border));
9
+ --btn-color-border-hover: var(--btn-search-color-border-hover, var(--btn-control-color-border-hover));
10
+ --btn-color-text: var(--btn-search-color-text, var(--btn-control-color-text));
11
+ --btn-color-text-hover: var(--btn-search-color-text-hover, var(--btn-control-color-text-hover));
12
+
13
+ &::before {
14
+ background-color: currentColor;
15
+ content: '';
16
+ flex-shrink: 0;
17
+ height: var(--icon-size);
18
+ mask: var(--icon-search) center / var(--icon-size) no-repeat;
19
+ width: var(--icon-size);
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ /* components/btn-share.css */
2
+ /* Share button — requires .btn base class */
3
+ @layer components {
4
+ .btn-share {
5
+ /* Scope --btn-color-* to control values, allow per-button overrides */
6
+ --btn-color-background: var(--btn-share-color-background, var(--btn-control-color-background));
7
+ --btn-color-background-hover: var(--btn-share-color-background-hover, var(--btn-control-color-background-hover));
8
+ --btn-color-border: var(--btn-share-color-border, var(--btn-control-color-border));
9
+ --btn-color-border-hover: var(--btn-share-color-border-hover, var(--btn-control-color-border-hover));
10
+ --btn-color-text: var(--btn-share-color-text, var(--btn-control-color-text));
11
+ --btn-color-text-hover: var(--btn-share-color-text-hover, var(--btn-control-color-text-hover));
12
+
13
+ &::before {
14
+ background-color: currentColor;
15
+ content: '';
16
+ flex-shrink: 0;
17
+ height: var(--icon-size);
18
+ mask: var(--icon-share) center / var(--icon-size) no-repeat;
19
+ width: var(--icon-size);
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ /* components/btn-toc.css */
2
+ /* Table of contents toggle button — requires .btn base class */
3
+ @layer components {
4
+ .btn-toc {
5
+ /* Scope --btn-color-* to control values, allow per-button overrides */
6
+ --btn-color-background: var(--btn-toc-color-background, var(--btn-control-color-background));
7
+ --btn-color-background-hover: var(--btn-toc-color-background-hover, var(--btn-control-color-background-hover));
8
+ --btn-color-border: var(--btn-toc-color-border, var(--btn-control-color-border));
9
+ --btn-color-border-hover: var(--btn-toc-color-border-hover, var(--btn-control-color-border-hover));
10
+ --btn-color-text: var(--btn-toc-color-text, var(--btn-control-color-text));
11
+ --btn-color-text-hover: var(--btn-toc-color-text-hover, var(--btn-control-color-text-hover));
12
+
13
+ &::before {
14
+ background-color: currentColor;
15
+ content: '';
16
+ flex-shrink: 0;
17
+ height: var(--icon-size);
18
+ mask: var(--icon-toc) center / var(--icon-size) no-repeat;
19
+ width: var(--icon-size);
20
+ }
21
+ }
22
+ }
@@ -3,9 +3,10 @@
3
3
  .btn {
4
4
  align-items: center;
5
5
  appearance: none;
6
- background-color: var(--btn-color-bg);
6
+ background-color: var(--btn-color-background);
7
7
  border: var(--btn-border-width) var(--btn-border-style) var(--btn-color-border);
8
8
  border-radius: var(--btn-border-radius);
9
+ box-shadow: var(--btn-shadow);
9
10
  color: var(--btn-color-text);
10
11
  cursor: pointer;
11
12
  display: inline-flex;
@@ -13,7 +14,8 @@
13
14
  font-weight: var(--btn-font-weight);
14
15
  gap: var(--btn-gap);
15
16
  justify-content: center;
16
- padding: var(--btn-padding-y) var(--btn-padding-x);
17
+ padding-block: var(--btn-padding-block);
18
+ padding-inline: var(--btn-padding-inline);
17
19
  text-decoration-color: var(--btn-color-text-decoration);
18
20
  text-decoration-line: var(--btn-text-decoration-line);
19
21
  text-decoration-thickness: var(--text-decoration-thickness);
@@ -21,20 +23,21 @@
21
23
  text-underline-offset: var(--text-decoration-offset);
22
24
 
23
25
  &:focus-visible {
24
- outline: var(--focus-outline-width, 2px) solid var(--color-focus);
26
+ outline: var(--focus);
25
27
  outline-offset: var(--focus-outline-offset, 2px);
26
28
  }
27
29
 
28
30
  &:disabled,
29
31
  &[aria-disabled='true'] {
30
32
  cursor: not-allowed;
31
- opacity: 0.5;
33
+ opacity: var(--opacity-disabled);
32
34
  }
33
35
 
34
36
  @media (hover: hover) and (pointer: fine) {
35
37
  &:hover {
36
- background-color: var(--btn-color-bg-hover);
38
+ background-color: var(--btn-color-background-hover);
37
39
  border-color: var(--btn-color-border-hover);
40
+ box-shadow: var(--btn-shadow-hover);
38
41
  color: var(--btn-color-text-hover);
39
42
  text-decoration-color: var(--btn-color-text-decoration-hover);
40
43
  }
@@ -46,25 +49,34 @@
46
49
  }
47
50
 
48
51
  /* Variants */
52
+ .btn-control {
53
+ --btn-color-background: var(--btn-control-color-background);
54
+ --btn-color-background-hover: var(--btn-control-color-background-hover);
55
+ --btn-color-border: var(--btn-control-color-border);
56
+ --btn-color-border-hover: var(--btn-control-color-border-hover);
57
+ --btn-color-text: var(--btn-control-color-text);
58
+ --btn-color-text-hover: var(--btn-control-color-text-hover);
59
+ }
60
+
49
61
  .btn-danger {
50
- --btn-color-bg: var(--color-danger);
51
- --btn-color-bg-hover: var(--color-danger-strong);
62
+ --btn-color-background: var(--color-danger);
63
+ --btn-color-background-hover: var(--color-danger-strong);
52
64
  --btn-color-border: var(--color-danger);
53
65
  --btn-color-border-hover: var(--color-danger-strong);
54
66
  --btn-color-text: var(--color-text-on-danger);
55
67
  }
56
68
 
57
69
  .btn-dark {
58
- --btn-color-bg: var(--color-dark);
59
- --btn-color-bg-hover: var(--color-dark-strong);
70
+ --btn-color-background: var(--color-dark);
71
+ --btn-color-background-hover: var(--color-dark-strong);
60
72
  --btn-color-border: var(--color-dark);
61
73
  --btn-color-border-hover: var(--color-dark-strong);
62
74
  --btn-color-text: var(--color-text-on-dark);
63
75
  }
64
76
 
65
77
  .btn-ghost {
66
- --btn-color-bg: transparent;
67
- --btn-color-bg-hover: transparent;
78
+ --btn-color-background: transparent;
79
+ --btn-color-background-hover: transparent;
68
80
  --btn-color-border: transparent;
69
81
  --btn-color-border-hover: transparent;
70
82
  --btn-color-text: var(--color-text);
@@ -72,24 +84,24 @@
72
84
  }
73
85
 
74
86
  .btn-info {
75
- --btn-color-bg: var(--color-info);
76
- --btn-color-bg-hover: var(--color-info-strong);
87
+ --btn-color-background: var(--color-info);
88
+ --btn-color-background-hover: var(--color-info-strong);
77
89
  --btn-color-border: var(--color-info);
78
90
  --btn-color-border-hover: var(--color-info-strong);
79
91
  --btn-color-text: var(--color-text-on-info);
80
92
  }
81
93
 
82
94
  .btn-light {
83
- --btn-color-bg: var(--color-light);
84
- --btn-color-bg-hover: var(--color-light-strong);
95
+ --btn-color-background: var(--color-light);
96
+ --btn-color-background-hover: var(--color-light-strong);
85
97
  --btn-color-border: var(--color-light);
86
98
  --btn-color-border-hover: var(--color-light-strong);
87
99
  --btn-color-text: var(--color-text-on-light);
88
100
  }
89
101
 
90
102
  .btn-link {
91
- --btn-color-bg: transparent;
92
- --btn-color-bg-hover: transparent;
103
+ --btn-color-background: transparent;
104
+ --btn-color-background-hover: transparent;
93
105
  --btn-color-border: transparent;
94
106
  --btn-color-border-hover: transparent;
95
107
  --btn-color-text: var(--color-text);
@@ -104,32 +116,32 @@
104
116
  }
105
117
 
106
118
  .btn-primary {
107
- --btn-color-bg: var(--color-brand);
108
- --btn-color-bg-hover: var(--color-brand-strong);
119
+ --btn-color-background: var(--color-brand);
120
+ --btn-color-background-hover: var(--color-brand-strong);
109
121
  --btn-color-border: var(--color-brand);
110
122
  --btn-color-border-hover: var(--color-brand-strong);
111
123
  --btn-color-text: var(--color-text-on-brand);
112
124
  }
113
125
 
114
126
  .btn-secondary {
115
- --btn-color-bg: var(--color-secondary);
116
- --btn-color-bg-hover: var(--color-secondary-strong);
127
+ --btn-color-background: var(--color-secondary);
128
+ --btn-color-background-hover: var(--color-secondary-strong);
117
129
  --btn-color-border: var(--color-secondary);
118
130
  --btn-color-border-hover: var(--color-secondary-strong);
119
131
  --btn-color-text: var(--color-text-on-secondary);
120
132
  }
121
133
 
122
134
  .btn-success {
123
- --btn-color-bg: var(--color-success);
124
- --btn-color-bg-hover: var(--color-success-strong);
135
+ --btn-color-background: var(--color-success);
136
+ --btn-color-background-hover: var(--color-success-strong);
125
137
  --btn-color-border: var(--color-success);
126
138
  --btn-color-border-hover: var(--color-success-strong);
127
139
  --btn-color-text: var(--color-text-on-success);
128
140
  }
129
141
 
130
142
  .btn-warning {
131
- --btn-color-bg: var(--color-warning);
132
- --btn-color-bg-hover: var(--color-warning-strong);
143
+ --btn-color-background: var(--color-warning);
144
+ --btn-color-background-hover: var(--color-warning-strong);
133
145
  --btn-color-border: var(--color-warning);
134
146
  --btn-color-border-hover: var(--color-warning-strong);
135
147
  --btn-color-text: var(--color-text-on-warning);
@@ -138,31 +150,31 @@
138
150
  /* Sizes */
139
151
  .btn-xs {
140
152
  --btn-font-size: var(--font-size-xs);
141
- --btn-padding-x: var(--spacing-xs);
142
- --btn-padding-y: var(--spacing-xs);
153
+ --btn-padding-inline: var(--spacing-xs);
154
+ --btn-padding-block: var(--spacing-xs);
143
155
  }
144
156
 
145
157
  .btn-sm {
146
158
  --btn-font-size: var(--font-size-sm);
147
- --btn-padding-x: var(--spacing-sm);
148
- --btn-padding-y: var(--spacing-sm);
159
+ --btn-padding-inline: var(--spacing-sm);
160
+ --btn-padding-block: var(--spacing-sm);
149
161
  }
150
162
 
151
163
  .btn-md {
152
164
  --btn-font-size: var(--font-size-md);
153
- --btn-padding-x: var(--spacing-md);
154
- --btn-padding-y: var(--spacing-md);
165
+ --btn-padding-inline: var(--spacing-md);
166
+ --btn-padding-block: var(--spacing-md);
155
167
  }
156
168
 
157
169
  .btn-lg {
158
170
  --btn-font-size: var(--font-size-lg);
159
- --btn-padding-x: var(--spacing-lg);
160
- --btn-padding-y: var(--spacing-lg);
171
+ --btn-padding-inline: var(--spacing-lg);
172
+ --btn-padding-block: var(--spacing-lg);
161
173
  }
162
174
 
163
175
  .btn-xl {
164
176
  --btn-font-size: var(--font-size-xl);
165
- --btn-padding-x: var(--spacing-xl);
166
- --btn-padding-y: var(--spacing-xl);
177
+ --btn-padding-inline: var(--spacing-xl);
178
+ --btn-padding-block: var(--spacing-xl);
167
179
  }
168
180
  }
@@ -0,0 +1,87 @@
1
+ /* components/card.css */
2
+ /*
3
+ * .card is a backwards-compatible alias for .item.
4
+ * Prefer using .item directly: <article class="item page">
5
+ *
6
+ * Structure:
7
+ * <article class="card">
8
+ * <div class="content">
9
+ * <p class="name">...</p>
10
+ * <p class="description">...</p>
11
+ * </div>
12
+ * <div class="media">
13
+ * picture | video
14
+ * </div>
15
+ * </article>
16
+ */
17
+ @layer components {
18
+ .card {
19
+ background-color: var(--card-color-background);
20
+ border: var(--card-border-width) var(--card-border-style) var(--card-color-border);
21
+ border-radius: var(--card-border-radius);
22
+ box-shadow: var(--card-shadow);
23
+ color: var(--card-color-text);
24
+ display: flex;
25
+ flex-direction: column;
26
+ overflow: hidden;
27
+
28
+ .content {
29
+ display: flex;
30
+ flex-direction: column;
31
+ flex: 1;
32
+ gap: var(--card-gap);
33
+ padding-block: var(--card-padding-block);
34
+ padding-inline: var(--card-padding-inline);
35
+ text-decoration: none;
36
+
37
+ > * {
38
+ margin-block: 0;
39
+ }
40
+ }
41
+
42
+ a.content {
43
+ &::before {
44
+ content: '';
45
+ inset: 0;
46
+ position: absolute;
47
+ }
48
+ &:focus-visible {
49
+ outline: none;
50
+ }
51
+ }
52
+
53
+ .name {
54
+ color: var(--card-title-color);
55
+ font-size: var(--card-title-font-size);
56
+ font-weight: var(--card-title-font-weight);
57
+ line-height: var(--card-title-line-height);
58
+ }
59
+
60
+ .description {
61
+ color: var(--card-color-text-muted);
62
+ }
63
+
64
+ .media {
65
+ --media-ratio: var(--card-media-ratio);
66
+ --media-color-background: var(--card-media-color-background);
67
+ order: var(--card-media-order, -1);
68
+ }
69
+
70
+ /* Focus */
71
+ &:has(a.content:focus-visible) {
72
+ outline: var(--focus);
73
+ outline-offset: var(--focus-outline-offset);
74
+ }
75
+
76
+ /* Hover */
77
+ @media (hover: hover) and (pointer: fine) {
78
+ &:hover {
79
+ --card-shadow: var(--card-shadow-hover);
80
+ }
81
+ }
82
+
83
+ @media (prefers-reduced-motion: no-preference) {
84
+ transition: var(--card-transition);
85
+ }
86
+ }
87
+ }
@@ -28,26 +28,29 @@
28
28
  /* ── Panel ───────────────────────────────────────────────────────── */
29
29
 
30
30
  .drawer {
31
- background-color: var(--drawer-color-bg);
31
+ background-color: var(--drawer-color-background);
32
32
  bottom: var(--drawer-bottom, 0);
33
33
  box-shadow: var(--drawer-shadow);
34
34
  color: var(--drawer-color-text);
35
35
  display: flex;
36
36
  flex-direction: column;
37
- inset-inline-start: var(--drawer-start);
38
- inset-inline-end: var(--drawer-end);
37
+ inset-inline-start: var(--drawer-start, auto);
38
+ inset-inline-end: var(--drawer-end, 0);
39
39
  max-width: 100%;
40
40
  overflow: hidden;
41
41
  position: fixed;
42
42
  top: var(--drawer-top, 0);
43
- transform: var(--drawer-translate);
44
- transition-duration: var(--drawer-transition-duration);
45
- transition-property: transform, visibility;
46
- transition-timing-function: var(--drawer-transition-easing);
43
+ transform: var(--drawer-translate, translateX(100%));
47
44
  visibility: hidden;
48
45
  width: var(--drawer-width);
49
46
  z-index: var(--drawer-z-index);
50
47
 
48
+ @media (prefers-reduced-motion: no-preference) {
49
+ transition-duration: var(--drawer-transition-duration);
50
+ transition-property: transform, visibility;
51
+ transition-timing-function: var(--drawer-transition-easing);
52
+ }
53
+
51
54
  /* Visible during transitions and when open */
52
55
  &.show,
53
56
  &.showing,
@@ -154,6 +157,7 @@
154
157
  /* ── Backdrop ────────────────────────────────────────────────────── */
155
158
 
156
159
  .drawer-backdrop {
160
+ backdrop-filter: blur(var(--drawer-backdrop-blur));
157
161
  background-color: var(--drawer-backdrop-color);
158
162
  inset: 0;
159
163
  position: fixed;
@@ -161,7 +165,10 @@
161
165
 
162
166
  &.fade {
163
167
  opacity: 0;
164
- transition: opacity var(--drawer-transition-duration) var(--drawer-transition-easing);
168
+
169
+ @media (prefers-reduced-motion: no-preference) {
170
+ transition: opacity var(--drawer-transition-duration) var(--drawer-transition-easing);
171
+ }
165
172
  }
166
173
 
167
174
  &.show {
@@ -57,6 +57,11 @@
57
57
  width: var(--dropdown-icon-size);
58
58
  }
59
59
 
60
+ &:focus-visible {
61
+ outline: var(--focus);
62
+ outline-offset: var(--focus-outline-offset);
63
+ }
64
+
60
65
  &[aria-expanded="true"]::after {
61
66
  rotate: 180deg;
62
67
  }
@@ -65,7 +70,7 @@
65
70
  /* ── Menu panel ──────────────────────────────────────────────────── */
66
71
 
67
72
  .dropdown-menu {
68
- background-color: var(--dropdown-color-bg);
73
+ background-color: var(--dropdown-color-background);
69
74
  border: var(--dropdown-border-width) var(--dropdown-border-style) var(--dropdown-color-border);
70
75
  border-radius: var(--dropdown-border-radius);
71
76
  box-shadow: var(--dropdown-shadow);
@@ -78,12 +83,15 @@
78
83
  position: absolute;
79
84
  top: 100%;
80
85
  transform: translateY(var(--dropdown-translate-y));
81
- transition-duration: var(--dropdown-transition-duration);
82
- transition-property: opacity, transform, visibility;
83
- transition-timing-function: var(--dropdown-transition-easing);
84
86
  visibility: hidden;
85
87
  z-index: var(--dropdown-z-index);
86
88
 
89
+ @media (prefers-reduced-motion: no-preference) {
90
+ transition-duration: var(--dropdown-transition-duration);
91
+ transition-property: opacity, transform, visibility;
92
+ transition-timing-function: var(--dropdown-transition-easing);
93
+ }
94
+
87
95
  /* Visible during all transition phases */
88
96
  &.show,
89
97
  &.showing,
@@ -105,13 +113,14 @@
105
113
  color: var(--dropdown-color-text);
106
114
  font-size: var(--dropdown-item-font-size);
107
115
  display: block;
108
- padding: var(--dropdown-item-padding);
116
+ padding-block: var(--dropdown-item-padding-block);
117
+ padding-inline: var(--dropdown-item-padding-inline);
109
118
  text-decoration: none;
110
119
  white-space: nowrap;
111
120
 
112
121
  @media (hover: hover) and (pointer: fine) {
113
122
  &:hover {
114
- background-color: var(--dropdown-item-color-bg-hover);
123
+ background-color: var(--dropdown-item-color-background-hover);
115
124
  }
116
125
  }
117
126
  }
@@ -121,7 +130,7 @@
121
130
  /* ── Alignment variants ──────────────────────────────────────────── */
122
131
 
123
132
  .dropdown-menu-end {
124
- left: auto;
125
- right: 0;
133
+ inset-inline-start: auto;
134
+ inset-inline-end: 0;
126
135
  }
127
136
  }
@@ -10,7 +10,7 @@
10
10
  @layer components {
11
11
  .embed {
12
12
  aspect-ratio: var(--embed-ratio);
13
- border: var(--embed-border-width) var(--embed-border-style) var(--embed-color-border);
13
+ border: var(--embed-border);
14
14
  border-radius: var(--embed-border-radius);
15
15
  box-shadow: var(--embed-box-shadow);
16
16
  overflow: hidden;
@@ -0,0 +1,24 @@
1
+ /* components/form.css */
2
+ @layer components {
3
+ .form {
4
+ display: grid;
5
+ gap: var(--gap);
6
+ grid-template-columns: repeat(auto-fill, minmax(max(var(--form-col-min-width, 25ch), calc(50% - var(--gap) / 2)), 1fr));
7
+
8
+ .help {
9
+ color: var(--help-color-text);
10
+ font-size: var(--help-font-size);
11
+ font-weight: var(--help-font-weight);
12
+ margin: var(--help-margin);
13
+ }
14
+
15
+ .actions,
16
+ .full {
17
+ grid-column: 1 / -1;
18
+ }
19
+ }
20
+
21
+ .form-check {
22
+ display: flex;
23
+ }
24
+ }
@@ -0,0 +1,18 @@
1
+ /* components/items.css */
2
+ /*
3
+ * .items — responsive grid.
4
+ *
5
+ * Structure:
6
+ * .items
7
+ * .item
8
+ */
9
+ @layer components {
10
+ .items {
11
+ container-type: inline-size;
12
+ container-name: items;
13
+ display: grid;
14
+ gap: var(--items-gap);
15
+ grid-template-columns: repeat(var(--items-cols, auto-fill), minmax(var(--items-min-width, 30ch), 1fr));
16
+ justify-content: start;
17
+ }
18
+ }
@@ -12,25 +12,18 @@
12
12
  .list {
13
13
  p {
14
14
  font-weight: var(--list-label-font-weight);
15
- margin-bottom: var(--list-label-margin-bottom);
15
+ margin-block: var(--list-label-margin-block);
16
16
  }
17
17
 
18
18
  &,
19
19
  ul,
20
20
  ol {
21
- list-style: none;
22
- margin-bottom: 0;
23
- padding-inline-start: 0;
21
+ margin-block-end: 0;
24
22
  }
25
23
 
26
24
  li {
27
25
  font-size: var(--list-item-font-size);
28
26
  margin-block: var(--list-item-gap);
29
-
30
- &::before {
31
- content: var(--list-item-marker);
32
- margin-inline-end: var(--list-item-marker-gap);
33
- }
34
27
  }
35
28
  }
36
29
  }
@@ -8,11 +8,11 @@
8
8
  @layer components {
9
9
  .map {
10
10
  aspect-ratio: var(--map-ratio);
11
- background-color: var(--map-color-bg);
11
+ background-color: var(--map-color-background);
12
12
  margin-block: var(--map-margin-block);
13
13
  overflow: hidden;
14
14
 
15
- @media (--mobile-only) {
15
+ @media not (--tablet) {
16
16
  --map-ratio: var(--map-ratio-mobile);
17
17
  .container & {
18
18
  margin-inline: calc(-1 * var(--gutter));
@@ -8,7 +8,7 @@
8
8
 
9
9
  .media {
10
10
  aspect-ratio: var(--media-ratio);
11
- background-color: var(--media-color-bg);
11
+ background-color: var(--media-color-background);
12
12
  overflow: hidden;
13
13
 
14
14
  picture,
@@ -34,7 +34,7 @@
34
34
 
35
35
  .media-icon {
36
36
  --media-ratio: none;
37
- --media-color-bg: transparent;
37
+ --media-color-background: transparent;
38
38
  }
39
39
 
40
40
  }
@@ -16,22 +16,25 @@
16
16
  .nav-accessibility {
17
17
  flex-direction: row;
18
18
  font-size: var(--font-size-xs);
19
- left: 0;
19
+ inset-inline-start: 0;
20
20
  overflow: hidden;
21
21
  position: absolute;
22
22
  transform: translateY(-100%);
23
- transition: transform var(--duration-fast) var(--easing-out);
24
23
  z-index: 300;
25
24
 
26
25
  &:focus-within {
27
26
  transform: translateY(0);
28
27
  }
29
28
 
29
+ @media (prefers-reduced-motion: no-preference) {
30
+ transition: transform var(--duration-fast) var(--easing-out);
31
+ }
32
+
30
33
  a {
31
- background: var(--color-bg);
34
+ background: var(--color-background);
32
35
  &:focus {
33
36
  background: var(--color-text);
34
- color: var(--color-bg);
37
+ color: var(--color-background);
35
38
  outline: none;
36
39
  }
37
40
  }
@@ -0,0 +1,13 @@
1
+ /* components/nav-title.css */
2
+ /*
3
+ * .nav-title — navigation title.
4
+ */
5
+ @layer components {
6
+ .nav-title {
7
+ font-size: var(--nav-title-font-size);
8
+ font-weight: var(--nav-title-font-weight);
9
+ margin: 0;
10
+ padding-block: var(--nav-padding-block);
11
+ padding-inline: var(--nav-padding-inline);
12
+ }
13
+ }
@@ -22,11 +22,16 @@
22
22
  margin: 0;
23
23
  }
24
24
 
25
+ &,
26
+ &:is(ul, ol) {
27
+ padding-inline-start: 0;
28
+ }
29
+
25
30
  /* ── Nav item ────────────────────────────────────────────────── */
26
31
 
27
32
  li {
28
- margin-block: var(--nav-margin-y, 0);
29
- margin-inline: var(--nav-margin-x, 0);
33
+ margin-block: var(--nav-margin-block, 0);
34
+ margin-inline: var(--nav-margin-inline, 0);
30
35
  position: relative;
31
36
  }
32
37
 
@@ -34,7 +39,7 @@
34
39
 
35
40
  a {
36
41
  display: block;
37
- padding: var(--nav-padding-y) var(--nav-padding-x);
42
+ padding: var(--nav-padding-block) var(--nav-padding-inline);
38
43
  }
39
44
 
40
45
  a:not(.btn) {
@@ -48,14 +53,14 @@
48
53
  li > span {
49
54
  color: var(--nav-color-text);
50
55
  display: block;
51
- padding: var(--nav-padding-y) var(--nav-padding-x);
56
+ padding: var(--nav-padding-block) var(--nav-padding-inline);
52
57
  }
53
58
 
54
59
  /* ── Item highlighted ───────────────────────────────────────────────────── */
55
60
 
56
61
  .nav-item-highlighted {
57
62
  line-height: var(--line-height-snug);
58
- margin-inline: var(--nav-padding-x);
63
+ margin-inline: var(--nav-padding-inline);
59
64
  }
60
65
  }
61
66
  }
@@ -30,27 +30,27 @@
30
30
 
31
31
  a {
32
32
  align-items: center;
33
- background-color: var(--pagination-item-color-bg);
33
+ background-color: var(--pagination-item-color-background);
34
34
  border-radius: var(--pagination-item-border-radius);
35
35
  color: var(--pagination-item-color-text);
36
36
  display: flex;
37
37
  font-size: var(--pagination-item-font-size);
38
38
  font-weight: var(--pagination-item-font-weight);
39
- height: var(--pagination-item-size);
40
39
  justify-content: center;
40
+ min-height: var(--pagination-item-size);
41
41
  min-width: var(--pagination-item-size);
42
42
  padding-inline: var(--spacing-2xs);
43
43
  text-decoration: none;
44
44
 
45
45
  &:hover {
46
- background-color: var(--pagination-item-color-bg-hover);
46
+ background-color: var(--pagination-item-color-background-hover);
47
47
  color: var(--pagination-item-color-text-hover);
48
48
  }
49
49
  }
50
50
 
51
51
  /* Active page */
52
52
  .active a {
53
- --pagination-item-color-bg: var(--pagination-item-color-bg-active);
53
+ --pagination-item-color-background: var(--pagination-item-color-background-active);
54
54
  --pagination-item-color-text: var(--pagination-item-color-text-active);
55
55
  cursor: default;
56
56
  pointer-events: none;
@@ -91,7 +91,7 @@
91
91
  }
92
92
 
93
93
  /* On small screens: hide first/last controls and non-adjacent page numbers */
94
- @media (--mobile-only) {
94
+ @media not (--tablet) {
95
95
  .first,
96
96
  .last,
97
97
  li:has(.first),
package/css/index.css CHANGED
@@ -1,20 +1,25 @@
1
1
  /* css/index.css */
2
- @import 'component/alert.css';
3
- @import 'component/badge.css';
4
- @import 'component/banner.css';
5
- @import 'component/breadcrumb.css';
6
- @import 'component/btn-close.css';
7
- @import 'component/btn-menu.css';
8
- @import 'component/btn-search.css';
9
- @import 'component/button.css';
10
- @import 'component/card.css';
11
- @import 'component/drawer.css';
12
- @import 'component/dropdown.css';
13
- @import 'component/embed.css';
14
- @import 'component/list.css';
15
- @import 'component/map.css';
16
- @import 'component/media.css';
17
- @import 'component/nav.css';
18
- @import 'component/nav-accessibility.css';
19
- @import 'component/nav-title.css';
20
- @import 'component/pagination.css';
2
+ @import 'components/alert.css';
3
+ @import 'components/badge.css';
4
+ @import 'components/banner.css';
5
+ @import 'components/breadcrumb.css';
6
+ @import 'components/button.css';
7
+ @import 'components/btn-close.css';
8
+ @import 'components/btn-filter.css';
9
+ @import 'components/btn-menu.css';
10
+ @import 'components/btn-search.css';
11
+ @import 'components/btn-share.css';
12
+ @import 'components/btn-toc.css';
13
+ @import 'components/card.css';
14
+ @import 'components/drawer.css';
15
+ @import 'components/dropdown.css';
16
+ @import 'components/embed.css';
17
+ @import 'components/form.css';
18
+ @import 'components/items.css';
19
+ @import 'components/list.css';
20
+ @import 'components/map.css';
21
+ @import 'components/media.css';
22
+ @import 'components/nav.css';
23
+ @import 'components/nav-accessibility.css';
24
+ @import 'components/nav-title.css';
25
+ @import 'components/pagination.css';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uncinq/css-components",
3
- "version": "0.3.0",
3
+ "version": "1.0.0",
4
4
  "description": "Framework-agnostic CSS component implementations.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,7 +24,7 @@
24
24
  "exports": {
25
25
  ".": "./css/index.css",
26
26
  "./css/index.css": "./css/index.css",
27
- "./css/component/*": "./css/component/*"
27
+ "./css/components/*": "./css/components/*"
28
28
  },
29
29
  "style": "./css/index.css",
30
30
  "peerDependencies": {
@@ -1,41 +0,0 @@
1
- /* components/alert.css */
2
- @layer components {
3
- .alert {
4
- background-color: var(--alert-color-bg);
5
- border-radius: var(--alert-border-radius);
6
- color: var(--alert-color-text);
7
- display: flex;
8
- flex-direction: column;
9
- font-size: var(--alert-font-size);
10
- gap: var(--alert-gap);
11
- margin: var(--alert-margin);
12
- padding: var(--alert-padding);
13
-
14
- > * {
15
- margin: 0;
16
- }
17
-
18
- .alert-heading {
19
- align-items: center;
20
- color: var(--alert-color-text);
21
- display: flex;
22
- font-weight: var(--font-weight-semibold);
23
- gap: var(--alert-gap);
24
- }
25
-
26
- &:has(.icon:first-child):not(:has(.alert-heading)) {
27
- flex-direction: row;
28
- align-items: flex-start;
29
- }
30
- }
31
-
32
- /* Variants */
33
- .alert-danger { --alert-color-bg: var(--color-danger-muted); --alert-color-text: var(--color-danger-strong); }
34
- .alert-dark { --alert-color-bg: var(--color-dark-muted); --alert-color-text: var(--color-dark-strong); }
35
- .alert-info { --alert-color-bg: var(--color-info-muted); --alert-color-text: var(--color-info-strong); }
36
- .alert-light { --alert-color-bg: var(--color-light-muted); --alert-color-text: var(--color-light-strong); }
37
- .alert-primary { --alert-color-bg: var(--color-primary-muted); --alert-color-text: var(--color-primary-strong); }
38
- .alert-secondary { --alert-color-bg: var(--color-secondary-muted); --alert-color-text: var(--color-secondary-strong); }
39
- .alert-success { --alert-color-bg: var(--color-success-muted); --alert-color-text: var(--color-success-strong); }
40
- .alert-warning { --alert-color-bg: var(--color-warning-muted); --alert-color-text: var(--color-warning-strong); }
41
- }
@@ -1,23 +0,0 @@
1
- /* components/badge.css */
2
- @layer components {
3
- .badge {
4
- background-color: var(--badge-color-bg);
5
- border: var(--badge-border-width) var(--badge-border-style) var(--badge-color-border);
6
- border-radius: var(--badge-border-radius);
7
- color: var(--badge-color-text);
8
- display: inline-flex;
9
- font-size: var(--badge-font-size);
10
- font-weight: var(--badge-font-weight);
11
- padding: var(--badge-padding-y) var(--badge-padding-x);
12
- }
13
-
14
- /* Variants */
15
- .badge-danger { --badge-color-bg: var(--color-danger-muted); --badge-color-text: var(--color-danger-strong); }
16
- .badge-dark { --badge-color-bg: var(--color-dark-muted); --badge-color-text: var(--color-dark-strong); }
17
- .badge-info { --badge-color-bg: var(--color-info-muted); --badge-color-text: var(--color-info-strong); }
18
- .badge-light { --badge-color-bg: var(--color-light-muted); --badge-color-text: var(--color-light-strong); }
19
- .badge-primary { --badge-color-bg: var(--color-primary-muted); --badge-color-text: var(--color-primary-strong); }
20
- .badge-secondary { --badge-color-bg: var(--color-secondary-muted); --badge-color-text: var(--color-secondary-strong); }
21
- .badge-success { --badge-color-bg: var(--color-success-muted); --badge-color-text: var(--color-success-strong); }
22
- .badge-warning { --badge-color-bg: var(--color-warning-muted); --badge-color-text: var(--color-warning-strong); }
23
- }
@@ -1,29 +0,0 @@
1
- /* components/banner.css */
2
- @layer components {
3
- .banner {
4
- background-color: var(--alert-color-bg);
5
- border-radius: var(--alert-border-radius);
6
- color: var(--alert-color-text);
7
- display: flex;
8
- flex-direction: column;
9
- font-size: var(--alert-font-size);
10
- gap: var(--alert-gap);
11
- padding: var(--alert-padding);
12
- padding-inline: 0;
13
- text-align: center;
14
-
15
- p {
16
- margin: 0 auto;
17
- }
18
- }
19
-
20
- /* Variants */
21
- .banner-danger { --alert-color-bg: var(--color-danger-muted); --alert-color-text: var(--color-danger-strong); }
22
- .banner-dark { --alert-color-bg: var(--color-dark-muted); --alert-color-text: var(--color-dark-strong); }
23
- .banner-info { --alert-color-bg: var(--color-info-muted); --alert-color-text: var(--color-info-strong); }
24
- .banner-light { --alert-color-bg: var(--color-light-muted); --alert-color-text: var(--color-light-strong); }
25
- .banner-primary { --alert-color-bg: var(--color-primary-muted); --alert-color-text: var(--color-primary-strong); }
26
- .banner-secondary { --alert-color-bg: var(--color-secondary-muted); --alert-color-text: var(--color-secondary-strong); }
27
- .banner-success { --alert-color-bg: var(--color-success-muted); --alert-color-text: var(--color-success-strong); }
28
- .banner-warning { --alert-color-bg: var(--color-warning-muted); --alert-color-text: var(--color-warning-strong); }
29
- }
@@ -1,44 +0,0 @@
1
- /* component/btn-search.css */
2
- /* Search button */
3
- @layer components {
4
- .btn-search {
5
- align-items: center;
6
- appearance: none;
7
- background-color: var(--btn-search-color-bg, var(--btn-color-bg));
8
- border: var(--btn-search-border-width, var(--btn-border-width)) var(--btn-search-border-style, var(--btn-border-style)) var(--btn-search-color-border, var(--btn-color-border));
9
- border-radius: var(--btn-search-border-radius, var(--btn-border-radius));
10
- color: var(--btn-search-color-text, var(--btn-color-text));
11
- cursor: pointer;
12
- display: inline-flex;
13
- font-size: var(--btn-search-font-size, var(--btn-font-size));
14
- font-weight: var(--btn-search-font-weight, var(--btn-font-weight));
15
- gap: var(--btn-search-gap, var(--btn-gap));
16
- padding: var(--btn-search-padding-y, var(--btn-padding-y)) var(--btn-search-padding-x, var(--btn-padding-x));
17
- text-decoration-color: var(--btn-search-color-text-decoration, var(--btn-color-text-decoration));
18
- text-decoration-line: var(--btn-text-decoration-line);
19
- text-decoration-thickness: var(--text-decoration-thickness);
20
- text-transform: var(--btn-text-transform);
21
- text-underline-offset: var(--text-decoration-offset);
22
-
23
- &::before {
24
- background-color: currentColor;
25
- content: '';
26
- flex-shrink: 0;
27
- height: var(--icon-size);
28
- mask: var(--icon-search) center / var(--icon-size) no-repeat;
29
- width: var(--icon-size);
30
- }
31
-
32
- @media (hover: hover) and (pointer: fine) {
33
- &:hover {
34
- background-color: var(--btn-search-color-bg-hover, var(--btn-color-bg-hover));
35
- color: var(--btn-search-color-text-hover, var(--btn-color-text-hover));
36
- text-decoration-color: var(--btn-search-color-text-decoration-hover, var(--btn-color-text-decoration-hover));
37
- }
38
- }
39
-
40
- @media (prefers-reduced-motion: no-preference) {
41
- transition: var(--btn-transition);
42
- }
43
- }
44
- }
@@ -1,54 +0,0 @@
1
- /* components/card.css */
2
- /*
3
- * .card is a backwards-compatible alias for .item.
4
- * Prefer using .item directly: <article class="item page">
5
- *
6
- * Structure:
7
- * <article class="card">
8
- * <div class="content">
9
- * <p class="name">...</p>
10
- * <p class="description">...</p>
11
- * </div>
12
- * <div class="media">
13
- * picture | video
14
- * </div>
15
- * </article>
16
- */
17
- @layer components {
18
- .card {
19
- background-color: var(--card-color-bg);
20
- border: var(--card-border-width) solid var(--card-color-border);
21
- border-radius: var(--card-border-radius);
22
- box-shadow: var(--card-shadow);
23
- color: var(--card-color-text);
24
- display: flex;
25
- flex-direction: column;
26
- overflow: hidden;
27
-
28
- .content {
29
- display: flex;
30
- flex-direction: column;
31
- flex: 1;
32
- gap: var(--card-gap);
33
- padding: var(--card-padding);
34
- text-decoration: none;
35
- }
36
-
37
- .name {
38
- color: var(--card-color-title);
39
- font-size: var(--card-font-size-title);
40
- font-weight: var(--card-font-weight-title);
41
- line-height: var(--card-line-height-title);
42
- }
43
-
44
- .description {
45
- color: var(--card-color-text-muted);
46
- }
47
-
48
- .media {
49
- --media-ratio: var(--card-media-ratio);
50
- --media-color-bg: var(--card-media-color-bg);
51
- order: -1;
52
- }
53
- }
54
- }
@@ -1,12 +0,0 @@
1
- /* components/nav-title.css */
2
- /*
3
- * .nav-title — navigation title.
4
- */
5
- @layer components {
6
- .nav-title {
7
- font-size: var(--nav-font-size-title);
8
- font-weight: var(--nav-font-weight-title);
9
- margin: 0;
10
- padding: var(--nav-padding-y) var(--nav-padding-x);
11
- }
12
- }