diff --git a/docs/app/reflex.lock/bun.lock b/docs/app/reflex.lock/bun.lock index c5c50b701f5..9a75ebb5ecb 100644 --- a/docs/app/reflex.lock/bun.lock +++ b/docs/app/reflex.lock/bun.lock @@ -83,7 +83,7 @@ "postcss": "8.5.14", "postcss-import": "16.1.1", "tailwindcss": "4.3.0", - "vite": "8.0.12", + "vite": "8.0.14", }, }, }, @@ -93,45 +93,45 @@ "packages": { "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], - "@babel/compat-data": ["@babel/compat-data@7.29.3", "", {}, "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg=="], + "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], - "@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "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-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "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-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], - "@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], + "@babel/generator": ["@babel/generator@7.29.7", "", { "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ=="], - "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], + "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" } }, "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw=="], - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], - "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.29.3", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.29.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA=="], + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.29.7", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.29.7", "@babel/helper-member-expression-to-functions": "^7.29.7", "@babel/helper-optimise-call-expression": "^7.29.7", "@babel/helper-replace-supers": "^7.29.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", "@babel/traverse": "^7.29.7", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg=="], - "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], - "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.28.5", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="], + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg=="], - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="], + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="], + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], - "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" } }, "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong=="], - "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.28.6", "", {}, "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug=="], + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], - "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.28.6", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg=="], + "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.29.7", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.29.7", "@babel/helper-optimise-call-expression": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ=="], - "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg=="], + "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ=="], - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], - "@babel/helpers": ["@babel/helpers@7.29.2", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.29.0" } }, "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw=="], + "@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], - "@babel/parser": ["@babel/parser@7.29.3", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA=="], + "@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], "@babel/plugin-proposal-export-namespace-from": ["@babel/plugin-proposal-export-namespace-from@7.18.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA=="], @@ -139,23 +139,23 @@ "@babel/plugin-syntax-export-namespace-from": ["@babel/plugin-syntax-export-namespace-from@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q=="], - "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w=="], + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A=="], - "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A=="], + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA=="], - "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.28.6", "", { "dependencies": { "@babel/helper-module-transforms": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA=="], + "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.29.7", "", { "dependencies": { "@babel/helper-module-transforms": "^7.29.7", "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ=="], - "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.28.6", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw=="], + "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.29.7", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.29.7", "@babel/helper-create-class-features-plugin": "^7.29.7", "@babel/helper-plugin-utils": "^7.29.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", "@babel/plugin-syntax-typescript": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw=="], - "@babel/preset-typescript": ["@babel/preset-typescript@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-typescript": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g=="], + "@babel/preset-typescript": ["@babel/preset-typescript@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "@babel/plugin-syntax-jsx": "^7.29.7", "@babel/plugin-transform-modules-commonjs": "^7.29.7", "@babel/plugin-transform-typescript": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ=="], - "@babel/runtime": ["@babel/runtime@7.29.2", "", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="], + "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], - "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], + "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], - "@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], + "@babel/traverse": ["@babel/traverse@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/types": "^7.29.7", "debug": "^4.3.1" } }, "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw=="], - "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + "@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], "@base-ui/react": ["@base-ui/react@1.5.0", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@base-ui/utils": "0.2.9", "@floating-ui/react-dom": "^2.1.8", "@floating-ui/utils": "^0.2.11", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@date-fns/tz": "^1.2.0", "@types/react": "^17 || ^18 || ^19", "date-fns": "^4.0.0", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@date-fns/tz", "@types/react", "date-fns"] }, "sha512-z1gSAlced1yY+iM+mHDEtIkD8UI3Ebs52MuBPxvV6f5hRutk+xvCH/wuB7hDqDzK9JG5FoMz5nhrqtSs1wjt1A=="], @@ -261,7 +261,7 @@ "@hugeicons/react": ["@hugeicons/react@1.1.6", "", { "peerDependencies": { "react": ">=16.0.0" } }, "sha512-c2LhXJMAW5wN1pC/smBXG0YPqUON6ceR/ZdXHCjEI9KvB+hjtqYjmzIxok5hAQOeXGz0WtORgCQMzqewFKAZwg=="], - "@inkeep/cxkit-color-mode": ["@inkeep/cxkit-color-mode@0.5.117", "", {}, "sha512-IyLd3aUyOk78B4Jn85Qbk8Rwcs17y51LAGskgCd2+l+0qpIkGUo17WJ2RDIv4vt7BZIYKZ7TzAP1ikNTuZ99kw=="], + "@inkeep/cxkit-color-mode": ["@inkeep/cxkit-color-mode@0.5.119", "", {}, "sha512-rWoNoZy6w/1lrQhnI43KseoEYMb3Q/+BoI8Bv3FyiKaXx7MIIV6VBtSBZni2Cc9/0Tnxp1xfAmBrJxyPUPUGzw=="], "@inkeep/cxkit-primitives": ["@inkeep/cxkit-primitives@0.5.115", "", { "dependencies": { "@inkeep/cxkit-color-mode": "^0.5.115", "@inkeep/cxkit-theme": "0.5.115", "@inkeep/cxkit-types": "0.5.115", "@radix-ui/number": "^1.1.1", "@radix-ui/primitive": "^1.1.1", "@radix-ui/react-avatar": "1.1.2", "@radix-ui/react-checkbox": "1.1.3", "@radix-ui/react-collection": "^1.1.7", "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-context": "^1.1.1", "@radix-ui/react-direction": "^1.1.1", "@radix-ui/react-dismissable-layer": "^1.1.5", "@radix-ui/react-focus-guards": "^1.1.1", "@radix-ui/react-focus-scope": "^1.1.2", "@radix-ui/react-hover-card": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-popover": "1.1.6", "@radix-ui/react-popper": "^1.2.7", "@radix-ui/react-portal": "^1.1.4", "@radix-ui/react-presence": "^1.1.2", "@radix-ui/react-primitive": "^2.0.2", "@radix-ui/react-scroll-area": "1.2.2", "@radix-ui/react-slot": "^1.2.0", "@radix-ui/react-tabs": "^1.1.4", "@radix-ui/react-tooltip": "1.1.6", "@radix-ui/react-use-callback-ref": "^1.1.0", "@radix-ui/react-use-controllable-state": "^1.1.0", "@radix-ui/react-use-layout-effect": "^1.1.1", "@zag-js/combobox": "^1.33.1", "@zag-js/focus-trap": "^1.33.1", "@zag-js/presence": "^1.33.1", "@zag-js/react": "^1.33.1", "altcha-lib": "^1.2.0", "aria-hidden": "^1.2.4", "dequal": "^2.0.3", "humps": "2.0.1", "lucide-react": "^0.503.0", "marked": "^15.0.9", "merge-anything": "5.1.7", "openai": "4.78.1", "prism-react-renderer": "2.4.1", "react-error-boundary": "^6.0.0", "react-hook-form": "7.54.2", "react-markdown": "9.0.3", "react-remove-scroll": "^2.7.1", "react-svg": "16.3.0", "react-textarea-autosize": "8.5.7", "rehype-raw": "7.0.0", "remark-gfm": "^4.0.1", "unist-util-visit": "^5.0.0", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-rOwRaqV+CdwXbOCWoB/kBV029wTL3sPEWnkdka/yOlblx6CQXDK0apM8NCAuCBEoNp1sTBnehaXFVz2SCa1uAg=="], @@ -333,7 +333,7 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], - "@oxc-project/types": ["@oxc-project/types@0.129.0", "", {}, "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg=="], + "@oxc-project/types": ["@oxc-project/types@0.132.0", "", {}, "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ=="], "@plotly/d3": ["@plotly/d3@3.8.2", "", {}, "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA=="], @@ -499,89 +499,89 @@ "@reduxjs/toolkit": ["@reduxjs/toolkit@2.12.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw=="], - "@remix-run/node-fetch-server": ["@remix-run/node-fetch-server@0.13.2", "", {}, "sha512-gPux086JQjK3PmYWe75unUXKRMsJjdxKs+lW46gg2B/vvSPRRoOdWriVUPktIXYd1Uglq1PTjGW/fWPuslSfag=="], + "@remix-run/node-fetch-server": ["@remix-run/node-fetch-server@0.13.3", "", {}, "sha512-UfjOXed/DQteaM5VyTfqTeGpHwyL2J5aoRGY6cydip4tt1ehNNeSwuXCC7AEGE0RWBs/7bgKxYkL/B/+UDe4AA=="], - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0", "", { "os": "android", "cpu": "arm64" }, "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.2", "", { "os": "android", "cpu": "arm64" }, "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ=="], - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w=="], - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA=="], - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA=="], - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0", "", { "os": "linux", "cpu": "arm" }, "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.2", "", { "os": "linux", "cpu": "arm" }, "sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w=="], - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ=="], + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig=="], - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw=="], - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg=="], + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA=="], - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA=="], + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ=="], - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.2", "", { "os": "linux", "cpu": "x64" }, "sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ=="], - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0", "", { "os": "linux", "cpu": "x64" }, "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.2", "", { "os": "linux", "cpu": "x64" }, "sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw=="], - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0", "", { "os": "none", "cpu": "arm64" }, "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.2", "", { "os": "none", "cpu": "arm64" }, "sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w=="], - "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg=="], + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.2", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ=="], - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A=="], - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0", "", { "os": "win32", "cpu": "x64" }, "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg=="], + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.2", "", { "os": "win32", "cpu": "x64" }, "sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0", "", {}, "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.60.4", "", { "os": "android", "cpu": "arm" }, "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.61.0", "", { "os": "android", "cpu": "arm" }, "sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.60.4", "", { "os": "android", "cpu": "arm64" }, "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.61.0", "", { "os": "android", "cpu": "arm64" }, "sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.60.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.61.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.60.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.61.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.60.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.61.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.60.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.61.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.60.4", "", { "os": "linux", "cpu": "arm" }, "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.61.0", "", { "os": "linux", "cpu": "arm" }, "sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.60.4", "", { "os": "linux", "cpu": "arm" }, "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.61.0", "", { "os": "linux", "cpu": "arm" }, "sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.60.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.61.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.60.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.61.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.61.0", "", { "os": "linux", "cpu": "none" }, "sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA=="], - "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw=="], + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.61.0", "", { "os": "linux", "cpu": "none" }, "sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.60.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.61.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA=="], - "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.60.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A=="], + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.61.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.61.0", "", { "os": "linux", "cpu": "none" }, "sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.61.0", "", { "os": "linux", "cpu": "none" }, "sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.60.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.61.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.60.4", "", { "os": "linux", "cpu": "x64" }, "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.61.0", "", { "os": "linux", "cpu": "x64" }, "sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.60.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.61.0", "", { "os": "linux", "cpu": "x64" }, "sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw=="], - "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.60.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA=="], + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.61.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.60.4", "", { "os": "none", "cpu": "arm64" }, "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.61.0", "", { "os": "none", "cpu": "arm64" }, "sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.60.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.61.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.60.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.61.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.60.4", "", { "os": "win32", "cpu": "x64" }, "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.61.0", "", { "os": "win32", "cpu": "x64" }, "sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.4", "", { "os": "win32", "cpu": "x64" }, "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.61.0", "", { "os": "win32", "cpu": "x64" }, "sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw=="], "@shikijs/core": ["@shikijs/core@3.3.0", "", { "dependencies": { "@shikijs/types": "3.3.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ=="], @@ -609,25 +609,25 @@ "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], - "@svta/cml-608": ["@svta/cml-608@1.0.1", "", {}, "sha512-Y/Ier9VPUSOBnf0bJqdDyTlPrt4dDB+jk5mYHa1bnD2kcRl8qn7KkW3PRuj4w1aVN+BS2eHmsLxodt7P2hylUg=="], + "@svta/cml-608": ["@svta/cml-608@1.0.2", "", {}, "sha512-ZEJ68330gcLKfvVv6Qifr1HR7+GldDUxzkjqSbqRK7jHtHSLSV1JAyDwlYe8+C7ABuY1bp8MpgJ4/Gg+jl+pLQ=="], - "@svta/cml-cmcd": ["@svta/cml-cmcd@1.0.1", "", { "peerDependencies": { "@svta/cml-cta": "1.0.1", "@svta/cml-structured-field-values": "1.0.1", "@svta/cml-utils": "1.0.1" } }, "sha512-eox305g+QUJgXqOLVrbgxeQHCgl90ewwQ9O2bIoo7m+hanR8Xswu5CknFnT5qqIbLOHfw80ug+raycoAFHTQ+w=="], + "@svta/cml-cmcd": ["@svta/cml-cmcd@2.3.2", "", { "peerDependencies": { "@svta/cml-structured-field-values": "1.1.3", "@svta/cml-utils": "1.5.0" } }, "sha512-SKBBjLmci0WK8HMjuv+36tVIMktonoOoxsXblOFZmB+ePPV2zjRMTD+2ZmE/1VEPJkKHENyhSjSHgJyeOlvZ1A=="], - "@svta/cml-cmsd": ["@svta/cml-cmsd@1.0.1", "", { "peerDependencies": { "@svta/cml-cta": "1.0.1", "@svta/cml-structured-field-values": "1.0.1", "@svta/cml-utils": "1.0.1" } }, "sha512-+nIB8PuSfb/qw+xGaArPhNqPm84tBJUbe3H1DnPL5QUsjSUI7mUIUQwAtRV1ZdEu0+80g9i0op79woB0OIwr/g=="], + "@svta/cml-cmsd": ["@svta/cml-cmsd@1.0.6", "", { "peerDependencies": { "@svta/cml-cta": "1.0.6", "@svta/cml-structured-field-values": "1.1.3", "@svta/cml-utils": "1.5.0" } }, "sha512-LUORV6bb0TbU4rSC2HoPqUCix1igLrXkRQXWiIyJo2OMzb14kAK/1jsW0mzY6up6w1GrjKQcjc6OwqJdo/zd/g=="], - "@svta/cml-cta": ["@svta/cml-cta@1.0.1", "", { "peerDependencies": { "@svta/cml-structured-field-values": "1.0.1", "@svta/cml-utils": "1.0.1" } }, "sha512-jcXqNIPv26bmFxIOFh8/c3+6WLH4qBjKpq9qTQcggDPoHuV1YBydMsJLOnYPDeK8rNMKcAkFLbnDRvyJthu5yw=="], + "@svta/cml-cta": ["@svta/cml-cta@1.0.6", "", { "peerDependencies": { "@svta/cml-structured-field-values": "1.1.3", "@svta/cml-utils": "1.5.0" } }, "sha512-l13/4myTX1EbRd38nY8J1umVY5UdR/nZO6CeKqVLXnMMIayg7/fu0TueZckjTA9Loal55MGK1xbHnXVjz7OUUw=="], - "@svta/cml-dash": ["@svta/cml-dash@1.0.1", "", { "peerDependencies": { "@svta/cml-utils": "1.0.1" } }, "sha512-lYnD1I7FUbbQND+xICI+kcRaRXuT+whKk27R8m8me5VMVu2sMsAMc7Yui6l9sxw2cBKt8pSETPYRm/1+n4LZkw=="], + "@svta/cml-dash": ["@svta/cml-dash@1.0.6", "", { "peerDependencies": { "@svta/cml-utils": "1.5.0" } }, "sha512-4XtHYlPrzL/dRe/8XmRQoLnTo9S86tISgrl67eUqKl5MtNTpZBYTncuPrspslPZPZROBBWNrBuepYfYUtU9CKA=="], - "@svta/cml-id3": ["@svta/cml-id3@1.0.1", "", { "peerDependencies": { "@svta/cml-utils": "1.0.1" } }, "sha512-90fGlL1qRI88CcaB89k6NG6cC3kky4Eu2jwqU4HefqK+S5k2OASUxf8JXkGz+DsdaiY7sh51vGPYdolfBZS7ug=="], + "@svta/cml-id3": ["@svta/cml-id3@1.0.6", "", { "peerDependencies": { "@svta/cml-utils": "1.5.0" } }, "sha512-63j8gkAnPOmOBWlp0hIZPvsIioZttdbg6/TgwITqMYbSLYVJ+6QGa/UtIP0I84NsfstANw6QdCn7i8SS08kn1A=="], - "@svta/cml-request": ["@svta/cml-request@1.0.1", "", { "peerDependencies": { "@svta/cml-utils": "1.0.1", "@svta/cml-xml": "1.0.1" } }, "sha512-enL19BuXUjFkDDDF9jdNwUclMNPRsagnjGAetVC7xcmpDMpEx+ZLgsDip6BFNg5p6izSEk/OyujTWW1r8bDNiA=="], + "@svta/cml-request": ["@svta/cml-request@1.0.12", "", { "peerDependencies": { "@svta/cml-cmcd": "2.3.2", "@svta/cml-utils": "1.5.0", "@svta/cml-xml": "1.1.4" } }, "sha512-4sJvnnoNpq58j2mCGP8k+MF6wVy/qa4gbt6kfT1dPIKmn3mPxw+JVfilhcWsUi+peK2yCZxOJJYyHj1cAcQE1w=="], - "@svta/cml-structured-field-values": ["@svta/cml-structured-field-values@1.0.1", "", { "peerDependencies": { "@svta/cml-utils": "1.0.1" } }, "sha512-Kibciki59Pon3Pn/sl5uyrbJcSpZQDKqdCfDrokBvOdLoqqcd0oFrkEPsZBiuuIODX1CB80612xe8hopeFDyBA=="], + "@svta/cml-structured-field-values": ["@svta/cml-structured-field-values@1.1.3", "", { "peerDependencies": { "@svta/cml-utils": "1.5.0" } }, "sha512-XqLzQOTznz6kh/nsSh8dy1kV7GQjL4csG+2U5EvLGhAqNuNUczbVg5EAsDobKDVg8xhdthdXx2UuwM+ZHQCxSg=="], - "@svta/cml-utils": ["@svta/cml-utils@1.0.1", "", {}, "sha512-kso3curTJfp00I1mKFoBliBApjn4aPE+wF8cPucf7TrSDVWZDeLLuF14ASmUE9m7rnrqTTK4878VvmXaXcCCfQ=="], + "@svta/cml-utils": ["@svta/cml-utils@1.5.0", "", {}, "sha512-JMqclD7Akd+GSJiuaYNUHOP2wNtf/nauKeszlYeivSHfi0Lp3pmSW5PXDvJ2dO4aPmmSOQbF0ztTsW9Vcs2Whw=="], - "@svta/cml-xml": ["@svta/cml-xml@1.0.1", "", { "peerDependencies": { "@svta/cml-utils": "1.0.1" } }, "sha512-11LkJa5kDEcsRMWkVI1ABH3KLCxGoiSVe4kQ293ItVj8ncTTQ7htmCGiJDjS+Cmy35UgF3e/vc0ysJIiWRTx2g=="], + "@svta/cml-xml": ["@svta/cml-xml@1.1.4", "", { "peerDependencies": { "@svta/cml-utils": "1.5.0" } }, "sha512-jbixqjiJIc16SGxylHwiOzO+DuhkGfuP+fJ9AHeVJKdFDKnabgfCDpnp6dvZpZnjMj4nHvzVtuUV7RISPIwYXw=="], "@tailwindcss/node": ["@tailwindcss/node@4.3.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.21.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.0" } }, "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g=="], @@ -789,37 +789,37 @@ "@xyflow/system": ["@xyflow/system@0.0.68", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-QDG2wxIG4qX+uF8yzm1ULVZrcXX3MxPBoxv7O52FWsX87qIImOqifUhfa/TwsvLdzn7ic2DDBH1uI8TKbdNTYA=="], - "@zag-js/anatomy": ["@zag-js/anatomy@1.40.0", "", {}, "sha512-oiB4uAaV//L38JluLVPtOHO3xvqambrfrXVOoq4kmNrBv1LLlCmFvrXA2HOR9lakn4ExK27XSUrKhUN7YlKjfQ=="], + "@zag-js/anatomy": ["@zag-js/anatomy@1.41.1", "", {}, "sha512-wBQVpl8TC9O5AjeJrnmNdJWEUYorTi7iklOcySeXIeaz6D7Y0YY0YbEOSFNsRTpn/NQHwkPejf3i5qkKavNHXw=="], - "@zag-js/collection": ["@zag-js/collection@1.40.0", "", { "dependencies": { "@zag-js/utils": "1.40.0" } }, "sha512-+3o1nvbcA9Kz2hDDFf8Kngpd+of33S4TS5Tb9KvrHlU5ieQdvEUtc7/pWG2aCTkGpmgda+j91akB6ZB8+oVkvA=="], + "@zag-js/collection": ["@zag-js/collection@1.41.1", "", { "dependencies": { "@zag-js/utils": "1.41.1" } }, "sha512-6Kun1lmkp3k+JHkcwCscrKNmPLAZNIeswpGvbbd3T5Qj7WX7b5A2Z926ZHUMicrXQinAtT90B9zrTurDdJZ4EQ=="], - "@zag-js/combobox": ["@zag-js/combobox@1.40.0", "", { "dependencies": { "@zag-js/anatomy": "1.40.0", "@zag-js/collection": "1.40.0", "@zag-js/core": "1.40.0", "@zag-js/dismissable": "1.40.0", "@zag-js/dom-query": "1.40.0", "@zag-js/focus-visible": "1.40.0", "@zag-js/live-region": "1.40.0", "@zag-js/popper": "1.40.0", "@zag-js/types": "1.40.0", "@zag-js/utils": "1.40.0" } }, "sha512-5IVCDrB8m7XrKBu28j7bIRE5KiyKJLPDZB3AJ+PLJyL69D+9z1anhLDmkUYcPseyCasszLKzIejby+kYQJgHlA=="], + "@zag-js/combobox": ["@zag-js/combobox@1.41.1", "", { "dependencies": { "@zag-js/anatomy": "1.41.1", "@zag-js/collection": "1.41.1", "@zag-js/core": "1.41.1", "@zag-js/dismissable": "1.41.1", "@zag-js/dom-query": "1.41.1", "@zag-js/focus-visible": "1.41.1", "@zag-js/live-region": "1.41.1", "@zag-js/popper": "1.41.1", "@zag-js/types": "1.41.1", "@zag-js/utils": "1.41.1" } }, "sha512-3IbG4VzCDDlZZD1t0puDQq1fC9OKRHtkeUG9Aq9e2+1OPhaSpzwkVI6GqIm0h52koB7plvgcvf4xkbBSC7tkBw=="], - "@zag-js/core": ["@zag-js/core@1.40.0", "", { "dependencies": { "@zag-js/dom-query": "1.40.0", "@zag-js/utils": "1.40.0" } }, "sha512-0YcqCh7TmhSonkbKM/7NWolxlaQgvvXgqedocW9oeRYiDJIpBZyRqnHPoGAS2XwbBPkCnrqSosxSF5yBjhZpgw=="], + "@zag-js/core": ["@zag-js/core@1.41.1", "", { "dependencies": { "@zag-js/dom-query": "1.41.1", "@zag-js/utils": "1.41.1" } }, "sha512-np7Tlf1EUK2ITojiX3aQy79LWIZhu4xxrS6pE8V/wD0h9JeQmhyNtyC147jqIE/AYjSunhMShsWp/+W1b5skjQ=="], - "@zag-js/dismissable": ["@zag-js/dismissable@1.40.0", "", { "dependencies": { "@zag-js/dom-query": "1.40.0", "@zag-js/interact-outside": "1.40.0", "@zag-js/utils": "1.40.0" } }, "sha512-bBkFvPg/zbYn31ZgEfx8not6s2Ekx7zU2sO8tGXb8rYPnHBfGDYEzVQansUStJn0Atzw+y7XR7B3G3u5AFQJKw=="], + "@zag-js/dismissable": ["@zag-js/dismissable@1.41.1", "", { "dependencies": { "@zag-js/dom-query": "1.41.1", "@zag-js/interact-outside": "1.41.1", "@zag-js/utils": "1.41.1" } }, "sha512-nM3j3lz8XaYfW755N+Itp08BVFYhKhjlQ3EiBlc3LYwse4h2K5O3FwK87Ckqd/rBKrAb4eYFCkGNFSvjk0U/8g=="], - "@zag-js/dom-query": ["@zag-js/dom-query@1.40.0", "", { "dependencies": { "@zag-js/types": "1.40.0" } }, "sha512-4J3EO2gHpZ1VZiGLuMlH6G1Tsp4gKB8PPt2yKeNQWYGEXyrHUXrvMhRUzv7Z4/2I1s1tnxlFG4F8ovB3kTpz/Q=="], + "@zag-js/dom-query": ["@zag-js/dom-query@1.41.1", "", { "dependencies": { "@zag-js/types": "1.41.1" } }, "sha512-f6hBV6fPc9Ok/Re/tsxqJ8NcgQzsASQ6YoulUKSQnZMGb7tr0Ks1IH3Hjy3+ARXvCaSjgDhPPXt5+bkieur4eg=="], - "@zag-js/focus-trap": ["@zag-js/focus-trap@1.40.0", "", { "dependencies": { "@zag-js/dom-query": "1.40.0" } }, "sha512-Q6W+DU7pix5rtRwoDnYzTYMkUV2kMWrFV0/EdNN3spFSvnUSkDWRmcNpzf+56AuCNeqsAZxaLJpsHLZkcT2xrw=="], + "@zag-js/focus-trap": ["@zag-js/focus-trap@1.41.1", "", { "dependencies": { "@zag-js/dom-query": "1.41.1" } }, "sha512-+KZpzvo4PQJI2M4GYRVgSEyD+X6Pu+paBS1zGlex0FLK+gzUVU0UnEtA1cSNS2oVMyHuu58mBZyYSCmeuMt5XA=="], - "@zag-js/focus-visible": ["@zag-js/focus-visible@1.40.0", "", { "dependencies": { "@zag-js/dom-query": "1.40.0" } }, "sha512-63byl/kLVzDYlnHFma4HKEKrqB1Vx2zg0sBmUSENPyh+Ia1xhEVVC5vu6GX7nu4t/8QRy3Jn0q7T5og81FGb1A=="], + "@zag-js/focus-visible": ["@zag-js/focus-visible@1.41.1", "", { "dependencies": { "@zag-js/dom-query": "1.41.1" } }, "sha512-uIPkVk7gTVFCEGuDTI/2f3tWEcbsX88SrjgIA31F/m3e5/ieDaeiTfq7pxn+naHwZKEhRNScAgwOpu2AQgc6ag=="], - "@zag-js/interact-outside": ["@zag-js/interact-outside@1.40.0", "", { "dependencies": { "@zag-js/dom-query": "1.40.0", "@zag-js/utils": "1.40.0" } }, "sha512-Fws+O4uD9vS0I5KVcf3U2tNjLKvqlv+RExFbTywckDLOCJ145M/pMQWTr1FHil04jk5PFyM1iGfsbom8tozHpQ=="], + "@zag-js/interact-outside": ["@zag-js/interact-outside@1.41.1", "", { "dependencies": { "@zag-js/dom-query": "1.41.1", "@zag-js/utils": "1.41.1" } }, "sha512-N31jT0bBzCLBtAn31wVFxuxiOnXemNT+lKjK9j5HBZgrqgA/L3RdeV59aZ4Ar02Bb6F6DxU+MImzVvfgra1e6A=="], - "@zag-js/live-region": ["@zag-js/live-region@1.40.0", "", {}, "sha512-i1Dx02KGcQOAZGNhkFe8kz26gYJcn7KsT/M1UovjS9RTbl9diY8ShiyfIAhqruoaHQyqsHMRh/f7Idu45HdiDA=="], + "@zag-js/live-region": ["@zag-js/live-region@1.41.1", "", {}, "sha512-kWrE/bXvscn37n02wnFyANO+0tkV6Wgzd04D0oxTkwMpTrkpb9lnPi0yUeHksDRWjzayOd4rFzUCMruQBd4r0Q=="], - "@zag-js/popper": ["@zag-js/popper@1.40.0", "", { "dependencies": { "@floating-ui/dom": "^1.7.6", "@zag-js/dom-query": "1.40.0", "@zag-js/utils": "1.40.0" } }, "sha512-rCkgqgwlpgMwcnuSVrZK2xXl1Mvptpuw3cZy6rC2C5F3yE1GmWohdts5VkeQNro+sd/xHTdVovOqY6cU9Htj1w=="], + "@zag-js/popper": ["@zag-js/popper@1.41.1", "", { "dependencies": { "@floating-ui/dom": "^1.7.6", "@zag-js/dom-query": "1.41.1", "@zag-js/utils": "1.41.1" } }, "sha512-y4WURt3LvOYYch1qVLC+iVP1fzFnkvLv57k6zXb33fYTtCuQvDFQQcAsbqXUe5J3dSNXKZzjXyzRqOid4rDacA=="], - "@zag-js/presence": ["@zag-js/presence@1.40.0", "", { "dependencies": { "@zag-js/core": "1.40.0", "@zag-js/dom-query": "1.40.0", "@zag-js/types": "1.40.0" } }, "sha512-P0bAuzEIDuMglE1xfmW5xTuSBlWjNZ8nOGXoIksKOKb+b+jy2Vys6WjZjKipV/jop4u85wfzKchcPc3C+cXuog=="], + "@zag-js/presence": ["@zag-js/presence@1.41.1", "", { "dependencies": { "@zag-js/core": "1.41.1", "@zag-js/dom-query": "1.41.1", "@zag-js/types": "1.41.1" } }, "sha512-MNC0iQEByXJ4BcjVM+A8hyWXXr0XeWi7VQRi9It7q46NOu0oguIIlRkNcZtQqzjxMHMWkn5FVRIwzj3eI3F+8A=="], - "@zag-js/react": ["@zag-js/react@1.40.0", "", { "dependencies": { "@zag-js/core": "1.40.0", "@zag-js/store": "1.40.0", "@zag-js/types": "1.40.0", "@zag-js/utils": "1.40.0" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-2TFS1HYABYGc0lurC+4WEXvKkpxsVv6vKm+t8QAL7wfoeZnw6HDQWLc91kINp89vln+A2kwCfYqIq8HSm+9EeA=="], + "@zag-js/react": ["@zag-js/react@1.41.1", "", { "dependencies": { "@zag-js/core": "1.41.1", "@zag-js/store": "1.41.1", "@zag-js/types": "1.41.1", "@zag-js/utils": "1.41.1" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-lphduGB974XvtYUVXhX53C+TzKmcvGjK5H/h9+Q4M+1AwQOq37wKjH3Kt8gV0g5SQ6nW+3RM54mhWdcQvsFQiw=="], - "@zag-js/store": ["@zag-js/store@1.40.0", "", { "dependencies": { "proxy-compare": "3.0.1" } }, "sha512-EmgYIdbNZ4TN4Qht/jugY4UVkaWx69l8P1qiX23U4YwqNLq10tyOJmcXWbvsrprU1dGb24B+xq0WBm/RIjw4WA=="], + "@zag-js/store": ["@zag-js/store@1.41.1", "", { "dependencies": { "proxy-compare": "3.0.1" } }, "sha512-1b6Kv/wvDwRLGjUI7cXvsW5KAB3TPux7FZ5W1264Qf2vaudd9HFoyMAftpI8VnKpcDF+z1t7skzr+4b0ZmFBsQ=="], - "@zag-js/types": ["@zag-js/types@1.40.0", "", { "dependencies": { "csstype": "3.2.3" } }, "sha512-LVvxEyqFv/u9SEe5xdivvG2vYb9cCmbkD+5r6s+IGljpDLaRgv4BYyxEh40ri1ai070tL08ZKmoLfx2/xfvY/A=="], + "@zag-js/types": ["@zag-js/types@1.41.1", "", { "dependencies": { "csstype": "3.2.3" } }, "sha512-xhKEX61yvNa/6yofkNe7IihKyt3JLe4/k5JxaH0hj46V4S2Kac2cNAXPgnWHbl1gXGBcfLr+qLFzo4oLl+VdwA=="], - "@zag-js/utils": ["@zag-js/utils@1.40.0", "", {}, "sha512-XUpqDtXfHe7CySjOhLPLj9H8rxbiFUJAGgmBzNdpsGPP4wx12cpOXrpSjRXZ2kMwooMPz/P7RPDBteto8sqhAQ=="], + "@zag-js/utils": ["@zag-js/utils@1.41.1", "", {}, "sha512-IZGqDpQYvgCQlGcLTVCzWG5DEz318ZLVJhp8TtT9HPDNd+RJTcVHRja7z+vqQ0Su+wKZkuLlIh5gtraxQ+YX9Q=="], "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], @@ -877,14 +877,10 @@ "base64-arraybuffer": ["base64-arraybuffer@1.0.2", "", {}, "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.10.31", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q=="], - - "bcp-47": ["bcp-47@2.1.0", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.33", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw=="], "bcp-47-match": ["bcp-47-match@2.0.3", "", {}, "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ=="], - "bcp-47-normalize": ["bcp-47-normalize@2.3.0", "", { "dependencies": { "bcp-47": "^2.0.0", "bcp-47-match": "^2.0.0" } }, "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q=="], - "binary-search-bounds": ["binary-search-bounds@2.0.5", "", {}, "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA=="], "bit-twiddle": ["bit-twiddle@1.0.2", "", {}, "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA=="], @@ -895,7 +891,7 @@ "blurhash": ["blurhash@2.0.5", "", {}, "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w=="], - "brace-expansion": ["brace-expansion@2.1.0", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w=="], + "brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], @@ -1053,7 +1049,7 @@ "dash-video-element": ["dash-video-element@0.3.2", "", { "dependencies": { "custom-media-element": "^1.4.6", "dashjs": "^5.0.3", "media-tracks": "^0.3.5" } }, "sha512-eN1IqgtTAbq4zVkbt82BDwQtybQ6WOXyQU5HbftUSnqo+SHAPbZCif1Y7uViAhgvuEPvZtbiXDiacvvTeGxc/g=="], - "dashjs": ["dashjs@5.1.1", "", { "dependencies": { "@svta/cml-608": "1.0.1", "@svta/cml-cmcd": "1.0.1", "@svta/cml-cmsd": "1.0.1", "@svta/cml-dash": "1.0.1", "@svta/cml-id3": "1.0.1", "@svta/cml-request": "1.0.1", "@svta/cml-xml": "1.0.1", "bcp-47-match": "^2.0.3", "bcp-47-normalize": "^2.3.0", "codem-isoboxer": "0.3.10", "fast-deep-equal": "3.1.3", "html-entities": "^2.5.2", "imsc": "^1.1.5", "localforage": "^1.10.0", "path-browserify": "^1.0.1", "ua-parser-js": "^1.0.37" } }, "sha512-BzNXlUgzEjhuZ5M5hlSp1qIyQHZ7NpXAR0loP9DAAFVZj/ntL1DHeZ7qp/L3bvI4rq50X5indkAZQ3zEHWJoCA=="], + "dashjs": ["dashjs@5.2.0", "", { "dependencies": { "@svta/cml-608": "1.0.2", "@svta/cml-cmcd": "2.3.2", "@svta/cml-cmsd": "1.0.6", "@svta/cml-dash": "1.0.6", "@svta/cml-id3": "1.0.6", "@svta/cml-request": "1.0.12", "@svta/cml-xml": "1.1.4", "bcp-47-match": "^2.0.3", "codem-isoboxer": "0.3.10", "fast-deep-equal": "3.1.3", "html-entities": "^2.6.0", "imsc": "^1.1.5", "localforage": "^1.10.0", "path-browserify": "^1.0.1" } }, "sha512-2W2KHFN53Sk7+rtdnIfSUK/3Oov+hraMTeVZwDOTSCNKM1cQtFiJdblNzRMnl59a/QDseG7JW+PC9mh/B+CMcg=="], "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], @@ -1093,7 +1089,7 @@ "earcut": ["earcut@2.2.4", "", {}, "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="], - "electron-to-chromium": ["electron-to-chromium@1.5.360", "", {}, "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA=="], + "electron-to-chromium": ["electron-to-chromium@1.5.364", "", {}, "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw=="], "elementary-circuits-directed-graph": ["elementary-circuits-directed-graph@1.3.1", "", { "dependencies": { "strongly-connected-components": "^1.0.1" } }, "sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ=="], @@ -1107,7 +1103,7 @@ "engine.io-parser": ["engine.io-parser@5.2.3", "", {}, "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="], - "enhanced-resolve": ["enhanced-resolve@5.21.6", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ=="], + "enhanced-resolve": ["enhanced-resolve@5.22.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww=="], "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], @@ -1119,11 +1115,11 @@ "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-toolkit": ["es-toolkit@1.46.1", "", {}, "sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ=="], + "es-toolkit": ["es-toolkit@1.47.0", "", {}, "sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw=="], "es5-ext": ["es5-ext@0.10.64", "", { "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", "esniff": "^2.0.1", "next-tick": "^1.1.0" } }, "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg=="], @@ -1277,7 +1273,7 @@ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="], + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], "hast-util-from-dom": ["hast-util-from-dom@5.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hastscript": "^9.0.0", "web-namespaces": "^2.0.0" } }, "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q=="], @@ -1619,7 +1615,7 @@ "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - "node-releases": ["node-releases@2.0.44", "", {}, "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ=="], + "node-releases": ["node-releases@2.0.46", "", {}, "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ=="], "normalize-svg-path": ["normalize-svg-path@0.1.0", "", {}, "sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA=="], @@ -1743,7 +1739,7 @@ "react-easy-swipe": ["react-easy-swipe@0.0.21", "", { "dependencies": { "prop-types": "^15.5.8" } }, "sha512-OeR2jAxdoqUMHIn/nS9fgreI5hSpgGoL5ezdal4+oO7YSSgJR8ga+PkYGJrSrJ9MKlPcQjMQXnketrD7WNmNsg=="], - "react-error-boundary": ["react-error-boundary@6.1.1", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w=="], + "react-error-boundary": ["react-error-boundary@6.1.2", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-3DpCr5HVdZ0caUjYE/kIHBEJN0mNP3ZCgf16c48uJ5TbWjorKVp+YG8W3XqlJ7vJAVNw6wNIImyPXmFydwmyng=="], "react-fast-compare": ["react-fast-compare@3.2.2", "", {}, "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="], @@ -1859,9 +1855,9 @@ "resolve-protobuf-schema": ["resolve-protobuf-schema@2.1.0", "", { "dependencies": { "protocol-buffers-schema": "^3.3.1" } }, "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ=="], - "rolldown": ["rolldown@1.0.0", "", { "dependencies": { "@oxc-project/types": "=0.129.0", "@rolldown/pluginutils": "1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0", "@rolldown/binding-darwin-arm64": "1.0.0", "@rolldown/binding-darwin-x64": "1.0.0", "@rolldown/binding-freebsd-x64": "1.0.0", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0", "@rolldown/binding-linux-arm64-gnu": "1.0.0", "@rolldown/binding-linux-arm64-musl": "1.0.0", "@rolldown/binding-linux-ppc64-gnu": "1.0.0", "@rolldown/binding-linux-s390x-gnu": "1.0.0", "@rolldown/binding-linux-x64-gnu": "1.0.0", "@rolldown/binding-linux-x64-musl": "1.0.0", "@rolldown/binding-openharmony-arm64": "1.0.0", "@rolldown/binding-wasm32-wasi": "1.0.0", "@rolldown/binding-win32-arm64-msvc": "1.0.0", "@rolldown/binding-win32-x64-msvc": "1.0.0" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA=="], + "rolldown": ["rolldown@1.0.2", "", { "dependencies": { "@oxc-project/types": "=0.132.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.2", "@rolldown/binding-darwin-arm64": "1.0.2", "@rolldown/binding-darwin-x64": "1.0.2", "@rolldown/binding-freebsd-x64": "1.0.2", "@rolldown/binding-linux-arm-gnueabihf": "1.0.2", "@rolldown/binding-linux-arm64-gnu": "1.0.2", "@rolldown/binding-linux-arm64-musl": "1.0.2", "@rolldown/binding-linux-ppc64-gnu": "1.0.2", "@rolldown/binding-linux-s390x-gnu": "1.0.2", "@rolldown/binding-linux-x64-gnu": "1.0.2", "@rolldown/binding-linux-x64-musl": "1.0.2", "@rolldown/binding-openharmony-arm64": "1.0.2", "@rolldown/binding-wasm32-wasi": "1.0.2", "@rolldown/binding-win32-arm64-msvc": "1.0.2", "@rolldown/binding-win32-x64-msvc": "1.0.2" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g=="], - "rollup": ["rollup@4.60.4", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.4", "@rollup/rollup-android-arm64": "4.60.4", "@rollup/rollup-darwin-arm64": "4.60.4", "@rollup/rollup-darwin-x64": "4.60.4", "@rollup/rollup-freebsd-arm64": "4.60.4", "@rollup/rollup-freebsd-x64": "4.60.4", "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", "@rollup/rollup-linux-arm-musleabihf": "4.60.4", "@rollup/rollup-linux-arm64-gnu": "4.60.4", "@rollup/rollup-linux-arm64-musl": "4.60.4", "@rollup/rollup-linux-loong64-gnu": "4.60.4", "@rollup/rollup-linux-loong64-musl": "4.60.4", "@rollup/rollup-linux-ppc64-gnu": "4.60.4", "@rollup/rollup-linux-ppc64-musl": "4.60.4", "@rollup/rollup-linux-riscv64-gnu": "4.60.4", "@rollup/rollup-linux-riscv64-musl": "4.60.4", "@rollup/rollup-linux-s390x-gnu": "4.60.4", "@rollup/rollup-linux-x64-gnu": "4.60.4", "@rollup/rollup-linux-x64-musl": "4.60.4", "@rollup/rollup-openbsd-x64": "4.60.4", "@rollup/rollup-openharmony-arm64": "4.60.4", "@rollup/rollup-win32-arm64-msvc": "4.60.4", "@rollup/rollup-win32-ia32-msvc": "4.60.4", "@rollup/rollup-win32-x64-gnu": "4.60.4", "@rollup/rollup-win32-x64-msvc": "4.60.4", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g=="], + "rollup": ["rollup@4.61.0", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.61.0", "@rollup/rollup-android-arm64": "4.61.0", "@rollup/rollup-darwin-arm64": "4.61.0", "@rollup/rollup-darwin-x64": "4.61.0", "@rollup/rollup-freebsd-arm64": "4.61.0", "@rollup/rollup-freebsd-x64": "4.61.0", "@rollup/rollup-linux-arm-gnueabihf": "4.61.0", "@rollup/rollup-linux-arm-musleabihf": "4.61.0", "@rollup/rollup-linux-arm64-gnu": "4.61.0", "@rollup/rollup-linux-arm64-musl": "4.61.0", "@rollup/rollup-linux-loong64-gnu": "4.61.0", "@rollup/rollup-linux-loong64-musl": "4.61.0", "@rollup/rollup-linux-ppc64-gnu": "4.61.0", "@rollup/rollup-linux-ppc64-musl": "4.61.0", "@rollup/rollup-linux-riscv64-gnu": "4.61.0", "@rollup/rollup-linux-riscv64-musl": "4.61.0", "@rollup/rollup-linux-s390x-gnu": "4.61.0", "@rollup/rollup-linux-x64-gnu": "4.61.0", "@rollup/rollup-linux-x64-musl": "4.61.0", "@rollup/rollup-openbsd-x64": "4.61.0", "@rollup/rollup-openharmony-arm64": "4.61.0", "@rollup/rollup-win32-arm64-msvc": "4.61.0", "@rollup/rollup-win32-ia32-msvc": "4.61.0", "@rollup/rollup-win32-x64-gnu": "4.61.0", "@rollup/rollup-win32-x64-msvc": "4.61.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g=="], "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], @@ -1873,7 +1869,7 @@ "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - "semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="], + "semver": ["semver@7.8.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg=="], "semver-compare": ["semver-compare@1.0.0", "", {}, "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="], @@ -1955,7 +1951,7 @@ "tinycolor2": ["tinycolor2@1.6.0", "", {}, "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="], - "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], "tinyqueue": ["tinyqueue@2.0.3", "", {}, "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="], @@ -1985,8 +1981,6 @@ "typedarray-pool": ["typedarray-pool@1.2.0", "", { "dependencies": { "bit-twiddle": "^1.0.0", "dup": "^1.0.0" } }, "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ=="], - "ua-parser-js": ["ua-parser-js@1.0.41", "", { "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug=="], - "undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], "unicode-emoji-modifier-base": ["unicode-emoji-modifier-base@1.0.0", "", {}, "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g=="], @@ -2029,7 +2023,7 @@ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - "valibot": ["valibot@1.4.0", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-iC/x7fVcSyOwlm/VSt7RlHnzNGLGvR9GnxdifUeWoCJo0q4ZZvrVkIHC6faTlkxG47I2Y4UrFquPuVHCrOnrLg=="], + "valibot": ["valibot@1.4.1", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-klCmFTz2jeDluy9RwX+F884TCiogtdBJ/YaxSx1EOBYXa3NXNWj8kR1jjN8rzluwojJVWWaHJ4r1U5LfICnM3g=="], "vaul": ["vaul@1.1.2", "", { "dependencies": { "@radix-ui/react-dialog": "^1.1.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA=="], @@ -2043,7 +2037,7 @@ "vimeo-video-element": ["vimeo-video-element@1.7.2", "", { "dependencies": { "@vimeo/player": "2.29.0", "media-played-ranges-mixin": "^0.1.0" } }, "sha512-7QM7fvSZvTTSq4igxBuO6Gc+0u3Exgk4IaLNixVzilCPzHEf7SN8b6YLXSM5QCs0ineTJI4XjiUCSoIbabHvwg=="], - "vite": ["vite@8.0.12", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.14", "rolldown": "1.0.0", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg=="], + "vite": ["vite@8.0.14", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.15", "rolldown": "1.0.2", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw=="], "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], @@ -2097,14 +2091,10 @@ "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@base-ui/utils/reselect": ["reselect@5.2.0", "", {}, "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw=="], - "@inkeep/cxkit-primitives/@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.2", "", { "dependencies": { "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig=="], "@inkeep/cxkit-primitives/@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw=="], - "@inkeep/cxkit-primitives/@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.8", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.3", "@radix-ui/react-primitive": "2.1.4", "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-67zGQT0wy7/XFIBSsmNbBd+3WekKbEtZVTIFJ7MpgfDQrEBv2gtf+z7C1zdZPMiw/jy5aDajEhRuIW5T3Y9n9Q=="], - "@inkeep/cxkit-primitives/@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.2", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.2", "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-slot": "1.1.2", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg=="], "@inkeep/cxkit-primitives/@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.2", "", { "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g=="], @@ -2129,8 +2119,6 @@ "@reduxjs/toolkit/redux": ["redux@5.0.1", "", {}, "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="], - "@reduxjs/toolkit/reselect": ["reselect@5.2.0", "", {}, "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], @@ -2211,8 +2199,6 @@ "rehype-sanitize/unified": ["unified@10.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^5.0.0" } }, "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q=="], - "rollup/@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], - "stream-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "string_decoder/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -2231,9 +2217,11 @@ "victory-vendor/d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + "vite/postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], + "vite-node/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "vite-node/vite": ["vite@7.3.3", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "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-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA=="], + "vite-node/vite": ["vite@7.3.5", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "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-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww=="], "@inkeep/cxkit-primitives/@radix-ui/react-avatar/@radix-ui/react-context": ["@radix-ui/react-context@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q=="], @@ -2259,12 +2247,6 @@ "@inkeep/cxkit-primitives/@radix-ui/react-checkbox/@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw=="], - "@inkeep/cxkit-primitives/@radix-ui/react-collection/@radix-ui/react-context": ["@radix-ui/react-context@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw=="], - - "@inkeep/cxkit-primitives/@radix-ui/react-collection/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], - - "@inkeep/cxkit-primitives/@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], - "@inkeep/cxkit-primitives/@radix-ui/react-popover/@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], "@inkeep/cxkit-primitives/@radix-ui/react-popover/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], @@ -2359,6 +2341,8 @@ "victory-vendor/d3-shape/d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], + "vite-node/vite/postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], + "@inkeep/cxkit-primitives/@radix-ui/react-avatar/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g=="], "@inkeep/cxkit-primitives/@radix-ui/react-checkbox/@radix-ui/react-presence/@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w=="], diff --git a/docs/app/reflex.lock/package.json b/docs/app/reflex.lock/package.json index c510989b352..3158ae2c5fe 100644 --- a/docs/app/reflex.lock/package.json +++ b/docs/app/reflex.lock/package.json @@ -84,7 +84,7 @@ "postcss": "8.5.14", "postcss-import": "16.1.1", "tailwindcss": "4.3.0", - "vite": "8.0.12" + "vite": "8.0.14" }, "overrides": { "cookie": "1.1.1" diff --git a/docs/app/reflex_docs/pages/__init__.py b/docs/app/reflex_docs/pages/__init__.py index 54d53b1c1d3..4f3ffac2dae 100644 --- a/docs/app/reflex_docs/pages/__init__.py +++ b/docs/app/reflex_docs/pages/__init__.py @@ -1,4 +1,3 @@ -from reflex_site_shared.gallery.apps import gallery_apps_routes from reflex_site_shared.pages.page404 import page404 # noqa: F401 from reflex_site_shared.route import Route @@ -8,5 +7,4 @@ routes = [ *[r for r in locals().values() if isinstance(r, Route) and r.add_as_page], *doc_routes, - *gallery_apps_routes, ] diff --git a/docs/app/reflex_docs/templates/docpage/sidebar/sidebar_items/learn.py b/docs/app/reflex_docs/templates/docpage/sidebar/sidebar_items/learn.py index 2953b06aa46..b3ec0daf506 100644 --- a/docs/app/reflex_docs/templates/docpage/sidebar/sidebar_items/learn.py +++ b/docs/app/reflex_docs/templates/docpage/sidebar/sidebar_items/learn.py @@ -14,7 +14,6 @@ def get_sidebar_items_learn(): getting_started.introduction, getting_started.basics, getting_started.project_structure, - getting_started.open_source_templates, ], ), create_item( diff --git a/docs/app/templates/api-admin-panel.md b/docs/app/templates/api-admin-panel.md deleted file mode 100644 index 97d796ba124..00000000000 --- a/docs/app/templates/api-admin-panel.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: api_admin_panel -description: "Interactive dashboard for API requests and response visualization" -author: "Reflex" -image: "api-admin-panel.webp" -demo: "https://api-admin-panel.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/api_admin_panel" -meta: [ - {"name": "keywords", "content": "admin panel, api admin panel, reflex admin panel"}, -] -tags: ["API Tools"] ---- - -The following is an admin panel for reading from and writing to your customer data, built on a REST API. This app lets you look through customers and take custom actions based on the data. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template api_admin_panel -``` - -To run the app, use: - -```bash -reflex run -``` - -## Usage - -To use the app insert the desired endpoint click `New Request` then in the input field and click on the `Send` button. You can optionally add a body, headers, and cookies to the request. The response will be displayed in the table. - -When clicking on a row the request and response will be displayed in the respective sections. You can further customize this app by adding custom actions to the rows and `Commit` and `Close` buttons. \ No newline at end of file diff --git a/docs/app/templates/chat-app.md b/docs/app/templates/chat-app.md deleted file mode 100644 index a3e189fa304..00000000000 --- a/docs/app/templates/chat-app.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: reflex-chat -description: "Real-time chat application with multiple rooms using Reflex and ChatGPT" -author: "Reflex" -image: "chat-app.webp" -demo: "https://chat.reflex.run/" -source: "https://github.com/reflex-dev/reflex-chat" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["AI/ML", "Chat"] ---- -# Chat App - -The following is a python chat app. It is 100% Python-based, including the UI, all using Reflex. Easily create and delete chat sessions. The application is fully customizable and no knowledge of web dev is required to use it and it has responsive design for various devices. - -## Usage - -To run this app locally, install Reflex and run: - -```bash -reflex init --template reflex-chat -``` - -Set up your OpenAI API key: -```bash -export OPENAI_API_KEY=your-openai-api-key -``` - -Install the dependencies and run the app: - -```bash -pip install -r requirements.txt -``` - -```bash -reflex run -``` - -## Customizing the Inference - -You can customize the app by modifying the `chat/state.py` file replacing `model = self.openai_process_question` with that of other LLM providers and writing your own process question function. diff --git a/docs/app/templates/ci-job.md b/docs/app/templates/ci-job.md deleted file mode 100644 index c87762097e6..00000000000 --- a/docs/app/templates/ci-job.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ci_template -description: "CI/CD job dashboard with real-time updates and controls" -author: "Reflex" -image: "cijob.webp" -demo: "https://cijob.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/ci_template" - -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["DevOps"] ---- - -In this example we will build a simple CI/CD job dashboard with real-time updates and controls. You can run, edit, and delete jobs on the dashboard as well as view the status of each job. - -## Usage - -To run this app locally, install Reflex and run: - -```bash -reflex init --template ci_template -``` - -To run the app, use: - -```bash -pip install -r requirements.txt -reflex run -``` diff --git a/docs/app/templates/customer-app.md b/docs/app/templates/customer-app.md deleted file mode 100644 index 06641af8c6f..00000000000 --- a/docs/app/templates/customer-app.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: customer_data_app -description: "A Reflex app for customer data management with visualizations" -author: "Reflex" -image: "customer-app.webp" -demo: "https://customer-data-app.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/customer_data_app" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["Data Visualization"] ---- - -The following is a python dashboard to interactively display some data, i.e. customer data. The app allows you to add, edit, and delete customer data in a table, as well as visualize the changes in data over time. All the data is stored in a database. It is a good starting point for building more complex apps that require data visualization and editing. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template customer_data_app -``` - -To run the app, use: - -```bash -pip install -r requirements.txt -reflex db migrate -reflex run -``` - - -## Setting an external Database - -It is also possible to set an external database so that your data is not lost every time the app closes and so you can deploy your app and maintain data. - -In the `rxconfig.py` file we accept a `DATABASE_URL` environment variable. - -To set one run the following command in your terminal: - -```bash -export DATABASE_URL="" -``` - - -## Customizing the Database Model - -We define our `Customer` model in the `customer_data_app/customer_data_app/backend/backend.py` file. The model is used to store customer data in the database. You can customize the model to input your own data here. - -It will also be necessary to edit some of the event handlers inside of `State` in the same file and to edit some of the UI components in `customer_data_app/customer_data_app/views/table.py` to reflect the changes in the model. diff --git a/docs/app/templates/dalle.md b/docs/app/templates/dalle.md deleted file mode 100644 index 2dbb5708e58..00000000000 --- a/docs/app/templates/dalle.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: dalle -description: "DALL-E is a Reflex app for generating images using OpenAI's API" -author: "Reflex" -image: "dalle.webp" -demo: "https://dalle.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/dalle" -meta: [ - {"name": "keywords", "content": ""}, -] -template: "dalle" -tags: ["AI/ML", "Image Generation"] ---- - -In this example we create a simple app for generating images using OpenAI's API. - -## Usage - -To run this app locally, install Reflex and run: - -```bash -reflex init --template dalle -``` - -Set up your OpenAI API key: -```bash -export OPEN_AI_KEY=your-openai-api-key -``` - -Install the dependencies and run the app: - -```bash -pip install -r requirements.txt -reflex run -``` - - diff --git a/docs/app/templates/dashboard.md b/docs/app/templates/dashboard.md deleted file mode 100644 index 4855eab1aec..00000000000 --- a/docs/app/templates/dashboard.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: dashboard -description: "Interactive dashboard with real-time data visualization" -author: "Reflex" -image: "dashboard.webp" -demo: "https://dashboard-new.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/dashboard" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["Dashboard", "Data Visualization"] ---- - -The following is a dashboard to interactively display data some data. It is a good starting point for building more complex apps that require data visualization. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template dashboard -``` - -To run the app, use: - -```bash -reflex run -``` - -## Customizing to your data - -Right now the apps reads from a local CSV file. You can modify this by changing the `DATA_FILE` variable in the `dashboard/dashboard/backend/table_state.py` file. - -Additionally you will want to change the `Item` class to match the data in your CSV file. - -```python -import dataclasses - - -@dataclasses.dataclass -class Item: - """The item class.""" - - name: str - payment: float - date: str - status: str -``` diff --git a/docs/app/templates/image-gen.md b/docs/app/templates/image-gen.md deleted file mode 100644 index ed8d7d493e8..00000000000 --- a/docs/app/templates/image-gen.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: ai_image_gen -description: "Generate AI images using Replicate's API" -author: "Reflex" -image: "image-gen.webp" -demo: "https://ai-image-gen.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/ai_image_gen" -meta: [ - {"name": "keywords", "content": "image generation, ai image generation, reflex image generation, Replicate image generation"}, -] -tags: ["AI/ML", "Image Generation"] ---- - -The following is an app that allows you to generate AI images. The current map uses replicate's api to generate images but can be easily modified to use other image generation services. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template ai_image_gen -``` - -To run the app, set the `REPLICATE_API_TOKEN`: - -```bash -export REPLICATE_API_TOKEN=your_api_token_here -``` - -Then run: - -```bash -pip install -r requirements.txt -reflex run -``` - -Note: You can get your replicate api token [here](https://replicate.com/account/api-tokens). - -## Customizing the Inference - -You can customize the app by modifying the [`generation.py`](https://github.com/reflex-dev/templates/blob/main/ai_image_gen/ai_image_gen/backend/generation.py) file replacing replicate's api with that of other image generation services. \ No newline at end of file diff --git a/docs/app/templates/llamaindex-app.md b/docs/app/templates/llamaindex-app.md deleted file mode 100644 index 012b8fc6334..00000000000 --- a/docs/app/templates/llamaindex-app.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: reflex-llamaindex-template -description: "A minimal chat app using LLamaIndex" -author: "Reflex" -image: "llamaindex.png" -source: "https://github.com/reflex-dev/reflex-llamaindex-template" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["AI/ML", "Chat"] ---- - -The following is an alternative UI to display the LLamaIndex app. - -## Prerequisites - -If you plan on deploying your agentic workflow to prod, follow the [llama deploy tutorial](https://github.com/run-llama/llama_deploy/tree/main) to deploy your agentic workflow. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template reflex-llamaindex-template -``` - - - -The following [lines](https://github.com/reflex-dev/reflex-llamaindex-template/blob/abfda49ff193ceb7da90c382e5cbdcb5fcdb665c/frontend/state.py#L55-L79) in the state.py file are where the app makes a request to your deployed agentic workflow. If you have not deployed your agentic workflow, you can edit this to call and api endpoint of your choice. - -```python -client = httpx.AsyncClient() - -# call the agentic workflow -input_payload = { - "chat_history_dicts": chat_history_dicts, - "user_input": question, -} -deployment_name = os.environ.get("DEPLOYMENT_NAME", "MyDeployment") -apiserver_url = os.environ.get("APISERVER_URL", "http://localhost:4501") -response = await client.post( - f"{apiserver_url}/deployments/{deployment_name}/tasks/create", - json={"input": json.dumps(input_payload)}, - timeout=60, -) -answer = response.text - -for i in range(len(answer)): - # Pause to show the streaming effect. - await asyncio.sleep(0.01) - # Add one letter at a time to the output. - self.chat_history[-1] = ( - self.chat_history[-1][0], - answer[: i + 1], - ) - yield -``` - -### Run the app - -Once you have set up your environment, install the dependencies and run the app: - -```bash -cd reflex-llamaindex-template -pip install -r requirements.txt -reflex run -``` - diff --git a/docs/app/templates/nba-app.md b/docs/app/templates/nba-app.md deleted file mode 100644 index acefcb81868..00000000000 --- a/docs/app/templates/nba-app.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: nba -description: "Interactive NBA app with player stats and live updates" -author: "Reflex" -image: "nba-app.webp" -demo: "https://nba-new.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/nba" -meta: [ - {"name": "keywords", "content": ""}, -] -template: "nba" -tags: ["Sports", "Data Visualization"] ---- - -The following is an app that displays NBA player stats from the 2015-2016 season. The table tab allows filtering and live updates. The graph tab shows the relationship between player stats. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template nba -``` - -To run the app, use: - -```bash -reflex run -``` \ No newline at end of file diff --git a/docs/app/templates/sales-app.md b/docs/app/templates/sales-app.md deleted file mode 100644 index bb860bfd896..00000000000 --- a/docs/app/templates/sales-app.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: sales -description: "Sales app with interactive charts and real-time data updates" -author: "Reflex" -image: "sales.webp" -demo: "https://sales-new.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/sales" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["Marketing", "Dashboard"] ---- - -The following is a sales app that displays sales data. The table tab allows filtering and live updates. The graph tab shows the relationship between sales data. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template sales -``` - -To run the app, use: - -Set the OpenAI API key: -``` -export OPEN_AI_KEY=your-openai-api-key -``` - -```bash -pip install -r requirements.txt -reflex run -``` - -## Customizing the Inference - -Note: You can get your OpenAI API key [here](https://platform.openai.com/account/api-keys). - -You can customize the app by modifying the `sales/sales/backend/backend.py` file replacing OpenAI's API with that of other LLM providers. \ No newline at end of file diff --git a/docs/getting_started/basics.md b/docs/getting_started/basics.md index d90d631b813..c28bd91158a 100644 --- a/docs/getting_started/basics.md +++ b/docs/getting_started/basics.md @@ -405,7 +405,6 @@ You've got the core pieces — components, state, events, compile-time vs. runti - [Dashboard tutorial](/docs/getting-started/dashboard-tutorial) — a data app with tables, forms, and state. - [Chatapp tutorial](/docs/getting-started/chatapp-tutorial) — streaming AI responses end-to-end. -- [Open-source templates](/docs/getting-started/open-source-templates) — full apps to fork. ``` ```md alert info diff --git a/docs/getting_started/installation.md b/docs/getting_started/installation.md index d0155e28968..a2a14c6bb0c 100644 --- a/docs/getting_started/installation.md +++ b/docs/getting_started/installation.md @@ -75,15 +75,14 @@ Bun requires runtime components of Visual C++ libraries to run on Windows. This ````` -Running `uv run reflex init` will return the option to start with a blank Reflex app, premade templates built by the Reflex team, or to try our [AI builder](https://build.reflex.dev/). +Running `uv run reflex init` will return the option to start with a blank Reflex app or to try our [AI builder](https://build.reflex.dev/). ```bash Initializing the web directory. Get started with a template: (0) A blank Reflex app. -(1) Premade templates built by the Reflex team. -(2) Try our AI builder. +(1) Try our AI builder. Which template would you like to use? (0): ``` diff --git a/docs/getting_started/introduction.md b/docs/getting_started/introduction.md index 81960a5c6e6..bb59b51b7ba 100644 --- a/docs/getting_started/introduction.md +++ b/docs/getting_started/introduction.md @@ -284,4 +284,4 @@ Create the app and register the page at the base route. - [Reflex Cloud](/docs/hosting/deploy-quick-start/) — one-command deploy. ``` -Browse our [open-source templates](/docs/getting-started/open-source-templates/), or press `Cmd+K` / `Ctrl+K` to search the docs. +Press `Cmd+K` / `Ctrl+K` to search the docs. diff --git a/docs/getting_started/open_source_templates.md b/docs/getting_started/open_source_templates.md deleted file mode 100644 index b9a07ed465f..00000000000 --- a/docs/getting_started/open_source_templates.md +++ /dev/null @@ -1,63 +0,0 @@ -# Open Source Templates - -Check out what the community is building with Reflex. See 2000+ more public projects on [Github](https://github.com/reflex-dev/reflex/network/dependents). Want to get your app featured? Submit it [here](https://github.com/reflex-dev/templates). Copy the template command and use it during `reflex init` - -```python exec -import reflex as rx - -from reflex_site_shared.components.code_card import gallery_app_card -from reflex_site_shared.gallery.sidebar import TemplatesState, pagination, sidebar - - -@rx.memo -def skeleton_card() -> rx.Component: - return rx.skeleton( - class_name="box-border shadow-large border rounded-xl w-full h-[280px] overflow-hidden", - loading=True, - ) - - -def component_grid() -> rx.Component: - from reflex_site_shared.gallery.apps import gallery_apps_data - - posts = [] - for path, document in list(gallery_apps_data.items()): - posts.append( - rx.cond( - TemplatesState.filtered_templates.contains(document.metadata["title"]), - gallery_app_card(app=document.metadata), - None, - ) - ) - return rx.box( - *posts, - rx.box( - rx.el.h4( - "No templates found", - class_name="text-base font-semibold text-slate-12 text-nowrap", - ), - class_name="flex-col gap-2 flex absolute left-1 top-0 z-[-1] w-full", - ), - class_name="gap-6 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 w-full relative", - ) - - -def gallery() -> rx.Component: - return rx.el.section( - rx.box( - sidebar(), - rx.box( - component_grid(), - pagination(), - class_name="flex flex-col", - ), - class_name="flex flex-col gap-6 lg:gap-10 w-full", - ), - id="gallery", - class_name="mx-auto", - ) -``` - -```python eval -gallery() -``` diff --git a/news/6592.misc.md b/news/6592.misc.md new file mode 100644 index 00000000000..ab18e878ab1 --- /dev/null +++ b/news/6592.misc.md @@ -0,0 +1 @@ +Removed the "choose templates" option from `reflex init`. The interactive prompt now offers only a blank app or the AI builder, and no longer opens the open-source templates page. diff --git a/packages/reflex-base/news/6592.misc.md b/packages/reflex-base/news/6592.misc.md new file mode 100644 index 00000000000..ba3c4c18eca --- /dev/null +++ b/packages/reflex-base/news/6592.misc.md @@ -0,0 +1 @@ +Removed the `Templates.CHOOSE_TEMPLATES` and `Templates.REFLEX_TEMPLATES_URL` constants, which supported the now-removed open-source templates `reflex init` option. diff --git a/packages/reflex-base/src/reflex_base/constants/base.py b/packages/reflex-base/src/reflex_base/constants/base.py index dc5d84bd788..620d9bd7ee0 100644 --- a/packages/reflex-base/src/reflex_base/constants/base.py +++ b/packages/reflex-base/src/reflex_base/constants/base.py @@ -101,8 +101,6 @@ class Reflex(SimpleNamespace): # The root directory of the reflex library. ROOT_DIR = Path(__file__).parents[1] - RELEASES_URL = "https://api.github.com/repos/reflex-dev/templates/releases" - # The reflex stylesheet language supported STYLESHEETS_SUPPORTED = ["css", "sass", "scss"] @@ -123,14 +121,6 @@ class Templates(SimpleNamespace): # The AI template AI = "ai" - # The option for the user to choose a remote template. - CHOOSE_TEMPLATES = "choose-templates" - - # The URL to find reflex templates. - REFLEX_TEMPLATES_URL = ( - "https://reflex.dev/docs/getting-started/open-source-templates/" - ) - # The reflex.build frontend host REFLEX_BUILD_FRONTEND = "https://build.reflex.dev" diff --git a/packages/reflex-site-shared/src/reflex_site_shared/components/code_card.py b/packages/reflex-site-shared/src/reflex_site_shared/components/code_card.py deleted file mode 100644 index a2e1fa0e413..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/components/code_card.py +++ /dev/null @@ -1,206 +0,0 @@ -"""Code Card module.""" - -import re - -import reflex_components_internal as ui - -import reflex as rx -from reflex.experimental.client_state import ClientStateVar -from reflex_site_shared.components.icons import get_icon - - -@rx.memo -def install_command( - command: rx.Var[str], - show_dollar_sign: rx.Var[bool] = True, -) -> rx.Component: - """Install command. - - Returns: - The component. - """ - copied = ClientStateVar.create("is_copied", default=False, global_ref=False) - return rx.el.button( - rx.cond( - copied.value, - ui.icon( - "Tick02Icon", - size=14, - class_name="ml-[5px] shrink-0", - ), - ui.icon("Copy01Icon", size=14, class_name="shrink-0 ml-[5px]"), - ), - rx.text( - rx.cond( - show_dollar_sign, - f"${command}", - command, - ), - as_="p", - class_name="font-small text-start truncate", - ), - title=command, - on_click=[ - rx.call_function(copied.set_value(True)), - rx.set_clipboard(command), - ], - on_mouse_down=rx.call_function(copied.set_value(False)).debounce(1500), - class_name="flex items-center gap-1.5 border-slate-5 bg-slate-1 hover:bg-slate-3 shadow-small pr-1.5 border rounded-md w-full text-slate-9 transition-bg cursor-pointer overflow-hidden min-w-0 flex-1 h-[24px]", - style={ - "opacity": "1", - "cursor": "pointer", - "transition": "background 0.250s ease-out", - "&>svg": { - "transition": "transform 0.250s ease-out, opacity 0.250s ease-out", - }, - }, - ) - - -def repo(repo_url: str) -> rx.Component: - """Repo. - - Returns: - The component. - """ - return rx.link( - get_icon(icon="new_tab", class_name="p-[5px]"), - href=repo_url, - is_external=True, - class_name="border-slate-5 bg-slate-1 hover:bg-slate-3 shadow-small border border-solid rounded-md text-slate-9 hover:!text-slate-9 no-underline transition-bg cursor-pointer shrink-0", - ) - - -def code_card(app: dict) -> rx.Component: - """Code card. - - Returns: - The component. - """ - return rx.flex( - rx.box( - rx.el.elements.a( - rx.image( - src=app["image_url"], - loading="lazy", - alt="Image preview for app: " + app["name"], - class_name="size-full duration-150 object-top object-cover hover:scale-105 transition-transform ease-out", - ), - href=app["demo_url"], - target="_blank", - ), - class_name="relative border-slate-5 border-b border-solid w-full overflow-hidden h-[180px]", - ), - rx.box( - rx.box( - rx.el.h4( - app["name"], - class_name="font-smbold text-slate-12 truncate", - ), - class_name="flex flex-row justify-between items-center gap-3 p-[0.625rem_0.75rem_0rem_0.75rem] w-full", - ), - rx.box( - install_command( - "reflex init --template " + app["demo_url"], show_dollar_sign=False - ), - rx.cond(app["source"], repo(app["source"])), - rx.link( - get_icon(icon="eye", class_name="p-[5px]"), - href=app["demo_url"], - is_external=True, - class_name="border-slate-5 bg-slate-1 hover:bg-slate-3 shadow-small border border-solid rounded-md text-slate-9 hover:!text-slate-9 no-underline transition-bg cursor-pointer", - ), - class_name="flex flex-row items-center gap-[6px] p-[0rem_0.375rem_0.375rem_0.375rem] w-full", - ), - class_name="flex flex-col gap-[10px] w-full", - ), - style={ - "animation": "fade-in 0.35s ease-out", - "@keyframes fade-in": { - "0%": {"opacity": "0"}, - "100%": {"opacity": "1"}, - }, - }, - class_name="box-border flex flex-col border-slate-5 bg-slate-1 shadow-large border rounded-xl w-full h-[280px] overflow-hidden", - ) - - -def gallery_app_card(app: dict[str, str]) -> rx.Component: - """Gallery app card. - - Returns: - The component. - """ - slug = re.sub(r"[\s_]+", "-", app["title"]).lower() - return rx.flex( - rx.box( - rx.el.elements.a( - rx.image( - src=app["image"], - loading="lazy", - alt="Image preview for app: " + app["title"], - class_name="size-full duration-150 object-cover hover:scale-105 transition-transform ease-out", - ), - href=f"/docs/getting-started/open-source-templates/{slug}", - ), - class_name="relative border-slate-5 border-b border-solid w-full overflow-hidden h-[180px]", - ), - rx.box( - rx.box( - rx.el.h6( - app["title"], - class_name="font-smbold text-slate-12 truncate shrink-0", - width="100%", - ), - rx.text( - app["description"], - class_name="text-slate-10 font-small truncate text-pretty shrink-0", - width="100%", - ), - rx.box( - rx.box( - install_command( - command=f"reflex init --template {app['title']}", - show_dollar_sign=False, - ), - *( - [ - rx.box( - repo(app["demo"]), - class_name="flex flex-row justify-start", - ) - ] - if "demo" in app - else [] - ), - class_name="flex flex-row max-w-full gap-2 w-full shrink-0", - ), - rx.box(class_name="grow"), - rx.cond( - "Reflex" in app["author"], - rx.box( - rx.text( - "by", - class_name="text-slate-9 font-small", - ), - get_icon(icon="badge_logo"), - rx.text( - app["author"], - class_name="text-slate-9 font-small", - ), - class_name="flex flex-row items-start gap-1", - ), - rx.text( - f"by {app['author']}", - class_name="text-slate-9 font-small", - ), - ), - class_name="flex flex-col gap-[6px] size-full", - ), - class_name="flex flex-col items-start gap-2 p-[0.625rem_0.75rem_0.625rem_0.75rem] w-full h-full", - ), - class_name="flex flex-col gap-[10px] w-full h-full flex-1", - ), - key=app["title"], - class_name="box-border flex-col border-slate-5 bg-slate-1 shadow-large border rounded-xl w-full h-[360px] overflow-hidden", - ) diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/apps.py b/packages/reflex-site-shared/src/reflex_site_shared/gallery/apps.py deleted file mode 100644 index 36726d11503..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/apps.py +++ /dev/null @@ -1,304 +0,0 @@ -"""Apps module.""" - -import copy -import re - -import reflex_components_internal as ui -from reflex_components_internal.blocks.demo_form import demo_form_dialog - -import reflex as rx -from reflex_site_shared.components.blocks.flexdown import markdown -from reflex_site_shared.components.code_card import gallery_app_card -from reflex_site_shared.components.icons import get_icon -from reflex_site_shared.constants import REFLEX_ASSETS_CDN, SCREENSHOT_BUCKET -from reflex_site_shared.gallery.common import MarkdownDocument -from reflex_site_shared.gallery.gallery import integrations_stack -from reflex_site_shared.templates.gallery_app_page import gallery_app_page - -GALLERY_APP_SOURCES = [ - ("templates/", "docs/getting-started/open-source-templates/"), - ("reflex_build_templates/", "templates/"), -] - - -def integration_image(integration: str): - """Integration image. - - Returns: - The component. - """ - integration_logo = integration.replace(" ", "_").lower() - return ui.tooltip( - trigger=ui.avatar.root( - ui.avatar.image( - src=rx.color_mode_cond( - f"{REFLEX_ASSETS_CDN}integrations/light/{integration_logo}.svg", - f"{REFLEX_ASSETS_CDN}integrations/dark/{integration_logo}.svg", - ), - unstyled=True, - class_name="size-full", - ), - ui.avatar.fallback( - unstyled=True, - ), - unstyled=True, - class_name="size-5 flex items-center justify-center", - ), - content=integration, - ) - - -def load_all_gallery_apps(): - """Load markdown files from all supported paths and associate them with their base folder. - - Returns: - The component. - """ - from reflex_site_shared.utils.md import MarkdownDocument, get_md_files - - gallery_apps: dict[tuple[str, str], MarkdownDocument] = {} - for folder, _ in GALLERY_APP_SOURCES: - paths = get_md_files(folder) - for path in sorted(paths, reverse=True): - document = MarkdownDocument.from_file(path) - document.metadata["title"] = document.metadata.get("title", "Untitled") - clean_path = str(path).replace(".md", "/") - gallery_apps[clean_path, folder] = document - return gallery_apps - - -gallery_apps_data = load_all_gallery_apps() -gallery_apps_data_copy = {path: doc for (path, _), doc in gallery_apps_data.items()} -gallery_apps_data_open_source = { - (path, folder): doc - for (path, folder), doc in load_all_gallery_apps().items() - if folder == "templates/" -} - - -def more_posts(current_post: dict) -> rx.Component: - """More posts. - - Returns: - The component. - """ - posts = [] - app_copy = copy.deepcopy(gallery_apps_data) - app_items = list(app_copy.items()) - current_index = next( - ( - i - for i, (path, document) in enumerate(app_items) - if document.metadata.get("title") == current_post.get("title") - ), - None, - ) - - if current_index is None: - selected_posts = app_items[-3:] - else: - other_posts = app_items[:current_index] + app_items[current_index + 1 :] - if len(other_posts) <= 3: - selected_posts = other_posts - elif current_index == 0: - selected_posts = other_posts[:3] - elif current_index >= len(app_items) - 1: - selected_posts = other_posts[-3:] - else: - if current_index < len(app_items) - 2: - selected_posts = other_posts[current_index - 1 : current_index + 2] - else: - selected_posts = other_posts[current_index - 2 : current_index + 1] - - for path, document in selected_posts: - if not path[0].startswith("reflex_build_templates/"): - posts.append(gallery_app_card(app=document.metadata)) - - return rx.el.section( - rx.box( - rx.el.h2("More Templates", class_name="font-large text-slate-12"), - rx.el.elements.a( - rx.box( - rx.text( - "View All", class_name="font-small text-slate-9 text-nowrap" - ), - get_icon(icon="new_tab", class_name=""), - class_name="flex items-center gap-1.5 border-slate-5 bg-slate-1 hover:bg-slate-3 shadow-small px-1.5 py-0.5 border rounded-md w-auto max-w-full text-slate-9 transition-bg cursor-pointer overflow-hidden border-solid", - ), - underline="none", - href="/docs/getting-started/open-source-templates/", - ), - class_name="flex flex-row items-center justify-between gap-4", - ), - rx.box( - *posts, - class_name="gap-6 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 [&>*]:min-w-[300px] w-full mb-4 blog-grid", - ), - class_name="flex flex-col gap-10 mt-20 p-8 border-t border-slate-3", - ) - - -def page(document: MarkdownDocument, is_reflex_template: bool) -> rx.Component: - """Render a detailed app page based on source type. - - Returns: - The component. - """ - meta = document.metadata - - image_component = ( - rx.image( - src=meta["image"], - alt=f"Image for Reflex App: {meta['title']}", - loading="lazy", - class_name="w-full object-cover max-w-full aspect-[1500/938] border-y border-slate-3 border-solid", - ) - if not is_reflex_template - else rx.el.div( - rx.box( - rx.el.h1( - meta["title"].replace("_", " ").title(), - class_name="font-x-large text-slate-12 text-left", - ), - class_name="w-full self-start pl-4", - ), - rx.el.iframe( - src=meta["video"], - class_name="w-full h-full xl:rounded-md shadow-small", - id="iFrame", - title="Reflex Build", - frameborder="0", - ), - class_name="w-full h-[80vh] text-center flex flex-col gap-y-4 items-center text-slate-10", - ) - ) - - back_route_origin = ( - "/getting-started/open-source-templates/" - if not is_reflex_template - else "/templates/" - ) - - return rx.el.section( - rx.el.article( - image_component, - rx.box( - rx.el.header( - rx.link( - rx.box( - get_icon("arrow_right", class_name="rotate-180"), - "Back to Templates", - class_name="box-border flex justify-center items-center gap-2 bg-slate-1 py-0.5 font-small text-slate-9 transition-color cursor-pointer hover:text-slate-11 mb-6", - ), - underline="none", - class_name="flex w-fit", - href=back_route_origin, - ), - ( - rx.el.h1(meta["title"], class_name="font-x-large text-slate-12") - if not is_reflex_template - else rx.fragment() - ), - rx.el.h2(meta["description"], class_name="font-md text-slate-11"), - ( - rx.el.div( - rx.el.span( - "Integrations: ", class_name="text-slate-9 font-base" - ), - rx.el.div( - integrations_stack(meta.get("integrations", [])), - class_name="flex flex-row gap-3.5 items-center", - ), - class_name="flex flex-row items-center gap-2 mt-2", - ) - if meta.get("integrations") - else rx.fragment() - ), - class_name="flex flex-col gap-3 p-8", - ), - rx.box( - *([ - rx.box( - demo_form_dialog( - trigger=ui.button( - ui.icon("LinkSquare01Icon"), - "Book a Demo", - class_name="flex-row-reverse gap-2 !w-full", - ), - ), - class_name="flex justify-center items-center h-full !w-full [&_button]:!w-full", - ) - ]), - ( - rx.link( - ui.button( - "View Code", variant="secondary", class_name="!w-full" - ), - is_external=True, - href=meta.get("source", "#"), - ) - if not is_reflex_template - else rx.fragment() - ), - ( - rx.cond( - "Reflex" in meta["author"], - rx.box( - rx.text( - "Created by", class_name="text-slate-9 font-base" - ), - get_icon(icon="badge_logo"), - rx.text( - meta["author"], class_name="text-slate-9 font-base" - ), - class_name="flex flex-row items-center gap-1 self-end", - ), - rx.text( - f"by {meta['author']}", - class_name="text-slate-9 font-base", - ), - ) - if not is_reflex_template - else rx.fragment() - ), - class_name="p-8 flex flex-col gap-4", - ), - class_name="grid grid-cols-1 lg:grid-cols-2 divide-y lg:divide-y-0 lg:divide-x divide-slate-3 border-b border-slate-3", - ), - rx.box( - markdown(document.content), - class_name="flex flex-col gap-4 w-full p-8", - ), - more_posts(meta) if not is_reflex_template else rx.fragment(), - class_name="flex flex-col max-w-full", - ), - ) - - -gallery_apps_routes = [] -for (_path, source_folder), document in gallery_apps_data.items(): - is_reflex_template = source_folder.startswith("reflex_build_templates") - base_url = ( - "templates/" if is_reflex_template else "getting-started/open-source-templates/" - ) - slug = re.sub(r"[\s_]+", "-", document.metadata["title"]).lower() - route = f"/{base_url}{slug}" - - document.metadata["image"] = ( - f"{REFLEX_ASSETS_CDN}reflex_build_template_images/{document.metadata['image']}" - if is_reflex_template and not document.metadata.get("ai_template", False) - else f"{REFLEX_ASSETS_CDN}templates/{document.metadata['image']}" - if not document.metadata.get("ai_template", False) - else f"{SCREENSHOT_BUCKET}{document.metadata['image']}" - ) - - comp = gallery_app_page( - path=route, - title=document.metadata["title"], - description=document.metadata.get("description", ""), - image=document.metadata["image"], - demo=document.metadata.get("demo"), - meta=document.metadata.get("meta", []), - )(lambda doc=document, is_rt=is_reflex_template: page(doc, is_rt)) - - gallery_apps_routes.append(comp) diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/sidebar.py b/packages/reflex-site-shared/src/reflex_site_shared/gallery/sidebar.py deleted file mode 100644 index 5f45c97b2fe..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/sidebar.py +++ /dev/null @@ -1,238 +0,0 @@ -"""Sidebar module.""" - -import reflex_components_internal as ui - -import reflex as rx -from reflex_site_shared.gallery.apps import gallery_apps_data - -TAGS = { - "Category": [ - "AI/ML", - "Dashboard", - "Chat", - "Data Visualization", - "Image Generation", - "API Tools", - "Sports", - "DevOps", - ], -} - -ITEMS_PER_PAGE = 12 -TEMPLATES_FOLDER = "templates/" - - -TEMPLATE_SUMMARIES = [ - { - "title": (m := doc.metadata or {}).get("title", ""), - "description": m.get("description", ""), - "tags": m.get("tags", []), - } - for (_, folder), doc in gallery_apps_data.items() - if folder == TEMPLATES_FOLDER -] - - -class TemplatesState(rx.State): - """TemplatesState.""" - - query: rx.Field[str] = rx.field(default="") - checked_tags: rx.Field[set[str]] = rx.field(default_factory=set) - page: rx.Field[int] = rx.field(default=1) - - @rx.event - def clear_filters(self): - """Clear filters.""" - self.checked_tags = set() - self.page = 1 - - @rx.var - def all_filtered_templates(self) -> list[str]: - """All filtered templates. - - Returns: - The component. - """ - query = self.query.strip().lower() - return [ - t["title"] - for t in TEMPLATE_SUMMARIES - if ( - not query - or query in t["title"].lower() - or query in t["description"].lower() - ) - and (not self.checked_tags or set(t["tags"]) & self.checked_tags) - ] - - @rx.var - def total_pages(self) -> int: - """Total pages. - - Returns: - The component. - """ - return max(1, -(-len(self.all_filtered_templates) // ITEMS_PER_PAGE)) - - @rx.var - def filtered_templates(self) -> list[str]: - """Filtered templates. - - Returns: - The component. - """ - start = (self.page - 1) * ITEMS_PER_PAGE - return self.all_filtered_templates[start : start + ITEMS_PER_PAGE] - - @rx.event - def set_query(self, value: str): - """Set query.""" - self.query = value - self.page = 1 - - @rx.event - def toggle_template(self, value: str): - """Toggle template.""" - if value in self.checked_tags: - self.checked_tags.remove(value) - else: - self.checked_tags.add(value) - self.page = 1 - - @rx.event - def prev_page(self): - """Prev page.""" - if self.page > 1: - self.page -= 1 - - @rx.event - def next_page(self): - """Next page.""" - if self.page < self.total_pages: - self.page += 1 - - -def pagination() -> rx.Component: - """Pagination. - - Returns: - The component. - """ - return rx.box( - rx.box( - ui.button( - ui.icon("ArrowLeft01Icon"), - disabled=TemplatesState.page == 1, - variant="secondary", - size="icon-sm", - on_click=TemplatesState.prev_page, - ), - ui.button( - ui.icon("ArrowRight01Icon"), - disabled=TemplatesState.page == TemplatesState.total_pages, - variant="secondary", - size="icon-sm", - on_click=TemplatesState.next_page, - ), - class_name="flex flex-row items-center gap-2", - ), - rx.text( - f"{TemplatesState.page} of {TemplatesState.total_pages}", - class_name="text-sm text-slate-12 font-medium", - ), - class_name="flex flex-row items-center gap-6 mt-10", - ) - - -def checkbox_item(text: str, value: str): - """Checkbox item. - - Returns: - The component. - """ - return rx.box( - rx.checkbox( - checked=TemplatesState.checked_tags.contains(value), - color_scheme="violet", - key=value, - class_name="cursor-pointer", - ), - rx.text( - text, - class_name="text-sm font-medium text-slate-12 font-sans cursor-pointer", - ), - on_click=TemplatesState.toggle_template(value), - class_name="flex items-center gap-2 px-3 py-2 rounded-md bg-slate-3 hover:bg-slate-4 transition-colors cursor-pointer", - ) - - -def filter_section(title: str, content: list[str]): - """Filter section. - - Returns: - The component. - """ - return rx.accordion.item( - rx.accordion.trigger( - rx.el.h3( - title, class_name="font-semibold text-base text-slate-12 text-start" - ), - rx.icon( - tag="chevron-down", - size=19, - class_name="!text-slate-11 group-data-[state=open]:rotate-180 transition-transform", - ), - class_name="hover:!bg-transparent !p-[0.5rem_0rem] !justify-between gap-4 group !mb-2", - ), - rx.accordion.content( - rx.box( - *[checkbox_item(item, item) for item in content], - class_name="flex flex-row gap-2 flex-wrap", - ), - class_name="before:!h-0 after:!h-0 radix-state-open:animate-accordion-down radix-state-closed:animate-accordion-up transition-all !px-0", - ), - value=title, - class_name="!p-0 w-full !bg-transparent !rounded-none !shadow-none", - ) - - -def sidebar() -> rx.Component: - """Sidebar. - - Returns: - The component. - """ - return rx.box( - rx.box( - rx.box( - rx.el.h4( - "Filter Templates", - class_name="text-base font-semibold text-slate-12", - ), - rx.cond( - TemplatesState.checked_tags, - rx.el.p( - f"Clear filters ({TemplatesState.checked_tags.length()})", - on_click=TemplatesState.clear_filters, - class_name="text-sm text-slate-9 underline hover:text-slate-11 transition-colors cursor-pointer", - ), - ), - class_name="flex flex-row items-center gap-2 justify-between", - ), - ui.input( - icon="Search01Icon", - placeholder="Search...", - class_name="w-full", - on_change=TemplatesState.set_query.debounce(300), - clear_button_event=TemplatesState.set_query(""), - ), - class_name="flex flex-col gap-2", - ), - rx.accordion.root( - *[filter_section(title, content) for title, content in TAGS.items()], - default_value=next(iter(TAGS.keys())), - collapsible=True, - class_name="!p-0 w-full !bg-transparent !rounded-none !shadow-none flex flex-col gap-4", - ), - class_name="flex flex-col gap-4", - ) diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/api-admin-panel.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/api-admin-panel.md deleted file mode 100644 index 97d796ba124..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/api-admin-panel.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: api_admin_panel -description: "Interactive dashboard for API requests and response visualization" -author: "Reflex" -image: "api-admin-panel.webp" -demo: "https://api-admin-panel.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/api_admin_panel" -meta: [ - {"name": "keywords", "content": "admin panel, api admin panel, reflex admin panel"}, -] -tags: ["API Tools"] ---- - -The following is an admin panel for reading from and writing to your customer data, built on a REST API. This app lets you look through customers and take custom actions based on the data. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template api_admin_panel -``` - -To run the app, use: - -```bash -reflex run -``` - -## Usage - -To use the app insert the desired endpoint click `New Request` then in the input field and click on the `Send` button. You can optionally add a body, headers, and cookies to the request. The response will be displayed in the table. - -When clicking on a row the request and response will be displayed in the respective sections. You can further customize this app by adding custom actions to the rows and `Commit` and `Close` buttons. \ No newline at end of file diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/chat-app.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/chat-app.md deleted file mode 100644 index a3e189fa304..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/chat-app.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: reflex-chat -description: "Real-time chat application with multiple rooms using Reflex and ChatGPT" -author: "Reflex" -image: "chat-app.webp" -demo: "https://chat.reflex.run/" -source: "https://github.com/reflex-dev/reflex-chat" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["AI/ML", "Chat"] ---- -# Chat App - -The following is a python chat app. It is 100% Python-based, including the UI, all using Reflex. Easily create and delete chat sessions. The application is fully customizable and no knowledge of web dev is required to use it and it has responsive design for various devices. - -## Usage - -To run this app locally, install Reflex and run: - -```bash -reflex init --template reflex-chat -``` - -Set up your OpenAI API key: -```bash -export OPENAI_API_KEY=your-openai-api-key -``` - -Install the dependencies and run the app: - -```bash -pip install -r requirements.txt -``` - -```bash -reflex run -``` - -## Customizing the Inference - -You can customize the app by modifying the `chat/state.py` file replacing `model = self.openai_process_question` with that of other LLM providers and writing your own process question function. diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/ci-job.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/ci-job.md deleted file mode 100644 index c87762097e6..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/ci-job.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ci_template -description: "CI/CD job dashboard with real-time updates and controls" -author: "Reflex" -image: "cijob.webp" -demo: "https://cijob.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/ci_template" - -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["DevOps"] ---- - -In this example we will build a simple CI/CD job dashboard with real-time updates and controls. You can run, edit, and delete jobs on the dashboard as well as view the status of each job. - -## Usage - -To run this app locally, install Reflex and run: - -```bash -reflex init --template ci_template -``` - -To run the app, use: - -```bash -pip install -r requirements.txt -reflex run -``` diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/customer-app.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/customer-app.md deleted file mode 100644 index 06641af8c6f..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/customer-app.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: customer_data_app -description: "A Reflex app for customer data management with visualizations" -author: "Reflex" -image: "customer-app.webp" -demo: "https://customer-data-app.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/customer_data_app" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["Data Visualization"] ---- - -The following is a python dashboard to interactively display some data, i.e. customer data. The app allows you to add, edit, and delete customer data in a table, as well as visualize the changes in data over time. All the data is stored in a database. It is a good starting point for building more complex apps that require data visualization and editing. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template customer_data_app -``` - -To run the app, use: - -```bash -pip install -r requirements.txt -reflex db migrate -reflex run -``` - - -## Setting an external Database - -It is also possible to set an external database so that your data is not lost every time the app closes and so you can deploy your app and maintain data. - -In the `rxconfig.py` file we accept a `DATABASE_URL` environment variable. - -To set one run the following command in your terminal: - -```bash -export DATABASE_URL="" -``` - - -## Customizing the Database Model - -We define our `Customer` model in the `customer_data_app/customer_data_app/backend/backend.py` file. The model is used to store customer data in the database. You can customize the model to input your own data here. - -It will also be necessary to edit some of the event handlers inside of `State` in the same file and to edit some of the UI components in `customer_data_app/customer_data_app/views/table.py` to reflect the changes in the model. diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/dalle.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/dalle.md deleted file mode 100644 index 2dbb5708e58..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/dalle.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: dalle -description: "DALL-E is a Reflex app for generating images using OpenAI's API" -author: "Reflex" -image: "dalle.webp" -demo: "https://dalle.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/dalle" -meta: [ - {"name": "keywords", "content": ""}, -] -template: "dalle" -tags: ["AI/ML", "Image Generation"] ---- - -In this example we create a simple app for generating images using OpenAI's API. - -## Usage - -To run this app locally, install Reflex and run: - -```bash -reflex init --template dalle -``` - -Set up your OpenAI API key: -```bash -export OPEN_AI_KEY=your-openai-api-key -``` - -Install the dependencies and run the app: - -```bash -pip install -r requirements.txt -reflex run -``` - - diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/dashboard.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/dashboard.md deleted file mode 100644 index 4855eab1aec..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/dashboard.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: dashboard -description: "Interactive dashboard with real-time data visualization" -author: "Reflex" -image: "dashboard.webp" -demo: "https://dashboard-new.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/dashboard" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["Dashboard", "Data Visualization"] ---- - -The following is a dashboard to interactively display data some data. It is a good starting point for building more complex apps that require data visualization. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template dashboard -``` - -To run the app, use: - -```bash -reflex run -``` - -## Customizing to your data - -Right now the apps reads from a local CSV file. You can modify this by changing the `DATA_FILE` variable in the `dashboard/dashboard/backend/table_state.py` file. - -Additionally you will want to change the `Item` class to match the data in your CSV file. - -```python -import dataclasses - - -@dataclasses.dataclass -class Item: - """The item class.""" - - name: str - payment: float - date: str - status: str -``` diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/image-gen.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/image-gen.md deleted file mode 100644 index ed8d7d493e8..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/image-gen.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: ai_image_gen -description: "Generate AI images using Replicate's API" -author: "Reflex" -image: "image-gen.webp" -demo: "https://ai-image-gen.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/ai_image_gen" -meta: [ - {"name": "keywords", "content": "image generation, ai image generation, reflex image generation, Replicate image generation"}, -] -tags: ["AI/ML", "Image Generation"] ---- - -The following is an app that allows you to generate AI images. The current map uses replicate's api to generate images but can be easily modified to use other image generation services. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template ai_image_gen -``` - -To run the app, set the `REPLICATE_API_TOKEN`: - -```bash -export REPLICATE_API_TOKEN=your_api_token_here -``` - -Then run: - -```bash -pip install -r requirements.txt -reflex run -``` - -Note: You can get your replicate api token [here](https://replicate.com/account/api-tokens). - -## Customizing the Inference - -You can customize the app by modifying the [`generation.py`](https://github.com/reflex-dev/templates/blob/main/ai_image_gen/ai_image_gen/backend/generation.py) file replacing replicate's api with that of other image generation services. \ No newline at end of file diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/llamaindex-app.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/llamaindex-app.md deleted file mode 100644 index d6c43d32b39..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/llamaindex-app.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: reflex-llamaindex-template -description: "A minimal chat app using LLamaIndex" -author: "Reflex" -image: "llamaindex.png" -source: "https://github.com/reflex-dev/reflex-llamaindex-template" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["AI/ML", "Chat"] ---- - -The following is an alternative UI to display the LLamaIndex app. - -## Prerequisites - -If you plan on deploying your agentic workflow to prod, follow the [llama deploy tutorial](https://github.com/run-llama/llama_deploy/tree/main) to deploy your agentic workflow. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template reflex-llamaindex-template -``` - - - -The following [lines](https://github.com/reflex-dev/reflex-llamaindex-template/blob/abfda49ff193ceb7da90c382e5cbdcb5fcdb665c/frontend/state.py#L55-L79) in the state.py file are where the app makes a request to your deployed agentic workflow. If you have not deployed your agentic workflow, you can edit this to call and api endpoint of your choice. - -```python -client = httpx.AsyncClient() - -# call the agentic workflow -input_payload = { - "chat_history_dicts": chat_history_dicts, - "user_input": question, -} -deployment_name = os.environ.get("DEPLOYMENT_NAME", "MyDeployment") -apiserver_url = os.environ.get("APISERVER_URL", "http://localhost:4501") -response = await client.post( - f"\{apiserver_url}/deployments/\{deployment_name}/tasks/create", - json=\{"input": json.dumps(input_payload)}, - timeout=60, -) -answer = response.text - -for i in range(len(answer)): - # Pause to show the streaming effect. - await asyncio.sleep(0.01) - # Add one letter at a time to the output. - self.chat_history[-1] = ( - self.chat_history[-1][0], - answer[: i + 1], - ) - yield -``` - -### Run the app - -Once you have set up your environment, install the dependencies and run the app: - -```bash -cd reflex-llamaindex-template -pip install -r requirements.txt -reflex run -``` - diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/nba-app.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/nba-app.md deleted file mode 100644 index acefcb81868..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/nba-app.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: nba -description: "Interactive NBA app with player stats and live updates" -author: "Reflex" -image: "nba-app.webp" -demo: "https://nba-new.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/nba" -meta: [ - {"name": "keywords", "content": ""}, -] -template: "nba" -tags: ["Sports", "Data Visualization"] ---- - -The following is an app that displays NBA player stats from the 2015-2016 season. The table tab allows filtering and live updates. The graph tab shows the relationship between player stats. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template nba -``` - -To run the app, use: - -```bash -reflex run -``` \ No newline at end of file diff --git a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/sales-app.md b/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/sales-app.md deleted file mode 100644 index bb860bfd896..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/gallery/templates/sales-app.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: sales -description: "Sales app with interactive charts and real-time data updates" -author: "Reflex" -image: "sales.webp" -demo: "https://sales-new.reflex.run/" -source: "https://github.com/reflex-dev/templates/tree/main/sales" -meta: [ - {"name": "keywords", "content": ""}, -] -tags: ["Marketing", "Dashboard"] ---- - -The following is a sales app that displays sales data. The table tab allows filtering and live updates. The graph tab shows the relationship between sales data. - -## Setup - -To run this app locally, install Reflex and run: - -```bash -reflex init --template sales -``` - -To run the app, use: - -Set the OpenAI API key: -``` -export OPEN_AI_KEY=your-openai-api-key -``` - -```bash -pip install -r requirements.txt -reflex run -``` - -## Customizing the Inference - -Note: You can get your OpenAI API key [here](https://platform.openai.com/account/api-keys). - -You can customize the app by modifying the `sales/sales/backend/backend.py` file replacing OpenAI's API with that of other LLM providers. \ No newline at end of file diff --git a/packages/reflex-site-shared/src/reflex_site_shared/templates/gallery_app_page.py b/packages/reflex-site-shared/src/reflex_site_shared/templates/gallery_app_page.py deleted file mode 100644 index feeb2bd5fd1..00000000000 --- a/packages/reflex-site-shared/src/reflex_site_shared/templates/gallery_app_page.py +++ /dev/null @@ -1,89 +0,0 @@ -"""Gallery App Page module.""" - -import functools -from collections.abc import Callable - -import reflex as rx -from reflex_site_shared.route import Route - - -def gallery_app_page( - path: str, - title: str, - description: str, - image: str, - demo: str, - meta: list[dict[str, str]] | None = None, - props: dict | None = None, - add_as_page: bool = True, -) -> Callable: - """A template that most pages on the reflex.dev site should use. - - This template wraps the webpage with the navbar and footer. - - Args: - path: The path of the page. - title: The title of the page. - description: The description of the page. - image: The image of the page. - demo: The demo link of the app. - meta: The meta tags of the page. - props: Props to apply to the template. - add_as_page: whether to add the route to the app pages. - - Returns: - A wrapper function that returns the full webpage. - """ - props = props or {} - - def webpage(contents: Callable[[], Route]) -> Route: - """Wrapper to create a templated route. - - Args: - contents: The function to create the page route. - - Returns: - The templated route. - """ - - @functools.wraps(contents) - def wrapper(*children, **props) -> rx.Component: - """The template component. - - Args: - children: The children components. - props: The props to apply to the component. - - Returns: - The component with the template applied. - """ - # Import here to avoid circular imports. - from reflex_site_shared.views.footer import footer_index - from reflex_site_shared.views.marketing_navbar import marketing_navbar - - # Wrap the component in the template. - return rx.box( - marketing_navbar(), - rx.box( - rx.el.main( - contents(*children, **props), - class_name="w-full z-[1] relative flex flex-col mx-auto lg:border-x border-slate-3 pt-24 lg:pt-48", - ), - class_name="relative flex flex-col justify-start items-center w-full h-full min-h-screen font-instrument-sans mx-auto max-w-[64.19rem]", - ), - footer_index(), - class_name="relative overflow-hidden flex flex-col justify-center items-center w-full", - **props, - ) - - return Route( - path=path, - title=title.replace("_", " ").title() + " - Reflex App Template", - description=description, - meta=meta, - image=image, - component=wrapper, - add_as_page=add_as_page, - ) - - return webpage diff --git a/reflex/utils/redir.py b/reflex/utils/redir.py index aef5a86e289..00846665852 100644 --- a/reflex/utils/redir.py +++ b/reflex/utils/redir.py @@ -32,12 +32,3 @@ def reflex_build_redirect() -> None: from reflex_base import constants open_browser(urlsplit(constants.Templates.REFLEX_BUILD_FRONTEND_WITH_REFERRER)) - - -def reflex_templates(): - """Open the browser window to reflex.build/templates.""" - from urllib.parse import urlsplit - - from reflex_base import constants - - open_browser(urlsplit(constants.Templates.REFLEX_TEMPLATES_URL)) diff --git a/reflex/utils/templates.py b/reflex/utils/templates.py index c1422b06102..c4f598d71a9 100644 --- a/reflex/utils/templates.py +++ b/reflex/utils/templates.py @@ -20,7 +20,6 @@ class Template: name: str description: str - code_url: str def create_config(app_name: str): @@ -200,127 +199,30 @@ def create_config_init_app_from_remote_template(app_name: str, template_url: str shutil.rmtree(unzip_dir) -def validate_and_create_app_using_remote_template( - app_name: str, template: str, templates: dict[str, Template] -): +def validate_and_create_app_using_remote_template(app_name: str, template: str): """Validate and create an app using a remote template. Args: app_name: The name of the app. template: The name of the template. - templates: The available templates. Raises: SystemExit: If the template is not found. """ - # If user selects a template, it needs to exist. - if template in templates: - from reflex_cli.v2.utils import hosting - - authenticated_token = hosting.authenticated_token() - if not authenticated_token or not authenticated_token[0]: - console.print( - f"Please use `reflex login` to access the '{template}' template." - ) - raise SystemExit(3) - - template_url = templates[template].code_url + template_parsed_url = urlparse(template) + # Check if the template is a github repo. + if template_parsed_url.hostname == "github.com": + path = template_parsed_url.path.strip("/").removesuffix(".git") + template_url = f"https://github.com/{path}/archive/main.zip" else: - template_parsed_url = urlparse(template) - # Check if the template is a github repo. - if template_parsed_url.hostname == "github.com": - path = template_parsed_url.path.strip("/").removesuffix(".git") - template_url = f"https://github.com/{path}/archive/main.zip" - else: - console.error(f"Template `{template}` not found or invalid.") - raise SystemExit(1) - - if template_url is None: - return + console.error(f"Template `{template}` not found or invalid.") + raise SystemExit(1) create_config_init_app_from_remote_template( app_name=app_name, template_url=template_url ) -def fetch_app_templates(version: str) -> dict[str, Template]: - """Fetch a dict of templates from the templates repo using github API. - - Args: - version: The version of the templates to fetch. - - Returns: - The dict of templates. - """ - - def get_release_by_tag(tag: str) -> dict | None: - url = f"{constants.Reflex.RELEASES_URL}/tags/v{tag}" - response = net.get(url) - if response.status_code == 404: - return None - response.raise_for_status() - return response.json() - - release = get_release_by_tag(version) - if release is None: - console.warn(f"No templates known for version {version}") - return {} - - asset_map = { - a["name"]: a["browser_download_url"] for a in release.get("assets", []) - } - - templates_url = asset_map.get("templates.json") - if not templates_url: - console.warn(f"Templates metadata not found for version {version}") - return {} - - templates_data = ( - net.get(templates_url, follow_redirects=True).json().get("templates", []) - ) - - known_fields = {f.name for f in dataclasses.fields(Template)} - - filtered_templates = {} - for template in templates_data: - code_url = ( - "" - if template["name"] == "blank" - else asset_map.get(f"{template['name']}.zip") - ) - if template["hidden"] or code_url is None: - continue - filtered_templates[template["name"]] = Template( - **{k: v for k, v in template.items() if k in known_fields}, - code_url=code_url, - ) - return filtered_templates - - -def fetch_remote_templates( - template: str, -) -> tuple[str, dict[str, Template]]: - """Fetch the available remote templates. - - Args: - template: The name of the template. - - Returns: - The selected template and the available templates. - """ - available_templates = {} - - try: - # Get the available templates - available_templates = fetch_app_templates(constants.Reflex.VERSION) - except Exception as e: - console.warn("Failed to fetch templates. Falling back to default template.") - console.debug(f"Error while fetching templates: {e}") - template = constants.Templates.DEFAULT - - return template, available_templates - - def prompt_for_template_options(templates: list[Template]) -> str: """Prompt the user to specify a template. @@ -389,19 +291,9 @@ def initialize_app(app_name: str, template: str | None = None) -> str | None: telemetry.send("reinit", properties=init_environment) return None - templates: dict[str, Template] = {} - - # Don't fetch app templates if the user directly asked for DEFAULT. - if template is not None and template != constants.Templates.DEFAULT: - template, templates = fetch_remote_templates(template) - if template is None: template = prompt_for_template_options(get_init_cli_prompt_options()) - if template == constants.Templates.CHOOSE_TEMPLATES: - redir.reflex_templates() - raise SystemExit(0) - if template == constants.Templates.AI: redir.reflex_build_redirect() raise SystemExit(0) @@ -412,7 +304,8 @@ def initialize_app(app_name: str, template: str | None = None) -> str | None: initialize_default_app(app_name) else: validate_and_create_app_using_remote_template( - app_name=app_name, template=template, templates=templates + app_name=app_name, + template=template, ) telemetry.send("init", template=template, properties=init_environment) @@ -430,16 +323,9 @@ def get_init_cli_prompt_options() -> list[Template]: Template( name=constants.Templates.DEFAULT, description="A blank Reflex app.", - code_url="", - ), - Template( - name=constants.Templates.CHOOSE_TEMPLATES, - description="Premade templates built by the Reflex team.", - code_url="", ), Template( name=constants.Templates.AI, description="[bold]Try our AI builder.", - code_url="", ), ]