stellar-drive 1.2.31 → 1.2.33
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/dist/bin/install-pwa.js
CHANGED
package/package.json
CHANGED
|
@@ -106,24 +106,62 @@
|
|
|
106
106
|
background: rgba(255, 255, 255, 0.28);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
/* ── Mobile:
|
|
109
|
+
/* ── Mobile: pill anchored above tab bar, matching desktop black glass ── */
|
|
110
110
|
@media (max-width: 767px) {
|
|
111
111
|
.demo-banner {
|
|
112
|
-
left:
|
|
113
|
-
right:
|
|
114
|
-
bottom: calc(var(--demo-banner-bottom, 0px) + env(safe-area-inset-bottom, 0px));
|
|
112
|
+
left: 1rem;
|
|
113
|
+
right: 1rem;
|
|
114
|
+
bottom: calc(var(--demo-banner-bottom, 0px) + env(safe-area-inset-bottom, 0px) + 0.5rem);
|
|
115
115
|
transform: none;
|
|
116
|
-
border-radius:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
border
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
border-radius: 12px;
|
|
117
|
+
background: rgba(0, 0, 0, 0.6);
|
|
118
|
+
backdrop-filter: blur(12px);
|
|
119
|
+
-webkit-backdrop-filter: blur(12px);
|
|
120
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
121
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
|
122
|
+
padding: 0.5rem 0.85rem;
|
|
123
|
+
font-size: 0.75rem;
|
|
124
|
+
gap: 0.5rem;
|
|
124
125
|
max-width: none;
|
|
125
126
|
white-space: normal;
|
|
126
|
-
|
|
127
|
+
flex-wrap: nowrap;
|
|
128
|
+
animation: demo-banner-rise 0.35s cubic-bezier(0.16, 1, 0.3, 1);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.demo-banner-text {
|
|
132
|
+
color: rgba(255, 255, 255, 0.95);
|
|
133
|
+
font-size: 0.75rem;
|
|
134
|
+
font-weight: 500;
|
|
135
|
+
flex: 1;
|
|
136
|
+
min-width: 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.demo-banner-subtitle {
|
|
140
|
+
color: rgba(255, 255, 255, 0.55);
|
|
141
|
+
font-size: 0.7rem;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.demo-banner-link {
|
|
145
|
+
color: rgba(255, 255, 255, 0.65);
|
|
146
|
+
background: rgba(255, 255, 255, 0.08);
|
|
147
|
+
border-radius: 6px;
|
|
148
|
+
padding: 0.2rem 0.5rem;
|
|
149
|
+
font-size: 0.68rem;
|
|
150
|
+
font-weight: 600;
|
|
151
|
+
letter-spacing: 0.03em;
|
|
152
|
+
text-transform: uppercase;
|
|
153
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
154
|
+
flex-shrink: 0;
|
|
155
|
+
white-space: nowrap;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.demo-banner-close {
|
|
159
|
+
background: rgba(255, 255, 255, 0.1);
|
|
160
|
+
color: rgba(255, 255, 255, 0.65);
|
|
161
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
162
|
+
flex-shrink: 0;
|
|
163
|
+
width: 1.35rem;
|
|
164
|
+
height: 1.35rem;
|
|
127
165
|
}
|
|
128
166
|
}
|
|
129
167
|
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@fileoverview OfflineBanner — fixed-position notification bar for offline state.
|
|
3
3
|
|
|
4
|
-
Renders a persistent
|
|
5
|
-
|
|
6
|
-
is restored — no explicit dismiss needed.
|
|
4
|
+
Renders a persistent dark glass banner when the app has no network connectivity.
|
|
5
|
+
Auto-dismisses reactively when connectivity is restored — no explicit dismiss needed.
|
|
7
6
|
|
|
8
7
|
- Desktop: pill-shaped, centered, positioned below the 64px top nav
|
|
9
8
|
(accounts for safe-area-inset-top on notch/island devices).
|
|
10
|
-
- Mobile:
|
|
11
|
-
|
|
9
|
+
- Mobile: pill-shaped, left/right 1rem inset, positioned below the island-header
|
|
10
|
+
(env(safe-area-inset-top) + 24px + 0.5rem breathing room).
|
|
12
11
|
- Only renders when `$isOnline` is `false`.
|
|
13
12
|
- No dismiss button — auto-hides on reconnect.
|
|
14
|
-
-
|
|
13
|
+
- Black glass morphism matching DemoBanner style.
|
|
15
14
|
- z-index 9000 — matches DemoBanner tier.
|
|
16
|
-
- Never overlaps top nav on desktop or island-header on mobile.
|
|
17
15
|
-->
|
|
18
16
|
<script lang="ts">
|
|
19
17
|
import { isOnline } from 'stellar-drive/stores';
|
|
@@ -49,52 +47,49 @@
|
|
|
49
47
|
gap: 0.6rem;
|
|
50
48
|
padding: 0.5rem 1.1rem;
|
|
51
49
|
border-radius: 9999px;
|
|
52
|
-
background: rgba(
|
|
50
|
+
background: rgba(0, 0, 0, 0.6);
|
|
53
51
|
backdrop-filter: blur(12px);
|
|
54
52
|
-webkit-backdrop-filter: blur(12px);
|
|
55
|
-
border: 1px solid rgba(255,
|
|
56
|
-
color: #
|
|
53
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
54
|
+
color: #fff;
|
|
57
55
|
font-size: 0.8125rem;
|
|
58
56
|
font-weight: 500;
|
|
59
57
|
letter-spacing: 0.01em;
|
|
60
58
|
white-space: nowrap;
|
|
61
59
|
max-width: calc(100vw - 2rem);
|
|
62
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.
|
|
60
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
|
63
61
|
pointer-events: none;
|
|
64
62
|
animation: offline-banner-slide-down 0.3s cubic-bezier(0.16, 1, 0.3, 1);
|
|
65
63
|
}
|
|
66
64
|
|
|
67
65
|
.offline-banner-icon {
|
|
68
66
|
flex-shrink: 0;
|
|
69
|
-
opacity: 0.
|
|
67
|
+
opacity: 0.75;
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
.offline-banner-text {
|
|
73
|
-
opacity: 0.
|
|
71
|
+
opacity: 0.9;
|
|
74
72
|
}
|
|
75
73
|
|
|
76
|
-
/* ── Mobile:
|
|
77
|
-
island-header bottom
|
|
78
|
-
|
|
79
|
-
= safe-area-inset-top + 24px.
|
|
80
|
-
Using env(safe-area-inset-top, 47px) matches the fallback the header itself uses
|
|
81
|
-
so the banner stays flush on devices that don't support env(). */
|
|
74
|
+
/* ── Mobile: pill below island-header, matching desktop black glass ──
|
|
75
|
+
island-header bottom = env(safe-area-inset-top) + 24px from viewport top.
|
|
76
|
+
+0.5rem breathing room so the pill clears the header gradient fade. */
|
|
82
77
|
@media (max-width: 767px) {
|
|
83
78
|
.offline-banner {
|
|
84
|
-
top: calc(env(safe-area-inset-top, 47px) + 24px);
|
|
85
|
-
left:
|
|
86
|
-
right:
|
|
79
|
+
top: calc(env(safe-area-inset-top, 47px) + 24px + 0.5rem);
|
|
80
|
+
left: 1rem;
|
|
81
|
+
right: 1rem;
|
|
87
82
|
transform: none;
|
|
88
|
-
border-radius:
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
border
|
|
93
|
-
|
|
83
|
+
border-radius: 12px;
|
|
84
|
+
background: rgba(0, 0, 0, 0.6);
|
|
85
|
+
backdrop-filter: blur(12px);
|
|
86
|
+
-webkit-backdrop-filter: blur(12px);
|
|
87
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
88
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
|
89
|
+
padding: 0.45rem 0.85rem;
|
|
94
90
|
font-size: 0.78rem;
|
|
95
91
|
gap: 0.5rem;
|
|
96
92
|
max-width: none;
|
|
97
|
-
white-space: normal;
|
|
98
93
|
animation: offline-banner-drop 0.3s cubic-bezier(0.16, 1, 0.3, 1);
|
|
99
94
|
}
|
|
100
95
|
}
|
|
@@ -113,7 +108,7 @@
|
|
|
113
108
|
@keyframes offline-banner-drop {
|
|
114
109
|
from {
|
|
115
110
|
opacity: 0;
|
|
116
|
-
transform: translateY(-
|
|
111
|
+
transform: translateY(-0.75rem);
|
|
117
112
|
}
|
|
118
113
|
to {
|
|
119
114
|
opacity: 1;
|