detached 99d9c6c

chore(webui): add lucide-svelte, internationalized date, and animation dependencies

commit
99d9c6c14398d9df4028e06b1a7aca01b71d5e59
author
bnema · · 2025-12-21 13:53 UTC
parent
7a7ce57
signature
unsigned
2 files · +223 -11
M webui/package-lock.json +212 -6
@@ -8,10 +8,14 @@
88 "name": "@dumber/gui",
99 "version": "0.1.0",
1010 "dependencies": {
11- "@lucide/svelte": "^0.556.0",
12- "frappe-charts": "^1.6.2"
11+ "bits-ui": "^2.14.4",
12+ "clsx": "^2.1.1",
13+ "frappe-charts": "^1.6.2",
14+ "tailwind-merge": "^3.4.0"
1315 },
1416 "devDependencies": {
17+ "@internationalized/date": "^3.10.1",
18+ "@lucide/svelte": "^0.561.0",
1519 "@sveltejs/vite-plugin-svelte": "^4.0.0",
1620 "@tailwindcss/cli": "^4.0.0",
1721 "@tailwindcss/postcss": "^4.1.13",
@@ -23,7 +27,9 @@
2327 "postcss": "^8.4.47",
2428 "svelte": "^5.0.0",
2529 "svelte-check": "^4.0.0",
30+ "tailwind-variants": "^3.2.2",
2631 "tailwindcss": "^4.0.0",
32+ "tw-animate-css": "^1.4.0",
2733 "typescript": "^5.3.0",
2834 "typescript-eslint": "^8.43.0",
2935 "vite": "^5.0.0"
@@ -520,6 +526,31 @@
520526 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
521527 }
522528 },
529+ "node_modules/@floating-ui/core": {
530+ "version": "1.7.3",
531+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
532+ "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
533+ "license": "MIT",
534+ "dependencies": {
535+ "@floating-ui/utils": "^0.2.10"
536+ }
537+ },
538+ "node_modules/@floating-ui/dom": {
539+ "version": "1.7.4",
540+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
541+ "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
542+ "license": "MIT",
543+ "dependencies": {
544+ "@floating-ui/core": "^1.7.3",
545+ "@floating-ui/utils": "^0.2.10"
546+ }
547+ },
548+ "node_modules/@floating-ui/utils": {
549+ "version": "0.2.10",
550+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
551+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
552+ "license": "MIT"
553+ },
523554 "node_modules/@humanwhocodes/config-array": {
524555 "version": "0.13.0",
525556 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
@@ -582,6 +613,16 @@
582613 "dev": true,
583614 "license": "BSD-3-Clause"
584615 },
616+ "node_modules/@internationalized/date": {
617+ "version": "3.10.1",
618+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
619+ "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
620+ "license": "Apache-2.0",
621+ "peer": true,
622+ "dependencies": {
623+ "@swc/helpers": "^0.5.0"
624+ }
625+ },
585626 "node_modules/@jridgewell/gen-mapping": {
586627 "version": "0.3.13",
587628 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -628,9 +669,10 @@
628669 }
629670 },
630671 "node_modules/@lucide/svelte": {
631- "version": "0.556.0",
632- "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.556.0.tgz",
633- "integrity": "sha512-jsJhyyd2xrJ4WtflO5TrTtyCBacF4OLBNCzotvwh4zfbbuE6aqdblx+OB0zg6zOno06ib1GJGdDcfR/2TUcb7g==",
672+ "version": "0.561.0",
673+ "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.561.0.tgz",
674+ "integrity": "sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==",
675+ "dev": true,
634676 "license": "ISC",
635677 "peerDependencies": {
636678 "svelte": "^5"
@@ -1341,6 +1383,15 @@
13411383 "vite": "^5.0.0"
13421384 }
13431385 },
1386+ "node_modules/@swc/helpers": {
1387+ "version": "0.5.17",
1388+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
1389+ "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
1390+ "license": "Apache-2.0",
1391+ "dependencies": {
1392+ "tslib": "^2.8.0"
1393+ }
1394+ },
13441395 "node_modules/@tailwindcss/cli": {
13451396 "version": "4.1.17",
13461397 "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.17.tgz",
@@ -2058,6 +2109,30 @@
20582109 "baseline-browser-mapping": "dist/cli.js"
20592110 }
20602111 },
2112+ "node_modules/bits-ui": {
2113+ "version": "2.14.4",
2114+ "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.14.4.tgz",
2115+ "integrity": "sha512-W6kenhnbd/YVvur+DKkaVJ6GldE53eLewur5AhUCqslYQ0vjZr8eWlOfwZnMiPB+PF5HMVqf61vXBvmyrAmPWg==",
2116+ "license": "MIT",
2117+ "dependencies": {
2118+ "@floating-ui/core": "^1.7.1",
2119+ "@floating-ui/dom": "^1.7.1",
2120+ "esm-env": "^1.1.2",
2121+ "runed": "^0.35.1",
2122+ "svelte-toolbelt": "^0.10.6",
2123+ "tabbable": "^6.2.0"
2124+ },
2125+ "engines": {
2126+ "node": ">=20"
2127+ },
2128+ "funding": {
2129+ "url": "https://github.com/sponsors/huntabyte"
2130+ },
2131+ "peerDependencies": {
2132+ "@internationalized/date": "^3.8.1",
2133+ "svelte": "^5.33.0"
2134+ }
2135+ },
20612136 "node_modules/brace-expansion": {
20622137 "version": "2.0.2",
20632138 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -2266,6 +2341,15 @@
22662341 "node": ">=0.10.0"
22672342 }
22682343 },
2344+ "node_modules/dequal": {
2345+ "version": "2.0.3",
2346+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
2347+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
2348+ "license": "MIT",
2349+ "engines": {
2350+ "node": ">=6"
2351+ }
2352+ },
22692353 "node_modules/detect-libc": {
22702354 "version": "1.0.3",
22712355 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
@@ -2929,6 +3013,12 @@
29293013 "dev": true,
29303014 "license": "ISC"
29313015 },
3016+ "node_modules/inline-style-parser": {
3017+ "version": "0.2.7",
3018+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
3019+ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
3020+ "license": "MIT"
3021+ },
29323022 "node_modules/is-extglob": {
29333023 "version": "2.1.1",
29343024 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -3366,6 +3456,15 @@
33663456 "dev": true,
33673457 "license": "MIT"
33683458 },
3459+ "node_modules/lz-string": {
3460+ "version": "1.5.0",
3461+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
3462+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
3463+ "license": "MIT",
3464+ "bin": {
3465+ "lz-string": "bin/bin.js"
3466+ }
3467+ },
33693468 "node_modules/magic-string": {
33703469 "version": "0.30.21",
33713470 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
@@ -3811,6 +3910,30 @@
38113910 "queue-microtask": "^1.2.2"
38123911 }
38133912 },
3913+ "node_modules/runed": {
3914+ "version": "0.35.1",
3915+ "resolved": "https://registry.npmjs.org/runed/-/runed-0.35.1.tgz",
3916+ "integrity": "sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==",
3917+ "funding": [
3918+ "https://github.com/sponsors/huntabyte",
3919+ "https://github.com/sponsors/tglide"
3920+ ],
3921+ "license": "MIT",
3922+ "dependencies": {
3923+ "dequal": "^2.0.3",
3924+ "esm-env": "^1.0.0",
3925+ "lz-string": "^1.5.0"
3926+ },
3927+ "peerDependencies": {
3928+ "@sveltejs/kit": "^2.21.0",
3929+ "svelte": "^5.7.0"
3930+ },
3931+ "peerDependenciesMeta": {
3932+ "@sveltejs/kit": {
3933+ "optional": true
3934+ }
3935+ }
3936+ },
38143937 "node_modules/sade": {
38153938 "version": "1.8.1",
38163939 "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
@@ -3906,6 +4029,15 @@
39064029 "url": "https://github.com/sponsors/sindresorhus"
39074030 }
39084031 },
4032+ "node_modules/style-to-object": {
4033+ "version": "1.0.14",
4034+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
4035+ "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
4036+ "license": "MIT",
4037+ "dependencies": {
4038+ "inline-style-parser": "0.2.7"
4039+ }
4040+ },
39094041 "node_modules/supports-color": {
39104042 "version": "7.2.0",
39114043 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -3988,12 +4120,70 @@
39884120 }
39894121 }
39904122 },
4123+ "node_modules/svelte-toolbelt": {
4124+ "version": "0.10.6",
4125+ "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz",
4126+ "integrity": "sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==",
4127+ "funding": [
4128+ "https://github.com/sponsors/huntabyte"
4129+ ],
4130+ "dependencies": {
4131+ "clsx": "^2.1.1",
4132+ "runed": "^0.35.1",
4133+ "style-to-object": "^1.0.8"
4134+ },
4135+ "engines": {
4136+ "node": ">=18",
4137+ "pnpm": ">=8.7.0"
4138+ },
4139+ "peerDependencies": {
4140+ "svelte": "^5.30.2"
4141+ }
4142+ },
4143+ "node_modules/tabbable": {
4144+ "version": "6.3.0",
4145+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz",
4146+ "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==",
4147+ "license": "MIT"
4148+ },
4149+ "node_modules/tailwind-merge": {
4150+ "version": "3.4.0",
4151+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz",
4152+ "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==",
4153+ "license": "MIT",
4154+ "peer": true,
4155+ "funding": {
4156+ "type": "github",
4157+ "url": "https://github.com/sponsors/dcastil"
4158+ }
4159+ },
4160+ "node_modules/tailwind-variants": {
4161+ "version": "3.2.2",
4162+ "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz",
4163+ "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==",
4164+ "dev": true,
4165+ "license": "MIT",
4166+ "engines": {
4167+ "node": ">=16.x",
4168+ "pnpm": ">=7.x"
4169+ },
4170+ "peerDependencies": {
4171+ "tailwind-merge": ">=3.0.0",
4172+ "tailwindcss": "*"
4173+ },
4174+ "peerDependenciesMeta": {
4175+ "tailwind-merge": {
4176+ "optional": true
4177+ }
4178+ }
4179+ },
39914180 "node_modules/tailwindcss": {
39924181 "version": "4.1.17",
39934182 "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz",
39944183 "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==",
39954184 "dev": true,
3996- "license": "MIT"
4185+ "license": "MIT",
4186+ "peer": true
39974187 },
39984188 "node_modules/tapable": {
39994189 "version": "2.3.0",
@@ -4091,6 +4281,22 @@
40914281 "typescript": ">=4.2.0"
40924282 }
40934283 },
4284+ "node_modules/tslib": {
4285+ "version": "2.8.1",
4286+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
4287+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
4288+ "license": "0BSD"
4289+ },
4290+ "node_modules/tw-animate-css": {
4291+ "version": "1.4.0",
4292+ "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz",
4293+ "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==",
4294+ "dev": true,
4295+ "license": "MIT",
4296+ "funding": {
4297+ "url": "https://github.com/sponsors/Wombosvideo"
4298+ }
4299+ },
40944300 "node_modules/type-check": {
40954301 "version": "0.4.0",
40964302 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -8,10 +8,14 @@
8 "name": "@dumber/gui",8 "name": "@dumber/gui",
9 "version": "0.1.0",9 "version": "0.1.0",
10 "dependencies": {10 "dependencies": {
11- "@lucide/svelte": "^0.556.0",11+ "bits-ui": "^2.14.4",
12- "frappe-charts": "^1.6.2"12+ "clsx": "^2.1.1",
13+ "frappe-charts": "^1.6.2",
14+ "tailwind-merge": "^3.4.0"
13 },15 },
14 "devDependencies": {16 "devDependencies": {
17+ "@internationalized/date": "^3.10.1",
18+ "@lucide/svelte": "^0.561.0",
15 "@sveltejs/vite-plugin-svelte": "^4.0.0",19 "@sveltejs/vite-plugin-svelte": "^4.0.0",
16 "@tailwindcss/cli": "^4.0.0",20 "@tailwindcss/cli": "^4.0.0",
17 "@tailwindcss/postcss": "^4.1.13",21 "@tailwindcss/postcss": "^4.1.13",
@@ -23,7 +27,9 @@
23 "postcss": "^8.4.47",27 "postcss": "^8.4.47",
24 "svelte": "^5.0.0",28 "svelte": "^5.0.0",
25 "svelte-check": "^4.0.0",29 "svelte-check": "^4.0.0",
30+ "tailwind-variants": "^3.2.2",
26 "tailwindcss": "^4.0.0",31 "tailwindcss": "^4.0.0",
32+ "tw-animate-css": "^1.4.0",
27 "typescript": "^5.3.0",33 "typescript": "^5.3.0",
28 "typescript-eslint": "^8.43.0",34 "typescript-eslint": "^8.43.0",
29 "vite": "^5.0.0"35 "vite": "^5.0.0"
@@ -520,6 +526,31 @@
520 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"526 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
521 }527 }
522 },528 },
529+ "node_modules/@floating-ui/core": {
530+ "version": "1.7.3",
531+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
532+ "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
533+ "license": "MIT",
534+ "dependencies": {
535+ "@floating-ui/utils": "^0.2.10"
536+ }
537+ },
538+ "node_modules/@floating-ui/dom": {
539+ "version": "1.7.4",
540+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
541+ "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
542+ "license": "MIT",
543+ "dependencies": {
544+ "@floating-ui/core": "^1.7.3",
545+ "@floating-ui/utils": "^0.2.10"
546+ }
547+ },
548+ "node_modules/@floating-ui/utils": {
549+ "version": "0.2.10",
550+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
551+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
552+ "license": "MIT"
553+ },
523 "node_modules/@humanwhocodes/config-array": {554 "node_modules/@humanwhocodes/config-array": {
524 "version": "0.13.0",555 "version": "0.13.0",
525 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",556 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
@@ -582,6 +613,16 @@
582 "dev": true,613 "dev": true,
583 "license": "BSD-3-Clause"614 "license": "BSD-3-Clause"
584 },615 },
616+ "node_modules/@internationalized/date": {
617+ "version": "3.10.1",
618+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
619+ "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
620+ "license": "Apache-2.0",
621+ "peer": true,
622+ "dependencies": {
623+ "@swc/helpers": "^0.5.0"
624+ }
625+ },
585 "node_modules/@jridgewell/gen-mapping": {626 "node_modules/@jridgewell/gen-mapping": {
586 "version": "0.3.13",627 "version": "0.3.13",
587 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",628 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -628,9 +669,10 @@
628 }669 }
629 },670 },
630 "node_modules/@lucide/svelte": {671 "node_modules/@lucide/svelte": {
631- "version": "0.556.0",672+ "version": "0.561.0",
632- "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.556.0.tgz",673+ "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.561.0.tgz",
633- "integrity": "sha512-jsJhyyd2xrJ4WtflO5TrTtyCBacF4OLBNCzotvwh4zfbbuE6aqdblx+OB0zg6zOno06ib1GJGdDcfR/2TUcb7g==",674+ "integrity": "sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==",
675+ "dev": true,
634 "license": "ISC",676 "license": "ISC",
635 "peerDependencies": {677 "peerDependencies": {
636 "svelte": "^5"678 "svelte": "^5"
@@ -1341,6 +1383,15 @@
1341 "vite": "^5.0.0"1383 "vite": "^5.0.0"
1342 }1384 }
1343 },1385 },
1386+ "node_modules/@swc/helpers": {
1387+ "version": "0.5.17",
1388+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
1389+ "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
1390+ "license": "Apache-2.0",
1391+ "dependencies": {
1392+ "tslib": "^2.8.0"
1393+ }
1394+ },
1344 "node_modules/@tailwindcss/cli": {1395 "node_modules/@tailwindcss/cli": {
1345 "version": "4.1.17",1396 "version": "4.1.17",
1346 "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.17.tgz",1397 "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.17.tgz",
@@ -2058,6 +2109,30 @@
2058 "baseline-browser-mapping": "dist/cli.js"2109 "baseline-browser-mapping": "dist/cli.js"
2059 }2110 }
2060 },2111 },
2112+ "node_modules/bits-ui": {
2113+ "version": "2.14.4",
2114+ "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.14.4.tgz",
2115+ "integrity": "sha512-W6kenhnbd/YVvur+DKkaVJ6GldE53eLewur5AhUCqslYQ0vjZr8eWlOfwZnMiPB+PF5HMVqf61vXBvmyrAmPWg==",
2116+ "license": "MIT",
2117+ "dependencies": {
2118+ "@floating-ui/core": "^1.7.1",
2119+ "@floating-ui/dom": "^1.7.1",
2120+ "esm-env": "^1.1.2",
2121+ "runed": "^0.35.1",
2122+ "svelte-toolbelt": "^0.10.6",
2123+ "tabbable": "^6.2.0"
2124+ },
2125+ "engines": {
2126+ "node": ">=20"
2127+ },
2128+ "funding": {
2129+ "url": "https://github.com/sponsors/huntabyte"
2130+ },
2131+ "peerDependencies": {
2132+ "@internationalized/date": "^3.8.1",
2133+ "svelte": "^5.33.0"
2134+ }
2135+ },
2061 "node_modules/brace-expansion": {2136 "node_modules/brace-expansion": {
2062 "version": "2.0.2",2137 "version": "2.0.2",
2063 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",2138 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -2266,6 +2341,15 @@
2266 "node": ">=0.10.0"2341 "node": ">=0.10.0"
2267 }2342 }
2268 },2343 },
2344+ "node_modules/dequal": {
2345+ "version": "2.0.3",
2346+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
2347+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
2348+ "license": "MIT",
2349+ "engines": {
2350+ "node": ">=6"
2351+ }
2352+ },
2269 "node_modules/detect-libc": {2353 "node_modules/detect-libc": {
2270 "version": "1.0.3",2354 "version": "1.0.3",
2271 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",2355 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
@@ -2929,6 +3013,12 @@
2929 "dev": true,3013 "dev": true,
2930 "license": "ISC"3014 "license": "ISC"
2931 },3015 },
3016+ "node_modules/inline-style-parser": {
3017+ "version": "0.2.7",
3018+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
3019+ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
3020+ "license": "MIT"
3021+ },
2932 "node_modules/is-extglob": {3022 "node_modules/is-extglob": {
2933 "version": "2.1.1",3023 "version": "2.1.1",
2934 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",3024 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -3366,6 +3456,15 @@
3366 "dev": true,3456 "dev": true,
3367 "license": "MIT"3457 "license": "MIT"
3368 },3458 },
3459+ "node_modules/lz-string": {
3460+ "version": "1.5.0",
3461+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
3462+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
3463+ "license": "MIT",
3464+ "bin": {
3465+ "lz-string": "bin/bin.js"
3466+ }
3467+ },
3369 "node_modules/magic-string": {3468 "node_modules/magic-string": {
3370 "version": "0.30.21",3469 "version": "0.30.21",
3371 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",3470 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
@@ -3811,6 +3910,30 @@
3811 "queue-microtask": "^1.2.2"3910 "queue-microtask": "^1.2.2"
3812 }3911 }
3813 },3912 },
3913+ "node_modules/runed": {
3914+ "version": "0.35.1",
3915+ "resolved": "https://registry.npmjs.org/runed/-/runed-0.35.1.tgz",
3916+ "integrity": "sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==",
3917+ "funding": [
3918+ "https://github.com/sponsors/huntabyte",
3919+ "https://github.com/sponsors/tglide"
3920+ ],
3921+ "license": "MIT",
3922+ "dependencies": {
3923+ "dequal": "^2.0.3",
3924+ "esm-env": "^1.0.0",
3925+ "lz-string": "^1.5.0"
3926+ },
3927+ "peerDependencies": {
3928+ "@sveltejs/kit": "^2.21.0",
3929+ "svelte": "^5.7.0"
3930+ },
3931+ "peerDependenciesMeta": {
3932+ "@sveltejs/kit": {
3933+ "optional": true
3934+ }
3935+ }
3936+ },
3814 "node_modules/sade": {3937 "node_modules/sade": {
3815 "version": "1.8.1",3938 "version": "1.8.1",
3816 "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",3939 "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
@@ -3906,6 +4029,15 @@
3906 "url": "https://github.com/sponsors/sindresorhus"4029 "url": "https://github.com/sponsors/sindresorhus"
3907 }4030 }
3908 },4031 },
4032+ "node_modules/style-to-object": {
4033+ "version": "1.0.14",
4034+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
4035+ "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
4036+ "license": "MIT",
4037+ "dependencies": {
4038+ "inline-style-parser": "0.2.7"
4039+ }
4040+ },
3909 "node_modules/supports-color": {4041 "node_modules/supports-color": {
3910 "version": "7.2.0",4042 "version": "7.2.0",
3911 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",4043 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -3988,12 +4120,70 @@
3988 }4120 }
3989 }4121 }
3990 },4122 },
4123+ "node_modules/svelte-toolbelt": {
4124+ "version": "0.10.6",
4125+ "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz",
4126+ "integrity": "sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==",
4127+ "funding": [
4128+ "https://github.com/sponsors/huntabyte"
4129+ ],
4130+ "dependencies": {
4131+ "clsx": "^2.1.1",
4132+ "runed": "^0.35.1",
4133+ "style-to-object": "^1.0.8"
4134+ },
4135+ "engines": {
4136+ "node": ">=18",
4137+ "pnpm": ">=8.7.0"
4138+ },
4139+ "peerDependencies": {
4140+ "svelte": "^5.30.2"
4141+ }
4142+ },
4143+ "node_modules/tabbable": {
4144+ "version": "6.3.0",
4145+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz",
4146+ "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==",
4147+ "license": "MIT"
4148+ },
4149+ "node_modules/tailwind-merge": {
4150+ "version": "3.4.0",
4151+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz",
4152+ "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==",
4153+ "license": "MIT",
4154+ "peer": true,
4155+ "funding": {
4156+ "type": "github",
4157+ "url": "https://github.com/sponsors/dcastil"
4158+ }
4159+ },
4160+ "node_modules/tailwind-variants": {
4161+ "version": "3.2.2",
4162+ "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz",
4163+ "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==",
4164+ "dev": true,
4165+ "license": "MIT",
4166+ "engines": {
4167+ "node": ">=16.x",
4168+ "pnpm": ">=7.x"
4169+ },
4170+ "peerDependencies": {
4171+ "tailwind-merge": ">=3.0.0",
4172+ "tailwindcss": "*"
4173+ },
4174+ "peerDependenciesMeta": {
4175+ "tailwind-merge": {
4176+ "optional": true
4177+ }
4178+ }
4179+ },
3991 "node_modules/tailwindcss": {4180 "node_modules/tailwindcss": {
3992 "version": "4.1.17",4181 "version": "4.1.17",
3993 "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz",4182 "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz",
3994 "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==",4183 "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==",
3995 "dev": true,4184 "dev": true,
3996- "license": "MIT"4185+ "license": "MIT",
4186+ "peer": true
3997 },4187 },
3998 "node_modules/tapable": {4188 "node_modules/tapable": {
3999 "version": "2.3.0",4189 "version": "2.3.0",
@@ -4091,6 +4281,22 @@
4091 "typescript": ">=4.2.0"4281 "typescript": ">=4.2.0"
4092 }4282 }
4093 },4283 },
4284+ "node_modules/tslib": {
4285+ "version": "2.8.1",
4286+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
4287+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
4288+ "license": "0BSD"
4289+ },
4290+ "node_modules/tw-animate-css": {
4291+ "version": "1.4.0",
4292+ "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz",
4293+ "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==",
4294+ "dev": true,
4295+ "license": "MIT",
4296+ "funding": {
4297+ "url": "https://github.com/sponsors/Wombosvideo"
4298+ }
4299+ },
4094 "node_modules/type-check": {4300 "node_modules/type-check": {
4095 "version": "0.4.0",4301 "version": "0.4.0",
4096 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",4302 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
M webui/package.json +11 -5
@@ -4,19 +4,21 @@
44 "private": true,
55 "type": "module",
66 "scripts": {
7- "build": "VITE_PAGE=homepage vite build && VITE_PAGE=blocked vite build && VITE_PAGE=config vite build",
7+ "build": "VITE_PAGE=homepage vite build && VITE_PAGE=error vite build && VITE_PAGE=config vite build",
88 "build:homepage": "VITE_PAGE=homepage vite build",
9- "build:blocked": "VITE_PAGE=blocked vite build",
9+ "build:error": "VITE_PAGE=error vite build",
1010 "build:config": "VITE_PAGE=config vite build",
1111 "dev": "VITE_PAGE=homepage vite build --watch",
1212 "dev:homepage": "VITE_PAGE=homepage vite build --watch",
13- "dev:blocked": "VITE_PAGE=blocked vite build --watch",
13+ "dev:error": "VITE_PAGE=error vite build --watch",
1414 "dev:config": "VITE_PAGE=config vite build --watch",
1515 "check": "svelte-check",
1616 "lint": "eslint src --fix",
1717 "fmt": "prettier --write ."
1818 },
1919 "devDependencies": {
20+ "@internationalized/date": "^3.10.1",
21+ "@lucide/svelte": "^0.561.0",
2022 "@sveltejs/vite-plugin-svelte": "^4.0.0",
2123 "@tailwindcss/cli": "^4.0.0",
2224 "@tailwindcss/postcss": "^4.1.13",
@@ -28,13 +30,17 @@
2830 "postcss": "^8.4.47",
2931 "svelte": "^5.0.0",
3032 "svelte-check": "^4.0.0",
33+ "tailwind-variants": "^3.2.2",
3134 "tailwindcss": "^4.0.0",
35+ "tw-animate-css": "^1.4.0",
3236 "typescript": "^5.3.0",
3337 "typescript-eslint": "^8.43.0",
3438 "vite": "^5.0.0"
3539 },
3640 "dependencies": {
37- "@lucide/svelte": "^0.556.0",
38- "frappe-charts": "^1.6.2"
41+ "bits-ui": "^2.14.4",
42+ "clsx": "^2.1.1",
43+ "frappe-charts": "^1.6.2",
44+ "tailwind-merge": "^3.4.0"
3945 }
4046 }
@@ -4,19 +4,21 @@
4 "private": true,4 "private": true,
5 "type": "module",5 "type": "module",
6 "scripts": {6 "scripts": {
7- "build": "VITE_PAGE=homepage vite build && VITE_PAGE=blocked vite build && VITE_PAGE=config vite build",7+ "build": "VITE_PAGE=homepage vite build && VITE_PAGE=error vite build && VITE_PAGE=config vite build",
8 "build:homepage": "VITE_PAGE=homepage vite build",8 "build:homepage": "VITE_PAGE=homepage vite build",
9- "build:blocked": "VITE_PAGE=blocked vite build",9+ "build:error": "VITE_PAGE=error vite build",
10 "build:config": "VITE_PAGE=config vite build",10 "build:config": "VITE_PAGE=config vite build",
11 "dev": "VITE_PAGE=homepage vite build --watch",11 "dev": "VITE_PAGE=homepage vite build --watch",
12 "dev:homepage": "VITE_PAGE=homepage vite build --watch",12 "dev:homepage": "VITE_PAGE=homepage vite build --watch",
13- "dev:blocked": "VITE_PAGE=blocked vite build --watch",13+ "dev:error": "VITE_PAGE=error vite build --watch",
14 "dev:config": "VITE_PAGE=config vite build --watch",14 "dev:config": "VITE_PAGE=config vite build --watch",
15 "check": "svelte-check",15 "check": "svelte-check",
16 "lint": "eslint src --fix",16 "lint": "eslint src --fix",
17 "fmt": "prettier --write ."17 "fmt": "prettier --write ."
18 },18 },
19 "devDependencies": {19 "devDependencies": {
20+ "@internationalized/date": "^3.10.1",
21+ "@lucide/svelte": "^0.561.0",
20 "@sveltejs/vite-plugin-svelte": "^4.0.0",22 "@sveltejs/vite-plugin-svelte": "^4.0.0",
21 "@tailwindcss/cli": "^4.0.0",23 "@tailwindcss/cli": "^4.0.0",
22 "@tailwindcss/postcss": "^4.1.13",24 "@tailwindcss/postcss": "^4.1.13",
@@ -28,13 +30,17 @@
28 "postcss": "^8.4.47",30 "postcss": "^8.4.47",
29 "svelte": "^5.0.0",31 "svelte": "^5.0.0",
30 "svelte-check": "^4.0.0",32 "svelte-check": "^4.0.0",
33+ "tailwind-variants": "^3.2.2",
31 "tailwindcss": "^4.0.0",34 "tailwindcss": "^4.0.0",
35+ "tw-animate-css": "^1.4.0",
32 "typescript": "^5.3.0",36 "typescript": "^5.3.0",
33 "typescript-eslint": "^8.43.0",37 "typescript-eslint": "^8.43.0",
34 "vite": "^5.0.0"38 "vite": "^5.0.0"
35 },39 },
36 "dependencies": {40 "dependencies": {
37- "@lucide/svelte": "^0.556.0",41+ "bits-ui": "^2.14.4",
38- "frappe-charts": "^1.6.2"42+ "clsx": "^2.1.1",
43+ "frappe-charts": "^1.6.2",
44+ "tailwind-merge": "^3.4.0"
39 }45 }
40 }46 }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close