react-snackbar-glass 1.3.0 → 1.4.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/CHANGELOG.md +25 -2
- package/README.md +242 -91
- package/dist/index.css +100 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/styles.css +100 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.0] - 2026-10-28
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Surface presets via `tone`: `paper` (opaque matte, light/dark aware),
|
|
13
|
+
`graphite` (dark charcoal in both themes) and `neon` (near-black with an
|
|
14
|
+
accent glow), next to the existing `glass` and `solid`. Per-snackbar, on the
|
|
15
|
+
provider and in store config; no new prop to learn.
|
|
16
|
+
- Demo: the playground's tone switch is now a five-way surface picker with
|
|
17
|
+
swatches.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- README is now a full API reference: layouts, surfaces, sizes, animations,
|
|
22
|
+
every `SnackbarOptions` field, close reasons, the store surface and the
|
|
23
|
+
theming tokens.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Title-less cards no longer pin their message to the top edge: content is
|
|
28
|
+
centred against the icon when there is no title.
|
|
29
|
+
|
|
8
30
|
## [1.3.0] - 2026-10-28
|
|
9
31
|
|
|
10
32
|
### Added
|
|
@@ -19,8 +41,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
19
41
|
(`'slide' | 'fade' | 'scale' | 'pop' | 'flip' | 'none'`).
|
|
20
42
|
- `--prs-enter-duration` / `--prs-exit-duration` and `--prs-radius-inline`
|
|
21
43
|
CSS variables for pacing and shaping the new modes.
|
|
22
|
-
- Demo:
|
|
23
|
-
|
|
44
|
+
- Demo: replaced the showcase page with an API-first homepage — hero install
|
|
45
|
+
command, 3-step quickstart, live playground, method/option tables and theming
|
|
46
|
+
notes (`demo/src/ApiHome.tsx`).
|
|
24
47
|
|
|
25
48
|
## [1.2.0] - 2026-10-28
|
|
26
49
|
|
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# react-snackbar-glass
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Queueing, promise-aware snackbars for React — five ready-made surfaces, three
|
|
4
|
+
densities, swipe-to-dismiss and token-driven theming with **zero runtime
|
|
5
5
|
dependencies**.
|
|
6
6
|
|
|
7
|
-
- 🪟 **
|
|
7
|
+
- 🪟 **Five surfaces** — `glass`, `paper`, `solid`, `graphite`, `neon`
|
|
8
|
+
- 📐 **Three layouts** — `card`, `compact`, `inline`; `toast.single()` for one-liners
|
|
8
9
|
- 🌍 **Global `toast`** — call it from anywhere, no hook required
|
|
9
10
|
- ⏳ **Promise aware** — one call moves a snackbar through loading → success → error
|
|
10
11
|
- 👆 **Swipe to dismiss**, hover/focus/document-hidden pause, countdown hairline
|
|
11
|
-
- 📦 **Compact + minimize** — one-line pills, or collapse the whole stack
|
|
12
|
-
- ✏️ **Single-line status** — `toast.single()` for instant, title-less feedback
|
|
12
|
+
- 📦 **Compact + minimize** — one-line pills, or collapse the whole stack into one
|
|
13
13
|
- 🎞️ **Pick your motion** — slide, fade, scale, pop, flip or none
|
|
14
14
|
- ♿ **Accessible** — polite/assertive live regions, keyboard reachable actions, `prefers-reduced-motion`
|
|
15
15
|
- 🧩 **Typed** — written in TypeScript, ships ESM + CJS + `.d.ts`
|
|
@@ -36,7 +36,7 @@ import 'react-snackbar-glass/styles.css';
|
|
|
36
36
|
|
|
37
37
|
export default function App() {
|
|
38
38
|
return (
|
|
39
|
-
<SnackbarProvider position="bottom-right" theme="auto">
|
|
39
|
+
<SnackbarProvider position="bottom-right" theme="auto" tone="glass">
|
|
40
40
|
<Dashboard />
|
|
41
41
|
</SnackbarProvider>
|
|
42
42
|
);
|
|
@@ -53,25 +53,43 @@ function Dashboard() {
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
That is the whole setup: one provider, one stylesheet, one hook. Everything else
|
|
57
|
+
below is optional.
|
|
58
|
+
|
|
56
59
|
## API
|
|
57
60
|
|
|
61
|
+
Two entry points render the same store, so pick whichever fits the call site:
|
|
62
|
+
|
|
63
|
+
| Import | Use it when |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `useSnackbar()` | Inside a component — the idiomatic path. |
|
|
66
|
+
| `toast` | Anywhere else: data layers, API clients, event handlers, `setTimeout`. |
|
|
67
|
+
|
|
58
68
|
### `useSnackbar()`
|
|
59
69
|
|
|
70
|
+
```ts
|
|
71
|
+
const snackbar = useSnackbar();
|
|
72
|
+
```
|
|
73
|
+
|
|
60
74
|
| Method | Description |
|
|
61
75
|
| --- | --- |
|
|
62
76
|
| `show(options)` | Queue a fully customised snackbar, returns its `id`. |
|
|
63
|
-
| `update(id, options)` | Patch an existing snackbar in place; timers restart
|
|
77
|
+
| `update(id, options)` | Patch an existing snackbar in place; timers restart when `duration` changes. |
|
|
64
78
|
| `dismiss(id?, reason?)` | Close one snackbar (or the oldest) and report a close reason. |
|
|
65
79
|
| `dismissAll(reason?)` | Close every visible snackbar. |
|
|
66
80
|
| `success / error / warning / info / neutral / loading / custom(message, options?)` | Variant presets. |
|
|
67
|
-
| `
|
|
81
|
+
| `single(message, options?)` | Message-only status line (`layout: 'inline'`). |
|
|
82
|
+
| `promise(promise, messages, options?)` | Drive one snackbar through loading → success → error. |
|
|
83
|
+
| `minimize()` / `expand()` / `isMinimized()` | Collapse the stack into a summary pill and bring it back. |
|
|
68
84
|
| `store` | Escape hatch: the underlying store for subscriptions and advanced updates. |
|
|
69
85
|
|
|
86
|
+
Every method returns the snackbar `id` (except `update`, `dismiss*` and the
|
|
87
|
+
minimize helpers), so you can update or dismiss it later.
|
|
88
|
+
|
|
70
89
|
### `toast` — global API
|
|
71
90
|
|
|
72
|
-
Import `toast` when you are outside a component
|
|
73
|
-
|
|
74
|
-
that `<SnackbarProvider>` renders, so no hook is needed.
|
|
91
|
+
Import `toast` when you are outside a component. It talks to the same store that
|
|
92
|
+
`<SnackbarProvider>` renders, so no hook is needed.
|
|
75
93
|
|
|
76
94
|
```ts
|
|
77
95
|
import { toast } from 'react-snackbar-glass';
|
|
@@ -79,22 +97,115 @@ import { toast } from 'react-snackbar-glass';
|
|
|
79
97
|
toast('Draft saved');
|
|
80
98
|
toast.success('Deployment complete.', { title: 'v1.4.0 is live' });
|
|
81
99
|
toast.error('Payment declined', { action: { label: 'Retry', onClick: retry } });
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
It mirrors `useSnackbar()` one-to-one — `show`, `update`, `dismiss`,
|
|
85
|
-
`dismissAll`, every variant preset, `promise`, and `store`:
|
|
100
|
+
toast.single('Position set to top-center');
|
|
86
101
|
|
|
87
|
-
```ts
|
|
88
102
|
const id = toast.loading('Saving…');
|
|
89
103
|
await save();
|
|
90
104
|
toast.update(id, { variant: 'success', message: 'Saved', duration: 3000 });
|
|
91
105
|
```
|
|
92
106
|
|
|
107
|
+
It mirrors `useSnackbar()` one-to-one — `show`, `update`, `dismiss`,
|
|
108
|
+
`dismissAll`, every variant preset, `single`, `promise`, `minimize`, `expand`,
|
|
109
|
+
`isMinimized` and `store`.
|
|
110
|
+
|
|
93
111
|
`<SnackbarProvider>` renders the shared store by default. Mount
|
|
94
112
|
`<SnackbarHost store={getDefaultStore()} />` if you need the host without a
|
|
95
|
-
provider, and `setDefaultStore(store)` to point `toast` at a store of your
|
|
96
|
-
|
|
97
|
-
|
|
113
|
+
provider, and `setDefaultStore(store)` to point `toast` at a store of your own
|
|
114
|
+
(handy in tests or multi-app setups). On the server, pass an explicit `store` so
|
|
115
|
+
requests stay isolated.
|
|
116
|
+
|
|
117
|
+
### Layouts
|
|
118
|
+
|
|
119
|
+
`layout` is the density axis. It can be set per snackbar, on the provider or in
|
|
120
|
+
the store config, and it is the only thing that changes between the three shapes:
|
|
121
|
+
|
|
122
|
+
| `layout` | Shape | Use it for |
|
|
123
|
+
| --- | --- | --- |
|
|
124
|
+
| `card` | Full card: title, message, action, hairline. Default. | Results that deserve a headline and an action. |
|
|
125
|
+
| `compact` | Fully rounded single-line pill. | High-frequency messages that should stay quiet. |
|
|
126
|
+
| `inline` | Message-only status line, content width, ~38 px tall. | Instant feedback such as “Copied” or “Position set”. |
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
toast.success('Draft saved', { layout: 'compact' });
|
|
130
|
+
snackbar.show({ message: 'Synced', layout: 'inline' });
|
|
131
|
+
<SnackbarProvider layout="compact" />;
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`compact: true` still works and is sugar for `layout: 'compact'`.
|
|
135
|
+
|
|
136
|
+
**Single-line status** — `toast.single()` is the `inline` preset with a hard
|
|
137
|
+
one-line contract: long text truncates with an ellipsis instead of wrapping, and
|
|
138
|
+
a timed notice has no title, no countdown hairline and no close button.
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
toast.single('Position set to top-center', { variant: 'success' });
|
|
142
|
+
toast.single('Could not reach the server', { variant: 'error', duration: 8000 });
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Surfaces
|
|
146
|
+
|
|
147
|
+
Five presets ship with the stylesheet. Pick one per snackbar or as the default:
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
<SnackbarProvider tone="paper" />
|
|
151
|
+
|
|
152
|
+
// or per snackbar
|
|
153
|
+
toast.info('Backup finished.', { tone: 'graphite' });
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
| `tone` | Look |
|
|
157
|
+
| --- | --- |
|
|
158
|
+
| `glass` | Frosted and translucent — the page shows through. Default. |
|
|
159
|
+
| `paper` | Opaque, matte, hairline border, no blur. Follows light/dark. |
|
|
160
|
+
| `solid` | The variant accent painted as the surface, white text. |
|
|
161
|
+
| `graphite` | Dark matte charcoal with light text, in both themes. |
|
|
162
|
+
| `neon` | Near-black with an accent glow ring, in both themes. |
|
|
163
|
+
|
|
164
|
+
All five keep the same layout, icon tinting, hairline and motion, and every one
|
|
165
|
+
is driven by the `--prs-*` tokens, so you can restyle a preset without forking
|
|
166
|
+
the CSS.
|
|
167
|
+
|
|
168
|
+
### Sizes and positions
|
|
169
|
+
|
|
170
|
+
| `size` | Width (relative to `--prs-width`, default `384px`) |
|
|
171
|
+
| --- | --- |
|
|
172
|
+
| `xs` | 72 % |
|
|
173
|
+
| `sm` | 86 % |
|
|
174
|
+
| `md` | 100 % — default |
|
|
175
|
+
| `lg` | 116 % |
|
|
176
|
+
|
|
177
|
+
Positions are the six screen corners: `top-left`, `top-center`, `top-right`,
|
|
178
|
+
`bottom-left`, `bottom-center`, `bottom-right` (default).
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
toast.success('Saved', { size: 'sm', position: 'top-center' });
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
`maxVisible` (default `3`) caps how many cards a corner shows at once; older
|
|
185
|
+
ones stay queued and take the next free slot.
|
|
186
|
+
|
|
187
|
+
### Animations
|
|
188
|
+
|
|
189
|
+
One preset drives both phases; `enterAnimation` / `exitAnimation` override a
|
|
190
|
+
single phase:
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
toast.success('Saved', { animation: 'fade' });
|
|
194
|
+
toast.error('Failed', { animation: 'scale', exitAnimation: 'none' });
|
|
195
|
+
<SnackbarProvider animation="pop" />;
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
| Preset | Feel |
|
|
199
|
+
| --- | --- |
|
|
200
|
+
| `slide` | Spring slide from the nearest edge with a soft blur (default). |
|
|
201
|
+
| `fade` | Pure opacity cross-fade. |
|
|
202
|
+
| `scale` | Zoom from the center. |
|
|
203
|
+
| `pop` | Bouncy overshoot. |
|
|
204
|
+
| `flip` | 3D flip on the X axis. |
|
|
205
|
+
| `none` | Instant, no motion. |
|
|
206
|
+
|
|
207
|
+
Pace them with `--prs-enter-duration` / `--prs-exit-duration` (defaults
|
|
208
|
+
`440ms` / `190ms`); `prefers-reduced-motion` still disables everything.
|
|
98
209
|
|
|
99
210
|
### Promise-aware flows
|
|
100
211
|
|
|
@@ -112,12 +223,13 @@ snackbar.promise(deploy(), {
|
|
|
112
223
|
});
|
|
113
224
|
```
|
|
114
225
|
|
|
115
|
-
`success` and `error`
|
|
116
|
-
receives the resolved value / rejection reason.
|
|
226
|
+
`loading`, `success` and `error` accept plain content, full options, or a mapper
|
|
227
|
+
that receives the resolved value / rejection reason. The returned promise
|
|
228
|
+
resolves with the original value, so it can be awaited inline.
|
|
117
229
|
|
|
118
230
|
### Sticky snackbars with in-place updates
|
|
119
231
|
|
|
120
|
-
```
|
|
232
|
+
```ts
|
|
121
233
|
const id = snackbar.show({
|
|
122
234
|
variant: 'loading',
|
|
123
235
|
title: 'Uploading assets',
|
|
@@ -134,9 +246,12 @@ snackbar.update(id, {
|
|
|
134
246
|
});
|
|
135
247
|
```
|
|
136
248
|
|
|
249
|
+
Reusing an `id` (in `show()` or `update()`) updates or revives the existing
|
|
250
|
+
snackbar instead of stacking a duplicate — ideal for progress-style flows.
|
|
251
|
+
|
|
137
252
|
### Actions and undo windows
|
|
138
253
|
|
|
139
|
-
```
|
|
254
|
+
```ts
|
|
140
255
|
snackbar.show({
|
|
141
256
|
message: 'Project archived.',
|
|
142
257
|
duration: 7000,
|
|
@@ -147,26 +262,76 @@ snackbar.show({
|
|
|
147
262
|
});
|
|
148
263
|
```
|
|
149
264
|
|
|
150
|
-
Action handlers may return a promise: the button shows a pending state and
|
|
151
|
-
|
|
152
|
-
`
|
|
265
|
+
Action handlers may return a promise: the button shows a pending state and the
|
|
266
|
+
snackbar only closes after the handler settles (`closeOnClick`, default `true`).
|
|
267
|
+
Set `closeOnClick: false` to keep the snackbar open for a second step.
|
|
268
|
+
|
|
269
|
+
### Close reasons and lifecycle
|
|
270
|
+
|
|
271
|
+
`onClose` receives **why** a snackbar went away, plus its id:
|
|
272
|
+
|
|
273
|
+
```ts
|
|
274
|
+
snackbar.show({
|
|
275
|
+
message: 'Draft saved',
|
|
276
|
+
onOpen: (id) => track('shown', id),
|
|
277
|
+
onClose: (reason) => track('closed', reason),
|
|
278
|
+
});
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
| Reason | Fired by |
|
|
282
|
+
| --- | --- |
|
|
283
|
+
| `timeout` | The duration elapsed. |
|
|
284
|
+
| `manual` | The close button (or `dismiss()` without a reason). |
|
|
285
|
+
| `action` | The action button, after its handler settled. |
|
|
286
|
+
| `swipe` | A drag past `swipeThreshold`. |
|
|
287
|
+
| `escape` | The user pressed <kbd>Esc</kbd> while a snackbar had focus. |
|
|
288
|
+
| `dismissAll` | `dismissAll()` cleared the stack. |
|
|
289
|
+
|
|
290
|
+
`onOpen` runs once the snackbar is actually mounted in a visible slot — not when
|
|
291
|
+
it is queued.
|
|
292
|
+
|
|
293
|
+
## `SnackbarOptions`
|
|
294
|
+
|
|
295
|
+
| Option | Type | Default | Notes |
|
|
296
|
+
| --- | --- | --- | --- |
|
|
297
|
+
| `id` | `string` | generated | Stable key; reusing it updates instead of stacking. |
|
|
298
|
+
| `title` | `ReactNode` | — | Small, strong headline above the message. |
|
|
299
|
+
| `message` | `ReactNode` | — | Main content. |
|
|
300
|
+
| `variant` | `'neutral' \| 'success' \| 'error' \| 'warning' \| 'info' \| 'loading' \| 'custom'` | `'neutral'` | Drives accent, icon and live-region politeness. |
|
|
301
|
+
| `duration` | `number \| null` | `5000` | `null`, `0` or `Infinity` = persistent. |
|
|
302
|
+
| `position` | `SnackbarPosition` | provider | Corner for this snackbar. |
|
|
303
|
+
| `icon` | `ReactNode \| false` | variant icon | `false` hides the icon. |
|
|
304
|
+
| `action` | `{ label, onClick?, closeOnClick? } \| null` | `null` | One call-to-action. |
|
|
305
|
+
| `dismissible` | `boolean` | `true` | Show the close button. |
|
|
306
|
+
| `progress` | `boolean` | `true` | Countdown hairline. |
|
|
307
|
+
| `layout` | `'card' \| 'compact' \| 'inline'` | `'card'` | Density. |
|
|
308
|
+
| `compact` | `boolean` | `false` | Sugar for `layout: 'compact'`. |
|
|
309
|
+
| `animation` | `SnackbarAnimation` | `'slide'` | Both phases. |
|
|
310
|
+
| `enterAnimation` / `exitAnimation` | `SnackbarAnimation` | — | Per-phase override. |
|
|
311
|
+
| `tone` | `'glass' \| 'paper' \| 'solid' \| 'graphite' \| 'neon'` | `'glass'` | Surface preset. |
|
|
312
|
+
| `size` | `'xs' \| 'sm' \| 'md' \| 'lg'` | `'md'` | Density/width. |
|
|
313
|
+
| `className` / `style` | — | — | Per-snackbar styling hooks. |
|
|
314
|
+
| `onOpen` | `(id) => void` | — | Mounted and visible. |
|
|
315
|
+
| `onClose` | `(reason, id) => void` | — | Dismissal started. |
|
|
153
316
|
|
|
154
317
|
## `<SnackbarProvider>` props
|
|
155
318
|
|
|
319
|
+
Every default below can be overridden per snackbar in `SnackbarOptions`.
|
|
320
|
+
|
|
156
321
|
| Prop | Type | Default | Description |
|
|
157
322
|
| --- | --- | --- | --- |
|
|
158
323
|
| `position` | `SnackbarPosition` | `'bottom-right'` | Default corner for new snackbars. |
|
|
159
324
|
| `duration` | `number \| null` | `5000` | Auto-dismiss delay in ms. `null`/`0`/`Infinity` = persistent. |
|
|
160
|
-
| `tone` | `'glass' \| 'solid'` | `'glass'` | Surface
|
|
325
|
+
| `tone` | `'glass' \| 'paper' \| 'solid' \| 'graphite' \| 'neon'` | `'glass'` | Surface preset. |
|
|
161
326
|
| `size` | `'xs' \| 'sm' \| 'md' \| 'lg'` | `'md'` | Card density/width. |
|
|
327
|
+
| `layout` | `'card' \| 'compact' \| 'inline'` | `'card'` | Default layout. |
|
|
328
|
+
| `compact` | `boolean` | `false` | Sugar for `layout: 'compact'`. |
|
|
329
|
+
| `animation` | `SnackbarAnimation` | `'slide'` | Enter + exit preset. |
|
|
330
|
+
| `enterAnimation` / `exitAnimation` | `SnackbarAnimation` | — | Per-phase override. |
|
|
162
331
|
| `theme` | `'light' \| 'dark' \| 'auto'` | `'auto'` | Color scheme. |
|
|
163
332
|
| `maxVisible` | `number` | `3` | Simultaneously visible cards per corner. |
|
|
164
333
|
| `dismissible` | `boolean` | `true` | Show the close button. |
|
|
165
334
|
| `progress` | `boolean` | `true` | Show the countdown hairline. |
|
|
166
|
-
| `compact` | `boolean` | `false` | Single-line pill for every snackbar. |
|
|
167
|
-
| `layout` | `'card' \| 'compact' \| 'inline'` | `'card'` | Default layout; `compact` is sugar for `'compact'`. |
|
|
168
|
-
| `animation` | `'slide' \| 'fade' \| 'scale' \| 'pop' \| 'flip' \| 'none'` | `'slide'` | Enter + exit animation preset. |
|
|
169
|
-
| `enterAnimation` / `exitAnimation` | same as `animation` | — | Override a single phase. |
|
|
170
335
|
| `minimizedLabel` | `(count: number) => ReactNode` | `"3 notifications"` | Text on the collapsed pill. |
|
|
171
336
|
| `pauseOnHover` | `boolean` | `true` | Freeze the timer while hovered. |
|
|
172
337
|
| `pauseOnFocus` | `boolean` | `true` | Freeze the timer while focus is inside. |
|
|
@@ -179,58 +344,7 @@ the snackbar only closes after the handler settles (`closeOnClick`, default
|
|
|
179
344
|
| `container` | `HTMLElement \| () => HTMLElement \| null` | `document.body` | Portal target. |
|
|
180
345
|
| `dir` | `'ltr' \| 'rtl'` | inherited | Text direction. |
|
|
181
346
|
| `zIndex` | `number` | `2147483000` | Host stacking context. |
|
|
182
|
-
|
|
183
|
-
## `SnackbarOptions`
|
|
184
|
-
|
|
185
|
-
`id`, `title`, `message`, `variant`, `duration`, `position`, `icon`,
|
|
186
|
-
`action`, `dismissible`, `progress`, `compact`, `layout`, `animation`,
|
|
187
|
-
`enterAnimation`, `exitAnimation`, `tone`, `size`, `className`, `style`,
|
|
188
|
-
`onOpen`, `onClose`.
|
|
189
|
-
|
|
190
|
-
Reusing an `id` updates (or revives) the existing snackbar instead of stacking
|
|
191
|
-
a duplicate — ideal for progress-style flows.
|
|
192
|
-
|
|
193
|
-
## Single-line status notices
|
|
194
|
-
|
|
195
|
-
`toast.single()` is the "one line, no ceremony" preset: content width, a hard
|
|
196
|
-
one-line contract (long text truncates with an ellipsis instead of wrapping),
|
|
197
|
-
no title, no countdown hairline and no close button while it is timed.
|
|
198
|
-
|
|
199
|
-
```ts
|
|
200
|
-
toast.single('Position set to top-center', { variant: 'success' });
|
|
201
|
-
toast.single('Could not reach the server', { variant: 'error', duration: 8000 });
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
It is `layout: 'inline'` under the hood, so every entry point can do the same:
|
|
205
|
-
|
|
206
|
-
```ts
|
|
207
|
-
snackbar.show({ message: 'Synced', layout: 'inline' });
|
|
208
|
-
useSnackbar().single('Copied to clipboard');
|
|
209
|
-
<SnackbarProvider layout="inline" />;
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
## Animations
|
|
213
|
-
|
|
214
|
-
One preset drives both phases; `enterAnimation` / `exitAnimation` override a
|
|
215
|
-
single phase:
|
|
216
|
-
|
|
217
|
-
```ts
|
|
218
|
-
toast.success('Saved', { animation: 'fade' });
|
|
219
|
-
toast.error('Failed', { animation: 'scale', exitAnimation: 'none' });
|
|
220
|
-
<SnackbarProvider animation="pop" />;
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
| Preset | Feel |
|
|
224
|
-
| --- | --- |
|
|
225
|
-
| `slide` | Spring slide from the nearest edge with a soft blur (default). |
|
|
226
|
-
| `fade` | Pure opacity cross-fade. |
|
|
227
|
-
| `scale` | Zoom from the center. |
|
|
228
|
-
| `pop` | Bouncy overshoot. |
|
|
229
|
-
| `flip` | 3D flip on the X axis. |
|
|
230
|
-
| `none` | Instant, no motion. |
|
|
231
|
-
|
|
232
|
-
Pace them with `--prs-enter-duration` / `--prs-exit-duration` (defaults
|
|
233
|
-
`440ms` / `190ms`); `prefers-reduced-motion` still disables everything.
|
|
347
|
+
| `className` / `style` | — | — | Classes/styles for the host root. |
|
|
234
348
|
|
|
235
349
|
## Compact and minimized stacks
|
|
236
350
|
|
|
@@ -250,9 +364,9 @@ Set it once for every snackbar with `<SnackbarProvider compact />` or
|
|
|
250
364
|
(`"3 notifications"`) that expands on click:
|
|
251
365
|
|
|
252
366
|
```ts
|
|
253
|
-
toast.minimize();
|
|
254
|
-
toast.expand();
|
|
255
|
-
toast.isMinimized();
|
|
367
|
+
toast.minimize(); // stack → one pill
|
|
368
|
+
toast.expand(); // back to full cards
|
|
369
|
+
toast.isMinimized(); // boolean
|
|
256
370
|
```
|
|
257
371
|
|
|
258
372
|
`useSnackbar()` exposes the same three methods, and the store has
|
|
@@ -261,13 +375,14 @@ toast.isMinimized(); // boolean
|
|
|
261
375
|
|
|
262
376
|
## Theming
|
|
263
377
|
|
|
264
|
-
Colors, radii, blur and motion are CSS custom properties on `.prs-root`
|
|
265
|
-
|
|
378
|
+
Colors, radii, blur and motion are CSS custom properties on `.prs-root` (and
|
|
379
|
+
per-card inline styles).
|
|
266
380
|
|
|
267
381
|
```css
|
|
268
382
|
:root {
|
|
269
383
|
--prs-accent: #8b5cf6;
|
|
270
384
|
--prs-radius: 16px;
|
|
385
|
+
--prs-width: 400px;
|
|
271
386
|
}
|
|
272
387
|
```
|
|
273
388
|
|
|
@@ -279,12 +394,32 @@ snackbar.custom('Added to collection.', {
|
|
|
279
394
|
});
|
|
280
395
|
```
|
|
281
396
|
|
|
397
|
+
| Token | Default | Controls |
|
|
398
|
+
| --- | --- | --- |
|
|
399
|
+
| `--prs-accent` | variant color | Accent for icons, actions and links. |
|
|
400
|
+
| `--prs-accent-soft` | 13 % accent | Icon chip / action background. |
|
|
401
|
+
| `--prs-accent-ring` | 30 % accent | Icon ring and hover border. |
|
|
402
|
+
| `--prs-solid` | accent | Surface color of the `solid` tone. |
|
|
403
|
+
| `--prs-radius` | `18px` | Card radius. |
|
|
404
|
+
| `--prs-width` | `384px` | Base card width; `size` scales it. |
|
|
405
|
+
| `--prs-offset` | `20px` | Distance from the viewport edge. |
|
|
406
|
+
| `--prs-gap` | `12px` | Space between stacked cards. |
|
|
407
|
+
| `--prs-font` | Inter/system stack | Font family. |
|
|
408
|
+
| `--prs-blur` | `blur(22px) saturate(1.55)` | Glass backdrop filter. |
|
|
409
|
+
| `--prs-shadow` / `--prs-shadow-hover` | layered | Card shadow. |
|
|
410
|
+
| `--prs-enter-duration` / `--prs-exit-duration` | `440ms` / `190ms` | Motion pacing. |
|
|
411
|
+
| `--prs-radius-inline` | pill radius | Radius of `inline` notices. |
|
|
412
|
+
| `--prs-z-index` | `2147483000` | Host stacking context. |
|
|
413
|
+
|
|
282
414
|
## Store-only usage
|
|
283
415
|
|
|
416
|
+
If you want to own the store — or render the host somewhere specific — skip the
|
|
417
|
+
provider:
|
|
418
|
+
|
|
284
419
|
```tsx
|
|
285
420
|
import { createSnackbarStore, SnackbarHost } from 'react-snackbar-glass';
|
|
286
421
|
|
|
287
|
-
const store = createSnackbarStore({ position: 'top-center' });
|
|
422
|
+
const store = createSnackbarStore({ position: 'top-center', tone: 'paper' });
|
|
288
423
|
|
|
289
424
|
function App() {
|
|
290
425
|
return (
|
|
@@ -296,11 +431,27 @@ function App() {
|
|
|
296
431
|
}
|
|
297
432
|
```
|
|
298
433
|
|
|
434
|
+
```ts
|
|
435
|
+
store.setConfig({ duration: 3000, layout: 'compact' }); // live default changes
|
|
436
|
+
const stop = store.subscribe(() => console.log(store.getSnapshot()));
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
| Member | Description |
|
|
440
|
+
| --- | --- |
|
|
441
|
+
| `show / update / dismiss / dismissAll / promise` | Same semantics as the hook. |
|
|
442
|
+
| `subscribe(fn)` | Listen for any change; returns an unsubscribe function. |
|
|
443
|
+
| `getSnapshot()` / `getServerSnapshot()` | Current records (stable for `useSyncExternalStore`). |
|
|
444
|
+
| `getConfig()` / `setConfig(partial)` | Read or change defaults at runtime. |
|
|
445
|
+
| `pause(id, reason?)` / `resume(id, reason?)` | Reference-counted timer pause (hover, drag, hidden tab). |
|
|
446
|
+
| `minimize / expand / getMinimized` | Stack collapse state. |
|
|
447
|
+
| `notifyShown(id)` / `notifyExited(id)` | Lifecycle hooks the viewport calls. |
|
|
448
|
+
| `setPageHidden(hidden)` | Forward `document.visibilityState` changes. |
|
|
449
|
+
|
|
299
450
|
## Server-side rendering
|
|
300
451
|
|
|
301
452
|
`SnackbarProvider` and `SnackbarHost` render nothing until mounted, and the
|
|
302
|
-
store returns a stable server snapshot. No `window` access during render, so
|
|
303
|
-
|
|
453
|
+
store returns a stable server snapshot. No `window` access during render, so the
|
|
454
|
+
components are safe in Next.js, Remix and other SSR frameworks.
|
|
304
455
|
|
|
305
456
|
## Requirements
|
|
306
457
|
|
package/dist/index.css
CHANGED
|
@@ -334,6 +334,10 @@
|
|
|
334
334
|
min-width: 0;
|
|
335
335
|
padding-top: 1px;
|
|
336
336
|
}
|
|
337
|
+
.prs-item[data-layout=card] .prs-item__content[data-has-title=false] {
|
|
338
|
+
align-self: center;
|
|
339
|
+
padding-top: 0;
|
|
340
|
+
}
|
|
337
341
|
.prs-item__title {
|
|
338
342
|
color: var(--prs-fg);
|
|
339
343
|
font-size: var(--prs-title-size);
|
|
@@ -541,6 +545,102 @@
|
|
|
541
545
|
.prs-item[data-tone=solid] .prs-item__message a {
|
|
542
546
|
color: #fff;
|
|
543
547
|
}
|
|
548
|
+
.prs-item[data-tone=paper] .prs-item__surface {
|
|
549
|
+
--prs-blur: none;
|
|
550
|
+
--prs-inner: rgba(255, 255, 255, 0.9);
|
|
551
|
+
border-color: rgba(15, 23, 42, 0.09);
|
|
552
|
+
background: #ffffff;
|
|
553
|
+
box-shadow:
|
|
554
|
+
inset 0 1px 0 var(--prs-inner),
|
|
555
|
+
0 1px 2px rgba(15, 23, 42, 0.06),
|
|
556
|
+
0 14px 28px -22px rgba(15, 23, 42, 0.45);
|
|
557
|
+
}
|
|
558
|
+
@supports (color: light-dark(#000, #fff)) {
|
|
559
|
+
.prs-item[data-tone=paper] .prs-item__surface {
|
|
560
|
+
--prs-inner: light-dark( rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.05) );
|
|
561
|
+
border-color: light-dark(rgba(15, 23, 42, 0.09), rgba(255, 255, 255, 0.09));
|
|
562
|
+
background: light-dark(#ffffff, #191b23);
|
|
563
|
+
box-shadow:
|
|
564
|
+
inset 0 1px 0 var(--prs-inner),
|
|
565
|
+
0 1px 2px light-dark(rgba(15, 23, 42, 0.05), rgba(0, 0, 0, 0.5)),
|
|
566
|
+
0 14px 28px -22px light-dark(rgba(15, 23, 42, 0.4), rgba(0, 0, 0, 0.8));
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
.prs-item[data-tone=paper] .prs-item__surface::before {
|
|
570
|
+
opacity: 0.015;
|
|
571
|
+
}
|
|
572
|
+
.prs-item[data-tone=graphite] {
|
|
573
|
+
--prs-accent: var(--prs-accent-dark);
|
|
574
|
+
}
|
|
575
|
+
.prs-item[data-tone=graphite] .prs-item__surface {
|
|
576
|
+
--prs-fg: #f3f5fa;
|
|
577
|
+
--prs-muted: rgba(243, 245, 250, 0.74);
|
|
578
|
+
--prs-track: rgba(255, 255, 255, 0.12);
|
|
579
|
+
--prs-inner: rgba(255, 255, 255, 0.07);
|
|
580
|
+
--prs-blur: none;
|
|
581
|
+
border-color: rgba(255, 255, 255, 0.11);
|
|
582
|
+
background: #1f232c;
|
|
583
|
+
background:
|
|
584
|
+
radial-gradient(
|
|
585
|
+
120% 150% at 0% 0%,
|
|
586
|
+
rgba(255, 255, 255, 0.06),
|
|
587
|
+
transparent 55%),
|
|
588
|
+
linear-gradient(
|
|
589
|
+
180deg,
|
|
590
|
+
#2b303b,
|
|
591
|
+
#1b1f27);
|
|
592
|
+
box-shadow:
|
|
593
|
+
inset 0 1px 0 var(--prs-inner),
|
|
594
|
+
0 1px 2px rgba(0, 0, 0, 0.45),
|
|
595
|
+
0 18px 40px -26px rgba(0, 0, 0, 0.85);
|
|
596
|
+
}
|
|
597
|
+
.prs-item[data-tone=neon] {
|
|
598
|
+
--prs-accent: var(--prs-accent-dark);
|
|
599
|
+
}
|
|
600
|
+
.prs-item[data-tone=neon] .prs-item__surface {
|
|
601
|
+
--prs-fg: #f8fafc;
|
|
602
|
+
--prs-muted: rgba(248, 250, 252, 0.7);
|
|
603
|
+
--prs-track: rgba(255, 255, 255, 0.14);
|
|
604
|
+
--prs-inner: rgba(255, 255, 255, 0.05);
|
|
605
|
+
--prs-blur: none;
|
|
606
|
+
border-color: rgba(255, 255, 255, 0.14);
|
|
607
|
+
background: #080a11;
|
|
608
|
+
box-shadow:
|
|
609
|
+
inset 0 1px 0 var(--prs-inner),
|
|
610
|
+
0 18px 40px -28px rgba(0, 0, 0, 0.9),
|
|
611
|
+
0 0 30px -14px var(--prs-accent);
|
|
612
|
+
}
|
|
613
|
+
@supports (color: color-mix(in srgb, red, blue)) {
|
|
614
|
+
.prs-item[data-tone=neon] .prs-item__surface {
|
|
615
|
+
border-color: color-mix(in srgb, var(--prs-accent) 55%, transparent);
|
|
616
|
+
background:
|
|
617
|
+
radial-gradient(
|
|
618
|
+
120% 160% at 0% 0%,
|
|
619
|
+
color-mix(in srgb, var(--prs-accent) 26%, transparent),
|
|
620
|
+
transparent 58%),
|
|
621
|
+
radial-gradient(
|
|
622
|
+
120% 160% at 100% 100%,
|
|
623
|
+
color-mix(in srgb, var(--prs-accent) 12%, transparent),
|
|
624
|
+
transparent 62%),
|
|
625
|
+
#080a11;
|
|
626
|
+
box-shadow:
|
|
627
|
+
inset 0 1px 0 var(--prs-inner),
|
|
628
|
+
0 0 0 1px color-mix(in srgb, var(--prs-accent) 22%, transparent),
|
|
629
|
+
0 18px 40px -28px color-mix(in srgb, var(--prs-accent) 45%, transparent),
|
|
630
|
+
0 0 32px -12px color-mix(in srgb, var(--prs-accent) 70%, transparent);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
.prs-item[data-tone=graphite] .prs-item__surface::before,
|
|
634
|
+
.prs-item[data-tone=neon] .prs-item__surface::before {
|
|
635
|
+
opacity: 0.07;
|
|
636
|
+
}
|
|
637
|
+
@supports (color: color-mix(in srgb, red, blue)) {
|
|
638
|
+
.prs-item[data-tone=graphite],
|
|
639
|
+
.prs-item[data-tone=neon] {
|
|
640
|
+
--prs-accent-soft: color-mix(in srgb, var(--prs-accent) 26%, transparent);
|
|
641
|
+
--prs-accent-ring: color-mix(in srgb, var(--prs-accent) 42%, transparent);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
544
644
|
@keyframes prs-in {
|
|
545
645
|
0% {
|
|
546
646
|
opacity: 0;
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/* react-snackbar-glass — design tokens + component styles */\n.prs-root {\n --prs-font:\n \"Inter var\", Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif;\n --prs-radius: 18px;\n --prs-width: 384px;\n --prs-offset: 20px;\n --prs-gap: 12px;\n --prs-z-index: 2147483000;\n\n --prs-surface: rgba(255, 255, 255, 0.9);\n --prs-fg: #0f172a;\n --prs-muted: #5b6472;\n --prs-border: rgba(15, 23, 42, 0.1);\n --prs-border-strong: rgba(15, 23, 42, 0.18);\n --prs-shadow-color: rgba(15, 23, 42, 0.3);\n --prs-inner: rgba(255, 255, 255, 0.7);\n --prs-icon-sheen: rgba(255, 255, 255, 0.6);\n --prs-track: rgba(15, 23, 42, 0.07);\n --prs-blur: blur(22px) saturate(1.55);\n\n --prs-shadow:\n 0 1px 2px -1px var(--prs-shadow-color),\n 0 10px 22px -14px var(--prs-shadow-color),\n 0 24px 56px -28px var(--prs-shadow-color);\n --prs-shadow-hover:\n 0 1px 2px -1px var(--prs-shadow-color),\n 0 14px 28px -14px var(--prs-shadow-color),\n 0 34px 70px -30px var(--prs-shadow-color);\n --prs-ease-spring: cubic-bezier(0.2, 1.12, 0.3, 1);\n --prs-ease-out: cubic-bezier(0.22, 1, 0.36, 1);\n\n position: fixed;\n inset: 0;\n z-index: var(--prs-z-index);\n pointer-events: none;\n font-family: var(--prs-font);\n color-scheme: light;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\n.prs-root[data-prs-theme=\"dark\"] {\n color-scheme: dark;\n}\n\n.prs-root[data-prs-theme=\"auto\"] {\n color-scheme: light dark;\n}\n\n@supports (color: light-dark(#000, #fff)) {\n .prs-root {\n --prs-surface: light-dark(rgba(255, 255, 255, 0.9), rgba(22, 24, 32, 0.82));\n --prs-fg: light-dark(#0f172a, #f4f6fb);\n --prs-muted: light-dark(#5b6472, #a7aebc);\n --prs-border: light-dark(rgba(15, 23, 42, 0.1), rgba(255, 255, 255, 0.1));\n --prs-border-strong: light-dark(\n rgba(15, 23, 42, 0.18),\n rgba(255, 255, 255, 0.18)\n );\n --prs-shadow-color: light-dark(\n rgba(15, 23, 42, 0.3),\n rgba(0, 0, 0, 0.66)\n );\n --prs-inner: light-dark(\n rgba(255, 255, 255, 0.7),\n rgba(255, 255, 255, 0.055)\n );\n --prs-icon-sheen: light-dark(\n rgba(255, 255, 255, 0.6),\n rgba(255, 255, 255, 0.07)\n );\n --prs-track: light-dark(\n rgba(15, 23, 42, 0.07),\n rgba(255, 255, 255, 0.1)\n );\n }\n}\n\n/* ---------------------------------------------------------------- regions */\n\n.prs-region {\n position: absolute;\n display: flex;\n flex-direction: column;\n gap: var(--prs-gap);\n box-sizing: border-box;\n width: min(calc(var(--prs-width) * 1.16 + var(--prs-offset) * 2), 100%);\n padding: var(--prs-offset);\n pointer-events: none;\n}\n\n.prs-region[data-position^=\"top\"] {\n top: 0;\n padding-top: calc(var(--prs-offset) + env(safe-area-inset-top, 0px));\n --prs-enter-y: -14px;\n}\n\n.prs-region[data-position^=\"bottom\"] {\n bottom: 0;\n padding-bottom: calc(var(--prs-offset) + env(safe-area-inset-bottom, 0px));\n --prs-enter-y: 14px;\n}\n\n.prs-region[data-position$=\"left\"] {\n left: 0;\n align-items: flex-start;\n}\n\n.prs-region[data-position$=\"right\"] {\n right: 0;\n align-items: flex-end;\n}\n\n.prs-region[data-position$=\"center\"] {\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* ------------------------------------------------------------------ item */\n\n.prs-item {\n --prs-item-width: var(--prs-width);\n --prs-pad-top: 14px;\n --prs-pad-right: 12px;\n --prs-pad-bottom: 15px;\n --prs-pad-left: 14px;\n --prs-col-gap: 12px;\n --prs-icon-size: 34px;\n --prs-icon-radius: 11px;\n --prs-glyph-size: 18px;\n --prs-title-size: 13.5px;\n --prs-message-size: 13px;\n --prs-lead-size: 13.5px;\n --prs-action-size: 12px;\n --prs-action-pad-y: 5px;\n --prs-action-pad-x: 11px;\n --prs-close-size: 26px;\n --prs-close-icon: 14px;\n\n position: relative;\n width: var(--prs-item-width);\n max-width: 100%;\n pointer-events: auto;\n transform-origin: bottom center;\n animation: prs-in var(--prs-enter-duration, 440ms) var(--prs-ease-spring) both;\n will-change: transform, opacity;\n}\n\n.prs-item[data-size=\"xs\"] {\n --prs-item-width: calc(var(--prs-width) * 0.72);\n --prs-radius: 14px;\n --prs-pad-top: 10px;\n --prs-pad-right: 9px;\n --prs-pad-bottom: 12px;\n --prs-pad-left: 10px;\n --prs-col-gap: 9px;\n --prs-icon-size: 28px;\n --prs-icon-radius: 9px;\n --prs-glyph-size: 16px;\n --prs-title-size: 12.5px;\n --prs-message-size: 11.5px;\n --prs-lead-size: 12px;\n --prs-action-size: 10.5px;\n --prs-action-pad-y: 4px;\n --prs-action-pad-x: 8px;\n --prs-close-size: 22px;\n --prs-close-icon: 12px;\n}\n\n.prs-item[data-size=\"sm\"] {\n --prs-item-width: calc(var(--prs-width) * 0.86);\n --prs-radius: 16px;\n --prs-pad-top: 12px;\n --prs-pad-right: 10px;\n --prs-pad-bottom: 13px;\n --prs-pad-left: 12px;\n --prs-col-gap: 10px;\n --prs-icon-size: 31px;\n --prs-icon-radius: 10px;\n --prs-glyph-size: 17px;\n --prs-title-size: 13px;\n --prs-message-size: 12px;\n --prs-lead-size: 12.5px;\n --prs-action-size: 11px;\n --prs-action-pad-y: 4px;\n --prs-action-pad-x: 9px;\n --prs-close-size: 24px;\n --prs-close-icon: 13px;\n}\n\n.prs-item[data-size=\"lg\"] {\n --prs-item-width: calc(var(--prs-width) * 1.16);\n --prs-radius: 20px;\n --prs-pad-top: 16px;\n --prs-pad-right: 14px;\n --prs-pad-bottom: 17px;\n --prs-pad-left: 16px;\n --prs-col-gap: 13px;\n --prs-icon-size: 38px;\n --prs-icon-radius: 12px;\n --prs-glyph-size: 20px;\n --prs-title-size: 14.5px;\n --prs-message-size: 13.5px;\n --prs-lead-size: 14px;\n --prs-action-size: 12.5px;\n --prs-action-pad-y: 6px;\n --prs-action-pad-x: 12px;\n --prs-close-size: 28px;\n --prs-close-icon: 15px;\n}\n\n.prs-item[data-position^=\"top\"] {\n transform-origin: top center;\n}\n\n.prs-item[data-state=\"exiting\"] {\n pointer-events: none;\n animation: prs-out var(--prs-exit-duration, 190ms)\n cubic-bezier(0.4, 0, 1, 1) both;\n}\n\n.prs-item[data-dragging=\"true\"] {\n user-select: none;\n -webkit-user-select: none;\n}\n\n.prs-item__surface {\n position: relative;\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--prs-col-gap);\n box-sizing: border-box;\n width: 100%;\n padding: var(--prs-pad-top) var(--prs-pad-right) var(--prs-pad-bottom)\n var(--prs-pad-left);\n overflow: hidden;\n isolation: isolate;\n border: 1px solid var(--prs-border);\n border-radius: var(--prs-radius);\n background:\n radial-gradient(\n 130% 160% at 0% 0%,\n var(--prs-accent-soft, transparent),\n transparent 54%\n ),\n linear-gradient(180deg, var(--prs-inner), transparent 44%),\n var(--prs-surface);\n box-shadow: var(--prs-shadow), inset 0 1px 0 var(--prs-inner);\n color: var(--prs-fg);\n -webkit-backdrop-filter: var(--prs-blur);\n backdrop-filter: var(--prs-blur);\n transform: translate3d(var(--prs-drag-x, 0), 0, 0);\n opacity: var(--prs-drag-opacity, 1);\n transition:\n transform 260ms var(--prs-ease-out),\n opacity 160ms ease,\n border-color 180ms ease,\n box-shadow 180ms ease;\n touch-action: pan-y;\n}\n\n/* Fine film grain keeps large glass surfaces from feeling flat. */\n.prs-item__surface::before {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 0;\n border-radius: inherit;\n pointer-events: none;\n opacity: 0.045;\n mix-blend-mode: soft-light;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E\");\n}\n\n.prs-item[data-dragging=\"true\"] .prs-item__surface {\n transition: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .prs-item__surface:hover {\n border-color: var(--prs-accent-ring, var(--prs-border-strong));\n box-shadow: var(--prs-shadow-hover), inset 0 1px 0 var(--prs-inner);\n }\n}\n\n.prs-item[data-has-icon=\"false\"] .prs-item__surface {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n\n.prs-item[data-dismissible=\"false\"][data-has-icon=\"true\"] .prs-item__surface {\n grid-template-columns: auto minmax(0, 1fr);\n}\n\n.prs-item[data-dismissible=\"false\"][data-has-icon=\"false\"] .prs-item__surface {\n grid-template-columns: minmax(0, 1fr);\n}\n\n/* -------------------------------------------------------------- accent map */\n\n.prs-item {\n --prs-accent-light: #475569;\n --prs-accent-dark: #cbd5e1;\n --prs-accent: var(--prs-accent-light);\n --prs-solid: var(--prs-accent-light);\n --prs-accent-soft: rgba(71, 85, 105, 0.12);\n --prs-accent-ring: rgba(71, 85, 105, 0.28);\n}\n\n@supports (color: light-dark(#000, #fff)) {\n .prs-item {\n --prs-accent: light-dark(var(--prs-accent-light), var(--prs-accent-dark));\n }\n}\n\n@supports (color: color-mix(in srgb, red, blue)) {\n .prs-item {\n --prs-accent-soft: color-mix(\n in srgb,\n var(--prs-accent) 13%,\n transparent\n );\n --prs-accent-ring: color-mix(\n in srgb,\n var(--prs-accent) 30%,\n transparent\n );\n }\n}\n\n.prs-item[data-variant=\"success\"] {\n --prs-accent-light: #087a55;\n --prs-accent-dark: #34d399;\n}\n\n.prs-item[data-variant=\"error\"] {\n --prs-accent-light: #b42318;\n --prs-accent-dark: #f87171;\n}\n\n.prs-item[data-variant=\"warning\"] {\n --prs-accent-light: #9a4e00;\n --prs-accent-dark: #fbbf24;\n}\n\n.prs-item[data-variant=\"info\"] {\n --prs-accent-light: #1d4ed8;\n --prs-accent-dark: #60a5fa;\n}\n\n.prs-item[data-variant=\"loading\"],\n.prs-item[data-variant=\"custom\"] {\n --prs-accent-light: #6d28d9;\n --prs-accent-dark: #a78bfa;\n}\n\n/* ------------------------------------------------------------------ icon */\n\n.prs-item__icon {\n position: relative;\n z-index: 1;\n display: grid;\n place-items: center;\n width: var(--prs-icon-size);\n height: var(--prs-icon-size);\n margin-top: -1px;\n border-radius: var(--prs-icon-radius);\n color: var(--prs-accent);\n background:\n linear-gradient(180deg, var(--prs-icon-sheen), transparent 70%),\n var(--prs-accent-soft);\n box-shadow:\n inset 0 0 0 1px var(--prs-accent-ring),\n inset 0 1px 0 var(--prs-icon-sheen);\n animation: prs-icon-in 540ms var(--prs-ease-spring) both 30ms;\n}\n\n.prs-item__icon svg {\n display: block;\n width: var(--prs-glyph-size);\n height: var(--prs-glyph-size);\n}\n\n.prs-icon-spin {\n animation: prs-spin 900ms linear infinite;\n transform-origin: center;\n}\n\n/* --------------------------------------------------------------- content */\n\n.prs-item__content {\n position: relative;\n z-index: 1;\n min-width: 0;\n padding-top: 1px;\n}\n\n.prs-item__title {\n color: var(--prs-fg);\n font-size: var(--prs-title-size);\n font-weight: 650;\n line-height: 1.35;\n letter-spacing: -0.012em;\n overflow-wrap: anywhere;\n}\n\n.prs-item__message {\n color: var(--prs-muted);\n font-size: var(--prs-message-size);\n font-weight: 400;\n line-height: 1.5;\n letter-spacing: -0.004em;\n overflow-wrap: anywhere;\n}\n\n.prs-item__title + .prs-item__message {\n margin-top: 2px;\n}\n\n.prs-item__content[data-has-title=\"false\"] .prs-item__message {\n color: var(--prs-fg);\n font-size: var(--prs-lead-size);\n font-weight: 500;\n letter-spacing: -0.006em;\n}\n\n.prs-item__message a {\n color: var(--prs-accent);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 2px;\n}\n\n.prs-item__actions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 9px;\n}\n\n.prs-action {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n appearance: none;\n margin: 0;\n padding: var(--prs-action-pad-y) var(--prs-action-pad-x);\n border: 1px solid var(--prs-accent-ring);\n border-radius: 999px;\n background: var(--prs-accent-soft);\n color: var(--prs-accent);\n font-family: inherit;\n font-size: var(--prs-action-size);\n font-weight: 650;\n line-height: 1.35;\n letter-spacing: 0.004em;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n color 160ms ease,\n transform 160ms ease;\n}\n\n.prs-action:hover {\n background: var(--prs-accent-ring);\n}\n\n.prs-action:active {\n transform: scale(0.965);\n}\n\n.prs-action:disabled {\n cursor: progress;\n opacity: 0.72;\n}\n\n.prs-action:focus-visible {\n outline: 2px solid var(--prs-accent);\n outline-offset: 2px;\n}\n\n.prs-action__spinner {\n width: 11px;\n height: 11px;\n border: 1.5px solid var(--prs-accent-ring);\n border-top-color: var(--prs-accent);\n border-radius: 999px;\n animation: prs-spin 700ms linear infinite;\n}\n\n/* ----------------------------------------------------------------- close */\n\n.prs-close {\n position: relative;\n z-index: 1;\n display: grid;\n place-items: center;\n width: var(--prs-close-size);\n height: var(--prs-close-size);\n margin: -3px -3px 0 0;\n padding: 0;\n border: 0;\n border-radius: 8px;\n background: transparent;\n color: var(--prs-muted);\n line-height: 0;\n cursor: pointer;\n opacity: 0.72;\n -webkit-tap-highlight-color: transparent;\n transition:\n background 150ms ease,\n color 150ms ease,\n opacity 150ms ease;\n}\n\n.prs-close svg {\n width: var(--prs-close-icon);\n height: var(--prs-close-icon);\n pointer-events: none;\n}\n\n.prs-close:hover {\n background: var(--prs-track);\n color: var(--prs-fg);\n opacity: 1;\n}\n\n.prs-close:focus-visible {\n outline: 2px solid var(--prs-accent);\n outline-offset: 1px;\n opacity: 1;\n}\n\n/* -------------------------------------------------------------- progress */\n\n.prs-progress {\n position: absolute;\n right: 12px;\n bottom: 6px;\n left: 12px;\n z-index: 1;\n height: 2px;\n overflow: hidden;\n border-radius: 999px;\n background: var(--prs-track);\n pointer-events: none;\n transition: opacity 140ms ease;\n}\n\n.prs-progress__bar {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n background: linear-gradient(\n 90deg,\n var(--prs-accent),\n color-mix(in srgb, var(--prs-accent) 45%, white)\n );\n transform-origin: left center;\n animation-name: prs-progress;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n}\n\n.prs-item[data-paused=\"true\"] .prs-progress__bar {\n animation-play-state: paused;\n}\n\n.prs-item[data-state=\"exiting\"] .prs-progress {\n opacity: 0;\n}\n\n[dir=\"rtl\"] .prs-progress__bar {\n transform-origin: right center;\n}\n\n/* ------------------------------------------------------------ solid tone */\n\n.prs-item[data-tone=\"solid\"] .prs-item__surface {\n --prs-fg: #fff;\n --prs-muted: rgba(255, 255, 255, 0.78);\n border-color: color-mix(in srgb, var(--prs-solid) 55%, #000);\n background:\n radial-gradient(\n 140% 200% at 0% 0%,\n rgba(255, 255, 255, 0.2),\n transparent 58%\n ),\n linear-gradient(\n 135deg,\n var(--prs-solid),\n color-mix(in srgb, var(--prs-solid) 72%, #000)\n );\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.24) inset,\n 0 12px 28px -14px color-mix(in srgb, var(--prs-solid) 55%, transparent),\n 0 26px 60px -28px var(--prs-shadow-color);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-item__icon {\n color: #fff;\n background: rgba(255, 255, 255, 0.16);\n box-shadow:\n inset 0 0 0 1px rgba(255, 255, 255, 0.22),\n inset 0 1px 0 rgba(255, 255, 255, 0.26);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-close {\n color: rgba(255, 255, 255, 0.82);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-close:hover {\n background: rgba(255, 255, 255, 0.16);\n color: #fff;\n}\n\n.prs-item[data-tone=\"solid\"] .prs-action {\n border-color: rgba(255, 255, 255, 0.24);\n background: rgba(255, 255, 255, 0.16);\n color: #fff;\n}\n\n.prs-item[data-tone=\"solid\"] .prs-action:hover {\n background: rgba(255, 255, 255, 0.24);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-action:focus-visible {\n outline-color: #fff;\n}\n\n.prs-item[data-tone=\"solid\"] .prs-progress {\n background: rgba(255, 255, 255, 0.18);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-progress__bar {\n background: rgba(255, 255, 255, 0.92);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-item__message a {\n color: #fff;\n}\n\n/* ------------------------------------------------------------- keyframes */\n\n@keyframes prs-in {\n 0% {\n opacity: 0;\n transform: translate3d(0, var(--prs-enter-y, 14px), 0) scale(0.94);\n filter: blur(5px);\n }\n 55% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n transform: none;\n filter: blur(0);\n }\n}\n\n@keyframes prs-out {\n 0% {\n opacity: 1;\n transform: none;\n filter: blur(0);\n }\n 100% {\n opacity: 0;\n transform: translate3d(0, calc(var(--prs-enter-y, 10px) * 0.55), 0)\n scale(0.965);\n filter: blur(2px);\n }\n}\n\n@keyframes prs-icon-in {\n 0% {\n opacity: 0;\n transform: scale(0.55) rotate(-10deg);\n }\n 100% {\n opacity: 1;\n transform: scale(1) rotate(0deg);\n }\n}\n\n@keyframes prs-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes prs-progress {\n from {\n transform: scaleX(1);\n }\n to {\n transform: scaleX(0);\n }\n}\n\n/* ---------------------------------------------------------- reduced motion */\n\n@media (prefers-reduced-motion: reduce) {\n .prs-item,\n .prs-item[data-state=\"exiting\"] {\n animation-duration: 0.01ms !important;\n }\n\n .prs-item__surface {\n transition-duration: 0.01ms !important;\n }\n\n .prs-item__icon {\n animation: none !important;\n }\n\n .prs-icon-spin {\n animation: none !important;\n opacity: 0.7;\n }\n\n .prs-progress__bar {\n animation: none !important;\n transform: scaleX(1);\n opacity: 0.55;\n }\n}\n\n/* --------------------------------------------------------------- compact */\n/* Single-line pill: same card, far less vertical and horizontal space. */\n.prs-item[data-compact=\"true\"] {\n --prs-item-width: auto;\n max-width: var(--prs-width);\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__surface {\n align-items: center;\n column-gap: 8px;\n padding: 7px 8px 7px 10px;\n border-radius: 999px;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__icon {\n --prs-icon-size: 20px;\n --prs-glyph-size: 12px;\n --prs-icon-radius: 999px;\n margin-top: 0;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__content {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n padding-top: 0;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__title {\n display: none;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__message,\n.prs-item[data-compact=\"true\"]\n .prs-item__content[data-has-title=\"false\"]\n .prs-item__message {\n max-width: 46ch;\n overflow: hidden;\n font-size: 12.5px;\n font-weight: 500;\n line-height: 1.35;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__actions {\n flex-shrink: 0;\n margin-top: 0;\n}\n\n.prs-item[data-compact=\"true\"] .prs-action {\n padding: 3px 9px;\n font-size: 11.5px;\n}\n\n.prs-item[data-compact=\"true\"] .prs-close {\n --prs-close-size: 22px;\n --prs-close-icon: 11px;\n margin: 0;\n}\n\n/* ---------------------------------------------------------------- inline */\n/* Message-only status line: content width, one line, no title, no hairline. */\n.prs-item[data-layout=\"inline\"] {\n --prs-item-width: auto;\n max-width: min(420px, 100%);\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__surface {\n align-items: center;\n column-gap: 9px;\n padding: 8px 13px 8px 9px;\n border-radius: var(--prs-radius-inline, 12px);\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__icon {\n --prs-icon-size: 22px;\n --prs-glyph-size: 13px;\n --prs-icon-radius: 999px;\n flex: none;\n margin-top: 0;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__content {\n min-width: 0;\n padding-top: 0;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__title {\n display: none;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__message {\n overflow: hidden;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__actions {\n margin-top: 0;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-action {\n padding: 2px 8px;\n font-size: 11.5px;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-close {\n --prs-close-size: 22px;\n --prs-close-icon: 11px;\n margin: 0;\n}\n\n/* -------------------------------------------------------------- minimized */\n/* The whole stack collapses into one summary pill; click to expand. */\n.prs-region--minimized {\n width: auto;\n padding: var(--prs-offset);\n}\n\n.prs-minimized {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n appearance: none;\n margin: 0;\n padding: 8px 15px 8px 12px;\n border: 1px solid var(--prs-border);\n border-radius: 999px;\n background: var(--prs-surface);\n color: var(--prs-fg);\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 560;\n letter-spacing: -0.005em;\n cursor: pointer;\n pointer-events: auto;\n box-shadow: var(--prs-shadow), inset 0 1px 0 var(--prs-inner);\n -webkit-backdrop-filter: var(--prs-blur);\n backdrop-filter: var(--prs-blur);\n animation: prs-minimized-in 220ms var(--prs-ease-out);\n transition:\n border-color 160ms ease,\n box-shadow 160ms ease,\n transform 160ms ease;\n}\n\n.prs-minimized:hover {\n border-color: var(--prs-accent-ring);\n box-shadow: var(--prs-shadow), 0 0 0 3px var(--prs-accent-soft);\n}\n\n.prs-minimized:active {\n transform: scale(0.97);\n}\n\n.prs-minimized:focus-visible {\n outline: 2px solid var(--prs-accent);\n outline-offset: 2px;\n}\n\n.prs-minimized__dot {\n width: 7px;\n height: 7px;\n border-radius: 999px;\n background: var(--prs-accent);\n box-shadow: 0 0 0 3px var(--prs-accent-soft);\n}\n\n@keyframes prs-minimized-in {\n from {\n opacity: 0;\n transform: translate3d(0, 6px, 0) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .prs-minimized {\n animation: none;\n }\n}\n\n/* ------------------------------------------------------------- animations */\n/*\n * Presets selected with `animation`, `enterAnimation` or `exitAnimation`.\n * Pace them with --prs-enter-duration / --prs-exit-duration.\n */\n\n.prs-item[data-state=\"visible\"][data-enter=\"fade\"] {\n animation: prs-fade-in var(--prs-enter-duration, 260ms) ease both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"fade\"] {\n animation: prs-fade-out var(--prs-exit-duration, 180ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"scale\"] {\n animation: prs-scale-in var(--prs-enter-duration, 300ms) var(--prs-ease-out)\n both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"scale\"] {\n animation: prs-scale-out var(--prs-exit-duration, 170ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"pop\"] {\n animation: prs-pop-in var(--prs-enter-duration, 460ms) var(--prs-ease-spring)\n both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"pop\"] {\n animation: prs-pop-out var(--prs-exit-duration, 210ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"flip\"] {\n animation: prs-flip-in var(--prs-enter-duration, 420ms) var(--prs-ease-out)\n both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"flip\"] {\n animation: prs-flip-out var(--prs-exit-duration, 220ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"none\"] {\n animation: none;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"none\"] {\n animation: none;\n}\n\n.prs-item[data-enter=\"none\"] .prs-item__icon {\n animation: none;\n}\n\n@keyframes prs-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes prs-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes prs-scale-in {\n from {\n opacity: 0;\n transform: scale(0.86);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes prs-scale-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.9);\n }\n}\n\n@keyframes prs-pop-in {\n 0% {\n opacity: 0;\n transform: scale(0.72);\n }\n 55% {\n opacity: 1;\n transform: scale(1.06);\n }\n 78% {\n transform: scale(0.985);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes prs-pop-out {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 35% {\n opacity: 1;\n transform: scale(1.04);\n }\n 100% {\n opacity: 0;\n transform: scale(0.85);\n }\n}\n\n@keyframes prs-flip-in {\n from {\n opacity: 0;\n transform: perspective(900px) rotateX(-70deg);\n }\n to {\n opacity: 1;\n transform: perspective(900px) rotateX(0deg);\n }\n}\n\n@keyframes prs-flip-out {\n from {\n opacity: 1;\n transform: perspective(900px) rotateX(0deg);\n }\n to {\n opacity: 0;\n transform: perspective(900px) rotateX(70deg);\n }\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/* react-snackbar-glass — design tokens + component styles */\n.prs-root {\n --prs-font:\n \"Inter var\", Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif;\n --prs-radius: 18px;\n --prs-width: 384px;\n --prs-offset: 20px;\n --prs-gap: 12px;\n --prs-z-index: 2147483000;\n\n --prs-surface: rgba(255, 255, 255, 0.9);\n --prs-fg: #0f172a;\n --prs-muted: #5b6472;\n --prs-border: rgba(15, 23, 42, 0.1);\n --prs-border-strong: rgba(15, 23, 42, 0.18);\n --prs-shadow-color: rgba(15, 23, 42, 0.3);\n --prs-inner: rgba(255, 255, 255, 0.7);\n --prs-icon-sheen: rgba(255, 255, 255, 0.6);\n --prs-track: rgba(15, 23, 42, 0.07);\n --prs-blur: blur(22px) saturate(1.55);\n\n --prs-shadow:\n 0 1px 2px -1px var(--prs-shadow-color),\n 0 10px 22px -14px var(--prs-shadow-color),\n 0 24px 56px -28px var(--prs-shadow-color);\n --prs-shadow-hover:\n 0 1px 2px -1px var(--prs-shadow-color),\n 0 14px 28px -14px var(--prs-shadow-color),\n 0 34px 70px -30px var(--prs-shadow-color);\n --prs-ease-spring: cubic-bezier(0.2, 1.12, 0.3, 1);\n --prs-ease-out: cubic-bezier(0.22, 1, 0.36, 1);\n\n position: fixed;\n inset: 0;\n z-index: var(--prs-z-index);\n pointer-events: none;\n font-family: var(--prs-font);\n color-scheme: light;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\n.prs-root[data-prs-theme=\"dark\"] {\n color-scheme: dark;\n}\n\n.prs-root[data-prs-theme=\"auto\"] {\n color-scheme: light dark;\n}\n\n@supports (color: light-dark(#000, #fff)) {\n .prs-root {\n --prs-surface: light-dark(rgba(255, 255, 255, 0.9), rgba(22, 24, 32, 0.82));\n --prs-fg: light-dark(#0f172a, #f4f6fb);\n --prs-muted: light-dark(#5b6472, #a7aebc);\n --prs-border: light-dark(rgba(15, 23, 42, 0.1), rgba(255, 255, 255, 0.1));\n --prs-border-strong: light-dark(\n rgba(15, 23, 42, 0.18),\n rgba(255, 255, 255, 0.18)\n );\n --prs-shadow-color: light-dark(\n rgba(15, 23, 42, 0.3),\n rgba(0, 0, 0, 0.66)\n );\n --prs-inner: light-dark(\n rgba(255, 255, 255, 0.7),\n rgba(255, 255, 255, 0.055)\n );\n --prs-icon-sheen: light-dark(\n rgba(255, 255, 255, 0.6),\n rgba(255, 255, 255, 0.07)\n );\n --prs-track: light-dark(\n rgba(15, 23, 42, 0.07),\n rgba(255, 255, 255, 0.1)\n );\n }\n}\n\n/* ---------------------------------------------------------------- regions */\n\n.prs-region {\n position: absolute;\n display: flex;\n flex-direction: column;\n gap: var(--prs-gap);\n box-sizing: border-box;\n width: min(calc(var(--prs-width) * 1.16 + var(--prs-offset) * 2), 100%);\n padding: var(--prs-offset);\n pointer-events: none;\n}\n\n.prs-region[data-position^=\"top\"] {\n top: 0;\n padding-top: calc(var(--prs-offset) + env(safe-area-inset-top, 0px));\n --prs-enter-y: -14px;\n}\n\n.prs-region[data-position^=\"bottom\"] {\n bottom: 0;\n padding-bottom: calc(var(--prs-offset) + env(safe-area-inset-bottom, 0px));\n --prs-enter-y: 14px;\n}\n\n.prs-region[data-position$=\"left\"] {\n left: 0;\n align-items: flex-start;\n}\n\n.prs-region[data-position$=\"right\"] {\n right: 0;\n align-items: flex-end;\n}\n\n.prs-region[data-position$=\"center\"] {\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* ------------------------------------------------------------------ item */\n\n.prs-item {\n --prs-item-width: var(--prs-width);\n --prs-pad-top: 14px;\n --prs-pad-right: 12px;\n --prs-pad-bottom: 15px;\n --prs-pad-left: 14px;\n --prs-col-gap: 12px;\n --prs-icon-size: 34px;\n --prs-icon-radius: 11px;\n --prs-glyph-size: 18px;\n --prs-title-size: 13.5px;\n --prs-message-size: 13px;\n --prs-lead-size: 13.5px;\n --prs-action-size: 12px;\n --prs-action-pad-y: 5px;\n --prs-action-pad-x: 11px;\n --prs-close-size: 26px;\n --prs-close-icon: 14px;\n\n position: relative;\n width: var(--prs-item-width);\n max-width: 100%;\n pointer-events: auto;\n transform-origin: bottom center;\n animation: prs-in var(--prs-enter-duration, 440ms) var(--prs-ease-spring) both;\n will-change: transform, opacity;\n}\n\n.prs-item[data-size=\"xs\"] {\n --prs-item-width: calc(var(--prs-width) * 0.72);\n --prs-radius: 14px;\n --prs-pad-top: 10px;\n --prs-pad-right: 9px;\n --prs-pad-bottom: 12px;\n --prs-pad-left: 10px;\n --prs-col-gap: 9px;\n --prs-icon-size: 28px;\n --prs-icon-radius: 9px;\n --prs-glyph-size: 16px;\n --prs-title-size: 12.5px;\n --prs-message-size: 11.5px;\n --prs-lead-size: 12px;\n --prs-action-size: 10.5px;\n --prs-action-pad-y: 4px;\n --prs-action-pad-x: 8px;\n --prs-close-size: 22px;\n --prs-close-icon: 12px;\n}\n\n.prs-item[data-size=\"sm\"] {\n --prs-item-width: calc(var(--prs-width) * 0.86);\n --prs-radius: 16px;\n --prs-pad-top: 12px;\n --prs-pad-right: 10px;\n --prs-pad-bottom: 13px;\n --prs-pad-left: 12px;\n --prs-col-gap: 10px;\n --prs-icon-size: 31px;\n --prs-icon-radius: 10px;\n --prs-glyph-size: 17px;\n --prs-title-size: 13px;\n --prs-message-size: 12px;\n --prs-lead-size: 12.5px;\n --prs-action-size: 11px;\n --prs-action-pad-y: 4px;\n --prs-action-pad-x: 9px;\n --prs-close-size: 24px;\n --prs-close-icon: 13px;\n}\n\n.prs-item[data-size=\"lg\"] {\n --prs-item-width: calc(var(--prs-width) * 1.16);\n --prs-radius: 20px;\n --prs-pad-top: 16px;\n --prs-pad-right: 14px;\n --prs-pad-bottom: 17px;\n --prs-pad-left: 16px;\n --prs-col-gap: 13px;\n --prs-icon-size: 38px;\n --prs-icon-radius: 12px;\n --prs-glyph-size: 20px;\n --prs-title-size: 14.5px;\n --prs-message-size: 13.5px;\n --prs-lead-size: 14px;\n --prs-action-size: 12.5px;\n --prs-action-pad-y: 6px;\n --prs-action-pad-x: 12px;\n --prs-close-size: 28px;\n --prs-close-icon: 15px;\n}\n\n.prs-item[data-position^=\"top\"] {\n transform-origin: top center;\n}\n\n.prs-item[data-state=\"exiting\"] {\n pointer-events: none;\n animation: prs-out var(--prs-exit-duration, 190ms)\n cubic-bezier(0.4, 0, 1, 1) both;\n}\n\n.prs-item[data-dragging=\"true\"] {\n user-select: none;\n -webkit-user-select: none;\n}\n\n.prs-item__surface {\n position: relative;\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--prs-col-gap);\n box-sizing: border-box;\n width: 100%;\n padding: var(--prs-pad-top) var(--prs-pad-right) var(--prs-pad-bottom)\n var(--prs-pad-left);\n overflow: hidden;\n isolation: isolate;\n border: 1px solid var(--prs-border);\n border-radius: var(--prs-radius);\n background:\n radial-gradient(\n 130% 160% at 0% 0%,\n var(--prs-accent-soft, transparent),\n transparent 54%\n ),\n linear-gradient(180deg, var(--prs-inner), transparent 44%),\n var(--prs-surface);\n box-shadow: var(--prs-shadow), inset 0 1px 0 var(--prs-inner);\n color: var(--prs-fg);\n -webkit-backdrop-filter: var(--prs-blur);\n backdrop-filter: var(--prs-blur);\n transform: translate3d(var(--prs-drag-x, 0), 0, 0);\n opacity: var(--prs-drag-opacity, 1);\n transition:\n transform 260ms var(--prs-ease-out),\n opacity 160ms ease,\n border-color 180ms ease,\n box-shadow 180ms ease;\n touch-action: pan-y;\n}\n\n/* Fine film grain keeps large glass surfaces from feeling flat. */\n.prs-item__surface::before {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 0;\n border-radius: inherit;\n pointer-events: none;\n opacity: 0.045;\n mix-blend-mode: soft-light;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E\");\n}\n\n.prs-item[data-dragging=\"true\"] .prs-item__surface {\n transition: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .prs-item__surface:hover {\n border-color: var(--prs-accent-ring, var(--prs-border-strong));\n box-shadow: var(--prs-shadow-hover), inset 0 1px 0 var(--prs-inner);\n }\n}\n\n.prs-item[data-has-icon=\"false\"] .prs-item__surface {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n\n.prs-item[data-dismissible=\"false\"][data-has-icon=\"true\"] .prs-item__surface {\n grid-template-columns: auto minmax(0, 1fr);\n}\n\n.prs-item[data-dismissible=\"false\"][data-has-icon=\"false\"] .prs-item__surface {\n grid-template-columns: minmax(0, 1fr);\n}\n\n/* -------------------------------------------------------------- accent map */\n\n.prs-item {\n --prs-accent-light: #475569;\n --prs-accent-dark: #cbd5e1;\n --prs-accent: var(--prs-accent-light);\n --prs-solid: var(--prs-accent-light);\n --prs-accent-soft: rgba(71, 85, 105, 0.12);\n --prs-accent-ring: rgba(71, 85, 105, 0.28);\n}\n\n@supports (color: light-dark(#000, #fff)) {\n .prs-item {\n --prs-accent: light-dark(var(--prs-accent-light), var(--prs-accent-dark));\n }\n}\n\n@supports (color: color-mix(in srgb, red, blue)) {\n .prs-item {\n --prs-accent-soft: color-mix(\n in srgb,\n var(--prs-accent) 13%,\n transparent\n );\n --prs-accent-ring: color-mix(\n in srgb,\n var(--prs-accent) 30%,\n transparent\n );\n }\n}\n\n.prs-item[data-variant=\"success\"] {\n --prs-accent-light: #087a55;\n --prs-accent-dark: #34d399;\n}\n\n.prs-item[data-variant=\"error\"] {\n --prs-accent-light: #b42318;\n --prs-accent-dark: #f87171;\n}\n\n.prs-item[data-variant=\"warning\"] {\n --prs-accent-light: #9a4e00;\n --prs-accent-dark: #fbbf24;\n}\n\n.prs-item[data-variant=\"info\"] {\n --prs-accent-light: #1d4ed8;\n --prs-accent-dark: #60a5fa;\n}\n\n.prs-item[data-variant=\"loading\"],\n.prs-item[data-variant=\"custom\"] {\n --prs-accent-light: #6d28d9;\n --prs-accent-dark: #a78bfa;\n}\n\n/* ------------------------------------------------------------------ icon */\n\n.prs-item__icon {\n position: relative;\n z-index: 1;\n display: grid;\n place-items: center;\n width: var(--prs-icon-size);\n height: var(--prs-icon-size);\n margin-top: -1px;\n border-radius: var(--prs-icon-radius);\n color: var(--prs-accent);\n background:\n linear-gradient(180deg, var(--prs-icon-sheen), transparent 70%),\n var(--prs-accent-soft);\n box-shadow:\n inset 0 0 0 1px var(--prs-accent-ring),\n inset 0 1px 0 var(--prs-icon-sheen);\n animation: prs-icon-in 540ms var(--prs-ease-spring) both 30ms;\n}\n\n.prs-item__icon svg {\n display: block;\n width: var(--prs-glyph-size);\n height: var(--prs-glyph-size);\n}\n\n.prs-icon-spin {\n animation: prs-spin 900ms linear infinite;\n transform-origin: center;\n}\n\n/* --------------------------------------------------------------- content */\n\n.prs-item__content {\n position: relative;\n z-index: 1;\n min-width: 0;\n padding-top: 1px;\n}\n\n/* Without a title the content is a single line, so it has to sit centred\n against the icon instead of hanging from the top of the row. */\n.prs-item[data-layout=\"card\"] .prs-item__content[data-has-title=\"false\"] {\n align-self: center;\n padding-top: 0;\n}\n\n.prs-item__title {\n color: var(--prs-fg);\n font-size: var(--prs-title-size);\n font-weight: 650;\n line-height: 1.35;\n letter-spacing: -0.012em;\n overflow-wrap: anywhere;\n}\n\n.prs-item__message {\n color: var(--prs-muted);\n font-size: var(--prs-message-size);\n font-weight: 400;\n line-height: 1.5;\n letter-spacing: -0.004em;\n overflow-wrap: anywhere;\n}\n\n.prs-item__title + .prs-item__message {\n margin-top: 2px;\n}\n\n.prs-item__content[data-has-title=\"false\"] .prs-item__message {\n color: var(--prs-fg);\n font-size: var(--prs-lead-size);\n font-weight: 500;\n letter-spacing: -0.006em;\n}\n\n.prs-item__message a {\n color: var(--prs-accent);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 2px;\n}\n\n.prs-item__actions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 9px;\n}\n\n.prs-action {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n appearance: none;\n margin: 0;\n padding: var(--prs-action-pad-y) var(--prs-action-pad-x);\n border: 1px solid var(--prs-accent-ring);\n border-radius: 999px;\n background: var(--prs-accent-soft);\n color: var(--prs-accent);\n font-family: inherit;\n font-size: var(--prs-action-size);\n font-weight: 650;\n line-height: 1.35;\n letter-spacing: 0.004em;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n color 160ms ease,\n transform 160ms ease;\n}\n\n.prs-action:hover {\n background: var(--prs-accent-ring);\n}\n\n.prs-action:active {\n transform: scale(0.965);\n}\n\n.prs-action:disabled {\n cursor: progress;\n opacity: 0.72;\n}\n\n.prs-action:focus-visible {\n outline: 2px solid var(--prs-accent);\n outline-offset: 2px;\n}\n\n.prs-action__spinner {\n width: 11px;\n height: 11px;\n border: 1.5px solid var(--prs-accent-ring);\n border-top-color: var(--prs-accent);\n border-radius: 999px;\n animation: prs-spin 700ms linear infinite;\n}\n\n/* ----------------------------------------------------------------- close */\n\n.prs-close {\n position: relative;\n z-index: 1;\n display: grid;\n place-items: center;\n width: var(--prs-close-size);\n height: var(--prs-close-size);\n margin: -3px -3px 0 0;\n padding: 0;\n border: 0;\n border-radius: 8px;\n background: transparent;\n color: var(--prs-muted);\n line-height: 0;\n cursor: pointer;\n opacity: 0.72;\n -webkit-tap-highlight-color: transparent;\n transition:\n background 150ms ease,\n color 150ms ease,\n opacity 150ms ease;\n}\n\n.prs-close svg {\n width: var(--prs-close-icon);\n height: var(--prs-close-icon);\n pointer-events: none;\n}\n\n.prs-close:hover {\n background: var(--prs-track);\n color: var(--prs-fg);\n opacity: 1;\n}\n\n.prs-close:focus-visible {\n outline: 2px solid var(--prs-accent);\n outline-offset: 1px;\n opacity: 1;\n}\n\n/* -------------------------------------------------------------- progress */\n\n.prs-progress {\n position: absolute;\n right: 12px;\n bottom: 6px;\n left: 12px;\n z-index: 1;\n height: 2px;\n overflow: hidden;\n border-radius: 999px;\n background: var(--prs-track);\n pointer-events: none;\n transition: opacity 140ms ease;\n}\n\n.prs-progress__bar {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n background: linear-gradient(\n 90deg,\n var(--prs-accent),\n color-mix(in srgb, var(--prs-accent) 45%, white)\n );\n transform-origin: left center;\n animation-name: prs-progress;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n}\n\n.prs-item[data-paused=\"true\"] .prs-progress__bar {\n animation-play-state: paused;\n}\n\n.prs-item[data-state=\"exiting\"] .prs-progress {\n opacity: 0;\n}\n\n[dir=\"rtl\"] .prs-progress__bar {\n transform-origin: right center;\n}\n\n/* ------------------------------------------------------------ solid tone */\n\n.prs-item[data-tone=\"solid\"] .prs-item__surface {\n --prs-fg: #fff;\n --prs-muted: rgba(255, 255, 255, 0.78);\n border-color: color-mix(in srgb, var(--prs-solid) 55%, #000);\n background:\n radial-gradient(\n 140% 200% at 0% 0%,\n rgba(255, 255, 255, 0.2),\n transparent 58%\n ),\n linear-gradient(\n 135deg,\n var(--prs-solid),\n color-mix(in srgb, var(--prs-solid) 72%, #000)\n );\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.24) inset,\n 0 12px 28px -14px color-mix(in srgb, var(--prs-solid) 55%, transparent),\n 0 26px 60px -28px var(--prs-shadow-color);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-item__icon {\n color: #fff;\n background: rgba(255, 255, 255, 0.16);\n box-shadow:\n inset 0 0 0 1px rgba(255, 255, 255, 0.22),\n inset 0 1px 0 rgba(255, 255, 255, 0.26);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-close {\n color: rgba(255, 255, 255, 0.82);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-close:hover {\n background: rgba(255, 255, 255, 0.16);\n color: #fff;\n}\n\n.prs-item[data-tone=\"solid\"] .prs-action {\n border-color: rgba(255, 255, 255, 0.24);\n background: rgba(255, 255, 255, 0.16);\n color: #fff;\n}\n\n.prs-item[data-tone=\"solid\"] .prs-action:hover {\n background: rgba(255, 255, 255, 0.24);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-action:focus-visible {\n outline-color: #fff;\n}\n\n.prs-item[data-tone=\"solid\"] .prs-progress {\n background: rgba(255, 255, 255, 0.18);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-progress__bar {\n background: rgba(255, 255, 255, 0.92);\n}\n\n.prs-item[data-tone=\"solid\"] .prs-item__message a {\n color: #fff;\n}\n\n/* ------------------------------------------------------------ paper tone */\n\n/* Matte and opaque: reads like a native OS notification, no blur needed. */\n.prs-item[data-tone=\"paper\"] .prs-item__surface {\n --prs-blur: none;\n --prs-inner: rgba(255, 255, 255, 0.9);\n border-color: rgba(15, 23, 42, 0.09);\n background: #ffffff;\n box-shadow:\n inset 0 1px 0 var(--prs-inner),\n 0 1px 2px rgba(15, 23, 42, 0.06),\n 0 14px 28px -22px rgba(15, 23, 42, 0.45);\n}\n\n@supports (color: light-dark(#000, #fff)) {\n .prs-item[data-tone=\"paper\"] .prs-item__surface {\n --prs-inner: light-dark(\n rgba(255, 255, 255, 0.9),\n rgba(255, 255, 255, 0.05)\n );\n border-color: light-dark(\n rgba(15, 23, 42, 0.09),\n rgba(255, 255, 255, 0.09)\n );\n background: light-dark(#ffffff, #191b23);\n box-shadow:\n inset 0 1px 0 var(--prs-inner),\n 0 1px 2px light-dark(rgba(15, 23, 42, 0.05), rgba(0, 0, 0, 0.5)),\n 0 14px 28px -22px light-dark(rgba(15, 23, 42, 0.4), rgba(0, 0, 0, 0.8));\n }\n}\n\n.prs-item[data-tone=\"paper\"] .prs-item__surface::before {\n opacity: 0.015;\n}\n\n/* --------------------------------------------------------- graphite tone */\n\n/* Dark matte charcoal that holds up on light and dark pages alike. */\n.prs-item[data-tone=\"graphite\"] {\n --prs-accent: var(--prs-accent-dark);\n}\n\n.prs-item[data-tone=\"graphite\"] .prs-item__surface {\n --prs-fg: #f3f5fa;\n --prs-muted: rgba(243, 245, 250, 0.74);\n --prs-track: rgba(255, 255, 255, 0.12);\n --prs-inner: rgba(255, 255, 255, 0.07);\n --prs-blur: none;\n border-color: rgba(255, 255, 255, 0.11);\n background: #1f232c;\n background:\n radial-gradient(\n 120% 150% at 0% 0%,\n rgba(255, 255, 255, 0.06),\n transparent 55%\n ),\n linear-gradient(180deg, #2b303b, #1b1f27);\n box-shadow:\n inset 0 1px 0 var(--prs-inner),\n 0 1px 2px rgba(0, 0, 0, 0.45),\n 0 18px 40px -26px rgba(0, 0, 0, 0.85);\n}\n\n/* ------------------------------------------------------------- neon tone */\n\n/* Near-black card with an accent glow — the loud one, for dev tools. */\n.prs-item[data-tone=\"neon\"] {\n --prs-accent: var(--prs-accent-dark);\n}\n\n.prs-item[data-tone=\"neon\"] .prs-item__surface {\n --prs-fg: #f8fafc;\n --prs-muted: rgba(248, 250, 252, 0.7);\n --prs-track: rgba(255, 255, 255, 0.14);\n --prs-inner: rgba(255, 255, 255, 0.05);\n --prs-blur: none;\n border-color: rgba(255, 255, 255, 0.14);\n background: #080a11;\n box-shadow:\n inset 0 1px 0 var(--prs-inner),\n 0 18px 40px -28px rgba(0, 0, 0, 0.9),\n 0 0 30px -14px var(--prs-accent);\n}\n\n@supports (color: color-mix(in srgb, red, blue)) {\n .prs-item[data-tone=\"neon\"] .prs-item__surface {\n border-color: color-mix(in srgb, var(--prs-accent) 55%, transparent);\n background:\n radial-gradient(\n 120% 160% at 0% 0%,\n color-mix(in srgb, var(--prs-accent) 26%, transparent),\n transparent 58%\n ),\n radial-gradient(\n 120% 160% at 100% 100%,\n color-mix(in srgb, var(--prs-accent) 12%, transparent),\n transparent 62%\n ),\n #080a11;\n box-shadow:\n inset 0 1px 0 var(--prs-inner),\n 0 0 0 1px color-mix(in srgb, var(--prs-accent) 22%, transparent),\n 0 18px 40px -28px color-mix(in srgb, var(--prs-accent) 45%, transparent),\n 0 0 32px -12px color-mix(in srgb, var(--prs-accent) 70%, transparent);\n }\n}\n\n.prs-item[data-tone=\"graphite\"] .prs-item__surface::before,\n.prs-item[data-tone=\"neon\"] .prs-item__surface::before {\n opacity: 0.07;\n}\n\n/* Dark presets need a stronger accent tint for the glyph chip to read. */\n@supports (color: color-mix(in srgb, red, blue)) {\n .prs-item[data-tone=\"graphite\"],\n .prs-item[data-tone=\"neon\"] {\n --prs-accent-soft: color-mix(in srgb, var(--prs-accent) 26%, transparent);\n --prs-accent-ring: color-mix(in srgb, var(--prs-accent) 42%, transparent);\n }\n}\n\n/* ------------------------------------------------------------- keyframes */\n\n@keyframes prs-in {\n 0% {\n opacity: 0;\n transform: translate3d(0, var(--prs-enter-y, 14px), 0) scale(0.94);\n filter: blur(5px);\n }\n 55% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n transform: none;\n filter: blur(0);\n }\n}\n\n@keyframes prs-out {\n 0% {\n opacity: 1;\n transform: none;\n filter: blur(0);\n }\n 100% {\n opacity: 0;\n transform: translate3d(0, calc(var(--prs-enter-y, 10px) * 0.55), 0)\n scale(0.965);\n filter: blur(2px);\n }\n}\n\n@keyframes prs-icon-in {\n 0% {\n opacity: 0;\n transform: scale(0.55) rotate(-10deg);\n }\n 100% {\n opacity: 1;\n transform: scale(1) rotate(0deg);\n }\n}\n\n@keyframes prs-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes prs-progress {\n from {\n transform: scaleX(1);\n }\n to {\n transform: scaleX(0);\n }\n}\n\n/* ---------------------------------------------------------- reduced motion */\n\n@media (prefers-reduced-motion: reduce) {\n .prs-item,\n .prs-item[data-state=\"exiting\"] {\n animation-duration: 0.01ms !important;\n }\n\n .prs-item__surface {\n transition-duration: 0.01ms !important;\n }\n\n .prs-item__icon {\n animation: none !important;\n }\n\n .prs-icon-spin {\n animation: none !important;\n opacity: 0.7;\n }\n\n .prs-progress__bar {\n animation: none !important;\n transform: scaleX(1);\n opacity: 0.55;\n }\n}\n\n/* --------------------------------------------------------------- compact */\n/* Single-line pill: same card, far less vertical and horizontal space. */\n.prs-item[data-compact=\"true\"] {\n --prs-item-width: auto;\n max-width: var(--prs-width);\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__surface {\n align-items: center;\n column-gap: 8px;\n padding: 7px 8px 7px 10px;\n border-radius: 999px;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__icon {\n --prs-icon-size: 20px;\n --prs-glyph-size: 12px;\n --prs-icon-radius: 999px;\n margin-top: 0;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__content {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n padding-top: 0;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__title {\n display: none;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__message,\n.prs-item[data-compact=\"true\"]\n .prs-item__content[data-has-title=\"false\"]\n .prs-item__message {\n max-width: 46ch;\n overflow: hidden;\n font-size: 12.5px;\n font-weight: 500;\n line-height: 1.35;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.prs-item[data-compact=\"true\"] .prs-item__actions {\n flex-shrink: 0;\n margin-top: 0;\n}\n\n.prs-item[data-compact=\"true\"] .prs-action {\n padding: 3px 9px;\n font-size: 11.5px;\n}\n\n.prs-item[data-compact=\"true\"] .prs-close {\n --prs-close-size: 22px;\n --prs-close-icon: 11px;\n margin: 0;\n}\n\n/* ---------------------------------------------------------------- inline */\n/* Message-only status line: content width, one line, no title, no hairline. */\n.prs-item[data-layout=\"inline\"] {\n --prs-item-width: auto;\n max-width: min(420px, 100%);\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__surface {\n align-items: center;\n column-gap: 9px;\n padding: 8px 13px 8px 9px;\n border-radius: var(--prs-radius-inline, 12px);\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__icon {\n --prs-icon-size: 22px;\n --prs-glyph-size: 13px;\n --prs-icon-radius: 999px;\n flex: none;\n margin-top: 0;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__content {\n min-width: 0;\n padding-top: 0;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__title {\n display: none;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__message {\n overflow: hidden;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-item__actions {\n margin-top: 0;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-action {\n padding: 2px 8px;\n font-size: 11.5px;\n}\n\n.prs-item[data-layout=\"inline\"] .prs-close {\n --prs-close-size: 22px;\n --prs-close-icon: 11px;\n margin: 0;\n}\n\n/* -------------------------------------------------------------- minimized */\n/* The whole stack collapses into one summary pill; click to expand. */\n.prs-region--minimized {\n width: auto;\n padding: var(--prs-offset);\n}\n\n.prs-minimized {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n appearance: none;\n margin: 0;\n padding: 8px 15px 8px 12px;\n border: 1px solid var(--prs-border);\n border-radius: 999px;\n background: var(--prs-surface);\n color: var(--prs-fg);\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 560;\n letter-spacing: -0.005em;\n cursor: pointer;\n pointer-events: auto;\n box-shadow: var(--prs-shadow), inset 0 1px 0 var(--prs-inner);\n -webkit-backdrop-filter: var(--prs-blur);\n backdrop-filter: var(--prs-blur);\n animation: prs-minimized-in 220ms var(--prs-ease-out);\n transition:\n border-color 160ms ease,\n box-shadow 160ms ease,\n transform 160ms ease;\n}\n\n.prs-minimized:hover {\n border-color: var(--prs-accent-ring);\n box-shadow: var(--prs-shadow), 0 0 0 3px var(--prs-accent-soft);\n}\n\n.prs-minimized:active {\n transform: scale(0.97);\n}\n\n.prs-minimized:focus-visible {\n outline: 2px solid var(--prs-accent);\n outline-offset: 2px;\n}\n\n.prs-minimized__dot {\n width: 7px;\n height: 7px;\n border-radius: 999px;\n background: var(--prs-accent);\n box-shadow: 0 0 0 3px var(--prs-accent-soft);\n}\n\n@keyframes prs-minimized-in {\n from {\n opacity: 0;\n transform: translate3d(0, 6px, 0) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .prs-minimized {\n animation: none;\n }\n}\n\n/* ------------------------------------------------------------- animations */\n/*\n * Presets selected with `animation`, `enterAnimation` or `exitAnimation`.\n * Pace them with --prs-enter-duration / --prs-exit-duration.\n */\n\n.prs-item[data-state=\"visible\"][data-enter=\"fade\"] {\n animation: prs-fade-in var(--prs-enter-duration, 260ms) ease both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"fade\"] {\n animation: prs-fade-out var(--prs-exit-duration, 180ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"scale\"] {\n animation: prs-scale-in var(--prs-enter-duration, 300ms) var(--prs-ease-out)\n both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"scale\"] {\n animation: prs-scale-out var(--prs-exit-duration, 170ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"pop\"] {\n animation: prs-pop-in var(--prs-enter-duration, 460ms) var(--prs-ease-spring)\n both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"pop\"] {\n animation: prs-pop-out var(--prs-exit-duration, 210ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"flip\"] {\n animation: prs-flip-in var(--prs-enter-duration, 420ms) var(--prs-ease-out)\n both;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"flip\"] {\n animation: prs-flip-out var(--prs-exit-duration, 220ms) ease both;\n}\n\n.prs-item[data-state=\"visible\"][data-enter=\"none\"] {\n animation: none;\n}\n\n.prs-item[data-state=\"exiting\"][data-exit=\"none\"] {\n animation: none;\n}\n\n.prs-item[data-enter=\"none\"] .prs-item__icon {\n animation: none;\n}\n\n@keyframes prs-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes prs-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes prs-scale-in {\n from {\n opacity: 0;\n transform: scale(0.86);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes prs-scale-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.9);\n }\n}\n\n@keyframes prs-pop-in {\n 0% {\n opacity: 0;\n transform: scale(0.72);\n }\n 55% {\n opacity: 1;\n transform: scale(1.06);\n }\n 78% {\n transform: scale(0.985);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes prs-pop-out {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 35% {\n opacity: 1;\n transform: scale(1.04);\n }\n 100% {\n opacity: 0;\n transform: scale(0.85);\n }\n}\n\n@keyframes prs-flip-in {\n from {\n opacity: 0;\n transform: perspective(900px) rotateX(-70deg);\n }\n to {\n opacity: 1;\n transform: perspective(900px) rotateX(0deg);\n }\n}\n\n@keyframes prs-flip-out {\n from {\n opacity: 1;\n transform: perspective(900px) rotateX(0deg);\n }\n to {\n opacity: 0;\n transform: perspective(900px) rotateX(70deg);\n }\n}\r\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -6,8 +6,16 @@ import { ReactNode, CSSProperties } from 'react';
|
|
|
6
6
|
* icon and accessible live-region behaviour.
|
|
7
7
|
*/
|
|
8
8
|
type SnackbarVariant = 'neutral' | 'success' | 'error' | 'warning' | 'info' | 'loading' | 'custom';
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Surface preset for a snackbar.
|
|
11
|
+
*
|
|
12
|
+
* - `glass` — frosted translucent default; the page shows through.
|
|
13
|
+
* - `solid` — the variant accent painted as the surface.
|
|
14
|
+
* - `paper` — opaque, matte, hairline border, no blur. Light/dark aware.
|
|
15
|
+
* - `graphite` — dark matte charcoal with light text, in both themes.
|
|
16
|
+
* - `neon` — near-black with an accent glow ring, in both themes.
|
|
17
|
+
*/
|
|
18
|
+
type SnackbarTone = 'glass' | 'solid' | 'paper' | 'graphite' | 'neon';
|
|
11
19
|
/**
|
|
12
20
|
* Density and width of a snackbar. `md` is the default; `xs` is a compact
|
|
13
21
|
* mini style, `lg` is an editorial width for richer content.
|
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,16 @@ import { ReactNode, CSSProperties } from 'react';
|
|
|
6
6
|
* icon and accessible live-region behaviour.
|
|
7
7
|
*/
|
|
8
8
|
type SnackbarVariant = 'neutral' | 'success' | 'error' | 'warning' | 'info' | 'loading' | 'custom';
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Surface preset for a snackbar.
|
|
11
|
+
*
|
|
12
|
+
* - `glass` — frosted translucent default; the page shows through.
|
|
13
|
+
* - `solid` — the variant accent painted as the surface.
|
|
14
|
+
* - `paper` — opaque, matte, hairline border, no blur. Light/dark aware.
|
|
15
|
+
* - `graphite` — dark matte charcoal with light text, in both themes.
|
|
16
|
+
* - `neon` — near-black with an accent glow ring, in both themes.
|
|
17
|
+
*/
|
|
18
|
+
type SnackbarTone = 'glass' | 'solid' | 'paper' | 'graphite' | 'neon';
|
|
11
19
|
/**
|
|
12
20
|
* Density and width of a snackbar. `md` is the default; `xs` is a compact
|
|
13
21
|
* mini style, `lg` is an editorial width for richer content.
|
package/dist/styles.css
CHANGED
|
@@ -334,6 +334,10 @@
|
|
|
334
334
|
min-width: 0;
|
|
335
335
|
padding-top: 1px;
|
|
336
336
|
}
|
|
337
|
+
.prs-item[data-layout=card] .prs-item__content[data-has-title=false] {
|
|
338
|
+
align-self: center;
|
|
339
|
+
padding-top: 0;
|
|
340
|
+
}
|
|
337
341
|
.prs-item__title {
|
|
338
342
|
color: var(--prs-fg);
|
|
339
343
|
font-size: var(--prs-title-size);
|
|
@@ -541,6 +545,102 @@
|
|
|
541
545
|
.prs-item[data-tone=solid] .prs-item__message a {
|
|
542
546
|
color: #fff;
|
|
543
547
|
}
|
|
548
|
+
.prs-item[data-tone=paper] .prs-item__surface {
|
|
549
|
+
--prs-blur: none;
|
|
550
|
+
--prs-inner: rgba(255, 255, 255, 0.9);
|
|
551
|
+
border-color: rgba(15, 23, 42, 0.09);
|
|
552
|
+
background: #ffffff;
|
|
553
|
+
box-shadow:
|
|
554
|
+
inset 0 1px 0 var(--prs-inner),
|
|
555
|
+
0 1px 2px rgba(15, 23, 42, 0.06),
|
|
556
|
+
0 14px 28px -22px rgba(15, 23, 42, 0.45);
|
|
557
|
+
}
|
|
558
|
+
@supports (color: light-dark(#000, #fff)) {
|
|
559
|
+
.prs-item[data-tone=paper] .prs-item__surface {
|
|
560
|
+
--prs-inner: light-dark( rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.05) );
|
|
561
|
+
border-color: light-dark(rgba(15, 23, 42, 0.09), rgba(255, 255, 255, 0.09));
|
|
562
|
+
background: light-dark(#ffffff, #191b23);
|
|
563
|
+
box-shadow:
|
|
564
|
+
inset 0 1px 0 var(--prs-inner),
|
|
565
|
+
0 1px 2px light-dark(rgba(15, 23, 42, 0.05), rgba(0, 0, 0, 0.5)),
|
|
566
|
+
0 14px 28px -22px light-dark(rgba(15, 23, 42, 0.4), rgba(0, 0, 0, 0.8));
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
.prs-item[data-tone=paper] .prs-item__surface::before {
|
|
570
|
+
opacity: 0.015;
|
|
571
|
+
}
|
|
572
|
+
.prs-item[data-tone=graphite] {
|
|
573
|
+
--prs-accent: var(--prs-accent-dark);
|
|
574
|
+
}
|
|
575
|
+
.prs-item[data-tone=graphite] .prs-item__surface {
|
|
576
|
+
--prs-fg: #f3f5fa;
|
|
577
|
+
--prs-muted: rgba(243, 245, 250, 0.74);
|
|
578
|
+
--prs-track: rgba(255, 255, 255, 0.12);
|
|
579
|
+
--prs-inner: rgba(255, 255, 255, 0.07);
|
|
580
|
+
--prs-blur: none;
|
|
581
|
+
border-color: rgba(255, 255, 255, 0.11);
|
|
582
|
+
background: #1f232c;
|
|
583
|
+
background:
|
|
584
|
+
radial-gradient(
|
|
585
|
+
120% 150% at 0% 0%,
|
|
586
|
+
rgba(255, 255, 255, 0.06),
|
|
587
|
+
transparent 55%),
|
|
588
|
+
linear-gradient(
|
|
589
|
+
180deg,
|
|
590
|
+
#2b303b,
|
|
591
|
+
#1b1f27);
|
|
592
|
+
box-shadow:
|
|
593
|
+
inset 0 1px 0 var(--prs-inner),
|
|
594
|
+
0 1px 2px rgba(0, 0, 0, 0.45),
|
|
595
|
+
0 18px 40px -26px rgba(0, 0, 0, 0.85);
|
|
596
|
+
}
|
|
597
|
+
.prs-item[data-tone=neon] {
|
|
598
|
+
--prs-accent: var(--prs-accent-dark);
|
|
599
|
+
}
|
|
600
|
+
.prs-item[data-tone=neon] .prs-item__surface {
|
|
601
|
+
--prs-fg: #f8fafc;
|
|
602
|
+
--prs-muted: rgba(248, 250, 252, 0.7);
|
|
603
|
+
--prs-track: rgba(255, 255, 255, 0.14);
|
|
604
|
+
--prs-inner: rgba(255, 255, 255, 0.05);
|
|
605
|
+
--prs-blur: none;
|
|
606
|
+
border-color: rgba(255, 255, 255, 0.14);
|
|
607
|
+
background: #080a11;
|
|
608
|
+
box-shadow:
|
|
609
|
+
inset 0 1px 0 var(--prs-inner),
|
|
610
|
+
0 18px 40px -28px rgba(0, 0, 0, 0.9),
|
|
611
|
+
0 0 30px -14px var(--prs-accent);
|
|
612
|
+
}
|
|
613
|
+
@supports (color: color-mix(in srgb, red, blue)) {
|
|
614
|
+
.prs-item[data-tone=neon] .prs-item__surface {
|
|
615
|
+
border-color: color-mix(in srgb, var(--prs-accent) 55%, transparent);
|
|
616
|
+
background:
|
|
617
|
+
radial-gradient(
|
|
618
|
+
120% 160% at 0% 0%,
|
|
619
|
+
color-mix(in srgb, var(--prs-accent) 26%, transparent),
|
|
620
|
+
transparent 58%),
|
|
621
|
+
radial-gradient(
|
|
622
|
+
120% 160% at 100% 100%,
|
|
623
|
+
color-mix(in srgb, var(--prs-accent) 12%, transparent),
|
|
624
|
+
transparent 62%),
|
|
625
|
+
#080a11;
|
|
626
|
+
box-shadow:
|
|
627
|
+
inset 0 1px 0 var(--prs-inner),
|
|
628
|
+
0 0 0 1px color-mix(in srgb, var(--prs-accent) 22%, transparent),
|
|
629
|
+
0 18px 40px -28px color-mix(in srgb, var(--prs-accent) 45%, transparent),
|
|
630
|
+
0 0 32px -12px color-mix(in srgb, var(--prs-accent) 70%, transparent);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
.prs-item[data-tone=graphite] .prs-item__surface::before,
|
|
634
|
+
.prs-item[data-tone=neon] .prs-item__surface::before {
|
|
635
|
+
opacity: 0.07;
|
|
636
|
+
}
|
|
637
|
+
@supports (color: color-mix(in srgb, red, blue)) {
|
|
638
|
+
.prs-item[data-tone=graphite],
|
|
639
|
+
.prs-item[data-tone=neon] {
|
|
640
|
+
--prs-accent-soft: color-mix(in srgb, var(--prs-accent) 26%, transparent);
|
|
641
|
+
--prs-accent-ring: color-mix(in srgb, var(--prs-accent) 42%, transparent);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
544
644
|
@keyframes prs-in {
|
|
545
645
|
0% {
|
|
546
646
|
opacity: 0;
|
package/package.json
CHANGED