@morphos/styles 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +25 -0
- package/src/css.d.ts +1 -0
- package/src/feedback/alert.css +32 -0
- package/src/feedback/avatar.css +42 -0
- package/src/feedback/meter.css +34 -0
- package/src/feedback/progress.css +34 -0
- package/src/feedback/spinner.css +17 -0
- package/src/feedback/toast.css +80 -0
- package/src/feedback.css +11 -0
- package/src/index.css +50 -0
- package/src/inputs/autocomplete.css +60 -0
- package/src/inputs/button.css +55 -0
- package/src/inputs/checkbox-group.css +79 -0
- package/src/inputs/checkbox.css +63 -0
- package/src/inputs/combobox.css +76 -0
- package/src/inputs/field.css +44 -0
- package/src/inputs/fieldset.css +23 -0
- package/src/inputs/form.css +8 -0
- package/src/inputs/input.css +39 -0
- package/src/inputs/number-field.css +65 -0
- package/src/inputs/otp-field.css +32 -0
- package/src/inputs/radio.css +64 -0
- package/src/inputs/select.css +104 -0
- package/src/inputs/slider.css +84 -0
- package/src/inputs/switch.css +46 -0
- package/src/inputs/toggle-group.css +51 -0
- package/src/inputs/toggle.css +37 -0
- package/src/inputs.css +22 -0
- package/src/layout/accordion.css +67 -0
- package/src/layout/disclosure.css +47 -0
- package/src/layout/menubar.css +78 -0
- package/src/layout/navigation-menu.css +87 -0
- package/src/layout/scroll-area.css +82 -0
- package/src/layout/separator.css +21 -0
- package/src/layout/tabs.css +71 -0
- package/src/layout/toolbar.css +57 -0
- package/src/layout.css +13 -0
- package/src/overlays/alert-dialog.css +100 -0
- package/src/overlays/context-menu.css +51 -0
- package/src/overlays/dialog.css +91 -0
- package/src/overlays/drawer.css +124 -0
- package/src/overlays/dropdown.css +51 -0
- package/src/overlays/popover.css +28 -0
- package/src/overlays/preview-card.css +22 -0
- package/src/overlays/tooltip.css +23 -0
- package/src/overlays.css +13 -0
- package/src/tokens.css +62 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe for @morphos/overlays `Dialog`.
|
|
3
|
+
* Apply `class="morphos-dialog-content"` to `DialogContent`,
|
|
4
|
+
* `class="morphos-dialog-title"` to `DialogTitle`,
|
|
5
|
+
* `class="morphos-dialog-description"` to `DialogDescription`, and
|
|
6
|
+
* `class="morphos-dialog-close"` to `DialogClose`. `DialogTrigger` is a
|
|
7
|
+
* plain button — pair it with the `morphos-button` recipe if you want one.
|
|
8
|
+
* `DialogContent` also renders a sibling backdrop `<div data-morphos-backdrop>`,
|
|
9
|
+
* styled below without needing its own class.
|
|
10
|
+
*/
|
|
11
|
+
[data-morphos-backdrop] {
|
|
12
|
+
position: fixed;
|
|
13
|
+
inset: 0;
|
|
14
|
+
z-index: 100;
|
|
15
|
+
background: rgba(0, 0, 0, 0.4);
|
|
16
|
+
animation: morphos-fade-in var(--morphos-transition-medium);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.morphos-dialog-content {
|
|
20
|
+
/* Portaled to document.body, so it can't inherit the page's font — set it explicitly. */
|
|
21
|
+
font-family: var(--morphos-font);
|
|
22
|
+
position: fixed;
|
|
23
|
+
top: 50%;
|
|
24
|
+
left: 50%;
|
|
25
|
+
transform: translate(-50%, -50%);
|
|
26
|
+
z-index: 101;
|
|
27
|
+
width: 100%;
|
|
28
|
+
max-width: 28rem;
|
|
29
|
+
max-height: 85vh;
|
|
30
|
+
overflow-x: hidden;
|
|
31
|
+
overflow-y: auto;
|
|
32
|
+
padding: var(--morphos-space-4);
|
|
33
|
+
background: var(--morphos-color-bg);
|
|
34
|
+
color: var(--morphos-color-text);
|
|
35
|
+
border-radius: var(--morphos-radius-lg);
|
|
36
|
+
animation: morphos-scale-in var(--morphos-transition-medium);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.morphos-dialog-content:focus-visible {
|
|
40
|
+
outline: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.morphos-dialog-title {
|
|
44
|
+
margin: 0 0 var(--morphos-space-2);
|
|
45
|
+
font-size: 1.125rem;
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.morphos-dialog-description {
|
|
50
|
+
margin: 0 0 var(--morphos-space-3);
|
|
51
|
+
color: var(--morphos-color-text-muted);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.morphos-dialog-close {
|
|
55
|
+
position: absolute;
|
|
56
|
+
top: var(--morphos-space-3);
|
|
57
|
+
right: var(--morphos-space-3);
|
|
58
|
+
border: none;
|
|
59
|
+
background: none;
|
|
60
|
+
color: var(--morphos-color-text-muted);
|
|
61
|
+
cursor: pointer;
|
|
62
|
+
line-height: 1;
|
|
63
|
+
padding: var(--morphos-space-1);
|
|
64
|
+
border-radius: var(--morphos-radius-sm);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.morphos-dialog-close:hover {
|
|
68
|
+
color: var(--morphos-color-text);
|
|
69
|
+
background: var(--morphos-color-bg-hover);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.morphos-dialog-close:focus-visible {
|
|
73
|
+
outline: none;
|
|
74
|
+
box-shadow: var(--morphos-focus-ring);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@keyframes morphos-fade-in {
|
|
78
|
+
from { opacity: 0; }
|
|
79
|
+
to { opacity: 1; }
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@keyframes morphos-scale-in {
|
|
83
|
+
from {
|
|
84
|
+
opacity: 0;
|
|
85
|
+
transform: translate(-50%, -50%) scale(0.96);
|
|
86
|
+
}
|
|
87
|
+
to {
|
|
88
|
+
opacity: 1;
|
|
89
|
+
transform: translate(-50%, -50%) scale(1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe for @morphos/overlays `Drawer`.
|
|
3
|
+
* Apply `class="morphos-drawer-content"` to `DrawerContent`,
|
|
4
|
+
* `class="morphos-drawer-title"` to `DrawerTitle`,
|
|
5
|
+
* `class="morphos-drawer-description"` to `DrawerDescription`, and
|
|
6
|
+
* `class="morphos-drawer-close"` to `DrawerClose`. `DrawerContent` also
|
|
7
|
+
* renders a sibling backdrop `<div data-morphos-backdrop>`, styled below
|
|
8
|
+
* without needing its own class. The panel slides in from `side`, read off
|
|
9
|
+
* `data-side` on the content element.
|
|
10
|
+
*/
|
|
11
|
+
[data-morphos-backdrop] {
|
|
12
|
+
position: fixed;
|
|
13
|
+
inset: 0;
|
|
14
|
+
z-index: 100;
|
|
15
|
+
background: rgba(0, 0, 0, 0.4);
|
|
16
|
+
animation: morphos-fade-in var(--morphos-transition-medium);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.morphos-drawer-content {
|
|
20
|
+
/* Portaled to document.body, so it can't inherit the page's font — set it explicitly. */
|
|
21
|
+
font-family: var(--morphos-font);
|
|
22
|
+
position: fixed;
|
|
23
|
+
z-index: 101;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
padding: var(--morphos-space-4);
|
|
27
|
+
background: var(--morphos-color-bg);
|
|
28
|
+
color: var(--morphos-color-text);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.morphos-drawer-content:focus-visible {
|
|
32
|
+
outline: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.morphos-drawer-content[data-side="right"] {
|
|
36
|
+
top: 0;
|
|
37
|
+
right: 0;
|
|
38
|
+
bottom: 0;
|
|
39
|
+
width: min(24rem, 100vw);
|
|
40
|
+
animation: morphos-slide-in-right var(--morphos-transition-medium);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.morphos-drawer-content[data-side="left"] {
|
|
44
|
+
top: 0;
|
|
45
|
+
left: 0;
|
|
46
|
+
bottom: 0;
|
|
47
|
+
width: min(24rem, 100vw);
|
|
48
|
+
animation: morphos-slide-in-left var(--morphos-transition-medium);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.morphos-drawer-content[data-side="top"] {
|
|
52
|
+
top: 0;
|
|
53
|
+
left: 0;
|
|
54
|
+
right: 0;
|
|
55
|
+
height: min(24rem, 100vh);
|
|
56
|
+
animation: morphos-slide-in-top var(--morphos-transition-medium);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.morphos-drawer-content[data-side="bottom"] {
|
|
60
|
+
bottom: 0;
|
|
61
|
+
left: 0;
|
|
62
|
+
right: 0;
|
|
63
|
+
height: min(24rem, 100vh);
|
|
64
|
+
animation: morphos-slide-in-bottom var(--morphos-transition-medium);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.morphos-drawer-title {
|
|
68
|
+
margin: 0 0 var(--morphos-space-2);
|
|
69
|
+
font-size: 1.125rem;
|
|
70
|
+
font-weight: 600;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.morphos-drawer-description {
|
|
74
|
+
margin: 0 0 var(--morphos-space-3);
|
|
75
|
+
color: var(--morphos-color-text-muted);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.morphos-drawer-close {
|
|
79
|
+
position: absolute;
|
|
80
|
+
top: var(--morphos-space-3);
|
|
81
|
+
right: var(--morphos-space-3);
|
|
82
|
+
border: none;
|
|
83
|
+
background: none;
|
|
84
|
+
color: var(--morphos-color-text-muted);
|
|
85
|
+
cursor: pointer;
|
|
86
|
+
line-height: 1;
|
|
87
|
+
padding: var(--morphos-space-1);
|
|
88
|
+
border-radius: var(--morphos-radius-sm);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.morphos-drawer-close:hover {
|
|
92
|
+
color: var(--morphos-color-text);
|
|
93
|
+
background: var(--morphos-color-bg-hover);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.morphos-drawer-close:focus-visible {
|
|
97
|
+
outline: none;
|
|
98
|
+
box-shadow: var(--morphos-focus-ring);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@keyframes morphos-fade-in {
|
|
102
|
+
from { opacity: 0; }
|
|
103
|
+
to { opacity: 1; }
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@keyframes morphos-slide-in-right {
|
|
107
|
+
from { transform: translateX(100%); }
|
|
108
|
+
to { transform: translateX(0); }
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@keyframes morphos-slide-in-left {
|
|
112
|
+
from { transform: translateX(-100%); }
|
|
113
|
+
to { transform: translateX(0); }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@keyframes morphos-slide-in-top {
|
|
117
|
+
from { transform: translateY(-100%); }
|
|
118
|
+
to { transform: translateY(0); }
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@keyframes morphos-slide-in-bottom {
|
|
122
|
+
from { transform: translateY(100%); }
|
|
123
|
+
to { transform: translateY(0); }
|
|
124
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe for @morphos/overlays `Dropdown` (also exported as `Menu`).
|
|
3
|
+
* Apply `class="morphos-dropdown-menu"` to `DropdownMenu` and
|
|
4
|
+
* `class="morphos-dropdown-item"` to each `DropdownItem`.
|
|
5
|
+
* `DropdownTrigger` is a plain button — pair it with the `morphos-button`
|
|
6
|
+
* recipe if you want one.
|
|
7
|
+
*/
|
|
8
|
+
.morphos-dropdown-menu {
|
|
9
|
+
/* Portaled to document.body, so it can't inherit the page's font — set it explicitly. */
|
|
10
|
+
font-family: var(--morphos-font);
|
|
11
|
+
z-index: 100;
|
|
12
|
+
min-width: 10rem;
|
|
13
|
+
margin: 0;
|
|
14
|
+
padding: var(--morphos-space-1);
|
|
15
|
+
list-style: none;
|
|
16
|
+
color: var(--morphos-color-text);
|
|
17
|
+
background: var(--morphos-color-bg);
|
|
18
|
+
border: 1px solid var(--morphos-color-border);
|
|
19
|
+
border-radius: var(--morphos-radius-md);
|
|
20
|
+
animation: morphos-fade-in var(--morphos-transition-fast);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.morphos-dropdown-menu:focus-visible {
|
|
24
|
+
outline: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.morphos-dropdown-item {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: space-between;
|
|
31
|
+
gap: var(--morphos-space-2);
|
|
32
|
+
padding: var(--morphos-space-2) var(--morphos-space-3);
|
|
33
|
+
border-radius: var(--morphos-radius-sm);
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.morphos-dropdown-item:hover,
|
|
38
|
+
.morphos-dropdown-item:focus-visible {
|
|
39
|
+
outline: none;
|
|
40
|
+
background: var(--morphos-color-bg-hover);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.morphos-dropdown-item[data-disabled] {
|
|
44
|
+
opacity: 0.5;
|
|
45
|
+
cursor: not-allowed;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@keyframes morphos-fade-in {
|
|
49
|
+
from { opacity: 0; }
|
|
50
|
+
to { opacity: 1; }
|
|
51
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe for @morphos/overlays `Popover`.
|
|
3
|
+
* Apply `class="morphos-popover-content"` to `PopoverContent`.
|
|
4
|
+
* `PopoverTrigger` is a plain button — pair it with the `morphos-button`
|
|
5
|
+
* recipe if you want one.
|
|
6
|
+
*/
|
|
7
|
+
.morphos-popover-content {
|
|
8
|
+
/* Portaled to document.body, so it can't inherit the page's font — set it explicitly. */
|
|
9
|
+
font-family: var(--morphos-font);
|
|
10
|
+
z-index: 100;
|
|
11
|
+
min-width: 12rem;
|
|
12
|
+
max-width: 24rem;
|
|
13
|
+
padding: var(--morphos-space-4);
|
|
14
|
+
color: var(--morphos-color-text);
|
|
15
|
+
background: var(--morphos-color-bg);
|
|
16
|
+
border: 1px solid var(--morphos-color-border);
|
|
17
|
+
border-radius: var(--morphos-radius-lg);
|
|
18
|
+
animation: morphos-fade-in var(--morphos-transition-fast);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.morphos-popover-content:focus-visible {
|
|
22
|
+
outline: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@keyframes morphos-fade-in {
|
|
26
|
+
from { opacity: 0; }
|
|
27
|
+
to { opacity: 1; }
|
|
28
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe for @morphos/overlays `PreviewCard`.
|
|
3
|
+
* Apply `class="morphos-preview-card-content"` to `PreviewCardContent`.
|
|
4
|
+
* `PreviewCardTrigger` is a plain inline `<span>` — no styling needed.
|
|
5
|
+
*/
|
|
6
|
+
.morphos-preview-card-content {
|
|
7
|
+
/* Portaled to document.body, so it can't inherit the page's font — set it explicitly. */
|
|
8
|
+
font-family: var(--morphos-font);
|
|
9
|
+
z-index: 100;
|
|
10
|
+
width: 20rem;
|
|
11
|
+
padding: var(--morphos-space-4);
|
|
12
|
+
color: var(--morphos-color-text);
|
|
13
|
+
background: var(--morphos-color-bg);
|
|
14
|
+
border: 1px solid var(--morphos-color-border);
|
|
15
|
+
border-radius: var(--morphos-radius-lg);
|
|
16
|
+
animation: morphos-fade-in var(--morphos-transition-fast);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@keyframes morphos-fade-in {
|
|
20
|
+
from { opacity: 0; }
|
|
21
|
+
to { opacity: 1; }
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe for @morphos/overlays `Tooltip`.
|
|
3
|
+
* Apply `class="morphos-tooltip-content"` to `TooltipContent`.
|
|
4
|
+
* `TooltipTrigger` is a plain inline `<span>` — no styling needed.
|
|
5
|
+
*/
|
|
6
|
+
.morphos-tooltip-content {
|
|
7
|
+
/* Portaled to document.body, so it can't inherit the page's font — set it explicitly. */
|
|
8
|
+
font-family: var(--morphos-font);
|
|
9
|
+
z-index: 100;
|
|
10
|
+
max-width: 20rem;
|
|
11
|
+
padding: var(--morphos-space-1) var(--morphos-space-2);
|
|
12
|
+
font-size: 0.8125rem;
|
|
13
|
+
line-height: 1.4;
|
|
14
|
+
color: var(--morphos-color-accent-text);
|
|
15
|
+
background: var(--morphos-color-text);
|
|
16
|
+
border-radius: var(--morphos-radius-sm);
|
|
17
|
+
animation: morphos-fade-in var(--morphos-transition-fast);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@keyframes morphos-fade-in {
|
|
21
|
+
from { opacity: 0; }
|
|
22
|
+
to { opacity: 1; }
|
|
23
|
+
}
|
package/src/overlays.css
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All @morphos/overlays recipes in one file. Prefer importing individual
|
|
3
|
+
* files from `@morphos/styles/overlays/*.css` if you only need a few.
|
|
4
|
+
*/
|
|
5
|
+
@import "./tokens.css";
|
|
6
|
+
@import "./overlays/dialog.css";
|
|
7
|
+
@import "./overlays/tooltip.css";
|
|
8
|
+
@import "./overlays/popover.css";
|
|
9
|
+
@import "./overlays/dropdown.css";
|
|
10
|
+
@import "./overlays/alert-dialog.css";
|
|
11
|
+
@import "./overlays/drawer.css";
|
|
12
|
+
@import "./overlays/context-menu.css";
|
|
13
|
+
@import "./overlays/preview-card.css";
|
package/src/tokens.css
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design tokens shared by every Morphos component recipe.
|
|
3
|
+
* Deliberately flat and light — no elevation shadows, borders carry all
|
|
4
|
+
* separation, and every surface stays on a light, neutral background.
|
|
5
|
+
* Override any of these custom properties in your own stylesheet to retheme
|
|
6
|
+
* the whole set (including adding a dark variant); nothing below is
|
|
7
|
+
* required, it only feeds the recipes.
|
|
8
|
+
*/
|
|
9
|
+
:root {
|
|
10
|
+
--morphos-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
|
11
|
+
|
|
12
|
+
--morphos-color-bg: #ffffff;
|
|
13
|
+
--morphos-color-bg-subtle: #f7f7f8;
|
|
14
|
+
--morphos-color-bg-hover: #f0f0f2;
|
|
15
|
+
--morphos-color-border: #e4e4e7;
|
|
16
|
+
--morphos-color-border-hover: #d4d4d8;
|
|
17
|
+
--morphos-color-text: #27272a;
|
|
18
|
+
--morphos-color-text-muted: #8b8b93;
|
|
19
|
+
--morphos-color-placeholder: #b4b4ba;
|
|
20
|
+
|
|
21
|
+
--morphos-color-accent: #3b82f6;
|
|
22
|
+
--morphos-color-accent-hover: #2f6fdb;
|
|
23
|
+
--morphos-color-accent-text: #ffffff;
|
|
24
|
+
|
|
25
|
+
--morphos-color-danger: #ef4444;
|
|
26
|
+
--morphos-color-danger-bg: #fef2f2;
|
|
27
|
+
--morphos-color-success: #22c55e;
|
|
28
|
+
--morphos-color-success-bg: #f0fdf4;
|
|
29
|
+
--morphos-color-warning: #f59e0b;
|
|
30
|
+
--morphos-color-warning-bg: #fffbeb;
|
|
31
|
+
--morphos-color-info: #3b82f6;
|
|
32
|
+
--morphos-color-info-bg: #eff6ff;
|
|
33
|
+
|
|
34
|
+
--morphos-radius-sm: 0.25rem;
|
|
35
|
+
--morphos-radius-md: 0.5rem;
|
|
36
|
+
--morphos-radius-lg: 0.625rem;
|
|
37
|
+
--morphos-radius-full: 9999px;
|
|
38
|
+
|
|
39
|
+
/* Flat by default — kept as tokens so a theme can opt back into elevation. */
|
|
40
|
+
--morphos-shadow-sm: none;
|
|
41
|
+
--morphos-shadow-md: none;
|
|
42
|
+
--morphos-shadow-lg: none;
|
|
43
|
+
|
|
44
|
+
--morphos-space-1: 0.25rem;
|
|
45
|
+
--morphos-space-2: 0.5rem;
|
|
46
|
+
--morphos-space-3: 0.75rem;
|
|
47
|
+
--morphos-space-4: 1rem;
|
|
48
|
+
|
|
49
|
+
--morphos-transition-fast: 120ms ease;
|
|
50
|
+
--morphos-transition-medium: 200ms ease;
|
|
51
|
+
|
|
52
|
+
--morphos-focus-ring: 0 0 0 2px var(--morphos-color-bg), 0 0 0 4px var(--morphos-color-accent);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* Every recipe below assumes border-box sizing (e.g. `width: 100%` combined
|
|
57
|
+
* with padding/border on inputs and triggers). Scoped to morphos-* classes
|
|
58
|
+
* only — this never touches the rest of your page.
|
|
59
|
+
*/
|
|
60
|
+
[class*="morphos-"] {
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
}
|