chore(deps): update tailwind to v4
This commit is contained in:
parent
ecc7e28a1c
commit
78c2e7677c
11 changed files with 469 additions and 691 deletions
|
@ -15,14 +15,13 @@
|
||||||
"@biomejs/biome": "1.9.4",
|
"@biomejs/biome": "1.9.4",
|
||||||
"@commitlint/cli": "^19.6.1",
|
"@commitlint/cli": "^19.6.1",
|
||||||
"@commitlint/config-conventional": "^19.6.0",
|
"@commitlint/config-conventional": "^19.6.0",
|
||||||
|
"@tailwindcss/vite": "^4.0.0",
|
||||||
"@types/node": "^22.10.9",
|
"@types/node": "^22.10.9",
|
||||||
"autoprefixer": "^10.4.20",
|
|
||||||
"better-sqlite3": "^11.8.1",
|
"better-sqlite3": "^11.8.1",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"kysely-codegen": "^0.17.0",
|
"kysely-codegen": "^0.17.0",
|
||||||
"lint-staged": "^15.4.2",
|
"lint-staged": "^15.4.2",
|
||||||
"postcss": "^8.5.1",
|
"tailwindcss": "^4.0.0",
|
||||||
"tailwindcss": "^3.4.17",
|
|
||||||
"typescript": "^5.7.3",
|
"typescript": "^5.7.3",
|
||||||
"vite": "^6.0.11",
|
"vite": "^6.0.11",
|
||||||
"vite-plugin-solid": "^2.11.0",
|
"vite-plugin-solid": "^2.11.0",
|
||||||
|
|
849
pnpm-lock.yaml
generated
849
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
|
@ -1,6 +0,0 @@
|
||||||
export default {
|
|
||||||
plugins: {
|
|
||||||
tailwindcss: {},
|
|
||||||
autoprefixer: {},
|
|
||||||
},
|
|
||||||
};
|
|
160
src/app.css
160
src/app.css
|
@ -1,6 +1,9 @@
|
||||||
@tailwind base;
|
@import "tailwindcss";
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
@plugin 'tailwindcss-animate';
|
||||||
|
@plugin '@kobalte/tailwindcss';
|
||||||
|
|
||||||
|
@custom-variant dark (.dark &,[data-kb-theme="dark"] &);
|
||||||
|
|
||||||
@layer base {
|
@layer base {
|
||||||
:root {
|
:root {
|
||||||
|
@ -95,6 +98,145 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@theme {
|
||||||
|
--color-border: hsl(var(--border));
|
||||||
|
--color-input: hsl(var(--input));
|
||||||
|
--color-ring: hsl(var(--ring));
|
||||||
|
--color-background: hsl(var(--background));
|
||||||
|
--color-foreground: hsl(var(--foreground));
|
||||||
|
|
||||||
|
--color-primary: hsl(var(--primary));
|
||||||
|
--color-primary-foreground: hsl(var(--primary-foreground));
|
||||||
|
|
||||||
|
--color-secondary: hsl(var(--secondary));
|
||||||
|
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
||||||
|
|
||||||
|
--color-destructive: hsl(var(--destructive));
|
||||||
|
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
||||||
|
|
||||||
|
--color-info: hsl(var(--info));
|
||||||
|
--color-info-foreground: hsl(var(--info-foreground));
|
||||||
|
|
||||||
|
--color-success: hsl(var(--success));
|
||||||
|
--color-success-foreground: hsl(var(--success-foreground));
|
||||||
|
|
||||||
|
--color-warning: hsl(var(--warning));
|
||||||
|
--color-warning-foreground: hsl(var(--warning-foreground));
|
||||||
|
|
||||||
|
--color-error: hsl(var(--error));
|
||||||
|
--color-error-foreground: hsl(var(--error-foreground));
|
||||||
|
|
||||||
|
--color-muted: hsl(var(--muted));
|
||||||
|
--color-muted-foreground: hsl(var(--muted-foreground));
|
||||||
|
|
||||||
|
--color-accent: hsl(var(--accent));
|
||||||
|
--color-accent-foreground: hsl(var(--accent-foreground));
|
||||||
|
|
||||||
|
--color-popover: hsl(var(--popover));
|
||||||
|
--color-popover-foreground: hsl(var(--popover-foreground));
|
||||||
|
|
||||||
|
--color-card: hsl(var(--card));
|
||||||
|
--color-card-foreground: hsl(var(--card-foreground));
|
||||||
|
|
||||||
|
--radius-xl: calc(var(--radius) + 4px);
|
||||||
|
--radius-lg: var(--radius);
|
||||||
|
--radius-md: calc(var(--radius) - 2px);
|
||||||
|
--radius-sm: calc(var(--radius) - 4px);
|
||||||
|
|
||||||
|
--animate-accordion-down: accordion-down 0.2s ease-out;
|
||||||
|
--animate-accordion-up: accordion-up 0.2s ease-out;
|
||||||
|
--animate-content-show: content-show 0.2s ease-out;
|
||||||
|
--animate-content-hide: content-hide 0.2s ease-out;
|
||||||
|
--animate-caret-blink: caret-blink 1.25s ease-out infinite;
|
||||||
|
|
||||||
|
@keyframes accordion-down {
|
||||||
|
from {
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
height: var(--kb-accordion-content-height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes accordion-up {
|
||||||
|
from {
|
||||||
|
height: var(--kb-accordion-content-height);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes content-show {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.96);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes content-hide {
|
||||||
|
from {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.96);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes caret-blink {
|
||||||
|
0%,
|
||||||
|
70%,
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
20%,
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@utility container {
|
||||||
|
margin-inline: auto;
|
||||||
|
padding-inline: 2rem;
|
||||||
|
@media (width >= --theme(--breakpoint-sm)) {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
@media (width >= 1400px) {
|
||||||
|
max-width: 1400px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
The default border color has changed to `currentColor` in Tailwind CSS v4,
|
||||||
|
so we've added these compatibility styles to make sure everything still
|
||||||
|
looks the same as it did with Tailwind CSS v3.
|
||||||
|
|
||||||
|
If we ever want to remove these styles, we need to add an explicit border
|
||||||
|
color utility to any element that depends on these defaults.
|
||||||
|
*/
|
||||||
|
@layer base {
|
||||||
|
*,
|
||||||
|
::after,
|
||||||
|
::before,
|
||||||
|
::backdrop,
|
||||||
|
::file-selector-button {
|
||||||
|
border-color: var(--color-gray-200, currentColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@utility step {
|
||||||
|
counter-increment: step;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
@apply absolute w-9 h-9 bg-muted rounded-full font-mono font-medium text-center text-base inline-flex items-center justify-center -indent-px border-4 border-background;
|
||||||
|
@apply ml-[-50px] mt-[-4px];
|
||||||
|
content: counter(step);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@layer base {
|
@layer base {
|
||||||
* {
|
* {
|
||||||
@apply border-border;
|
@apply border-border;
|
||||||
|
@ -105,18 +247,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@layer utilities {
|
|
||||||
.step {
|
|
||||||
counter-increment: step;
|
|
||||||
}
|
|
||||||
|
|
||||||
.step:before {
|
|
||||||
@apply absolute w-9 h-9 bg-muted rounded-full font-mono font-medium text-center text-base inline-flex items-center justify-center -indent-px border-4 border-background;
|
|
||||||
@apply ml-[-50px] mt-[-4px];
|
|
||||||
content: counter(step);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
@media (max-width: 640px) {
|
||||||
.container {
|
.container {
|
||||||
@apply px-4;
|
@apply px-4;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import { cva } from "class-variance-authority";
|
||||||
import { cn } from "~/lib/utils";
|
import { cn } from "~/lib/utils";
|
||||||
|
|
||||||
const badgeVariants = cva(
|
const badgeVariants = cva(
|
||||||
"inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
"inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold text-xs transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
||||||
{
|
{
|
||||||
variants: {
|
variants: {
|
||||||
variant: {
|
variant: {
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { cva } from "class-variance-authority";
|
||||||
import { cn } from "~/lib/utils";
|
import { cn } from "~/lib/utils";
|
||||||
|
|
||||||
const buttonVariants = cva(
|
const buttonVariants = cva(
|
||||||
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
||||||
{
|
{
|
||||||
variants: {
|
variants: {
|
||||||
variant: {
|
variant: {
|
||||||
|
|
|
@ -15,7 +15,7 @@ const Checkbox = <T extends ValidComponent = "div">(props: PolymorphicProps<T, C
|
||||||
return (
|
return (
|
||||||
<CheckboxPrimitive.Root class={cn("items-top group relative flex space-x-2", local.class)} {...others}>
|
<CheckboxPrimitive.Root class={cn("items-top group relative flex space-x-2", local.class)} {...others}>
|
||||||
<CheckboxPrimitive.Input class="peer" />
|
<CheckboxPrimitive.Input class="peer" />
|
||||||
<CheckboxPrimitive.Control class="size-4 shrink-0 rounded-sm border border-primary ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 data-[checked]:border-none data-[indeterminate]:border-none data-[checked]:bg-primary data-[indeterminate]:bg-primary data-[checked]:text-primary-foreground data-[indeterminate]:text-primary-foreground">
|
<CheckboxPrimitive.Control class="size-4 shrink-0 rounded-sm border border-primary ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 peer-focus-visible:outline-hidden peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 data-checked:border-none data-indeterminate:border-none data-checked:bg-primary data-indeterminate:bg-primary data-checked:text-primary-foreground data-indeterminate:text-primary-foreground">
|
||||||
<CheckboxPrimitive.Indicator>
|
<CheckboxPrimitive.Indicator>
|
||||||
<Switch>
|
<Switch>
|
||||||
<Match when={!others.indeterminate}>
|
<Match when={!others.indeterminate}>
|
||||||
|
|
|
@ -50,7 +50,7 @@ const TextFieldInput = <T extends ValidComponent = "input">(rawProps: Polymorphi
|
||||||
<TextFieldPrimitive.Input
|
<TextFieldPrimitive.Input
|
||||||
type={local.type}
|
type={local.type}
|
||||||
class={cn(
|
class={cn(
|
||||||
"flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:font-medium file:text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[invalid]:border-error-foreground data-[invalid]:text-error-foreground",
|
"flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:font-medium file:text-sm placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-invalid:border-error-foreground data-invalid:text-error-foreground",
|
||||||
local.class,
|
local.class,
|
||||||
)}
|
)}
|
||||||
{...others}
|
{...others}
|
||||||
|
@ -69,7 +69,7 @@ const TextFieldTextArea = <T extends ValidComponent = "textarea">(
|
||||||
return (
|
return (
|
||||||
<TextFieldPrimitive.TextArea
|
<TextFieldPrimitive.TextArea
|
||||||
class={cn(
|
class={cn(
|
||||||
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
||||||
local.class,
|
local.class,
|
||||||
)}
|
)}
|
||||||
{...others}
|
{...others}
|
||||||
|
@ -82,7 +82,7 @@ const labelVariants = cva(
|
||||||
{
|
{
|
||||||
variants: {
|
variants: {
|
||||||
variant: {
|
variant: {
|
||||||
label: "data-[invalid]:text-destructive",
|
label: "data-invalid:text-destructive",
|
||||||
description: "font-normal text-muted-foreground",
|
description: "font-normal text-muted-foreground",
|
||||||
error: "text-destructive text-xs",
|
error: "text-destructive text-xs",
|
||||||
},
|
},
|
||||||
|
|
|
@ -18,12 +18,20 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (import.meta.env.DEV && !("umami" in window)) {
|
||||||
|
// @ts-ignore
|
||||||
|
window.umami = {
|
||||||
|
// biome-ignore lint/suspicious/noEmptyBlockStatements: <explanation>
|
||||||
|
track: () => {},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const NO_DATA_NEEDED_PAGES = ["/", "/privacy"];
|
const NO_DATA_NEEDED_PAGES = ["/", "/privacy"];
|
||||||
|
|
||||||
if (root) {
|
if (root) {
|
||||||
render(
|
render(
|
||||||
() => (
|
() => (
|
||||||
<div class="mx-auto max-w-screen-2xl">
|
<div class="mx-auto max-w-(--breakpoint-2xl)">
|
||||||
<MetaProvider>
|
<MetaProvider>
|
||||||
<Router
|
<Router
|
||||||
root={(props) => {
|
root={(props) => {
|
||||||
|
@ -81,10 +89,10 @@ if (root) {
|
||||||
</CalloutContent>
|
</CalloutContent>
|
||||||
</Callout>
|
</Callout>
|
||||||
</Show>
|
</Show>
|
||||||
{props.children}
|
<main>{props.children}</main>
|
||||||
<div class="flex flex-row justify-end bg-muted p-8">
|
<footer class="mt-4 flex flex-row justify-end bg-muted p-8">
|
||||||
<A href="/privacy">Privacy policy</A>
|
<A href="/privacy">Privacy policy</A>
|
||||||
</div>
|
</footer>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -1,104 +0,0 @@
|
||||||
/** @type {import('tailwindcss').Config} */
|
|
||||||
export default {
|
|
||||||
darkMode: ["variant", [".dark &", '[data-kb-theme="dark"] &']],
|
|
||||||
content: ["./src/**/*.{ts,tsx}"],
|
|
||||||
prefix: "",
|
|
||||||
theme: {
|
|
||||||
container: {
|
|
||||||
center: true,
|
|
||||||
padding: "2rem",
|
|
||||||
screens: {
|
|
||||||
"2xl": "1400px",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
border: "hsl(var(--border))",
|
|
||||||
input: "hsl(var(--input))",
|
|
||||||
ring: "hsl(var(--ring))",
|
|
||||||
background: "hsl(var(--background))",
|
|
||||||
foreground: "hsl(var(--foreground))",
|
|
||||||
primary: {
|
|
||||||
DEFAULT: "hsl(var(--primary))",
|
|
||||||
foreground: "hsl(var(--primary-foreground))",
|
|
||||||
},
|
|
||||||
secondary: {
|
|
||||||
DEFAULT: "hsl(var(--secondary))",
|
|
||||||
foreground: "hsl(var(--secondary-foreground))",
|
|
||||||
},
|
|
||||||
destructive: {
|
|
||||||
DEFAULT: "hsl(var(--destructive))",
|
|
||||||
foreground: "hsl(var(--destructive-foreground))",
|
|
||||||
},
|
|
||||||
info: {
|
|
||||||
DEFAULT: "hsl(var(--info))",
|
|
||||||
foreground: "hsl(var(--info-foreground))",
|
|
||||||
},
|
|
||||||
success: {
|
|
||||||
DEFAULT: "hsl(var(--success))",
|
|
||||||
foreground: "hsl(var(--success-foreground))",
|
|
||||||
},
|
|
||||||
warning: {
|
|
||||||
DEFAULT: "hsl(var(--warning))",
|
|
||||||
foreground: "hsl(var(--warning-foreground))",
|
|
||||||
},
|
|
||||||
error: {
|
|
||||||
DEFAULT: "hsl(var(--error))",
|
|
||||||
foreground: "hsl(var(--error-foreground))",
|
|
||||||
},
|
|
||||||
muted: {
|
|
||||||
DEFAULT: "hsl(var(--muted))",
|
|
||||||
foreground: "hsl(var(--muted-foreground))",
|
|
||||||
},
|
|
||||||
accent: {
|
|
||||||
DEFAULT: "hsl(var(--accent))",
|
|
||||||
foreground: "hsl(var(--accent-foreground))",
|
|
||||||
},
|
|
||||||
popover: {
|
|
||||||
DEFAULT: "hsl(var(--popover))",
|
|
||||||
foreground: "hsl(var(--popover-foreground))",
|
|
||||||
},
|
|
||||||
card: {
|
|
||||||
DEFAULT: "hsl(var(--card))",
|
|
||||||
foreground: "hsl(var(--card-foreground))",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
xl: "calc(var(--radius) + 4px)",
|
|
||||||
lg: "var(--radius)",
|
|
||||||
md: "calc(var(--radius) - 2px)",
|
|
||||||
sm: "calc(var(--radius) - 4px)",
|
|
||||||
},
|
|
||||||
keyframes: {
|
|
||||||
"accordion-down": {
|
|
||||||
from: { height: 0 },
|
|
||||||
to: { height: "var(--kb-accordion-content-height)" },
|
|
||||||
},
|
|
||||||
"accordion-up": {
|
|
||||||
from: { height: "var(--kb-accordion-content-height)" },
|
|
||||||
to: { height: 0 },
|
|
||||||
},
|
|
||||||
"content-show": {
|
|
||||||
from: { opacity: 0, transform: "scale(0.96)" },
|
|
||||||
to: { opacity: 1, transform: "scale(1)" },
|
|
||||||
},
|
|
||||||
"content-hide": {
|
|
||||||
from: { opacity: 1, transform: "scale(1)" },
|
|
||||||
to: { opacity: 0, transform: "scale(0.96)" },
|
|
||||||
},
|
|
||||||
"caret-blink": {
|
|
||||||
"0%,70%,100%": { opacity: "1" },
|
|
||||||
"20%,50%": { opacity: "0" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
animation: {
|
|
||||||
"accordion-down": "accordion-down 0.2s ease-out",
|
|
||||||
"accordion-up": "accordion-up 0.2s ease-out",
|
|
||||||
"content-show": "content-show 0.2s ease-out",
|
|
||||||
"content-hide": "content-hide 0.2s ease-out",
|
|
||||||
"caret-blink": "caret-blink 1.25s ease-out infinite",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
plugins: [require("tailwindcss-animate"), require("@kobalte/tailwindcss")],
|
|
||||||
};
|
|
|
@ -2,9 +2,10 @@ import path from "path";
|
||||||
import { defineConfig } from "vite";
|
import { defineConfig } from "vite";
|
||||||
import solidPlugin from "vite-plugin-solid";
|
import solidPlugin from "vite-plugin-solid";
|
||||||
import wasm from "vite-plugin-wasm";
|
import wasm from "vite-plugin-wasm";
|
||||||
|
import tailwind from "@tailwindcss/vite";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [solidPlugin(), wasm()],
|
plugins: [solidPlugin(), wasm(), tailwind()],
|
||||||
server: {
|
server: {
|
||||||
headers: {
|
headers: {
|
||||||
"Cross-Origin-Opener-Policy": "same-origin",
|
"Cross-Origin-Opener-Policy": "same-origin",
|
||||||
|
@ -13,10 +14,7 @@ export default defineConfig({
|
||||||
port: 3000,
|
port: 3000,
|
||||||
},
|
},
|
||||||
optimizeDeps: {
|
optimizeDeps: {
|
||||||
exclude: [
|
exclude: ["@duskflower/signal-decrypt-backup-wasm", "@sqlite.org/sqlite-wasm"],
|
||||||
"@duskflower/signal-decrypt-backup-wasm",
|
|
||||||
"@sqlite.org/sqlite-wasm",
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
target: "esnext",
|
target: "esnext",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue