dynaura 0.0.0-stage → 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,161 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..700&display=swap");
2
+
3
+ .dynaura-root {
4
+ --dynaura-font: "Bricolage Grotesque", -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;
5
+ --dynaura-spring: cubic-bezier(0.34, 1.45, 0.64, 1); /* fallback: overshoot curve */
6
+ --dynaura-duration: 700ms;
7
+ --dynaura-bg: #000;
8
+ --dynaura-fg: #fff;
9
+ --dynaura-muted: rgba(255, 255, 255, 0.62);
10
+ --dynaura-ring: rgba(255, 255, 255, 0.08);
11
+ --dynaura-btn: rgba(255, 255, 255, 0.14);
12
+ --dynaura-success: #30d158;
13
+ --dynaura-error: #ff453a;
14
+ --dynaura-warning: #ffd60a;
15
+ --dynaura-info: #0a84ff;
16
+ --dynaura-loading: #8e8e93;
17
+ --dynaura-live: #ff9f0a;
18
+ position: fixed;
19
+ left: 0; right: 0;
20
+ box-sizing: border-box;
21
+ padding: 0 var(--dynaura-offset);
22
+ display: flex;
23
+ justify-content: center;
24
+ pointer-events: none;
25
+ z-index: 2147483647;
26
+ font: 500 14px/1.3 var(--dynaura-font);
27
+ -webkit-font-smoothing: antialiased;
28
+ }
29
+ @supports (transition-timing-function: linear(0, 1)) {
30
+ .dynaura-root {
31
+ --dynaura-spring: linear(0, 0.0308, 0.1098, 0.2188, 0.3433, 0.4716, 0.5951, 0.708, 0.8066, 0.8891, 0.9552, 1.0055, 1.0416, 1.0651, 1.0784, 1.0833, 1.0821, 1.0763, 1.0677, 1.0576, 1.0468, 1.0364, 1.0267, 1.0181, 1.0109, 1.005, 1.0005, 0.9972, 0.995, 0.9937, 0.9931, 0.9931, 0.9935, 0.9941, 0.995, 0.9959, 0.9967, 0.9976, 0.9983, 0.9989, 0.9995, 0.9999, 1.0002, 1.0004, 1.0005, 1.0006, 1.0006, 1.0006, 1);
32
+ }
33
+ }
34
+ .dynaura-root [hidden] { display: none !important; }
35
+ .dynaura-root[data-theme="light"] {
36
+ --dynaura-bg: #fff; --dynaura-fg: #111; --dynaura-muted: rgba(0, 0, 0, 0.55);
37
+ --dynaura-ring: rgba(0, 0, 0, 0.08); --dynaura-btn: rgba(0, 0, 0, 0.07);
38
+ --dynaura-success: #1a7f37; --dynaura-error: #cf2a1f; --dynaura-warning: #9a6700;
39
+ --dynaura-info: #0969da; --dynaura-loading: #5f6368; --dynaura-live: #b25000;
40
+ }
41
+ @media (prefers-color-scheme: light) {
42
+ .dynaura-root[data-theme="system"] {
43
+ --dynaura-bg: #fff; --dynaura-fg: #111; --dynaura-muted: rgba(0, 0, 0, 0.55);
44
+ --dynaura-ring: rgba(0, 0, 0, 0.08); --dynaura-btn: rgba(0, 0, 0, 0.07);
45
+ --dynaura-success: #1a7f37; --dynaura-error: #cf2a1f; --dynaura-warning: #9a6700;
46
+ --dynaura-info: #0969da; --dynaura-loading: #5f6368; --dynaura-live: #b25000;
47
+ }
48
+ }
49
+ .dynaura-root[data-y="top"] { top: calc(var(--dynaura-offset) + env(safe-area-inset-top, 0px)); }
50
+ .dynaura-root[data-y="bottom"] { bottom: calc(var(--dynaura-offset) + env(safe-area-inset-bottom, 0px)); }
51
+ .dynaura-root[data-x="left"] { justify-content: flex-start; --ox: 0%; }
52
+ .dynaura-root[data-x="center"] { justify-content: center; --ox: 50%; }
53
+ .dynaura-root[data-x="right"] { justify-content: flex-end; --ox: 100%; }
54
+ .dynaura-root[data-y="top"] { --oy: 0%; }
55
+ .dynaura-root[data-y="bottom"] { --oy: 100%; }
56
+
57
+ .dynaura-drag { pointer-events: auto; touch-action: none; transition: transform var(--dynaura-duration) var(--dynaura-spring); }
58
+
59
+ .dynaura-island {
60
+ --state: var(--dynaura-loading);
61
+ position: relative;
62
+ overflow: hidden;
63
+ color: var(--dynaura-fg);
64
+ background: var(--dynaura-bg);
65
+ box-shadow: 0 0 0 1px var(--dynaura-ring), 0 12px 32px -10px rgba(0, 0, 0, 0.4), 0 16px 28px -18px var(--state);
66
+ transform-origin: var(--ox, 50%) var(--oy, 0%);
67
+ animation: dynaura-in var(--dynaura-duration) var(--dynaura-spring) backwards;
68
+ user-select: none;
69
+ -webkit-user-select: none;
70
+ }
71
+ .dynaura-island[data-open="false"] { animation: dynaura-out 380ms cubic-bezier(0.4, 0, 1, 1) both; pointer-events: none; }
72
+ .dynaura-island[data-ready="true"] {
73
+ transition: width var(--dynaura-duration) var(--dynaura-spring),
74
+ height var(--dynaura-duration) var(--dynaura-spring),
75
+ border-radius var(--dynaura-duration) var(--dynaura-spring),
76
+ box-shadow 400ms ease;
77
+ }
78
+ .dynaura-island[data-expanded="true"] { box-shadow: 0 0 0 1px var(--dynaura-ring), 0 20px 48px -12px rgba(0, 0, 0, 0.45), 0 24px 36px -20px var(--state); }
79
+ .dynaura-island[data-type="success"] { --state: var(--dynaura-success); }
80
+ .dynaura-island[data-type="error"] { --state: var(--dynaura-error); }
81
+ .dynaura-island[data-type="warning"] { --state: var(--dynaura-warning); }
82
+ .dynaura-island[data-type="info"] { --state: var(--dynaura-info); }
83
+ .dynaura-island[data-type="live"] { --state: var(--dynaura-live); }
84
+
85
+ .dynaura-inner { position: absolute; top: 0; left: 0; width: max-content; max-width: min(380px, 92vw); }
86
+ .dynaura-island[data-expanded="true"] .dynaura-inner { min-width: min(320px, 92vw); }
87
+
88
+ .dynaura-row { display: flex; align-items: center; gap: 12px; width: max-content; padding: 10px 20px 10px 12px; min-height: 44px; box-sizing: border-box; }
89
+ .dynaura-island[data-expanded="true"] .dynaura-row { padding-top: 14px; }
90
+ .dynaura-badge {
91
+ display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; flex: none;
92
+ color: var(--state); background: var(--dynaura-btn); background: color-mix(in srgb, var(--state) 16%, transparent);
93
+ animation: dynaura-pop 500ms var(--dynaura-spring) both;
94
+ }
95
+ .dynaura-title { white-space: nowrap; animation: dynaura-text 450ms ease-out both; }
96
+ .dynaura-trailing { display: flex; align-items: center; margin-left: 4px; color: var(--dynaura-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
97
+
98
+ /* rolling digits */
99
+ .dynaura-digit, .dynaura-char { display: inline-block; height: 1.3em; line-height: 1.3em; }
100
+ .dynaura-digit { overflow: hidden; }
101
+ .dynaura-strip { display: block; transform: translateY(calc(var(--d, 0) * -1.3em)); transition: transform 600ms var(--dynaura-spring); }
102
+ .dynaura-strip i { display: block; font-style: normal; height: 1.3em; }
103
+
104
+ .dynaura-body { padding: 2px 20px 20px 20px; opacity: 0; filter: blur(6px); transform: translateY(-6px); transition: opacity 200ms ease, filter 200ms ease, transform 200ms ease; pointer-events: none; }
105
+ .dynaura-island[data-expanded="true"] .dynaura-body { opacity: 1; filter: none; transform: none; pointer-events: auto; transition-duration: 450ms; transition-delay: 90ms; }
106
+ .dynaura-desc { color: var(--dynaura-muted); font-weight: 400; line-height: 1.5; padding-left: 38px; }
107
+ .dynaura-button {
108
+ all: unset; box-sizing: border-box; cursor: pointer; display: inline-block; margin: 16px 0 0 38px; padding: 8px 16px; border-radius: 999px;
109
+ background: var(--dynaura-btn); color: var(--state); font: 600 13px/1.3 var(--dynaura-font);
110
+ transition: transform 200ms var(--dynaura-spring), background 150ms;
111
+ }
112
+ .dynaura-button:hover { background: var(--dynaura-btn); background: color-mix(in srgb, var(--state) 22%, transparent); }
113
+ .dynaura-button:active { transform: scale(0.94); }
114
+ .dynaura-button:focus-visible { outline: 2px solid var(--state); outline-offset: 2px; }
115
+
116
+ /* card variant: header tab + notch body */
117
+ .dynaura-drag[data-variant="card"] { filter: drop-shadow(0 16px 24px rgba(0, 0, 0, 0.2)) drop-shadow(0 2px 5px rgba(0, 0, 0, 0.12)); }
118
+ .dynaura-island[data-variant="card"] { box-shadow: none; }
119
+ .dynaura-island[data-variant="card"] .dynaura-title { color: var(--state); font-weight: 600; }
120
+ .dynaura-island[data-variant="card"][data-expanded="true"] .dynaura-row { padding-top: 10px; }
121
+ .dynaura-island[data-variant="card"][data-expanded="true"] .dynaura-inner { min-width: min(372px, 92vw); }
122
+ .dynaura-island[data-variant="card"] .dynaura-body { padding: 18px 24px 24px; }
123
+ .dynaura-island[data-variant="card"] .dynaura-desc { padding-left: 0; color: var(--dynaura-fg); font-weight: 400; line-height: 1.35; }
124
+ .dynaura-island[data-variant="card"] .dynaura-button {
125
+ display: block; width: 100%; margin: 22px 0 0; padding: 13px 16px; text-align: center;
126
+ background: var(--dynaura-btn); background: color-mix(in srgb, var(--state) 16%, transparent);
127
+ }
128
+
129
+ /* time-remaining / value bar */
130
+ .dynaura-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--state); opacity: 0.55; transform-origin: left; pointer-events: none; }
131
+ .dynaura-bar[data-mode="none"] { display: none; }
132
+ .dynaura-bar[data-mode="time"] { animation: dynaura-timer linear forwards; }
133
+ .dynaura-island[data-paused="true"] .dynaura-bar[data-mode="time"] { animation-play-state: paused; }
134
+ .dynaura-bar[data-mode="value"] { transform: scaleX(var(--p, 0)); transition: transform 600ms var(--dynaura-spring); opacity: 0.8; }
135
+ .dynaura-root[data-timer="false"] .dynaura-bar[data-mode="time"] { display: none; }
136
+
137
+ /* icons */
138
+ .dynaura-draw { stroke-dasharray: 30; stroke-dashoffset: 30; animation: dynaura-draw 450ms 120ms cubic-bezier(0.65, 0, 0.35, 1) forwards; }
139
+ .dynaura-spin { transform-origin: 12px 12px; animation: dynaura-rotate 800ms linear infinite; }
140
+ .dynaura-dot { width: 9px; height: 9px; border-radius: 50%; background: currentColor; animation: dynaura-pulse 1.4s ease-in-out infinite; }
141
+ .dynaura-wave { display: flex; align-items: center; gap: 2px; height: 14px; }
142
+ .dynaura-wave i { width: 3px; height: 100%; border-radius: 2px; background: currentColor; animation: dynaura-wave 900ms ease-in-out infinite; }
143
+ .dynaura-wave i:nth-child(2) { animation-delay: -0.25s; }
144
+ .dynaura-wave i:nth-child(3) { animation-delay: -0.5s; }
145
+ .dynaura-wave i:nth-child(4) { animation-delay: -0.75s; }
146
+
147
+ @keyframes dynaura-in { from { opacity: 0; transform: translateY(-14px) scale(0.4, 0.5); } to { opacity: 1; transform: none; } }
148
+ @keyframes dynaura-out { to { opacity: 0; transform: translateY(-10px) scale(0.6, 0.5); filter: blur(4px); } }
149
+ @keyframes dynaura-pop { from { transform: scale(0.3); opacity: 0; } to { transform: none; opacity: 1; } }
150
+ @keyframes dynaura-text { from { opacity: 0; filter: blur(5px); transform: translateY(4px); } to { opacity: 1; filter: none; transform: none; } }
151
+ @keyframes dynaura-draw { to { stroke-dashoffset: 0; } }
152
+ @keyframes dynaura-rotate { to { transform: rotate(360deg); } }
153
+ @keyframes dynaura-timer { from { transform: scaleX(1); } to { transform: scaleX(0); } }
154
+ @keyframes dynaura-pulse { 50% { transform: scale(0.65); opacity: 0.55; } }
155
+ @keyframes dynaura-wave { 0%, 100% { transform: scaleY(0.3); } 50% { transform: scaleY(1); } }
156
+
157
+ @media (prefers-reduced-motion: reduce) {
158
+ .dynaura-drag, .dynaura-island, .dynaura-badge, .dynaura-title, .dynaura-body, .dynaura-draw, .dynaura-strip, .dynaura-button, .dynaura-bar {
159
+ animation-duration: 1ms !important; animation-delay: 0s !important; transition-duration: 1ms !important; transition-delay: 0s !important;
160
+ }
161
+ }