agmon 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +8 -8
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +15 -14
- package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -14
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/server/app/api/reports/tokens/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/transcript/route.js.nft.json +1 -1
- package/.next/server/app/api/traces/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/file-content/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +20 -19
- package/.next/server/app/chat.segments/_full.segment.rsc +20 -19
- package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +21 -20
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +20 -18
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/index.segments/_full.segment.rsc +20 -18
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reports/page.js.nft.json +1 -1
- package/.next/server/app/reports/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reports.html +1 -1
- package/.next/server/app/reports.rsc +4 -4
- package/.next/server/app/reports.segments/_full.segment.rsc +4 -4
- package/.next/server/app/reports.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/reports.segments/reports/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/store/page.js.nft.json +1 -1
- package/.next/server/app/store/page_client-reference-manifest.js +1 -1
- package/.next/server/app/store.html +1 -1
- package/.next/server/app/store.rsc +5 -5
- package/.next/server/app/store.segments/_full.segment.rsc +5 -5
- package/.next/server/app/store.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/store.segments/store/__PAGE__.segment.rsc +5 -5
- package/.next/server/chunks/_0ao-_t4jkb46h._.js +2 -2
- package/.next/server/chunks/_0ao-_t4jkb46h._.js.map +1 -1
- package/.next/server/chunks/src_lib_watchers_antigravityWatcher_0w1-atg39y__p.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0i2rbwbkxbdog._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0i2rbwbkxbdog._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0qzscpxebh28_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0qzscpxebh28_._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1jwplflwix8wi._.js +427 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1jwplflwix8wi._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1kt7h7bz59mdn._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1kt7h7bz59mdn._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1otsvjy81s8my._.js +427 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1otsvjy81s8my._.js.map +1 -0
- package/.next/server/chunks/ssr/_0--937zhi743v._.js +3 -0
- package/.next/server/chunks/ssr/_0--937zhi743v._.js.map +1 -0
- package/.next/server/chunks/ssr/_0e3frtjrk-wi9._.js +3 -0
- package/.next/server/chunks/ssr/_0e3frtjrk-wi9._.js.map +1 -0
- package/.next/server/chunks/ssr/_0h29jdf4relbq._.js +3 -0
- package/.next/server/chunks/ssr/_0h29jdf4relbq._.js.map +1 -0
- package/.next/server/chunks/ssr/_1487-zi23c5eb._.js +1 -1
- package/.next/server/chunks/ssr/_1487-zi23c5eb._.js.map +1 -1
- package/.next/server/chunks/ssr/_1vgwoe-shb9z7._.js +3 -0
- package/.next/server/chunks/ssr/_1vgwoe-shb9z7._.js.map +1 -0
- package/.next/server/chunks/ssr/_1zm4m-s8k7oe3._.js +3 -0
- package/.next/server/chunks/ssr/_1zm4m-s8k7oe3._.js.map +1 -0
- package/.next/server/chunks/ssr/_202tntue-jj6s._.js +3 -0
- package/.next/server/chunks/ssr/_202tntue-jj6s._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_1wlwrgnt65zus._.js → node_modules_00ebs67b4u61w._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0m3ihe65818y_._.js → node_modules_01p9ctt-n2dxp._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1kr1c-ncf8q9t._.js → node_modules_05i69rc9pwcdx._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_02jwra-d9iqim._.js → node_modules_06mgkab1v5iox._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1dff7b_kvngr-._.js → node_modules_07bjxeq9dfgn1._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_02vtgweceovke._.js → node_modules_08q6a-f2itxyo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_13nsmuhey_ti_._.js → node_modules_09v49jhajmvl4._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0oukyh0iq21ow._.js → node_modules_0b8zi3pbl-y9n._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_061uaylfjwqk7._.js → node_modules_0d2ios01ot1in._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0b8ndnuql44z1._.js → node_modules_0dw0vozejrnml._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_05w7qhtrzvnk6._.js → node_modules_0e3njj436xau-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0z7rdbaf13024._.js → node_modules_0e6qoh__e4a69._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ll-58c1c-qab._.js → node_modules_0hb0q0epwvp--._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0f773uqgzj7y7._.js → node_modules_0jla9ugf1y6rb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0fd1swhk15cx3._.js → node_modules_0l-y0kqtu_r3o._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1zs2nou5uogby._.js → node_modules_0l814qpw677vm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1c8i3jrmo4393._.js → node_modules_0lqovp8j8ld76._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0z3elum1675ve._.js → node_modules_0o63z1gd17rhb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1xyxigbqzb8vs._.js → node_modules_0sjdrli5douui._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1iovyom0-y7o_._.js → node_modules_0xh8tnq1niblb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0nde84kzuwv2n._.js → node_modules_0yayrqhzfk8wy._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0__m9_odts7_e._.js → node_modules_0z1e37smavebg._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0f4xh33v3iltc._.js → node_modules_0zb0i39mnjdf3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_02nv3yff2pqh8._.js → node_modules_10g1mmrf63d8a._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0-6sb1gkbjo93._.js → node_modules_152txg4c7ose3._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_12qn4bepdou5v._.js → node_modules_185fuy4cv7loa._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0dq0dsblt-q0g._.js → node_modules_1aqaelh-8fme6._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1-iyhsn_1p9nx._.js → node_modules_1d4sreyq0ubqg._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0hqa9oxz17hip._.js → node_modules_1e_nc2eyg4djz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1rlnehdn16ay-._.js → node_modules_1hd7j-tdb8drq._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_12qw2ucebdvol._.js → node_modules_1i3x2csuq_-jt._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0zc49fdcopqu9._.js → node_modules_1l2g7btuh3e4s._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1-sz_-qddwilq._.js → node_modules_1l46or7mgko0z._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0fs8mckuwk2tj._.js → node_modules_1ltys5mwtcv-n._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0vn0kjn_84lmn._.js → node_modules_1nz3ckv6tu_66._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0t4h1rucl35hl._.js → node_modules_1pquu5wprusnc._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0-nvg0c4pgfb8._.js → node_modules_1qnypguag6s_l._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1v4lexrfhnlhs._.js → node_modules_1r6w-jlme6d10._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1f4geuvkvlxj1._.js → node_modules_1st9dwe66yx93._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0kovk4b6czb22._.js → node_modules_1tskcaktx6ods._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_07maxxr-t28ql._.js → node_modules_1wew4nn7i1uup._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1216007ogd5om._.js → node_modules_1zbmc81s-4zsm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1kv6lsckqs-m0._.js → node_modules_1zii7uk468cay._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0bmuudv_6eypr._.js → node_modules_katex_dist_katex_mjs_0kqo9zl9cgwbo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0qyy6pq9uzpk0._.js → node_modules_katex_dist_katex_mjs_1604s1ky8db8u._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_1d8fezw1qsiob._.js → node_modules_lucide-react_dist_esm_0-5bcc79665lq._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_0-5bcc79665lq._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_0pezg1352q13j._.js → node_modules_lucide-react_dist_esm_0axoa1eg51x1-._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_0axoa1eg51x1-._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_131i-tjzse3ye._.js → node_modules_lucide-react_dist_esm_18ei1-na3kusb._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_18ei1-na3kusb._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_1to-9cv1ysvs6._.js → node_modules_lucide-react_dist_esm_1tx493x2_auzs._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_1tx493x2_auzs._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_06it7ktosm1dr._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_06it7ktosm1dr._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_page_1vqfk0-j72fp6.js +1 -1
- package/.next/server/chunks/ssr/src_app_page_1vqfk0-j72fp6.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_reports_TokenReportView_jsx_1g3p_enbbsadt._.js +1 -1
- package/.next/server/chunks/ssr/src_components_reports_TokenReportView_jsx_1g3p_enbbsadt._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/preview-props.json +3 -3
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0r9apkv3exqv-.js +1 -0
- package/.next/static/chunks/17jorrh_pfel_.js +1 -0
- package/.next/static/chunks/1n_lb7wmn81jj.js +1 -0
- package/.next/static/chunks/2-w116ewoshm1.js +1 -0
- package/.next/static/chunks/23uup1e8841av.js +1 -0
- package/.next/static/chunks/25l0z48vlvdu4.css +1 -0
- package/.next/static/chunks/2rx7xvi55ohln.js +1 -0
- package/.next/static/chunks/3og0e9qcff393.js +425 -0
- package/.next/static/chunks/3rtpnpqd981z9.js +1 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/bin/cli.js +12 -0
- package/package.json +1 -1
- package/src/app/chat/page.js +14 -14
- package/src/app/globals.css +128 -0
- package/src/app/layout.js +6 -1
- package/src/app/page.js +1 -1
- package/src/components/chat/ChatMessageItem.js +12 -12
- package/src/components/chat/CodeBlock.js +5 -5
- package/src/components/chat/DiffViewer.js +27 -27
- package/src/components/chat/MarkdownRenderer.js +19 -19
- package/src/components/chat/SessionChatView.js +41 -41
- package/src/components/chat/SessionSearch.js +8 -8
- package/src/components/chat/ThinkingAccordion.js +3 -3
- package/src/components/chat/ToolCallCard.js +6 -6
- package/src/components/chat/ToolOutputView.js +19 -19
- package/src/components/factory/office-canvas.js +134 -3
- package/src/components/factory/scene/characters.js +267 -32
- package/src/components/layout/CommandPalette.jsx +12 -0
- package/src/components/layout/EditorTabs.jsx +17 -0
- package/src/components/layout/LayoutToggles.jsx +31 -2
- package/src/components/layout/LeftSidebar.jsx +27 -3
- package/src/components/layout/RightSidebar.jsx +8 -8
- package/src/components/layout/TitleBar.jsx +5 -1
- package/src/components/layout/VSCodeWorkbench.jsx +78 -14
- package/src/components/store/Item3DRenderer.jsx +602 -48
- package/src/components/store/LiveFittingRoom.jsx +55 -791
- package/src/components/store/LiveReactAgent.jsx +1637 -0
- package/src/components/store/SupporterStoreModal.jsx +3 -2
- package/src/components/store/SupporterStoreView.jsx +94 -34
- package/src/components/theme/ThemeSettingsModal.jsx +40 -40
- package/src/components/ui/Button.jsx +4 -4
- package/src/components/ui/Input.jsx +1 -1
- package/src/components/ui/Modal.jsx +6 -6
- package/src/components/ui/Select.jsx +3 -3
- package/src/lib/catalog/auras.js +226 -1199
- package/src/lib/catalog/index.js +60 -1
- package/src/lib/catalog/pets.js +291 -2398
- package/src/lib/catalog/props.js +488 -4199
- package/src/lib/catalog/skins.js +773 -3249
- package/src/lib/catalog/trophies.js +226 -1199
- package/src/lib/mockTraces.js +15 -15
- package/src/lib/supporterStore.js +1 -1
- package/src/lib/traceContract.js +1 -1
- package/src/lib/watchers/claudeWatcher.js +24 -19
- package/.next/server/chunks/ssr/[root-of-the-server]__19s2v5rryc14o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__19s2v5rryc14o._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1_jerxrctq6ev._.js +0 -427
- package/.next/server/chunks/ssr/[root-of-the-server]__1_jerxrctq6ev._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1pvso-uyf--97._.js +0 -427
- package/.next/server/chunks/ssr/[root-of-the-server]__1pvso-uyf--97._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1y78dc7oiz7ks._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1y78dc7oiz7ks._.js.map +0 -1
- package/.next/server/chunks/ssr/_0ozao7omdwbvd._.js +0 -3
- package/.next/server/chunks/ssr/_0ozao7omdwbvd._.js.map +0 -1
- package/.next/server/chunks/ssr/_0rcmpdyxc1qwj._.js +0 -3
- package/.next/server/chunks/ssr/_0rcmpdyxc1qwj._.js.map +0 -1
- package/.next/server/chunks/ssr/_0wv0xnhun3mk7._.js +0 -3
- package/.next/server/chunks/ssr/_0wv0xnhun3mk7._.js.map +0 -1
- package/.next/server/chunks/ssr/_17rmaft1zusua._.js +0 -3
- package/.next/server/chunks/ssr/_17rmaft1zusua._.js.map +0 -1
- package/.next/server/chunks/ssr/_1e-d4pcj59a7a._.js +0 -3
- package/.next/server/chunks/ssr/_1e-d4pcj59a7a._.js.map +0 -1
- package/.next/server/chunks/ssr/_1qr5gnh64z8pg._.js +0 -3
- package/.next/server/chunks/ssr/_1qr5gnh64z8pg._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_0pezg1352q13j._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_131i-tjzse3ye._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_1d8fezw1qsiob._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_1to-9cv1ysvs6._.js.map +0 -1
- package/.next/static/chunks/0_3s_e4gd9xl0.js +0 -1
- package/.next/static/chunks/0i4kx4yl-dwfg.js +0 -425
- package/.next/static/chunks/0z0jbobmmvqoc.js +0 -1
- package/.next/static/chunks/1_a_gmob5qzho.js +0 -1
- package/.next/static/chunks/1ifqr4qo4697b.js +0 -1
- package/.next/static/chunks/2ccq9i8ev4dsx.js +0 -1
- package/.next/static/chunks/2mif7onk_9jy-.css +0 -1
- package/.next/static/chunks/40wyf-mv0tiu3.js +0 -1
- /package/.next/server/chunks/ssr/{node_modules_1c8i3jrmo4393._.js.map → node_modules_00ebs67b4u61w._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_02vtgweceovke._.js.map → node_modules_01p9ctt-n2dxp._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1kr1c-ncf8q9t._.js.map → node_modules_05i69rc9pwcdx._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_02jwra-d9iqim._.js.map → node_modules_06mgkab1v5iox._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1dff7b_kvngr-._.js.map → node_modules_07bjxeq9dfgn1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0m3ihe65818y_._.js.map → node_modules_08q6a-f2itxyo._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0-6sb1gkbjo93._.js.map → node_modules_09v49jhajmvl4._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0oukyh0iq21ow._.js.map → node_modules_0b8zi3pbl-y9n._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_061uaylfjwqk7._.js.map → node_modules_0d2ios01ot1in._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_02nv3yff2pqh8._.js.map → node_modules_0dw0vozejrnml._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0-nvg0c4pgfb8._.js.map → node_modules_0e3njj436xau-._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0fs8mckuwk2tj._.js.map → node_modules_0e6qoh__e4a69._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0t4h1rucl35hl._.js.map → node_modules_0hb0q0epwvp--._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0f773uqgzj7y7._.js.map → node_modules_0jla9ugf1y6rb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0dq0dsblt-q0g._.js.map → node_modules_0l-y0kqtu_r3o._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0zc49fdcopqu9._.js.map → node_modules_0l814qpw677vm._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1wlwrgnt65zus._.js.map → node_modules_0lqovp8j8ld76._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0z3elum1675ve._.js.map → node_modules_0o63z1gd17rhb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1xyxigbqzb8vs._.js.map → node_modules_0sjdrli5douui._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1-iyhsn_1p9nx._.js.map → node_modules_0xh8tnq1niblb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0nde84kzuwv2n._.js.map → node_modules_0yayrqhzfk8wy._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0__m9_odts7_e._.js.map → node_modules_0z1e37smavebg._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0f4xh33v3iltc._.js.map → node_modules_0zb0i39mnjdf3._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0b8ndnuql44z1._.js.map → node_modules_10g1mmrf63d8a._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1-sz_-qddwilq._.js.map → node_modules_152txg4c7ose3._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_12qn4bepdou5v._.js.map → node_modules_185fuy4cv7loa._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0fd1swhk15cx3._.js.map → node_modules_1aqaelh-8fme6._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_13nsmuhey_ti_._.js.map → node_modules_1d4sreyq0ubqg._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0hqa9oxz17hip._.js.map → node_modules_1e_nc2eyg4djz._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1rlnehdn16ay-._.js.map → node_modules_1hd7j-tdb8drq._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_07maxxr-t28ql._.js.map → node_modules_1i3x2csuq_-jt._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1iovyom0-y7o_._.js.map → node_modules_1l2g7btuh3e4s._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1ll-58c1c-qab._.js.map → node_modules_1l46or7mgko0z._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0z7rdbaf13024._.js.map → node_modules_1ltys5mwtcv-n._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0vn0kjn_84lmn._.js.map → node_modules_1nz3ckv6tu_66._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1zs2nou5uogby._.js.map → node_modules_1pquu5wprusnc._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_05w7qhtrzvnk6._.js.map → node_modules_1qnypguag6s_l._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1v4lexrfhnlhs._.js.map → node_modules_1r6w-jlme6d10._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1f4geuvkvlxj1._.js.map → node_modules_1st9dwe66yx93._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0kovk4b6czb22._.js.map → node_modules_1tskcaktx6ods._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_12qw2ucebdvol._.js.map → node_modules_1wew4nn7i1uup._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1216007ogd5om._.js.map → node_modules_1zbmc81s-4zsm._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1kv6lsckqs-m0._.js.map → node_modules_1zii7uk468cay._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0bmuudv_6eypr._.js.map → node_modules_katex_dist_katex_mjs_0kqo9zl9cgwbo._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0qyy6pq9uzpk0._.js.map → node_modules_katex_dist_katex_mjs_1604s1ky8db8u._.js.map} +0 -0
- /package/.next/static/{sQnXeiP8rV6y2v0az_xw3 → 1y6Da0YgnPr2_6ncpWrbV}/_buildManifest.js +0 -0
- /package/.next/static/{sQnXeiP8rV6y2v0az_xw3 → 1y6Da0YgnPr2_6ncpWrbV}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{sQnXeiP8rV6y2v0az_xw3 → 1y6Da0YgnPr2_6ncpWrbV}/_ssgManifest.js +0 -0
|
@@ -4,6 +4,7 @@ import React, { useState, useEffect } from "react";
|
|
|
4
4
|
import { Modal, Button } from "@/components/ui";
|
|
5
5
|
import { ShieldCheck } from "lucide-react";
|
|
6
6
|
import { getSupporterState, SUPPORTER_CHANGE_EVENT } from "@/lib/supporterStore";
|
|
7
|
+
import { TOTAL_CATALOG_COUNT } from "@/lib/catalog/index.js";
|
|
7
8
|
import SupporterStoreView from "./SupporterStoreView";
|
|
8
9
|
|
|
9
10
|
export default function SupporterStoreModal({ isOpen, onClose }) {
|
|
@@ -21,7 +22,7 @@ export default function SupporterStoreModal({ isOpen, onClose }) {
|
|
|
21
22
|
<Modal
|
|
22
23
|
isOpen={isOpen}
|
|
23
24
|
onClose={onClose}
|
|
24
|
-
title=
|
|
25
|
+
title={`Supporter Store & Vault (${TOTAL_CATALOG_COUNT} Tech Items & 3D Effects)`}
|
|
25
26
|
description="Support the developer to maintain the project and unlock custom AGMon virtual office decorations"
|
|
26
27
|
size="full"
|
|
27
28
|
footer={
|
|
@@ -30,7 +31,7 @@ export default function SupporterStoreModal({ isOpen, onClose }) {
|
|
|
30
31
|
{storeState.isSupporter ? (
|
|
31
32
|
<span className="flex items-center gap-1.5 text-amber-400 font-semibold">
|
|
32
33
|
<ShieldCheck className="w-4 h-4 text-amber-400" />
|
|
33
|
-
<span>Status: VIP Supporter Activated (All
|
|
34
|
+
<span>Status: VIP Supporter Activated (All {TOTAL_CATALOG_COUNT} items unlocked)</span>
|
|
34
35
|
</span>
|
|
35
36
|
) : (
|
|
36
37
|
<span>100% of AGMon core engineering features remain completely free</span>
|
|
@@ -44,7 +44,10 @@ import {
|
|
|
44
44
|
SUPPORTER_CHANGE_EVENT,
|
|
45
45
|
} from "@/lib/supporterStore";
|
|
46
46
|
import { startAmbient, stopAmbient, setAmbientVolume } from "@/lib/ambientAudio";
|
|
47
|
+
import { TOTAL_CATALOG_COUNT } from "@/lib/catalog/index.js";
|
|
47
48
|
import { Item3DPreview } from "./Item3DRenderer";
|
|
49
|
+
import LiveFittingRoom from "./LiveFittingRoom";
|
|
50
|
+
import { LiveReactAgent } from "./LiveReactAgent";
|
|
48
51
|
|
|
49
52
|
// VietQR donation recipient info (MB Bank)
|
|
50
53
|
const VIETQR_CONFIG = {
|
|
@@ -77,7 +80,7 @@ const DONATE_TIERS = [
|
|
|
77
80
|
amount: 100000,
|
|
78
81
|
amountUsd: "$5",
|
|
79
82
|
tag: "VIP Supporter",
|
|
80
|
-
description:
|
|
83
|
+
description: `Unlock all ${TOTAL_CATALOG_COUNT} 3D isometric items, aura effects, and exclusive badges.`,
|
|
81
84
|
},
|
|
82
85
|
];
|
|
83
86
|
|
|
@@ -253,9 +256,16 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
253
256
|
{
|
|
254
257
|
id: "all",
|
|
255
258
|
label: "All Items",
|
|
256
|
-
count:
|
|
259
|
+
count: TOTAL_CATALOG_COUNT,
|
|
257
260
|
icon: Grid,
|
|
258
|
-
desc: "10 Themes ·
|
|
261
|
+
desc: "10 Themes · 50 Skins · 35 Props · 21 Pets · 16 Auras · 16 Trophies",
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
id: "fitting_room",
|
|
265
|
+
label: "Live Fitting Room",
|
|
266
|
+
badge: "LIVE 3D",
|
|
267
|
+
icon: Sparkles,
|
|
268
|
+
desc: "Interactive avatar sandbox, mix props & test actions",
|
|
259
269
|
},
|
|
260
270
|
{
|
|
261
271
|
id: "themes",
|
|
@@ -371,7 +381,7 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
371
381
|
</div>
|
|
372
382
|
<div>
|
|
373
383
|
<h2 className="text-sm font-bold text-white leading-tight">Supporter Store</h2>
|
|
374
|
-
<p className="text-[11px] text-amber-400 font-mono">
|
|
384
|
+
<p className="text-[11px] text-amber-400 font-mono">{TOTAL_CATALOG_COUNT} 3D Items & Effects</p>
|
|
375
385
|
</div>
|
|
376
386
|
</div>
|
|
377
387
|
{onClose && (
|
|
@@ -391,7 +401,7 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
391
401
|
<Search className="w-3.5 h-3.5 text-slate-500 absolute left-2.5 top-1/2 -translate-y-1/2" />
|
|
392
402
|
<input
|
|
393
403
|
type="text"
|
|
394
|
-
placeholder=
|
|
404
|
+
placeholder={`Search across ${TOTAL_CATALOG_COUNT} items...`}
|
|
395
405
|
value={searchQuery}
|
|
396
406
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
397
407
|
className="w-full pl-8 pr-7 py-1.5 bg-[#202026] border border-[#33333d] rounded-lg text-xs text-white placeholder-slate-500 focus:outline-none focus:border-[#007acc] transition-colors"
|
|
@@ -410,7 +420,7 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
410
420
|
{/* Aside Category Navigation Menu */}
|
|
411
421
|
<nav className="flex-1 overflow-y-auto p-2 space-y-1 text-xs">
|
|
412
422
|
<div className="px-2 py-1 text-[10px] font-bold text-slate-500 uppercase tracking-wider">
|
|
413
|
-
Categories (
|
|
423
|
+
Categories ({TOTAL_CATALOG_COUNT} Items)
|
|
414
424
|
</div>
|
|
415
425
|
{asideMenuItems.map((item) => {
|
|
416
426
|
const isActive = activeTab === item.id;
|
|
@@ -494,10 +504,10 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
494
504
|
type="button"
|
|
495
505
|
onClick={handleQuickUnlockAll}
|
|
496
506
|
className="w-full flex items-center justify-center gap-1.5 px-3 py-1.5 bg-gradient-to-r from-amber-500/20 to-amber-600/20 hover:from-amber-500/30 hover:to-amber-600/30 border border-amber-500/40 text-amber-300 rounded-lg text-xs font-semibold cursor-pointer transition-all shadow-sm"
|
|
497
|
-
title=
|
|
507
|
+
title={`Unlock all ${TOTAL_CATALOG_COUNT} items instantly to preview`}
|
|
498
508
|
>
|
|
499
509
|
<Zap className="w-3.5 h-3.5 text-amber-400" />
|
|
500
|
-
<span>Unlock all
|
|
510
|
+
<span>Unlock all {TOTAL_CATALOG_COUNT} items (VIP Demo)</span>
|
|
501
511
|
</button>
|
|
502
512
|
</div>
|
|
503
513
|
)}
|
|
@@ -519,10 +529,20 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
519
529
|
</div>
|
|
520
530
|
|
|
521
531
|
<div className="flex items-center gap-3 p-2 rounded-xl bg-[#1d1d23] border border-[#2b2b34] shadow-inner">
|
|
522
|
-
<div className="w-14 h-14 rounded-lg bg-[#141418] border border-[#33333d] flex items-center justify-center shrink-0 overflow-hidden">
|
|
523
|
-
<
|
|
524
|
-
|
|
525
|
-
|
|
532
|
+
<div className="w-14 h-14 rounded-lg bg-[#141418] border border-[#33333d] flex items-center justify-center shrink-0 overflow-hidden relative shadow-inner">
|
|
533
|
+
<LiveReactAgent
|
|
534
|
+
skinId={storeState.equippedSkin || "skin_0"}
|
|
535
|
+
petId={storeState.equippedPet || "pet_0"}
|
|
536
|
+
propsList={storeState.equippedProps || []}
|
|
537
|
+
auraId={storeState.equippedAura || "aura_0"}
|
|
538
|
+
themeId={storeState.equippedOfficeTheme || "theme_default"}
|
|
539
|
+
mode="streaming"
|
|
540
|
+
intensity={0.5}
|
|
541
|
+
showFloor={false}
|
|
542
|
+
showDesk={false}
|
|
543
|
+
interactive={false}
|
|
544
|
+
className="w-full h-full"
|
|
545
|
+
/>
|
|
526
546
|
</div>
|
|
527
547
|
<div className="space-y-0.5 flex-1 min-w-0">
|
|
528
548
|
<div className="font-bold text-white text-xs truncate">
|
|
@@ -554,6 +574,15 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
554
574
|
)}
|
|
555
575
|
</div>
|
|
556
576
|
</div>
|
|
577
|
+
|
|
578
|
+
<button
|
|
579
|
+
type="button"
|
|
580
|
+
onClick={() => setActiveTab("fitting_room")}
|
|
581
|
+
className="w-full flex items-center justify-center gap-1.5 py-1.5 px-3 rounded-lg bg-cyan-500/10 hover:bg-cyan-500/20 border border-cyan-500/30 text-cyan-300 text-xs font-semibold cursor-pointer transition-all shadow-sm"
|
|
582
|
+
>
|
|
583
|
+
<Sparkles className="w-3.5 h-3.5 text-cyan-400" />
|
|
584
|
+
<span>Open 3D Fitting Room</span>
|
|
585
|
+
</button>
|
|
557
586
|
</div>
|
|
558
587
|
</aside>
|
|
559
588
|
|
|
@@ -564,10 +593,11 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
564
593
|
<div>
|
|
565
594
|
<div className="flex items-center gap-2">
|
|
566
595
|
<span className="text-xs font-mono font-bold px-2 py-0.5 rounded bg-[#007acc]/20 text-cyan-300 border border-[#007acc]/40">
|
|
567
|
-
CATALOG
|
|
596
|
+
CATALOG {TOTAL_CATALOG_COUNT}
|
|
568
597
|
</span>
|
|
569
598
|
<h1 className="text-base font-bold text-white flex items-center gap-2">
|
|
570
599
|
{activeTab === "all" && <Grid className="w-4 h-4 text-cyan-400" />}
|
|
600
|
+
{activeTab === "fitting_room" && <Sparkles className="w-4 h-4 text-cyan-400" />}
|
|
571
601
|
{activeTab === "themes" && <Palette className="w-4 h-4 text-purple-400" />}
|
|
572
602
|
{activeTab === "skins" && <Bot className="w-4 h-4 text-pink-400" />}
|
|
573
603
|
{activeTab === "props" && <Laptop className="w-4 h-4 text-emerald-400" />}
|
|
@@ -577,20 +607,22 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
577
607
|
{activeTab === "ambient" && <Volume2 className="w-4 h-4 text-cyan-400" />}
|
|
578
608
|
{activeTab === "donate" && <Coffee className="w-4 h-4 text-amber-400" />}
|
|
579
609
|
<span>
|
|
580
|
-
{activeTab === "all" &&
|
|
610
|
+
{activeTab === "all" && `All ${TOTAL_CATALOG_COUNT} Tech Items & 3D Effects`}
|
|
611
|
+
{activeTab === "fitting_room" && "Live Avatar Fitting Room & Sandbox"}
|
|
581
612
|
{activeTab === "themes" && "Office Themes & Wallpapers (10 Floor Styles)"}
|
|
582
|
-
{activeTab === "skins" && "Agent 3D Skins (
|
|
583
|
-
{activeTab === "props" && "Desk Props & Hardware (
|
|
584
|
-
{activeTab === "pets" && "Pets & Cyber Companions (
|
|
585
|
-
{activeTab === "auras" && "Auras & Character Effects (
|
|
586
|
-
{activeTab === "trophies" && "Trophies & Silicon Badges (
|
|
613
|
+
{activeTab === "skins" && "Agent 3D Skins (50 Curated Armor & Visor Models)"}
|
|
614
|
+
{activeTab === "props" && "Desk Props & Hardware (35 Curated Devices & Rigs)"}
|
|
615
|
+
{activeTab === "pets" && "Pets & Cyber Companions (21 Pets & Drones)"}
|
|
616
|
+
{activeTab === "auras" && "Auras & Character Effects (16 Energy Spectrums)"}
|
|
617
|
+
{activeTab === "trophies" && "Trophies & Silicon Badges (16 3D Medals)"}
|
|
587
618
|
{activeTab === "ambient" && "Lo-Fi Ambient Audio (6 Soundscapes)"}
|
|
588
619
|
{activeTab === "donate" && "Buy Me a Coffee (VietQR Bank Transfer)"}
|
|
589
620
|
</span>
|
|
590
621
|
</h1>
|
|
591
622
|
</div>
|
|
592
623
|
<p className="text-xs text-slate-400 mt-1">
|
|
593
|
-
{activeTab === "all" &&
|
|
624
|
+
{activeTab === "all" && `Collection of ${TOTAL_CATALOG_COUNT} high-precision 3D isometric items: cast shadows, directional lighting, and microchip details.`}
|
|
625
|
+
{activeTab === "fitting_room" && "Interactive 3D sandbox to mix skins, desk props, cyber pets, auras, and floor styles with live animated actions."}
|
|
594
626
|
{activeTab === "themes" && "Custom floor environments, neon gridlines, and ambient lighting for the 2D Virtual Office canvas."}
|
|
595
627
|
{activeTab === "skins" && "Customize chibi robot avatars for AI programming agents on the visual canvas."}
|
|
596
628
|
{activeTab === "props" && "Decorate workstations with dual displays, server racks, espresso machines, and cyber bonsai."}
|
|
@@ -633,7 +665,9 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
633
665
|
</div>
|
|
634
666
|
|
|
635
667
|
<span className="text-xs font-mono text-cyan-300 bg-[#202026] px-3 py-1 rounded-md border border-[#2f2f38]">
|
|
636
|
-
{activeTab === "
|
|
668
|
+
{activeTab === "fitting_room"
|
|
669
|
+
? "Live 3D Stage"
|
|
670
|
+
: activeTab === "ambient"
|
|
637
671
|
? `${(COSMETIC_CATALOG.soundscapes || []).length} Audio Tracks`
|
|
638
672
|
: activeTab === "donate"
|
|
639
673
|
? "3 Tiers"
|
|
@@ -655,13 +689,14 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
655
689
|
{/* Quick Category Tabs Bar */}
|
|
656
690
|
<div className="px-6 py-2 bg-[#1b1b20] border-b border-[#26262b] flex items-center gap-1.5 overflow-x-auto text-xs shrink-0">
|
|
657
691
|
{[
|
|
658
|
-
{ id: "all", label:
|
|
659
|
-
{ id: "
|
|
660
|
-
{ id: "
|
|
661
|
-
{ id: "
|
|
662
|
-
{ id: "
|
|
663
|
-
{ id: "
|
|
664
|
-
{ id: "
|
|
692
|
+
{ id: "all", label: `All (${TOTAL_CATALOG_COUNT})`, icon: Grid },
|
|
693
|
+
{ id: "fitting_room", label: "Fitting Room (3D)", icon: Sparkles },
|
|
694
|
+
{ id: "themes", label: `Themes (${(COSMETIC_CATALOG.officeThemes || []).length})`, icon: Palette },
|
|
695
|
+
{ id: "skins", label: `Skins (${(COSMETIC_CATALOG.skins || []).length})`, icon: Bot },
|
|
696
|
+
{ id: "props", label: `Props (${(COSMETIC_CATALOG.props || []).length})`, icon: Laptop },
|
|
697
|
+
{ id: "pets", label: `Pets (${(COSMETIC_CATALOG.pets || []).length})`, icon: Gift },
|
|
698
|
+
{ id: "auras", label: `Auras (${(COSMETIC_CATALOG.auras || []).length})`, icon: Sparkles },
|
|
699
|
+
{ id: "trophies", label: `Trophies (${(COSMETIC_CATALOG.trophies || []).length})`, icon: Trophy },
|
|
665
700
|
{ id: "ambient", label: "Ambient (6)", icon: Volume2 },
|
|
666
701
|
{ id: "donate", label: "VietQR Vault", icon: Coffee },
|
|
667
702
|
].map((cat) => {
|
|
@@ -688,6 +723,14 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
688
723
|
<div className="flex-1 overflow-y-auto p-4 sm:p-6">
|
|
689
724
|
<div className="max-w-7xl mx-auto space-y-6">
|
|
690
725
|
|
|
726
|
+
{/* TAB: LIVE FITTING ROOM & SANDBOX */}
|
|
727
|
+
{activeTab === "fitting_room" && (
|
|
728
|
+
<LiveFittingRoom
|
|
729
|
+
initialStoreState={storeState}
|
|
730
|
+
onEquipSuccess={(updated) => setStoreState(updated)}
|
|
731
|
+
/>
|
|
732
|
+
)}
|
|
733
|
+
|
|
691
734
|
{/* TAB: AMBIENT SOUNDSCAPES */}
|
|
692
735
|
{activeTab === "ambient" && (
|
|
693
736
|
<section className="space-y-4">
|
|
@@ -795,7 +838,7 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
795
838
|
<h2 className="text-xl font-bold text-white">Supporter Vault - Fuel the Developers</h2>
|
|
796
839
|
<p className="text-xs text-slate-300 leading-relaxed">
|
|
797
840
|
AGMon is built independently with high-quality open-source spirit.
|
|
798
|
-
Every donation via VietQR helps support server infrastructure, sustain development, and unlocks all
|
|
841
|
+
Every donation via VietQR helps support server infrastructure, sustain development, and unlocks all {TOTAL_CATALOG_COUNT} 3D isometric items.
|
|
799
842
|
</p>
|
|
800
843
|
</div>
|
|
801
844
|
</div>
|
|
@@ -934,8 +977,8 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
934
977
|
</section>
|
|
935
978
|
)}
|
|
936
979
|
|
|
937
|
-
{/* TAB: ITEM GRID (ALL, SKINS, PROPS, PETS, AURAS, TROPHIES) */}
|
|
938
|
-
{activeTab !== "ambient" && activeTab !== "donate" && (
|
|
980
|
+
{/* TAB: ITEM GRID (ALL, THEMES, SKINS, PROPS, PETS, AURAS, TROPHIES) */}
|
|
981
|
+
{activeTab !== "ambient" && activeTab !== "donate" && activeTab !== "fitting_room" && (
|
|
939
982
|
<section className="space-y-4">
|
|
940
983
|
{/* Items Grid */}
|
|
941
984
|
<div className={gridClasses}>
|
|
@@ -982,9 +1025,26 @@ export default function SupporterStoreView({ hideHeader = false, onClose = null
|
|
|
982
1025
|
|
|
983
1026
|
{/* Equip Action Bar */}
|
|
984
1027
|
<div className="mt-3 pt-2.5 border-t border-[#2a2a34] flex items-center justify-between">
|
|
985
|
-
<
|
|
986
|
-
|
|
987
|
-
|
|
1028
|
+
<div className="flex items-center gap-1.5">
|
|
1029
|
+
<span className="text-[10px] text-slate-500 uppercase font-mono font-bold">
|
|
1030
|
+
{isEquipped ? "EQUIPPED" : isUnlocked ? "UNLOCKED" : "LOCKED"}
|
|
1031
|
+
</span>
|
|
1032
|
+
<button
|
|
1033
|
+
type="button"
|
|
1034
|
+
onClick={() => {
|
|
1035
|
+
if (item.category === "skins") equipSkin(item.id);
|
|
1036
|
+
else if (item.category === "pets") equipPet(item.id);
|
|
1037
|
+
else if (item.category === "props") toggleProp(item.id);
|
|
1038
|
+
else if (item.category === "auras") equipAura(item.id);
|
|
1039
|
+
else if (item.category === "themes") equipOfficeTheme(item.id);
|
|
1040
|
+
setActiveTab("fitting_room");
|
|
1041
|
+
}}
|
|
1042
|
+
className="p-1 rounded hover:bg-cyan-500/20 text-slate-400 hover:text-cyan-300 transition-colors cursor-pointer"
|
|
1043
|
+
title="Test in 3D Fitting Room"
|
|
1044
|
+
>
|
|
1045
|
+
<Sparkles className="w-3.5 h-3.5" />
|
|
1046
|
+
</button>
|
|
1047
|
+
</div>
|
|
988
1048
|
|
|
989
1049
|
{isUnlocked ? (
|
|
990
1050
|
<button
|
|
@@ -69,19 +69,19 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
69
69
|
aria-modal="true"
|
|
70
70
|
className="fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm animate-in fade-in"
|
|
71
71
|
>
|
|
72
|
-
<div className="w-full max-w-2xl bg-[
|
|
72
|
+
<div className="w-full max-w-2xl bg-[var(--bg-editor)] border border-[var(--border-card)] rounded-xl shadow-2xl overflow-hidden flex flex-col text-[var(--text-main)] font-sans max-h-[85vh]">
|
|
73
73
|
{/* Header */}
|
|
74
|
-
<div className="h-[46px] min-h-[46px] bg-[
|
|
74
|
+
<div className="h-[46px] min-h-[46px] bg-[var(--bg-card)] border-b border-[var(--border-subtle)] px-4 flex items-center justify-between shrink-0 select-none">
|
|
75
75
|
<div className="flex items-center gap-2">
|
|
76
|
-
<Palette className="w-4 h-4 text-[
|
|
77
|
-
<h2 className="text-xs font-bold uppercase tracking-wider text-
|
|
76
|
+
<Palette className="w-4 h-4 text-[var(--accent-primary)]" />
|
|
77
|
+
<h2 className="text-xs font-bold uppercase tracking-wider text-[var(--text-bright)]">
|
|
78
78
|
Preferences: Theme & Typography (VS Code Settings)
|
|
79
79
|
</h2>
|
|
80
80
|
</div>
|
|
81
81
|
|
|
82
82
|
<button
|
|
83
83
|
onClick={onClose}
|
|
84
|
-
className="p-1 rounded text-
|
|
84
|
+
className="p-1 rounded text-[var(--text-muted)] hover:text-[var(--text-bright)] hover:bg-[var(--bg-hover)] transition-colors cursor-pointer"
|
|
85
85
|
title="Close (Escape)"
|
|
86
86
|
>
|
|
87
87
|
<X className="w-4 h-4" />
|
|
@@ -89,17 +89,17 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
89
89
|
</div>
|
|
90
90
|
|
|
91
91
|
{/* Tab Switcher */}
|
|
92
|
-
<div className="flex items-center gap-1 px-4 py-2 border-b border-[
|
|
92
|
+
<div className="flex items-center gap-1 px-4 py-2 border-b border-[var(--border-subtle)] bg-[var(--bg-card-inner)] shrink-0 select-none">
|
|
93
93
|
<button
|
|
94
94
|
type="button"
|
|
95
95
|
onClick={() => setActiveTab("themes")}
|
|
96
96
|
className={`flex items-center gap-1.5 px-3 py-1.5 rounded text-xs font-semibold transition-colors cursor-pointer ${
|
|
97
97
|
activeTab === "themes"
|
|
98
|
-
? "bg-[
|
|
99
|
-
: "text-
|
|
98
|
+
? "bg-[var(--bg-card)] text-[var(--text-bright)] border border-[var(--border-card)] shadow-xs"
|
|
99
|
+
: "text-[var(--text-muted)] hover:text-[var(--text-bright)]"
|
|
100
100
|
}`}
|
|
101
101
|
>
|
|
102
|
-
<Palette className="w-3.5 h-3.5 text-
|
|
102
|
+
<Palette className="w-3.5 h-3.5 text-[var(--accent-primary)]" />
|
|
103
103
|
<span>Color Themes ({AVAILABLE_THEMES.length})</span>
|
|
104
104
|
</button>
|
|
105
105
|
|
|
@@ -108,11 +108,11 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
108
108
|
onClick={() => setActiveTab("fonts")}
|
|
109
109
|
className={`flex items-center gap-1.5 px-3 py-1.5 rounded text-xs font-semibold transition-colors cursor-pointer ${
|
|
110
110
|
activeTab === "fonts"
|
|
111
|
-
? "bg-[
|
|
112
|
-
: "text-
|
|
111
|
+
? "bg-[var(--bg-card)] text-[var(--text-bright)] border border-[var(--border-card)] shadow-xs"
|
|
112
|
+
: "text-[var(--text-muted)] hover:text-[var(--text-bright)]"
|
|
113
113
|
}`}
|
|
114
114
|
>
|
|
115
|
-
<Type className="w-3.5 h-3.5 text-
|
|
115
|
+
<Type className="w-3.5 h-3.5 text-[var(--accent-secondary)]" />
|
|
116
116
|
<span>Typography & Fonts</span>
|
|
117
117
|
</button>
|
|
118
118
|
</div>
|
|
@@ -122,7 +122,7 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
122
122
|
{activeTab === "themes" ? (
|
|
123
123
|
/* TAB 1: COLOR THEMES */
|
|
124
124
|
<div className="space-y-3">
|
|
125
|
-
<div className="text-xs text-
|
|
125
|
+
<div className="text-xs text-[var(--text-muted)]">
|
|
126
126
|
Choose color theme for workbench, dialogs, sidebar, and toolbars:
|
|
127
127
|
</div>
|
|
128
128
|
|
|
@@ -135,29 +135,29 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
135
135
|
onClick={() => handleSelectTheme(th.id)}
|
|
136
136
|
className={`group relative p-3 rounded-lg border transition-all cursor-pointer flex flex-col justify-between space-y-2.5 ${
|
|
137
137
|
isSelected
|
|
138
|
-
? "bg-[
|
|
139
|
-
: "bg-[
|
|
138
|
+
? "bg-[var(--bg-card)] border-[var(--accent-primary)] shadow-md shadow-[var(--accent-primary)]/10 ring-1 ring-[var(--accent-primary)]/40"
|
|
139
|
+
: "bg-[var(--bg-card-inner)] border-[var(--border-card)] hover:border-[var(--accent-primary)]/50 hover:bg-[var(--bg-card)]"
|
|
140
140
|
}`}
|
|
141
141
|
>
|
|
142
142
|
<div className="flex items-center justify-between">
|
|
143
143
|
<div className="flex items-center gap-2">
|
|
144
|
-
<span className="font-bold text-xs text-
|
|
144
|
+
<span className="font-bold text-xs text-[var(--text-bright)]">
|
|
145
145
|
{th.name}
|
|
146
146
|
</span>
|
|
147
|
-
<span className="text-[9px] px-1.5 py-0.2 rounded border border-[
|
|
147
|
+
<span className="text-[9px] px-1.5 py-0.2 rounded border border-[var(--border-card)] text-[var(--text-muted)] uppercase font-mono bg-[var(--bg-card)]">
|
|
148
148
|
{th.category}
|
|
149
149
|
</span>
|
|
150
150
|
</div>
|
|
151
151
|
|
|
152
152
|
{isSelected && (
|
|
153
|
-
<div className="w-4 h-4 rounded-full bg-[
|
|
153
|
+
<div className="w-4 h-4 rounded-full bg-[var(--accent-primary)] text-[var(--text-on-accent,#ffffff)] flex items-center justify-center shrink-0">
|
|
154
154
|
<Check className="w-2.5 h-2.5" />
|
|
155
155
|
</div>
|
|
156
156
|
)}
|
|
157
157
|
</div>
|
|
158
158
|
|
|
159
159
|
{/* Swatch color preview bar */}
|
|
160
|
-
<div className="flex items-center gap-1 h-3 rounded overflow-hidden p-0.5 bg-black/40 border border-[
|
|
160
|
+
<div className="flex items-center gap-1 h-3 rounded overflow-hidden p-0.5 bg-black/10 dark:bg-black/40 border border-[var(--border-card)]">
|
|
161
161
|
<span
|
|
162
162
|
className="h-full flex-1 rounded-xs"
|
|
163
163
|
style={{ backgroundColor: th.colors.workbench }}
|
|
@@ -180,7 +180,7 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
180
180
|
/>
|
|
181
181
|
</div>
|
|
182
182
|
|
|
183
|
-
<p className="text-[11px] text-
|
|
183
|
+
<p className="text-[11px] text-[var(--text-muted)] leading-relaxed">
|
|
184
184
|
{th.description}
|
|
185
185
|
</p>
|
|
186
186
|
</div>
|
|
@@ -192,26 +192,26 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
192
192
|
/* TAB 2: TYPOGRAPHY & FONTS */
|
|
193
193
|
<div className="space-y-4 text-xs">
|
|
194
194
|
{/* UI Font */}
|
|
195
|
-
<div className="p-3 rounded-lg bg-[
|
|
195
|
+
<div className="p-3 rounded-lg bg-[var(--bg-card-inner)] border border-[var(--border-card)] space-y-2">
|
|
196
196
|
<div className="flex items-center justify-between">
|
|
197
|
-
<span className="font-bold text-
|
|
197
|
+
<span className="font-bold text-[var(--text-bright)] uppercase tracking-wider text-[11px]">
|
|
198
198
|
1. UI Font Family
|
|
199
199
|
</span>
|
|
200
|
-
<span className="text-[10px] text-
|
|
200
|
+
<span className="text-[10px] text-[var(--text-muted)] font-mono">--font-family-ui</span>
|
|
201
201
|
</div>
|
|
202
202
|
<select
|
|
203
203
|
value={settings.uiFont}
|
|
204
204
|
onChange={(e) => handleUpdateFont("uiFont", e.target.value)}
|
|
205
|
-
className="w-full bg-[
|
|
205
|
+
className="w-full bg-[var(--bg-card)] text-[var(--text-main)] border border-[var(--border-card)] rounded px-3 py-1.5 text-xs outline-none focus:border-[var(--accent-primary)] cursor-pointer"
|
|
206
206
|
>
|
|
207
207
|
{AVAILABLE_UI_FONTS.map((f) => (
|
|
208
|
-
<option key={f.id} value={f.id} className="bg-[
|
|
208
|
+
<option key={f.id} value={f.id} className="bg-[var(--bg-card)] text-[var(--text-main)]">
|
|
209
209
|
{f.name}
|
|
210
210
|
</option>
|
|
211
211
|
))}
|
|
212
212
|
</select>
|
|
213
213
|
<div
|
|
214
|
-
className="p-2 rounded bg-
|
|
214
|
+
className="p-2 rounded bg-[var(--bg-card)] border border-[var(--border-card)] text-[var(--text-main)] text-xs"
|
|
215
215
|
style={{ fontFamily: "var(--font-family-ui)" }}
|
|
216
216
|
>
|
|
217
217
|
UI Preview: Agent Factory - Realtime multi-agent activity and telemetry monitor.
|
|
@@ -219,26 +219,26 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
219
219
|
</div>
|
|
220
220
|
|
|
221
221
|
{/* Code Monospace Font */}
|
|
222
|
-
<div className="p-3 rounded-lg bg-[
|
|
222
|
+
<div className="p-3 rounded-lg bg-[var(--bg-card-inner)] border border-[var(--border-card)] space-y-2">
|
|
223
223
|
<div className="flex items-center justify-between">
|
|
224
|
-
<span className="font-bold text-
|
|
224
|
+
<span className="font-bold text-[var(--text-bright)] uppercase tracking-wider text-[11px]">
|
|
225
225
|
2. Monospace Font (Code & Console)
|
|
226
226
|
</span>
|
|
227
|
-
<span className="text-[10px] text-
|
|
227
|
+
<span className="text-[10px] text-[var(--text-muted)] font-mono">--font-family-mono</span>
|
|
228
228
|
</div>
|
|
229
229
|
<select
|
|
230
230
|
value={settings.codeFont}
|
|
231
231
|
onChange={(e) => handleUpdateFont("codeFont", e.target.value)}
|
|
232
|
-
className="w-full bg-[
|
|
232
|
+
className="w-full bg-[var(--bg-card)] text-[var(--text-main)] border border-[var(--border-card)] rounded px-3 py-1.5 text-xs outline-none focus:border-[var(--accent-primary)] cursor-pointer"
|
|
233
233
|
>
|
|
234
234
|
{AVAILABLE_CODE_FONTS.map((f) => (
|
|
235
|
-
<option key={f.id} value={f.id} className="bg-[
|
|
235
|
+
<option key={f.id} value={f.id} className="bg-[var(--bg-card)] text-[var(--text-main)]">
|
|
236
236
|
{f.name}
|
|
237
237
|
</option>
|
|
238
238
|
))}
|
|
239
239
|
</select>
|
|
240
240
|
<div
|
|
241
|
-
className="p-2 rounded bg-
|
|
241
|
+
className="p-2 rounded bg-[var(--bg-chat-code)] border border-[var(--border-card)] text-[var(--text-chat-code)] font-mono text-[11px] leading-relaxed"
|
|
242
242
|
style={{ fontFamily: "var(--font-family-mono)" }}
|
|
243
243
|
>
|
|
244
244
|
const agent = { id: "gemini-3.8-flash", tokens: 142857, state: "streaming" };
|
|
@@ -246,12 +246,12 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
246
246
|
</div>
|
|
247
247
|
|
|
248
248
|
{/* Font Size */}
|
|
249
|
-
<div className="p-3 rounded-lg bg-[
|
|
249
|
+
<div className="p-3 rounded-lg bg-[var(--bg-card-inner)] border border-[var(--border-card)] space-y-2">
|
|
250
250
|
<div className="flex items-center justify-between">
|
|
251
|
-
<span className="font-bold text-
|
|
251
|
+
<span className="font-bold text-[var(--text-bright)] uppercase tracking-wider text-[11px]">
|
|
252
252
|
3. Base Font Size
|
|
253
253
|
</span>
|
|
254
|
-
<span className="text-[10px] text-
|
|
254
|
+
<span className="text-[10px] text-[var(--text-muted)] font-mono">--font-size-ui</span>
|
|
255
255
|
</div>
|
|
256
256
|
<div className="grid grid-cols-2 sm:grid-cols-4 gap-2">
|
|
257
257
|
{AVAILABLE_FONT_SIZES.map((sz) => (
|
|
@@ -261,8 +261,8 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
261
261
|
onClick={() => handleUpdateFont("fontSize", sz.id)}
|
|
262
262
|
className={`p-2 rounded border text-xs font-semibold transition-colors cursor-pointer text-center ${
|
|
263
263
|
settings.fontSize === sz.id
|
|
264
|
-
? "bg-[
|
|
265
|
-
: "bg-[
|
|
264
|
+
? "bg-[var(--accent-primary)]/15 border-[var(--accent-primary)] text-[var(--accent-primary)] font-bold shadow-xs"
|
|
265
|
+
: "bg-[var(--bg-card)] border-[var(--border-card)] text-[var(--text-muted)] hover:text-[var(--text-bright)] hover:bg-[var(--bg-hover)]"
|
|
266
266
|
}`}
|
|
267
267
|
>
|
|
268
268
|
{sz.label}
|
|
@@ -275,10 +275,10 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
275
275
|
</div>
|
|
276
276
|
|
|
277
277
|
{/* Footer */}
|
|
278
|
-
<div className="h-[46px] min-h-[46px] bg-[
|
|
278
|
+
<div className="h-[46px] min-h-[46px] bg-[var(--bg-card)] border-t border-[var(--border-subtle)] px-4 flex items-center justify-between shrink-0 select-none">
|
|
279
279
|
<button
|
|
280
280
|
onClick={handleResetDefaults}
|
|
281
|
-
className="flex items-center gap-1.5 px-2.5 py-1 rounded bg-[
|
|
281
|
+
className="flex items-center gap-1.5 px-2.5 py-1 rounded bg-[var(--bg-card-inner)] hover:bg-[var(--bg-hover)] text-[var(--text-muted)] hover:text-[var(--text-bright)] border border-[var(--border-card)] text-xs transition-colors cursor-pointer"
|
|
282
282
|
title="Restore default settings"
|
|
283
283
|
>
|
|
284
284
|
<RotateCcw className="w-3.5 h-3.5" />
|
|
@@ -287,7 +287,7 @@ export default function ThemeSettingsModal({ isOpen = false, onClose, initialTab
|
|
|
287
287
|
|
|
288
288
|
<button
|
|
289
289
|
onClick={onClose}
|
|
290
|
-
className="px-4 py-1.5 rounded bg-[
|
|
290
|
+
className="px-4 py-1.5 rounded bg-[var(--accent-primary)] hover:opacity-90 text-[var(--text-on-accent,#ffffff)] text-xs font-semibold transition-colors cursor-pointer"
|
|
291
291
|
>
|
|
292
292
|
Done
|
|
293
293
|
</button>
|
|
@@ -9,13 +9,13 @@ export const buttonVariants = cva(
|
|
|
9
9
|
variants: {
|
|
10
10
|
variant: {
|
|
11
11
|
primary:
|
|
12
|
-
"bg-[
|
|
12
|
+
"bg-[var(--accent-primary)] hover:opacity-90 active:opacity-80 text-[var(--text-on-accent,#ffffff)] shadow-sm",
|
|
13
13
|
secondary:
|
|
14
|
-
"bg-[
|
|
14
|
+
"bg-[var(--bg-card-inner)] hover:bg-[var(--bg-hover)] active:opacity-80 text-[var(--text-main)] border border-[var(--border-card)]",
|
|
15
15
|
outline:
|
|
16
|
-
"bg-transparent hover:bg-[
|
|
16
|
+
"bg-transparent hover:bg-[var(--bg-hover)] active:opacity-80 text-[var(--text-main)] border border-[var(--border-card)]",
|
|
17
17
|
ghost:
|
|
18
|
-
"bg-transparent hover:bg-[
|
|
18
|
+
"bg-transparent hover:bg-[var(--bg-hover)] active:opacity-80 text-[var(--text-main)]",
|
|
19
19
|
danger:
|
|
20
20
|
"bg-[#c72e24] hover:bg-[#a0251d] active:bg-[#8a1f18] text-white shadow-sm",
|
|
21
21
|
success:
|
|
@@ -4,7 +4,7 @@ import { X } from "lucide-react";
|
|
|
4
4
|
import { cn } from "@/lib/utils";
|
|
5
5
|
|
|
6
6
|
export const inputVariants = cva(
|
|
7
|
-
"w-full bg-[
|
|
7
|
+
"w-full bg-[var(--bg-input,var(--bg-card-inner))] text-[var(--text-main)] placeholder:text-[var(--text-muted)] border border-[var(--border-card)] rounded-[3px] outline-none transition-colors duration-150 focus:border-[var(--accent-primary)] focus:ring-1 focus:ring-[var(--accent-primary)] disabled:opacity-60 disabled:cursor-not-allowed",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
inputSize: {
|
|
@@ -45,7 +45,7 @@ export const Modal = ({
|
|
|
45
45
|
>
|
|
46
46
|
<div
|
|
47
47
|
className={cn(
|
|
48
|
-
"relative w-full bg-[
|
|
48
|
+
"relative w-full bg-[var(--bg-editor)] border border-[var(--border-card)] rounded-md shadow-2xl flex flex-col max-h-[90vh] overflow-hidden text-[var(--text-main)]",
|
|
49
49
|
modalSizes[size],
|
|
50
50
|
className
|
|
51
51
|
)}
|
|
@@ -55,22 +55,22 @@ export const Modal = ({
|
|
|
55
55
|
>
|
|
56
56
|
{/* Header */}
|
|
57
57
|
{(title || description) && (
|
|
58
|
-
<div className="flex items-start justify-between px-4 py-3 border-b border-[
|
|
58
|
+
<div className="flex items-start justify-between px-4 py-3 border-b border-[var(--border-subtle)] bg-[var(--bg-card)]">
|
|
59
59
|
<div className="flex flex-col gap-0.5">
|
|
60
60
|
{title && (
|
|
61
|
-
<h3 className="text-[13px] font-semibold text-
|
|
61
|
+
<h3 className="text-[13px] font-semibold text-[var(--text-bright)] m-0 tracking-normal">
|
|
62
62
|
{title}
|
|
63
63
|
</h3>
|
|
64
64
|
)}
|
|
65
65
|
{description && (
|
|
66
|
-
<p className="text-[11px] text-[
|
|
66
|
+
<p className="text-[11px] text-[var(--text-muted)] m-0">{description}</p>
|
|
67
67
|
)}
|
|
68
68
|
</div>
|
|
69
69
|
<Button
|
|
70
70
|
variant="ghost"
|
|
71
71
|
size="icon-sm"
|
|
72
72
|
onClick={onClose}
|
|
73
|
-
className="text-[
|
|
73
|
+
className="text-[var(--text-muted)] hover:text-[var(--text-bright)] hover:bg-[var(--bg-hover)]"
|
|
74
74
|
title="Close (Esc)"
|
|
75
75
|
>
|
|
76
76
|
<X className="w-3.5 h-3.5" />
|
|
@@ -83,7 +83,7 @@ export const Modal = ({
|
|
|
83
83
|
|
|
84
84
|
{/* Footer */}
|
|
85
85
|
{footer && (
|
|
86
|
-
<div className="flex items-center justify-end gap-2 px-4 py-3 border-t border-[
|
|
86
|
+
<div className="flex items-center justify-end gap-2 px-4 py-3 border-t border-[var(--border-subtle)] bg-[var(--bg-card)]">
|
|
87
87
|
{footer}
|
|
88
88
|
</div>
|
|
89
89
|
)}
|
|
@@ -4,7 +4,7 @@ import { ChevronDown } from "lucide-react";
|
|
|
4
4
|
import { cn } from "@/lib/utils";
|
|
5
5
|
|
|
6
6
|
export const selectVariants = cva(
|
|
7
|
-
"w-full appearance-none bg-[
|
|
7
|
+
"w-full appearance-none bg-[var(--bg-input,var(--bg-card-inner))] text-[var(--text-main)] border border-[var(--border-card)] rounded-[3px] outline-none transition-colors duration-150 focus:border-[var(--accent-primary)] focus:ring-1 focus:ring-[var(--accent-primary)] disabled:opacity-60 disabled:cursor-not-allowed cursor-pointer pr-7",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
selectSize: {
|
|
@@ -55,14 +55,14 @@ export const Select = React.forwardRef(
|
|
|
55
55
|
key={String(opt.value)}
|
|
56
56
|
value={opt.value}
|
|
57
57
|
disabled={opt.disabled}
|
|
58
|
-
className="bg-[
|
|
58
|
+
className="bg-[var(--bg-card)] text-[var(--text-main)] py-1"
|
|
59
59
|
>
|
|
60
60
|
{opt.label}
|
|
61
61
|
</option>
|
|
62
62
|
))
|
|
63
63
|
: children}
|
|
64
64
|
</select>
|
|
65
|
-
<div className="absolute right-2 flex items-center pointer-events-none text-[
|
|
65
|
+
<div className="absolute right-2 flex items-center pointer-events-none text-[var(--text-muted)]">
|
|
66
66
|
<ChevronDown className="w-3.5 h-3.5" />
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|