@owodesign/owoui 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.
@@ -0,0 +1,99 @@
1
+ .ui-skeleton {
2
+ --ui-skeleton-scan-duration: 3.6s;
3
+ position: relative;
4
+ overflow: hidden;
5
+ background: var(--skeleton-bg);
6
+ box-shadow: inset 0 1px 0 var(--skeleton-top-highlight);
7
+ transform: translateZ(0);
8
+ }
9
+
10
+ .ui-skeleton[data-tone='emphasis'] {
11
+ background: var(--skeleton-bg-emphasis);
12
+ }
13
+
14
+ .ui-skeleton::before {
15
+ content: "";
16
+ position: absolute;
17
+ inset: 0;
18
+ background: inherit;
19
+ opacity: 0.84;
20
+ }
21
+
22
+ .ui-skeleton::after {
23
+ content: "";
24
+ position: absolute;
25
+ inset: -35%;
26
+ background: var(--skeleton-sheen);
27
+ transform: translateX(-140%) skewX(-14deg);
28
+ opacity: 0;
29
+ will-change: transform, opacity;
30
+ }
31
+
32
+ .ui-skeleton[data-animation='pulse']::after {
33
+ display: none;
34
+ }
35
+
36
+ .ui-skeleton[data-animation='pulse']::before {
37
+ animation: ui-skeleton-breathe 2.6s var(--ease-standard) infinite;
38
+ }
39
+
40
+ .ui-skeleton[data-animation='scan']::before {
41
+ opacity: 1;
42
+ filter: none;
43
+ }
44
+
45
+ .ui-skeleton[data-animation='scan']::after {
46
+ opacity: 1;
47
+ animation: ui-skeleton-scan var(--ui-skeleton-scan-duration) cubic-bezier(0.3, 0, 0.2, 1) infinite;
48
+ }
49
+
50
+ @keyframes ui-skeleton-breathe {
51
+ 0%,
52
+ 100% {
53
+ opacity: 0.8;
54
+ filter: saturate(0.96) brightness(0.98);
55
+ }
56
+
57
+ 50% {
58
+ opacity: 1;
59
+ filter: saturate(1.04) brightness(1.04);
60
+ }
61
+ }
62
+
63
+ @keyframes ui-skeleton-scan {
64
+ 0% {
65
+ transform: translateX(-140%) skewX(-14deg);
66
+ opacity: 0;
67
+ }
68
+
69
+ 18% {
70
+ opacity: 0.82;
71
+ }
72
+
73
+ 52% {
74
+ transform: translateX(6%) skewX(-14deg);
75
+ opacity: 1;
76
+ }
77
+
78
+ 82% {
79
+ opacity: 0.82;
80
+ }
81
+
82
+ 100% {
83
+ transform: translateX(140%) skewX(-14deg);
84
+ opacity: 0;
85
+ }
86
+ }
87
+
88
+ @media (prefers-reduced-motion: reduce) {
89
+ .ui-skeleton::before {
90
+ animation: none;
91
+ opacity: 0.94;
92
+ filter: none;
93
+ }
94
+
95
+ .ui-skeleton::after {
96
+ animation: none;
97
+ opacity: 0;
98
+ }
99
+ }
@@ -0,0 +1,41 @@
1
+ .ui-status-notice {
2
+ --status-notice-bg: var(--feedback-neutral-bg);
3
+ --status-notice-border: var(--feedback-neutral-border);
4
+ --status-notice-text: var(--feedback-neutral-text);
5
+ --status-notice-icon: var(--feedback-neutral-icon);
6
+ background: var(--status-notice-bg);
7
+ border-color: var(--status-notice-border);
8
+ color: var(--status-notice-text);
9
+ }
10
+
11
+ .ui-status-notice__icon {
12
+ color: var(--status-notice-icon);
13
+ }
14
+
15
+ .ui-status-notice[data-tone="info"] {
16
+ --status-notice-bg: var(--feedback-info-bg);
17
+ --status-notice-border: var(--feedback-info-border);
18
+ --status-notice-text: var(--feedback-info-text);
19
+ --status-notice-icon: var(--feedback-info-icon);
20
+ }
21
+
22
+ .ui-status-notice[data-tone="success"] {
23
+ --status-notice-bg: var(--feedback-success-bg);
24
+ --status-notice-border: var(--feedback-success-border);
25
+ --status-notice-text: var(--feedback-success-text);
26
+ --status-notice-icon: var(--feedback-success-icon);
27
+ }
28
+
29
+ .ui-status-notice[data-tone="warning"] {
30
+ --status-notice-bg: var(--feedback-warning-bg);
31
+ --status-notice-border: var(--feedback-warning-border);
32
+ --status-notice-text: var(--feedback-warning-text);
33
+ --status-notice-icon: var(--feedback-warning-icon);
34
+ }
35
+
36
+ .ui-status-notice[data-tone="danger"] {
37
+ --status-notice-bg: var(--feedback-danger-bg);
38
+ --status-notice-border: var(--feedback-danger-border);
39
+ --status-notice-text: var(--feedback-danger-text);
40
+ --status-notice-icon: var(--feedback-danger-icon);
41
+ }
@@ -0,0 +1,17 @@
1
+ .ui-switch {
2
+ background: var(--color-n400);
3
+ --tw-ring-color: var(--ui-control-focus-ring);
4
+ --tw-ring-offset-color: var(--ui-surface-bg);
5
+ }
6
+
7
+ .ui-switch[aria-checked="true"] {
8
+ background: var(--ui-accent-bg);
9
+ }
10
+
11
+ .ui-switch:hover:not(:disabled) {
12
+ background: var(--color-n500);
13
+ }
14
+
15
+ .ui-switch[aria-checked="true"]:hover:not(:disabled) {
16
+ background: var(--ui-accent-bg-hover);
17
+ }
@@ -0,0 +1,57 @@
1
+ .ui-toast {
2
+ --toast-bg: var(--feedback-neutral-bg);
3
+ --toast-border: var(--feedback-neutral-border);
4
+ --toast-text: var(--feedback-neutral-text);
5
+ --toast-icon: var(--feedback-neutral-icon);
6
+ background: var(--toast-bg);
7
+ border-color: var(--toast-border);
8
+ color: var(--toast-text);
9
+ box-shadow: var(--toast-shadow, var(--ui-surface-shadow-strong));
10
+ }
11
+
12
+ .ui-toast__icon {
13
+ color: var(--toast-icon);
14
+ }
15
+
16
+ .ui-toast__title {
17
+ color: inherit;
18
+ }
19
+
20
+ .ui-toast[data-tone="success"] {
21
+ --toast-bg: var(--feedback-success-bg);
22
+ --toast-border: var(--feedback-success-border);
23
+ --toast-text: var(--feedback-success-text);
24
+ --toast-icon: var(--feedback-success-icon);
25
+ }
26
+
27
+ .ui-toast[data-tone="warning"] {
28
+ --toast-bg: var(--feedback-warning-bg);
29
+ --toast-border: var(--feedback-warning-border);
30
+ --toast-text: var(--feedback-warning-text);
31
+ --toast-icon: var(--feedback-warning-icon);
32
+ }
33
+
34
+ .ui-toast[data-tone="danger"] {
35
+ --toast-bg: var(--feedback-danger-bg);
36
+ --toast-border: var(--feedback-danger-border);
37
+ --toast-text: var(--feedback-danger-text);
38
+ --toast-icon: var(--feedback-danger-icon);
39
+ }
40
+
41
+ .ui-toast[data-tone="info"] {
42
+ --toast-bg: var(--feedback-info-bg);
43
+ --toast-border: var(--feedback-info-border);
44
+ --toast-text: var(--feedback-info-text);
45
+ --toast-icon: var(--feedback-info-icon);
46
+ }
47
+
48
+ @keyframes toast-in {
49
+ from {
50
+ opacity: 0;
51
+ transform: translateY(8px) scale(0.96);
52
+ }
53
+ to {
54
+ opacity: 1;
55
+ transform: translateY(0) scale(1);
56
+ }
57
+ }
@@ -0,0 +1,26 @@
1
+ .ui-tooltip {
2
+ --tooltip-bg: var(--ui-surface-bg-raised);
3
+ --tooltip-border: var(--ui-surface-border);
4
+ --tooltip-text: var(--ui-text-primary);
5
+ --tooltip-arrow-color: var(--tooltip-bg);
6
+ background: var(--tooltip-bg);
7
+ color: var(--tooltip-text);
8
+ border: 1px solid var(--tooltip-border);
9
+ box-shadow: var(--tooltip-shadow);
10
+ }
11
+
12
+ .ui-tooltip__arrow {
13
+ color: var(--tooltip-arrow-color);
14
+ filter: drop-shadow(0 1px 0 var(--tooltip-border));
15
+ }
16
+
17
+ @keyframes tooltip-in {
18
+ from {
19
+ opacity: 0;
20
+ transform: scale(0.96);
21
+ }
22
+ to {
23
+ opacity: 1;
24
+ transform: scale(1);
25
+ }
26
+ }
package/src/tokens.css ADDED
@@ -0,0 +1 @@
1
+ @import "./styles/tokens.css";