From 0d89b3b9f370f9a7f5cc1b07fa21d552c3ecffcf Mon Sep 17 00:00:00 2001 From: James Pine Date: Fri, 3 Apr 2026 20:44:10 -0700 Subject: [PATCH 01/52] spaceui --- interface/bun.lock | 281 +++++++----------- interface/package.json | 25 +- interface/postcss.config.js | 6 - interface/src/components/ChannelCard.tsx | 6 +- interface/src/components/ChannelEditModal.tsx | 14 +- .../src/components/ChannelSettingCard.tsx | 16 +- interface/src/components/ConnectionBanner.tsx | 2 +- interface/src/components/ConnectionScreen.tsx | 3 +- .../components/ConversationSettingsPanel.tsx | 34 +-- .../src/components/ConversationsSidebar.tsx | 18 +- interface/src/components/CortexChatPanel.tsx | 18 +- .../src/components/CreateAgentDialog.tsx | 6 +- .../src/components/DeleteAgentDialog.tsx | 6 +- interface/src/components/MemoryGraph.tsx | 93 +++--- interface/src/components/ModelSelect.tsx | 2 +- .../src/components/PromptInspectModal.tsx | 7 +- interface/src/components/SetupBanner.tsx | 2 +- interface/src/components/Sidebar.tsx | 9 +- interface/src/components/TaskBoard.tsx | 18 +- interface/src/components/ToolCall.tsx | 2 +- interface/src/components/TopologyGraph.tsx | 11 +- interface/src/components/WebChatPanel.tsx | 12 +- interface/src/hooks/useTheme.ts | 31 +- interface/src/main.tsx | 2 +- interface/src/routes/AgentChannels.tsx | 7 +- interface/src/routes/AgentConfig.tsx | 17 +- interface/src/routes/AgentCortex.tsx | 7 +- interface/src/routes/AgentCron.tsx | 39 ++- interface/src/routes/AgentIngest.tsx | 2 +- interface/src/routes/AgentMemories.tsx | 64 ++-- interface/src/routes/AgentProjects.tsx | 23 +- interface/src/routes/AgentSkills.tsx | 10 +- interface/src/routes/AgentWorkers.tsx | 7 +- interface/src/routes/ChannelDetail.tsx | 11 +- interface/src/routes/Orchestrate.tsx | 4 +- interface/src/routes/Overlay.tsx | 2 +- interface/src/routes/Overview.tsx | 7 +- interface/src/routes/Settings.tsx | 53 ++-- interface/src/styles.css | 185 ++++++++++++ interface/src/ui/Badge.tsx | 80 ----- interface/src/ui/Banner.tsx | 63 ---- interface/src/ui/Button.tsx | 92 ------ interface/src/ui/Card.tsx | 110 ------- interface/src/ui/Checkbox.tsx | 110 ------- interface/src/ui/Dialog.tsx | 117 -------- interface/src/ui/Divider.tsx | 5 - interface/src/ui/Dropdown.tsx | 210 ------------- interface/src/ui/FilterButton.tsx | 30 -- interface/src/ui/Input.tsx | 153 ---------- interface/src/ui/Loader.tsx | 54 ---- interface/src/ui/NumberStepper.tsx | 118 -------- interface/src/ui/Popover.tsx | 83 ------ interface/src/ui/ProgressBar.tsx | 258 ---------------- interface/src/ui/RadioGroup.tsx | 121 -------- interface/src/ui/Select.tsx | 158 ---------- interface/src/ui/SettingSidebarButton.tsx | 2 +- interface/src/ui/Slider.tsx | 144 --------- interface/src/ui/Tabs.tsx | 52 ---- interface/src/ui/Toggle.tsx | 3 +- interface/src/ui/ToggleGroup.tsx | 51 ---- interface/src/ui/Tooltip.tsx | 27 -- interface/src/ui/Typography.tsx | 15 - interface/src/ui/forms/CheckBoxField.tsx | 48 --- interface/src/ui/forms/Form.tsx | 20 -- interface/src/ui/forms/FormField.tsx | 183 ------------ interface/src/ui/forms/InputField.tsx | 46 --- interface/src/ui/forms/SelectField.tsx | 81 ----- interface/src/ui/forms/SwitchField.tsx | 54 ---- interface/src/ui/forms/TextAreaField.tsx | 47 --- interface/src/ui/forms/index.ts | 9 - interface/src/ui/index.ts | 26 -- interface/src/ui/style/colors.scss | 198 ------------ interface/src/ui/style/style.scss | 134 --------- interface/src/ui/utils.tsx | 73 ----- interface/tailwind.config.ts | 109 ------- interface/vite.config.ts | 107 ++++++- packages/api-client/src/client.ts | 51 ++++ packages/api-client/src/events.ts | 11 +- 78 files changed, 722 insertions(+), 3593 deletions(-) delete mode 100644 interface/postcss.config.js create mode 100644 interface/src/styles.css delete mode 100644 interface/src/ui/Badge.tsx delete mode 100644 interface/src/ui/Banner.tsx delete mode 100644 interface/src/ui/Button.tsx delete mode 100644 interface/src/ui/Card.tsx delete mode 100644 interface/src/ui/Checkbox.tsx delete mode 100644 interface/src/ui/Dialog.tsx delete mode 100644 interface/src/ui/Divider.tsx delete mode 100644 interface/src/ui/Dropdown.tsx delete mode 100644 interface/src/ui/FilterButton.tsx delete mode 100644 interface/src/ui/Input.tsx delete mode 100644 interface/src/ui/Loader.tsx delete mode 100644 interface/src/ui/NumberStepper.tsx delete mode 100644 interface/src/ui/Popover.tsx delete mode 100644 interface/src/ui/ProgressBar.tsx delete mode 100644 interface/src/ui/RadioGroup.tsx delete mode 100644 interface/src/ui/Select.tsx delete mode 100644 interface/src/ui/Slider.tsx delete mode 100644 interface/src/ui/Tabs.tsx delete mode 100644 interface/src/ui/ToggleGroup.tsx delete mode 100644 interface/src/ui/Tooltip.tsx delete mode 100644 interface/src/ui/Typography.tsx delete mode 100644 interface/src/ui/forms/CheckBoxField.tsx delete mode 100644 interface/src/ui/forms/Form.tsx delete mode 100644 interface/src/ui/forms/FormField.tsx delete mode 100644 interface/src/ui/forms/InputField.tsx delete mode 100644 interface/src/ui/forms/SelectField.tsx delete mode 100644 interface/src/ui/forms/SwitchField.tsx delete mode 100644 interface/src/ui/forms/TextAreaField.tsx delete mode 100644 interface/src/ui/forms/index.ts delete mode 100644 interface/src/ui/index.ts delete mode 100644 interface/src/ui/style/colors.scss delete mode 100644 interface/src/ui/style/style.scss delete mode 100644 interface/src/ui/utils.tsx delete mode 100644 interface/tailwind.config.ts diff --git a/interface/bun.lock b/interface/bun.lock index 4fc28204e..3bfecf5a3 100644 --- a/interface/bun.lock +++ b/interface/bun.lock @@ -19,20 +19,14 @@ "@fortawesome/free-solid-svg-icons": "^7.2.0", "@fortawesome/react-fontawesome": "^3.0.0", "@hookform/resolvers": "^5.2.2", - "@hugeicons/core-free-icons": "^3.1.1", - "@hugeicons/react": "^1.1.5", "@lobehub/icons": "^4.6.0", - "@radix-ui/react-checkbox": "^1.3.3", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-popover": "^1.1.15", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-slider": "^1.3.6", - "@radix-ui/react-switch": "^1.2.6", - "@radix-ui/react-tabs": "^1.1.13", - "@radix-ui/react-tooltip": "^1.2.8", + "@phosphor-icons/react": "^2.1.10", "@react-sigma/core": "^5.0.6", + "@spaceui/ai": "link:@spaceui/ai", + "@spaceui/explorer": "link:@spaceui/explorer", + "@spaceui/forms": "link:@spaceui/forms", + "@spaceui/primitives": "link:@spaceui/primitives", + "@spaceui/tokens": "link:@spaceui/tokens", "@tanstack/react-query": "^5.62.0", "@tanstack/react-query-devtools": "^5.91.3", "@tanstack/react-router": "^1.159.5", @@ -61,15 +55,12 @@ "zod": "^4.3.6", }, "devDependencies": { + "@tailwindcss/vite": "^4.2.2", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^4.3.4", - "autoprefixer": "^10.4.18", "openapi-typescript": "^7", - "postcss": "^8.4.36", - "sass": "^1.72.0", - "tailwindcss": "^3.4.1", - "tailwindcss-animate": "^1.0.7", + "tailwindcss": "^4.2.2", "typescript": "^5.6.2", "vite": "^6.0.0", }, @@ -80,8 +71,6 @@ }, }, "packages": { - "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, ""], - "@ant-design/colors": ["@ant-design/colors@8.0.1", "", { "dependencies": { "@ant-design/fast-color": "^3.0.0" } }, "sha512-foPVl0+SWIslGUtD/xBr1p9U4AKzPhNYEseXYRRo5QSzGACYZrQbe11AYJbYfAWnWSpGBx6JjBmSeugUsD9vqQ=="], "@ant-design/cssinjs": ["@ant-design/cssinjs@2.1.0", "", { "dependencies": { "@babel/runtime": "^7.11.1", "@emotion/hash": "^0.8.0", "@emotion/unitless": "^0.7.5", "@rc-component/util": "^1.4.0", "clsx": "^2.1.1", "csstype": "^3.1.3", "stylis": "^4.3.4" }, "peerDependencies": { "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, "sha512-eZFrPCnrYrF3XtL7qA4L75P0qA3TtZta8H3Yggy7UYFh8gZgu5bSMNF+v4UVCzGxzYmx8ZvPdgOce0BJ6PsW9g=="], @@ -240,10 +229,6 @@ "@hookform/resolvers": ["@hookform/resolvers@5.2.2", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "react-hook-form": "^7.55.0" } }, "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA=="], - "@hugeicons/core-free-icons": ["@hugeicons/core-free-icons@3.1.1", "", {}, "sha512-UpS2lUQFi5sKyJSWwM6rO+BnPLvVz1gsyCpPHeZyVuZqi89YH8ksliza4cwaODqKOZyeXmG8juo1ty4QtQofkg=="], - - "@hugeicons/react": ["@hugeicons/react@1.1.5", "", { "peerDependencies": { "react": ">=16.0.0" } }, "sha512-JX/iDz3oO7hWdVqbjwFwRrAjHk8h2vI+mBkNzp4JcXG3t4idoupfjon73nLOA7cr27m0M8hrRC1Q2h6nEBGKVA=="], - "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], "@iconify/utils": ["@iconify/utils@3.1.0", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "mlly": "^1.8.0" } }, "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw=="], @@ -284,52 +269,28 @@ "@mermaid-js/parser": ["@mermaid-js/parser@0.6.3", "", { "dependencies": { "langium": "3.3.1" } }, "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, ""], - - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, ""], - - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, ""], - "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-darwin-arm64": "2.5.6" } }, ""], "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, ""], + "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], + "@pierre/diffs": ["@pierre/diffs@1.0.11", "", { "dependencies": { "@shikijs/core": "^3.0.0", "@shikijs/engine-javascript": "^3.0.0", "@shikijs/transformers": "^3.0.0", "diff": "8.0.3", "hast-util-to-html": "9.0.5", "lru_map": "0.4.1", "shiki": "^3.0.0" }, "peerDependencies": { "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0" } }, "sha512-j6zIEoyImQy1HfcJqbrDwP0O5I7V2VNXAaw53FqQ+SykRfaNwABeZHs9uibXO4supaXPmTx6LEH9Lffr03e1Tw=="], "@primer/octicons": ["@primer/octicons@19.22.0", "", { "dependencies": { "object-assign": "^4.1.1" } }, "sha512-nWoh9PlE6u7xbiZF3KcUm3ktLpN2rQPt11trwp/t4EsKuYRNVWVbBp1LkCBsvZq7ScckNKUURLigIU0wS1FQdw=="], - "@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.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" } }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], - "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "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" } }, "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw=="], - - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.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" } }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "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" } }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="], - - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "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" } }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "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" } }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], - - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], - - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "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" } }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "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" } }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], - - "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "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" } }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="], - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "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" } }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "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" } }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], @@ -338,19 +299,7 @@ "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.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" } }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.3.8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "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" } }, "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ=="], - - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "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" } }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], - - "@radix-ui/react-select": ["@radix-ui/react-select@2.2.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3", "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" } }, "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ=="], - - "@radix-ui/react-slider": ["@radix-ui/react-slider@1.3.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "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" } }, "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw=="], - - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "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" } }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-switch": ["@radix-ui/react-switch@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "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" } }, "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ=="], - - "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.13", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "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" } }, "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A=="], + "@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=="], "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.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" } }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="], @@ -364,8 +313,6 @@ "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="], - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], @@ -490,6 +437,16 @@ "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + "@spaceui/ai": ["@spaceui/ai@link:@spaceui/ai", {}], + + "@spaceui/explorer": ["@spaceui/explorer@link:@spaceui/explorer", {}], + + "@spaceui/forms": ["@spaceui/forms@link:@spaceui/forms", {}], + + "@spaceui/primitives": ["@spaceui/primitives@link:@spaceui/primitives", {}], + + "@spaceui/tokens": ["@spaceui/tokens@link:@spaceui/tokens", {}], + "@splinetool/runtime": ["@splinetool/runtime@0.9.526", "", { "dependencies": { "on-change": "^4.0.0", "semver-compare": "^1.0.0" } }, "sha512-qznHbXA5aKwDbCgESAothCNm1IeEZcmNWG145p5aXj4w5uoqR1TZ9qkTHTKLTsUbHeitCwdhzmRqan1kxboLgQ=="], "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, ""], @@ -498,6 +455,36 @@ "@stitches/react": ["@stitches/react@1.2.8", "", { "peerDependencies": { "react": ">= 16.3.0" } }, "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA=="], + "@tailwindcss/node": ["@tailwindcss/node@4.2.2", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.2" } }, "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.2", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.2", "@tailwindcss/oxide-darwin-arm64": "4.2.2", "@tailwindcss/oxide-darwin-x64": "4.2.2", "@tailwindcss/oxide-freebsd-x64": "4.2.2", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", "@tailwindcss/oxide-linux-x64-musl": "4.2.2", "@tailwindcss/oxide-wasm32-wasi": "4.2.2", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.2", "", { "os": "android", "cpu": "arm64" }, "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2", "", { "os": "linux", "cpu": "arm" }, "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.2", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.2", "", { "os": "win32", "cpu": "x64" }, "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.2.2", "", { "dependencies": { "@tailwindcss/node": "4.2.2", "@tailwindcss/oxide": "4.2.2", "tailwindcss": "4.2.2" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w=="], + "@tanstack/history": ["@tanstack/history@1.154.14", "", {}, ""], "@tanstack/query-core": ["@tanstack/query-core@5.90.20", "", {}, ""], @@ -658,24 +645,14 @@ "antd-style": ["antd-style@4.1.0", "", { "dependencies": { "@ant-design/cssinjs": "^2.0.0", "@babel/runtime": "^7.24.1", "@emotion/cache": "^11.11.0", "@emotion/css": "^11.11.2", "@emotion/react": "^11.11.4", "@emotion/serialize": "^1.1.3", "@emotion/utils": "^1.2.1", "use-merge-value": "^1.2.0" }, "peerDependencies": { "antd": ">=6.0.0", "react": ">=18" } }, "sha512-vnPBGg0OVlSz90KRYZhxd89aZiOImTiesF+9MQqN8jsLGZUQTjbP04X9jTdEfsztKUuMbBWg/RmB/wHTakbtMQ=="], - "any-promise": ["any-promise@1.3.0", "", {}, ""], - - "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, ""], - - "arg": ["arg@5.0.2", "", {}, ""], - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - "assign-symbols": ["assign-symbols@1.0.0", "", {}, "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw=="], "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], "attr-accept": ["attr-accept@2.2.5", "", {}, "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ=="], - "autoprefixer": ["autoprefixer@10.4.24", "", { "dependencies": { "browserslist": "^4.28.1", "caniuse-lite": "^1.0.30001766", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": "bin/autoprefixer" }, ""], - "babel-plugin-macros": ["babel-plugin-macros@3.1.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" } }, "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="], "bail": ["bail@2.0.2", "", {}, ""], @@ -684,18 +661,12 @@ "baseline-browser-mapping": ["baseline-browser-mapping@2.9.19", "", { "bin": "dist/cli.js" }, ""], - "binary-extensions": ["binary-extensions@2.3.0", "", {}, ""], - "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, ""], - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": "cli.js" }, ""], "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "camelcase-css": ["camelcase-css@2.0.1", "", {}, ""], - "caniuse-lite": ["caniuse-lite@1.0.30001769", "", {}, ""], "ccount": ["ccount@2.0.1", "", {}, ""], @@ -736,7 +707,7 @@ "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, ""], - "commander": ["commander@4.1.1", "", {}, ""], + "commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], "compute-scroll-into-view": ["compute-scroll-into-view@3.1.1", "", {}, "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="], @@ -752,8 +723,6 @@ "crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], - "cssesc": ["cssesc@3.0.0", "", { "bin": "bin/cssesc" }, ""], - "csstype": ["csstype@3.2.3", "", {}, ""], "cytoscape": ["cytoscape@3.33.1", "", {}, "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ=="], @@ -844,16 +813,10 @@ "detect-libc": ["detect-libc@2.1.2", "", {}, ""], - "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, ""], - "didyoumean": ["didyoumean@1.2.2", "", {}, ""], - "diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], - "dlv": ["dlv@1.1.3", "", {}, ""], - "dompurify": ["dompurify@3.3.1", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q=="], "electron-to-chromium": ["electron-to-chromium@1.5.286", "", {}, ""], @@ -862,6 +825,8 @@ "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + "enhanced-resolve": ["enhanced-resolve@5.20.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA=="], + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], @@ -902,24 +867,16 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, ""], - - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, ""], - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" } }, ""], "file-selector": ["file-selector@0.5.0", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, ""], - "filter-obj": ["filter-obj@5.1.0", "", {}, "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng=="], "find-root": ["find-root@1.1.0", "", {}, "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="], "for-in": ["for-in@1.0.2", "", {}, "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ=="], - "fraction.js": ["fraction.js@5.3.4", "", {}, ""], - "framer-motion": ["framer-motion@12.34.0", "", { "dependencies": { "motion-dom": "^12.34.0", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid"] }, ""], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, ""], @@ -930,16 +887,14 @@ "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "get-value": ["get-value@2.0.6", "", {}, "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA=="], "giscus": ["giscus@1.6.0", "", { "dependencies": { "lit": "^3.2.1" } }, "sha512-Zrsi8r4t1LVW950keaWcsURuZUQwUaMKjvJgTCY125vkW6OiEBkatE7ScJDbpqKHdZwb///7FVC21SE3iFK3PQ=="], - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, ""], - "goober": ["goober@2.1.18", "", { "peerDependencies": { "csstype": "^3.0.10" } }, ""], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "graphology": ["graphology@0.26.0", "", { "dependencies": { "events": "^3.3.0" }, "peerDependencies": { "graphology-types": ">=0.24.0" } }, "sha512-8SSImzgUUYC89Z042s+0r/vMibY7GX/Emz4LDO5e7jYXhuoWfHISPFJYjpRLUSJGq6UQ6xlenvX1p/hJdfXuXg=="], "graphology-layout-forceatlas2": ["graphology-layout-forceatlas2@0.10.1", "", { "dependencies": { "graphology-utils": "^2.1.0" }, "peerDependencies": { "graphology-types": ">=0.19.0" } }, "sha512-ogzBeF1FvWzjkikrIFwxhlZXvD2+wlY54lqhsrWprcdPjopM2J9HoMweUmIgwaTvY4bUYVimpSsOdvDv1gPRFQ=="], @@ -1010,8 +965,6 @@ "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, ""], - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, ""], "is-decimal": ["is-decimal@2.0.1", "", {}, ""], @@ -1026,8 +979,6 @@ "is-mobile": ["is-mobile@5.0.0", "", {}, "sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ=="], - "is-number": ["is-number@7.0.0", "", {}, ""], - "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, ""], "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], @@ -1066,7 +1017,29 @@ "leva": ["leva@0.10.1", "", { "dependencies": { "@radix-ui/react-portal": "^1.1.4", "@radix-ui/react-tooltip": "^1.1.8", "@stitches/react": "^1.2.8", "@use-gesture/react": "^10.2.5", "colord": "^2.9.2", "dequal": "^2.0.2", "merge-value": "^1.0.0", "react-colorful": "^5.5.1", "react-dropzone": "^12.0.0", "v8n": "^1.3.3", "zustand": "^3.6.9" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-BcjnfUX8jpmwZUz2L7AfBtF9vn4ggTH33hmeufDULbP3YgNZ/C+ss/oO3stbrqRQyaOmRwy70y7BGTGO81S3rA=="], - "lilconfig": ["lilconfig@3.1.3", "", {}, ""], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, ""], @@ -1090,6 +1063,8 @@ "lucide-react": ["lucide-react@0.469.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw=="], + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], "markdown-table": ["markdown-table@3.0.4", "", {}, ""], @@ -1134,8 +1109,6 @@ "merge-value": ["merge-value@1.0.0", "", { "dependencies": { "get-value": "^2.0.6", "is-extendable": "^1.0.0", "mixin-deep": "^1.2.0", "set-value": "^2.0.0" } }, "sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ=="], - "merge2": ["merge2@1.4.1", "", {}, ""], - "mermaid": ["mermaid@11.12.2", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.3", "@types/d3": "^7.4.3", "cytoscape": "^3.29.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.13", "dayjs": "^1.11.18", "dompurify": "^3.2.5", "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", "marked": "^16.2.1", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0" } }, "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w=="], "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, ""], @@ -1214,8 +1187,6 @@ "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, ""], - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, ""], - "minimatch": ["minimatch@5.1.9", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw=="], "mixin-deep": ["mixin-deep@1.3.2", "", { "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" } }, "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA=="], @@ -1230,22 +1201,16 @@ "ms": ["ms@2.1.3", "", {}, ""], - "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, ""], - "nanoid": ["nanoid@3.3.11", "", { "bin": "bin/nanoid.cjs" }, ""], "node-addon-api": ["node-addon-api@7.1.1", "", {}, ""], "node-releases": ["node-releases@2.0.27", "", {}, ""], - "normalize-path": ["normalize-path@3.0.0", "", {}, ""], - "numeral": ["numeral@2.0.6", "", {}, "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA=="], "object-assign": ["object-assign@4.1.1", "", {}, ""], - "object-hash": ["object-hash@3.0.0", "", {}, ""], - "ogl": ["ogl@1.0.11", "", {}, "sha512-kUpC154AFfxi16pmZUK4jk3J+8zxwTWGPo03EoYA8QPbzikHoaC82n6pNTbd+oEaJonaE8aPWBlX7ad9zrqLsA=="], "on-change": ["on-change@4.0.2", "", {}, "sha512-cMtCyuJmTx/bg2HCpHo3ZLeF7FZnBOapLqZHr2AlLeJ5Ul0Zu2mUJJz051Fdwu/Et2YW04ZD+TtU+gVy0ACNCA=="], @@ -1282,10 +1247,6 @@ "picomatch": ["picomatch@4.0.3", "", {}, ""], - "pify": ["pify@2.3.0", "", {}, ""], - - "pirates": ["pirates@4.0.7", "", {}, ""], - "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="], @@ -1298,26 +1259,12 @@ "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, ""], - "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, ""], - - "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, ""], - - "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["tsx", "yaml"] }, ""], - - "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, ""], - - "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, ""], - - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, ""], - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], "property-information": ["property-information@7.1.0", "", {}, ""], "query-string": ["query-string@9.3.1", "", { "dependencies": { "decode-uri-component": "^0.4.1", "filter-obj": "^5.1.0", "split-on-first": "^3.0.0" } }, "sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, ""], - "rc-collapse": ["rc-collapse@4.0.0", "", { "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", "rc-motion": "^2.3.4", "rc-util": "^5.27.0" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, "sha512-SwoOByE39/3oIokDs/BnkqI+ltwirZbP8HZdq1/3SkPSBi7xDdvWHTp7cpNI9ullozkR6mwTWQi6/E/9huQVrA=="], "rc-dialog": ["rc-dialog@9.6.0", "", { "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/portal": "^1.0.0-8", "classnames": "^2.2.6", "rc-motion": "^2.3.0", "rc-util": "^5.21.0" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, "sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg=="], @@ -1372,18 +1319,10 @@ "react-refresh": ["react-refresh@0.17.0", "", {}, ""], - "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], - - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - "react-rnd": ["react-rnd@10.5.2", "", { "dependencies": { "re-resizable": "6.11.2", "react-draggable": "4.4.6", "tslib": "2.6.2" }, "peerDependencies": { "react": ">=16.3.0", "react-dom": ">=16.3.0" } }, "sha512-0Tm4x7k7pfHf2snewJA8x7Nwgt3LV+58MVEWOVsFjk51eYruFEa6Wy7BNdxt4/lH0wIRsu7Gm3KjSXY2w7YaNw=="], - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - "react-zoom-pan-pinch": ["react-zoom-pan-pinch@3.7.0", "", { "peerDependencies": { "react": "*", "react-dom": "*" } }, "sha512-UmReVZ0TxlKzxSbYiAj+LeGRW8s8LraAFTXRAxzMYnNRgGPsxCudwZKVkjvGmjtx7SW/hZamt69NUmGf4xrkXA=="], - "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, ""], - "readdirp": ["readdirp@4.1.2", "", {}, ""], "recharts": ["recharts@3.7.0", "", { "dependencies": { "@reduxjs/toolkit": "1.x.x || 2.x.x", "clsx": "^2.1.1", "decimal.js-light": "^2.5.1", "es-toolkit": "^1.39.3", "eventemitter3": "^5.0.1", "immer": "^10.1.1", "react-redux": "8.x.x || 9.x.x", "reselect": "5.1.1", "tiny-invariant": "^1.3.3", "use-sync-external-store": "^1.2.2", "victory-vendor": "^37.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, ""], @@ -1444,16 +1383,12 @@ "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "reusify": ["reusify@1.1.0", "", {}, ""], - "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], "rollup": ["rollup@4.57.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-darwin-arm64": "4.57.1", "fsevents": "~2.3.2" }, "bin": "dist/bin/rollup" }, ""], "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, ""], - "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], @@ -1508,8 +1443,6 @@ "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], - "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, ""], - "supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, ""], @@ -1518,13 +1451,9 @@ "tabbable": ["tabbable@6.4.0", "", {}, "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg=="], - "tailwindcss": ["tailwindcss@3.4.19", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, ""], - - "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, ""], + "tailwindcss": ["tailwindcss@4.2.2", "", {}, "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="], - "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, ""], - - "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, ""], + "tapable": ["tapable@2.3.2", "", {}, "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA=="], "throttle-debounce": ["throttle-debounce@5.0.2", "", {}, "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A=="], @@ -1536,8 +1465,6 @@ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, ""], - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, ""], - "to-vfile": ["to-vfile@8.0.0", "", { "dependencies": { "vfile": "^6.0.0" } }, "sha512-IcmH1xB5576MJc9qcfEC/m/nQCFt3fzMHz45sSlgJyTWjRbKW1HAkJpuf3DgE57YzIlZcwcBZA5ENQbBo4aLkg=="], "trim-lines": ["trim-lines@3.0.1", "", {}, ""], @@ -1546,8 +1473,6 @@ "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], - "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, ""], - "ts-md5": ["ts-md5@2.0.1", "", {}, "sha512-yF35FCoEOFBzOclSkMNEUbFQZuv89KEQ+5Xz03HrMSGUGB1+r+El+JiGOFwsP4p9RFNzwlrydYoTLvPOuICl9w=="], "tslib": ["tslib@2.8.1", "", {}, ""], @@ -1582,16 +1507,10 @@ "url-join": ["url-join@5.0.0", "", {}, "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA=="], - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - "use-merge-value": ["use-merge-value@1.2.0", "", { "peerDependencies": { "react": ">= 16.x" } }, "sha512-DXgG0kkgJN45TcyoXL49vJnn55LehnrmoHc7MbKi+QDBvr8dsesqws8UlyIWGHMR+JXgxc1nvY+jDGMlycsUcw=="], - "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, ""], - "util-deprecate": ["util-deprecate@1.0.2", "", {}, ""], - "uuid": ["uuid@13.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w=="], "v8n": ["v8n@1.5.1", "", {}, "sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A=="], @@ -1658,12 +1577,14 @@ "@lobehub/fluent-emoji/lucide-react": ["lucide-react@0.562.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw=="], - "@lobehub/ui/@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=="], - "@lobehub/ui/immer": ["immer@11.1.4", "", {}, ""], "@lobehub/ui/lucide-react": ["lucide-react@0.563.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA=="], + "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "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" } }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "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" } }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@rc-component/dialog/@rc-component/portal": ["@rc-component/portal@2.2.0", "", { "dependencies": { "@rc-component/util": "^1.2.1", "clsx": "^2.1.1" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-oc6FlA+uXCMiwArHsJyHcIkX4q6uKyndrPol2eWX8YPkAnztHOPsFIRtmWG4BMlGE5h7YIRE3NiaJ5VS8Lb1QQ=="], "@rc-component/drawer/@rc-component/portal": ["@rc-component/portal@2.2.0", "", { "dependencies": { "@rc-component/util": "^1.2.1", "clsx": "^2.1.1" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-oc6FlA+uXCMiwArHsJyHcIkX4q6uKyndrPol2eWX8YPkAnztHOPsFIRtmWG4BMlGE5h7YIRE3NiaJ5VS8Lb1QQ=="], @@ -1678,7 +1599,19 @@ "@reduxjs/toolkit/immer": ["immer@11.1.4", "", {}, ""], - "anymatch/picomatch": ["picomatch@2.3.1", "", {}, ""], + "@tailwindcss/node/jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, ""], "chevrotain/lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], @@ -1694,12 +1627,8 @@ "extend-shallow/is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, ""], - "hoist-non-react-statics/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - "leva/zustand": ["zustand@3.7.2", "", { "peerDependencies": { "react": ">=16.8" }, "optionalPeers": ["react"] }, "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA=="], "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, ""], @@ -1708,8 +1637,6 @@ "mermaid/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], - "micromatch/picomatch": ["picomatch@2.3.1", "", {}, ""], - "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, ""], "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], @@ -1726,18 +1653,10 @@ "split-string/extend-shallow": ["extend-shallow@3.0.2", "", { "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" } }, "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q=="], - "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, ""], - "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - - "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, ""], - - "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, ""], - - "tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, ""], } } diff --git a/interface/package.json b/interface/package.json index 80cb3661f..53f275991 100644 --- a/interface/package.json +++ b/interface/package.json @@ -23,20 +23,14 @@ "@fortawesome/free-solid-svg-icons": "^7.2.0", "@fortawesome/react-fontawesome": "^3.0.0", "@hookform/resolvers": "^5.2.2", - "@hugeicons/core-free-icons": "^3.1.1", - "@hugeicons/react": "^1.1.5", "@lobehub/icons": "^4.6.0", - "@radix-ui/react-checkbox": "^1.3.3", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-popover": "^1.1.15", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-slider": "^1.3.6", - "@radix-ui/react-switch": "^1.2.6", - "@radix-ui/react-tabs": "^1.1.13", - "@radix-ui/react-tooltip": "^1.2.8", + "@phosphor-icons/react": "^2.1.10", "@react-sigma/core": "^5.0.6", + "@spaceui/ai": "link:@spaceui/ai", + "@spaceui/explorer": "link:@spaceui/explorer", + "@spaceui/forms": "link:@spaceui/forms", + "@spaceui/primitives": "link:@spaceui/primitives", + "@spaceui/tokens": "link:@spaceui/tokens", "@tanstack/react-query": "^5.62.0", "@tanstack/react-query-devtools": "^5.91.3", "@tanstack/react-router": "^1.159.5", @@ -65,15 +59,12 @@ "zod": "^4.3.6" }, "devDependencies": { + "@tailwindcss/vite": "^4.2.2", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^4.3.4", - "autoprefixer": "^10.4.18", "openapi-typescript": "^7", - "postcss": "^8.4.36", - "sass": "^1.72.0", - "tailwindcss": "^3.4.1", - "tailwindcss-animate": "^1.0.7", + "tailwindcss": "^4.2.2", "typescript": "^5.6.2", "vite": "^6.0.0" }, diff --git a/interface/postcss.config.js b/interface/postcss.config.js deleted file mode 100644 index 7b75c83af..000000000 --- a/interface/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/interface/src/components/ChannelCard.tsx b/interface/src/components/ChannelCard.tsx index 0105b4591..dcba08b03 100644 --- a/interface/src/components/ChannelCard.tsx +++ b/interface/src/components/ChannelCard.tsx @@ -8,7 +8,7 @@ import type { ConversationSettings, ConversationDefaultsResponse } from "@/api/t import { isOpenCodeWorker, type ActiveBranch, type ActiveWorker, type ChannelLiveState } from "@/hooks/useChannelLiveState"; import { LiveDuration } from "@/components/LiveDuration"; import { ConversationSettingsPanel } from "@/components/ConversationSettingsPanel"; -import { Popover, PopoverTrigger, PopoverContent } from "@/ui/Popover"; +import { PopoverRoot, PopoverTrigger, PopoverContent } from "@spaceui/primitives"; import { formatTimeAgo, formatTimestamp, platformIcon, platformColor } from "@/lib/format"; const VISIBLE_MESSAGES = 6; @@ -180,7 +180,7 @@ export function ChannelCard({
- +
{/* Status message */} @@ -1110,7 +1110,7 @@ function BindingForm({
- +
{platform === "discord" && ( diff --git a/interface/src/components/ConnectionBanner.tsx b/interface/src/components/ConnectionBanner.tsx index cc3763b8f..1d4f9a520 100644 --- a/interface/src/components/ConnectionBanner.tsx +++ b/interface/src/components/ConnectionBanner.tsx @@ -1,4 +1,4 @@ -import { Banner } from "@/ui"; +import { Banner } from "@spaceui/primitives"; import type { ConnectionState } from "@/hooks/useEventSource"; const stateConfig: Record, { label: string; variant: "info" | "warning" | "error" }> = { diff --git a/interface/src/components/ConnectionScreen.tsx b/interface/src/components/ConnectionScreen.tsx index 783316e27..bb3c3f6ee 100644 --- a/interface/src/components/ConnectionScreen.tsx +++ b/interface/src/components/ConnectionScreen.tsx @@ -1,6 +1,5 @@ import { useState, useCallback, useEffect, lazy, Suspense } from "react"; -import { Button } from "@/ui/Button"; -import { Input } from "@/ui/Input"; +import { Button, Input } from "@spaceui/primitives"; import { useServer } from "@/hooks/useServer"; import { IS_TAURI } from "@/platform"; diff --git a/interface/src/components/ConversationSettingsPanel.tsx b/interface/src/components/ConversationSettingsPanel.tsx index be511dd6d..23aed0b6c 100644 --- a/interface/src/components/ConversationSettingsPanel.tsx +++ b/interface/src/components/ConversationSettingsPanel.tsx @@ -1,14 +1,14 @@ import { useState } from "react"; -import { Button } from "@/ui/Button"; import { - Select, + Button, + SelectRoot, SelectTrigger, SelectValue, SelectContent, SelectItem, SelectGroup, SelectLabel, -} from "@/ui/Select"; +} from "@spaceui/primitives"; import type { ConversationSettings, ConversationDefaultsResponse } from "@/api/types"; interface ConversationSettingsPanelProps { @@ -207,7 +207,7 @@ export function ConversationSettingsPanel({ {/* Core settings */}
- + - + - + - +
@@ -356,7 +356,7 @@ export function ConversationSettingsPanel({ process.slice(1) } > - + ), )} @@ -418,7 +418,7 @@ export function ConversationSettingsPanel({
- + - +
)} diff --git a/interface/src/components/ConversationsSidebar.tsx b/interface/src/components/ConversationsSidebar.tsx index 7a0ff651b..2d5fdf959 100644 --- a/interface/src/components/ConversationsSidebar.tsx +++ b/interface/src/components/ConversationsSidebar.tsx @@ -1,13 +1,5 @@ import {useState} from "react"; -import {Button} from "@/ui/Button"; -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogFooter, -} from "@/ui/Dialog"; -import {Input} from "@/ui/Input"; +import {Button, Input, DialogRoot, DialogContent, DialogHeader, DialogTitle, DialogFooter} from "@spaceui/primitives"; import type {PortalConversationSummary} from "@/api/types"; interface ConversationsSidebarProps { @@ -237,7 +229,7 @@ export function ConversationsSidebar({
{/* Rename Dialog */} - + Rename Conversation @@ -260,10 +252,10 @@ export function ConversationsSidebar({ - + {/* Delete Dialog */} - + Delete Conversation @@ -284,7 +276,7 @@ export function ConversationsSidebar({ - + ); } diff --git a/interface/src/components/CortexChatPanel.tsx b/interface/src/components/CortexChatPanel.tsx index 5ec03b031..563d40bd4 100644 --- a/interface/src/components/CortexChatPanel.tsx +++ b/interface/src/components/CortexChatPanel.tsx @@ -3,10 +3,8 @@ import {useCortexChat, type ToolActivity} from "@/hooks/useCortexChat"; import {Markdown} from "@/components/Markdown"; import {ToolCall, type ToolCallPair} from "@/components/ToolCall"; import {api, type CortexChatToolCall, type CortexChatThread} from "@/api/client"; -import {Button} from "@/ui"; -import {Popover, PopoverContent, PopoverTrigger} from "@/ui/Popover"; -import {PlusSignIcon, Cancel01Icon, Clock01Icon, Delete02Icon} from "@hugeicons/core-free-icons"; -import {HugeiconsIcon} from "@hugeicons/react"; +import {Button, PopoverRoot, PopoverContent, PopoverTrigger} from "@spaceui/primitives"; +import {Plus, X, Clock, Trash} from "@phosphor-icons/react"; interface CortexChatPanelProps { agentId: string; @@ -344,7 +342,7 @@ function ThreadList({ className="mt-0.5 shrink-0 rounded p-0.5 text-ink-faint opacity-0 transition-all hover:bg-red-500/10 hover:text-red-400 group-hover:opacity-100" title="Delete thread" > - + )} @@ -422,7 +420,7 @@ export function CortexChatPanel({ )}
- + setThreadListOpen(false)} /> - + {onClose && ( )}
diff --git a/interface/src/components/CreateAgentDialog.tsx b/interface/src/components/CreateAgentDialog.tsx index 4a4c9aa89..3db904a1d 100644 --- a/interface/src/components/CreateAgentDialog.tsx +++ b/interface/src/components/CreateAgentDialog.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { api, type PresetMeta } from "@/api/client"; -import { Dialog, DialogContent } from "@/ui"; +import { DialogRoot, DialogContent } from "@spaceui/primitives"; import { CortexChatPanel } from "@/components/CortexChatPanel"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { @@ -119,7 +119,7 @@ export function CreateAgentDialog({ open, onOpenChange, agentId }: CreateAgentDi } return ( - { if (!v) handleClose(); @@ -183,6 +183,6 @@ export function CreateAgentDialog({ open, onOpenChange, agentId }: CreateAgentDi )} - + ); } diff --git a/interface/src/components/DeleteAgentDialog.tsx b/interface/src/components/DeleteAgentDialog.tsx index cc34ed4d7..ca3bd88d7 100644 --- a/interface/src/components/DeleteAgentDialog.tsx +++ b/interface/src/components/DeleteAgentDialog.tsx @@ -2,7 +2,7 @@ import {useState} from "react"; import {useMutation, useQueryClient} from "@tanstack/react-query"; import {useNavigate} from "@tanstack/react-router"; import {api} from "@/api/client"; -import {Button, Input, Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter} from "@/ui"; +import {Button, Input, DialogRoot, DialogContent, DialogHeader, DialogTitle, DialogFooter} from "@spaceui/primitives"; interface DeleteAgentDialogProps { open: boolean; @@ -42,7 +42,7 @@ export function DeleteAgentDialog({open, onOpenChange, agentId}: DeleteAgentDial } return ( - { if (!v) { setError(null); setConfirmation(""); } onOpenChange(v); }}> + { if (!v) { setError(null); setConfirmation(""); } onOpenChange(v); }}> Delete Agent @@ -86,6 +86,6 @@ export function DeleteAgentDialog({open, onOpenChange, agentId}: DeleteAgentDial - + ); } diff --git a/interface/src/components/MemoryGraph.tsx b/interface/src/components/MemoryGraph.tsx index 14082d5f8..7f4771daf 100644 --- a/interface/src/components/MemoryGraph.tsx +++ b/interface/src/components/MemoryGraph.tsx @@ -13,9 +13,8 @@ import { type RelationType, } from "@/api/client"; import { formatTimeAgo } from "@/lib/format"; -import { Button } from "@/ui"; -import { Target02Icon, PlusSignIcon, MinusSignIcon, RefreshIcon, Cancel01Icon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; +import { Button, CircleButton } from "@spaceui/primitives"; +import { Crosshair, Plus, Minus, ArrowsClockwise, X } from "@phosphor-icons/react"; // -- Constants -- @@ -386,58 +385,42 @@ export function MemoryGraph({ agentId, sort, typeFilter }: MemoryGraphProps) { {/* Controls */}
- - - - + }} + title="Re-run layout" + />
{/* Node detail panel */} @@ -466,7 +449,7 @@ export function MemoryGraph({ agentId, sort, typeFilter }: MemoryGraphProps) { size="icon" className="h-7 w-7" > - +

diff --git a/interface/src/components/ModelSelect.tsx b/interface/src/components/ModelSelect.tsx index c44b5173c..f824b5315 100644 --- a/interface/src/components/ModelSelect.tsx +++ b/interface/src/components/ModelSelect.tsx @@ -1,5 +1,5 @@ import { api, type ModelInfo } from "@/api/client"; -import { Input } from "@/ui"; +import { Input } from "@spaceui/primitives"; import { useQuery } from "@tanstack/react-query"; import { useEffect, useMemo, useRef, useState } from "react"; diff --git a/interface/src/components/PromptInspectModal.tsx b/interface/src/components/PromptInspectModal.tsx index a1f6ceced..71817c7e5 100644 --- a/interface/src/components/PromptInspectModal.tsx +++ b/interface/src/components/PromptInspectModal.tsx @@ -5,7 +5,8 @@ import { type PromptInspectResponse, type PromptSnapshotSummary, } from "@/api/client"; -import { Button, Dialog, DialogContent, DialogHeader, DialogTitle, Toggle } from "@/ui"; +import { Button, DialogRoot, DialogContent, DialogHeader, DialogTitle } from "@spaceui/primitives"; +import { Toggle } from "@/ui/Toggle"; interface PromptInspectModalProps { open: boolean; @@ -64,7 +65,7 @@ export function PromptInspectModal({ open, onOpenChange, channelId }: PromptInsp const contentLoading = view === "current" ? isLoading : snapshotLoading; return ( -

+ Prompt Inspector @@ -180,7 +181,7 @@ export function PromptInspectModal({ open, onOpenChange, channelId }: PromptInsp - + ); } diff --git a/interface/src/components/SetupBanner.tsx b/interface/src/components/SetupBanner.tsx index 62b79da81..c75ead4c7 100644 --- a/interface/src/components/SetupBanner.tsx +++ b/interface/src/components/SetupBanner.tsx @@ -1,7 +1,7 @@ import { useQuery } from "@tanstack/react-query"; import { Link } from "@tanstack/react-router"; import { api } from "@/api/client"; -import { Banner } from "@/ui"; +import { Banner } from "@spaceui/primitives"; export function SetupBanner() { const { data } = useQuery({ diff --git a/interface/src/components/Sidebar.tsx b/interface/src/components/Sidebar.tsx index 9c76ae9ca..c791a92af 100644 --- a/interface/src/components/Sidebar.tsx +++ b/interface/src/components/Sidebar.tsx @@ -21,8 +21,7 @@ import { CSS } from "@dnd-kit/utilities"; import { api } from "@/api/client"; import type { ChannelLiveState } from "@/hooks/useChannelLiveState"; import { useAgentOrder } from "@/hooks/useAgentOrder"; -import { DashboardSquare01Icon, Settings01Icon, LeftToRightListBulletIcon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; +import { SquaresFour, Gear, List } from "@phosphor-icons/react"; import { CreateAgentDialog } from "@/components/CreateAgentDialog"; import { ProfileAvatar } from "@/components/ProfileAvatar"; @@ -147,7 +146,7 @@ export function Sidebar({ liveStates: _liveStates }: SidebarProps) { }`} title="Dashboard" > - + - + - +
!v && onClose()}> + !v && onClose()}> Create Task @@ -682,7 +674,7 @@ function CreateTaskDialog({ - + ); } @@ -710,7 +702,7 @@ function TaskDetailDialog({ onStatusChange: (status: TaskStatus) => void; }) { return ( - !v && onClose()}> + !v && onClose()}> @@ -871,6 +863,6 @@ function TaskDetailDialog({
- + ); } diff --git a/interface/src/components/ToolCall.tsx b/interface/src/components/ToolCall.tsx index 82f6c791e..a39219646 100644 --- a/interface/src/components/ToolCall.tsx +++ b/interface/src/components/ToolCall.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { cx } from "@/ui/utils"; +import { cx } from "class-variance-authority"; import type { TranscriptStep, OpenCodePart } from "@/api/client"; // --------------------------------------------------------------------------- diff --git a/interface/src/components/TopologyGraph.tsx b/interface/src/components/TopologyGraph.tsx index c04e0f5e8..2a8e9fc6d 100644 --- a/interface/src/components/TopologyGraph.tsx +++ b/interface/src/components/TopologyGraph.tsx @@ -35,7 +35,8 @@ import { type LinkDirection, type LinkKind, } from "@/api/client"; -import { Button, Input, TextArea, Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, cx } from "@/ui"; +import { Button, Input, TextArea, DialogRoot, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@spaceui/primitives"; +import { cx } from "class-variance-authority"; import { Markdown } from "@/components/Markdown"; import { Link } from "@tanstack/react-router"; @@ -587,7 +588,7 @@ function HumanEditDialog({ if (!human) return null; return ( - +
@@ -742,7 +743,7 @@ function HumanEditDialog({
-
+ ); } @@ -774,7 +775,7 @@ function AgentEditDialog({ if (!agent) return null; return ( - + Edit Agent @@ -810,7 +811,7 @@ function AgentEditDialog({ - + ); } diff --git a/interface/src/components/WebChatPanel.tsx b/interface/src/components/WebChatPanel.tsx index e8836ce91..57a1dfad8 100644 --- a/interface/src/components/WebChatPanel.tsx +++ b/interface/src/components/WebChatPanel.tsx @@ -6,12 +6,10 @@ import {useLiveContext} from "@/hooks/useLiveContext"; import {Markdown} from "@/components/Markdown"; import {ConversationSettingsPanel} from "@/components/ConversationSettingsPanel"; import {ConversationsSidebar} from "@/components/ConversationsSidebar"; -import {Button} from "@/ui/Button"; -import {Popover, PopoverTrigger, PopoverContent} from "@/ui/Popover"; +import {Button, PopoverRoot, PopoverTrigger, PopoverContent} from "@spaceui/primitives"; import {api, type ConversationDefaultsResponse, type ConversationSettings} from "@/api/client"; import {useQuery, useMutation, useQueryClient} from "@tanstack/react-query"; -import {Settings02Icon} from "@hugeicons/core-free-icons"; -import {HugeiconsIcon} from "@hugeicons/react"; +import {GearSix} from "@phosphor-icons/react"; interface WebChatPanelProps { agentId: string; @@ -347,10 +345,10 @@ export function WebChatPanel({agentId}: WebChatPanelProps) { )} - + @@ -371,7 +369,7 @@ export function WebChatPanel({agentId}: WebChatPanelProps) { )} - + {/* Messages */} diff --git a/interface/src/hooks/useTheme.ts b/interface/src/hooks/useTheme.ts index 797b76456..0fd029113 100644 --- a/interface/src/hooks/useTheme.ts +++ b/interface/src/hooks/useTheme.ts @@ -1,6 +1,13 @@ import { useState, useEffect, useCallback } from "react"; -export type ThemeId = "default" | "vanilla" | "midnight" | "noir"; +export type ThemeId = + | "default" + | "vanilla" + | "midnight" + | "noir" + | "slate" + | "nord" + | "mocha"; export interface ThemeOption { id: ThemeId; @@ -13,13 +20,13 @@ export const THEMES: ThemeOption[] = [ { id: "default", name: "Default", - description: "Dark theme with purple accent", + description: "Dark theme with blue accent", className: "", }, { id: "vanilla", name: "Vanilla", - description: "Light theme with blue accent", + description: "Light theme", className: "vanilla-theme", }, { @@ -34,6 +41,24 @@ export const THEMES: ThemeOption[] = [ description: "Pure black and white theme", className: "noir-theme", }, + { + id: "slate", + name: "Slate", + description: "Cool gray dark theme", + className: "slate-theme", + }, + { + id: "nord", + name: "Nord", + description: "Arctic blue-gray theme", + className: "nord-theme", + }, + { + id: "mocha", + name: "Mocha", + description: "Warm brown dark theme", + className: "mocha-theme", + }, ]; const STORAGE_KEY = "spacebot-theme"; diff --git a/interface/src/main.tsx b/interface/src/main.tsx index ed9d516c9..75042b080 100644 --- a/interface/src/main.tsx +++ b/interface/src/main.tsx @@ -1,7 +1,7 @@ import React from "react"; import ReactDOM from "react-dom/client"; import { App } from "./App"; -import "./ui/style/style.scss"; +import "./styles.css"; import "@fontsource/ibm-plex-sans/400.css"; import "@fontsource/ibm-plex-sans/500.css"; import "@fontsource/ibm-plex-sans/600.css"; diff --git a/interface/src/routes/AgentChannels.tsx b/interface/src/routes/AgentChannels.tsx index 707fde9fa..93c934811 100644 --- a/interface/src/routes/AgentChannels.tsx +++ b/interface/src/routes/AgentChannels.tsx @@ -2,10 +2,9 @@ import { useMemo, useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { api } from "@/api/client"; import { ChannelCard } from "@/components/ChannelCard"; -import { Button, SearchInput } from "@/ui"; +import { Button, SearchInput } from "@spaceui/primitives"; import type { ChannelLiveState } from "@/hooks/useChannelLiveState"; -import { Settings02Icon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; +import { GearSix } from "@phosphor-icons/react"; import { useNavigate } from "@tanstack/react-router"; interface AgentChannelsProps { @@ -71,7 +70,7 @@ export function AgentChannels({ agentId, liveStates }: AgentChannelsProps) {
- +

No channels yet

diff --git a/interface/src/routes/AgentConfig.tsx b/interface/src/routes/AgentConfig.tsx index 9bbeb184a..9b38b9fbc 100644 --- a/interface/src/routes/AgentConfig.tsx +++ b/interface/src/routes/AgentConfig.tsx @@ -1,7 +1,10 @@ import { useCallback, useEffect, useState, useRef } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { api, type AgentConfigResponse, type AgentConfigUpdateRequest } from "@/api/client"; -import { Button, Input, SettingSidebarButton, TextArea, Toggle, NumberStepper, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, cx } from "@/ui"; +import { Button, Input, TextArea, NumberStepper, SelectRoot, SelectTrigger, SelectValue, SelectContent, SelectItem } from "@spaceui/primitives"; +import { SettingSidebarButton } from "@/ui/SettingSidebarButton"; +import { Toggle } from "@/ui/Toggle"; +import { cx } from "class-variance-authority"; import { ModelSelect } from "@/components/ModelSelect"; import { TagInput } from "@/components/TagInput"; import { Markdown } from "@/components/Markdown"; @@ -894,7 +897,7 @@ function ConfigSectionEditor({ sectionId, label, description, detail, config, on {supportsAdaptiveThinking(localValues[key] as string) && (

- +
)}
@@ -1172,7 +1175,7 @@ function ConfigSectionEditor({ sectionId, label, description, detail, config, on

What happens when a worker calls "close" or finishes.

- +
); @@ -1194,7 +1197,7 @@ function ConfigSectionEditor({ sectionId, label, description, detail, config, on

Kernel-enforced filesystem containment for shell subprocesses.

- +
diff --git a/interface/src/routes/AgentCortex.tsx b/interface/src/routes/AgentCortex.tsx index 5f4a9dd3a..1fc85fd6a 100644 --- a/interface/src/routes/AgentCortex.tsx +++ b/interface/src/routes/AgentCortex.tsx @@ -8,9 +8,8 @@ import { } from "@/api/client"; import { CortexChatPanel } from "@/components/CortexChatPanel"; import { formatTimeAgo } from "@/lib/format"; -import { IdeaIcon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; -import { FilterButton, Button } from "@/ui"; +import { Lightbulb } from "@phosphor-icons/react"; +import { FilterButton, Button } from "@spaceui/primitives"; const PAGE_SIZE = 50; @@ -177,7 +176,7 @@ export function AgentCortex({ agentId }: AgentCortexProps) { className={chatOpen ? "bg-app-selected text-ink" : ""} title="Toggle cortex chat" > - +
diff --git a/interface/src/routes/AgentCron.tsx b/interface/src/routes/AgentCron.tsx index a6530c37c..f1589edd2 100644 --- a/interface/src/routes/AgentCron.tsx +++ b/interface/src/routes/AgentCron.tsx @@ -2,26 +2,25 @@ import { useState } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { api, type CronJobWithStats, type CreateCronRequest, type ChannelInfo } from "@/api/client"; import { formatCronSchedule, formatTimeAgo } from "@/lib/format"; -import { Clock05Icon, PauseIcon, PlayIcon, FlashIcon, PencilEdit02Icon, Delete02Icon, ArrowDown01Icon, ArrowUp01Icon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; +import { Clock, Pause, Play, Lightning, PencilSimple, Trash, CaretDown, CaretUp } from "@phosphor-icons/react"; import { Button, - Dialog, + DialogRoot, DialogContent, DialogHeader, DialogTitle, Badge, Input, TextArea, - Toggle, Label, NumberStepper, - Select, + SelectRoot, SelectTrigger, SelectValue, SelectContent, SelectItem, -} from "@/ui"; +} from "@spaceui/primitives"; +import { Toggle } from "@/ui/Toggle"; // -- Helpers -- @@ -280,7 +279,7 @@ export function AgentCron({ agentId }: AgentCronProps) {
- +

No cron jobs yet

@@ -317,7 +316,7 @@ export function AgentCron({ agentId }: AgentCronProps) {

{/* Create / Edit Modal */} - !open && closeModal()}> + !open && closeModal()}> {editingJob ? "Edit Cron Job" : "Create Cron Job"} @@ -413,7 +412,7 @@ export function AgentCron({ agentId }: AgentCronProps) { max={999} variant="compact" /> - +

May drift. Prefer cron expressions.

@@ -439,7 +438,7 @@ export function AgentCron({ agentId }: AgentCronProps) { {/* Right column — delivery & options */}
- + {(formData.delivery_target === "" || !deliveryTargets.some((t) => t.value === formData.delivery_target)) && (
- + {/* Delete Confirmation */} - !open && setDeleteConfirmId(null)}> + !open && setDeleteConfirmId(null)}> Delete Cron Job? @@ -565,7 +564,7 @@ export function AgentCron({ agentId }: AgentCronProps) { - + ); } @@ -694,7 +693,7 @@ function CronJobCard({ variant="ghost" size="sm" > - + {job.enabled ? : } @@ -727,7 +726,7 @@ function CronJobCard({ onClick={onToggleExpand} className="flex w-full items-center justify-center gap-1.5 border-t border-app-line/50 px-3 py-1.5 text-tiny text-ink-faint transition-colors hover:bg-app-lightBox/30 hover:text-ink-dull" > - + {isExpanded ? : } {isExpanded ? "Hide history" : "Show history"} diff --git a/interface/src/routes/AgentIngest.tsx b/interface/src/routes/AgentIngest.tsx index 582569093..86a331bf6 100644 --- a/interface/src/routes/AgentIngest.tsx +++ b/interface/src/routes/AgentIngest.tsx @@ -2,7 +2,7 @@ import {useState, useRef, useCallback} from "react"; import {useQuery, useMutation, useQueryClient} from "@tanstack/react-query"; import {api, type IngestFileInfo} from "@/api/client"; import {formatTimeAgo} from "@/lib/format"; -import {Badge} from "@/ui"; +import {Badge} from "@spaceui/primitives"; import {clsx} from "clsx"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faTrash} from "@fortawesome/free-solid-svg-icons"; diff --git a/interface/src/routes/AgentMemories.tsx b/interface/src/routes/AgentMemories.tsx index 579aebb1f..5d87858d1 100644 --- a/interface/src/routes/AgentMemories.tsx +++ b/interface/src/routes/AgentMemories.tsx @@ -12,18 +12,17 @@ import { import { CortexChatPanel } from "@/components/CortexChatPanel"; import { MemoryGraph } from "@/components/MemoryGraph"; import { - Button, - DropdownMenu, + CircleButton, + CircleButtonGroup, + DropdownMenuRoot, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, - ToggleGroup, SearchInput, FilterButton, -} from "@/ui"; +} from "@spaceui/primitives"; import { formatTimeAgo } from "@/lib/format"; -import { ArrowDown01Icon, LeftToRightListBulletIcon, WorkflowSquare01Icon, IdeaIcon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; +import { CaretDown, List, TreeStructure, Lightbulb } from "@phosphor-icons/react"; type ViewMode = "list" | "graph"; @@ -156,10 +155,10 @@ export function AgentMemories({ agentId }: AgentMemoriesProps) { /> {/* Sort dropdown */} - + {SORT_OPTIONS.find((o) => o.value === sort)?.label ?? sort} - + {SORT_OPTIONS.map((option) => ( @@ -172,30 +171,31 @@ export function AgentMemories({ agentId }: AgentMemoriesProps) { ))} - + {/* View mode toggle */} - , title: "List view" }, - { value: "graph", label: , title: "Graph view" }, - ]} - /> + + setViewMode("list")} + variant={viewMode === "list" ? "active" : "default"} + title="List view" + /> + setViewMode("graph")} + variant={viewMode === "graph" ? "active" : "default"} + title="Graph view" + /> + {/* Cortex chat toggle */} -
- -
+ setChatOpen(!chatOpen)} + variant={chatOpen ? "accent" : "default"} + title="Toggle cortex chat" + /> {/* Type filter pills */} @@ -274,10 +274,10 @@ export function AgentMemories({ agentId }: AgentMemoriesProps) { className="absolute left-0 top-0 w-full" style={{ transform: `translateY(${virtualRow.start}px)` }} > - + {/* Expanded detail */} diff --git a/interface/src/routes/AgentProjects.tsx b/interface/src/routes/AgentProjects.tsx index 2d68fac3a..d32b4bdc8 100644 --- a/interface/src/routes/AgentProjects.tsx +++ b/interface/src/routes/AgentProjects.tsx @@ -8,16 +8,7 @@ import { type CreateProjectRequest, type CreateWorktreeRequest, } from "@/api/client"; -import { Badge, Button } from "@/ui"; -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogFooter, - DialogDescription, -} from "@/ui/Dialog"; -import { Input, Label, TextArea } from "@/ui/Input"; +import { Badge, Button, DialogRoot, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogDescription, Input, Label, TextArea } from "@spaceui/primitives"; import { formatTimeAgo } from "@/lib/format"; import { clsx } from "clsx"; import { AnimatePresence, motion } from "framer-motion"; @@ -159,7 +150,7 @@ function CreateProjectDialog({ }; return ( - + Create Project @@ -233,7 +224,7 @@ function CreateProjectDialog({ - + ); } @@ -292,7 +283,7 @@ function CreateWorktreeDialog({ }; return ( - + Create Worktree @@ -350,7 +341,7 @@ function CreateWorktreeDialog({ - + ); } @@ -374,7 +365,7 @@ function DeleteDialog({ isPending: boolean; }) { return ( - + {title} @@ -393,7 +384,7 @@ function DeleteDialog({ - + ); } diff --git a/interface/src/routes/AgentSkills.tsx b/interface/src/routes/AgentSkills.tsx index 080a2fce8..775330c9e 100644 --- a/interface/src/routes/AgentSkills.tsx +++ b/interface/src/routes/AgentSkills.tsx @@ -1,7 +1,7 @@ import { useState, useEffect, useRef, useCallback } from "react"; import { useQuery, useMutation, useQueryClient, useInfiniteQuery } from "@tanstack/react-query"; import { api, type SkillInfo, type RegistrySkill, type RegistryView } from "@/api/client"; -import { Button, Badge, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/ui"; +import { Button, Badge, DialogRoot, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@spaceui/primitives"; import { clsx } from "clsx"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { @@ -56,7 +56,7 @@ function InstalledSkillDetailModal({ }); return ( - +
@@ -103,7 +103,7 @@ function InstalledSkillDetailModal({
)}
-
+ ); } @@ -130,7 +130,7 @@ function RegistrySkillDetailModal({ }); return ( - +
@@ -208,7 +208,7 @@ function RegistrySkillDetailModal({ {data?.content && } -
+ ); } diff --git a/interface/src/routes/AgentWorkers.tsx b/interface/src/routes/AgentWorkers.tsx index 5c4be8b01..f5cb10ef2 100644 --- a/interface/src/routes/AgentWorkers.tsx +++ b/interface/src/routes/AgentWorkers.tsx @@ -11,12 +11,11 @@ import { type OpenCodePart, } from "@/api/client"; import {ToolCall, pairTranscriptSteps, openCodePartToPair} from "@/components/ToolCall"; -import {Badge} from "@/ui/Badge"; +import {Badge, badgeVariants} from "@spaceui/primitives"; import {formatTimeAgo, formatDuration} from "@/lib/format"; import {LiveDuration} from "@/components/LiveDuration"; import {useLiveContext} from "@/hooks/useLiveContext"; -import {cx} from "@/ui/utils"; -import {badgeStyles} from "@/ui/Badge"; +import { cx } from "class-variance-authority"; import {ProviderIcon} from "@/lib/providerIcons"; import {OpenCodeEmbed, base64UrlEncode} from "@/components/OpenCodeEmbed"; @@ -647,7 +646,7 @@ function OpenCodeDirectLink({ href={href} target="_blank" rel="noopener noreferrer" - className={cx(badgeStyles({ variant: "outline", size: "sm" }), "w-fit")} + className={cx(badgeVariants({ variant: "outline", size: "sm" }), "w-fit")} > OpenCode ::{port} diff --git a/interface/src/routes/ChannelDetail.tsx b/interface/src/routes/ChannelDetail.tsx index 84d293261..658728931 100644 --- a/interface/src/routes/ChannelDetail.tsx +++ b/interface/src/routes/ChannelDetail.tsx @@ -8,9 +8,8 @@ import { LiveDuration } from "@/components/LiveDuration"; import { Markdown } from "@/components/Markdown"; import { PromptInspectModal } from "@/components/PromptInspectModal"; import { formatTimestamp, platformIcon, platformColor } from "@/lib/format"; -import { Button } from "@/ui"; -import { Cancel01Icon, IdeaIcon, CodeIcon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; +import { Button } from "@spaceui/primitives"; +import { X, Lightbulb, Code } from "@phosphor-icons/react"; interface ChannelDetailProps { agentId: string; @@ -36,7 +35,7 @@ function CancelButton({ onClick, className }: { onClick: () => void; className?: className={`h-7 w-7 flex-shrink-0 text-ink-faint/50 hover:bg-red-500/15 hover:text-red-400 ${className ?? ""}`} title="Cancel" > - + ); } @@ -390,7 +389,7 @@ export function ChannelDetail({ agentId, channelId, channel, liveState, onLoadMo size="icon" title="Inspect prompt" > - + diff --git a/interface/src/routes/Orchestrate.tsx b/interface/src/routes/Orchestrate.tsx index 7579bfd62..589c81993 100644 --- a/interface/src/routes/Orchestrate.tsx +++ b/interface/src/routes/Orchestrate.tsx @@ -3,9 +3,9 @@ import {useQuery, useQueryClient, useQueries} from "@tanstack/react-query"; import {api, type WorkerRunInfo} from "@/api/client"; import {OpenCodeEmbed} from "@/components/OpenCodeEmbed"; import {LiveDuration} from "@/components/LiveDuration"; -import {Badge} from "@/ui/Badge"; +import {Badge} from "@spaceui/primitives"; import {useLiveContext} from "@/hooks/useLiveContext"; -import {cx} from "@/ui/utils"; +import { cx } from "class-variance-authority"; // ── Types ──────────────────────────────────────────────────────────────── diff --git a/interface/src/routes/Overlay.tsx b/interface/src/routes/Overlay.tsx index b152e28fa..bc90d71b0 100644 --- a/interface/src/routes/Overlay.tsx +++ b/interface/src/routes/Overlay.tsx @@ -5,7 +5,7 @@ import {useAudioRecorder} from "@/hooks/useAudioRecorder"; import {useTtsPlayback} from "@/hooks/useTtsPlayback"; import {getPortalSessionId} from "@/hooks/usePortal"; import {useEventSource} from "@/hooks/useEventSource"; -import {cx} from "@/ui/utils"; +import { cx } from "class-variance-authority"; import {IS_TAURI, resizeWindow, listen as platformListen} from "@/platform"; const Orb = lazy(() => import("@/components/Orb")); diff --git a/interface/src/routes/Overview.tsx b/interface/src/routes/Overview.tsx index a52496c17..e8de18ee3 100644 --- a/interface/src/routes/Overview.tsx +++ b/interface/src/routes/Overview.tsx @@ -1,8 +1,7 @@ import {useMemo, useState} from "react"; import {useQuery} from "@tanstack/react-query"; import {Link} from "@tanstack/react-router"; -import {SparklesIcon, IdeaIcon} from "@hugeicons/core-free-icons"; -import {HugeiconsIcon} from "@hugeicons/react"; +import {Sparkle, Lightbulb} from "@phosphor-icons/react"; import {api} from "@/api/client"; import {CreateAgentDialog} from "@/components/CreateAgentDialog"; import {TopologyGraph} from "@/components/TopologyGraph"; @@ -159,7 +158,7 @@ export function Overview({liveStates, activeLinks}: OverviewProps) { search={{tab: "providers"}} className="inline-flex items-center gap-2 rounded-lg bg-accent px-4 py-2 text-sm font-medium text-white shadow hover:bg-accent/90 transition-colors" > - + Add LLM Provider
- +

Pro tip:{" "} Once set up, you can talk to the Cortex from any agent page to get help with configuration, debugging, or learning how Spacebot works. diff --git a/interface/src/routes/Settings.tsx b/interface/src/routes/Settings.tsx index 895cc279c..4f756883d 100644 --- a/interface/src/routes/Settings.tsx +++ b/interface/src/routes/Settings.tsx @@ -1,7 +1,9 @@ import { useState, useEffect, useRef } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { api, type GlobalSettingsResponse, type UpdateStatus, type SecretCategory, type SecretListItem, type StoreState } from "@/api/client"; -import { Badge, Button, Input, SettingSidebarButton, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Toggle } from "@/ui"; +import { Badge, Button, Input, DialogRoot, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, SelectRoot, SelectTrigger, SelectValue, SelectContent, SelectItem } from "@spaceui/primitives"; +import { SettingSidebarButton } from "@/ui/SettingSidebarButton"; +import { Toggle } from "@/ui/Toggle"; import { useSearch, useNavigate } from "@tanstack/react-router"; import { PlatformCatalog, InstanceCard, AddInstanceCard } from "@/components/ChannelSettingCard"; import { ModelSelect } from "@/components/ModelSelect"; @@ -848,7 +850,7 @@ export function Settings() {

- { if (!open) handleClose(); }}> + { if (!open) handleClose(); }}> @@ -1053,7 +1055,7 @@ export function Settings() { )} - + ); } @@ -1097,11 +1099,14 @@ function AppearanceSection() { } function ThemePreview({ themeId }: { themeId: ThemeId }) { - const colors = { - default: { bg: "#0d0d0f", sidebar: "#0a0a0b", accent: "#a855f7" }, - vanilla: { bg: "#ffffff", sidebar: "#f5f5f6", accent: "#3b82f6" }, - midnight: { bg: "#14162b", sidebar: "#0c0e1a", accent: "#3b82f6" }, - noir: { bg: "#080808", sidebar: "#000000", accent: "#3b82f6" }, + const colors: Record = { + default: { bg: "#1c1d26", sidebar: "#101118", accent: "#2499ff" }, + vanilla: { bg: "#ffffff", sidebar: "#f5f5f6", accent: "#2499ff" }, + midnight: { bg: "#121428", sidebar: "#0a0b14", accent: "#2499ff" }, + noir: { bg: "#080808", sidebar: "#000000", accent: "#2499ff" }, + slate: { bg: "#151619", sidebar: "#0e0f12", accent: "#2499ff" }, + nord: { bg: "#1a1e27", sidebar: "#11141b", accent: "#2499ff" }, + mocha: { bg: "#1a1614", sidebar: "#110f0d", accent: "#2499ff" }, }; const c = colors[themeId]; @@ -1633,7 +1638,7 @@ function SecretsSection() { )} {/* ── Add / Edit Dialog ─────────────────────────────────────── */} - { if (!open) { @@ -1684,7 +1689,7 @@ function SecretsSection() {
- +

{categoryInput === "tool" ? "Workers will have access to this credential via environment variable." @@ -1725,10 +1730,10 @@ function SecretsSection() { -

+ {/* ── Delete Confirmation ───────────────────────────────────── */} - { if (!open) setDeleteTarget(null); }}> + { if (!open) setDeleteTarget(null); }}> Delete Secret @@ -1751,10 +1756,10 @@ function SecretsSection() { - + {/* ── Enable Encryption / Master Key Display Dialog ─────────── */} - { if (!open) { @@ -1830,10 +1835,10 @@ function SecretsSection() { )} - + {/* ── Rotate Key Confirmation ───────────────────────────────── */} - { if (!open) setRotateDialogOpen(false); }}> + { if (!open) setRotateDialogOpen(false); }}> Rotate Master Key @@ -1855,7 +1860,7 @@ function SecretsSection() { - + ); } @@ -1965,7 +1970,7 @@ function ApiKeysSection({ settings, isLoading }: GlobalSettingsSectionProps) { )} - { if (!open) setEditingBraveKey(false); }}> + { if (!open) setEditingBraveKey(false); }}> {settings?.brave_search_key ? "Update" : "Add"} Brave Search Key @@ -1997,7 +2002,7 @@ function ApiKeysSection({ settings, isLoading }: GlobalSettingsSectionProps) { - + ); } @@ -2433,7 +2438,7 @@ function OpenCodeSection({ settings, isLoading }: GlobalSettingsSectionProps) { ] as const).map(({ label, value, setter }) => (
{label} - +
))} @@ -3147,7 +3152,7 @@ function ChatGptOAuthDialog({ onRestart, }: ChatGptOAuthDialogProps) { return ( - + @@ -3275,6 +3280,6 @@ function ChatGptOAuthDialog({ )} - + ); } diff --git a/interface/src/styles.css b/interface/src/styles.css new file mode 100644 index 000000000..b338a6ecc --- /dev/null +++ b/interface/src/styles.css @@ -0,0 +1,185 @@ +@import "tailwindcss"; + +/* SpaceUI design tokens */ +@import "@spaceui/tokens/src/css/theme.css"; +@import "@spaceui/tokens/src/css/base.css"; + +/* Themes */ +@import "@spaceui/tokens/src/css/themes/light.css"; +@import "@spaceui/tokens/src/css/themes/dark.css"; +@import "@spaceui/tokens/src/css/themes/midnight.css"; +@import "@spaceui/tokens/src/css/themes/noir.css"; +@import "@spaceui/tokens/src/css/themes/slate.css"; +@import "@spaceui/tokens/src/css/themes/nord.css"; +@import "@spaceui/tokens/src/css/themes/mocha.css"; + +/* Tell Tailwind to scan SpaceUI component source for classes */ +@source "../../../spaceui/packages/primitives/src"; +@source "../../../spaceui/packages/ai/src"; +@source "../../../spaceui/packages/forms/src"; +@source "../../../spaceui/packages/explorer/src"; + +/* Override default font to IBM Plex Sans */ +@theme { + --font-sans: "IBM Plex Sans", system-ui, sans-serif; +} + +/* Custom utilities */ +@utility no-scrollbar { + -ms-overflow-style: none; + scrollbar-width: none; + &::-webkit-scrollbar { + display: none; + } +} + +/* Base styles */ +html, +body { + overflow: hidden; + height: 100%; +} + +html { + font-size: 106.25%; + background: var(--color-app); +} + +body { + font-family: var(--font-sans); + color: var(--color-ink); + background: var(--color-app); +} + +/* Markdown prose styling for message content */ +.markdown { + line-height: 1.625; + + p { + margin-block: 0.25rem; + } + p:first-child { + margin-top: 0; + } + p:last-child { + margin-bottom: 0; + } + strong { + font-weight: 600; + color: var(--color-ink); + } + em { + font-style: italic; + } + a { + color: var(--color-accent); + text-decoration: underline; + text-decoration-color: color-mix(in srgb, var(--color-accent) 30%, transparent); + &:hover { + text-decoration-color: color-mix(in srgb, var(--color-accent) 60%, transparent); + } + } + code { + border-radius: 0.25rem; + background: var(--color-app-dark-box); + padding: 0.125rem 0.375rem; + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--color-ink); + } + pre { + margin-block: 0.5rem; + overflow-x: auto; + border-radius: 0.375rem; + background: var(--color-app-dark-box); + padding: 0.75rem; + code { + background: transparent; + padding: 0; + } + } + ul, + ol { + margin-block: 0.375rem; + padding-left: 1.25rem; + } + ul { + list-style-type: disc; + } + ol { + list-style-type: decimal; + } + li { + margin-block: 0.125rem; + } + blockquote { + margin-block: 0.5rem; + border-left: 2px solid var(--color-app-line); + padding-left: 0.75rem; + font-style: italic; + color: var(--color-ink-faint); + } + h1, + h2, + h3, + h4, + h5, + h6 { + margin-top: 0.75rem; + margin-bottom: 0.25rem; + font-weight: 600; + color: var(--color-ink); + } + h1 { + font-size: 1.125rem; + } + h2 { + font-size: 1rem; + } + h3, + h4, + h5, + h6 { + font-size: 0.8rem; + } + hr { + margin-block: 0.75rem; + border-color: var(--color-app-line); + } + table { + margin-block: 0.5rem; + width: 100%; + font-size: 0.8rem; + } + th { + border: 1px solid var(--color-app-line); + background: var(--color-app-dark-box); + padding: 0.25rem 0.5rem; + text-align: left; + font-weight: 500; + color: var(--color-ink); + } + td { + border: 1px solid var(--color-app-line); + padding: 0.25rem 0.5rem; + } + img { + margin-block: 0.5rem; + max-width: 100%; + border-radius: 0.25rem; + } +} + +/* Hide React Query devtools toggle button */ +.tsqd-open-btn-container { + opacity: 0 !important; +} + +/* Override React Flow's default group node styles */ +.react-flow__node-group { + background-color: transparent !important; + border: none !important; + padding: 0 !important; + width: auto !important; + box-shadow: none !important; +} diff --git a/interface/src/ui/Badge.tsx b/interface/src/ui/Badge.tsx deleted file mode 100644 index eb5879e17..000000000 --- a/interface/src/ui/Badge.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; -import { cx } from "./utils"; - -export const badgeStyles = cva( - [ - "inline-flex items-center rounded-full border font-medium transition-colors", - "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", - ], - { - variants: { - variant: { - default: [ - "border-transparent bg-app-button text-ink-dull", - "hover:bg-app-hover hover:text-ink", - ], - accent: [ - "border-transparent bg-accent/15 text-accent", - "hover:bg-accent/25", - ], - amber: [ - "border-transparent bg-amber-500/15 text-amber-500", - "hover:bg-amber-500/25", - ], - violet: [ - "border-transparent bg-violet-500/15 text-violet-500", - "hover:bg-violet-500/25", - ], - blue: [ - "border-transparent bg-blue-500/15 text-blue-500", - "hover:bg-blue-500/25", - ], - red: [ - "border-transparent bg-red-500/15 text-red-500", - "hover:bg-red-500/25", - ], - green: [ - "border-transparent bg-emerald-500/15 text-emerald-500", - "hover:bg-emerald-500/25", - ], - outline: [ - "border-app-line text-ink-dull", - "hover:border-ink-faint hover:text-ink", - ], - }, - size: { - sm: "h-5 px-2 text-tiny gap-1", - md: "h-6 px-2.5 text-xs gap-1.5", - }, - }, - defaultVariants: { - variant: "default", - size: "sm", - }, - } -); - -export type BadgeBaseProps = VariantProps; - -export interface BadgeProps - extends React.HTMLAttributes, - BadgeBaseProps { - children?: React.ReactNode; -} - -export const Badge = React.forwardRef( - ({ className, variant, size, children, ...props }, ref) => { - return ( -
- {children} -
- ); - } -); - -Badge.displayName = "Badge"; diff --git a/interface/src/ui/Banner.tsx b/interface/src/ui/Banner.tsx deleted file mode 100644 index 2a21bee3a..000000000 --- a/interface/src/ui/Banner.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import * as React from "react"; -import { cx } from "./utils"; - -export type BannerVariant = "info" | "warning" | "error" | "success" | "cyan"; - -interface BannerProps extends React.HTMLAttributes { - variant?: BannerVariant; - dot?: "pulse" | "static" | "none"; - children: React.ReactNode; -} - -const variantStyles: Record = { - info: "bg-blue-500/10 text-blue-400 border-blue-500/20", - warning: "bg-amber-500/10 text-amber-400 border-amber-500/20", - error: "bg-red-500/10 text-red-400 border-red-500/20", - success: "bg-green-500/10 text-green-400 border-green-500/20", - cyan: "bg-cyan-500/10 text-cyan-400 border-cyan-500/20", -}; - -export function Banner({ - variant = "info", - dot = "static", - className, - children, - ...props -}: BannerProps) { - return ( -
-
- {dot !== "none" && ( -
- )} - {children} -
-
- ); -} - -export function BannerActions({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) { - return ( -
- {children} -
- ); -} diff --git a/interface/src/ui/Button.tsx b/interface/src/ui/Button.tsx deleted file mode 100644 index 411f6236b..000000000 --- a/interface/src/ui/Button.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import * as React from "react"; -import {cva, type VariantProps} from "class-variance-authority"; -import {cx} from "./utils"; -import {Loader} from "./Loader"; - -export const buttonStyles = cva( - [ - "inline-flex items-center justify-center rounded-lg font-medium transition-colors", - "disabled:pointer-events-none disabled:opacity-50", - "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2", - ], - { - variants: { - size: { - default: "h-9 px-4 py-2 text-sm", - sm: "h-8 rounded-md px-3 text-xs", - lg: "h-10 rounded-md px-8 text-sm", - icon: "h-8 w-8 rounded-md p-0", - }, - variant: { - default: ["bg-accent text-white shadow", "hover:bg-accent/90"], - destructive: [ - "border border-app-line bg-transparent text-ink-dull", - "hover:bg-red-600 hover:text-white hover:border-red-600", - ], - outline: [ - "border border-app-line bg-transparent", - "hover:bg-app-hover/40 hover:text-ink", - ], - secondary: [ - "bg-app-darkBox text-ink-dull", - "hover:bg-app-lightBox hover:text-ink", - ], - ghost: ["hover:bg-app-darkBox hover:text-ink-dull", "text-ink-faint"], - link: ["text-accent underline-offset-4", "hover:underline"], - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - }, -); - -export type ButtonBaseProps = VariantProps; - -export interface ButtonProps - extends React.ButtonHTMLAttributes, ButtonBaseProps { - loading?: boolean; - leftIcon?: React.ReactNode; - rightIcon?: React.ReactNode; - children?: React.ReactNode; -} - -export const Button = React.forwardRef( - ( - { - className, - variant, - size, - loading, - leftIcon, - rightIcon, - children, - disabled, - ...props - }, - ref, - ) => { - const isDisabled = disabled || loading; - - return ( - - ); - }, -); - -Button.displayName = "Button"; diff --git a/interface/src/ui/Card.tsx b/interface/src/ui/Card.tsx deleted file mode 100644 index 320d4c351..000000000 --- a/interface/src/ui/Card.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; -import { cx } from "./utils"; - -export const cardStyles = cva( - [ - "rounded-xl border transition-colors", - ], - { - variants: { - variant: { - default: [ - "border-app-line bg-app-darkBox", - ], - darker: [ - "border-app-line bg-app-darkerBox", - ], - ghost: [ - "border-transparent bg-transparent", - ], - }, - padding: { - none: "", - sm: "p-3", - md: "p-5", - lg: "p-6", - }, - }, - defaultVariants: { - variant: "default", - padding: "md", - }, - } -); - -export type CardBaseProps = VariantProps; - -export interface CardProps - extends React.HTMLAttributes, - CardBaseProps {} - -export const Card = React.forwardRef( - ({ className, variant, padding, ...props }, ref) => { - return ( -
- ); - } -); - -Card.displayName = "Card"; - -export const CardHeader = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -CardHeader.displayName = "CardHeader"; - -export const CardTitle = React.forwardRef< - HTMLHeadingElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

-)); -CardTitle.displayName = "CardTitle"; - -export const CardDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

-)); -CardDescription.displayName = "CardDescription"; - -export const CardContent = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

-)); -CardContent.displayName = "CardContent"; - -export const CardFooter = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -CardFooter.displayName = "CardFooter"; diff --git a/interface/src/ui/Checkbox.tsx b/interface/src/ui/Checkbox.tsx deleted file mode 100644 index 709382451..000000000 --- a/interface/src/ui/Checkbox.tsx +++ /dev/null @@ -1,110 +0,0 @@ -"use client"; - -import * as React from "react"; -import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; -import { Tick02Icon, MinusSignIcon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; -import { cva, type VariantProps } from "class-variance-authority"; -import { cx } from "./utils"; - -const checkboxStyles = cva( - [ - "peer h-4 w-4 shrink-0 rounded border border-app-line", - "ring-offset-app-box focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2", - "disabled:cursor-not-allowed disabled:opacity-50", - "data-[state=checked]:bg-accent data-[state=checked]:border-accent", - "data-[state=indeterminate]:bg-accent data-[state=indeterminate]:border-accent", - ] -); - -const indicatorStyles = cva( - "flex items-center justify-center text-current" -); - -export interface CheckboxProps - extends React.ComponentPropsWithoutRef, - VariantProps { - indeterminate?: boolean; -} - -export const Checkbox = React.forwardRef< - React.ElementRef, - CheckboxProps ->(({ className, indeterminate, checked, ...props }, ref) => ( - - - {indeterminate ? ( - - ) : ( - - )} - - -)); - -Checkbox.displayName = CheckboxPrimitive.Root.displayName; - -export interface CheckboxLabelProps { - children: React.ReactNode; - disabled?: boolean; - className?: string; -} - -export const CheckboxLabel: React.FC = ({ - children, - disabled, - className, -}) => ( - - {children} - -); - -export interface CheckboxFieldProps { - label: React.ReactNode; - description?: string; - disabled?: boolean; - className?: string; - checkboxProps?: Omit; -} - -export const CheckboxField: React.FC = ({ - label, - description, - disabled, - className, - checkboxProps, -}) => ( - -); diff --git a/interface/src/ui/Dialog.tsx b/interface/src/ui/Dialog.tsx deleted file mode 100644 index 5e6ebcf33..000000000 --- a/interface/src/ui/Dialog.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import * as React from "react"; -import * as DialogPrimitive from "@radix-ui/react-dialog"; -import { cx } from "./utils"; -import { Cancel01Icon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; - -const Dialog = DialogPrimitive.Root; -const DialogTrigger = DialogPrimitive.Trigger; -const DialogPortal = DialogPrimitive.Portal; -const DialogClose = DialogPrimitive.Close; - -const DialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; - -const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - {children} - - - Close - - - -)); -DialogContent.displayName = DialogPrimitive.Content.displayName; - -const DialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -DialogHeader.displayName = "DialogHeader"; - -const DialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -DialogFooter.displayName = "DialogFooter"; - -const DialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogTitle.displayName = DialogPrimitive.Title.displayName; - -const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogDescription.displayName = DialogPrimitive.Description.displayName; - -export { - Dialog, - DialogPortal, - DialogOverlay, - DialogClose, - DialogTrigger, - DialogContent, - DialogHeader, - DialogFooter, - DialogTitle, - DialogDescription, -}; diff --git a/interface/src/ui/Divider.tsx b/interface/src/ui/Divider.tsx deleted file mode 100644 index cd66cc071..000000000 --- a/interface/src/ui/Divider.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { tw } from "./utils"; - -export const Divider = tw.div`h-px w-full bg-app-divider`; - -export const VerticalDivider = tw.div`h-full w-px bg-app-divider`; diff --git a/interface/src/ui/Dropdown.tsx b/interface/src/ui/Dropdown.tsx deleted file mode 100644 index 6cc11d867..000000000 --- a/interface/src/ui/Dropdown.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import * as React from "react"; -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; -import { cx } from "./utils"; -import { Tick02Icon, ArrowRight01Icon } from "@hugeicons/core-free-icons"; -import { HugeiconsIcon } from "@hugeicons/react"; - -const DropdownMenu = DropdownMenuPrimitive.Root; -const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; -const DropdownMenuGroup = DropdownMenuPrimitive.Group; -const DropdownMenuPortal = DropdownMenuPrimitive.Portal; -const DropdownMenuSub = DropdownMenuPrimitive.Sub; -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; - -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)); -DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName; - -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName; - -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)); -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; - -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; - -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName; - -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - -
- - - {children} - -)); -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; - -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; - -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; - -const DropdownMenuShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ); -}; -DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; - -export { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuGroup, - DropdownMenuPortal, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuRadioGroup, -}; - -export const Dropdown = { - Root: DropdownMenu, - Trigger: DropdownMenuTrigger, - Content: DropdownMenuContent, - Item: DropdownMenuItem, - CheckboxItem: DropdownMenuCheckboxItem, - RadioItem: DropdownMenuRadioItem, - Label: DropdownMenuLabel, - Separator: DropdownMenuSeparator, - Shortcut: DropdownMenuShortcut, - Group: DropdownMenuGroup, - Sub: DropdownMenuSub, - SubContent: DropdownMenuSubContent, - SubTrigger: DropdownMenuSubTrigger, - RadioGroup: DropdownMenuRadioGroup, -}; diff --git a/interface/src/ui/FilterButton.tsx b/interface/src/ui/FilterButton.tsx deleted file mode 100644 index 14c8a8a96..000000000 --- a/interface/src/ui/FilterButton.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import * as React from "react"; -import { cx } from "./utils"; - -export interface FilterButtonProps - extends React.ButtonHTMLAttributes { - active?: boolean; - colorClass?: string; - children: React.ReactNode; -} - -export const FilterButton = React.forwardRef< - HTMLButtonElement, - FilterButtonProps ->(({ active, colorClass, className, children, ...props }, ref) => ( - -)); - -FilterButton.displayName = "FilterButton"; diff --git a/interface/src/ui/Input.tsx b/interface/src/ui/Input.tsx deleted file mode 100644 index 87946252d..000000000 --- a/interface/src/ui/Input.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import * as React from "react"; -import {cva, type VariantProps} from "class-variance-authority"; -import {cx} from "./utils"; -import {Search01Icon} from "@hugeicons/core-free-icons"; -import {HugeiconsIcon} from "@hugeicons/react"; - -export const inputSizes = { - sm: "h-8 text-sm px-3 py-1.5", - md: "h-9 text-sm px-3", - lg: "h-10 text-base px-3.5", -} as const; - -export const inputStyles = cva( - [ - "rounded-md border text-sm leading-4", - "outline-none transition-colors", - "text-ink", - ], - { - variants: { - variant: { - default: ["border-app-line bg-app-darkBox", "focus-within:border-accent/50"], - transparent: [ - "border-transparent bg-app-box", - "focus-within:border-app-line", - ], - }, - error: { - true: "border-red-500/50 focus-within:border-red-500", - }, - size: inputSizes, - }, - defaultVariants: { - variant: "default", - size: "sm", - }, - }, -); - -type InputVariants = VariantProps; - -export interface InputProps - extends - Omit, "size">, - InputVariants { - icon?: React.ReactNode; - right?: React.ReactNode; -} - -export const Input = React.forwardRef( - ({className, variant, size, error, icon, right, ...props}, ref) => { - return ( -
- {icon && {icon}} - - {right && {right}} -
- ); - }, -); - -Input.displayName = "Input"; - -export interface TextAreaProps - extends - React.TextareaHTMLAttributes, - Pick {} - -export const TextArea = React.forwardRef( - ({className, variant = "default", error, ...props}, ref) => { - return ( -