From 17fcdc73f74946191a47e87d77eca3346b112ec4 Mon Sep 17 00:00:00 2001 From: tux Date: Mon, 3 Mar 2025 19:44:08 +0530 Subject: [PATCH] feat: add website --- .gitignore | 4 + go.mod | 13 +- go.sum | 22 ++ internal/server/trok.go | 4 + internal/server/web.go | 41 +++ internal/web/bun.lock | 317 ++++++++++++++++++ internal/web/index.html | 16 + internal/web/package.json | 22 ++ internal/web/public/favicon.ico | Bin 0 -> 173479 bytes internal/web/public/install.sh | 30 ++ internal/web/src/App.tsx | 164 +++++++++ .../web/src/assets/fonts/Koulen-Regular.ttf | Bin 0 -> 55724 bytes internal/web/src/icons.tsx | 60 ++++ internal/web/src/index.css | 19 ++ internal/web/src/index.tsx | 8 + internal/web/src/vite-env.d.ts | 1 + internal/web/tsconfig.app.json | 27 ++ internal/web/tsconfig.json | 7 + internal/web/tsconfig.node.json | 24 ++ internal/web/vite.config.ts | 7 + internal/web/web.go | 6 + 21 files changed, 790 insertions(+), 2 deletions(-) create mode 100644 internal/server/web.go create mode 100644 internal/web/bun.lock create mode 100644 internal/web/index.html create mode 100644 internal/web/package.json create mode 100644 internal/web/public/favicon.ico create mode 100644 internal/web/public/install.sh create mode 100644 internal/web/src/App.tsx create mode 100644 internal/web/src/assets/fonts/Koulen-Regular.ttf create mode 100644 internal/web/src/icons.tsx create mode 100644 internal/web/src/index.css create mode 100644 internal/web/src/index.tsx create mode 100644 internal/web/src/vite-env.d.ts create mode 100644 internal/web/tsconfig.app.json create mode 100644 internal/web/tsconfig.json create mode 100644 internal/web/tsconfig.node.json create mode 100644 internal/web/vite.config.ts create mode 100644 internal/web/web.go diff --git a/.gitignore b/.gitignore index e8d38e8..96bd031 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,7 @@ snippets/ # nix build result + +# web +node_modules +dist diff --git a/go.mod b/go.mod index a373be6..d4604e2 100644 --- a/go.mod +++ b/go.mod @@ -9,9 +9,18 @@ require ( ) require ( + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/gofiber/fiber/v2 v2.52.6 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/sys v0.12.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.51.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + golang.org/x/sys v0.28.0 // indirect ) diff --git a/go.sum b/go.sum index b0564bf..8b7a4f3 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,18 @@ +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofiber/fiber/v2 v2.52.6 h1:Rfp+ILPiYSvvVuIPvxrBns+HJp8qGLDnLJawAu27XVI= +github.com/gofiber/fiber/v2 v2.52.6/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/matoous/go-nanoid/v2 v2.1.0 h1:P64+dmq21hhWdtvZfEAofnvJULaRR1Yib0+PnU669bE= github.com/matoous/go-nanoid/v2 v2.1.0/go.mod h1:KlbGNQ+FhrUNIHUxZdL63t7tl4LaPkZNpUULS8H4uVM= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -12,9 +20,15 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -25,10 +39,18 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/server/trok.go b/internal/server/trok.go index 1cab44b..645cea0 100644 --- a/internal/server/trok.go +++ b/internal/server/trok.go @@ -22,6 +22,7 @@ type Conn struct { } type Trok struct { + webServer *TrokWeb controlServer TCPServer publicConns map[string]Conn mutex sync.Mutex @@ -29,17 +30,20 @@ type Trok struct { func (t *Trok) Init(addr string) error { t.publicConns = make(map[string]Conn) + t.webServer = NewTrokWeb(":3000") err := t.controlServer.Init(addr, "Controller") return err } func (t *Trok) Start() { go t.controlServer.Start(t.ControlConnHandler) + go t.webServer.Start() log.Info().Msgf("started Trok server on %s", t.controlServer.Addr()) } func (t *Trok) Stop() { t.controlServer.Stop() + t.webServer.Stop() log.Info().Msgf("stopped Trok server on %s", t.controlServer.Addr()) } diff --git a/internal/server/web.go b/internal/server/web.go new file mode 100644 index 0000000..cdaebf1 --- /dev/null +++ b/internal/server/web.go @@ -0,0 +1,41 @@ +package server + +import ( + "net/http" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/filesystem" + "github.com/tuxdotrs/trok/internal/web" +) + +type TrokWeb struct { + app *fiber.App + addr string +} + +func NewTrokWeb(addr string) *TrokWeb { + return &TrokWeb{ + app: fiber.New(), + addr: addr, + } +} + +func (t *TrokWeb) Start() { + t.app.Use("/", filesystem.New(filesystem.Config{ + Root: http.FS(web.EmbedDirStatic), + PathPrefix: "dist", + Browse: true, + })) + + t.app.Use("/assets", filesystem.New(filesystem.Config{ + Root: http.FS(web.EmbedDirStatic), + PathPrefix: "dist/assets", + Browse: true, + })) + + t.app.Listen(t.addr) +} + +func (t *TrokWeb) Stop() { + t.app.Shutdown() +} diff --git a/internal/web/bun.lock b/internal/web/bun.lock new file mode 100644 index 0000000..ae49a92 --- /dev/null +++ b/internal/web/bun.lock @@ -0,0 +1,317 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "my-vue-app", + "dependencies": { + "@heroicons/react": "^2.2.0", + "@tailwindcss/vite": "^4.0.9", + "clsx": "^2.1.1", + "solid-js": "^1.9.5", + "tailwindcss": "^4.0.9", + }, + "devDependencies": { + "typescript": "~5.7.2", + "vite": "^6.2.0", + "vite-plugin-solid": "^2.11.2", + }, + }, + }, + "packages": { + "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], + + "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], + + "@babel/compat-data": ["@babel/compat-data@7.26.8", "", {}, "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ=="], + + "@babel/core": ["@babel/core@7.26.9", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.9", "@babel/parser": "^7.26.9", "@babel/template": "^7.26.9", "@babel/traverse": "^7.26.9", "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw=="], + + "@babel/generator": ["@babel/generator@7.26.9", "", { "dependencies": { "@babel/parser": "^7.26.9", "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" } }, "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.26.5", "", { "dependencies": { "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.26.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.26.5", "", {}, "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.25.9", "", {}, "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw=="], + + "@babel/helpers": ["@babel/helpers@7.26.9", "", { "dependencies": { "@babel/template": "^7.26.9", "@babel/types": "^7.26.9" } }, "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA=="], + + "@babel/parser": ["@babel/parser@7.26.9", "", { "dependencies": { "@babel/types": "^7.26.9" }, "bin": "./bin/babel-parser.js" }, "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA=="], + + "@babel/template": ["@babel/template@7.26.9", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/parser": "^7.26.9", "@babel/types": "^7.26.9" } }, "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA=="], + + "@babel/traverse": ["@babel/traverse@7.26.9", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", "@babel/parser": "^7.26.9", "@babel/template": "^7.26.9", "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" } }, "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg=="], + + "@babel/types": ["@babel/types@7.26.9", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + + "@heroicons/react": ["@heroicons/react@2.2.0", "", { "peerDependencies": { "react": ">= 16 || ^19.0.0-rc" } }, "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.34.9", "", { "os": "android", "cpu": "arm" }, "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.34.9", "", { "os": "android", "cpu": "arm64" }, "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.34.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.34.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.34.9", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.34.9", "", { "os": "freebsd", "cpu": "x64" }, "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.34.9", "", { "os": "linux", "cpu": "arm" }, "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.34.9", "", { "os": "linux", "cpu": "arm" }, "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.34.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.34.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A=="], + + "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.34.9", "", { "os": "linux", "cpu": "none" }, "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg=="], + + "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.34.9", "", { "os": "linux", "cpu": "ppc64" }, "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.34.9", "", { "os": "linux", "cpu": "none" }, "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.34.9", "", { "os": "linux", "cpu": "s390x" }, "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.34.9", "", { "os": "linux", "cpu": "x64" }, "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.34.9", "", { "os": "linux", "cpu": "x64" }, "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.34.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.34.9", "", { "os": "win32", "cpu": "ia32" }, "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.34.9", "", { "os": "win32", "cpu": "x64" }, "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.0.9", "", { "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "tailwindcss": "4.0.9" } }, "sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.0.9", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.0.9", "@tailwindcss/oxide-darwin-arm64": "4.0.9", "@tailwindcss/oxide-darwin-x64": "4.0.9", "@tailwindcss/oxide-freebsd-x64": "4.0.9", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.9", "@tailwindcss/oxide-linux-arm64-gnu": "4.0.9", "@tailwindcss/oxide-linux-arm64-musl": "4.0.9", "@tailwindcss/oxide-linux-x64-gnu": "4.0.9", "@tailwindcss/oxide-linux-x64-musl": "4.0.9", "@tailwindcss/oxide-win32-arm64-msvc": "4.0.9", "@tailwindcss/oxide-win32-x64-msvc": "4.0.9" } }, "sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.0.9", "", { "os": "android", "cpu": "arm64" }, "sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.0.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.0.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.0.9", "", { "os": "freebsd", "cpu": "x64" }, "sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9", "", { "os": "linux", "cpu": "arm" }, "sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.0.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.0.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.0.9", "", { "os": "linux", "cpu": "x64" }, "sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.0.9", "", { "os": "linux", "cpu": "x64" }, "sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.0.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.0.9", "", { "os": "win32", "cpu": "x64" }, "sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.0.9", "", { "dependencies": { "@tailwindcss/node": "4.0.9", "@tailwindcss/oxide": "4.0.9", "lightningcss": "^1.29.1", "tailwindcss": "4.0.9" }, "peerDependencies": { "vite": "^5.2.0 || ^6" } }, "sha512-BIKJO+hwdIsN7V6I7SziMZIVHWWMsV/uCQKYEbeiGRDRld+TkqyRRl9+dQ0MCXbhcVr+D9T/qX2E84kT7V281g=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.6.8", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.20.6", "", { "dependencies": { "@babel/types": "^7.20.7" } }, "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg=="], + + "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], + + "babel-plugin-jsx-dom-expressions": ["babel-plugin-jsx-dom-expressions@0.39.7", "", { "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", "@babel/types": "^7.20.7", "html-entities": "2.3.3", "parse5": "^7.1.2", "validate-html-nesting": "^1.2.1" }, "peerDependencies": { "@babel/core": "^7.20.12" } }, "sha512-8GzVmFla7jaTNWW8W+lTMl9YGva4/06CtwJjySnkYtt8G1v9weCzc2SuF1DfrudcCNb2Doetc1FRg33swBYZCA=="], + + "babel-preset-solid": ["babel-preset-solid@1.9.5", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.39.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-85I3osODJ1LvZbv8wFozROV1vXq32BubqHXAGu73A//TRs3NLI1OFP83AQBUTSQHwgZQmARjHlJciym3we+V+w=="], + + "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001701", "", {}, "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + + "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], + + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.109", "", {}, "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ=="], + + "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], + + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "html-entities": ["html-entities@2.3.3", "", {}, "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="], + + "is-what": ["is-what@4.1.16", "", {}, "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A=="], + + "jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "lightningcss": ["lightningcss@1.29.1", "", { "dependencies": { "detect-libc": "^1.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.1", "lightningcss-darwin-x64": "1.29.1", "lightningcss-freebsd-x64": "1.29.1", "lightningcss-linux-arm-gnueabihf": "1.29.1", "lightningcss-linux-arm64-gnu": "1.29.1", "lightningcss-linux-arm64-musl": "1.29.1", "lightningcss-linux-x64-gnu": "1.29.1", "lightningcss-linux-x64-musl": "1.29.1", "lightningcss-win32-arm64-msvc": "1.29.1", "lightningcss-win32-x64-msvc": "1.29.1" } }, "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.1", "", { "os": "linux", "cpu": "arm" }, "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.1", "", { "os": "win32", "cpu": "x64" }, "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q=="], + + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "merge-anything": ["merge-anything@5.1.7", "", { "dependencies": { "is-what": "^4.1.8" } }, "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], + + "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], + + "parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "postcss": ["postcss@8.5.3", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="], + + "react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], + + "rollup": ["rollup@4.34.9", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.34.9", "@rollup/rollup-android-arm64": "4.34.9", "@rollup/rollup-darwin-arm64": "4.34.9", "@rollup/rollup-darwin-x64": "4.34.9", "@rollup/rollup-freebsd-arm64": "4.34.9", "@rollup/rollup-freebsd-x64": "4.34.9", "@rollup/rollup-linux-arm-gnueabihf": "4.34.9", "@rollup/rollup-linux-arm-musleabihf": "4.34.9", "@rollup/rollup-linux-arm64-gnu": "4.34.9", "@rollup/rollup-linux-arm64-musl": "4.34.9", "@rollup/rollup-linux-loongarch64-gnu": "4.34.9", "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9", "@rollup/rollup-linux-riscv64-gnu": "4.34.9", "@rollup/rollup-linux-s390x-gnu": "4.34.9", "@rollup/rollup-linux-x64-gnu": "4.34.9", "@rollup/rollup-linux-x64-musl": "4.34.9", "@rollup/rollup-win32-arm64-msvc": "4.34.9", "@rollup/rollup-win32-ia32-msvc": "4.34.9", "@rollup/rollup-win32-x64-msvc": "4.34.9", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ=="], + + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "seroval": ["seroval@1.2.1", "", {}, "sha512-yBxFFs3zmkvKNmR0pFSU//rIsYjuX418TnlDmc2weaq5XFDqDIV/NOMPBoLrbxjLH42p4UzRuXHryXh9dYcKcw=="], + + "seroval-plugins": ["seroval-plugins@1.2.1", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-H5vs53+39+x4Udwp4J5rNZfgFuA+Lt+uU+09w1gYBVWomtAl98B+E9w7yC05Xc81/HgLvJdlyqJbU0fJCKCmdw=="], + + "solid-js": ["solid-js@1.9.5", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "^1.1.0", "seroval-plugins": "^1.1.0" } }, "sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw=="], + + "solid-refresh": ["solid-refresh@0.6.3", "", { "dependencies": { "@babel/generator": "^7.23.6", "@babel/helper-module-imports": "^7.22.15", "@babel/types": "^7.23.6" }, "peerDependencies": { "solid-js": "^1.3" } }, "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "tailwindcss": ["tailwindcss@4.0.9", "", {}, "sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw=="], + + "tapable": ["tapable@2.2.1", "", {}, "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="], + + "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], + + "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], + + "validate-html-nesting": ["validate-html-nesting@1.2.2", "", {}, "sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg=="], + + "vite": ["vite@6.2.0", "", { "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "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" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ=="], + + "vite-plugin-solid": ["vite-plugin-solid@2.11.6", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Sl5CTqJTGyEeOsmdH6BOgalIZlwH3t4/y0RQuFLMGnvWMBvxb4+lq7x3BSiAw6etf0QexfNJW7HSOO/Qf7pigg=="], + + "vitefu": ["vitefu@1.0.6", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["vite"] }, "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "babel-plugin-jsx-dom-expressions/@babel/helper-module-imports": ["@babel/helper-module-imports@7.18.6", "", { "dependencies": { "@babel/types": "^7.18.6" } }, "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA=="], + } +} diff --git a/internal/web/index.html b/internal/web/index.html new file mode 100644 index 0000000..06a400a --- /dev/null +++ b/internal/web/index.html @@ -0,0 +1,16 @@ + + + + + + + + trok + + + +
+ + + + diff --git a/internal/web/package.json b/internal/web/package.json new file mode 100644 index 0000000..84f6bed --- /dev/null +++ b/internal/web/package.json @@ -0,0 +1,22 @@ +{ + "name": "trok-web-ui", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@heroicons/react": "^2.2.0", + "solid-js": "^1.9.5" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.0.9", + "typescript": "~5.7.2", + "vite": "^6.2.0", + "vite-plugin-solid": "^2.11.2", + "tailwindcss": "^4.0.9" + } +} diff --git a/internal/web/public/favicon.ico b/internal/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e290ad6434779bc8838448acf3b51cd3f1210438 GIT binary patch literal 173479 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