diff --git a/.gitignore b/.gitignore
index c94f251..3a5fbab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-build
-node_modules
frontend/dist
+node_modules
+build
test_data
diff --git a/frontend/README.md b/frontend/README.md
new file mode 100644
index 0000000..d255e21
--- /dev/null
+++ b/frontend/README.md
@@ -0,0 +1,59 @@
+# YellowJacket Frontend
+
+This directory contains the frontend for YellowJacket.
+
+## Dependencies
+
+There are a couple of tools that are required to build and use the frontend.
+
+- [`vite`](https://vite.dev/) for
+ - transpiling typescript
+ - bundling the final "package" that is useb by the webview
+ - running a dev server with hot-reloading
+ - configured with the [`vite.config.ts`](./vite.config.ts) file in this directory
+- [`pnpm`](https://pnpm.io/) for managing frontend dependency packages
+
+There are a handful of dependency packages that we use directly in the frontend.
+
+- [`picocss`](https://picocss.com) for basic CSS while developing
+- [`lit`](https://lit.dev) for a simple but powerful wrapper around [Web Components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components)
+
+Lastly, there are some dependencies that only benefit development
+
+- `tsserver` comes bundled with vscode and can be used as an LSP with other editors using [`typescript-language-server`](https://github.com/typescript-language-server/typescript-language-server)
+ - Used for autocomplete, syntax highlighting, etc.
+ - This can be configured with the `tsconfig.json` file in the root of the project
+ - NOTE: your configuration should align with the `vite` config so you get in-editor feedback that aligns with how the build will be done.
+
+## Development
+
+Ideally, you would use the frontend in the wails app as the frontend depends on the Go bindings generated by Wails.
+You can do this by running `wails dev` in the root of the YellowJacket repo.
+
+If you want to run the frontend standalone, make sure the Wails go bindings have been generated with `wails generate modules`.
+Then, you can run `pnpm dev` to run the vite dev server.
+For more information on what commands are available, refer to `package.json`.
+
+## Code
+
+### Web Components
+
+Our frontend is based off of Web Components, a standard that provides native browser encapsulation of components that can include HTML, CSS and Javascript all together.
+Instead of writing these components manually in Javascript, we utilize `lit` as a wrapper library.
+
+### Typescript
+
+To better integrate with our tooling and to provide a better developer experience with strong typing, we have written all functional frontend code in Typescript.
+Vite serves as our Typescript transpiler.
+
+### Important Files and Directories
+
+NOTE: most of these directories have aliases defined in `tsconfig.json` and `vite.config.ts` so that we may refer to them by shorthand when importing.
+
+- `index.html` and `index.js` is the entrypoint for the frontend. The first page that loads.
+- `wailsjs/go` Go code bindings generated by wails reside here
+- `wailsjs/runtime` the Wails runtime code needed to use Wails features
+- `src` all app code resides here
+- `src/assets` static assets like fonts, images and icons
+- `src/components` lit components that are used to compose the application
+- `src/pages` pages that serve as other entrypoints for the application that can be navigated to
diff --git a/frontend/index.html b/frontend/index.html
index d037364..47a9e22 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -4,11 +4,10 @@
+
yellowjacket
-
-
-
+
@@ -17,7 +16,7 @@
YellowJacket
- Music how it was meant to be.
+ Music how it was meant to bee.
@@ -29,7 +28,7 @@
-
+
@@ -41,18 +40,9 @@
-
- No Library Directory Selected
- Choose Directory...
-
-
-
-
-
-
diff --git a/frontend/index.ts b/frontend/index.ts
new file mode 100644
index 0000000..01636ff
--- /dev/null
+++ b/frontend/index.ts
@@ -0,0 +1 @@
+import '@components/audio-player/audio-player.ts';
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
deleted file mode 100644
index b8ddf77..0000000
--- a/frontend/package-lock.json
+++ /dev/null
@@ -1,708 +0,0 @@
-{
- "name": "frontend",
- "version": "0.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "frontend",
- "version": "0.0.0",
- "dependencies": {
- "lit": "^3.2.1"
- },
- "devDependencies": {
- "vite": "^3.0.7"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
- "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
- "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@lit-labs/ssr-dom-shim": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz",
- "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@lit/reactive-element": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
- "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@lit-labs/ssr-dom-shim": "^1.2.0"
- }
- },
- "node_modules/@types/trusted-types": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
- "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
- "license": "MIT"
- },
- "node_modules/esbuild": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
- "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.15.18",
- "@esbuild/linux-loong64": "0.15.18",
- "esbuild-android-64": "0.15.18",
- "esbuild-android-arm64": "0.15.18",
- "esbuild-darwin-64": "0.15.18",
- "esbuild-darwin-arm64": "0.15.18",
- "esbuild-freebsd-64": "0.15.18",
- "esbuild-freebsd-arm64": "0.15.18",
- "esbuild-linux-32": "0.15.18",
- "esbuild-linux-64": "0.15.18",
- "esbuild-linux-arm": "0.15.18",
- "esbuild-linux-arm64": "0.15.18",
- "esbuild-linux-mips64le": "0.15.18",
- "esbuild-linux-ppc64le": "0.15.18",
- "esbuild-linux-riscv64": "0.15.18",
- "esbuild-linux-s390x": "0.15.18",
- "esbuild-netbsd-64": "0.15.18",
- "esbuild-openbsd-64": "0.15.18",
- "esbuild-sunos-64": "0.15.18",
- "esbuild-windows-32": "0.15.18",
- "esbuild-windows-64": "0.15.18",
- "esbuild-windows-arm64": "0.15.18"
- }
- },
- "node_modules/esbuild-android-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
- "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-android-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
- "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
- "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
- "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
- "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
- "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-32": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
- "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
- "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
- "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
- "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-mips64le": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
- "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-ppc64le": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
- "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-riscv64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
- "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-s390x": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
- "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-netbsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
- "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-openbsd-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
- "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-sunos-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
- "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-32": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
- "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
- "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-arm64": {
- "version": "0.15.18",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
- "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
- "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/lit": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz",
- "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@lit/reactive-element": "^2.0.4",
- "lit-element": "^4.1.0",
- "lit-html": "^3.2.0"
- }
- },
- "node_modules/lit-element": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz",
- "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@lit-labs/ssr-dom-shim": "^1.2.0",
- "@lit/reactive-element": "^2.0.4",
- "lit-html": "^3.2.0"
- }
- },
- "node_modules/lit-html": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz",
- "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@types/trusted-types": "^2.0.2"
- }
- },
- "node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/postcss": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
- "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.8",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.16.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/rollup": {
- "version": "2.79.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
- "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/vite": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz",
- "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.15.9",
- "postcss": "^8.4.18",
- "resolve": "^1.22.1",
- "rollup": "^2.79.1"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- },
- "peerDependencies": {
- "@types/node": ">= 14",
- "less": "*",
- "sass": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- }
- }
-}
diff --git a/frontend/package.json b/frontend/package.json
index 1ce38b3..24b20be 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,16 +1,15 @@
{
- "name": "frontend",
- "private": true,
- "version": "0.0.0",
- "scripts": {
- "dev": "vite",
- "build": "vite build",
- "preview": "vite preview"
- },
- "devDependencies": {
- "vite": "^3.0.7"
- },
- "dependencies": {
- "lit": "^3.2.1"
- }
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@picocss/pico": "^2.1.1",
+ "lit": "^3.2.1"
+ },
+ "devDependencies": {
+ "ts-lit-plugin": "^2.0.2",
+ "vite": "^6.2.3"
+ }
}
diff --git a/frontend/package.json.md5 b/frontend/package.json.md5
index d62518c..4d37395 100755
--- a/frontend/package.json.md5
+++ b/frontend/package.json.md5
@@ -1 +1 @@
-6cdae3f6b1951ca1bf1d6febf086be53
\ No newline at end of file
+038a4fcd825344f08c63dbe40f42865f
\ No newline at end of file
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
new file mode 100644
index 0000000..aa3fbed
--- /dev/null
+++ b/frontend/pnpm-lock.yaml
@@ -0,0 +1,1047 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@picocss/pico':
+ specifier: ^2.1.1
+ version: 2.1.1
+ lit:
+ specifier: ^3.2.1
+ version: 3.2.1
+ devDependencies:
+ ts-lit-plugin:
+ specifier: ^2.0.2
+ version: 2.0.2
+ vite:
+ specifier: ^6.2.3
+ version: 6.2.3
+
+packages:
+
+ '@babel/runtime@7.27.0':
+ resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==}
+ engines: {node: '>=6.9.0'}
+
+ '@esbuild/aix-ppc64@0.25.1':
+ resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.25.1':
+ resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.25.1':
+ resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.25.1':
+ resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.25.1':
+ resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.25.1':
+ resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.25.1':
+ resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.25.1':
+ resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.25.1':
+ resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.25.1':
+ resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.25.1':
+ resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.25.1':
+ resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.25.1':
+ resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.25.1':
+ resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.25.1':
+ resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.25.1':
+ resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.25.1':
+ resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.25.1':
+ resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.25.1':
+ resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.25.1':
+ resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.25.1':
+ resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.25.1':
+ resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.25.1':
+ resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.25.1':
+ resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.25.1':
+ resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@lit-labs/ssr-dom-shim@1.3.0':
+ resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==}
+
+ '@lit/reactive-element@2.0.4':
+ resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@picocss/pico@2.1.1':
+ resolution: {integrity: sha512-kIDugA7Ps4U+2BHxiNHmvgPIQDWPDU4IeU6TNRdvXQM1uZX+FibqDQT2xUOnnO2yq/LUHcwnGlu1hvf4KfXnMg==}
+
+ '@rollup/rollup-android-arm-eabi@4.37.0':
+ resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.37.0':
+ resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.37.0':
+ resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.37.0':
+ resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.37.0':
+ resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.37.0':
+ resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.37.0':
+ resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.37.0':
+ resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.37.0':
+ resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.37.0':
+ resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.37.0':
+ resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.37.0':
+ resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.37.0':
+ resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.37.0':
+ resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.37.0':
+ resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.37.0':
+ resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.37.0':
+ resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.37.0':
+ resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.37.0':
+ resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.37.0':
+ resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==}
+ cpu: [x64]
+ os: [win32]
+
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
+ '@vscode/web-custom-data@0.4.13':
+ resolution: {integrity: sha512-2ZUIRfhofZ/npLlf872EBnPmn27Kt4M2UssmQIfnJvgGgMYZJ5fvtHEDnttBBf2hnVtBgNCqZMVHJA+wsFVqTA==}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ didyoumean2@4.1.0:
+ resolution: {integrity: sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig==}
+ engines: {node: '>=10.13'}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ esbuild@0.25.1:
+ resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fastq@1.19.1:
+ resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ leven@3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+
+ lit-analyzer@2.0.3:
+ resolution: {integrity: sha512-XiAjnwVipNrKav7r3CSEZpWt+mwYxrhPRVC7h8knDmn/HWTzzWJvPe+mwBcL2brn4xhItAMzZhFC8tzzqHKmiQ==}
+ hasBin: true
+
+ lit-element@4.1.1:
+ resolution: {integrity: sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==}
+
+ lit-html@3.2.1:
+ resolution: {integrity: sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==}
+
+ lit@3.2.1:
+ resolution: {integrity: sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==}
+
+ lodash.deburr@4.1.0:
+ resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ parse5@5.1.0:
+ resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ postcss@8.5.3:
+ resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rollup@4.37.0:
+ resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ ts-lit-plugin@2.0.2:
+ resolution: {integrity: sha512-DPXlVxhjWHxg8AyBLcfSYt2JXgpANV1ssxxwjY98o26gD8MzeiM68HFW9c2VeDd1CjoR3w7B/6/uKxwBQe+ioA==}
+
+ ts-simple-type@2.0.0-next.0:
+ resolution: {integrity: sha512-A+hLX83gS+yH6DtzNAhzZbPfU+D9D8lHlTSd7GeoMRBjOt3GRylDqLTYbdmjA4biWvq2xSfpqfIDj2l0OA/BVg==}
+
+ typescript@5.2.2:
+ resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ vite@6.2.3:
+ resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ jiti: '>=1.21.0'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vscode-css-languageservice@4.3.0:
+ resolution: {integrity: sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A==}
+
+ vscode-html-languageservice@3.1.0:
+ resolution: {integrity: sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg==}
+
+ vscode-languageserver-textdocument@1.0.12:
+ resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+
+ vscode-languageserver-types@3.16.0-next.2:
+ resolution: {integrity: sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==}
+
+ vscode-nls@4.1.2:
+ resolution: {integrity: sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==}
+
+ vscode-uri@2.1.2:
+ resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==}
+
+ web-component-analyzer@2.0.0:
+ resolution: {integrity: sha512-UEvwfpD+XQw99sLKiH5B1T4QwpwNyWJxp59cnlRwFfhUW6JsQpw5jMeMwi7580sNou8YL3kYoS7BWLm+yJ/jVQ==}
+ hasBin: true
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+snapshots:
+
+ '@babel/runtime@7.27.0':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
+ '@esbuild/aix-ppc64@0.25.1':
+ optional: true
+
+ '@esbuild/android-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/android-arm@0.25.1':
+ optional: true
+
+ '@esbuild/android-x64@0.25.1':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/darwin-x64@0.25.1':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.25.1':
+ optional: true
+
+ '@esbuild/linux-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/linux-arm@0.25.1':
+ optional: true
+
+ '@esbuild/linux-ia32@0.25.1':
+ optional: true
+
+ '@esbuild/linux-loong64@0.25.1':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.25.1':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.25.1':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.25.1':
+ optional: true
+
+ '@esbuild/linux-s390x@0.25.1':
+ optional: true
+
+ '@esbuild/linux-x64@0.25.1':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.25.1':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.25.1':
+ optional: true
+
+ '@esbuild/sunos-x64@0.25.1':
+ optional: true
+
+ '@esbuild/win32-arm64@0.25.1':
+ optional: true
+
+ '@esbuild/win32-ia32@0.25.1':
+ optional: true
+
+ '@esbuild/win32-x64@0.25.1':
+ optional: true
+
+ '@lit-labs/ssr-dom-shim@1.3.0': {}
+
+ '@lit/reactive-element@2.0.4':
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.3.0
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.1
+
+ '@picocss/pico@2.1.1': {}
+
+ '@rollup/rollup-android-arm-eabi@4.37.0':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.37.0':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.37.0':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.37.0':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.37.0':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.37.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.37.0':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.37.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.37.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.37.0':
+ optional: true
+
+ '@types/estree@1.0.6': {}
+
+ '@types/trusted-types@2.0.7': {}
+
+ '@vscode/web-custom-data@0.4.13': {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ didyoumean2@4.1.0:
+ dependencies:
+ '@babel/runtime': 7.27.0
+ leven: 3.1.0
+ lodash.deburr: 4.1.0
+
+ emoji-regex@8.0.0: {}
+
+ esbuild@0.25.1:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.1
+ '@esbuild/android-arm': 0.25.1
+ '@esbuild/android-arm64': 0.25.1
+ '@esbuild/android-x64': 0.25.1
+ '@esbuild/darwin-arm64': 0.25.1
+ '@esbuild/darwin-x64': 0.25.1
+ '@esbuild/freebsd-arm64': 0.25.1
+ '@esbuild/freebsd-x64': 0.25.1
+ '@esbuild/linux-arm': 0.25.1
+ '@esbuild/linux-arm64': 0.25.1
+ '@esbuild/linux-ia32': 0.25.1
+ '@esbuild/linux-loong64': 0.25.1
+ '@esbuild/linux-mips64el': 0.25.1
+ '@esbuild/linux-ppc64': 0.25.1
+ '@esbuild/linux-riscv64': 0.25.1
+ '@esbuild/linux-s390x': 0.25.1
+ '@esbuild/linux-x64': 0.25.1
+ '@esbuild/netbsd-arm64': 0.25.1
+ '@esbuild/netbsd-x64': 0.25.1
+ '@esbuild/openbsd-arm64': 0.25.1
+ '@esbuild/openbsd-x64': 0.25.1
+ '@esbuild/sunos-x64': 0.25.1
+ '@esbuild/win32-arm64': 0.25.1
+ '@esbuild/win32-ia32': 0.25.1
+ '@esbuild/win32-x64': 0.25.1
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fastq@1.19.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ fsevents@2.3.3:
+ optional: true
+
+ get-caller-file@2.0.5: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ has-flag@3.0.0: {}
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ leven@3.1.0: {}
+
+ lit-analyzer@2.0.3:
+ dependencies:
+ '@vscode/web-custom-data': 0.4.13
+ chalk: 2.4.2
+ didyoumean2: 4.1.0
+ fast-glob: 3.3.3
+ parse5: 5.1.0
+ ts-simple-type: 2.0.0-next.0
+ vscode-css-languageservice: 4.3.0
+ vscode-html-languageservice: 3.1.0
+ web-component-analyzer: 2.0.0
+
+ lit-element@4.1.1:
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.3.0
+ '@lit/reactive-element': 2.0.4
+ lit-html: 3.2.1
+
+ lit-html@3.2.1:
+ dependencies:
+ '@types/trusted-types': 2.0.7
+
+ lit@3.2.1:
+ dependencies:
+ '@lit/reactive-element': 2.0.4
+ lit-element: 4.1.1
+ lit-html: 3.2.1
+
+ lodash.deburr@4.1.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ nanoid@3.3.11: {}
+
+ parse5@5.1.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ postcss@8.5.3:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ queue-microtask@1.2.3: {}
+
+ regenerator-runtime@0.14.1: {}
+
+ require-directory@2.1.1: {}
+
+ reusify@1.1.0: {}
+
+ rollup@4.37.0:
+ dependencies:
+ '@types/estree': 1.0.6
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.37.0
+ '@rollup/rollup-android-arm64': 4.37.0
+ '@rollup/rollup-darwin-arm64': 4.37.0
+ '@rollup/rollup-darwin-x64': 4.37.0
+ '@rollup/rollup-freebsd-arm64': 4.37.0
+ '@rollup/rollup-freebsd-x64': 4.37.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.37.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.37.0
+ '@rollup/rollup-linux-arm64-gnu': 4.37.0
+ '@rollup/rollup-linux-arm64-musl': 4.37.0
+ '@rollup/rollup-linux-loongarch64-gnu': 4.37.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.37.0
+ '@rollup/rollup-linux-riscv64-musl': 4.37.0
+ '@rollup/rollup-linux-s390x-gnu': 4.37.0
+ '@rollup/rollup-linux-x64-gnu': 4.37.0
+ '@rollup/rollup-linux-x64-musl': 4.37.0
+ '@rollup/rollup-win32-arm64-msvc': 4.37.0
+ '@rollup/rollup-win32-ia32-msvc': 4.37.0
+ '@rollup/rollup-win32-x64-msvc': 4.37.0
+ fsevents: 2.3.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ source-map-js@1.2.1: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ ts-lit-plugin@2.0.2:
+ dependencies:
+ lit-analyzer: 2.0.3
+ web-component-analyzer: 2.0.0
+
+ ts-simple-type@2.0.0-next.0: {}
+
+ typescript@5.2.2: {}
+
+ vite@6.2.3:
+ dependencies:
+ esbuild: 0.25.1
+ postcss: 8.5.3
+ rollup: 4.37.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ vscode-css-languageservice@4.3.0:
+ dependencies:
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.16.0-next.2
+ vscode-nls: 4.1.2
+ vscode-uri: 2.1.2
+
+ vscode-html-languageservice@3.1.0:
+ dependencies:
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.16.0-next.2
+ vscode-nls: 4.1.2
+ vscode-uri: 2.1.2
+
+ vscode-languageserver-textdocument@1.0.12: {}
+
+ vscode-languageserver-types@3.16.0-next.2: {}
+
+ vscode-nls@4.1.2: {}
+
+ vscode-uri@2.1.2: {}
+
+ web-component-analyzer@2.0.0:
+ dependencies:
+ fast-glob: 3.3.3
+ ts-simple-type: 2.0.0-next.0
+ typescript: 5.2.2
+ yargs: 17.7.2
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ y18n@5.0.8: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
diff --git a/frontend/src/assets/fonts/OFL.txt b/frontend/src/assets/fonts/OFL.txt
deleted file mode 100644
index 9cac04c..0000000
--- a/frontend/src/assets/fonts/OFL.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-Copyright 2016 The Nunito Project Authors (contact@sansoxygen.com),
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/frontend/src/assets/scripts/main.js b/frontend/src/assets/scripts/main.js
deleted file mode 100644
index c497640..0000000
--- a/frontend/src/assets/scripts/main.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import { DirectoryPicker } from '../../../wailsjs/go/frontendbindings/FrontendBindings';
-import { GetDir as GetLibraryDir } from '../../../wailsjs/go/library/Library';
-import { Play } from '../../../wailsjs/go/player/Player';
-
-
-let libraryDirectoryLabel = document.getElementById("library-directory-label");
-let playPauseButtonIcon = document.getElementById("playPauseButtonIcon");
-
-GetLibraryDir().
- then((result) => {
- if (result.length === 0) { return; }
- window.updateLibraryDirLabel(result);
- }).catch((err) => { console.error(err) })
-
-window.onPlayPauseButtonClick = function() {
- try {
- Play().then((result) => {
- console.log(result)
- playPauseButtonIcon.setAttribute("src", "/src/assets/images/icons/music/pause-solid.svg")
- }).catch((err) => {
- console.log("There is an error with playing")
- console.error(err);
- });
- }
- catch (err) {
- console.error(err);
- }
-}
-
-window.dirPicker = function() {
- try {
- DirectoryPicker()
- .then((result) => { window.updateLibraryDirLabel(result); })
- .catch((err) => {
- console.log("There is an error with directory picker")
- console.error(err);
- });
- }
- catch (err) {
- console.error(err);
- }
-}
-
-window.updateLibraryDirLabel = function(value) {
- libraryDirectoryLabel.innerText = value;
-}
diff --git a/frontend/src/assets/styles/pico.css b/frontend/src/assets/styles/pico.css
deleted file mode 100644
index 567927e..0000000
--- a/frontend/src/assets/styles/pico.css
+++ /dev/null
@@ -1,2835 +0,0 @@
-@charset "UTF-8";
-/*!
- * Pico CSS ✨ v2.1.1 (https://picocss.com)
- * Copyright 2019-2025 - Licensed under MIT
- */
-/**
- * Styles
- */
-:root,
-:host {
- --pico-font-family-emoji: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
- --pico-font-family-sans-serif: system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial, "Helvetica Neue", sans-serif, var(--pico-font-family-emoji);
- --pico-font-family-monospace: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace, var(--pico-font-family-emoji);
- --pico-font-family: var(--pico-font-family-sans-serif);
- --pico-line-height: 1.5;
- --pico-font-weight: 400;
- --pico-font-size: 100%;
- --pico-text-underline-offset: 0.1rem;
- --pico-border-radius: 0.25rem;
- --pico-border-width: 0.0625rem;
- --pico-outline-width: 0.125rem;
- --pico-transition: 0.2s ease-in-out;
- --pico-spacing: 1rem;
- --pico-typography-spacing-vertical: 1rem;
- --pico-block-spacing-vertical: var(--pico-spacing);
- --pico-block-spacing-horizontal: var(--pico-spacing);
- --pico-grid-column-gap: var(--pico-spacing);
- --pico-grid-row-gap: var(--pico-spacing);
- --pico-form-element-spacing-vertical: 0.75rem;
- --pico-form-element-spacing-horizontal: 1rem;
- --pico-group-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
- --pico-group-box-shadow-focus-with-input: 0 0 0 0.0625rem var(--pico-form-element-border-color);
- --pico-modal-overlay-backdrop-filter: blur(0.375rem);
- --pico-nav-element-spacing-vertical: 1rem;
- --pico-nav-element-spacing-horizontal: 0.5rem;
- --pico-nav-link-spacing-vertical: 0.5rem;
- --pico-nav-link-spacing-horizontal: 0.5rem;
- --pico-nav-breadcrumb-divider: ">";
- --pico-icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
- --pico-icon-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");
- --pico-icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
- --pico-icon-date: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");
- --pico-icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");
- --pico-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");
- --pico-icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");
- --pico-icon-loading: url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E");
-}
-@media (min-width: 576px) {
- :root,
- :host {
- --pico-font-size: 106.25%;
- }
-}
-@media (min-width: 768px) {
- :root,
- :host {
- --pico-font-size: 112.5%;
- }
-}
-@media (min-width: 1024px) {
- :root,
- :host {
- --pico-font-size: 118.75%;
- }
-}
-@media (min-width: 1280px) {
- :root,
- :host {
- --pico-font-size: 125%;
- }
-}
-@media (min-width: 1536px) {
- :root,
- :host {
- --pico-font-size: 131.25%;
- }
-}
-
-a {
- --pico-text-decoration: underline;
-}
-a.secondary, a.contrast {
- --pico-text-decoration: underline;
-}
-
-small {
- --pico-font-size: 0.875em;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- --pico-font-weight: 700;
-}
-
-h1 {
- --pico-font-size: 2rem;
- --pico-line-height: 1.125;
- --pico-typography-spacing-top: 3rem;
-}
-
-h2 {
- --pico-font-size: 1.75rem;
- --pico-line-height: 1.15;
- --pico-typography-spacing-top: 2.625rem;
-}
-
-h3 {
- --pico-font-size: 1.5rem;
- --pico-line-height: 1.175;
- --pico-typography-spacing-top: 2.25rem;
-}
-
-h4 {
- --pico-font-size: 1.25rem;
- --pico-line-height: 1.2;
- --pico-typography-spacing-top: 1.874rem;
-}
-
-h5 {
- --pico-font-size: 1.125rem;
- --pico-line-height: 1.225;
- --pico-typography-spacing-top: 1.6875rem;
-}
-
-h6 {
- --pico-font-size: 1rem;
- --pico-line-height: 1.25;
- --pico-typography-spacing-top: 1.5rem;
-}
-
-thead th,
-thead td,
-tfoot th,
-tfoot td {
- --pico-font-weight: 600;
- --pico-border-width: 0.1875rem;
-}
-
-pre,
-code,
-kbd,
-samp {
- --pico-font-family: var(--pico-font-family-monospace);
-}
-
-kbd {
- --pico-font-weight: bolder;
-}
-
-input:not([type=submit],
-[type=button],
-[type=reset],
-[type=checkbox],
-[type=radio],
-[type=file]),
-:where(select, textarea) {
- --pico-outline-width: 0.0625rem;
-}
-
-[type=search] {
- --pico-border-radius: 5rem;
-}
-
-[type=checkbox],
-[type=radio] {
- --pico-border-width: 0.125rem;
-}
-
-[type=checkbox][role=switch] {
- --pico-border-width: 0.1875rem;
-}
-
-details.dropdown summary:not([role=button]) {
- --pico-outline-width: 0.0625rem;
-}
-
-nav details.dropdown summary:focus-visible {
- --pico-outline-width: 0.125rem;
-}
-
-[role=search] {
- --pico-border-radius: 5rem;
-}
-
-[role=search]:has(button.secondary:focus,
-[type=submit].secondary:focus,
-[type=button].secondary:focus,
-[role=button].secondary:focus),
-[role=group]:has(button.secondary:focus,
-[type=submit].secondary:focus,
-[type=button].secondary:focus,
-[role=button].secondary:focus) {
- --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus);
-}
-[role=search]:has(button.contrast:focus,
-[type=submit].contrast:focus,
-[type=button].contrast:focus,
-[role=button].contrast:focus),
-[role=group]:has(button.contrast:focus,
-[type=submit].contrast:focus,
-[type=button].contrast:focus,
-[role=button].contrast:focus) {
- --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width) var(--pico-contrast-focus);
-}
-[role=search] button,
-[role=search] [type=submit],
-[role=search] [type=button],
-[role=search] [role=button],
-[role=group] button,
-[role=group] [type=submit],
-[role=group] [type=button],
-[role=group] [role=button] {
- --pico-form-element-spacing-horizontal: 2rem;
-}
-
-details summary[role=button]:not(.outline)::after {
- filter: brightness(0) invert(1);
-}
-
-[aria-busy=true]:not(input, select, textarea):is(button, [type=submit], [type=button], [type=reset], [role=button]):not(.outline)::before {
- filter: brightness(0) invert(1);
-}
-
-/**
- * Color schemes
- */
-[data-theme=light],
-:root:not([data-theme=dark]),
-:host(:not([data-theme=dark])) {
- color-scheme: light;
- --pico-background-color: #fff;
- --pico-color: #373c44;
- --pico-text-selection-color: rgba(2, 154, 232, 0.25);
- --pico-muted-color: #646b79;
- --pico-muted-border-color: rgb(231, 234, 239.5);
- --pico-primary: #0172ad;
- --pico-primary-background: #0172ad;
- --pico-primary-border: var(--pico-primary-background);
- --pico-primary-underline: rgba(1, 114, 173, 0.5);
- --pico-primary-hover: #015887;
- --pico-primary-hover-background: #02659a;
- --pico-primary-hover-border: var(--pico-primary-hover-background);
- --pico-primary-hover-underline: var(--pico-primary-hover);
- --pico-primary-focus: rgba(2, 154, 232, 0.5);
- --pico-primary-inverse: #fff;
- --pico-secondary: #5d6b89;
- --pico-secondary-background: #525f7a;
- --pico-secondary-border: var(--pico-secondary-background);
- --pico-secondary-underline: rgba(93, 107, 137, 0.5);
- --pico-secondary-hover: #48536b;
- --pico-secondary-hover-background: #48536b;
- --pico-secondary-hover-border: var(--pico-secondary-hover-background);
- --pico-secondary-hover-underline: var(--pico-secondary-hover);
- --pico-secondary-focus: rgba(93, 107, 137, 0.25);
- --pico-secondary-inverse: #fff;
- --pico-contrast: #181c25;
- --pico-contrast-background: #181c25;
- --pico-contrast-border: var(--pico-contrast-background);
- --pico-contrast-underline: rgba(24, 28, 37, 0.5);
- --pico-contrast-hover: #000;
- --pico-contrast-hover-background: #000;
- --pico-contrast-hover-border: var(--pico-contrast-hover-background);
- --pico-contrast-hover-underline: var(--pico-secondary-hover);
- --pico-contrast-focus: rgba(93, 107, 137, 0.25);
- --pico-contrast-inverse: #fff;
- --pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024), 0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03), 0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036), 0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302), 0.5rem 1rem 6rem rgba(129, 145, 181, 0.06), 0 0 0 0.0625rem rgba(129, 145, 181, 0.015);
- --pico-h1-color: #2d3138;
- --pico-h2-color: #373c44;
- --pico-h3-color: #424751;
- --pico-h4-color: #4d535e;
- --pico-h5-color: #5c6370;
- --pico-h6-color: #646b79;
- --pico-mark-background-color: rgb(252.5, 230.5, 191.5);
- --pico-mark-color: #0f1114;
- --pico-ins-color: rgb(28.5, 105.5, 84);
- --pico-del-color: rgb(136, 56.5, 53);
- --pico-blockquote-border-color: var(--pico-muted-border-color);
- --pico-blockquote-footer-color: var(--pico-muted-color);
- --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-table-border-color: var(--pico-muted-border-color);
- --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375);
- --pico-code-background-color: rgb(243, 244.5, 246.75);
- --pico-code-color: #646b79;
- --pico-code-kbd-background-color: var(--pico-color);
- --pico-code-kbd-color: var(--pico-background-color);
- --pico-form-element-background-color: rgb(251, 251.5, 252.25);
- --pico-form-element-selected-background-color: #dfe3eb;
- --pico-form-element-border-color: #cfd5e2;
- --pico-form-element-color: #23262c;
- --pico-form-element-placeholder-color: var(--pico-muted-color);
- --pico-form-element-active-background-color: #fff;
- --pico-form-element-active-border-color: var(--pico-primary-border);
- --pico-form-element-focus-color: var(--pico-primary-border);
- --pico-form-element-disabled-opacity: 0.5;
- --pico-form-element-invalid-border-color: rgb(183.5, 105.5, 106.5);
- --pico-form-element-invalid-active-border-color: rgb(200.25, 79.25, 72.25);
- --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color);
- --pico-form-element-valid-border-color: rgb(76, 154.5, 137.5);
- --pico-form-element-valid-active-border-color: rgb(39, 152.75, 118.75);
- --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color);
- --pico-switch-background-color: #bfc7d9;
- --pico-switch-checked-background-color: var(--pico-primary-background);
- --pico-switch-color: #fff;
- --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-range-border-color: #dfe3eb;
- --pico-range-active-border-color: #bfc7d9;
- --pico-range-thumb-border-color: var(--pico-background-color);
- --pico-range-thumb-color: var(--pico-secondary-background);
- --pico-range-thumb-active-color: var(--pico-primary-background);
- --pico-accordion-border-color: var(--pico-muted-border-color);
- --pico-accordion-active-summary-color: var(--pico-primary-hover);
- --pico-accordion-close-summary-color: var(--pico-color);
- --pico-accordion-open-summary-color: var(--pico-muted-color);
- --pico-card-background-color: var(--pico-background-color);
- --pico-card-border-color: var(--pico-muted-border-color);
- --pico-card-box-shadow: var(--pico-box-shadow);
- --pico-card-sectioning-background-color: rgb(251, 251.5, 252.25);
- --pico-dropdown-background-color: #fff;
- --pico-dropdown-border-color: #eff1f4;
- --pico-dropdown-box-shadow: var(--pico-box-shadow);
- --pico-dropdown-color: var(--pico-color);
- --pico-dropdown-hover-background-color: #eff1f4;
- --pico-loading-spinner-opacity: 0.5;
- --pico-modal-overlay-background-color: rgba(232, 234, 237, 0.75);
- --pico-progress-background-color: #dfe3eb;
- --pico-progress-color: var(--pico-primary-background);
- --pico-tooltip-background-color: var(--pico-contrast-background);
- --pico-tooltip-color: var(--pico-contrast-inverse);
- --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 154.5, 137.5)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
- --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200.25, 79.25, 72.25)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
-}
-[data-theme=light] input:is([type=submit],
-[type=button],
-[type=reset],
-[type=checkbox],
-[type=radio],
-[type=file]),
-:root:not([data-theme=dark]) input:is([type=submit],
-[type=button],
-[type=reset],
-[type=checkbox],
-[type=radio],
-[type=file]),
-:host(:not([data-theme=dark])) input:is([type=submit],
-[type=button],
-[type=reset],
-[type=checkbox],
-[type=radio],
-[type=file]) {
- --pico-form-element-focus-color: var(--pico-primary-focus);
-}
-
-@media only screen and (prefers-color-scheme: dark) {
- :root:not([data-theme]),
- :host(:not([data-theme])) {
- color-scheme: dark;
- --pico-background-color: rgb(19, 22.5, 30.5);
- --pico-color: #c2c7d0;
- --pico-text-selection-color: rgba(1, 170, 255, 0.1875);
- --pico-muted-color: #7b8495;
- --pico-muted-border-color: #202632;
- --pico-primary: #01aaff;
- --pico-primary-background: #0172ad;
- --pico-primary-border: var(--pico-primary-background);
- --pico-primary-underline: rgba(1, 170, 255, 0.5);
- --pico-primary-hover: #79c0ff;
- --pico-primary-hover-background: #017fc0;
- --pico-primary-hover-border: var(--pico-primary-hover-background);
- --pico-primary-hover-underline: var(--pico-primary-hover);
- --pico-primary-focus: rgba(1, 170, 255, 0.375);
- --pico-primary-inverse: #fff;
- --pico-secondary: #969eaf;
- --pico-secondary-background: #525f7a;
- --pico-secondary-border: var(--pico-secondary-background);
- --pico-secondary-underline: rgba(150, 158, 175, 0.5);
- --pico-secondary-hover: #b3b9c5;
- --pico-secondary-hover-background: #5d6b89;
- --pico-secondary-hover-border: var(--pico-secondary-hover-background);
- --pico-secondary-hover-underline: var(--pico-secondary-hover);
- --pico-secondary-focus: rgba(144, 158, 190, 0.25);
- --pico-secondary-inverse: #fff;
- --pico-contrast: #dfe3eb;
- --pico-contrast-background: #eff1f4;
- --pico-contrast-border: var(--pico-contrast-background);
- --pico-contrast-underline: rgba(223, 227, 235, 0.5);
- --pico-contrast-hover: #fff;
- --pico-contrast-hover-background: #fff;
- --pico-contrast-hover-border: var(--pico-contrast-hover-background);
- --pico-contrast-hover-underline: var(--pico-contrast-hover);
- --pico-contrast-focus: rgba(207, 213, 226, 0.25);
- --pico-contrast-inverse: #000;
- --pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06), 0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);
- --pico-h1-color: #f0f1f3;
- --pico-h2-color: #e0e3e7;
- --pico-h3-color: #c2c7d0;
- --pico-h4-color: #b3b9c5;
- --pico-h5-color: #a4acba;
- --pico-h6-color: #8891a4;
- --pico-mark-background-color: #014063;
- --pico-mark-color: #fff;
- --pico-ins-color: #62af9a;
- --pico-del-color: rgb(205.5, 126, 123);
- --pico-blockquote-border-color: var(--pico-muted-border-color);
- --pico-blockquote-footer-color: var(--pico-muted-color);
- --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-table-border-color: var(--pico-muted-border-color);
- --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375);
- --pico-code-background-color: rgb(26, 30.5, 40.25);
- --pico-code-color: #8891a4;
- --pico-code-kbd-background-color: var(--pico-color);
- --pico-code-kbd-color: var(--pico-background-color);
- --pico-form-element-background-color: rgb(28, 33, 43.5);
- --pico-form-element-selected-background-color: #2a3140;
- --pico-form-element-border-color: #2a3140;
- --pico-form-element-color: #e0e3e7;
- --pico-form-element-placeholder-color: #8891a4;
- --pico-form-element-active-background-color: rgb(26, 30.5, 40.25);
- --pico-form-element-active-border-color: var(--pico-primary-border);
- --pico-form-element-focus-color: var(--pico-primary-border);
- --pico-form-element-disabled-opacity: 0.5;
- --pico-form-element-invalid-border-color: rgb(149.5, 74, 80);
- --pico-form-element-invalid-active-border-color: rgb(183.25, 63.5, 59);
- --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color);
- --pico-form-element-valid-border-color: #2a7b6f;
- --pico-form-element-valid-active-border-color: rgb(22, 137, 105.5);
- --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color);
- --pico-switch-background-color: #333c4e;
- --pico-switch-checked-background-color: var(--pico-primary-background);
- --pico-switch-color: #fff;
- --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-range-border-color: #202632;
- --pico-range-active-border-color: #2a3140;
- --pico-range-thumb-border-color: var(--pico-background-color);
- --pico-range-thumb-color: var(--pico-secondary-background);
- --pico-range-thumb-active-color: var(--pico-primary-background);
- --pico-accordion-border-color: var(--pico-muted-border-color);
- --pico-accordion-active-summary-color: var(--pico-primary-hover);
- --pico-accordion-close-summary-color: var(--pico-color);
- --pico-accordion-open-summary-color: var(--pico-muted-color);
- --pico-card-background-color: #181c25;
- --pico-card-border-color: var(--pico-card-background-color);
- --pico-card-box-shadow: var(--pico-box-shadow);
- --pico-card-sectioning-background-color: rgb(26, 30.5, 40.25);
- --pico-dropdown-background-color: #181c25;
- --pico-dropdown-border-color: #202632;
- --pico-dropdown-box-shadow: var(--pico-box-shadow);
- --pico-dropdown-color: var(--pico-color);
- --pico-dropdown-hover-background-color: #202632;
- --pico-loading-spinner-opacity: 0.5;
- --pico-modal-overlay-background-color: rgba(7.5, 8.5, 10, 0.75);
- --pico-progress-background-color: #202632;
- --pico-progress-color: var(--pico-primary-background);
- --pico-tooltip-background-color: var(--pico-contrast-background);
- --pico-tooltip-color: var(--pico-contrast-inverse);
- --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
- --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(149.5, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
- }
- :root:not([data-theme]) input:is([type=submit],
- [type=button],
- [type=reset],
- [type=checkbox],
- [type=radio],
- [type=file]),
- :host(:not([data-theme])) input:is([type=submit],
- [type=button],
- [type=reset],
- [type=checkbox],
- [type=radio],
- [type=file]) {
- --pico-form-element-focus-color: var(--pico-primary-focus);
- }
- :root:not([data-theme]) details summary[role=button].contrast:not(.outline)::after,
- :host(:not([data-theme])) details summary[role=button].contrast:not(.outline)::after {
- filter: brightness(0);
- }
- :root:not([data-theme]) [aria-busy=true]:not(input, select, textarea).contrast:is(button,
- [type=submit],
- [type=button],
- [type=reset],
- [role=button]):not(.outline)::before,
- :host(:not([data-theme])) [aria-busy=true]:not(input, select, textarea).contrast:is(button,
- [type=submit],
- [type=button],
- [type=reset],
- [role=button]):not(.outline)::before {
- filter: brightness(0);
- }
-}
-[data-theme=dark] {
- color-scheme: dark;
- --pico-background-color: rgb(19, 22.5, 30.5);
- --pico-color: #c2c7d0;
- --pico-text-selection-color: rgba(1, 170, 255, 0.1875);
- --pico-muted-color: #7b8495;
- --pico-muted-border-color: #202632;
- --pico-primary: #01aaff;
- --pico-primary-background: #0172ad;
- --pico-primary-border: var(--pico-primary-background);
- --pico-primary-underline: rgba(1, 170, 255, 0.5);
- --pico-primary-hover: #79c0ff;
- --pico-primary-hover-background: #017fc0;
- --pico-primary-hover-border: var(--pico-primary-hover-background);
- --pico-primary-hover-underline: var(--pico-primary-hover);
- --pico-primary-focus: rgba(1, 170, 255, 0.375);
- --pico-primary-inverse: #fff;
- --pico-secondary: #969eaf;
- --pico-secondary-background: #525f7a;
- --pico-secondary-border: var(--pico-secondary-background);
- --pico-secondary-underline: rgba(150, 158, 175, 0.5);
- --pico-secondary-hover: #b3b9c5;
- --pico-secondary-hover-background: #5d6b89;
- --pico-secondary-hover-border: var(--pico-secondary-hover-background);
- --pico-secondary-hover-underline: var(--pico-secondary-hover);
- --pico-secondary-focus: rgba(144, 158, 190, 0.25);
- --pico-secondary-inverse: #fff;
- --pico-contrast: #dfe3eb;
- --pico-contrast-background: #eff1f4;
- --pico-contrast-border: var(--pico-contrast-background);
- --pico-contrast-underline: rgba(223, 227, 235, 0.5);
- --pico-contrast-hover: #fff;
- --pico-contrast-hover-background: #fff;
- --pico-contrast-hover-border: var(--pico-contrast-hover-background);
- --pico-contrast-hover-underline: var(--pico-contrast-hover);
- --pico-contrast-focus: rgba(207, 213, 226, 0.25);
- --pico-contrast-inverse: #000;
- --pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06), 0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);
- --pico-h1-color: #f0f1f3;
- --pico-h2-color: #e0e3e7;
- --pico-h3-color: #c2c7d0;
- --pico-h4-color: #b3b9c5;
- --pico-h5-color: #a4acba;
- --pico-h6-color: #8891a4;
- --pico-mark-background-color: #014063;
- --pico-mark-color: #fff;
- --pico-ins-color: #62af9a;
- --pico-del-color: rgb(205.5, 126, 123);
- --pico-blockquote-border-color: var(--pico-muted-border-color);
- --pico-blockquote-footer-color: var(--pico-muted-color);
- --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-table-border-color: var(--pico-muted-border-color);
- --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375);
- --pico-code-background-color: rgb(26, 30.5, 40.25);
- --pico-code-color: #8891a4;
- --pico-code-kbd-background-color: var(--pico-color);
- --pico-code-kbd-color: var(--pico-background-color);
- --pico-form-element-background-color: rgb(28, 33, 43.5);
- --pico-form-element-selected-background-color: #2a3140;
- --pico-form-element-border-color: #2a3140;
- --pico-form-element-color: #e0e3e7;
- --pico-form-element-placeholder-color: #8891a4;
- --pico-form-element-active-background-color: rgb(26, 30.5, 40.25);
- --pico-form-element-active-border-color: var(--pico-primary-border);
- --pico-form-element-focus-color: var(--pico-primary-border);
- --pico-form-element-disabled-opacity: 0.5;
- --pico-form-element-invalid-border-color: rgb(149.5, 74, 80);
- --pico-form-element-invalid-active-border-color: rgb(183.25, 63.5, 59);
- --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color);
- --pico-form-element-valid-border-color: #2a7b6f;
- --pico-form-element-valid-active-border-color: rgb(22, 137, 105.5);
- --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color);
- --pico-switch-background-color: #333c4e;
- --pico-switch-checked-background-color: var(--pico-primary-background);
- --pico-switch-color: #fff;
- --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
- --pico-range-border-color: #202632;
- --pico-range-active-border-color: #2a3140;
- --pico-range-thumb-border-color: var(--pico-background-color);
- --pico-range-thumb-color: var(--pico-secondary-background);
- --pico-range-thumb-active-color: var(--pico-primary-background);
- --pico-accordion-border-color: var(--pico-muted-border-color);
- --pico-accordion-active-summary-color: var(--pico-primary-hover);
- --pico-accordion-close-summary-color: var(--pico-color);
- --pico-accordion-open-summary-color: var(--pico-muted-color);
- --pico-card-background-color: #181c25;
- --pico-card-border-color: var(--pico-card-background-color);
- --pico-card-box-shadow: var(--pico-box-shadow);
- --pico-card-sectioning-background-color: rgb(26, 30.5, 40.25);
- --pico-dropdown-background-color: #181c25;
- --pico-dropdown-border-color: #202632;
- --pico-dropdown-box-shadow: var(--pico-box-shadow);
- --pico-dropdown-color: var(--pico-color);
- --pico-dropdown-hover-background-color: #202632;
- --pico-loading-spinner-opacity: 0.5;
- --pico-modal-overlay-background-color: rgba(7.5, 8.5, 10, 0.75);
- --pico-progress-background-color: #202632;
- --pico-progress-color: var(--pico-primary-background);
- --pico-tooltip-background-color: var(--pico-contrast-background);
- --pico-tooltip-color: var(--pico-contrast-inverse);
- --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
- --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(149.5, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
-}
-[data-theme=dark] input:is([type=submit],
-[type=button],
-[type=reset],
-[type=checkbox],
-[type=radio],
-[type=file]) {
- --pico-form-element-focus-color: var(--pico-primary-focus);
-}
-[data-theme=dark] details summary[role=button].contrast:not(.outline)::after {
- filter: brightness(0);
-}
-[data-theme=dark] [aria-busy=true]:not(input, select, textarea).contrast:is(button,
-[type=submit],
-[type=button],
-[type=reset],
-[role=button]):not(.outline)::before {
- filter: brightness(0);
-}
-
-progress,
-[type=checkbox],
-[type=radio],
-[type=range] {
- accent-color: var(--pico-primary);
-}
-
-/**
- * Document
- * Content-box & Responsive typography
- */
-*,
-*::before,
-*::after {
- box-sizing: border-box;
- background-repeat: no-repeat;
-}
-
-::before,
-::after {
- text-decoration: inherit;
- vertical-align: inherit;
-}
-
-:where(:root),
-:where(:host) {
- -webkit-tap-highlight-color: transparent;
- -webkit-text-size-adjust: 100%;
- -moz-text-size-adjust: 100%;
- text-size-adjust: 100%;
- background-color: var(--pico-background-color);
- color: var(--pico-color);
- font-weight: var(--pico-font-weight);
- font-size: var(--pico-font-size);
- line-height: var(--pico-line-height);
- font-family: var(--pico-font-family);
- text-underline-offset: var(--pico-text-underline-offset);
- text-rendering: optimizeLegibility;
- overflow-wrap: break-word;
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
-}
-
-/**
- * Landmarks
- */
-body {
- width: 100%;
- margin: 0;
-}
-
-main {
- display: block;
-}
-
-body > header,
-body > main,
-body > footer {
- padding-block: var(--pico-block-spacing-vertical);
-}
-
-/**
- * Section
- */
-section {
- margin-bottom: var(--pico-block-spacing-vertical);
-}
-
-/**
- * Container
- */
-.container,
-.container-fluid {
- width: 100%;
- margin-right: auto;
- margin-left: auto;
- padding-right: var(--pico-spacing);
- padding-left: var(--pico-spacing);
-}
-
-@media (min-width: 576px) {
- .container {
- max-width: 510px;
- padding-right: 0;
- padding-left: 0;
- }
-}
-@media (min-width: 768px) {
- .container {
- max-width: 700px;
- }
-}
-@media (min-width: 1024px) {
- .container {
- max-width: 950px;
- }
-}
-@media (min-width: 1280px) {
- .container {
- max-width: 1200px;
- }
-}
-@media (min-width: 1536px) {
- .container {
- max-width: 1450px;
- }
-}
-
-/**
- * Grid
- * Minimal grid system with auto-layout columns
- */
-.grid {
- grid-column-gap: var(--pico-grid-column-gap);
- grid-row-gap: var(--pico-grid-row-gap);
- display: grid;
- grid-template-columns: 1fr;
-}
-@media (min-width: 768px) {
- .grid {
- grid-template-columns: repeat(auto-fit, minmax(0%, 1fr));
- }
-}
-.grid > * {
- min-width: 0;
-}
-
-/**
- * Overflow auto
- */
-.overflow-auto {
- overflow: auto;
-}
-
-/**
- * Typography
- */
-b,
-strong {
- font-weight: bolder;
-}
-
-sub,
-sup {
- position: relative;
- font-size: 0.75em;
- line-height: 0;
- vertical-align: baseline;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-sup {
- top: -0.5em;
-}
-
-address,
-blockquote,
-dl,
-ol,
-p,
-pre,
-table,
-ul {
- margin-top: 0;
- margin-bottom: var(--pico-typography-spacing-vertical);
- color: var(--pico-color);
- font-style: normal;
- font-weight: var(--pico-font-weight);
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- margin-top: 0;
- margin-bottom: var(--pico-typography-spacing-vertical);
- color: var(--pico-color);
- font-weight: var(--pico-font-weight);
- font-size: var(--pico-font-size);
- line-height: var(--pico-line-height);
- font-family: var(--pico-font-family);
-}
-
-h1 {
- --pico-color: var(--pico-h1-color);
-}
-
-h2 {
- --pico-color: var(--pico-h2-color);
-}
-
-h3 {
- --pico-color: var(--pico-h3-color);
-}
-
-h4 {
- --pico-color: var(--pico-h4-color);
-}
-
-h5 {
- --pico-color: var(--pico-h5-color);
-}
-
-h6 {
- --pico-color: var(--pico-h6-color);
-}
-
-:where(article, address, blockquote, dl, figure, form, ol, p, pre, table, ul) ~ :is(h1, h2, h3, h4, h5, h6) {
- margin-top: var(--pico-typography-spacing-top);
-}
-
-p {
- margin-bottom: var(--pico-typography-spacing-vertical);
-}
-
-hgroup {
- margin-bottom: var(--pico-typography-spacing-vertical);
-}
-hgroup > * {
- margin-top: 0;
- margin-bottom: 0;
-}
-hgroup > *:not(:first-child):last-child {
- --pico-color: var(--pico-muted-color);
- --pico-font-weight: unset;
- font-size: 1rem;
-}
-
-:where(ol, ul) li {
- margin-bottom: calc(var(--pico-typography-spacing-vertical) * 0.25);
-}
-
-:where(dl, ol, ul) :where(dl, ol, ul) {
- margin: 0;
- margin-top: calc(var(--pico-typography-spacing-vertical) * 0.25);
-}
-
-ul li {
- list-style: square;
-}
-
-mark {
- padding: 0.125rem 0.25rem;
- background-color: var(--pico-mark-background-color);
- color: var(--pico-mark-color);
- vertical-align: baseline;
-}
-
-blockquote {
- display: block;
- margin: var(--pico-typography-spacing-vertical) 0;
- padding: var(--pico-spacing);
- border-right: none;
- border-left: 0.25rem solid var(--pico-blockquote-border-color);
- border-inline-start: 0.25rem solid var(--pico-blockquote-border-color);
- border-inline-end: none;
-}
-blockquote footer {
- margin-top: calc(var(--pico-typography-spacing-vertical) * 0.5);
- color: var(--pico-blockquote-footer-color);
-}
-
-abbr[title] {
- border-bottom: 1px dotted;
- text-decoration: none;
- cursor: help;
-}
-
-ins {
- color: var(--pico-ins-color);
- text-decoration: none;
-}
-
-del {
- color: var(--pico-del-color);
-}
-
-::-moz-selection {
- background-color: var(--pico-text-selection-color);
-}
-
-::selection {
- background-color: var(--pico-text-selection-color);
-}
-
-/**
- * Link
- */
-:where(a:not([role=button])),
-[role=link] {
- --pico-color: var(--pico-primary);
- --pico-background-color: transparent;
- --pico-underline: var(--pico-primary-underline);
- outline: none;
- background-color: var(--pico-background-color);
- color: var(--pico-color);
- -webkit-text-decoration: var(--pico-text-decoration);
- text-decoration: var(--pico-text-decoration);
- text-decoration-color: var(--pico-underline);
- text-underline-offset: 0.125em;
- transition: background-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
- transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition);
- transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
-}
-:where(a:not([role=button])):is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[role=link]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-color: var(--pico-primary-hover);
- --pico-underline: var(--pico-primary-hover-underline);
- --pico-text-decoration: underline;
-}
-:where(a:not([role=button])):focus-visible,
-[role=link]:focus-visible {
- box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
-}
-:where(a:not([role=button])).secondary,
-[role=link].secondary {
- --pico-color: var(--pico-secondary);
- --pico-underline: var(--pico-secondary-underline);
-}
-:where(a:not([role=button])).secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[role=link].secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-color: var(--pico-secondary-hover);
- --pico-underline: var(--pico-secondary-hover-underline);
-}
-:where(a:not([role=button])).contrast,
-[role=link].contrast {
- --pico-color: var(--pico-contrast);
- --pico-underline: var(--pico-contrast-underline);
-}
-:where(a:not([role=button])).contrast:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[role=link].contrast:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-color: var(--pico-contrast-hover);
- --pico-underline: var(--pico-contrast-hover-underline);
-}
-
-a[role=button] {
- display: inline-block;
-}
-
-/**
- * Button
- */
-button {
- margin: 0;
- overflow: visible;
- font-family: inherit;
- text-transform: none;
-}
-
-button,
-[type=submit],
-[type=reset],
-[type=button] {
- -webkit-appearance: button;
-}
-
-button,
-[type=submit],
-[type=reset],
-[type=button],
-[type=file]::file-selector-button,
-[role=button] {
- --pico-background-color: var(--pico-primary-background);
- --pico-border-color: var(--pico-primary-border);
- --pico-color: var(--pico-primary-inverse);
- --pico-box-shadow: var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
- padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
- border: var(--pico-border-width) solid var(--pico-border-color);
- border-radius: var(--pico-border-radius);
- outline: none;
- background-color: var(--pico-background-color);
- box-shadow: var(--pico-box-shadow);
- color: var(--pico-color);
- font-weight: var(--pico-font-weight);
- font-size: 1rem;
- line-height: var(--pico-line-height);
- text-align: center;
- text-decoration: none;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- user-select: none;
- transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition);
-}
-button:is([aria-current]:not([aria-current=false])), button:is(:hover, :active, :focus),
-[type=submit]:is([aria-current]:not([aria-current=false])),
-[type=submit]:is(:hover, :active, :focus),
-[type=reset]:is([aria-current]:not([aria-current=false])),
-[type=reset]:is(:hover, :active, :focus),
-[type=button]:is([aria-current]:not([aria-current=false])),
-[type=button]:is(:hover, :active, :focus),
-[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])),
-[type=file]::file-selector-button:is(:hover, :active, :focus),
-[role=button]:is([aria-current]:not([aria-current=false])),
-[role=button]:is(:hover, :active, :focus) {
- --pico-background-color: var(--pico-primary-hover-background);
- --pico-border-color: var(--pico-primary-hover-border);
- --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
- --pico-color: var(--pico-primary-inverse);
-}
-button:focus, button:is([aria-current]:not([aria-current=false])):focus,
-[type=submit]:focus,
-[type=submit]:is([aria-current]:not([aria-current=false])):focus,
-[type=reset]:focus,
-[type=reset]:is([aria-current]:not([aria-current=false])):focus,
-[type=button]:focus,
-[type=button]:is([aria-current]:not([aria-current=false])):focus,
-[type=file]::file-selector-button:focus,
-[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,
-[role=button]:focus,
-[role=button]:is([aria-current]:not([aria-current=false])):focus {
- --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
-}
-
-[type=submit],
-[type=reset],
-[type=button] {
- margin-bottom: var(--pico-spacing);
-}
-
-:is(button, [type=submit], [type=button], [role=button]).secondary,
-[type=reset],
-[type=file]::file-selector-button {
- --pico-background-color: var(--pico-secondary-background);
- --pico-border-color: var(--pico-secondary-border);
- --pico-color: var(--pico-secondary-inverse);
- cursor: pointer;
-}
-:is(button, [type=submit], [type=button], [role=button]).secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-background-color: var(--pico-secondary-hover-background);
- --pico-border-color: var(--pico-secondary-hover-border);
- --pico-color: var(--pico-secondary-inverse);
-}
-:is(button, [type=submit], [type=button], [role=button]).secondary:focus, :is(button, [type=submit], [type=button], [role=button]).secondary:is([aria-current]:not([aria-current=false])):focus,
-[type=reset]:focus,
-[type=reset]:is([aria-current]:not([aria-current=false])):focus,
-[type=file]::file-selector-button:focus,
-[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus {
- --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus);
-}
-
-:is(button, [type=submit], [type=button], [role=button]).contrast {
- --pico-background-color: var(--pico-contrast-background);
- --pico-border-color: var(--pico-contrast-border);
- --pico-color: var(--pico-contrast-inverse);
-}
-:is(button, [type=submit], [type=button], [role=button]).contrast:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-background-color: var(--pico-contrast-hover-background);
- --pico-border-color: var(--pico-contrast-hover-border);
- --pico-color: var(--pico-contrast-inverse);
-}
-:is(button, [type=submit], [type=button], [role=button]).contrast:focus, :is(button, [type=submit], [type=button], [role=button]).contrast:is([aria-current]:not([aria-current=false])):focus {
- --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-contrast-focus);
-}
-
-:is(button, [type=submit], [type=button], [role=button]).outline,
-[type=reset].outline {
- --pico-background-color: transparent;
- --pico-color: var(--pico-primary);
- --pico-border-color: var(--pico-primary);
-}
-:is(button, [type=submit], [type=button], [role=button]).outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-background-color: transparent;
- --pico-color: var(--pico-primary-hover);
- --pico-border-color: var(--pico-primary-hover);
-}
-
-:is(button, [type=submit], [type=button], [role=button]).outline.secondary,
-[type=reset].outline {
- --pico-color: var(--pico-secondary);
- --pico-border-color: var(--pico-secondary);
-}
-:is(button, [type=submit], [type=button], [role=button]).outline.secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
-[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-color: var(--pico-secondary-hover);
- --pico-border-color: var(--pico-secondary-hover);
-}
-
-:is(button, [type=submit], [type=button], [role=button]).outline.contrast {
- --pico-color: var(--pico-contrast);
- --pico-border-color: var(--pico-contrast);
-}
-:is(button, [type=submit], [type=button], [role=button]).outline.contrast:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- --pico-color: var(--pico-contrast-hover);
- --pico-border-color: var(--pico-contrast-hover);
-}
-
-:where(button, [type=submit], [type=reset], [type=button], [role=button])[disabled],
-:where(fieldset[disabled]) :is(button, [type=submit], [type=button], [type=reset], [role=button]) {
- opacity: 0.5;
- pointer-events: none;
-}
-
-/**
- * Table
- */
-:where(table) {
- width: 100%;
- border-collapse: collapse;
- border-spacing: 0;
- text-indent: 0;
-}
-
-th,
-td {
- padding: calc(var(--pico-spacing) / 2) var(--pico-spacing);
- border-bottom: var(--pico-border-width) solid var(--pico-table-border-color);
- background-color: var(--pico-background-color);
- color: var(--pico-color);
- font-weight: var(--pico-font-weight);
- text-align: left;
- text-align: start;
-}
-
-tfoot th,
-tfoot td {
- border-top: var(--pico-border-width) solid var(--pico-table-border-color);
- border-bottom: 0;
-}
-
-table.striped tbody tr:nth-child(odd) th,
-table.striped tbody tr:nth-child(odd) td {
- background-color: var(--pico-table-row-stripped-background-color);
-}
-
-/**
- * Embedded content
- */
-:where(audio, canvas, iframe, img, svg, video) {
- vertical-align: middle;
-}
-
-audio,
-video {
- display: inline-block;
-}
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-:where(iframe) {
- border-style: none;
-}
-
-img {
- max-width: 100%;
- height: auto;
- border-style: none;
-}
-
-:where(svg:not([fill])) {
- fill: currentColor;
-}
-
-svg:not(:root),
-svg:not(:host) {
- overflow: hidden;
-}
-
-/**
- * Code
- */
-pre,
-code,
-kbd,
-samp {
- font-size: 0.875em;
- font-family: var(--pico-font-family);
-}
-
-pre code,
-pre samp {
- font-size: inherit;
- font-family: inherit;
-}
-
-pre {
- -ms-overflow-style: scrollbar;
- overflow: auto;
-}
-
-pre,
-code,
-kbd,
-samp {
- border-radius: var(--pico-border-radius);
- background: var(--pico-code-background-color);
- color: var(--pico-code-color);
- font-weight: var(--pico-font-weight);
- line-height: initial;
-}
-
-code,
-kbd,
-samp {
- display: inline-block;
- padding: 0.375rem;
-}
-
-pre {
- display: block;
- margin-bottom: var(--pico-spacing);
- overflow-x: auto;
-}
-pre > code,
-pre > samp {
- display: block;
- padding: var(--pico-spacing);
- background: none;
- line-height: var(--pico-line-height);
-}
-
-kbd {
- background-color: var(--pico-code-kbd-background-color);
- color: var(--pico-code-kbd-color);
- vertical-align: baseline;
-}
-
-/**
- * Figure
- */
-figure {
- display: block;
- margin: 0;
- padding: 0;
-}
-figure figcaption {
- padding: calc(var(--pico-spacing) * 0.5) 0;
- color: var(--pico-muted-color);
-}
-
-/**
- * Misc
- */
-hr {
- height: 0;
- margin: var(--pico-typography-spacing-vertical) 0;
- border: 0;
- border-top: 1px solid var(--pico-muted-border-color);
- color: inherit;
-}
-
-[hidden],
-template {
- display: none !important;
-}
-
-canvas {
- display: inline-block;
-}
-
-/**
- * Basics form elements
- */
-input,
-optgroup,
-select,
-textarea {
- margin: 0;
- font-size: 1rem;
- line-height: var(--pico-line-height);
- font-family: inherit;
- letter-spacing: inherit;
-}
-
-input {
- overflow: visible;
-}
-
-select {
- text-transform: none;
-}
-
-legend {
- max-width: 100%;
- padding: 0;
- color: inherit;
- white-space: normal;
-}
-
-textarea {
- overflow: auto;
-}
-
-[type=checkbox],
-[type=radio] {
- padding: 0;
-}
-
-::-webkit-inner-spin-button,
-::-webkit-outer-spin-button {
- height: auto;
-}
-
-[type=search] {
- -webkit-appearance: textfield;
- outline-offset: -2px;
-}
-
-[type=search]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-::-webkit-file-upload-button {
- -webkit-appearance: button;
- font: inherit;
-}
-
-::-moz-focus-inner {
- padding: 0;
- border-style: none;
-}
-
-:-moz-focusring {
- outline: none;
-}
-
-:-moz-ui-invalid {
- box-shadow: none;
-}
-
-::-ms-expand {
- display: none;
-}
-
-[type=file],
-[type=range] {
- padding: 0;
- border-width: 0;
-}
-
-input:not([type=checkbox], [type=radio], [type=range]) {
- height: calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);
-}
-
-fieldset {
- width: 100%;
- margin: 0;
- margin-bottom: var(--pico-spacing);
- padding: 0;
- border: 0;
-}
-
-label,
-fieldset legend {
- display: block;
- margin-bottom: calc(var(--pico-spacing) * 0.375);
- color: var(--pico-color);
- font-weight: var(--pico-form-label-font-weight, var(--pico-font-weight));
-}
-
-fieldset legend {
- margin-bottom: calc(var(--pico-spacing) * 0.5);
-}
-
-input:not([type=checkbox], [type=radio]),
-button[type=submit],
-select,
-textarea {
- width: 100%;
-}
-
-input:not([type=checkbox], [type=radio], [type=range], [type=file]),
-select,
-textarea {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
-}
-
-input,
-select,
-textarea {
- --pico-background-color: var(--pico-form-element-background-color);
- --pico-border-color: var(--pico-form-element-border-color);
- --pico-color: var(--pico-form-element-color);
- --pico-box-shadow: none;
- border: var(--pico-border-width) solid var(--pico-border-color);
- border-radius: var(--pico-border-radius);
- outline: none;
- background-color: var(--pico-background-color);
- box-shadow: var(--pico-box-shadow);
- color: var(--pico-color);
- font-weight: var(--pico-font-weight);
- transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition);
-}
-
-input:not([type=submit],
-[type=button],
-[type=reset],
-[type=checkbox],
-[type=radio],
-[readonly]):is(:active, :focus),
-:where(select, textarea):not([readonly]):is(:active, :focus) {
- --pico-background-color: var(--pico-form-element-active-background-color);
-}
-
-input:not([type=submit], [type=button], [type=reset], [role=switch], [readonly]):is(:active, :focus),
-:where(select, textarea):not([readonly]):is(:active, :focus) {
- --pico-border-color: var(--pico-form-element-active-border-color);
-}
-
-input:not([type=submit],
-[type=button],
-[type=reset],
-[type=range],
-[type=file],
-[readonly]):focus,
-:where(select, textarea):not([readonly]):focus {
- --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color);
-}
-
-input:not([type=submit], [type=button], [type=reset])[disabled],
-select[disabled],
-textarea[disabled],
-label[aria-disabled=true],
-:where(fieldset[disabled]) :is(input:not([type=submit], [type=button], [type=reset]), select, textarea) {
- opacity: var(--pico-form-element-disabled-opacity);
- pointer-events: none;
-}
-
-label[aria-disabled=true] input[disabled] {
- opacity: 1;
-}
-
-:where(input, select, textarea):not([type=checkbox],
-[type=radio],
-[type=date],
-[type=datetime-local],
-[type=month],
-[type=time],
-[type=week],
-[type=range])[aria-invalid] {
- padding-right: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem) !important;
- padding-left: var(--pico-form-element-spacing-horizontal);
- padding-inline-start: var(--pico-form-element-spacing-horizontal) !important;
- padding-inline-end: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem) !important;
- background-position: center right 0.75rem;
- background-size: 1rem auto;
- background-repeat: no-repeat;
-}
-:where(input, select, textarea):not([type=checkbox],
-[type=radio],
-[type=date],
-[type=datetime-local],
-[type=month],
-[type=time],
-[type=week],
-[type=range])[aria-invalid=false]:not(select) {
- background-image: var(--pico-icon-valid);
-}
-:where(input, select, textarea):not([type=checkbox],
-[type=radio],
-[type=date],
-[type=datetime-local],
-[type=month],
-[type=time],
-[type=week],
-[type=range])[aria-invalid=true]:not(select) {
- background-image: var(--pico-icon-invalid);
-}
-:where(input, select, textarea)[aria-invalid=false] {
- --pico-border-color: var(--pico-form-element-valid-border-color);
-}
-:where(input, select, textarea)[aria-invalid=false]:is(:active, :focus) {
- --pico-border-color: var(--pico-form-element-valid-active-border-color) !important;
-}
-:where(input, select, textarea)[aria-invalid=false]:is(:active, :focus):not([type=checkbox], [type=radio]) {
- --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color) !important;
-}
-:where(input, select, textarea)[aria-invalid=true] {
- --pico-border-color: var(--pico-form-element-invalid-border-color);
-}
-:where(input, select, textarea)[aria-invalid=true]:is(:active, :focus) {
- --pico-border-color: var(--pico-form-element-invalid-active-border-color) !important;
-}
-:where(input, select, textarea)[aria-invalid=true]:is(:active, :focus):not([type=checkbox], [type=radio]) {
- --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color) !important;
-}
-
-[dir=rtl] :where(input, select, textarea):not([type=checkbox], [type=radio]):is([aria-invalid], [aria-invalid=true], [aria-invalid=false]) {
- background-position: center left 0.75rem;
-}
-
-input::placeholder,
-input::-webkit-input-placeholder,
-textarea::placeholder,
-textarea::-webkit-input-placeholder,
-select:invalid {
- color: var(--pico-form-element-placeholder-color);
- opacity: 1;
-}
-
-input:not([type=checkbox], [type=radio]),
-select,
-textarea {
- margin-bottom: var(--pico-spacing);
-}
-
-select::-ms-expand {
- border: 0;
- background-color: transparent;
-}
-select:not([multiple], [size]) {
- padding-right: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);
- padding-left: var(--pico-form-element-spacing-horizontal);
- padding-inline-start: var(--pico-form-element-spacing-horizontal);
- padding-inline-end: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);
- background-image: var(--pico-icon-chevron);
- background-position: center right 0.75rem;
- background-size: 1rem auto;
- background-repeat: no-repeat;
-}
-select[multiple] option:checked {
- background: var(--pico-form-element-selected-background-color);
- color: var(--pico-form-element-color);
-}
-
-[dir=rtl] select:not([multiple], [size]) {
- background-position: center left 0.75rem;
-}
-
-textarea {
- display: block;
- resize: vertical;
-}
-textarea[aria-invalid] {
- --pico-icon-height: calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);
- background-position: top right 0.75rem !important;
- background-size: 1rem var(--pico-icon-height) !important;
-}
-
-:where(input, select, textarea, fieldset, .grid) + small {
- display: block;
- width: 100%;
- margin-top: calc(var(--pico-spacing) * -0.75);
- margin-bottom: var(--pico-spacing);
- color: var(--pico-muted-color);
-}
-:where(input, select, textarea, fieldset, .grid)[aria-invalid=false] + small {
- color: var(--pico-ins-color);
-}
-:where(input, select, textarea, fieldset, .grid)[aria-invalid=true] + small {
- color: var(--pico-del-color);
-}
-
-label > :where(input, select, textarea) {
- margin-top: calc(var(--pico-spacing) * 0.25);
-}
-
-/**
- * Checkboxes, Radios and Switches
- */
-label:has([type=checkbox], [type=radio]) {
- width: -moz-fit-content;
- width: fit-content;
- cursor: pointer;
-}
-
-[type=checkbox],
-[type=radio] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- width: 1.25em;
- height: 1.25em;
- margin-top: -0.125em;
- margin-inline-end: 0.5em;
- border-width: var(--pico-border-width);
- vertical-align: middle;
- cursor: pointer;
-}
-[type=checkbox]::-ms-check,
-[type=radio]::-ms-check {
- display: none;
-}
-[type=checkbox]:checked, [type=checkbox]:checked:active, [type=checkbox]:checked:focus,
-[type=radio]:checked,
-[type=radio]:checked:active,
-[type=radio]:checked:focus {
- --pico-background-color: var(--pico-primary-background);
- --pico-border-color: var(--pico-primary-border);
- background-image: var(--pico-icon-checkbox);
- background-position: center;
- background-size: 0.75em auto;
- background-repeat: no-repeat;
-}
-[type=checkbox] ~ label,
-[type=radio] ~ label {
- display: inline-block;
- margin-bottom: 0;
- cursor: pointer;
-}
-[type=checkbox] ~ label:not(:last-of-type),
-[type=radio] ~ label:not(:last-of-type) {
- margin-inline-end: 1em;
-}
-
-[type=checkbox]:indeterminate {
- --pico-background-color: var(--pico-primary-background);
- --pico-border-color: var(--pico-primary-border);
- background-image: var(--pico-icon-minus);
- background-position: center;
- background-size: 0.75em auto;
- background-repeat: no-repeat;
-}
-
-[type=radio] {
- border-radius: 50%;
-}
-[type=radio]:checked, [type=radio]:checked:active, [type=radio]:checked:focus {
- --pico-background-color: var(--pico-primary-inverse);
- border-width: 0.35em;
- background-image: none;
-}
-
-[type=checkbox][role=switch] {
- --pico-background-color: var(--pico-switch-background-color);
- --pico-color: var(--pico-switch-color);
- width: 2.25em;
- height: 1.25em;
- border: var(--pico-border-width) solid var(--pico-border-color);
- border-radius: 1.25em;
- background-color: var(--pico-background-color);
- line-height: 1.25em;
-}
-[type=checkbox][role=switch]:not([aria-invalid]) {
- --pico-border-color: var(--pico-switch-background-color);
-}
-[type=checkbox][role=switch]:before {
- display: block;
- aspect-ratio: 1;
- height: 100%;
- border-radius: 50%;
- background-color: var(--pico-color);
- box-shadow: var(--pico-switch-thumb-box-shadow);
- content: "";
- transition: margin 0.1s ease-in-out;
-}
-[type=checkbox][role=switch]:focus {
- --pico-background-color: var(--pico-switch-background-color);
- --pico-border-color: var(--pico-switch-background-color);
-}
-[type=checkbox][role=switch]:checked {
- --pico-background-color: var(--pico-switch-checked-background-color);
- --pico-border-color: var(--pico-switch-checked-background-color);
- background-image: none;
-}
-[type=checkbox][role=switch]:checked::before {
- margin-inline-start: calc(2.25em - 1.25em);
-}
-[type=checkbox][role=switch][disabled] {
- --pico-background-color: var(--pico-border-color);
-}
-
-[type=checkbox][aria-invalid=false]:checked, [type=checkbox][aria-invalid=false]:checked:active, [type=checkbox][aria-invalid=false]:checked:focus,
-[type=checkbox][role=switch][aria-invalid=false]:checked,
-[type=checkbox][role=switch][aria-invalid=false]:checked:active,
-[type=checkbox][role=switch][aria-invalid=false]:checked:focus {
- --pico-background-color: var(--pico-form-element-valid-border-color);
-}
-[type=checkbox]:checked[aria-invalid=true], [type=checkbox]:checked:active[aria-invalid=true], [type=checkbox]:checked:focus[aria-invalid=true],
-[type=checkbox][role=switch]:checked[aria-invalid=true],
-[type=checkbox][role=switch]:checked:active[aria-invalid=true],
-[type=checkbox][role=switch]:checked:focus[aria-invalid=true] {
- --pico-background-color: var(--pico-form-element-invalid-border-color);
-}
-
-[type=checkbox][aria-invalid=false]:checked, [type=checkbox][aria-invalid=false]:checked:active, [type=checkbox][aria-invalid=false]:checked:focus,
-[type=radio][aria-invalid=false]:checked,
-[type=radio][aria-invalid=false]:checked:active,
-[type=radio][aria-invalid=false]:checked:focus,
-[type=checkbox][role=switch][aria-invalid=false]:checked,
-[type=checkbox][role=switch][aria-invalid=false]:checked:active,
-[type=checkbox][role=switch][aria-invalid=false]:checked:focus {
- --pico-border-color: var(--pico-form-element-valid-border-color);
-}
-[type=checkbox]:checked[aria-invalid=true], [type=checkbox]:checked:active[aria-invalid=true], [type=checkbox]:checked:focus[aria-invalid=true],
-[type=radio]:checked[aria-invalid=true],
-[type=radio]:checked:active[aria-invalid=true],
-[type=radio]:checked:focus[aria-invalid=true],
-[type=checkbox][role=switch]:checked[aria-invalid=true],
-[type=checkbox][role=switch]:checked:active[aria-invalid=true],
-[type=checkbox][role=switch]:checked:focus[aria-invalid=true] {
- --pico-border-color: var(--pico-form-element-invalid-border-color);
-}
-
-/**
- * Input type color
- */
-[type=color]::-webkit-color-swatch-wrapper {
- padding: 0;
-}
-[type=color]::-moz-focus-inner {
- padding: 0;
-}
-[type=color]::-webkit-color-swatch {
- border: 0;
- border-radius: calc(var(--pico-border-radius) * 0.5);
-}
-[type=color]::-moz-color-swatch {
- border: 0;
- border-radius: calc(var(--pico-border-radius) * 0.5);
-}
-
-/**
- * Input type datetime
- */
-input:not([type=checkbox], [type=radio], [type=range], [type=file]):is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) {
- --pico-icon-position: 0.75rem;
- --pico-icon-width: 1rem;
- padding-right: calc(var(--pico-icon-width) + var(--pico-icon-position));
- background-image: var(--pico-icon-date);
- background-position: center right var(--pico-icon-position);
- background-size: var(--pico-icon-width) auto;
- background-repeat: no-repeat;
-}
-input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=time] {
- background-image: var(--pico-icon-time);
-}
-
-[type=date]::-webkit-calendar-picker-indicator,
-[type=datetime-local]::-webkit-calendar-picker-indicator,
-[type=month]::-webkit-calendar-picker-indicator,
-[type=time]::-webkit-calendar-picker-indicator,
-[type=week]::-webkit-calendar-picker-indicator {
- width: var(--pico-icon-width);
- margin-right: calc(var(--pico-icon-width) * -1);
- margin-left: var(--pico-icon-position);
- opacity: 0;
-}
-
-@-moz-document url-prefix() {
- [type=date],
- [type=datetime-local],
- [type=month],
- [type=time],
- [type=week] {
- padding-right: var(--pico-form-element-spacing-horizontal) !important;
- background-image: none !important;
- }
-}
-[dir=rtl] :is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) {
- text-align: right;
-}
-
-/**
- * Input type file
- */
-[type=file] {
- --pico-color: var(--pico-muted-color);
- margin-left: calc(var(--pico-outline-width) * -1);
- padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) 0;
- padding-left: var(--pico-outline-width);
- border: 0;
- border-radius: 0;
- background: none;
-}
-[type=file]::file-selector-button {
- margin-right: calc(var(--pico-spacing) / 2);
- padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) var(--pico-form-element-spacing-horizontal);
-}
-[type=file]:is(:hover, :active, :focus)::file-selector-button {
- --pico-background-color: var(--pico-secondary-hover-background);
- --pico-border-color: var(--pico-secondary-hover-border);
-}
-[type=file]:focus::file-selector-button {
- --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus);
-}
-
-/**
- * Input type range
- */
-[type=range] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- width: 100%;
- height: 1.25rem;
- background: none;
-}
-[type=range]::-webkit-slider-runnable-track {
- width: 100%;
- height: 0.375rem;
- border-radius: var(--pico-border-radius);
- background-color: var(--pico-range-border-color);
- -webkit-transition: background-color var(--pico-transition), box-shadow var(--pico-transition);
- transition: background-color var(--pico-transition), box-shadow var(--pico-transition);
-}
-[type=range]::-moz-range-track {
- width: 100%;
- height: 0.375rem;
- border-radius: var(--pico-border-radius);
- background-color: var(--pico-range-border-color);
- -moz-transition: background-color var(--pico-transition), box-shadow var(--pico-transition);
- transition: background-color var(--pico-transition), box-shadow var(--pico-transition);
-}
-[type=range]::-ms-track {
- width: 100%;
- height: 0.375rem;
- border-radius: var(--pico-border-radius);
- background-color: var(--pico-range-border-color);
- -ms-transition: background-color var(--pico-transition), box-shadow var(--pico-transition);
- transition: background-color var(--pico-transition), box-shadow var(--pico-transition);
-}
-[type=range]::-webkit-slider-thumb {
- -webkit-appearance: none;
- width: 1.25rem;
- height: 1.25rem;
- margin-top: -0.4375rem;
- border: 2px solid var(--pico-range-thumb-border-color);
- border-radius: 50%;
- background-color: var(--pico-range-thumb-color);
- cursor: pointer;
- -webkit-transition: background-color var(--pico-transition), transform var(--pico-transition);
- transition: background-color var(--pico-transition), transform var(--pico-transition);
-}
-[type=range]::-moz-range-thumb {
- -webkit-appearance: none;
- width: 1.25rem;
- height: 1.25rem;
- margin-top: -0.4375rem;
- border: 2px solid var(--pico-range-thumb-border-color);
- border-radius: 50%;
- background-color: var(--pico-range-thumb-color);
- cursor: pointer;
- -moz-transition: background-color var(--pico-transition), transform var(--pico-transition);
- transition: background-color var(--pico-transition), transform var(--pico-transition);
-}
-[type=range]::-ms-thumb {
- -webkit-appearance: none;
- width: 1.25rem;
- height: 1.25rem;
- margin-top: -0.4375rem;
- border: 2px solid var(--pico-range-thumb-border-color);
- border-radius: 50%;
- background-color: var(--pico-range-thumb-color);
- cursor: pointer;
- -ms-transition: background-color var(--pico-transition), transform var(--pico-transition);
- transition: background-color var(--pico-transition), transform var(--pico-transition);
-}
-[type=range]:active, [type=range]:focus-within {
- --pico-range-border-color: var(--pico-range-active-border-color);
- --pico-range-thumb-color: var(--pico-range-thumb-active-color);
-}
-[type=range]:active::-webkit-slider-thumb {
- transform: scale(1.25);
-}
-[type=range]:active::-moz-range-thumb {
- transform: scale(1.25);
-}
-[type=range]:active::-ms-thumb {
- transform: scale(1.25);
-}
-
-/**
- * Input type search
- */
-input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search] {
- padding-inline-start: calc(var(--pico-form-element-spacing-horizontal) + 1.75rem);
- background-image: var(--pico-icon-search);
- background-position: center left calc(var(--pico-form-element-spacing-horizontal) + 0.125rem);
- background-size: 1rem auto;
- background-repeat: no-repeat;
-}
-input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid] {
- padding-inline-start: calc(var(--pico-form-element-spacing-horizontal) + 1.75rem) !important;
- background-position: center left 1.125rem, center right 0.75rem;
-}
-input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid=false] {
- background-image: var(--pico-icon-search), var(--pico-icon-valid);
-}
-input:not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid=true] {
- background-image: var(--pico-icon-search), var(--pico-icon-invalid);
-}
-
-[dir=rtl] :where(input):not([type=checkbox], [type=radio], [type=range], [type=file])[type=search] {
- background-position: center right 1.125rem;
-}
-[dir=rtl] :where(input):not([type=checkbox], [type=radio], [type=range], [type=file])[type=search][aria-invalid] {
- background-position: center right 1.125rem, center left 0.75rem;
-}
-
-/**
- * Accordion ()
- */
-details {
- display: block;
- margin-bottom: var(--pico-spacing);
-}
-details summary {
- line-height: 1rem;
- list-style-type: none;
- cursor: pointer;
- transition: color var(--pico-transition);
-}
-details summary:not([role]) {
- color: var(--pico-accordion-close-summary-color);
-}
-details summary::-webkit-details-marker {
- display: none;
-}
-details summary::marker {
- display: none;
-}
-details summary::-moz-list-bullet {
- list-style-type: none;
-}
-details summary::after {
- display: block;
- width: 1rem;
- height: 1rem;
- margin-inline-start: calc(var(--pico-spacing, 1rem) * 0.5);
- float: right;
- transform: rotate(-90deg);
- background-image: var(--pico-icon-chevron);
- background-position: right center;
- background-size: 1rem auto;
- background-repeat: no-repeat;
- content: "";
- transition: transform var(--pico-transition);
-}
-details summary:focus {
- outline: none;
-}
-details summary:focus:not([role]) {
- color: var(--pico-accordion-active-summary-color);
-}
-details summary:focus-visible:not([role]) {
- outline: var(--pico-outline-width) solid var(--pico-primary-focus);
- outline-offset: calc(var(--pico-spacing, 1rem) * 0.5);
- color: var(--pico-primary);
-}
-details summary[role=button] {
- width: 100%;
- text-align: left;
-}
-details summary[role=button]::after {
- height: calc(1rem * var(--pico-line-height, 1.5));
-}
-details[open] > summary {
- margin-bottom: var(--pico-spacing);
-}
-details[open] > summary:not([role]):not(:focus) {
- color: var(--pico-accordion-open-summary-color);
-}
-details[open] > summary::after {
- transform: rotate(0);
-}
-
-[dir=rtl] details summary {
- text-align: right;
-}
-[dir=rtl] details summary::after {
- float: left;
- background-position: left center;
-}
-
-/**
- * Card ()
- */
-article {
- margin-bottom: var(--pico-block-spacing-vertical);
- padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
- border-radius: var(--pico-border-radius);
- background: var(--pico-card-background-color);
- box-shadow: var(--pico-card-box-shadow);
-}
-article > header,
-article > footer {
- margin-right: calc(var(--pico-block-spacing-horizontal) * -1);
- margin-left: calc(var(--pico-block-spacing-horizontal) * -1);
- padding: calc(var(--pico-block-spacing-vertical) * 0.66) var(--pico-block-spacing-horizontal);
- background-color: var(--pico-card-sectioning-background-color);
-}
-article > header {
- margin-top: calc(var(--pico-block-spacing-vertical) * -1);
- margin-bottom: var(--pico-block-spacing-vertical);
- border-bottom: var(--pico-border-width) solid var(--pico-card-border-color);
- border-top-right-radius: var(--pico-border-radius);
- border-top-left-radius: var(--pico-border-radius);
-}
-article > footer {
- margin-top: var(--pico-block-spacing-vertical);
- margin-bottom: calc(var(--pico-block-spacing-vertical) * -1);
- border-top: var(--pico-border-width) solid var(--pico-card-border-color);
- border-bottom-right-radius: var(--pico-border-radius);
- border-bottom-left-radius: var(--pico-border-radius);
-}
-
-/**
- * Dropdown (details.dropdown)
- */
-details.dropdown {
- position: relative;
- border-bottom: none;
-}
-details.dropdown > summary::after,
-details.dropdown > button::after,
-details.dropdown > a::after {
- display: block;
- width: 1rem;
- height: calc(1rem * var(--pico-line-height, 1.5));
- margin-inline-start: 0.25rem;
- float: right;
- transform: rotate(0deg) translateX(0.2rem);
- background-image: var(--pico-icon-chevron);
- background-position: right center;
- background-size: 1rem auto;
- background-repeat: no-repeat;
- content: "";
-}
-
-nav details.dropdown {
- margin-bottom: 0;
-}
-
-details.dropdown > summary:not([role]) {
- height: calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);
- padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
- border: var(--pico-border-width) solid var(--pico-form-element-border-color);
- border-radius: var(--pico-border-radius);
- background-color: var(--pico-form-element-background-color);
- color: var(--pico-form-element-placeholder-color);
- line-height: inherit;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- user-select: none;
- transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition);
-}
-details.dropdown > summary:not([role]):active, details.dropdown > summary:not([role]):focus {
- border-color: var(--pico-form-element-active-border-color);
- background-color: var(--pico-form-element-active-background-color);
-}
-details.dropdown > summary:not([role]):focus {
- box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color);
-}
-details.dropdown > summary:not([role]):focus-visible {
- outline: none;
-}
-details.dropdown > summary:not([role])[aria-invalid=false] {
- --pico-form-element-border-color: var(--pico-form-element-valid-border-color);
- --pico-form-element-active-border-color: var(--pico-form-element-valid-focus-color);
- --pico-form-element-focus-color: var(--pico-form-element-valid-focus-color);
-}
-details.dropdown > summary:not([role])[aria-invalid=true] {
- --pico-form-element-border-color: var(--pico-form-element-invalid-border-color);
- --pico-form-element-active-border-color: var(--pico-form-element-invalid-focus-color);
- --pico-form-element-focus-color: var(--pico-form-element-invalid-focus-color);
-}
-
-nav details.dropdown {
- display: inline;
- margin: calc(var(--pico-nav-element-spacing-vertical) * -1) 0;
-}
-nav details.dropdown > summary::after {
- transform: rotate(0deg) translateX(0rem);
-}
-nav details.dropdown > summary:not([role]) {
- height: calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);
- padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal);
-}
-nav details.dropdown > summary:not([role]):focus-visible {
- box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
-}
-
-details.dropdown > summary + ul {
- display: flex;
- z-index: 99;
- position: absolute;
- left: 0;
- flex-direction: column;
- width: 100%;
- min-width: -moz-fit-content;
- min-width: fit-content;
- margin: 0;
- margin-top: var(--pico-outline-width);
- padding: 0;
- border: var(--pico-border-width) solid var(--pico-dropdown-border-color);
- border-radius: var(--pico-border-radius);
- background-color: var(--pico-dropdown-background-color);
- box-shadow: var(--pico-dropdown-box-shadow);
- color: var(--pico-dropdown-color);
- white-space: nowrap;
- opacity: 0;
- transition: opacity var(--pico-transition), transform 0s ease-in-out 1s;
-}
-details.dropdown > summary + ul[dir=rtl] {
- right: 0;
- left: auto;
-}
-details.dropdown > summary + ul li {
- width: 100%;
- margin-bottom: 0;
- padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) var(--pico-form-element-spacing-horizontal);
- list-style: none;
-}
-details.dropdown > summary + ul li:first-of-type {
- margin-top: calc(var(--pico-form-element-spacing-vertical) * 0.5);
-}
-details.dropdown > summary + ul li:last-of-type {
- margin-bottom: calc(var(--pico-form-element-spacing-vertical) * 0.5);
-}
-details.dropdown > summary + ul li a {
- display: block;
- margin: calc(var(--pico-form-element-spacing-vertical) * -0.5) calc(var(--pico-form-element-spacing-horizontal) * -1);
- padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) var(--pico-form-element-spacing-horizontal);
- overflow: hidden;
- border-radius: 0;
- color: var(--pico-dropdown-color);
- text-decoration: none;
- text-overflow: ellipsis;
-}
-details.dropdown > summary + ul li a:hover, details.dropdown > summary + ul li a:focus, details.dropdown > summary + ul li a:active, details.dropdown > summary + ul li a:focus-visible, details.dropdown > summary + ul li a[aria-current]:not([aria-current=false]) {
- background-color: var(--pico-dropdown-hover-background-color);
-}
-details.dropdown > summary + ul li label {
- width: 100%;
-}
-details.dropdown > summary + ul li:has(label):hover {
- background-color: var(--pico-dropdown-hover-background-color);
-}
-
-details.dropdown[open] > summary {
- margin-bottom: 0;
-}
-
-details.dropdown[open] > summary + ul {
- transform: scaleY(1);
- opacity: 1;
- transition: opacity var(--pico-transition), transform 0s ease-in-out 0s;
-}
-
-details.dropdown[open] > summary::before {
- display: block;
- z-index: 1;
- position: fixed;
- width: 100vw;
- height: 100vh;
- inset: 0;
- background: none;
- content: "";
- cursor: default;
-}
-
-label > details.dropdown {
- margin-top: calc(var(--pico-spacing) * 0.25);
-}
-
-/**
- * Group ([role="group"], [role="search"])
- */
-[role=search],
-[role=group] {
- display: inline-flex;
- position: relative;
- width: 100%;
- margin-bottom: var(--pico-spacing);
- border-radius: var(--pico-border-radius);
- box-shadow: var(--pico-group-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
- vertical-align: middle;
- transition: box-shadow var(--pico-transition);
-}
-[role=search] > *,
-[role=search] input:not([type=checkbox], [type=radio]),
-[role=search] select,
-[role=group] > *,
-[role=group] input:not([type=checkbox], [type=radio]),
-[role=group] select {
- position: relative;
- flex: 1 1 auto;
- margin-bottom: 0;
-}
-[role=search] > *:not(:first-child),
-[role=search] input:not([type=checkbox], [type=radio]):not(:first-child),
-[role=search] select:not(:first-child),
-[role=group] > *:not(:first-child),
-[role=group] input:not([type=checkbox], [type=radio]):not(:first-child),
-[role=group] select:not(:first-child) {
- margin-left: 0;
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-[role=search] > *:not(:last-child),
-[role=search] input:not([type=checkbox], [type=radio]):not(:last-child),
-[role=search] select:not(:last-child),
-[role=group] > *:not(:last-child),
-[role=group] input:not([type=checkbox], [type=radio]):not(:last-child),
-[role=group] select:not(:last-child) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-[role=search] > *:focus,
-[role=search] input:not([type=checkbox], [type=radio]):focus,
-[role=search] select:focus,
-[role=group] > *:focus,
-[role=group] input:not([type=checkbox], [type=radio]):focus,
-[role=group] select:focus {
- z-index: 2;
-}
-[role=search] button:not(:first-child),
-[role=search] [type=submit]:not(:first-child),
-[role=search] [type=reset]:not(:first-child),
-[role=search] [type=button]:not(:first-child),
-[role=search] [role=button]:not(:first-child),
-[role=search] input:not([type=checkbox], [type=radio]):not(:first-child),
-[role=search] select:not(:first-child),
-[role=group] button:not(:first-child),
-[role=group] [type=submit]:not(:first-child),
-[role=group] [type=reset]:not(:first-child),
-[role=group] [type=button]:not(:first-child),
-[role=group] [role=button]:not(:first-child),
-[role=group] input:not([type=checkbox], [type=radio]):not(:first-child),
-[role=group] select:not(:first-child) {
- margin-left: calc(var(--pico-border-width) * -1);
-}
-[role=search] button,
-[role=search] [type=submit],
-[role=search] [type=reset],
-[role=search] [type=button],
-[role=search] [role=button],
-[role=group] button,
-[role=group] [type=submit],
-[role=group] [type=reset],
-[role=group] [type=button],
-[role=group] [role=button] {
- width: auto;
-}
-@supports selector(:has(*)) {
- [role=search]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus),
- [role=group]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) {
- --pico-group-box-shadow: var(--pico-group-box-shadow-focus-with-button);
- }
- [role=search]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) input:not([type=checkbox], [type=radio]),
- [role=search]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) select,
- [role=group]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) input:not([type=checkbox], [type=radio]),
- [role=group]:has(button:focus, [type=submit]:focus, [type=button]:focus, [role=button]:focus) select {
- border-color: transparent;
- }
- [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus),
- [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) {
- --pico-group-box-shadow: var(--pico-group-box-shadow-focus-with-input);
- }
- [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) button,
- [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=submit],
- [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=button],
- [role=search]:has(input:not([type=submit], [type=button]):focus, select:focus) [role=button],
- [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) button,
- [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=submit],
- [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) [type=button],
- [role=group]:has(input:not([type=submit], [type=button]):focus, select:focus) [role=button] {
- --pico-button-box-shadow: 0 0 0 var(--pico-border-width) var(--pico-primary-border);
- --pico-button-hover-box-shadow: 0 0 0 var(--pico-border-width) var(--pico-primary-hover-border);
- }
- [role=search] button:focus,
- [role=search] [type=submit]:focus,
- [role=search] [type=reset]:focus,
- [role=search] [type=button]:focus,
- [role=search] [role=button]:focus,
- [role=group] button:focus,
- [role=group] [type=submit]:focus,
- [role=group] [type=reset]:focus,
- [role=group] [type=button]:focus,
- [role=group] [role=button]:focus {
- box-shadow: none;
- }
-}
-
-[role=search] > *:first-child {
- border-top-left-radius: 5rem;
- border-bottom-left-radius: 5rem;
-}
-[role=search] > *:last-child {
- border-top-right-radius: 5rem;
- border-bottom-right-radius: 5rem;
-}
-
-/**
- * Loading ([aria-busy=true])
- */
-[aria-busy=true]:not(input, select, textarea, html, form) {
- white-space: nowrap;
-}
-[aria-busy=true]:not(input, select, textarea, html, form)::before {
- display: inline-block;
- width: 1em;
- height: 1em;
- background-image: var(--pico-icon-loading);
- background-size: 1em auto;
- background-repeat: no-repeat;
- content: "";
- vertical-align: -0.125em;
-}
-[aria-busy=true]:not(input, select, textarea, html, form):not(:empty)::before {
- margin-inline-end: calc(var(--pico-spacing) * 0.5);
-}
-[aria-busy=true]:not(input, select, textarea, html, form):empty {
- text-align: center;
-}
-
-button[aria-busy=true],
-[type=submit][aria-busy=true],
-[type=button][aria-busy=true],
-[type=reset][aria-busy=true],
-[role=button][aria-busy=true],
-a[aria-busy=true] {
- pointer-events: none;
-}
-
-/**
- * Modal ()
- */
-:root,
-:host {
- --pico-scrollbar-width: 0px;
-}
-
-dialog {
- display: flex;
- z-index: 999;
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- align-items: center;
- justify-content: center;
- width: inherit;
- min-width: 100%;
- height: inherit;
- min-height: 100%;
- padding: 0;
- border: 0;
- -webkit-backdrop-filter: var(--pico-modal-overlay-backdrop-filter);
- backdrop-filter: var(--pico-modal-overlay-backdrop-filter);
- background-color: var(--pico-modal-overlay-background-color);
- color: var(--pico-color);
-}
-dialog > article {
- width: 100%;
- max-height: calc(100vh - var(--pico-spacing) * 2);
- margin: var(--pico-spacing);
- overflow: auto;
-}
-@media (min-width: 576px) {
- dialog > article {
- max-width: 510px;
- }
-}
-@media (min-width: 768px) {
- dialog > article {
- max-width: 700px;
- }
-}
-dialog > article > header > * {
- margin-bottom: 0;
-}
-dialog > article > header .close, dialog > article > header :is(a, button)[rel=prev] {
- margin: 0;
- margin-left: var(--pico-spacing);
- padding: 0;
- float: right;
-}
-dialog > article > footer {
- text-align: right;
-}
-dialog > article > footer button,
-dialog > article > footer [role=button] {
- margin-bottom: 0;
-}
-dialog > article > footer button:not(:first-of-type),
-dialog > article > footer [role=button]:not(:first-of-type) {
- margin-left: calc(var(--pico-spacing) * 0.5);
-}
-dialog > article .close, dialog > article :is(a, button)[rel=prev] {
- display: block;
- width: 1rem;
- height: 1rem;
- margin-top: calc(var(--pico-spacing) * -1);
- margin-bottom: var(--pico-spacing);
- margin-left: auto;
- border: none;
- background-image: var(--pico-icon-close);
- background-position: center;
- background-size: auto 1rem;
- background-repeat: no-repeat;
- background-color: transparent;
- opacity: 0.5;
- transition: opacity var(--pico-transition);
-}
-dialog > article .close:is([aria-current]:not([aria-current=false]), :hover, :active, :focus), dialog > article :is(a, button)[rel=prev]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
- opacity: 1;
-}
-dialog:not([open]), dialog[open=false] {
- display: none;
-}
-
-.modal-is-open {
- padding-right: var(--pico-scrollbar-width, 0px);
- overflow: hidden;
- pointer-events: none;
- touch-action: none;
-}
-.modal-is-open dialog {
- pointer-events: auto;
- touch-action: auto;
-}
-
-:where(.modal-is-opening, .modal-is-closing) dialog,
-:where(.modal-is-opening, .modal-is-closing) dialog > article {
- animation-duration: 0.2s;
- animation-timing-function: ease-in-out;
- animation-fill-mode: both;
-}
-:where(.modal-is-opening, .modal-is-closing) dialog {
- animation-duration: 0.8s;
- animation-name: modal-overlay;
-}
-:where(.modal-is-opening, .modal-is-closing) dialog > article {
- animation-delay: 0.2s;
- animation-name: modal;
-}
-
-.modal-is-closing dialog,
-.modal-is-closing dialog > article {
- animation-delay: 0s;
- animation-direction: reverse;
-}
-
-@keyframes modal-overlay {
- from {
- -webkit-backdrop-filter: none;
- backdrop-filter: none;
- background-color: transparent;
- }
-}
-@keyframes modal {
- from {
- transform: translateY(-100%);
- opacity: 0;
- }
-}
-/**
- * Nav
- */
-:where(nav li)::before {
- float: left;
- content: "";
-}
-
-nav,
-nav ul {
- display: flex;
-}
-
-nav {
- justify-content: space-between;
- overflow: visible;
-}
-nav ol,
-nav ul {
- align-items: center;
- margin-bottom: 0;
- padding: 0;
- list-style: none;
-}
-nav ol:first-of-type,
-nav ul:first-of-type {
- margin-left: calc(var(--pico-nav-element-spacing-horizontal) * -1);
-}
-nav ol:last-of-type,
-nav ul:last-of-type {
- margin-right: calc(var(--pico-nav-element-spacing-horizontal) * -1);
-}
-nav li {
- display: inline-block;
- margin: 0;
- padding: var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal);
-}
-nav li :where(a, [role=link]) {
- display: inline-block;
- margin: calc(var(--pico-nav-link-spacing-vertical) * -1) calc(var(--pico-nav-link-spacing-horizontal) * -1);
- padding: var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal);
- border-radius: var(--pico-border-radius);
-}
-nav li :where(a, [role=link]):not(:hover) {
- text-decoration: none;
-}
-nav li button,
-nav li [role=button],
-nav li [type=button],
-nav li input:not([type=checkbox], [type=radio], [type=range], [type=file]),
-nav li select {
- height: auto;
- margin-right: inherit;
- margin-bottom: 0;
- margin-left: inherit;
- padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal);
-}
-nav[aria-label=breadcrumb] {
- align-items: center;
- justify-content: start;
-}
-nav[aria-label=breadcrumb] ul li:not(:first-child) {
- margin-inline-start: var(--pico-nav-link-spacing-horizontal);
-}
-nav[aria-label=breadcrumb] ul li a {
- margin: calc(var(--pico-nav-link-spacing-vertical) * -1) 0;
- margin-inline-start: calc(var(--pico-nav-link-spacing-horizontal) * -1);
-}
-nav[aria-label=breadcrumb] ul li:not(:last-child)::after {
- display: inline-block;
- position: absolute;
- width: calc(var(--pico-nav-link-spacing-horizontal) * 4);
- margin: 0 calc(var(--pico-nav-link-spacing-horizontal) * -1);
- content: var(--pico-nav-breadcrumb-divider);
- color: var(--pico-muted-color);
- text-align: center;
- text-decoration: none;
- white-space: nowrap;
-}
-nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]) {
- background-color: transparent;
- color: inherit;
- text-decoration: none;
- pointer-events: none;
-}
-
-aside nav,
-aside ol,
-aside ul,
-aside li {
- display: block;
-}
-aside li {
- padding: calc(var(--pico-nav-element-spacing-vertical) * 0.5) var(--pico-nav-element-spacing-horizontal);
-}
-aside li a {
- display: block;
-}
-aside li [role=button] {
- margin: inherit;
-}
-
-[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after {
- content: "\\";
-}
-
-/**
- * Progress
- */
-progress {
- display: inline-block;
- vertical-align: baseline;
-}
-
-progress {
- -webkit-appearance: none;
- -moz-appearance: none;
- display: inline-block;
- appearance: none;
- width: 100%;
- height: 0.5rem;
- margin-bottom: calc(var(--pico-spacing) * 0.5);
- overflow: hidden;
- border: 0;
- border-radius: var(--pico-border-radius);
- background-color: var(--pico-progress-background-color);
- color: var(--pico-progress-color);
-}
-progress::-webkit-progress-bar {
- border-radius: var(--pico-border-radius);
- background: none;
-}
-progress[value]::-webkit-progress-value {
- background-color: var(--pico-progress-color);
- -webkit-transition: inline-size var(--pico-transition);
- transition: inline-size var(--pico-transition);
-}
-progress::-moz-progress-bar {
- background-color: var(--pico-progress-color);
-}
-@media (prefers-reduced-motion: no-preference) {
- progress:indeterminate {
- background: var(--pico-progress-background-color) linear-gradient(to right, var(--pico-progress-color) 30%, var(--pico-progress-background-color) 30%) top left/150% 150% no-repeat;
- animation: progress-indeterminate 1s linear infinite;
- }
- progress:indeterminate[value]::-webkit-progress-value {
- background-color: transparent;
- }
- progress:indeterminate::-moz-progress-bar {
- background-color: transparent;
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- [dir=rtl] progress:indeterminate {
- animation-direction: reverse;
- }
-}
-
-@keyframes progress-indeterminate {
- 0% {
- background-position: 200% 0;
- }
- 100% {
- background-position: -200% 0;
- }
-}
-/**
- * Tooltip ([data-tooltip])
- */
-[data-tooltip] {
- position: relative;
-}
-[data-tooltip]:not(a, button, input, [role=button]) {
- border-bottom: 1px dotted;
- text-decoration: none;
- cursor: help;
-}
-[data-tooltip][data-placement=top]::before, [data-tooltip][data-placement=top]::after, [data-tooltip]::before, [data-tooltip]::after {
- display: block;
- z-index: 99;
- position: absolute;
- bottom: 100%;
- left: 50%;
- padding: 0.25rem 0.5rem;
- overflow: hidden;
- transform: translate(-50%, -0.25rem);
- border-radius: var(--pico-border-radius);
- background: var(--pico-tooltip-background-color);
- content: attr(data-tooltip);
- color: var(--pico-tooltip-color);
- font-style: normal;
- font-weight: var(--pico-font-weight);
- font-size: 0.875rem;
- text-decoration: none;
- text-overflow: ellipsis;
- white-space: nowrap;
- opacity: 0;
- pointer-events: none;
-}
-[data-tooltip][data-placement=top]::after, [data-tooltip]::after {
- padding: 0;
- transform: translate(-50%, 0rem);
- border-top: 0.3rem solid;
- border-right: 0.3rem solid transparent;
- border-left: 0.3rem solid transparent;
- border-radius: 0;
- background-color: transparent;
- content: "";
- color: var(--pico-tooltip-background-color);
-}
-[data-tooltip][data-placement=bottom]::before, [data-tooltip][data-placement=bottom]::after {
- top: 100%;
- bottom: auto;
- transform: translate(-50%, 0.25rem);
-}
-[data-tooltip][data-placement=bottom]:after {
- transform: translate(-50%, -0.3rem);
- border: 0.3rem solid transparent;
- border-bottom: 0.3rem solid;
-}
-[data-tooltip][data-placement=left]::before, [data-tooltip][data-placement=left]::after {
- top: 50%;
- right: 100%;
- bottom: auto;
- left: auto;
- transform: translate(-0.25rem, -50%);
-}
-[data-tooltip][data-placement=left]:after {
- transform: translate(0.3rem, -50%);
- border: 0.3rem solid transparent;
- border-left: 0.3rem solid;
-}
-[data-tooltip][data-placement=right]::before, [data-tooltip][data-placement=right]::after {
- top: 50%;
- right: auto;
- bottom: auto;
- left: 100%;
- transform: translate(0.25rem, -50%);
-}
-[data-tooltip][data-placement=right]:after {
- transform: translate(-0.3rem, -50%);
- border: 0.3rem solid transparent;
- border-right: 0.3rem solid;
-}
-[data-tooltip]:focus::before, [data-tooltip]:focus::after, [data-tooltip]:hover::before, [data-tooltip]:hover::after {
- opacity: 1;
-}
-@media (hover: hover) and (pointer: fine) {
- [data-tooltip]:focus::before, [data-tooltip]:focus::after, [data-tooltip]:hover::before, [data-tooltip]:hover::after {
- --pico-tooltip-slide-to: translate(-50%, -0.25rem);
- transform: translate(-50%, 0.75rem);
- animation-duration: 0.2s;
- animation-fill-mode: forwards;
- animation-name: tooltip-slide;
- opacity: 0;
- }
- [data-tooltip]:focus::after, [data-tooltip]:hover::after {
- --pico-tooltip-caret-slide-to: translate(-50%, 0rem);
- transform: translate(-50%, -0.25rem);
- animation-name: tooltip-caret-slide;
- }
- [data-tooltip][data-placement=bottom]:focus::before, [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover::before, [data-tooltip][data-placement=bottom]:hover::after {
- --pico-tooltip-slide-to: translate(-50%, 0.25rem);
- transform: translate(-50%, -0.75rem);
- animation-name: tooltip-slide;
- }
- [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover::after {
- --pico-tooltip-caret-slide-to: translate(-50%, -0.3rem);
- transform: translate(-50%, -0.5rem);
- animation-name: tooltip-caret-slide;
- }
- [data-tooltip][data-placement=left]:focus::before, [data-tooltip][data-placement=left]:focus::after, [data-tooltip][data-placement=left]:hover::before, [data-tooltip][data-placement=left]:hover::after {
- --pico-tooltip-slide-to: translate(-0.25rem, -50%);
- transform: translate(0.75rem, -50%);
- animation-name: tooltip-slide;
- }
- [data-tooltip][data-placement=left]:focus::after, [data-tooltip][data-placement=left]:hover::after {
- --pico-tooltip-caret-slide-to: translate(0.3rem, -50%);
- transform: translate(0.05rem, -50%);
- animation-name: tooltip-caret-slide;
- }
- [data-tooltip][data-placement=right]:focus::before, [data-tooltip][data-placement=right]:focus::after, [data-tooltip][data-placement=right]:hover::before, [data-tooltip][data-placement=right]:hover::after {
- --pico-tooltip-slide-to: translate(0.25rem, -50%);
- transform: translate(-0.75rem, -50%);
- animation-name: tooltip-slide;
- }
- [data-tooltip][data-placement=right]:focus::after, [data-tooltip][data-placement=right]:hover::after {
- --pico-tooltip-caret-slide-to: translate(-0.3rem, -50%);
- transform: translate(-0.05rem, -50%);
- animation-name: tooltip-caret-slide;
- }
-}
-@keyframes tooltip-slide {
- to {
- transform: var(--pico-tooltip-slide-to);
- opacity: 1;
- }
-}
-@keyframes tooltip-caret-slide {
- 50% {
- opacity: 0;
- }
- to {
- transform: var(--pico-tooltip-caret-slide-to);
- opacity: 1;
- }
-}
-
-/**
- * Accessibility & User interaction
- */
-[aria-controls] {
- cursor: pointer;
-}
-
-[aria-disabled=true],
-[disabled] {
- cursor: not-allowed;
-}
-
-[aria-hidden=false][hidden] {
- display: initial;
-}
-
-[aria-hidden=false][hidden]:not(:focus) {
- clip: rect(0, 0, 0, 0);
- position: absolute;
-}
-
-a,
-area,
-button,
-input,
-label,
-select,
-summary,
-textarea,
-[tabindex] {
- -ms-touch-action: manipulation;
-}
-
-[dir=rtl] {
- direction: rtl;
-}
-
-/**
- * Reduce Motion Features
- */
-@media (prefers-reduced-motion: reduce) {
- *:not([aria-busy=true]),
- :not([aria-busy=true])::before,
- :not([aria-busy=true])::after {
- background-attachment: initial !important;
- animation-duration: 1ms !important;
- animation-delay: -1ms !important;
- animation-iteration-count: 1 !important;
- scroll-behavior: auto !important;
- transition-delay: 0s !important;
- transition-duration: 0s !important;
- }
-}
diff --git a/frontend/src/components/audio-player/audio-player.ts b/frontend/src/components/audio-player/audio-player.ts
new file mode 100644
index 0000000..58f4271
--- /dev/null
+++ b/frontend/src/components/audio-player/audio-player.ts
@@ -0,0 +1,31 @@
+import { LitElement, html } from 'lit';
+import { customElement } from 'lit/decorators.js';
+import { Play } from '@go/player/Player';
+
+const audioPlayer = () => html`
+Hello World
+`;
+
+@customElement('audio-player')
+export class AudioPlayer extends LitElement {
+
+ render() {
+ return audioPlayer();
+ }
+
+ onPlayPauseButtonClick() {
+ let playPauseButtonIcon = document.getElementById("playPauseButtonIcon");
+ try {
+ Play().then((result) => {
+ console.log(result)
+ playPauseButtonIcon.setAttribute("src", "/src/assets/images/icons/music/pause-solid.svg")
+ }).catch((err) => {
+ console.log("There is an error with playing")
+ console.error(err);
+ });
+ }
+ catch (err) {
+ console.error(err);
+ }
+ }
+}
diff --git a/frontend/src/pages/config.html b/frontend/src/components/audio-player/controls/player-controls.css
similarity index 100%
rename from frontend/src/pages/config.html
rename to frontend/src/components/audio-player/controls/player-controls.css
diff --git a/frontend/src/components/audio-player/controls/player-controls.html b/frontend/src/components/audio-player/controls/player-controls.html
new file mode 100644
index 0000000..9259f20
--- /dev/null
+++ b/frontend/src/components/audio-player/controls/player-controls.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/frontend/src/components/audio-player/controls/player-controls.js b/frontend/src/components/audio-player/controls/player-controls.js
new file mode 100644
index 0000000..8864df6
--- /dev/null
+++ b/frontend/src/components/audio-player/controls/player-controls.js
@@ -0,0 +1,39 @@
+import { LitElement, html } from 'lit';
+import { Play } from '/wailsjs/go/player/Player';
+
+export class Player extends LitElement {
+ static properties = {
+ version: {},
+ };
+
+ constructor() {
+ super();
+ this.version = 'STARTING';
+ }
+
+ render() {
+ return html`
+ Welcome to the Lit tutorial!
+ This is the ${this.version} code.
+ `;
+ }
+
+ onPlayPauseButtonClick = function() {
+ let playPauseButtonIcon = document.getElementById("playPauseButtonIcon");
+ try {
+ Play().then((result) => {
+ console.log(result)
+ playPauseButtonIcon.setAttribute("src", "/src/assets/images/icons/music/pause-solid.svg")
+ }).catch((err) => {
+ console.log("There is an error with playing")
+ console.error(err);
+ });
+ }
+ catch (err) {
+ console.error(err);
+ }
+ }
+}
+customElements.define('player-controls', Player);
+
+
diff --git a/frontend/src/components/audio-player/seekbar/seek-bar.css b/frontend/src/components/audio-player/seekbar/seek-bar.css
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/components/audio-player/seekbar/seek-bar.html b/frontend/src/components/audio-player/seekbar/seek-bar.html
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/components/audio-player/seekbar/seek-bar.js b/frontend/src/components/audio-player/seekbar/seek-bar.js
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/components/player.js b/frontend/src/components/player.js
deleted file mode 100644
index b82fadb..0000000
--- a/frontend/src/components/player.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import {LitElement, html} from 'lit';
-
-export class Player extends LitElement {
- static properties = {
- version: {},
- };
-
- constructor() {
- super();
- this.version = 'STARTING';
- }
-
- render() {
- return html`
- Welcome to the Lit tutorial!
- This is the ${this.version} code.
- `;
- }
-}
-customElements.define('player-controls', Player);
-
diff --git a/frontend/src/pages/config/config.html b/frontend/src/pages/config/config.html
new file mode 100644
index 0000000..2ce88cb
--- /dev/null
+++ b/frontend/src/pages/config/config.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ yellowjacket - config
+
+
+
+
+
+
+
+
+ No Library Directory Selected
+ Choose Directory...
+
+
+
+
+
diff --git a/frontend/src/pages/config/config.js b/frontend/src/pages/config/config.js
new file mode 100644
index 0000000..09621bc
--- /dev/null
+++ b/frontend/src/pages/config/config.js
@@ -0,0 +1,30 @@
+import { DirectoryPicker } from '/wailsjs/go/frontendbindings/FrontendBindings.js';
+import { GetDir as GetLibraryDir } from '/wailsjs/go/library/Library.js';
+
+let libraryDirectoryLabel = document.getElementById("library-directory-label");
+
+window.updateLibraryDirLabel = function(value) {
+ libraryDirectoryLabel.innerText = value;
+}
+
+// on load update the library dir label
+GetLibraryDir().
+ then((result) => {
+ if (result.length === 0) { return; }
+ window.updateLibraryDirLabel(result);
+ }).catch((err) => { console.error(err) })
+
+
+window.dirPicker = function() {
+ try {
+ DirectoryPicker()
+ .then((result) => {
+ window.updateLibraryDirLabel(result); })
+ .catch((err) => {
+ console.error("There is an error with directory picker: " + err);
+ });
+ }
+ catch (err) {
+ console.error(err);
+ }
+}
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
new file mode 100644
index 0000000..d000f5b
--- /dev/null
+++ b/frontend/vite.config.ts
@@ -0,0 +1,12 @@
+import { defineConfig } from "vite";
+import path from "path";
+
+export default defineConfig({
+ resolve: {
+ alias: {
+ "@go": path.resolve(__dirname, "./wailsjs/go"),
+ "@components": path.resolve(__dirname, "./src/components"),
+ "@assets": path.resolve(__dirname, "./src/assets"),
+ },
+ },
+});
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..6b9b254
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compilerOptions": {
+ "isolatedModules": true,
+ "baseUrl": "./frontend",
+ "allowJs": true,
+ "checkJs": true,
+ "noEmit": true,
+ "target": "ES2022",
+ "module": "ESNext",
+ "lib": [
+ "es2022",
+ "dom"
+ ],
+ "declaration": true,
+ "declarationMap": true,
+ "experimentalDecorators": true,
+ "useDefineForClassFields": false,
+ "moduleResolution": "node",
+ "plugins": [
+ {
+ "name": "ts-lit-plugin"
+ }
+ ],
+ "paths": {
+ "@go/*": ["wailsjs/go/*"],
+ "@components/*": ["src/components/*"],
+ "@assets/*": ["src/assets/*"],
+ }
+ }
+}
diff --git a/wails.json b/wails.json
index ad1c221..99bf71c 100644
--- a/wails.json
+++ b/wails.json
@@ -2,9 +2,9 @@
"$schema": "https://wails.io/schemas/config.v2.json",
"name": "yellowjacket",
"outputfilename": "yellowjacket",
- "frontend:install": "npm install",
- "frontend:build": "npm run build",
- "frontend:dev:watcher": "npm run dev",
+ "frontend:install": "pnpm install",
+ "frontend:build": "pnpm build",
+ "frontend:dev:watcher": "pnpm dev",
"frontend:dev:serverUrl": "auto",
"author": {
"name": "",