diff --git a/package.json b/package.json index be8bbf5..4c6dd0c 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,11 @@ "dependencies": { "@base-ui/react": "^1.2.0", "@kevisual/router": "0.0.84", - "@tanstack/react-router": "^1.162.9", + "@tanstack/react-router": "^1.163.2", "@tanstack/react-table": "^8.21.3", "@uiw/react-codemirror": "^4.25.5", "@uiw/react-md-editor": "^4.0.11", - "antd": "^6.3.0", + "antd": "^6.3.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", @@ -44,11 +44,12 @@ "@kevisual/api": "^0.0.60", "@kevisual/context": "^0.0.8", "@kevisual/js-filter": "^0.0.5", + "@kevisual/kv-login": "^0.1.15", "@kevisual/query": "^0.0.52", "@kevisual/types": "^0.0.12", "@tailwindcss/vite": "^4.2.1", - "@tanstack/react-router-devtools": "^1.162.9", - "@tanstack/router-plugin": "^1.162.9", + "@tanstack/react-router-devtools": "^1.163.2", + "@tanstack/router-plugin": "^1.163.2", "@types/node": "^25.3.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08da6b5..6f72a5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 0.0.84 version: 0.0.84 '@tanstack/react-router': - specifier: ^1.162.9 - version: 1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^1.163.2 + version: 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/react-table': specifier: ^8.21.3 version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -27,8 +27,8 @@ importers: specifier: ^4.0.11 version: 4.0.11(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) antd: - specifier: ^6.3.0 - version: 6.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^6.3.1 + version: 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -96,6 +96,9 @@ importers: '@kevisual/js-filter': specifier: ^0.0.5 version: 0.0.5 + '@kevisual/kv-login': + specifier: ^0.1.15 + version: 0.1.15 '@kevisual/query': specifier: ^0.0.52 version: 0.0.52 @@ -106,11 +109,11 @@ importers: specifier: ^4.2.1 version: 4.2.1(vite@8.0.0-beta.15(@types/node@25.3.0)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)) '@tanstack/react-router-devtools': - specifier: ^1.162.9 - version: 1.162.9(@tanstack/react-router@1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.162.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^1.163.2 + version: 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.163.2)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': - specifier: ^1.162.9 - version: 1.162.9(@tanstack/react-router@1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.15(@types/node@25.3.0)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)) + specifier: ^1.163.2 + version: 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.15(@types/node@25.3.0)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)) '@types/node': specifier: ^25.3.0 version: 25.3.0 @@ -534,6 +537,9 @@ packages: '@kevisual/js-filter@0.0.5': resolution: {integrity: sha512-+S+Sf3K/aP6XtZI2s7TgKOr35UuvUvtpJ9YDW30a+mY0/N8gRuzyKhieBzQN7Ykayzz70uoMavBXut2rUlLgzw==} + '@kevisual/kv-login@0.1.15': + resolution: {integrity: sha512-PqFvhi11/zAIqdEePsINzhIX9QYf25nmvsIoT5kD8NB5663ZDsSPdgBiT/Jn3U+jx50a43ndNFwOTNuZkdp0Iw==} + '@kevisual/load@0.0.6': resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==} @@ -862,8 +868,8 @@ packages: resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} engines: {node: '>=8.x'} - '@rc-component/motion@1.1.6': - resolution: {integrity: sha512-aEQobs/YA0kqRvHIPjQvOytdtdRVyhf/uXAal4chBjxDu6odHckExJzjn2D+Ju1aKK6hx3pAs6BXdV9+86xkgQ==} + '@rc-component/motion@1.3.1': + resolution: {integrity: sha512-Wo1mkd0tCcHtvYvpPOmlYJz546z16qlsiwaygmW7NPJpOZOF9GBjhGzdzZSsC2lEJ1IUkWLF4gMHlRA1aSA+Yw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -953,8 +959,8 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' - '@rc-component/select@1.6.10': - resolution: {integrity: sha512-y4+2LnyGZrAorIBwflk78PmFVUWcSc9pcljiH72oHj7K1YY/BFUmj224pD7P4o7J+tbIFES45Z7LIpjVmvYlNA==} + '@rc-component/select@1.6.12': + resolution: {integrity: sha512-jYXAglYdOb54BrpWAcjjhdBP16NyCv/HbEaWFMbEHZQAJVmGHPAtmBqbFuPPuvInAVsIwLbCj4Agag9udOamiQ==} engines: {node: '>=8.x'} peerDependencies: react: '*' @@ -1237,20 +1243,20 @@ packages: resolution: {integrity: sha512-Kp/WSt411ZWYvgXy6uiv5RmhHrz9cAml05AQPrtdAp7eUqvIDbMGPnML25OKbzR3RJ1q4wgENxDTvlGPa9+Mww==} engines: {node: '>=20.19'} - '@tanstack/react-router-devtools@1.162.9': - resolution: {integrity: sha512-8xDqykw8MYWj4JoNfiJR/ZnocRBlfFeDSOQWVoWlnZKlciLCJ9dVfXuXQJlDlWr3JdmsWyyRvruZBnYr1YlUcg==} + '@tanstack/react-router-devtools@1.163.2': + resolution: {integrity: sha512-gk/tC+vx8eoNNIM27vfb/bZTXQjpopw7tZA4WkRQWLh9A8PG3V6QjMQysbPcRRO5m7KtdCbTk51ZG4ERi0J1kA==} engines: {node: '>=20.19'} peerDependencies: - '@tanstack/react-router': ^1.162.9 - '@tanstack/router-core': ^1.162.9 + '@tanstack/react-router': ^1.163.2 + '@tanstack/router-core': ^1.163.2 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' peerDependenciesMeta: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.162.9': - resolution: {integrity: sha512-APbwKAF+YgSNpHAaA+FdgrmfI/7+qa9hApuVO9+P0IVksJayNIWFQ/6AFG90WQiTYWk64RI1R9cFV2K9Z+j2pQ==} + '@tanstack/react-router@1.163.2': + resolution: {integrity: sha512-1LosUlpL2mRMWxUZXmkEg5+Br5P5j9TrLngqRgHVbZoFkjnbcj1x9fQN2OVLrBv9Npw97NRsHeJljnAH/c7oSw==} engines: {node: '>=20.19'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -1269,30 +1275,30 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/router-core@1.162.9': - resolution: {integrity: sha512-eG7C0oVtZbFOkfvsaF8UyGuNjEc1BfIfD5EzQNwG4vqLKOAyY5SMFBCNjabAi2sglRhL0ZOwKon1SExusU5fxA==} + '@tanstack/router-core@1.163.2': + resolution: {integrity: sha512-mD0Pav6kcpS317XSJN+wCZaxLLngDhlwgzPNca56dWCp8YKPEvhhj/Zdl+LdRlJQ2VJ5BOy7FbOV1hErc9Nj5Q==} engines: {node: '>=20.19'} - '@tanstack/router-devtools-core@1.162.9': - resolution: {integrity: sha512-fX54Aub/mS9KVrWy/CSe5+vu/pSez45RojzBZYK4KLMA8HsTxQ4/jjBfHwGg6FaqXKL52b72f4BAB+Cx559rIA==} + '@tanstack/router-devtools-core@1.163.2': + resolution: {integrity: sha512-IrbSK30AtMOgCLXTbvhnVsU6BGjhwB8EjfZIQLtUPDvFsP0RH3/2ZiWRA3a0EsQhxkl+fxIVByVP7wgyRzkZPQ==} engines: {node: '>=20.19'} peerDependencies: - '@tanstack/router-core': ^1.162.9 + '@tanstack/router-core': ^1.163.2 csstype: ^3.0.10 peerDependenciesMeta: csstype: optional: true - '@tanstack/router-generator@1.162.9': - resolution: {integrity: sha512-yVYFL/b0hRNRDTJn7+k/BEgRICIV064G2aAkvioRx2apYaMaDvWPAYSSFkNM/4etA+J16ATMhK30513glQmVug==} + '@tanstack/router-generator@1.163.2': + resolution: {integrity: sha512-6LjU3+8iKEgt8iOaYCmCnQCs0jsOhc7z8fa1yAYlj3s82uYWv3g5CB9mwv8wZXblXBQWOl+hW4PI6WNjP/CK9w==} engines: {node: '>=20.19'} - '@tanstack/router-plugin@1.162.9': - resolution: {integrity: sha512-RnvDntkf4d8YxuG0zxqb9BqLnDhbCjpyzOAG/Jw9AV3d0kih0UcTbAZCzfoDAiGMuztOsAWMyiVXcoy5LnPKag==} + '@tanstack/router-plugin@1.163.2': + resolution: {integrity: sha512-SrVILMz/c15RYWxIMG+bf/glLbP/O9DUxOg0E7bo9pooBxGPvgWSlEzHNjhVekLhK5l7fiuQZzKsfksVeIEqDA==} engines: {node: '>=20.19'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.162.9 + '@tanstack/react-router': ^1.163.2 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' @@ -1434,8 +1440,8 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} - antd@6.3.0: - resolution: {integrity: sha512-bbHJcASrRHp02wTpr940KtUHlTT6tvmaD4OAjqgOJXNmTQ/+qBDdBVWY/yeDV41p/WbWjTLlaqRGVbL3UEVpNw==} + antd@6.3.1: + resolution: {integrity: sha512-8pRjvxitZFyrYAtgwml93Km7fCXjw9IeqlmzpIsusRsmO3eWFVrOMum6+0TsGCtR/WrXVnPwfsgrFg3ChzGCeA==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' @@ -2921,6 +2927,8 @@ snapshots: '@kevisual/js-filter@0.0.5': {} + '@kevisual/kv-login@0.1.15': {} + '@kevisual/load@0.0.6': dependencies: eventemitter3: 5.0.4 @@ -3129,7 +3137,7 @@ snapshots: '@rc-component/cascader@1.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/select': 1.6.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/select': 1.6.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/tree': 1.2.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3146,7 +3154,7 @@ snapshots: '@rc-component/collapse@1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 react: 19.2.4 @@ -3168,7 +3176,7 @@ snapshots: '@rc-component/dialog@1.8.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/portal': 2.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3177,7 +3185,7 @@ snapshots: '@rc-component/drawer@1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/portal': 2.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3202,7 +3210,7 @@ snapshots: '@rc-component/image@1.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/portal': 2.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3237,7 +3245,7 @@ snapshots: '@rc-component/menu@1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/overflow': 1.0.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/trigger': 3.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3249,7 +3257,7 @@ snapshots: dependencies: '@babel/runtime': 7.28.6 - '@rc-component/motion@1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@rc-component/motion@1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3264,7 +3272,7 @@ snapshots: '@rc-component/notification@1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 react: 19.2.4 @@ -3334,13 +3342,13 @@ snapshots: '@rc-component/segmented@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@rc-component/select@1.6.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@rc-component/select@1.6.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@rc-component/overflow': 1.0.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/trigger': 3.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3385,7 +3393,7 @@ snapshots: dependencies: '@rc-component/dropdown': 1.0.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/menu': 1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/resize-observer': 1.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3420,7 +3428,7 @@ snapshots: '@rc-component/tree-select@1.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/select': 1.6.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/select': 1.6.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/tree': 1.2.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3429,7 +3437,7 @@ snapshots: '@rc-component/tree@1.2.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/virtual-list': 1.0.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 @@ -3438,7 +3446,7 @@ snapshots: '@rc-component/trigger@3.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/portal': 2.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/resize-observer': 1.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/util': 1.9.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3584,22 +3592,22 @@ snapshots: '@tanstack/history@1.161.4': {} - '@tanstack/react-router-devtools@1.162.9(@tanstack/react-router@1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.162.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-router-devtools@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.163.2)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/react-router': 1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-devtools-core': 1.162.9(@tanstack/router-core@1.162.9)(csstype@3.2.3) + '@tanstack/react-router': 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/router-devtools-core': 1.163.2(@tanstack/router-core@1.163.2)(csstype@3.2.3) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) optionalDependencies: - '@tanstack/router-core': 1.162.9 + '@tanstack/router-core': 1.163.2 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/history': 1.161.4 '@tanstack/react-store': 0.9.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-core': 1.162.9 + '@tanstack/router-core': 1.163.2 isbot: 5.1.35 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -3619,7 +3627,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@tanstack/router-core@1.162.9': + '@tanstack/router-core@1.163.2': dependencies: '@tanstack/history': 1.161.4 '@tanstack/store': 0.9.1 @@ -3629,18 +3637,18 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.162.9(@tanstack/router-core@1.162.9)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.163.2(@tanstack/router-core@1.163.2)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.162.9 + '@tanstack/router-core': 1.163.2 clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) tiny-invariant: 1.3.3 optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.162.9': + '@tanstack/router-generator@1.163.2': dependencies: - '@tanstack/router-core': 1.162.9 + '@tanstack/router-core': 1.163.2 '@tanstack/router-utils': 1.161.4 '@tanstack/virtual-file-routes': 1.161.4 prettier: 3.8.1 @@ -3651,7 +3659,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.162.9(@tanstack/react-router@1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.15(@types/node@25.3.0)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0))': + '@tanstack/router-plugin@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.15(@types/node@25.3.0)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -3659,15 +3667,15 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@tanstack/router-core': 1.162.9 - '@tanstack/router-generator': 1.162.9 + '@tanstack/router-core': 1.163.2 + '@tanstack/router-generator': 1.163.2 '@tanstack/router-utils': 1.161.4 '@tanstack/virtual-file-routes': 1.161.4 chokidar: 3.6.0 unplugin: 2.3.11 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.162.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-router': 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) vite: 8.0.0-beta.15(@types/node@25.3.0)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0) transitivePeerDependencies: - supports-color @@ -3840,7 +3848,7 @@ snapshots: ansis@4.2.0: {} - antd@6.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + antd@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@ant-design/colors': 8.0.1 '@ant-design/cssinjs': 2.1.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3862,7 +3870,7 @@ snapshots: '@rc-component/input-number': 1.6.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/mentions': 1.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/menu': 1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@rc-component/motion': 1.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/motion': 1.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/mutate-observer': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/notification': 1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/pagination': 1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3872,7 +3880,7 @@ snapshots: '@rc-component/rate': 1.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/resize-observer': 1.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/segmented': 1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@rc-component/select': 1.6.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rc-component/select': 1.6.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/slider': 1.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/steps': 1.2.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rc-component/switch': 1.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) diff --git a/src/agent/app.ts b/src/agents/app.ts similarity index 100% rename from src/agent/app.ts rename to src/agents/app.ts diff --git a/src/agent/index.ts b/src/agents/index.ts similarity index 52% rename from src/agent/index.ts rename to src/agents/index.ts index 5ca9c2a..7ca629d 100644 --- a/src/agent/index.ts +++ b/src/agents/index.ts @@ -1,5 +1,7 @@ import { app } from './app.ts'; import './routes/left-panel.ts'; +import { Load } from '@kevisual/context/load' +Load.npm({ pkg: 'eruda' }); export { app }; \ No newline at end of file diff --git a/src/agent/routes/left-panel.ts b/src/agents/routes/left-panel.ts similarity index 100% rename from src/agent/routes/left-panel.ts rename to src/agents/routes/left-panel.ts diff --git a/src/main.tsx b/src/main.tsx index e95e756..f876785 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -3,7 +3,7 @@ import { RouterProvider, createRouter } from '@tanstack/react-router' import { routeTree } from './routeTree.gen' import './index.css' import { getDynamicBasename } from './modules/basename' - +import './agents/index.ts'; // Set up a Router instance const router = createRouter({ routeTree, diff --git a/src/app/[root]/v1/[appId]/page2.tsx b/src/pages/[root]/v1/[appId]/page2.tsx similarity index 100% rename from src/app/[root]/v1/[appId]/page2.tsx rename to src/pages/[root]/v1/[appId]/page2.tsx diff --git a/src/app/about/page.tsx b/src/pages/about/page.tsx similarity index 100% rename from src/app/about/page.tsx rename to src/pages/about/page.tsx diff --git a/src/pages/auth/index.tsx b/src/pages/auth/index.tsx new file mode 100644 index 0000000..ac827c7 --- /dev/null +++ b/src/pages/auth/index.tsx @@ -0,0 +1,58 @@ +import { useEffect } from "react" +import { useLayoutStore } from "./store" +import { useShallow } from "zustand/shallow" +import { LogIn, LockKeyhole } from "lucide-react" +export { BaseHeader } from './modules/BaseHeader' +import { useMemo } from 'react'; +import { useLocation, useNavigate } from '@tanstack/react-router'; + + +type Props = { + children?: React.ReactNode, + mustLogin?: boolean, +} +export const AuthProvider = ({ children, mustLogin }: Props) => { + const store = useLayoutStore(useShallow(state => ({ + init: state.init, + me: state.me, + openLinkList: state.openLinkList, + }))); + useEffect(() => { + store.init() + }, []) + const location = useLocation() + const navigate = useNavigate(); + const isOpen = useMemo(() => { + return store.openLinkList.some(item => location.pathname.startsWith(item)) + }, [location.pathname]) + const loginUrl = '/root/login/?redirect=' + encodeURIComponent(window.location.href); + if (mustLogin && !store.me && !isOpen) { + return ( +
+
+
+ +
+
+

需要登录

+

请先登录以继续访问此页面

+
+
{ + // window.open(loginUrl, '_blank'); + navigate({ to: '/login' }); + }} + > + + 立即登录 +
+
+
+ ) + } + + return <> + {children} + +} \ No newline at end of file diff --git a/src/pages/auth/modules/BaseHeader.tsx b/src/pages/auth/modules/BaseHeader.tsx new file mode 100644 index 0000000..52fd8d2 --- /dev/null +++ b/src/pages/auth/modules/BaseHeader.tsx @@ -0,0 +1,89 @@ +import { Home, User, LogIn, LogOut } from 'lucide-react'; +import { Link, useNavigate } from '@tanstack/react-router' +import { useLayoutStore } from '../store'; +import { useShallow } from 'zustand/shallow'; +import { useMemo } from 'react'; + +export const BaseHeader = (props: { main?: React.ComponentType | null }) => { + const store = useLayoutStore(useShallow(state => ({ + me: state.me, + clearMe: state.clearMe, + links: state.links, + }))); + const navigate = useNavigate(); + const meInfo = useMemo(() => { + if (!store.me) { + return ( + + ) + } + return ( +
+ {store.me.avatar && ( + Avatar + )} + {!store.me.avatar && ( +
+ +
+ )} + {store.me?.username} + +
+ ) + }, [store.me, store.clearMe]) + return ( + <> +
+
+ { + store.links.map(link => ( +
{ + if (!link.href) return; + if (link.href.startsWith('http') || link.isRoot) { + window.open(link.href, '_blank'); + return; + } + navigate({ + to: link.href + }) + }} + > + {link.key === 'home' && } + {link.icon && <>{link.icon}} + {!link.icon && link.title} +
+ + )) + } +
+
+ {meInfo} +
+
+
+ + ) +} + +export const LayoutMain = () => { + return +} \ No newline at end of file diff --git a/src/pages/auth/page.tsx b/src/pages/auth/page.tsx new file mode 100644 index 0000000..3accab7 --- /dev/null +++ b/src/pages/auth/page.tsx @@ -0,0 +1,81 @@ +import { useContextKey } from '@kevisual/context'; +import '@kevisual/kv-login'; +import { checkPluginLogin } from '@kevisual/kv-login' +import { useEffect } from 'react'; +import { useLayoutStore } from './store'; +import { useShallow } from 'zustand/shallow'; +import { useNavigate } from '@tanstack/react-router'; + +export const LoginComponent = ({ onLoginSuccess }: { onLoginSuccess: () => void }) => { + useEffect(() => { + // 监听登录成功事件 + const handleLoginSuccess = () => { + console.log('监听到登录成功事件,关闭弹窗'); + onLoginSuccess(); + }; + const loginEmitter = useContextKey('login-emitter') + console.log('KvLogin Types:', loginEmitter); + + loginEmitter.on('login-success', handleLoginSuccess); + + // 清理监听器 + return () => { + loginEmitter.off('login-success', handleLoginSuccess); + }; + }, [onLoginSuccess]); + + // @ts-ignore + return () +} +export const App = () => { + const store = useLayoutStore(useShallow((state) => ({ + init: state.init, + loginPageConfig: state.loginPageConfig, + }))); + useEffect(() => { + checkPluginLogin(); + }, []); + const navigate = useNavigate(); + const handleLoginSuccess = async () => { + await store.init() + navigate({ to: '/' }) + }; + const { title, subtitle, footer } = store.loginPageConfig; + return ( +
+ {/* 背景装饰 - 圆形光晕 */} +
+
+
+ + {/* 背景装饰 - 网格图案 */} +
+ + {/* 顶部装饰文字 */} +
+

{title}

+

{subtitle}

+
+ + {/* 登录卡片容器 */} +
+
+ {/* 卡片外圈光效 */} +
+ + {/* 登录组件容器 */} +
+ +
+
+
+ + {/* 底部装饰 */} +
+

{footer}

+
+
+ ) +} + +export default App; \ No newline at end of file diff --git a/src/pages/auth/store.ts b/src/pages/auth/store.ts new file mode 100644 index 0000000..0f44253 --- /dev/null +++ b/src/pages/auth/store.ts @@ -0,0 +1,106 @@ + +import { queryLogin } from '@/modules/query'; +import { create } from 'zustand'; +import { toast } from 'sonner'; +type UserInfo = { + id?: string; + username?: string; + nickname?: string | null; + needChangePassword?: boolean; + description?: string | null; + type?: 'user' | 'org'; + orgs?: string[]; + avatar?: string; +}; +export type LayoutStore = { + open: boolean; + setOpen: (open: boolean) => void; + openUser: boolean; + setOpenUser: (openUser: boolean) => void; + me?: UserInfo; + setMe: (me: UserInfo) => void; + clearMe: () => void; + getMe: () => Promise; + switchOrg: (username?: string) => Promise; + isAdmin: boolean; + setIsAdmin: (isAdmin: boolean) => void + init: () => Promise; + openLinkList: string[]; + setOpenLinkList: (openLinkList: string[]) => void; + loginPageConfig: { + title: string; + subtitle: string; + footer: string; + }; + setLoginPageConfig: (config: Partial) => void; + links: HeaderLink[]; + setLinks: (links: HeaderLink[]) => void; +}; +type HeaderLink = { + title?: string; + href: string; + description?: string; + icon?: React.ReactNode; + key?: string; + isRoot?: boolean; +}; + +export const useLayoutStore = create((set, get) => ({ + open: false, + setOpen: (open) => set({ open }), + openUser: false, + setOpenUser: (openUser) => set({ openUser }), + me: undefined, + setMe: (me) => set({ me }), + clearMe: () => { + set({ me: undefined, isAdmin: false }); + window.location.href = '/root/login/?redirect=' + encodeURIComponent(window.location.href); + }, + getMe: async () => { + const res = await queryLogin.getMe(); + if (res.code === 200) { + set({ me: res.data }); + set({ isAdmin: res.data.orgs?.includes?.('admin') || false }); + } + }, + switchOrg: async (username?: string) => { + const res = await queryLogin.switchUser(username || ''); + if (res.code === 200) { + toast.success('切换成功'); + setTimeout(() => { + window.location.reload(); + }, 1000); + } else { + toast.error(res.message || '请求失败'); + } + }, + isAdmin: false, + setIsAdmin: (isAdmin) => set({ isAdmin }), + init: async () => { + const token = await queryLogin.getToken(); + if (token) { + set({ me: {} }) + const me = await queryLogin.getMe(); + // const user = await queryLogin.checkLocalUser() as UserInfo; + const user = me.code === 200 ? me.data : undefined; + if (user) { + set({ me: user }); + set({ isAdmin: user.orgs?.includes?.('admin') || false }); + } else { + set({ me: undefined, isAdmin: false }); + } + } + }, + openLinkList: ['/login'], + setOpenLinkList: (openLinkList) => set({ openLinkList }), + loginPageConfig: { + title: '可视化管理平台', + subtitle: '让工具和智能化触手可及', + footer: '欢迎使用可视化管理平台 · 连接您的工具', + }, + setLoginPageConfig: (config) => set((state) => ({ + loginPageConfig: { ...state.loginPageConfig, ...config }, + })), + links: [{ title: '', href: '/', key: 'home' }], + setLinks: (links) => set({ links }), +})); diff --git a/src/app/chat/index.tsx b/src/pages/chat/index.tsx similarity index 99% rename from src/app/chat/index.tsx rename to src/pages/chat/index.tsx index 7ba1984..c678f7d 100644 --- a/src/app/chat/index.tsx +++ b/src/pages/chat/index.tsx @@ -1,4 +1,4 @@ -import { app } from '@/agent/index.ts' +import { app } from '@/agents' import { useStudioStore } from '../studio/store'; import { useShallow } from 'zustand/shallow'; import { useState } from 'react'; diff --git a/src/app/chat/modules/messages.tsx b/src/pages/chat/modules/messages.tsx similarity index 100% rename from src/app/chat/modules/messages.tsx rename to src/pages/chat/modules/messages.tsx diff --git a/src/app/chat/store.ts b/src/pages/chat/store.ts similarity index 100% rename from src/app/chat/store.ts rename to src/pages/chat/store.ts diff --git a/src/app/cv/index.css b/src/pages/cv/index.css similarity index 100% rename from src/app/cv/index.css rename to src/pages/cv/index.css diff --git a/src/app/cv/index.tsx b/src/pages/cv/index.tsx similarity index 100% rename from src/app/cv/index.tsx rename to src/pages/cv/index.tsx diff --git a/src/app/id/page.tsx b/src/pages/id/page.tsx similarity index 100% rename from src/app/id/page.tsx rename to src/pages/id/page.tsx diff --git a/src/app/page.tsx b/src/pages/page.tsx similarity index 100% rename from src/app/page.tsx rename to src/pages/page.tsx diff --git a/src/app/query-view/components/DetailsDialog.tsx b/src/pages/query-view/components/DetailsDialog.tsx similarity index 99% rename from src/app/query-view/components/DetailsDialog.tsx rename to src/pages/query-view/components/DetailsDialog.tsx index 1bb061c..01e050f 100644 --- a/src/app/query-view/components/DetailsDialog.tsx +++ b/src/pages/query-view/components/DetailsDialog.tsx @@ -1,7 +1,7 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { DetailsTab, useQueryViewStore } from '../store'; import { useShallow } from 'zustand/shallow'; -import { useStudioStore, filterRouteInfo, getPayload } from '@/app/studio/store'; +import { useStudioStore, filterRouteInfo, getPayload } from '@/pages/studio/store'; import { QueryView } from '..'; import { useCallback, useMemo, useState } from 'react'; import { pickRouterViewData, RouterViewData, RouterViewItem } from '@kevisual/api/proxy'; diff --git a/src/app/query-view/index.tsx b/src/pages/query-view/index.tsx similarity index 99% rename from src/app/query-view/index.tsx rename to src/pages/query-view/index.tsx index b8f1f77..5238e51 100644 --- a/src/app/query-view/index.tsx +++ b/src/pages/query-view/index.tsx @@ -1,5 +1,5 @@ import { QueryProxy, RouterViewItem } from '@kevisual/api/proxy' -import { app } from '@/agent/index.ts' +import { app } from '@/agents' import { use, useEffect, useState, useRef, useId, useMemo } from 'react' import { flexRender, useReactTable, getCoreRowModel, ColumnDef } from '@tanstack/react-table' import { RefreshCw, Info, MoreVertical, Edit, Trash2, Download, Save, ExternalLink, Code, Delete, Maximize, Minimize } from 'lucide-react' diff --git a/src/app/query-view/page.tsx b/src/pages/query-view/page.tsx similarity index 100% rename from src/app/query-view/page.tsx rename to src/pages/query-view/page.tsx diff --git a/src/app/query-view/store/index.ts b/src/pages/query-view/store/index.ts similarity index 100% rename from src/app/query-view/store/index.ts rename to src/pages/query-view/store/index.ts diff --git a/src/app/setting/index.tsx b/src/pages/setting/index.tsx similarity index 100% rename from src/app/setting/index.tsx rename to src/pages/setting/index.tsx diff --git a/src/app/studio/components/ExportDialog.tsx b/src/pages/studio/components/ExportDialog.tsx similarity index 100% rename from src/app/studio/components/ExportDialog.tsx rename to src/pages/studio/components/ExportDialog.tsx diff --git a/src/app/studio/index.tsx b/src/pages/studio/index.tsx similarity index 100% rename from src/app/studio/index.tsx rename to src/pages/studio/index.tsx diff --git a/src/app/studio/store.ts b/src/pages/studio/store.ts similarity index 99% rename from src/app/studio/store.ts rename to src/pages/studio/store.ts index b129984..c621c24 100644 --- a/src/app/studio/store.ts +++ b/src/pages/studio/store.ts @@ -6,7 +6,7 @@ import { toast } from 'sonner'; import { use } from '@kevisual/context' // import { MyCache } from '@kevisual/cache' import { persist } from 'zustand/middleware'; -import { app } from '@/agent/index.ts' +import { app } from '@/agents' import { cloneDeep } from 'es-toolkit' import { nanoid } from 'nanoid'; import { Result } from '@kevisual/query'; diff --git a/src/app/view/components/DataItemForm.tsx b/src/pages/view/components/DataItemForm.tsx similarity index 100% rename from src/app/view/components/DataItemForm.tsx rename to src/pages/view/components/DataItemForm.tsx diff --git a/src/app/view/components/ViewEditor.tsx b/src/pages/view/components/ViewEditor.tsx similarity index 98% rename from src/app/view/components/ViewEditor.tsx rename to src/pages/view/components/ViewEditor.tsx index 34ae036..d977ad4 100644 --- a/src/app/view/components/ViewEditor.tsx +++ b/src/pages/view/components/ViewEditor.tsx @@ -4,8 +4,8 @@ import { Label } from "@/components/ui/label" import { Input } from "@/components/ui/input" import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" -import { DataItemForm } from "@/app/view/components/DataItemForm" -import { ViewFormItem } from "@/app/view/components/ViewFormItem" +import { DataItemForm } from "@/pages/view/components/DataItemForm" +import { ViewFormItem } from "@/pages/view/components/ViewFormItem" import { nanoid } from "nanoid" interface ViewEditorProps { diff --git a/src/app/view/components/ViewFormItem.tsx b/src/pages/view/components/ViewFormItem.tsx similarity index 100% rename from src/app/view/components/ViewFormItem.tsx rename to src/pages/view/components/ViewFormItem.tsx diff --git a/src/app/view/list.tsx b/src/pages/view/list.tsx similarity index 99% rename from src/app/view/list.tsx rename to src/pages/view/list.tsx index a6f3f61..0dda576 100644 --- a/src/app/view/list.tsx +++ b/src/pages/view/list.tsx @@ -11,7 +11,7 @@ import { } from "@/components/ui/dropdown-menu"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; -import { ViewEditor } from "@/app/view/components/ViewEditor.tsx"; +import { ViewEditor } from "@/pages/view/components/ViewEditor.tsx"; import { toast } from "sonner"; import { useShallow } from "zustand/shallow"; diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts index 3bd923f..e00082d 100644 --- a/src/routeTree.gen.ts +++ b/src/routeTree.gen.ts @@ -10,6 +10,7 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as ViewRouteImport } from './routes/view' +import { Route as LoginRouteImport } from './routes/login' import { Route as ConsoleRouteImport } from './routes/console' import { Route as IdRouteImport } from './routes/$id' import { Route as IndexRouteImport } from './routes/index' @@ -19,6 +20,11 @@ const ViewRoute = ViewRouteImport.update({ path: '/view', getParentRoute: () => rootRouteImport, } as any) +const LoginRoute = LoginRouteImport.update({ + id: '/login', + path: '/login', + getParentRoute: () => rootRouteImport, +} as any) const ConsoleRoute = ConsoleRouteImport.update({ id: '/console', path: '/console', @@ -39,12 +45,14 @@ export interface FileRoutesByFullPath { '/': typeof IndexRoute '/$id': typeof IdRoute '/console': typeof ConsoleRoute + '/login': typeof LoginRoute '/view': typeof ViewRoute } export interface FileRoutesByTo { '/': typeof IndexRoute '/$id': typeof IdRoute '/console': typeof ConsoleRoute + '/login': typeof LoginRoute '/view': typeof ViewRoute } export interface FileRoutesById { @@ -52,20 +60,22 @@ export interface FileRoutesById { '/': typeof IndexRoute '/$id': typeof IdRoute '/console': typeof ConsoleRoute + '/login': typeof LoginRoute '/view': typeof ViewRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' | '/$id' | '/console' | '/view' + fullPaths: '/' | '/$id' | '/console' | '/login' | '/view' fileRoutesByTo: FileRoutesByTo - to: '/' | '/$id' | '/console' | '/view' - id: '__root__' | '/' | '/$id' | '/console' | '/view' + to: '/' | '/$id' | '/console' | '/login' | '/view' + id: '__root__' | '/' | '/$id' | '/console' | '/login' | '/view' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute IdRoute: typeof IdRoute ConsoleRoute: typeof ConsoleRoute + LoginRoute: typeof LoginRoute ViewRoute: typeof ViewRoute } @@ -78,6 +88,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ViewRouteImport parentRoute: typeof rootRouteImport } + '/login': { + id: '/login' + path: '/login' + fullPath: '/login' + preLoaderRoute: typeof LoginRouteImport + parentRoute: typeof rootRouteImport + } '/console': { id: '/console' path: '/console' @@ -106,6 +123,7 @@ const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, IdRoute: IdRoute, ConsoleRoute: ConsoleRoute, + LoginRoute: LoginRoute, ViewRoute: ViewRoute, } export const routeTree = rootRouteImport diff --git a/src/routes/$id.tsx b/src/routes/$id.tsx index 2423344..c72e2ec 100644 --- a/src/routes/$id.tsx +++ b/src/routes/$id.tsx @@ -1,5 +1,5 @@ import { createFileRoute } from '@tanstack/react-router' -import App from '@/app/page' +import App from '@/pages/page' export const Route = createFileRoute('/$id')({ component: RouteComponent, diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 5ca3f24..2a6d2ea 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -1,38 +1,27 @@ -import { Link, Outlet, createRootRoute, useLocation } from '@tanstack/react-router' +import { LayoutMain } from '@/pages/auth/modules/BaseHeader'; +import { Outlet, createRootRoute } from '@tanstack/react-router' import { TanStackRouterDevtools } from '@tanstack/react-router-devtools' import { Toaster } from '@/components/ui/sonner' -import { Load } from '@kevisual/context/load' -import * as query from '@/modules/query'; +import { AuthProvider } from '@/pages/auth' +import { TooltipProvider } from '@/components/ui/tooltip' export const Route = createRootRoute({ component: RootComponent, }) -Load.npm({ pkg: 'eruda' }); + function RootComponent() { - // 这里预加载一下 query 模块,避免在代码分割自动threeshaking; - query; - return (
- -
- - 首页 - -
-
-
- -
- + + + +
+ +
+
+
+
- ) } \ No newline at end of file diff --git a/src/routes/index.tsx b/src/routes/index.tsx index fb5c5df..6ebcf2e 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -1,5 +1,5 @@ import { createFileRoute } from '@tanstack/react-router' -import App from '@/app/page' +import App from '@/pages/page' export const Route = createFileRoute('/')({ component: RouteComponent, }) diff --git a/src/routes/login.tsx b/src/routes/login.tsx new file mode 100644 index 0000000..d1fe643 --- /dev/null +++ b/src/routes/login.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' +import App from '@/pages/auth/page' +export const Route = createFileRoute('/login')({ + component: RouteComponent, +}) + +function RouteComponent() { + return +} diff --git a/src/routes/view.tsx b/src/routes/view.tsx index 0cf0cc0..8c95818 100644 --- a/src/routes/view.tsx +++ b/src/routes/view.tsx @@ -1,5 +1,5 @@ import { createFileRoute } from '@tanstack/react-router' -import App from '../app/query-view/page' +import App from '@/pages/query-view/page' export const Route = createFileRoute('/view')({ component: RouteComponent, }) diff --git a/web/.cnb.yml b/web/.cnb.yml deleted file mode 100644 index f972dd3..0000000 --- a/web/.cnb.yml +++ /dev/null @@ -1,19 +0,0 @@ -# .cnb.yml -include: - - https://cnb.cool/kevisual/cnb/-/blob/main/.cnb/template.yml - -.common_env: &common_env - env: - USERNAME: root - imports: - - https://cnb.cool/kevisual/env/-/blob/main/.env.development - -$: - vscode: - - docker: - image: docker.cnb.cool/kevisual/dev-env:latest - services: - - vscode - - docker - imports: !reference [.common_env, imports] - stages: !reference [.dev_template, stages] \ No newline at end of file diff --git a/web/.env.example b/web/.env.example deleted file mode 100644 index 74e16b8..0000000 --- a/web/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -NODE_ENV= -VITE_API_URL=http://localhost:51515 \ No newline at end of file diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index 2a7fb8e..0000000 --- a/web/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -# Logs -logs -*.log - -node_modules -dist -pack-dist - -.DS_Store - -.turbo - -.pnpm-store - -.tanstack -.env* - -!.env.example \ No newline at end of file