@semanticus/semanticus-css 1.0.0 → 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.
Files changed (35) hide show
  1. package/README.md +10 -10
  2. package/dist/semanticus-no-utilities.css +1 -1
  3. package/dist/semanticus-semantics.css +1 -1
  4. package/dist/semanticus-utilities.css +1 -1
  5. package/dist/semanticus.css +2 -2
  6. package/package.json +2 -1
  7. package/src/components/_card-list.css +60 -0
  8. package/src/components/_card.css +8 -48
  9. package/src/components/_icons.css +59 -0
  10. package/src/components/modules.css +3 -0
  11. package/src/index.css +1 -1
  12. package/src/semantics/attributes/_aria-disabled.css +25 -0
  13. package/src/semantics/attributes/_role-group.css +125 -0
  14. package/src/semantics/attributes/_role-search.css +14 -0
  15. package/src/semantics/attributes/_role-status-alert.css +122 -0
  16. package/src/semantics/attributes/_role-tooltip.css +1 -1
  17. package/src/semantics/elements/_button.css +2 -5
  18. package/src/semantics/elements/_dialog.css +7 -27
  19. package/src/semantics/elements/_nav.css +5 -1
  20. package/src/semantics/modules.css +4 -1
  21. package/src/utilities/effects/_shadows.css +4 -0
  22. package/src/variables/_theme.css +6 -6
  23. package/src/variants/intent/_contrast.css +15 -19
  24. package/src/variants/intent/_danger.css +14 -18
  25. package/src/variants/intent/_info.css +14 -18
  26. package/src/variants/intent/_primary.css +14 -18
  27. package/src/variants/intent/_secondary.css +14 -18
  28. package/src/variants/intent/_success.css +14 -18
  29. package/src/variants/intent/_warning.css +14 -18
  30. package/src/variants/modifiers/_ghost.css +3 -3
  31. package/src/variants/modifiers/_striped.css +8 -8
  32. package/src/variants/modifiers/_subtle.css +2 -2
  33. package/src/variants/modules.css +0 -1
  34. package/src/semantics/attributes/_role-group-search.css +0 -137
  35. /package/src/{variants/modifiers → components}/_container.css +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semanticus/semanticus-css",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "lightweight CSS framework that prioritizes semantic HTML and ARIA-focused accessibility, with a small set of atomic utilities",
5
5
  "author": "Joao Goncalves",
6
6
  "style": "./dist/semanticus.css",
@@ -88,6 +88,7 @@
88
88
  "storybook": "storybook dev -p 6006",
89
89
  "demo:server": "tsx --tsconfig scripts/tsconfig.json scripts/demo-server.ts",
90
90
  "test": "npx playwright test",
91
+ "test:dev": "npx playwright test --ui",
91
92
  "test:update-snapshots": "npx playwright test -u",
92
93
  "kill-zombies": "sh -c 'PORT=${PORT:-4000}; pids=$(lsof -t -i :$PORT); if [ -n \"$pids\" ]; then echo \"Killing PIDs: $pids\"; kill -9 $pids; else echo \"No processes listening on port $PORT\"; fi'",
93
94
  "kill-playwright": "sh -c 'pgrep -af playwright | awk \"{print $1}\" | xargs -r kill -9 || true'",
@@ -0,0 +1,60 @@
1
+ .card-list {
2
+ border: none;
3
+ display: flex;
4
+ flex-direction: column;
5
+ padding: 0;
6
+ list-style: none;
7
+
8
+ > * {
9
+ --color-background: transparent;
10
+ --card-fill: var(--color-background);
11
+ --border-color: color-mix(in srgb, light-dark(var(--color-slate-900), var(--color-zinc-350)), transparent 90%);
12
+
13
+ background: var(--card-fill);
14
+ border-bottom: var(--border-size) solid var(--border-color);
15
+ border-inline: var(--border-size) solid var(--border-color);
16
+ color: var(--color-text);
17
+ margin: 0;
18
+ padding: var(--spacing);
19
+ list-style: none;
20
+
21
+ &:first-child {
22
+ border-top: var(--border-size) solid var(--border-color);
23
+ border-top-left-radius: var(--radius);
24
+ border-top-right-radius: var(--radius);
25
+ }
26
+
27
+ &:last-child {
28
+ border-bottom-left-radius: var(--radius);
29
+ border-bottom-right-radius: var(--radius);
30
+ }
31
+
32
+ &:is([aria-current]:not([aria-current="false"])) {
33
+ --card-fill: color-mix(in srgb, var(--color-background), var(--color-hover-effect) 15%);
34
+ }
35
+ }
36
+
37
+ nav & {
38
+ gap: 0;
39
+ flex-direction: row;
40
+
41
+ > * {
42
+ flex: 1 1 0;
43
+ text-align: center;
44
+ border-top: var(--border-size) solid var(--border-color);
45
+ border-left: none;
46
+ white-space: nowrap;
47
+
48
+ &:first-child {
49
+ border-left: var(--border-size) solid var(--border-color);
50
+ border-bottom-left-radius: var(--radius);
51
+ border-top-right-radius: 0;
52
+ }
53
+
54
+ &:last-child {
55
+ border-top-right-radius: var(--radius);
56
+ border-bottom-left-radius: 0;
57
+ }
58
+ }
59
+ }
60
+ }
@@ -1,7 +1,4 @@
1
- .card,
2
- .pane,
3
- .panel {
4
- --shadow: var(--dialog-shadow);
1
+ .card {
5
2
  --color-background: var(--dialog-fill);
6
3
  --border-color: var(--dialog-border);
7
4
 
@@ -11,8 +8,6 @@
11
8
  border-radius: var(--radius);
12
9
  border: var(--border-size) solid var(--border-color);
13
10
  background: var(--color-background);
14
- box-shadow: var(--shadow);
15
- position: relative;
16
11
 
17
12
  > header,
18
13
  > footer {
@@ -20,65 +15,30 @@
20
15
  margin-inline: calc(var(--spacing) * -1);
21
16
  padding-inline: var(--spacing);
22
17
  background-color: var(--dialog-section-fill);
18
+ display: flex;
19
+ gap: calc(var(--nav-link-gap) * 1.5);
20
+ align-items: center;
23
21
  }
24
22
 
23
+ /* Header styling */
25
24
  > header {
26
25
  margin-top: calc(var(--spacing) * -1);
27
26
  border-bottom: var(--border-size) solid var(--dialog-section-border);
28
27
  border-top-right-radius: var(--radius);
29
28
  border-top-left-radius: var(--radius);
29
+ justify-content: space-between;
30
30
  }
31
31
 
32
+ /* Footer styling */
32
33
  > footer {
33
34
  margin-bottom: calc(var(--spacing) * -1);
34
35
  border-top: var(--border-size) solid var(--dialog-section-border);
35
36
  border-bottom-right-radius: var(--radius);
36
37
  border-bottom-left-radius: var(--radius);
37
- display: flex;
38
38
  justify-content: end;
39
- gap: calc(var(--nav-link-gap) * 1.5);
40
39
  }
41
40
 
42
- > :last-child:is(hgroup) {
41
+ > :last-child:is(hgroup, h1, h2, h3, h4, h5, h6) {
43
42
  margin-bottom: 0;
44
43
  }
45
-
46
- /* Close button styling */
47
- [rel="prev"] {
48
- margin: 0;
49
- padding: 0;
50
- position: absolute;
51
- display: block;
52
- width: 1rem;
53
- height: 1rem;
54
- top: var(--spacing);
55
- right: var(--spacing);
56
- border: none;
57
- border-radius: 0;
58
- background-image: var(--icon-close);
59
- background-position: center;
60
- background-size: auto 1rem;
61
- background-repeat: no-repeat;
62
- background-color: transparent;
63
- box-shadow: none;
64
- opacity: 0.5;
65
- transition: opacity var(--transition);
66
-
67
- &:hover {
68
- opacity: 1;
69
- }
70
- }
71
- }
72
-
73
- .pane,
74
- .panel {
75
- --dialog-shadow: none;
76
- --shadow: none;
77
- }
78
-
79
- .pane {
80
- --dialog-border: transparent;
81
- --border-color: transparent;
82
-
83
- border-radius: 0;
84
44
  }
@@ -0,0 +1,59 @@
1
+ /* Base styles shared by all .icon-* classes */
2
+ [class^="icon-"],
3
+ [class*=" icon-"] {
4
+ display: inline-block;
5
+ width: 1em;
6
+ height: 1em;
7
+ margin: 0;
8
+ padding: 0;
9
+ border: none;
10
+ border-radius: 0;
11
+ background-color: currentColor;
12
+ background-image: none;
13
+ mask-position: center;
14
+ mask-size: contain;
15
+ mask-repeat: no-repeat;
16
+ vertical-align: -.199em;
17
+ align-self: center;
18
+ color: inherit;
19
+ }
20
+
21
+ .icon-checkbox {
22
+ mask-image: var(--icon-checkbox);
23
+ }
24
+
25
+ .icon-chevron {
26
+ mask-image: var(--icon-chevron);
27
+ }
28
+
29
+ .icon-close {
30
+ mask-image: var(--icon-close);
31
+ }
32
+
33
+ .icon-date {
34
+ mask-image: var(--icon-date);
35
+ }
36
+
37
+ .icon-invalid {
38
+ mask-image: var(--icon-invalid);
39
+ }
40
+
41
+ .icon-loading {
42
+ mask-image: var(--icon-loading);
43
+ }
44
+
45
+ .icon-minus {
46
+ mask-image: var(--icon-minus);
47
+ }
48
+
49
+ .icon-search {
50
+ mask-image: var(--icon-search);
51
+ }
52
+
53
+ .icon-time {
54
+ mask-image: var(--icon-time);
55
+ }
56
+
57
+ .icon-valid {
58
+ mask-image: var(--icon-valid);
59
+ }
@@ -1,2 +1,5 @@
1
1
  @import "./_card.css";
2
+ @import "./_card-list.css";
3
+ @import "./_container.css";
4
+ @import "./_icons.css";
2
5
  @import "./_sidebar.css";
package/src/index.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Semanticus CSS v0.9.0 (https://semanticus.design/)
2
+ * Semanticus CSS v1.2.0 (https://semanticus.design/)
3
3
  *
4
4
  * A ARIA-centric, semantic HTML — enhanced with components and variants and utilities
5
5
  *
@@ -0,0 +1,25 @@
1
+ /* Buttons and button-like elements */
2
+ :is(button, [type=submit], [type=button], [type=reset], [role=button])[aria-disabled=true],
3
+ fieldset[aria-disabled=true] :is(button, [type=submit], [type=button], [type=reset], [role=button]) {
4
+ opacity: 0.5;
5
+ pointer-events: none;
6
+ }
7
+
8
+ /* Links */
9
+ a[aria-disabled=true],
10
+ [role=link][aria-disabled=true] {
11
+ opacity: 0.5;
12
+ pointer-events: none;
13
+ }
14
+
15
+ /* Form controls */
16
+ :is(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-disabled=true],
17
+ fieldset[aria-disabled=true] :is(input:not([type=submit], [type=button], [type=reset]), select, textarea) {
18
+ opacity: var(--input-opacity-disabled);
19
+ pointer-events: none;
20
+ }
21
+
22
+ /* Switch color adjustment */
23
+ [type=checkbox][role=switch][aria-disabled=true] {
24
+ --color-background: var(--border-color);
25
+ }
@@ -0,0 +1,125 @@
1
+ [role="search"],
2
+ [role="group"] {
3
+ border-radius: var(--radius);
4
+ box-shadow: var(--group-shadow, 0 0 0 rgba(0, 0, 0, 0));
5
+ display: inline-flex;
6
+ gap: 0;
7
+ margin-bottom: var(--spacing);
8
+ position: relative;
9
+ transition: box-shadow var(--transition);
10
+ vertical-align: middle;
11
+ width: 100%;
12
+
13
+ & > *:not(details),
14
+ & input:not([type="checkbox"], [type="radio"]),
15
+ & select {
16
+ position: relative;
17
+ flex: 1 1 auto;
18
+ margin-bottom: 0;
19
+
20
+ &:not(:first-child) {
21
+ margin-left: calc(var(--border-size) * -1);
22
+ border-top-left-radius: 0;
23
+ border-bottom-left-radius: 0;
24
+ }
25
+
26
+ &:not(:last-child) {
27
+ border-top-right-radius: 0;
28
+ border-bottom-right-radius: 0;
29
+ }
30
+
31
+ &:focus {
32
+ z-index: 2;
33
+ }
34
+ }
35
+
36
+ & button,
37
+ & [type="submit"],
38
+ & [type="reset"],
39
+ & [type="button"],
40
+ & [role="button"] {
41
+ width: auto;
42
+ }
43
+
44
+ /* Details dropdown inside group */
45
+ & > details {
46
+ position: relative;
47
+ margin-bottom: 0;
48
+ /* Constrain details height to just the button, not the dropdown menu */
49
+ height: calc(
50
+ 1rem * var(--line-height) + var(--input-spacing-vertical) *
51
+ 2 + var(--border-size) * 2
52
+ );
53
+ overflow: visible;
54
+
55
+ &:not(:first-child) {
56
+ margin-left: calc(var(--border-size) * -1);
57
+
58
+ & > summary {
59
+ border-top-left-radius: 0;
60
+ border-bottom-left-radius: 0;
61
+ }
62
+ }
63
+
64
+ &:not(:last-child) > summary {
65
+ border-top-right-radius: 0;
66
+ border-bottom-right-radius: 0;
67
+ }
68
+
69
+ & > summary:focus {
70
+ z-index: 2;
71
+ }
72
+
73
+ /* Ensure consistent height with other form elements in the group */
74
+ & > summary[role="button"] {
75
+ display: flex;
76
+ align-items: center;
77
+ height: 100%;
78
+
79
+ &::after {
80
+ height: calc(1rem * var(--line-height, 1.5));
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ @supports selector(:has(*)) {
87
+ [role="search"],
88
+ [role="group"] {
89
+ &:has(
90
+ button:focus,
91
+ [type="submit"]:focus,
92
+ [type="button"]:focus,
93
+ [role="button"]:focus
94
+ ) {
95
+ --group-shadow: var(--group-shadow-focus-button);
96
+
97
+ & input:not([type="checkbox"], [type="radio"]),
98
+ & select {
99
+ border-color: transparent;
100
+ }
101
+ }
102
+
103
+ &:has(input:not([type="submit"], [type="button"]):focus, select:focus) {
104
+ --group-shadow: var(--group-shadow-focus-input);
105
+
106
+ & button,
107
+ & [type="submit"],
108
+ & [type="button"],
109
+ & [role="button"] {
110
+ --button-shadow: 0 0 0 var(--border-size)
111
+ var(--color-primary-fill);
112
+ --button-shadow-hover: 0 0 0 var(--border-size)
113
+ var(--color-primary-fill-hover);
114
+ }
115
+ }
116
+
117
+ & button:focus,
118
+ & [type="submit"]:focus,
119
+ & [type="reset"]:focus,
120
+ & [type="button"]:focus,
121
+ & [role="button"]:focus {
122
+ box-shadow: none;
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,14 @@
1
+ /* [role="search"] shares most of its styles with [role="group"] */
2
+ /* See _role-group.css for the shared styles */
3
+
4
+ [role="search"] {
5
+ & > :first-child {
6
+ border-top-left-radius: 5rem;
7
+ border-bottom-left-radius: 5rem;
8
+ }
9
+
10
+ & > :last-child {
11
+ border-top-right-radius: 5rem;
12
+ border-bottom-right-radius: 5rem;
13
+ }
14
+ }
@@ -0,0 +1,122 @@
1
+ [role="status"],
2
+ [role="alert"] {
3
+ --color-background: light-dark(
4
+ color-mix(in srgb, var(--color-slate-50) 25%, white),
5
+ color-mix(in srgb, var(--color-slate-50), transparent 95%)
6
+ );
7
+ --border-color: var(--dialog-border);
8
+ --alert-size: var(--border-size);
9
+
10
+ color: var(--color-text);
11
+ padding: var(--spacing);
12
+ margin-bottom: var(--spacing);
13
+ border-radius: var(--radius);
14
+ border: var(--border-size) solid var(--border-color);
15
+ border-inline-start-width: var(--alert-size);
16
+ border-inline-start-color: var(--dialog-border);
17
+ background: var(--color-background);
18
+
19
+ &:is(.ghost, .subtle) {
20
+ --alert-size: calc(var(--border-size) * 4);
21
+ }
22
+
23
+ /* Opening animation using @starting-style (Chrome 117+, Firefox 129+, Safari 17.4+) */
24
+ /* Gracefully degrades to instant appearance in unsupported browsers */
25
+ transition: opacity 0.2s ease-in-out, top 0.2s ease-in-out, right 0.2s ease-in-out, left 0.2s ease-in-out, bottom 0.2s ease-in-out;
26
+
27
+ &[popover] {
28
+ display: none;
29
+ box-shadow: var(--shadow);
30
+ left: unset;
31
+ right: 0;
32
+ bottom: 0;
33
+ top: unset;
34
+ margin: var(--spacing);
35
+
36
+ &:popover-open {
37
+ display: flex;
38
+ }
39
+
40
+ &[data-placement="top-start"] {
41
+ left: 0;
42
+ right: unset;
43
+ top: 0;
44
+ bottom: unset;
45
+ }
46
+
47
+ &[data-placement="top-center"] {
48
+ right: 50%;
49
+ transform: translateX(50%);
50
+ top: 0;
51
+ bottom: unset;
52
+ }
53
+
54
+ &[data-placement="top-end"] {
55
+ right: 0;
56
+ top: 0;
57
+ bottom: unset;
58
+ }
59
+
60
+ &[data-placement="middle-start"] {
61
+ left: 0;
62
+ right: unset;
63
+ bottom: 50%;
64
+ transform: translateY(50%);
65
+ }
66
+
67
+ &[data-placement="middle-center"] {
68
+ right: 50%;
69
+ transform: translate(50%, 50%);
70
+ bottom: 50%;
71
+ }
72
+
73
+ &[data-placement="middle-end"] {
74
+ right: 0;
75
+ bottom: 50%;
76
+ transform: translateY(50%);
77
+ }
78
+
79
+ &[data-placement="bottom-start"] {
80
+ left: 0;
81
+ right: unset;
82
+ bottom: 0;
83
+ }
84
+
85
+ &[data-placement="bottom-center"] {
86
+ right: 50%;
87
+ transform: translateX(50%);
88
+ bottom: 0;
89
+ }
90
+
91
+ &[data-placement="bottom-end"] {
92
+ right: 0;
93
+ bottom: 0;
94
+ }
95
+ }
96
+ }
97
+
98
+ @starting-style {
99
+ :is([role="status"], [role="alert"]):popover-open {
100
+ opacity: 0;
101
+
102
+ &:not([data-placement]) {
103
+ right: -20px;
104
+ }
105
+
106
+ &[data-placement$="start"] {
107
+ left: -20px;
108
+ }
109
+
110
+ &[data-placement="top-center"] {
111
+ top: -20px;
112
+ }
113
+
114
+ &[data-placement="bottom-center"] {
115
+ bottom: -20px;
116
+ }
117
+
118
+ &[data-placement$="end"] {
119
+ right: -20px;
120
+ }
121
+ }
122
+ }
@@ -4,7 +4,7 @@
4
4
  width: fit-content;
5
5
  }
6
6
 
7
- :not(a, button, input, [role=button])[aria-describedby] {
7
+ :not(a, button, dialog, input, [role=button])[aria-describedby] {
8
8
  border-bottom: 1px dotted;
9
9
  text-decoration: none;
10
10
  cursor: help;
@@ -75,8 +75,7 @@ button:focus, button:is([aria-current]:not([aria-current=false])):focus,
75
75
  }
76
76
 
77
77
  [type=reset],
78
- [type=file]::file-selector-button,
79
- [aria-label="Close"] {
78
+ [type=file]::file-selector-button {
80
79
  --color-background: var(--color-secondary-fill);
81
80
  --border-color: var(--color-secondary-fill);
82
81
  --color-text: var(--color-secondary-on-fill);
@@ -84,15 +83,13 @@ button:focus, button:is([aria-current]:not([aria-current=false])):focus,
84
83
  }
85
84
 
86
85
  [type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
87
- [type=file]::file-selector-button:is(:hover, :active, :focus),
88
- [aria-label="Close"]:is(:hover, :active, :focus) {
86
+ [type=file]::file-selector-button:is(:hover, :active, :focus) {
89
87
  --color-background: var(--color-secondary-fill-hover);
90
88
  --border-color: var(--color-secondary-fill-hover);
91
89
  --color-text: var(--color-secondary-on-fill);
92
90
  }
93
91
 
94
92
  [type=reset]:focus,
95
- [aria-label="Close"]:focus,
96
93
  [type=reset]:is([aria-current]:not([aria-current=false])):focus,
97
94
  [type=file]::file-selector-button:focus {
98
95
  --shadow: var(--button-shadow-hover, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-size) var(--color-secondary-focus-ring);
@@ -19,7 +19,7 @@ dialog {
19
19
  border-radius: var(--radius);
20
20
  background: var(--dialog-fill);
21
21
  box-shadow: var(--dialog-shadow);
22
- border: 0;
22
+ border: var(--border-size) solid var(--border-color);
23
23
 
24
24
  /* Opening animation using @starting-style (Chrome 117+, Firefox 129+, Safari 17.4+) */
25
25
  /* Gracefully degrades to instant appearance in unsupported browsers */
@@ -52,6 +52,9 @@ dialog {
52
52
  margin-inline: calc(var(--spacing) * -1);
53
53
  padding-inline: var(--spacing);
54
54
  background-color: var(--dialog-section-fill);
55
+ display: flex;
56
+ gap: calc(var(--nav-link-gap) * 1.5);
57
+ align-items: center;
55
58
  }
56
59
 
57
60
  /* Header styling */
@@ -60,6 +63,7 @@ dialog {
60
63
  border-bottom: var(--border-size) solid var(--dialog-section-border);
61
64
  border-top-right-radius: var(--radius);
62
65
  border-top-left-radius: var(--radius);
66
+ justify-content: space-between;
63
67
  }
64
68
 
65
69
  /* Footer styling */
@@ -68,35 +72,11 @@ dialog {
68
72
  border-top: var(--border-size) solid var(--dialog-section-border);
69
73
  border-bottom-right-radius: var(--radius);
70
74
  border-bottom-left-radius: var(--radius);
71
- display: flex;
72
75
  justify-content: end;
73
- gap: calc(var(--nav-link-gap) * 1.5);
74
76
  }
75
77
 
76
- /* Close button styling */
77
- [rel=prev] {
78
- margin: 0;
79
- padding: 0;
80
- position: absolute;
81
- display: block;
82
- width: 1rem;
83
- height: 1rem;
84
- top: calc(var(--spacing) * .66);
85
- right: var(--spacing);
86
- border: none;
87
- border-radius: 0;
88
- background-image: var(--icon-close);
89
- background-position: center;
90
- background-size: auto 1rem;
91
- background-repeat: no-repeat;
92
- background-color: transparent;
93
- box-shadow: none;
94
- opacity: 0.5;
95
- transition: opacity var(--transition);
96
-
97
- &:hover {
98
- opacity: 1;
99
- }
78
+ > :last-child:is(hgroup, h1, h2, h3, h4, h5, h6) {
79
+ margin-bottom: 0;
100
80
  }
101
81
  }
102
82
 
@@ -8,8 +8,12 @@ nav {
8
8
  justify-content: space-between;
9
9
  overflow: visible;
10
10
 
11
- & > * {
11
+ > * {
12
12
  margin: 0 !important;
13
+
14
+ &:only-child {
15
+ flex-grow: 1;
16
+ }
13
17
  }
14
18
 
15
19
  &[aria-label=breadcrumb] {
@@ -1,7 +1,10 @@
1
1
  @import "./attributes/_aria-busy.css";
2
+ @import "./attributes/_aria-disabled.css";
2
3
  @import "./attributes/_hidden.css";
3
4
  @import "./attributes/_popover.css";
4
- @import "./attributes/_role-group-search.css";
5
+ @import "./attributes/_role-group.css";
6
+ @import "./attributes/_role-search.css";
7
+ @import "./attributes/_role-status-alert.css";
5
8
  @import "./attributes/_role-toolbar.css";
6
9
  @import "./attributes/_role-tooltip.css";
7
10
 
@@ -6,6 +6,10 @@
6
6
  box-shadow: var(--shadow-sm) !important;
7
7
  }
8
8
 
9
+ .shadow-md {
10
+ box-shadow: var(--shadow-md) !important;
11
+ }
12
+
9
13
  .shadow-lg {
10
14
  box-shadow: var(--shadow-lg) !important;
11
15
  }