@nebulr-group/bridge-svelte 0.9.0-beta.2 → 0.9.0-beta.4
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/README.md +37 -1
- package/dist/client/components/subscription/BridgeBillingNotice.svelte +16 -15
- package/dist/client/components/subscription/BridgePaywall.svelte +1 -1
- package/dist/client/components/subscription/BridgeQuotaBanner.svelte +6 -10
- package/dist/client/components/subscription/BridgeSubscriptionStatus.svelte +12 -12
- package/dist/styles.css +145 -49
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,7 +14,43 @@ npm i @nebulr-group/bridge-svelte
|
|
|
14
14
|
|
|
15
15
|
### Usage
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
The whole integration is one `.env` line and three files:
|
|
18
|
+
|
|
19
|
+
```env
|
|
20
|
+
# .env
|
|
21
|
+
VITE_BRIDGE_APP_ID=your-app-id
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
// src/routes/+layout.ts
|
|
26
|
+
import { bridgeBootstrap } from '@nebulr-group/bridge-svelte';
|
|
27
|
+
export const ssr = false;
|
|
28
|
+
export const load = bridgeBootstrap({ rules: [{ match: new RegExp('^/auth($|/)'), public: true }] });
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```svelte
|
|
32
|
+
<!-- src/routes/+layout.svelte -->
|
|
33
|
+
<script lang="ts">
|
|
34
|
+
import { BridgeBootstrap } from '@nebulr-group/bridge-svelte';
|
|
35
|
+
import '@nebulr-group/bridge-svelte/styles';
|
|
36
|
+
let { children } = $props();
|
|
37
|
+
</script>
|
|
38
|
+
<BridgeBootstrap>
|
|
39
|
+
{@render children()}
|
|
40
|
+
</BridgeBootstrap>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
```svelte
|
|
44
|
+
<!-- src/routes/auth/[...bridge]/+page.svelte — every sign-in page -->
|
|
45
|
+
<script lang="ts">
|
|
46
|
+
import { BridgeAuthRoutes } from '@nebulr-group/bridge-svelte';
|
|
47
|
+
</script>
|
|
48
|
+
<BridgeAuthRoutes />
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A stage or local app also sets `VITE_BRIDGE_API_BASE_URL`. Add `loginRoute: '/auth/login'` for sign-in inside the app, and `src/routes/subscription/[...bridge]/+page.svelte` rendering `<BridgeBillingRoutes />` for subscriptions.
|
|
52
|
+
|
|
53
|
+
[How Bridge works](https://github.com/thebridgedev/bridge-svelte/blob/main/learning/mechanisms.md) explains plan limits, the three UI levels and the four customisation levels; the [learning docs](https://github.com/thebridgedev/bridge-svelte/tree/main/learning) cover everything else. Coding agents: `npx @nebulr-group/bridge-cli guide svelte`.
|
|
18
54
|
|
|
19
55
|
### Build
|
|
20
56
|
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
|
|
285
285
|
.bbn-cta:hover {
|
|
286
286
|
background: currentColor;
|
|
287
|
-
color:
|
|
287
|
+
color: var(--bridge-bg, #ffffff);
|
|
288
288
|
}
|
|
289
289
|
|
|
290
290
|
/* Chassis variants */
|
|
@@ -300,28 +300,29 @@
|
|
|
300
300
|
|
|
301
301
|
.bbn-chassis-card {
|
|
302
302
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
303
|
-
border: 1px solid
|
|
303
|
+
border: 1px solid var(--bridge-border, #d1d5db);
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
/* Severity tokens */
|
|
307
307
|
.bbn-severity-info {
|
|
308
|
-
background: #
|
|
309
|
-
color: #1e40af;
|
|
308
|
+
background: var(--bridge-alert-info-bg, #eff6ff);
|
|
309
|
+
color: var(--bridge-alert-info-fg, #1e40af);
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
.bbn-severity-warn {
|
|
313
|
-
background: #
|
|
314
|
-
color: #92400e;
|
|
313
|
+
background: var(--bridge-alert-warning-bg, #fffbeb);
|
|
314
|
+
color: var(--bridge-alert-warning-fg, #92400e);
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
.bbn-severity-critical {
|
|
318
|
-
background: #
|
|
319
|
-
color: #991b1b;
|
|
318
|
+
background: var(--bridge-alert-error-bg, #fef2f2);
|
|
319
|
+
color: var(--bridge-alert-error-fg, #991b1b);
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
+
/* Locked inverts the surface: foreground as background, and vice versa. */
|
|
322
323
|
.bbn-severity-locked {
|
|
323
|
-
background: #
|
|
324
|
-
color: #
|
|
324
|
+
background: var(--bridge-foreground, #111827);
|
|
325
|
+
color: var(--bridge-bg, #ffffff);
|
|
325
326
|
}
|
|
326
327
|
|
|
327
328
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -339,7 +340,7 @@
|
|
|
339
340
|
align-items: center;
|
|
340
341
|
justify-content: center;
|
|
341
342
|
padding: 1rem;
|
|
342
|
-
background: rgba(15, 23, 42, 0.72);
|
|
343
|
+
background: var(--bridge-paywall-bg, rgba(15, 23, 42, 0.72));
|
|
343
344
|
backdrop-filter: blur(2px);
|
|
344
345
|
}
|
|
345
346
|
|
|
@@ -351,8 +352,8 @@
|
|
|
351
352
|
width: 100%;
|
|
352
353
|
padding: 1.5rem;
|
|
353
354
|
border-radius: 0.75rem;
|
|
354
|
-
background: #
|
|
355
|
-
color: #
|
|
355
|
+
background: var(--bridge-foreground, #111827);
|
|
356
|
+
color: var(--bridge-bg, #ffffff);
|
|
356
357
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.35);
|
|
357
358
|
text-align: center;
|
|
358
359
|
}
|
|
@@ -381,7 +382,7 @@
|
|
|
381
382
|
}
|
|
382
383
|
|
|
383
384
|
.bbl-cta:hover {
|
|
384
|
-
background: #
|
|
385
|
-
color: #
|
|
385
|
+
background: var(--bridge-bg, #ffffff);
|
|
386
|
+
color: var(--bridge-foreground, #111827);
|
|
386
387
|
}
|
|
387
388
|
</style>
|
|
@@ -26,11 +26,7 @@
|
|
|
26
26
|
useBridge,
|
|
27
27
|
type QuotaSnapshot,
|
|
28
28
|
} from '@nebulr-group/bridge-auth-core';
|
|
29
|
-
<<<<<<< HEAD
|
|
30
|
-
import { getBridgeAuth } from '../../../core/bridge-instance.js';
|
|
31
|
-
=======
|
|
32
29
|
import { isBillingAdmin as canManageBilling, quotaMemberBody } from '../../billing-role.js';
|
|
33
|
-
>>>>>>> origin/feature/mcp-journey
|
|
34
30
|
import { billingRoutes } from '../../billing-routes.js';
|
|
35
31
|
|
|
36
32
|
type Chassis = 'rail';
|
|
@@ -287,7 +283,7 @@
|
|
|
287
283
|
margin-top: 0.25rem;
|
|
288
284
|
width: 100%;
|
|
289
285
|
height: 0.375rem;
|
|
290
|
-
background:
|
|
286
|
+
background: color-mix(in srgb, currentColor 15%, transparent);
|
|
291
287
|
border-radius: 999px;
|
|
292
288
|
overflow: hidden;
|
|
293
289
|
}
|
|
@@ -313,7 +309,7 @@
|
|
|
313
309
|
|
|
314
310
|
.bqb-cta:hover {
|
|
315
311
|
background: currentColor;
|
|
316
|
-
color:
|
|
312
|
+
color: var(--bridge-bg, #ffffff);
|
|
317
313
|
}
|
|
318
314
|
|
|
319
315
|
/* Chassis — rail only for US-11. */
|
|
@@ -324,13 +320,13 @@
|
|
|
324
320
|
|
|
325
321
|
/* Severity tokens — mirror BridgeBillingNotice for visual consistency. */
|
|
326
322
|
.bqb-severity-warn {
|
|
327
|
-
background: #
|
|
328
|
-
color: #92400e;
|
|
323
|
+
background: var(--bridge-alert-warning-bg, #fffbeb);
|
|
324
|
+
color: var(--bridge-alert-warning-fg, #92400e);
|
|
329
325
|
}
|
|
330
326
|
|
|
331
327
|
.bqb-severity-critical {
|
|
332
|
-
background: #
|
|
333
|
-
color: #991b1b;
|
|
328
|
+
background: var(--bridge-alert-error-bg, #fef2f2);
|
|
329
|
+
color: var(--bridge-alert-error-fg, #991b1b);
|
|
334
330
|
}
|
|
335
331
|
|
|
336
332
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -79,38 +79,38 @@
|
|
|
79
79
|
font-size: 0.75rem;
|
|
80
80
|
font-weight: 500;
|
|
81
81
|
text-transform: lowercase;
|
|
82
|
-
background: #
|
|
83
|
-
color: #
|
|
82
|
+
background: var(--bridge-muted-bg, var(--bridge-bg-muted, #f3f4f6));
|
|
83
|
+
color: var(--bridge-foreground, #111827);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
.bss-badge-active {
|
|
87
|
-
background: #
|
|
88
|
-
color: #
|
|
87
|
+
background: var(--bridge-alert-success-bg, #f0fdf4);
|
|
88
|
+
color: var(--bridge-alert-success-fg, #166534);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
.bss-badge-trial {
|
|
92
|
-
background: #
|
|
93
|
-
color: #1e40af;
|
|
92
|
+
background: var(--bridge-alert-info-bg, #eff6ff);
|
|
93
|
+
color: var(--bridge-alert-info-fg, #1e40af);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
.bss-badge-past_due,
|
|
97
97
|
.bss-badge-cancel_at_period_end {
|
|
98
|
-
background: #
|
|
99
|
-
color: #92400e;
|
|
98
|
+
background: var(--bridge-alert-warning-bg, #fffbeb);
|
|
99
|
+
color: var(--bridge-alert-warning-fg, #92400e);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.bss-badge-canceled {
|
|
103
|
-
background: #
|
|
104
|
-
color: #991b1b;
|
|
103
|
+
background: var(--bridge-alert-error-bg, #fef2f2);
|
|
104
|
+
color: var(--bridge-alert-error-fg, #991b1b);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
.bss-loading,
|
|
108
108
|
.bss-empty {
|
|
109
|
-
color: #6b7280;
|
|
109
|
+
color: var(--bridge-muted, #6b7280);
|
|
110
110
|
font-style: italic;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
.bss-error {
|
|
114
|
-
color: #
|
|
114
|
+
color: var(--bridge-alert-error-fg, #991b1b);
|
|
115
115
|
}
|
|
116
116
|
</style>
|
package/dist/styles.css
CHANGED
|
@@ -1,12 +1,54 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* bridge-svelte default styles
|
|
2
|
+
* bridge-svelte default styles
|
|
3
3
|
*
|
|
4
|
-
* Import this file to get the default appearance for all bridge-svelte components:
|
|
5
4
|
* import '@nebulr-group/bridge-svelte/styles';
|
|
6
5
|
*
|
|
7
|
-
* Without this file, components render as plain unstyled HTML — the headless
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Without this file, components render as plain unstyled HTML — the headless
|
|
7
|
+
* contract. With it, they get their structure plus a small default look driven
|
|
8
|
+
* entirely by the `--bridge-*` tokens below.
|
|
9
|
+
*
|
|
10
|
+
* ── THE TOKEN CONTRACT ────────────────────────────────────────────────────
|
|
11
|
+
*
|
|
12
|
+
* The `--bridge-*` custom properties are the supported way to restyle every
|
|
13
|
+
* Bridge page and component. Set them in your own stylesheet:
|
|
14
|
+
*
|
|
15
|
+
* :root { --bridge-primary: #0f766e; --bridge-border-radius: 10px; }
|
|
16
|
+
*
|
|
17
|
+
* The defaults are declared on `:where(:root)`, which has zero specificity, so
|
|
18
|
+
* YOUR `:root` wins whatever order the two stylesheets load in. Set a token on
|
|
19
|
+
* a wrapper instead of `:root` to theme one area.
|
|
20
|
+
*
|
|
21
|
+
* Colour
|
|
22
|
+
* --bridge-primary primary buttons, selected tab, active workspace
|
|
23
|
+
* --bridge-primary-hover primary button hover (derived from primary)
|
|
24
|
+
* --bridge-primary-fg text on primary surfaces
|
|
25
|
+
* --bridge-primary-light tint behind the active workspace (derived)
|
|
26
|
+
* --bridge-input-focus input focus ring (defaults to primary)
|
|
27
|
+
* --bridge-bg dialogs, menus, panels
|
|
28
|
+
* --bridge-foreground text on those surfaces, emphasised names
|
|
29
|
+
* --bridge-muted secondary text: hints, table headings
|
|
30
|
+
* --bridge-muted-bg subtle fills: tab tracks, hovers, code boxes
|
|
31
|
+
* --bridge-border input, table, card and secondary button borders
|
|
32
|
+
* --bridge-border-radius corners of inputs, buttons, alerts, cards, dialogs
|
|
33
|
+
* --bridge-overlay backdrop behind dialogs
|
|
34
|
+
* --bridge-alert-error-{bg,fg,border} errors, critical billing notices
|
|
35
|
+
* --bridge-alert-success-{bg,fg,border} confirmations, active plan badge
|
|
36
|
+
* --bridge-alert-info-{bg,fg,border} info notices, trial badge
|
|
37
|
+
* --bridge-alert-warning-{bg,fg,border} warnings, quota nearing its limit
|
|
38
|
+
*
|
|
39
|
+
* Layout
|
|
40
|
+
* --bridge-auth-page-padding default container of the sign-in pages
|
|
41
|
+
* --bridge-billing-page-width subscription pages, <BridgePaywallPage>
|
|
42
|
+
* --bridge-billing-page-padding subscription pages, <BridgePaywallPage>
|
|
43
|
+
* --bridge-paywall-bg backdrop of <BridgePaywall> / the lockscreen
|
|
44
|
+
* --bridge-paywall-panel-bg panel of <BridgePaywall>
|
|
45
|
+
*
|
|
46
|
+
* Deprecated aliases — still honoured when set on :root, removed in a later
|
|
47
|
+
* major: --bridge-primary-foreground → --bridge-primary-fg
|
|
48
|
+
* --bridge-bg-muted → --bridge-muted-bg
|
|
49
|
+
*
|
|
50
|
+
* Fonts and body text colour are not tokens: Bridge pages render inside your
|
|
51
|
+
* layout and inherit them.
|
|
10
52
|
*
|
|
11
53
|
* State selectors:
|
|
12
54
|
* [data-active="true"] — active tab
|
|
@@ -19,21 +61,37 @@
|
|
|
19
61
|
* [data-variant="danger"] — danger variant
|
|
20
62
|
*/
|
|
21
63
|
|
|
22
|
-
/* ───
|
|
64
|
+
/* ─── Token defaults — zero specificity, so the app's :root always wins ──── */
|
|
23
65
|
|
|
24
|
-
:root {
|
|
66
|
+
:where(:root) {
|
|
67
|
+
/* Derived tokens (primary-hover, primary-fg, primary-light, input-focus,
|
|
68
|
+
muted-bg, paywall-panel-bg) have no value here on purpose: each falls back
|
|
69
|
+
to its source where it is used, so setting --bridge-primary on a wrapper
|
|
70
|
+
re-derives them for that wrapper too. */
|
|
25
71
|
--bridge-primary: #4f46e5;
|
|
26
|
-
--bridge-
|
|
27
|
-
--bridge-
|
|
72
|
+
--bridge-bg: #ffffff;
|
|
73
|
+
--bridge-foreground: #111827;
|
|
74
|
+
--bridge-muted: #6b7280;
|
|
28
75
|
--bridge-border: #d1d5db;
|
|
29
76
|
--bridge-border-radius: 6px;
|
|
30
|
-
--bridge-
|
|
77
|
+
--bridge-overlay: rgba(15, 23, 42, 0.45);
|
|
31
78
|
--bridge-alert-error-bg: #fef2f2;
|
|
32
79
|
--bridge-alert-error-fg: #991b1b;
|
|
33
80
|
--bridge-alert-error-border: #fca5a5;
|
|
34
81
|
--bridge-alert-success-bg: #f0fdf4;
|
|
35
82
|
--bridge-alert-success-fg: #166534;
|
|
36
83
|
--bridge-alert-success-border: #86efac;
|
|
84
|
+
--bridge-alert-info-bg: #eff6ff;
|
|
85
|
+
--bridge-alert-info-fg: #1e40af;
|
|
86
|
+
--bridge-alert-info-border: #bfdbfe;
|
|
87
|
+
--bridge-alert-warning-bg: #fffbeb;
|
|
88
|
+
--bridge-alert-warning-fg: #92400e;
|
|
89
|
+
--bridge-alert-warning-border: #fcd34d;
|
|
90
|
+
|
|
91
|
+
--bridge-auth-page-padding: 3rem 1rem;
|
|
92
|
+
--bridge-billing-page-width: 60rem;
|
|
93
|
+
--bridge-billing-page-padding: 3rem 1rem;
|
|
94
|
+
--bridge-paywall-bg: rgba(15, 23, 42, 0.72);
|
|
37
95
|
}
|
|
38
96
|
|
|
39
97
|
/* ─── Input visual defaults ──────────────────────────────────────────────── */
|
|
@@ -47,8 +105,8 @@
|
|
|
47
105
|
:where(input[type="text"]:focus, input[type="email"]:focus,
|
|
48
106
|
input[type="password"]:focus, input[type="tel"]:focus,
|
|
49
107
|
.bridge-input:focus) {
|
|
50
|
-
border-color: var(--bridge-input-focus);
|
|
51
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--bridge-input-focus) 20%, transparent);
|
|
108
|
+
border-color: var(--bridge-input-focus, var(--bridge-primary));
|
|
109
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--bridge-input-focus, var(--bridge-primary)) 20%, transparent);
|
|
52
110
|
}
|
|
53
111
|
|
|
54
112
|
/* ─── Buttons ────────────────────────────────────────────────────────────── */
|
|
@@ -92,13 +150,13 @@
|
|
|
92
150
|
|
|
93
151
|
:where(.bridge-btn-primary) {
|
|
94
152
|
background-color: var(--bridge-primary);
|
|
95
|
-
color: var(--bridge-primary-fg);
|
|
153
|
+
color: var(--bridge-primary-fg, var(--bridge-primary-foreground, #ffffff));
|
|
96
154
|
border: 1px solid var(--bridge-primary);
|
|
97
155
|
border-radius: var(--bridge-border-radius);
|
|
98
156
|
}
|
|
99
157
|
:where(.bridge-btn-primary:hover:not(:disabled)) {
|
|
100
|
-
background-color: var(--bridge-primary-hover);
|
|
101
|
-
border-color: var(--bridge-primary-hover);
|
|
158
|
+
background-color: var(--bridge-primary-hover, color-mix(in srgb, var(--bridge-primary) 85%, #000000));
|
|
159
|
+
border-color: var(--bridge-primary-hover, color-mix(in srgb, var(--bridge-primary) 85%, #000000));
|
|
102
160
|
}
|
|
103
161
|
:where(.bridge-btn-secondary, .bridge-btn-outline) {
|
|
104
162
|
background-color: transparent;
|
|
@@ -275,12 +333,12 @@
|
|
|
275
333
|
border: none;
|
|
276
334
|
cursor: pointer;
|
|
277
335
|
padding: 0.25rem;
|
|
278
|
-
color: var(--bridge-muted
|
|
336
|
+
color: var(--bridge-muted);
|
|
279
337
|
line-height: 1;
|
|
280
338
|
}
|
|
281
339
|
|
|
282
340
|
.bridge-password-toggle:hover {
|
|
283
|
-
color: var(--bridge-foreground
|
|
341
|
+
color: var(--bridge-foreground);
|
|
284
342
|
}
|
|
285
343
|
|
|
286
344
|
/* ─── Auth form helpers ───────────────────────────────────────────────────── */
|
|
@@ -318,13 +376,13 @@
|
|
|
318
376
|
/* Roughly the height of the credentials form it replaces, so the card does
|
|
319
377
|
not collapse and then re-expand under the cursor. */
|
|
320
378
|
min-height: 8rem;
|
|
321
|
-
color: var(--bridge-muted
|
|
379
|
+
color: var(--bridge-muted);
|
|
322
380
|
font-size: 0.875rem;
|
|
323
381
|
}
|
|
324
382
|
|
|
325
383
|
.bridge-mfa-help {
|
|
326
384
|
font-size: 0.8125rem;
|
|
327
|
-
color: var(--bridge-muted
|
|
385
|
+
color: var(--bridge-muted);
|
|
328
386
|
margin: 0.75rem 0 0.25rem;
|
|
329
387
|
text-align: center;
|
|
330
388
|
}
|
|
@@ -358,7 +416,7 @@
|
|
|
358
416
|
gap: 0.75rem;
|
|
359
417
|
margin-bottom: 1rem;
|
|
360
418
|
padding: 0.75rem;
|
|
361
|
-
background: var(--bridge-bg-muted, #
|
|
419
|
+
background: var(--bridge-muted-bg, var(--bridge-bg-muted, #f3f4f6));
|
|
362
420
|
border-radius: 0.5rem;
|
|
363
421
|
}
|
|
364
422
|
|
|
@@ -446,6 +504,19 @@
|
|
|
446
504
|
font-family: inherit;
|
|
447
505
|
}
|
|
448
506
|
|
|
507
|
+
:where(.bridge-team-tabs) {
|
|
508
|
+
border-bottom: 1px solid var(--bridge-border);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
:where(.bridge-team-tab) {
|
|
512
|
+
color: var(--bridge-muted);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
:where(.bridge-team-tab[data-active="true"]) {
|
|
516
|
+
color: var(--bridge-primary);
|
|
517
|
+
box-shadow: inset 0 -2px 0 var(--bridge-primary);
|
|
518
|
+
}
|
|
519
|
+
|
|
449
520
|
/* ─── TeamUserList ───────────────────────────────────────────────────────── */
|
|
450
521
|
|
|
451
522
|
.bridge-team-users-header {
|
|
@@ -633,6 +704,22 @@
|
|
|
633
704
|
min-width: 160px;
|
|
634
705
|
}
|
|
635
706
|
|
|
707
|
+
:where(.bridge-team-actions-menu) {
|
|
708
|
+
background: var(--bridge-bg);
|
|
709
|
+
color: var(--bridge-foreground);
|
|
710
|
+
border: 1px solid var(--bridge-border);
|
|
711
|
+
border-radius: var(--bridge-border-radius);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
:where(.bridge-team-table th) {
|
|
715
|
+
color: var(--bridge-muted);
|
|
716
|
+
border-bottom: 1px solid var(--bridge-border);
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
:where(.bridge-team-table td) {
|
|
720
|
+
border-bottom: 1px solid var(--bridge-border);
|
|
721
|
+
}
|
|
722
|
+
|
|
636
723
|
.bridge-team-actions-item {
|
|
637
724
|
display: block;
|
|
638
725
|
width: 100%;
|
|
@@ -647,15 +734,24 @@
|
|
|
647
734
|
|
|
648
735
|
/* ─── Team Dialogs ───────────────────────────────────────────────────────── */
|
|
649
736
|
|
|
650
|
-
|
|
737
|
+
/* The team dialogs carry [data-bridge-team-dialog]; the upgrade dialog the class. */
|
|
738
|
+
.bridge-team-dialog,
|
|
739
|
+
[data-bridge-team-dialog] {
|
|
651
740
|
border: none;
|
|
652
741
|
padding: 0;
|
|
653
742
|
max-width: 400px;
|
|
654
743
|
width: 90%;
|
|
655
744
|
}
|
|
656
745
|
|
|
657
|
-
.bridge-team-dialog
|
|
658
|
-
background:
|
|
746
|
+
:where(.bridge-team-dialog, [data-bridge-team-dialog]) {
|
|
747
|
+
background: var(--bridge-bg);
|
|
748
|
+
color: var(--bridge-foreground);
|
|
749
|
+
border-radius: var(--bridge-border-radius);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
.bridge-team-dialog::backdrop,
|
|
753
|
+
[data-bridge-team-dialog]::backdrop {
|
|
754
|
+
background: var(--bridge-overlay);
|
|
659
755
|
}
|
|
660
756
|
|
|
661
757
|
.bridge-team-dialog-content {
|
|
@@ -764,25 +860,25 @@
|
|
|
764
860
|
letter-spacing: 0.05em;
|
|
765
861
|
font-weight: 500;
|
|
766
862
|
text-align: left;
|
|
767
|
-
border-bottom: 1px solid var(--bridge-border
|
|
768
|
-
color: var(--bridge-muted
|
|
863
|
+
border-bottom: 1px solid var(--bridge-border);
|
|
864
|
+
color: var(--bridge-muted);
|
|
769
865
|
}
|
|
770
866
|
|
|
771
867
|
[data-bridge-api-tokens] .bridge-api-td,
|
|
772
868
|
[data-bridge-api-tokens] .bridge-api-td-name,
|
|
773
869
|
[data-bridge-api-tokens] .bridge-api-td-muted {
|
|
774
870
|
padding: 0.75rem 1rem;
|
|
775
|
-
border-bottom: 1px solid var(--bridge-border
|
|
871
|
+
border-bottom: 1px solid var(--bridge-border);
|
|
776
872
|
}
|
|
777
873
|
|
|
778
874
|
[data-bridge-api-tokens] .bridge-api-td-muted {
|
|
779
|
-
color: var(--bridge-muted
|
|
875
|
+
color: var(--bridge-muted);
|
|
780
876
|
}
|
|
781
877
|
|
|
782
878
|
[data-bridge-api-tokens] .bridge-api-td-actions {
|
|
783
879
|
padding: 0.75rem 1rem;
|
|
784
880
|
text-align: right;
|
|
785
|
-
border-bottom: 1px solid var(--bridge-border
|
|
881
|
+
border-bottom: 1px solid var(--bridge-border);
|
|
786
882
|
}
|
|
787
883
|
|
|
788
884
|
[data-bridge-api-tokens] .bridge-api-privileges {
|
|
@@ -792,7 +888,7 @@
|
|
|
792
888
|
}
|
|
793
889
|
|
|
794
890
|
[data-bridge-api-tokens] .bridge-api-inline-form {
|
|
795
|
-
border: 1px solid var(--bridge-border
|
|
891
|
+
border: 1px solid var(--bridge-border);
|
|
796
892
|
border-radius: 0.5rem;
|
|
797
893
|
padding: 1rem 1.25rem;
|
|
798
894
|
}
|
|
@@ -957,9 +1053,9 @@
|
|
|
957
1053
|
gap: 0.25rem;
|
|
958
1054
|
margin-bottom: 1.25rem;
|
|
959
1055
|
padding: 0.25rem;
|
|
960
|
-
border: 1px solid var(--bridge-border
|
|
961
|
-
border-radius: var(--bridge-border-radius
|
|
962
|
-
background: var(--bridge-muted-bg, var(--bridge-bg-muted, #
|
|
1056
|
+
border: 1px solid var(--bridge-border);
|
|
1057
|
+
border-radius: var(--bridge-border-radius);
|
|
1058
|
+
background: var(--bridge-muted-bg, var(--bridge-bg-muted, #f3f4f6));
|
|
963
1059
|
}
|
|
964
1060
|
|
|
965
1061
|
.bridge-plan-interval-tab {
|
|
@@ -970,19 +1066,19 @@
|
|
|
970
1066
|
font: inherit;
|
|
971
1067
|
font-size: 0.8125rem;
|
|
972
1068
|
padding: 0.375rem 0.875rem;
|
|
973
|
-
border-radius: calc(var(--bridge-border-radius
|
|
974
|
-
color: var(--bridge-muted
|
|
1069
|
+
border-radius: calc(var(--bridge-border-radius) - 0.2rem);
|
|
1070
|
+
color: var(--bridge-muted);
|
|
975
1071
|
}
|
|
976
1072
|
|
|
977
1073
|
.bridge-plan-interval-tab[data-active="true"] {
|
|
978
|
-
background: var(--bridge-primary
|
|
979
|
-
color: var(--bridge-primary-fg, var(--bridge-primary-foreground, #
|
|
1074
|
+
background: var(--bridge-primary);
|
|
1075
|
+
color: var(--bridge-primary-fg, var(--bridge-primary-foreground, #ffffff));
|
|
980
1076
|
}
|
|
981
1077
|
|
|
982
1078
|
.bridge-plan-unavailable {
|
|
983
1079
|
margin: 0;
|
|
984
1080
|
font-size: 0.8125rem;
|
|
985
|
-
color: var(--bridge-muted
|
|
1081
|
+
color: var(--bridge-muted);
|
|
986
1082
|
}
|
|
987
1083
|
|
|
988
1084
|
/* Plan-change confirmation dialog + success notice (TBP-33) */
|
|
@@ -993,7 +1089,7 @@
|
|
|
993
1089
|
.bridge-plan-confirm-backdrop {
|
|
994
1090
|
position: fixed;
|
|
995
1091
|
inset: 0;
|
|
996
|
-
background:
|
|
1092
|
+
background: var(--bridge-overlay);
|
|
997
1093
|
display: grid;
|
|
998
1094
|
place-items: center;
|
|
999
1095
|
z-index: 1000;
|
|
@@ -1001,9 +1097,9 @@
|
|
|
1001
1097
|
}
|
|
1002
1098
|
|
|
1003
1099
|
.bridge-plan-confirm {
|
|
1004
|
-
background: var(--bridge-bg
|
|
1005
|
-
border: 1px solid var(--bridge-border
|
|
1006
|
-
border-radius: var(--bridge-border-radius
|
|
1100
|
+
background: var(--bridge-bg);
|
|
1101
|
+
border: 1px solid var(--bridge-border);
|
|
1102
|
+
border-radius: var(--bridge-border-radius);
|
|
1007
1103
|
box-shadow: 0 24px 60px -12px rgba(0, 0, 0, 0.35);
|
|
1008
1104
|
max-width: 26rem;
|
|
1009
1105
|
width: 100%;
|
|
@@ -1028,7 +1124,7 @@
|
|
|
1028
1124
|
.bridge-plan-confirm-note {
|
|
1029
1125
|
margin: 0;
|
|
1030
1126
|
font-size: 0.8125rem;
|
|
1031
|
-
color: var(--bridge-muted
|
|
1127
|
+
color: var(--bridge-muted);
|
|
1032
1128
|
line-height: 1.5;
|
|
1033
1129
|
}
|
|
1034
1130
|
|
|
@@ -1129,12 +1225,12 @@
|
|
|
1129
1225
|
}
|
|
1130
1226
|
|
|
1131
1227
|
[data-bridge-workspace-item]:hover:not(:disabled) {
|
|
1132
|
-
background: var(--bridge-muted-bg, #f3f4f6);
|
|
1228
|
+
background: var(--bridge-muted-bg, var(--bridge-bg-muted, #f3f4f6));
|
|
1133
1229
|
}
|
|
1134
1230
|
|
|
1135
1231
|
[data-bridge-workspace-item][data-active="true"] {
|
|
1136
|
-
background: var(--bridge-primary-light, #
|
|
1137
|
-
border-color: var(--bridge-primary
|
|
1232
|
+
background: var(--bridge-primary-light, color-mix(in srgb, var(--bridge-primary) 10%, #ffffff));
|
|
1233
|
+
border-color: var(--bridge-primary);
|
|
1138
1234
|
}
|
|
1139
1235
|
|
|
1140
1236
|
[data-bridge-workspace-item][data-loading="true"] {
|
|
@@ -1153,8 +1249,8 @@
|
|
|
1153
1249
|
width: 2rem;
|
|
1154
1250
|
height: 2rem;
|
|
1155
1251
|
border-radius: 0.375rem;
|
|
1156
|
-
background: var(--bridge-primary
|
|
1157
|
-
color: var(--bridge-primary-foreground, #ffffff);
|
|
1252
|
+
background: var(--bridge-primary);
|
|
1253
|
+
color: var(--bridge-primary-fg, var(--bridge-primary-foreground, #ffffff));
|
|
1158
1254
|
font-size: 0.875rem;
|
|
1159
1255
|
font-weight: 600;
|
|
1160
1256
|
flex-shrink: 0;
|
|
@@ -1178,7 +1274,7 @@
|
|
|
1178
1274
|
[data-bridge-workspace-name] {
|
|
1179
1275
|
font-size: 0.875rem;
|
|
1180
1276
|
font-weight: 500;
|
|
1181
|
-
color: var(--bridge-foreground
|
|
1277
|
+
color: var(--bridge-foreground);
|
|
1182
1278
|
white-space: nowrap;
|
|
1183
1279
|
overflow: hidden;
|
|
1184
1280
|
text-overflow: ellipsis;
|
|
@@ -1186,7 +1282,7 @@
|
|
|
1186
1282
|
|
|
1187
1283
|
[data-bridge-workspace-user] {
|
|
1188
1284
|
font-size: 0.75rem;
|
|
1189
|
-
color: var(--bridge-muted
|
|
1285
|
+
color: var(--bridge-muted);
|
|
1190
1286
|
white-space: nowrap;
|
|
1191
1287
|
overflow: hidden;
|
|
1192
1288
|
text-overflow: ellipsis;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nebulr-group/bridge-svelte",
|
|
3
|
-
"version": "0.9.0-beta.
|
|
3
|
+
"version": "0.9.0-beta.4",
|
|
4
4
|
"description": "Bridge Svelte library, This library helps you to add bridge authentication and feature flags, and payments to your svelte application.",
|
|
5
5
|
"author": "Iman Pouya",
|
|
6
6
|
"license": "MIT",
|