nuxt-convex-module 0.0.1 → 0.9.1
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/LICENSE +1 -1
- package/README.md +40 -200
- package/dist/chunks/index.mjs +1 -1
- package/dist/devtools-client/200.html +1 -1
- package/dist/devtools-client/404.html +1 -1
- package/dist/devtools-client/_nuxt/{CgIEvOQU.js → 71bSMC-_.js} +1 -1
- package/dist/devtools-client/_nuxt/{C2KGYsR4.js → BhmjAr2Q.js} +1 -1
- package/dist/devtools-client/_nuxt/{D2ksFYuU.js → C6YdTgGl.js} +2 -2
- package/dist/devtools-client/_nuxt/{CtxksWnu.js → _Lf3mfPR.js} +1 -1
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -1
- package/dist/devtools-client/_nuxt/builds/meta/f9d540d6-1746-4214-8384-31e7759da89f.json +1 -0
- package/dist/devtools-client/_nuxt/error-404.CLlwiMp-.css +1 -0
- package/dist/devtools-client/_nuxt/error-500.Bxr6fpDU.css +1 -0
- package/dist/devtools-client/_nuxt/queries.DNBUjWk2.css +1 -0
- package/dist/devtools-client/auth/index.html +1 -1
- package/dist/devtools-client/index.html +1 -1
- package/dist/devtools-client/logs/index.html +1 -1
- package/dist/devtools-client/queries/index.html +1 -1
- package/dist/module.d.mts +29 -105
- package/dist/module.json +2 -2
- package/dist/module.mjs +329 -221
- package/dist/runtime/auth0/vue/index.d.ts +3 -3
- package/dist/runtime/better-auth/nuxt/middleware.d.ts +0 -6
- package/dist/runtime/better-auth/nuxt/middleware.js +4 -5
- package/dist/runtime/better-auth/nuxt/proxy.d.ts +18 -2
- package/dist/runtime/better-auth/nuxt/proxy.js +7 -7
- package/dist/runtime/better-auth/nuxt/server.d.ts +6 -6
- package/dist/runtime/better-auth/vue/auth-boundary.d.ts +1 -0
- package/dist/runtime/better-auth/vue/cross-domain.js +7 -2
- package/dist/runtime/better-auth/vue/hydration.d.ts +1 -1
- package/dist/runtime/better-auth/vue/index.d.ts +1 -1
- package/dist/runtime/better-auth/vue/index.js +1 -1
- package/dist/runtime/better-auth/vue/plugin.client.d.ts +1 -5
- package/dist/runtime/better-auth/vue/plugin.client.js +6 -10
- package/dist/runtime/better-auth/vue/plugin.server.d.ts +5 -16
- package/dist/runtime/better-auth/vue/plugin.server.js +3 -6
- package/dist/runtime/better-auth/vue/redirect.d.ts +2 -14
- package/dist/runtime/better-auth/vue/{use-auth.d.ts → use-better-auth.d.ts} +31 -11
- package/dist/runtime/better-auth/vue/{use-auth.js → use-better-auth.js} +2 -2
- package/dist/runtime/clerk/vue/index.d.ts +4 -4
- package/dist/runtime/nuxt/app.d.ts +48 -0
- package/dist/runtime/nuxt/app.js +8 -0
- package/dist/runtime/nuxt/composables/use-async-paginated-query.d.ts +88 -0
- package/dist/runtime/nuxt/composables/use-async-paginated-query.js +90 -0
- package/dist/runtime/nuxt/composables/use-async-query.d.ts +7 -16
- package/dist/runtime/nuxt/composables/use-async-query.js +14 -9
- package/dist/runtime/nuxt/config.d.ts +11 -0
- package/dist/runtime/nuxt/config.js +1 -0
- package/dist/runtime/nuxt/index.d.ts +2 -5
- package/dist/runtime/polar/vue/components.d.ts +8 -1
- package/dist/runtime/polar/vue/components.js +2 -2
- package/dist/runtime/vue/auth/index.d.ts +4 -4
- package/dist/runtime/vue/client.d.ts +5 -57
- package/dist/runtime/vue/client.js +2 -0
- package/dist/runtime/vue/components/convex-image.d.ts +50 -0
- package/dist/runtime/vue/components/convex-image.js +21 -0
- package/dist/runtime/vue/composables/use-connection-state.d.ts +1 -0
- package/dist/runtime/vue/composables/use-paginated-query.d.ts +5 -1
- package/dist/runtime/vue/composables/use-paginated-query.js +2 -2
- package/dist/runtime/vue/composables/use-query.d.ts +2 -0
- package/dist/runtime/vue/composables/use-subscription.d.ts +1 -15
- package/dist/runtime/vue/composables/use-upload-queue.d.ts +2 -3
- package/dist/runtime/vue/hydration.d.ts +3 -24
- package/dist/runtime/vue/index.d.ts +2 -2
- package/dist/runtime/vue/index.js +1 -0
- package/dist/runtime/vue/plugin.js +1 -1
- package/dist/runtime/vue/provide.d.ts +5 -5
- package/dist/types.d.mts +2 -2
- package/package.json +52 -16
- package/dist/devtools-client/_nuxt/builds/meta/23303226-2230-4d14-87ce-87b0f562de6c.json +0 -1
- package/dist/devtools-client/_nuxt/error-404.BpRUKU69.css +0 -1
- package/dist/devtools-client/_nuxt/error-500.DuDYJ5TI.css +0 -1
- package/dist/devtools-client/_nuxt/queries.BmISPDaV.css +0 -1
|
@@ -14,10 +14,10 @@ export type Preloaded<Query extends FunctionReference<'query'>> = {
|
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* Load a reactive query within a Vue component using a `Preloaded` payload
|
|
17
|
-
* from the server returned by {@link preloadQuery}.
|
|
17
|
+
* from the server returned by {@link server!preloadQuery | preloadQuery}.
|
|
18
18
|
*
|
|
19
|
-
* This Vue composable
|
|
20
|
-
*
|
|
19
|
+
* This Vue composable returns a computed that updates whenever the query
|
|
20
|
+
* result changes.
|
|
21
21
|
*
|
|
22
22
|
* Throws an error if no Convex client has been provided (see {@link useConvex}).
|
|
23
23
|
*
|
|
@@ -43,24 +43,3 @@ export type Preloaded<Query extends FunctionReference<'query'>> = {
|
|
|
43
43
|
* @public
|
|
44
44
|
*/
|
|
45
45
|
export declare function usePreloadedQuery<Query extends FunctionReference<'query'>>(preloadedQuery: MaybeRefOrGetter<Preloaded<Query>>): ComputedRef<Query['_returnType']>;
|
|
46
|
-
/**
|
|
47
|
-
* Derive the query reference and reactive args/fallback from a (possibly
|
|
48
|
-
* reactive) `Preloaded` payload. All three are reactive: swapping in a payload
|
|
49
|
-
* for a different query re-derives the reference, matching upstream's
|
|
50
|
-
* `usePreloadedQuery`, which recomputes `makeFunctionReference(_name)` on
|
|
51
|
-
* every render.
|
|
52
|
-
*
|
|
53
|
-
* @internal
|
|
54
|
-
*/
|
|
55
|
-
export declare function usePreloadedPayload<Query extends FunctionReference<'query'>>(preloadedQuery: MaybeRefOrGetter<Preloaded<Query>>): {
|
|
56
|
-
query: ComputedRef<Query>;
|
|
57
|
-
args: ComputedRef<Query['_args']>;
|
|
58
|
-
preloadedResult: ComputedRef<Query['_returnType']>;
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* A `useQuery` variant whose query *reference* is reactive alongside its args.
|
|
62
|
-
* Pass `'skip'` args to pause the subscription.
|
|
63
|
-
*
|
|
64
|
-
* @internal
|
|
65
|
-
*/
|
|
66
|
-
export declare function useReactiveQuery<Query extends FunctionReference<'query'>>(query: ComputedRef<Query>, args: ComputedRef<Query['_args'] | 'skip'>): ComputedRef<Query['_returnType'] | undefined>;
|
|
@@ -69,7 +69,6 @@ export type { AuthTokenFetcher } from 'convex/browser';
|
|
|
69
69
|
export * from './auth/helpers.js';
|
|
70
70
|
export * from './auth/index.js';
|
|
71
71
|
export { usePreloadedQuery, type Preloaded } from './hydration.js';
|
|
72
|
-
export { useSubscription } from './composables/use-subscription.js';
|
|
73
72
|
export { type VueMutation } from './composables/use-mutation.js';
|
|
74
73
|
export { type VueAction } from './composables/use-action.js';
|
|
75
74
|
export { type Watch, type WatchQueryOptions, type MutationOptions, type ConvexVueClientOptions, } from './client.js';
|
|
@@ -89,6 +88,7 @@ export type { ConnectionState, OptimisticUpdate, QueryJournal, } from 'convex/br
|
|
|
89
88
|
export type { FunctionReference, FunctionArgs, FunctionReturnType, OptionalRestArgs, ArgsAndOptions, } from 'convex/server';
|
|
90
89
|
export type { Value } from 'convex/values';
|
|
91
90
|
export { useUpload, useConvexUpload, uploadFile, type VueUpload, type UseUploadOptions, type UploadFileOptions, type GenerateUploadUrl, type StorageId, } from './composables/use-upload.js';
|
|
92
|
-
export { useUploadQueue, useConvexUploadQueue, type VueUploadQueue, type UseUploadQueueOptions, type UploadQueueItem, type UploadItemStatus, } from './composables/use-upload-queue.js';
|
|
91
|
+
export { useUploadQueue, useConvexUploadQueue, type VueUploadQueue, type UseUploadQueueOptions, type UploadQueueItem, type UploadItemStatus, type EnqueueInput, } from './composables/use-upload-queue.js';
|
|
93
92
|
export { useStorageUrl, useConvexStorageUrl, type GetStorageUrl, } from './composables/use-storage-url.js';
|
|
93
|
+
export { ConvexImage } from './components/convex-image.js';
|
|
94
94
|
export { provideConvexApi, useConvexApi, useConvexNamespace, ConvexApiKey, type ConvexApi, } from './provide.js';
|
|
@@ -6,7 +6,7 @@ export default defineNuxtPlugin({
|
|
|
6
6
|
const url = useRuntimeConfig().public.convex.url;
|
|
7
7
|
if (!url) {
|
|
8
8
|
if (import.meta.client) {
|
|
9
|
-
console.warn("[nuxt-convex-module] No Convex URL configured
|
|
9
|
+
console.warn("[nuxt-convex-module] No Convex deployment URL configured \u2014 client not created. Set NUXT_PUBLIC_CONVEX_URL or `convex.url` in nuxt.config.");
|
|
10
10
|
}
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
@@ -9,8 +9,8 @@ export type ConvexApi = Record<string, Record<string, unknown>>;
|
|
|
9
9
|
export declare const ConvexApiKey: InjectionKey<ConvexApi>;
|
|
10
10
|
/**
|
|
11
11
|
* Make the generated Convex `api` available to every `nuxt-convex-module` composable
|
|
12
|
-
* and component, so
|
|
13
|
-
* with zero arguments.
|
|
12
|
+
* and component, so `<CheckoutLink>`, `<CustomerPortalLink>`, `useConvexNamespace()`,
|
|
13
|
+
* … work with zero arguments.
|
|
14
14
|
*
|
|
15
15
|
* The packaged Nuxt plugin calls this automatically with `#convex/api`. Call it
|
|
16
16
|
* yourself (e.g. with a custom `api`) only to override that default — pass the
|
|
@@ -30,9 +30,9 @@ export declare function provideConvexApi(api: ConvexApi, app?: App): void;
|
|
|
30
30
|
*/
|
|
31
31
|
export declare function useConvexApi(): ConvexApi | undefined;
|
|
32
32
|
/**
|
|
33
|
-
* The named function group from the generated `api` (e.g. `'
|
|
34
|
-
* `
|
|
35
|
-
*
|
|
33
|
+
* The named function group from the generated `api` (e.g. `'polar'`), or
|
|
34
|
+
* `undefined` when that group isn't scaffolded — letting the feature degrade
|
|
35
|
+
* to a graceful no-op rather than throwing.
|
|
36
36
|
*
|
|
37
37
|
* @typeParam T - The expected shape of the namespace's function references.
|
|
38
38
|
*/
|
package/dist/types.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { default } from './module.mjs'
|
|
2
2
|
|
|
3
|
-
export { type BetterAuthModuleOptions, type
|
|
3
|
+
export { type BetterAuthModuleOptions, type ModuleOptions } from './module.mjs'
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "nuxt-convex-module",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "0.9.1",
|
|
5
|
+
"description": "Connects a Nuxt app to a Convex backend: live queries, mutations, actions, pagination, file storage and SSR, auto-imported and typed against your deployment. The same Vue client runs without Nuxt; Better Auth, Clerk, Auth0 and Polar are opt-in.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/qruto/nuxt-convex-module.git"
|
|
9
9
|
},
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"author": "Slava Razum <razum@qruto.to>",
|
|
12
|
-
"homepage": "https://
|
|
12
|
+
"homepage": "https://nuxt-convex-module.dev",
|
|
13
13
|
"bugs": {
|
|
14
14
|
"url": "https://github.com/qruto/nuxt-convex-module/issues"
|
|
15
15
|
},
|
|
@@ -19,13 +19,22 @@
|
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"nuxt",
|
|
22
|
+
"convex",
|
|
22
23
|
"nuxt-module",
|
|
23
24
|
"vue",
|
|
24
|
-
"
|
|
25
|
+
"realtime",
|
|
26
|
+
"live-queries",
|
|
27
|
+
"backend",
|
|
28
|
+
"database",
|
|
29
|
+
"ssr",
|
|
30
|
+
"file-storage",
|
|
31
|
+
"auth",
|
|
32
|
+
"authentication",
|
|
25
33
|
"better-auth",
|
|
34
|
+
"clerk",
|
|
35
|
+
"auth0",
|
|
26
36
|
"polar",
|
|
27
|
-
"
|
|
28
|
-
"ssr"
|
|
37
|
+
"billing"
|
|
29
38
|
],
|
|
30
39
|
"type": "module",
|
|
31
40
|
"exports": {
|
|
@@ -46,10 +55,18 @@
|
|
|
46
55
|
"types": "./dist/runtime/nuxt/index.d.ts",
|
|
47
56
|
"import": "./dist/runtime/nuxt/index.js"
|
|
48
57
|
},
|
|
58
|
+
"./app": {
|
|
59
|
+
"types": "./dist/runtime/nuxt/app.d.ts",
|
|
60
|
+
"import": "./dist/runtime/nuxt/app.js"
|
|
61
|
+
},
|
|
49
62
|
"./better-auth/client": {
|
|
50
63
|
"types": "./dist/runtime/better-auth/vue/index.d.ts",
|
|
51
64
|
"import": "./dist/runtime/better-auth/vue/index.js"
|
|
52
65
|
},
|
|
66
|
+
"./better-auth/vue": {
|
|
67
|
+
"types": "./dist/runtime/better-auth/vue/index.d.ts",
|
|
68
|
+
"import": "./dist/runtime/better-auth/vue/index.js"
|
|
69
|
+
},
|
|
53
70
|
"./better-auth/server": {
|
|
54
71
|
"types": "./dist/runtime/better-auth/nuxt/server.d.ts",
|
|
55
72
|
"import": "./dist/runtime/better-auth/nuxt/server.js"
|
|
@@ -94,9 +111,15 @@
|
|
|
94
111
|
"server": [
|
|
95
112
|
"./dist/runtime/nuxt/index.d.ts"
|
|
96
113
|
],
|
|
114
|
+
"app": [
|
|
115
|
+
"./dist/runtime/nuxt/app.d.ts"
|
|
116
|
+
],
|
|
97
117
|
"better-auth/client": [
|
|
98
118
|
"./dist/runtime/better-auth/vue/index.d.ts"
|
|
99
119
|
],
|
|
120
|
+
"better-auth/vue": [
|
|
121
|
+
"./dist/runtime/better-auth/vue/index.d.ts"
|
|
122
|
+
],
|
|
100
123
|
"better-auth/server": [
|
|
101
124
|
"./dist/runtime/better-auth/nuxt/server.d.ts"
|
|
102
125
|
],
|
|
@@ -124,8 +147,7 @@
|
|
|
124
147
|
"dist"
|
|
125
148
|
],
|
|
126
149
|
"engines": {
|
|
127
|
-
"node": ">=24.11.0"
|
|
128
|
-
"pnpm": ">=11.6.0"
|
|
150
|
+
"node": ">=24.11.0"
|
|
129
151
|
},
|
|
130
152
|
"dependencies": {
|
|
131
153
|
"@nuxt/devtools-kit": "^3.4.2",
|
|
@@ -136,8 +158,8 @@
|
|
|
136
158
|
"peerDependencies": {
|
|
137
159
|
"@auth0/auth0-vue": ">=2.0.0",
|
|
138
160
|
"@clerk/vue": ">=2.0.0",
|
|
139
|
-
"@convex-dev/better-auth": ">=0.12.0",
|
|
140
|
-
"@convex-dev/polar": ">=0.9.0",
|
|
161
|
+
"@convex-dev/better-auth": ">=0.12.0 <0.13.0",
|
|
162
|
+
"@convex-dev/polar": ">=0.9.0 <0.10.0",
|
|
141
163
|
"@polar-sh/checkout": ">=0.4.0",
|
|
142
164
|
"better-auth": "~1.6.11",
|
|
143
165
|
"convex": "^1.40.0",
|
|
@@ -170,7 +192,7 @@
|
|
|
170
192
|
"devDependencies": {
|
|
171
193
|
"@arethetypeswrong/cli": "^0.18.5",
|
|
172
194
|
"@auth0/auth0-vue": "^2.9.0",
|
|
173
|
-
"@clerk/vue": "2.5.
|
|
195
|
+
"@clerk/vue": "2.5.1",
|
|
174
196
|
"@commitlint/cli": "^21.2.2",
|
|
175
197
|
"@commitlint/config-conventional": "^21.2.2",
|
|
176
198
|
"@convex-dev/better-auth": "^0.12.5",
|
|
@@ -182,21 +204,22 @@
|
|
|
182
204
|
"@nuxt/schema": "^4.5.2",
|
|
183
205
|
"@nuxt/test-utils": "^4.3.2",
|
|
184
206
|
"@polar-sh/checkout": "^0.4.1",
|
|
185
|
-
"@types/node": "^26.5.
|
|
207
|
+
"@types/node": "^26.5.1",
|
|
186
208
|
"@types/ws": "^8.18.1",
|
|
187
209
|
"@unhead/vue": "^3.4.0",
|
|
188
210
|
"@vitest/coverage-v8": "^5.0.0",
|
|
189
211
|
"@vue/test-utils": "^2.5.0",
|
|
190
|
-
"better-auth": "~1.6.
|
|
212
|
+
"better-auth": "~1.6.31",
|
|
191
213
|
"changelogen": "^0.6.2",
|
|
192
214
|
"convex": "^1.45.0",
|
|
193
215
|
"eslint": "^10.10.0",
|
|
194
|
-
"fallow": "3.
|
|
195
|
-
"happy-dom": "^20.14.
|
|
216
|
+
"fallow": "3.25.0",
|
|
217
|
+
"happy-dom": "^20.14.5",
|
|
196
218
|
"installed-check": "^11.0.0",
|
|
197
219
|
"nuxt": "^4.5.2",
|
|
198
220
|
"nuxt-security": "^2.6.0",
|
|
199
221
|
"pkg-pr-new": "^0.0.88",
|
|
222
|
+
"playwright-core": "^1.63.0",
|
|
200
223
|
"portless": "0.15.6",
|
|
201
224
|
"publint": "^0.3.24",
|
|
202
225
|
"taze": "^21.1.0",
|
|
@@ -211,6 +234,17 @@
|
|
|
211
234
|
"publishConfig": {
|
|
212
235
|
"access": "public"
|
|
213
236
|
},
|
|
237
|
+
"changelog": {
|
|
238
|
+
"scopeMap": {
|
|
239
|
+
"better-auth": "Better Auth",
|
|
240
|
+
"ci": "CI",
|
|
241
|
+
"deps": "Dependencies",
|
|
242
|
+
"deps-dev": "Dev dependencies",
|
|
243
|
+
"devtools": "DevTools",
|
|
244
|
+
"dx": "DX",
|
|
245
|
+
"github": "GitHub"
|
|
246
|
+
}
|
|
247
|
+
},
|
|
214
248
|
"scripts": {
|
|
215
249
|
"build": "nuxt-module-build build && pnpm run build:devtools-client",
|
|
216
250
|
"build:devtools-client": "nuxt generate devtools-client-app",
|
|
@@ -230,8 +264,10 @@
|
|
|
230
264
|
"test:types:lib": "pnpm run dev:prepare:lib && pnpm run typecheck",
|
|
231
265
|
"test:unit": "vitest --project unit --run",
|
|
232
266
|
"test:nuxt": "vitest --project nuxt --run",
|
|
267
|
+
"test:module": "vitest --project module --run",
|
|
268
|
+
"test:docs": "vitest --project docs --run",
|
|
233
269
|
"test:e2e": "vitest --run --project e2e",
|
|
234
|
-
"test:quality": "fallow",
|
|
270
|
+
"test:quality": "fallow --fail-on-issues",
|
|
235
271
|
"test:security": "fallow security --fail-on-issues",
|
|
236
272
|
"docs:api": "typedoc && node scripts/typedoc-postprocess.mjs",
|
|
237
273
|
"docs:api:check": "pnpm run docs:api && git diff --exit-code -- website/content/4.api-reference",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"23303226-2230-4d14-87ce-87b0f562de6c","timestamp":1789163683324,"prerendered":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.grid[data-v-bc32d885]{display:grid}.mb-2[data-v-bc32d885]{margin-bottom:.5rem}.mb-4[data-v-bc32d885]{margin-bottom:1rem}.max-w-520px[data-v-bc32d885]{max-width:520px}.min-h-screen[data-v-bc32d885]{min-height:100vh}.w-full[data-v-bc32d885]{width:100%}.flex[data-v-bc32d885]{display:flex}.place-content-center[data-v-bc32d885]{place-content:center}.items-center[data-v-bc32d885]{align-items:center}.justify-center[data-v-bc32d885]{justify-content:center}.overflow-hidden[data-v-bc32d885]{overflow:hidden}.bg-white[data-v-bc32d885]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-bc32d885]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-bc32d885]{text-align:center}.text-\[80px\][data-v-bc32d885]{font-size:80px}.text-2xl[data-v-bc32d885]{font-size:1.5rem;line-height:2rem}.text-sm[data-v-bc32d885]{font-size:.875rem;line-height:1.25rem}.text-\[\#020420\][data-v-bc32d885]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-bc32d885]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.hover\:text-\[\#00DC82\][data-v-bc32d885]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}.font-medium[data-v-bc32d885]{font-weight:500}.font-semibold[data-v-bc32d885]{font-weight:600}.leading-none[data-v-bc32d885]{line-height:1}.tracking-wide[data-v-bc32d885]{letter-spacing:.025em}.font-sans[data-v-bc32d885]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-bc32d885]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline[data-v-bc32d885]{text-decoration-line:underline}.underline-offset-3[data-v-bc32d885]{text-underline-offset:3px}.antialiased[data-v-bc32d885]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-bc32d885]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-bc32d885]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (width>=640px){.sm\:text-\[110px\][data-v-bc32d885]{font-size:110px}.sm\:text-3xl[data-v-bc32d885]{font-size:1.875rem;line-height:2.25rem}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.grid[data-v-512e66c2]{display:grid}.mb-2[data-v-512e66c2]{margin-bottom:.5rem}.mb-4[data-v-512e66c2]{margin-bottom:1rem}.max-w-520px[data-v-512e66c2]{max-width:520px}.min-h-screen[data-v-512e66c2]{min-height:100vh}.place-content-center[data-v-512e66c2]{place-content:center}.overflow-hidden[data-v-512e66c2]{overflow:hidden}.bg-white[data-v-512e66c2]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-512e66c2]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-512e66c2]{text-align:center}.text-\[80px\][data-v-512e66c2]{font-size:80px}.text-2xl[data-v-512e66c2]{font-size:1.5rem;line-height:2rem}.text-\[\#020420\][data-v-512e66c2]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-512e66c2]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold[data-v-512e66c2]{font-weight:600}.leading-none[data-v-512e66c2]{line-height:1}.tracking-wide[data-v-512e66c2]{letter-spacing:.025em}.font-sans[data-v-512e66c2]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-512e66c2]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased[data-v-512e66c2]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-512e66c2]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-512e66c2]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (width>=640px){.sm\:text-\[110px\][data-v-512e66c2]{font-size:110px}.sm\:text-3xl[data-v-512e66c2]{font-size:1.875rem;line-height:2.25rem}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.n-code-block-lines code{counter-increment:step calc(var(--start,1) - 1);counter-reset:step}.n-code-block-lines code .line:before{content:counter(step);counter-increment:step;text-align:right;color:#a3a3a380;width:2.5rem;margin-right:.5rem;padding-right:.5rem;display:inline-block}details[data-v-c64ba2dc],summary[data-v-c64ba2dc]{border-style:none}summary[data-v-c64ba2dc]{list-style:none}details[open] summary[data-v-c64ba2dc]{border-style:none}details summary[data-v-c64ba2dc]::-webkit-details-marker{display:none}details[open] .chevron[data-v-c64ba2dc]{opacity:.75;transform:rotate(180deg)}
|