feature/project-setup #1

Merged
ilia merged 6 commits from feature/project-setup into main 2025-12-30 09:18:09 +00:00
21 changed files with 898 additions and 15136 deletions
Showing only changes of commit 6d70c1ed0e - Show all commits

9
.gitignore vendored
View File

@@ -19,6 +19,15 @@ Thumbs.db
!.env.example
!.env.test
# Yarn
.yarn
.pnp.*
# Zed
.zed
# Vite
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
/docs

9878
.pnp.cjs generated

File diff suppressed because one or more lines are too long

2126
.pnp.loader.mjs generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

1
.yarnrc.yml Normal file
View File

@@ -0,0 +1 @@
nodeLinker: node-modules

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,6 @@
{
"incremental": true,
"includes": [
"**/*.{ts,tsx,js,jsx,svelte,json,md}"
],
"includes": ["**/*.{ts,tsx,js,jsx,svelte,json,md}"],
"excludes": [
"**/node_modules",
"**/dist",
@@ -13,15 +11,16 @@
"plugins": [
"https://plugins.dprint.dev/typescript-0.93.0.wasm",
"https://plugins.dprint.dev/json-0.19.3.wasm",
"https://plugins.dprint.dev/markdown-0.17.8.wasm"
"https://plugins.dprint.dev/markdown-0.17.8.wasm",
"https://plugins.dprint.dev/g-plane/markup_fmt-v0.25.3.wasm"
],
"typescript": {
"lineWidth": 100,
"indentWidth": 2,
"indentWidth": 4,
"useTabs": false,
"semiColons": "prefer",
"singleQuote": true,
"trailingCommas": "es5",
"quoteStyle": "preferSingle",
"trailingCommas": "onlyMultiLine",
"arrowFunction.useParentheses": "preferNone",
"importDeclaration.sortNamedImports": "caseInsensitive"
},
@@ -31,5 +30,13 @@
},
"markdown": {
"lineWidth": 100
},
"markup": {
"printWidth": 100,
"indentWidth": 4,
"useTabs": false,
"quotes": "double",
"scriptIndent": true,
"styleIndent": true
}
}

View File

@@ -1,6 +1,6 @@
import { expect, test } from '@playwright/test';
test('home page has expected h1', async ({ page }) => {
await page.goto('/');
await expect(page.locator('h1')).toBeVisible();
await page.goto('/');
await expect(page.locator('h1')).toBeVisible();
});

69
lefthook.yml Normal file
View File

@@ -0,0 +1,69 @@
# EXAMPLE USAGE:
#
# Refer for explanation to following link:
# https://lefthook.dev/configuration/
#
# pre-push:
# jobs:
# - name: packages audit
# tags:
# - frontend
# - security
# run: yarn audit
#
# - name: gems audit
# tags:
# - backend
# - security
# run: bundle audit
#
# pre-commit:
# parallel: true
# jobs:
# - run: yarn eslint {staged_files}
# glob: "*.{js,ts,jsx,tsx}"
#
# - name: rubocop
# glob: "*.rb"
# exclude:
# - config/application.rb
# - config/routes.rb
# run: bundle exec rubocop --force-exclusion {all_files}
#
# - name: govet
# files: git ls-files -m
# glob: "*.go"
# run: go vet {files}
#
# - script: "hello.js"
# runner: node
#
# - script: "hello.go"
# runner: go run
pre-commit:
parallel: true
commands:
format:
glob: "*.{ts,js,svelte,json,md}"
run: dprint fmt {staged_files}
stage_fixed: true
lint:
glob: "*.{ts,js,svelte}"
run: oxlint {staged_files}
pre-push:
parallel: true
commands:
type-check:
run: tsc --noEmit
svelte-check:
run: svelte-check --threshold warning
format-check:
run: dprint check
lint-full:
run: oxlint .

View File

@@ -1,31 +1,39 @@
{
"name": "glyphdiff",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "oxlint",
"format": "dprint fmt",
"format:check": "dprint check",
"test:e2e": "playwright test",
"test": "npm run test:e2e"
},
"devDependencies": {
"@playwright/test": "^1.57.0",
"@sveltejs/adapter-auto": "^7.0.0",
"@sveltejs/kit": "^2.49.1",
"@sveltejs/vite-plugin-svelte": "^6.2.1",
"dprint": "^0.50.2",
"oxlint": "^1.35.0",
"svelte": "^5.45.6",
"svelte-check": "^4.3.4",
"typescript": "^5.9.3",
"vite": "^7.2.6"
}
"name": "glyphdiff",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "oxlint",
"format": "dprint fmt",
"format:check": "dprint check",
"test:e2e": "playwright test",
"test": "npm run test:e2e"
},
"devDependencies": {
"@lucide/svelte": "^0.562.0",
"@playwright/test": "^1.57.0",
"@sveltejs/adapter-auto": "^7.0.0",
"@sveltejs/kit": "^2.49.1",
"@sveltejs/vite-plugin-svelte": "^6.2.1",
"@tailwindcss/vite": "^4.1.18",
"clsx": "^2.1.1",
"dprint": "^0.50.2",
"lefthook": "^2.0.13",
"oxlint": "^1.35.0",
"svelte": "^5.45.6",
"svelte-check": "^4.3.4",
"tailwind-merge": "^3.4.0",
"tailwind-variants": "^3.2.2",
"tailwindcss": "^4.1.18",
"tw-animate-css": "^1.4.0",
"typescript": "^5.9.3",
"vite": "^7.2.6"
}
}

View File

@@ -1,6 +1,6 @@
import { defineConfig } from '@playwright/test';
export default defineConfig({
webServer: { command: 'npm run build && npm run preview', port: 4173 },
testDir: 'e2e'
webServer: { command: 'npm run build && npm run preview', port: 4173 },
testDir: 'e2e',
});

121
src/app.css Normal file
View File

@@ -0,0 +1,121 @@
@import "tailwindcss";
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
:root {
--radius: 0.625rem;
--background: oklch(1 0 0);
--foreground: oklch(0.141 0.005 285.823);
--card: oklch(1 0 0);
--card-foreground: oklch(0.141 0.005 285.823);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.141 0.005 285.823);
--primary: oklch(0.21 0.006 285.885);
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.967 0.001 286.375);
--secondary-foreground: oklch(0.21 0.006 285.885);
--muted: oklch(0.967 0.001 286.375);
--muted-foreground: oklch(0.552 0.016 285.938);
--accent: oklch(0.967 0.001 286.375);
--accent-foreground: oklch(0.21 0.006 285.885);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.92 0.004 286.32);
--input: oklch(0.92 0.004 286.32);
--ring: oklch(0.705 0.015 286.067);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.141 0.005 285.823);
--sidebar-primary: oklch(0.21 0.006 285.885);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.967 0.001 286.375);
--sidebar-accent-foreground: oklch(0.21 0.006 285.885);
--sidebar-border: oklch(0.92 0.004 286.32);
--sidebar-ring: oklch(0.705 0.015 286.067);
}
.dark {
--background: oklch(0.141 0.005 285.823);
--foreground: oklch(0.985 0 0);
--card: oklch(0.21 0.006 285.885);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.21 0.006 285.885);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.92 0.004 286.32);
--primary-foreground: oklch(0.21 0.006 285.885);
--secondary: oklch(0.274 0.006 286.033);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.274 0.006 286.033);
--muted-foreground: oklch(0.705 0.015 286.067);
--accent: oklch(0.274 0.006 286.033);
--accent-foreground: oklch(0.985 0 0);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.552 0.016 285.938);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.21 0.006 285.885);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.274 0.006 286.033);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.552 0.016 285.938);
}
@theme inline {
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
}

14
src/app.d.ts vendored
View File

@@ -1,13 +1,13 @@
// See https://svelte.dev/docs/kit/types#app.d.ts
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface PageState {}
// interface Platform {}
}
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface PageState {}
// interface Platform {}
}
}
export {};

View File

@@ -1,11 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>

13
src/lib/utils.ts Normal file
View File

@@ -0,0 +1,13 @@
import { type ClassValue, clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type WithoutChild<T> = T extends { child?: any } ? Omit<T, 'child'> : T;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type WithoutChildren<T> = T extends { children?: any } ? Omit<T, 'children'> : T;
export type WithoutChildrenOrChild<T> = WithoutChildren<WithoutChild<T>>;
export type WithElementRef<T, U extends HTMLElement = HTMLElement> = T & { ref?: U | null };

View File

@@ -1,11 +1,11 @@
<script lang="ts">
import favicon from '$lib/assets/favicon.svg';
let { children } = $props();
import favicon from '$lib/assets/favicon.svg';
import '../app.css';
let { children } = $props();
</script>
<svelte:head>
<link rel="icon" href={favicon} />
<link rel="icon" href={favicon} />
</svelte:head>
{@render children()}

View File

@@ -1,2 +1,9 @@
<script>
import Button from '$lib/components/ui/button/button.svelte';
</script>
<h1>Welcome to SvelteKit</h1>
<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
<p>
Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation
</p>
<Button>Click me!</Button>

View File

@@ -3,20 +3,20 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://svelte.dev/docs/kit/integrations
// for more information about preprocessors
preprocess: vitePreprocess(),
// Consult https://svelte.dev/docs/kit/integrations
// for more information about preprocessors
preprocess: vitePreprocess(),
compilerOptions: {
runes: true
},
compilerOptions: {
runes: true,
},
kit: {
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
adapter: adapter()
}
kit: {
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
adapter: adapter(),
},
};
export default config;

View File

@@ -1,20 +1,20 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"rewriteRelativeImportExtensions": true,
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true,
"moduleResolution": "bundler"
}
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
//
// To make changes to top-level options such as include and exclude, we recommend extending
// the generated config; see https://svelte.dev/docs/kit/configuration#typescript
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"rewriteRelativeImportExtensions": true,
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true,
"moduleResolution": "bundler"
}
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
//
// To make changes to top-level options such as include and exclude, we recommend extending
// the generated config; see https://svelte.dev/docs/kit/configuration#typescript
}

View File

@@ -1,6 +1,7 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [sveltekit()]
plugins: [sveltekit(), tailwindcss()],
});

608
yarn.lock
View File

@@ -68,6 +68,34 @@ __metadata:
languageName: node
linkType: hard
"@emnapi/core@npm:^1.7.1":
version: 1.7.1
resolution: "@emnapi/core@npm:1.7.1"
dependencies:
"@emnapi/wasi-threads": "npm:1.1.0"
tslib: "npm:^2.4.0"
checksum: 10c0/f3740be23440b439333e3ae3832163f60c96c4e35337f3220ceba88f36ee89a57a871d27c94eb7a9ff98a09911ed9a2089e477ab549f4d30029f8b907f84a351
languageName: node
linkType: hard
"@emnapi/runtime@npm:^1.7.1":
version: 1.7.1
resolution: "@emnapi/runtime@npm:1.7.1"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/26b851cd3e93877d8732a985a2ebf5152325bbacc6204ef5336a47359dedcc23faeb08cdfcb8bb389b5401b3e894b882bc1a1e55b4b7c1ed1e67c991a760ddd5
languageName: node
linkType: hard
"@emnapi/wasi-threads@npm:1.1.0, @emnapi/wasi-threads@npm:^1.1.0":
version: 1.1.0
resolution: "@emnapi/wasi-threads@npm:1.1.0"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1
languageName: node
linkType: hard
"@esbuild/aix-ppc64@npm:0.27.2":
version: 0.27.2
resolution: "@esbuild/aix-ppc64@npm:0.27.2"
@@ -319,6 +347,26 @@ __metadata:
languageName: node
linkType: hard
"@lucide/svelte@npm:^0.562.0":
version: 0.562.0
resolution: "@lucide/svelte@npm:0.562.0"
peerDependencies:
svelte: ^5
checksum: 10c0/4886cbae7bf575daf5ee66b26be55a49f6e361672db6eb85f39779c202cd7d4e0d1431f6af710a7045ce9e36e720aef589d78da5807a2f2612c24e54198290bd
languageName: node
linkType: hard
"@napi-rs/wasm-runtime@npm:^1.1.0":
version: 1.1.0
resolution: "@napi-rs/wasm-runtime@npm:1.1.0"
dependencies:
"@emnapi/core": "npm:^1.7.1"
"@emnapi/runtime": "npm:^1.7.1"
"@tybys/wasm-util": "npm:^0.10.1"
checksum: 10c0/ee351052123bfc635c4cef03ac273a686522394ccd513b1e5b7b3823cecd6abb4a31f23a3a962933192b87eb7b7c3eb3def7748bd410edc66f932d90cf44e9ab
languageName: node
linkType: hard
"@npmcli/agent@npm:^4.0.0":
version: 4.0.0
resolution: "@npmcli/agent@npm:4.0.0"
@@ -341,58 +389,58 @@ __metadata:
languageName: node
linkType: hard
"@oxlint/darwin-arm64@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/darwin-arm64@npm:1.35.0"
"@oxlint/darwin-arm64@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/darwin-arm64@npm:1.36.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@oxlint/darwin-x64@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/darwin-x64@npm:1.35.0"
"@oxlint/darwin-x64@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/darwin-x64@npm:1.36.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@oxlint/linux-arm64-gnu@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/linux-arm64-gnu@npm:1.35.0"
"@oxlint/linux-arm64-gnu@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/linux-arm64-gnu@npm:1.36.0"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@oxlint/linux-arm64-musl@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/linux-arm64-musl@npm:1.35.0"
"@oxlint/linux-arm64-musl@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/linux-arm64-musl@npm:1.36.0"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@oxlint/linux-x64-gnu@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/linux-x64-gnu@npm:1.35.0"
"@oxlint/linux-x64-gnu@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/linux-x64-gnu@npm:1.36.0"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@oxlint/linux-x64-musl@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/linux-x64-musl@npm:1.35.0"
"@oxlint/linux-x64-musl@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/linux-x64-musl@npm:1.36.0"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@oxlint/win32-arm64@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/win32-arm64@npm:1.35.0"
"@oxlint/win32-arm64@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/win32-arm64@npm:1.36.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@oxlint/win32-x64@npm:1.35.0":
version: 1.35.0
resolution: "@oxlint/win32-x64@npm:1.35.0"
"@oxlint/win32-x64@npm:1.36.0":
version: 1.36.0
resolution: "@oxlint/win32-x64@npm:1.36.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -654,6 +702,179 @@ __metadata:
languageName: node
linkType: hard
"@tailwindcss/node@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/node@npm:4.1.18"
dependencies:
"@jridgewell/remapping": "npm:^2.3.4"
enhanced-resolve: "npm:^5.18.3"
jiti: "npm:^2.6.1"
lightningcss: "npm:1.30.2"
magic-string: "npm:^0.30.21"
source-map-js: "npm:^1.2.1"
tailwindcss: "npm:4.1.18"
checksum: 10c0/0527f4cb602a80413a7f135edc9a9c785edd543cceedd046ed2401d4c35c1ec433d5162c325d31ee7248f3560a709dafe30a50c1406662f28a2b3aaeb21f69fe
languageName: node
linkType: hard
"@tailwindcss/oxide-android-arm64@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-android-arm64@npm:4.1.18"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
"@tailwindcss/oxide-darwin-arm64@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-darwin-arm64@npm:4.1.18"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@tailwindcss/oxide-darwin-x64@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-darwin-x64@npm:4.1.18"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@tailwindcss/oxide-freebsd-x64@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-freebsd-x64@npm:4.1.18"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.1.18"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@tailwindcss/oxide-linux-arm64-gnu@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-linux-arm64-gnu@npm:4.1.18"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@tailwindcss/oxide-linux-arm64-musl@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-linux-arm64-musl@npm:4.1.18"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@tailwindcss/oxide-linux-x64-gnu@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-linux-x64-gnu@npm:4.1.18"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@tailwindcss/oxide-linux-x64-musl@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-linux-x64-musl@npm:4.1.18"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@tailwindcss/oxide-wasm32-wasi@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-wasm32-wasi@npm:4.1.18"
dependencies:
"@emnapi/core": "npm:^1.7.1"
"@emnapi/runtime": "npm:^1.7.1"
"@emnapi/wasi-threads": "npm:^1.1.0"
"@napi-rs/wasm-runtime": "npm:^1.1.0"
"@tybys/wasm-util": "npm:^0.10.1"
tslib: "npm:^2.4.0"
conditions: cpu=wasm32
languageName: node
linkType: hard
"@tailwindcss/oxide-win32-arm64-msvc@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-win32-arm64-msvc@npm:4.1.18"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@tailwindcss/oxide-win32-x64-msvc@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide-win32-x64-msvc@npm:4.1.18"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@tailwindcss/oxide@npm:4.1.18":
version: 4.1.18
resolution: "@tailwindcss/oxide@npm:4.1.18"
dependencies:
"@tailwindcss/oxide-android-arm64": "npm:4.1.18"
"@tailwindcss/oxide-darwin-arm64": "npm:4.1.18"
"@tailwindcss/oxide-darwin-x64": "npm:4.1.18"
"@tailwindcss/oxide-freebsd-x64": "npm:4.1.18"
"@tailwindcss/oxide-linux-arm-gnueabihf": "npm:4.1.18"
"@tailwindcss/oxide-linux-arm64-gnu": "npm:4.1.18"
"@tailwindcss/oxide-linux-arm64-musl": "npm:4.1.18"
"@tailwindcss/oxide-linux-x64-gnu": "npm:4.1.18"
"@tailwindcss/oxide-linux-x64-musl": "npm:4.1.18"
"@tailwindcss/oxide-wasm32-wasi": "npm:4.1.18"
"@tailwindcss/oxide-win32-arm64-msvc": "npm:4.1.18"
"@tailwindcss/oxide-win32-x64-msvc": "npm:4.1.18"
dependenciesMeta:
"@tailwindcss/oxide-android-arm64":
optional: true
"@tailwindcss/oxide-darwin-arm64":
optional: true
"@tailwindcss/oxide-darwin-x64":
optional: true
"@tailwindcss/oxide-freebsd-x64":
optional: true
"@tailwindcss/oxide-linux-arm-gnueabihf":
optional: true
"@tailwindcss/oxide-linux-arm64-gnu":
optional: true
"@tailwindcss/oxide-linux-arm64-musl":
optional: true
"@tailwindcss/oxide-linux-x64-gnu":
optional: true
"@tailwindcss/oxide-linux-x64-musl":
optional: true
"@tailwindcss/oxide-wasm32-wasi":
optional: true
"@tailwindcss/oxide-win32-arm64-msvc":
optional: true
"@tailwindcss/oxide-win32-x64-msvc":
optional: true
checksum: 10c0/1ff978ef24ffae6369e0468bd8c71d1995a00f1697ac1b8f24e92d2d5505ae23534e6257194e78360c16abbe34fc70de508c86d589917336067a60d755b86fcb
languageName: node
linkType: hard
"@tailwindcss/vite@npm:^4.1.18":
version: 4.1.18
resolution: "@tailwindcss/vite@npm:4.1.18"
dependencies:
"@tailwindcss/node": "npm:4.1.18"
"@tailwindcss/oxide": "npm:4.1.18"
tailwindcss: "npm:4.1.18"
peerDependencies:
vite: ^5.2.0 || ^6 || ^7
checksum: 10c0/7605364d29cd5683948f7b74f22c5f3b39b89b54d25b3b1094f8300ec6fe9f053f73246170debad86e01080f858d0bf6d0ef8e398a9dc0ce1f5a02c34447726b
languageName: node
linkType: hard
"@tybys/wasm-util@npm:^0.10.1":
version: 0.10.1
resolution: "@tybys/wasm-util@npm:0.10.1"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8
languageName: node
linkType: hard
"@types/cookie@npm:^0.6.0":
version: 0.6.0
resolution: "@types/cookie@npm:0.6.0"
@@ -773,6 +994,13 @@ __metadata:
languageName: node
linkType: hard
"detect-libc@npm:^2.0.3":
version: 2.1.2
resolution: "detect-libc@npm:2.1.2"
checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4
languageName: node
linkType: hard
"devalue@npm:^5.3.2, devalue@npm:^5.5.0":
version: 5.6.1
resolution: "devalue@npm:5.6.1"
@@ -827,6 +1055,16 @@ __metadata:
languageName: node
linkType: hard
"enhanced-resolve@npm:^5.18.3":
version: 5.18.4
resolution: "enhanced-resolve@npm:5.18.4"
dependencies:
graceful-fs: "npm:^4.2.4"
tapable: "npm:^2.2.0"
checksum: 10c0/8f6d42c8a0787a746c493e724c9de5d091cfe8e3f871f2464e2f78a6c55fa1a3aaba495334f923c8ea3ac23e1472491f79feef6fc0fb46a75169cb447ffbe2dc
languageName: node
linkType: hard
"env-paths@npm:^2.2.0":
version: 2.2.1
resolution: "env-paths@npm:2.2.1"
@@ -1027,20 +1265,28 @@ __metadata:
version: 0.0.0-use.local
resolution: "glyphdiff@workspace:."
dependencies:
"@lucide/svelte": "npm:^0.562.0"
"@playwright/test": "npm:^1.57.0"
"@sveltejs/adapter-auto": "npm:^7.0.0"
"@sveltejs/kit": "npm:^2.49.1"
"@sveltejs/vite-plugin-svelte": "npm:^6.2.1"
"@tailwindcss/vite": "npm:^4.1.18"
clsx: "npm:^2.1.1"
dprint: "npm:^0.50.2"
lefthook: "npm:^2.0.13"
oxlint: "npm:^1.35.0"
svelte: "npm:^5.45.6"
svelte-check: "npm:^4.3.4"
tailwind-merge: "npm:^3.4.0"
tailwind-variants: "npm:^3.2.2"
tailwindcss: "npm:^4.1.18"
tw-animate-css: "npm:^1.4.0"
typescript: "npm:^5.9.3"
vite: "npm:^7.2.6"
languageName: unknown
linkType: soft
"graceful-fs@npm:^4.2.6":
"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
@@ -1113,6 +1359,15 @@ __metadata:
languageName: node
linkType: hard
"jiti@npm:^2.6.1":
version: 2.6.1
resolution: "jiti@npm:2.6.1"
bin:
jiti: lib/jiti-cli.mjs
checksum: 10c0/79b2e96a8e623f66c1b703b98ec1b8be4500e1d217e09b09e343471bbb9c105381b83edbb979d01cef18318cc45ce6e153571b6c83122170eefa531c64b6789b
languageName: node
linkType: hard
"kleur@npm:^4.1.5":
version: 4.1.5
resolution: "kleur@npm:4.1.5"
@@ -1120,6 +1375,237 @@ __metadata:
languageName: node
linkType: hard
"lefthook-darwin-arm64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-darwin-arm64@npm:2.0.13"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"lefthook-darwin-x64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-darwin-x64@npm:2.0.13"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"lefthook-freebsd-arm64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-freebsd-arm64@npm:2.0.13"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
"lefthook-freebsd-x64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-freebsd-x64@npm:2.0.13"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"lefthook-linux-arm64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-linux-arm64@npm:2.0.13"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
"lefthook-linux-x64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-linux-x64@npm:2.0.13"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
"lefthook-openbsd-arm64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-openbsd-arm64@npm:2.0.13"
conditions: os=openbsd & cpu=arm64
languageName: node
linkType: hard
"lefthook-openbsd-x64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-openbsd-x64@npm:2.0.13"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
"lefthook-windows-arm64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-windows-arm64@npm:2.0.13"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"lefthook-windows-x64@npm:2.0.13":
version: 2.0.13
resolution: "lefthook-windows-x64@npm:2.0.13"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"lefthook@npm:^2.0.13":
version: 2.0.13
resolution: "lefthook@npm:2.0.13"
dependencies:
lefthook-darwin-arm64: "npm:2.0.13"
lefthook-darwin-x64: "npm:2.0.13"
lefthook-freebsd-arm64: "npm:2.0.13"
lefthook-freebsd-x64: "npm:2.0.13"
lefthook-linux-arm64: "npm:2.0.13"
lefthook-linux-x64: "npm:2.0.13"
lefthook-openbsd-arm64: "npm:2.0.13"
lefthook-openbsd-x64: "npm:2.0.13"
lefthook-windows-arm64: "npm:2.0.13"
lefthook-windows-x64: "npm:2.0.13"
dependenciesMeta:
lefthook-darwin-arm64:
optional: true
lefthook-darwin-x64:
optional: true
lefthook-freebsd-arm64:
optional: true
lefthook-freebsd-x64:
optional: true
lefthook-linux-arm64:
optional: true
lefthook-linux-x64:
optional: true
lefthook-openbsd-arm64:
optional: true
lefthook-openbsd-x64:
optional: true
lefthook-windows-arm64:
optional: true
lefthook-windows-x64:
optional: true
bin:
lefthook: bin/index.js
checksum: 10c0/11dc5a952c24325b19803c261331f1e12ea8eaf31c0ab131815955a6e7210323828995c2b9cc73b79c23de960beda27ab71de88afdf00e40f367c6b13cee1ce3
languageName: node
linkType: hard
"lightningcss-android-arm64@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-android-arm64@npm:1.30.2"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
"lightningcss-darwin-arm64@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-darwin-arm64@npm:1.30.2"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"lightningcss-darwin-x64@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-darwin-x64@npm:1.30.2"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"lightningcss-freebsd-x64@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-freebsd-x64@npm:1.30.2"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"lightningcss-linux-arm-gnueabihf@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-linux-arm-gnueabihf@npm:1.30.2"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"lightningcss-linux-arm64-gnu@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-linux-arm64-gnu@npm:1.30.2"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"lightningcss-linux-arm64-musl@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-linux-arm64-musl@npm:1.30.2"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"lightningcss-linux-x64-gnu@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-linux-x64-gnu@npm:1.30.2"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"lightningcss-linux-x64-musl@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-linux-x64-musl@npm:1.30.2"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"lightningcss-win32-arm64-msvc@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-win32-arm64-msvc@npm:1.30.2"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"lightningcss-win32-x64-msvc@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss-win32-x64-msvc@npm:1.30.2"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"lightningcss@npm:1.30.2":
version: 1.30.2
resolution: "lightningcss@npm:1.30.2"
dependencies:
detect-libc: "npm:^2.0.3"
lightningcss-android-arm64: "npm:1.30.2"
lightningcss-darwin-arm64: "npm:1.30.2"
lightningcss-darwin-x64: "npm:1.30.2"
lightningcss-freebsd-x64: "npm:1.30.2"
lightningcss-linux-arm-gnueabihf: "npm:1.30.2"
lightningcss-linux-arm64-gnu: "npm:1.30.2"
lightningcss-linux-arm64-musl: "npm:1.30.2"
lightningcss-linux-x64-gnu: "npm:1.30.2"
lightningcss-linux-x64-musl: "npm:1.30.2"
lightningcss-win32-arm64-msvc: "npm:1.30.2"
lightningcss-win32-x64-msvc: "npm:1.30.2"
dependenciesMeta:
lightningcss-android-arm64:
optional: true
lightningcss-darwin-arm64:
optional: true
lightningcss-darwin-x64:
optional: true
lightningcss-freebsd-x64:
optional: true
lightningcss-linux-arm-gnueabihf:
optional: true
lightningcss-linux-arm64-gnu:
optional: true
lightningcss-linux-arm64-musl:
optional: true
lightningcss-linux-x64-gnu:
optional: true
lightningcss-linux-x64-musl:
optional: true
lightningcss-win32-arm64-msvc:
optional: true
lightningcss-win32-x64-msvc:
optional: true
checksum: 10c0/5c0c73a33946dab65908d5cd1325df4efa290efb77f940b60f40448b5ab9a87d3ea665ef9bcf00df4209705050ecf2f7ecc649f44d6dfa5905bb50f15717e78d
languageName: node
linkType: hard
"locate-character@npm:^3.0.0":
version: 3.0.0
resolution: "locate-character@npm:3.0.0"
@@ -1134,7 +1620,7 @@ __metadata:
languageName: node
linkType: hard
"magic-string@npm:^0.30.11, magic-string@npm:^0.30.17, magic-string@npm:^0.30.5":
"magic-string@npm:^0.30.11, magic-string@npm:^0.30.17, magic-string@npm:^0.30.21, magic-string@npm:^0.30.5":
version: 0.30.21
resolution: "magic-string@npm:0.30.21"
dependencies:
@@ -1316,17 +1802,17 @@ __metadata:
linkType: hard
"oxlint@npm:^1.35.0":
version: 1.35.0
resolution: "oxlint@npm:1.35.0"
version: 1.36.0
resolution: "oxlint@npm:1.36.0"
dependencies:
"@oxlint/darwin-arm64": "npm:1.35.0"
"@oxlint/darwin-x64": "npm:1.35.0"
"@oxlint/linux-arm64-gnu": "npm:1.35.0"
"@oxlint/linux-arm64-musl": "npm:1.35.0"
"@oxlint/linux-x64-gnu": "npm:1.35.0"
"@oxlint/linux-x64-musl": "npm:1.35.0"
"@oxlint/win32-arm64": "npm:1.35.0"
"@oxlint/win32-x64": "npm:1.35.0"
"@oxlint/darwin-arm64": "npm:1.36.0"
"@oxlint/darwin-x64": "npm:1.36.0"
"@oxlint/linux-arm64-gnu": "npm:1.36.0"
"@oxlint/linux-arm64-musl": "npm:1.36.0"
"@oxlint/linux-x64-gnu": "npm:1.36.0"
"@oxlint/linux-x64-musl": "npm:1.36.0"
"@oxlint/win32-arm64": "npm:1.36.0"
"@oxlint/win32-x64": "npm:1.36.0"
peerDependencies:
oxlint-tsgolint: ">=0.10.0"
dependenciesMeta:
@@ -1352,7 +1838,7 @@ __metadata:
bin:
oxc_language_server: bin/oxc_language_server
oxlint: bin/oxlint
checksum: 10c0/1cc62c5902a944cb4e37c7eaf211aae83f0d57672ecc75f8e92c2c5a208934ed21c67ad2f558009d2ede080683b981fba78242d55013a2d4fc9f5efea2023d54
checksum: 10c0/e480ede331a2be74f879e378bea9eae9e5561064ea81938cf68c525ef3295633100c92f7f045730eae8561da27f02c0fdfd1a59c567df5a32f5a92a60253b811
languageName: node
linkType: hard
@@ -1662,6 +2148,40 @@ __metadata:
languageName: node
linkType: hard
"tailwind-merge@npm:^3.4.0":
version: 3.4.0
resolution: "tailwind-merge@npm:3.4.0"
checksum: 10c0/eaf17bb695c51c7bb7a90366a9c62be295473ee97fcfd1da54287714d4a5788a88ff4ad1ab9e0128638257fda777d6c9ea88682e36195e31a7fa2cf43f45e310
languageName: node
linkType: hard
"tailwind-variants@npm:^3.2.2":
version: 3.2.2
resolution: "tailwind-variants@npm:3.2.2"
peerDependencies:
tailwind-merge: ">=3.0.0"
tailwindcss: "*"
peerDependenciesMeta:
tailwind-merge:
optional: true
checksum: 10c0/715a35b66c374f3bb234cd1e6737588cb7c0213c80a69bd62239d752d20c44377bec1d028c3ea7c28882d81384507fbae407813d348c142cb991c5a0ad063d48
languageName: node
linkType: hard
"tailwindcss@npm:4.1.18, tailwindcss@npm:^4.1.18":
version: 4.1.18
resolution: "tailwindcss@npm:4.1.18"
checksum: 10c0/c79263cea0b2c577859b02f28284caa4eb3844e4d0f563686726ca97817c045c5c395a55bc776daaa351ba9e4aefa9a75bfbb43c22d86f3c573eecc2b87d6bf1
languageName: node
linkType: hard
"tapable@npm:^2.2.0":
version: 2.3.0
resolution: "tapable@npm:2.3.0"
checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681
languageName: node
linkType: hard
"tar@npm:^7.5.2":
version: 7.5.2
resolution: "tar@npm:7.5.2"
@@ -1692,6 +2212,20 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.4.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
languageName: node
linkType: hard
"tw-animate-css@npm:^1.4.0":
version: 1.4.0
resolution: "tw-animate-css@npm:1.4.0"
checksum: 10c0/6cfbc19ccc73883ec80ef1f9147f43e736cb01ee99c8172968b37eb81b720523d30e38b1a96aef92db3c586d864204db5510b51744ddacbbf0ad8e3c7fb56ec7
languageName: node
linkType: hard
"typescript@npm:^5.9.3":
version: 5.9.3
resolution: "typescript@npm:5.9.3"