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
|
@@ -144,56 +144,569 @@ function RenderChibiAgent3D({ x = 12, y = 20, scale = 0.85, accentColor = "#00f0
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
// ----------------------------------------------------------------------------
|
|
147
|
-
//
|
|
147
|
+
// 3D DISTINCT STAFF TORSO SILHOUETTES & UNIFORMS (5 ARCHETYPES)
|
|
148
|
+
// ----------------------------------------------------------------------------
|
|
149
|
+
function Render3DStaffTorso({ archetype, color, secondaryColor = "#111827", accentColor = "#ffffff", gradId }) {
|
|
150
|
+
if (archetype === "mecha_pilot") {
|
|
151
|
+
return (
|
|
152
|
+
<g id="staff-3d-mecha-pilot">
|
|
153
|
+
{/* Heavy Armored Exoskeleton Vest */}
|
|
154
|
+
<polygon points="26,54 74,54 67,76 33,76" fill="#18181b" stroke={color} strokeWidth="1.6" />
|
|
155
|
+
{/* Armored Shoulder Pauldrons */}
|
|
156
|
+
<polygon points="22,54 30,52 28,62 20,62" fill="#27272a" stroke={color} strokeWidth="1" />
|
|
157
|
+
<polygon points="78,54 70,52 72,62 80,62" fill="#27272a" stroke={color} strokeWidth="1" />
|
|
158
|
+
{/* Industrial Hazard Chevrons */}
|
|
159
|
+
<polygon points="36,57 41,57 37,62 32,62" fill="#eab308" />
|
|
160
|
+
<polygon points="43,57 48,57 44,62 39,62" fill="#18181b" />
|
|
161
|
+
<polygon points="52,57 57,57 53,62 48,62" fill="#eab308" />
|
|
162
|
+
<polygon points="59,57 64,57 60,62 55,62" fill="#18181b" />
|
|
163
|
+
{/* Heavy Duty Harness Straps */}
|
|
164
|
+
<line x1="38" y1="54" x2="39" y2="76" stroke={color} strokeWidth="1.6" />
|
|
165
|
+
<line x1="62" y1="54" x2="61" y2="76" stroke={color} strokeWidth="1.6" />
|
|
166
|
+
{/* Central Fusion Core with Protective Cage */}
|
|
167
|
+
<circle cx="50" cy="67" r="4.5" fill="#09090b" stroke={color} strokeWidth="1.2" />
|
|
168
|
+
<circle cx="50" cy="67" r="2.5" fill={color} />
|
|
169
|
+
<line x1="46" y1="67" x2="54" y2="67" stroke="#ffffff" strokeWidth="0.8" />
|
|
170
|
+
<line x1="50" y1="63" x2="50" y2="71" stroke="#ffffff" strokeWidth="0.8" />
|
|
171
|
+
</g>
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (archetype === "stealth_ninja") {
|
|
176
|
+
return (
|
|
177
|
+
<g id="staff-3d-stealth-ninja">
|
|
178
|
+
{/* Form-Fitting Shinobi Gi */}
|
|
179
|
+
<polygon points="31,54 69,54 63,74 37,74" fill="#090d16" stroke={color} strokeWidth="1.4" />
|
|
180
|
+
{/* Crossed Kimono Collar */}
|
|
181
|
+
<line x1="32" y1="54" x2="55" y2="66" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
|
|
182
|
+
<line x1="68" y1="54" x2="48" y2="66" stroke={color} strokeWidth="1.4" strokeLinecap="round" opacity="0.6" />
|
|
183
|
+
{/* Diagonal Tactical Sash */}
|
|
184
|
+
<polygon points="32,55 36,54 62,72 58,74" fill={color} opacity="0.9" />
|
|
185
|
+
{/* Stealth Kunai Sheath */}
|
|
186
|
+
<rect x="44" y="60" width="10" height="3" rx="1" fill="#1e293b" stroke="#ffffff" strokeWidth="0.6" transform="rotate(-30 49 61.5)" />
|
|
187
|
+
{/* Tied Fabric Obi Waist Sash with Hanging Tails */}
|
|
188
|
+
<rect x="36" y="69" width="28" height="5" rx="1.5" fill="#1e1b4b" stroke={color} strokeWidth="1" />
|
|
189
|
+
<path d="M 52 73 Q 54 78 53 82 Q 50 78 52 73" fill={color} />
|
|
190
|
+
</g>
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (archetype === "matrix_hacker") {
|
|
195
|
+
return (
|
|
196
|
+
<g id="staff-3d-matrix-hacker">
|
|
197
|
+
{/* Baggy Slouchy Hoodie Body */}
|
|
198
|
+
<rect x="26" y="54" width="48" height="21" rx="6" fill="#121217" stroke={color} strokeWidth="1.5" />
|
|
199
|
+
{/* Draped Neck Cowl */}
|
|
200
|
+
<path d="M 30 53 Q 50 58 70 53 Q 62 61 50 61 Q 38 61 30 53 Z" fill="#1f1f28" stroke={color} strokeWidth="1" />
|
|
201
|
+
{/* Hanging Drawstrings with Metal Aglets */}
|
|
202
|
+
<path d="M 44 59 Q 42 66 45 71" stroke="#ffffff" strokeWidth="1.2" fill="none" strokeLinecap="round" />
|
|
203
|
+
<rect x="43.5" y="70" width="2.5" height="3.5" rx="0.5" fill={color} />
|
|
204
|
+
<path d="M 56 59 Q 58 66 55 71" stroke="#ffffff" strokeWidth="1.2" fill="none" strokeLinecap="round" />
|
|
205
|
+
<rect x="54" y="70" width="2.5" height="3.5" rx="0.5" fill={color} />
|
|
206
|
+
{/* Kangaroo Front Pouch Pocket */}
|
|
207
|
+
<path d="M 35 66 L 65 66 L 62 73 L 38 73 Z" fill="#09090d" stroke="#27272a" strokeWidth="0.8" />
|
|
208
|
+
<line x1="36" y1="66" x2="38" y2="70" stroke={color} strokeWidth="1" />
|
|
209
|
+
<line x1="64" y1="66" x2="62" y2="70" stroke={color} strokeWidth="1" />
|
|
210
|
+
{/* Glitch Barcode Patch */}
|
|
211
|
+
<g transform="translate(56, 60)">
|
|
212
|
+
<rect x="0" y="0" width="8" height="4" fill="#000000" stroke={accentColor} strokeWidth="0.6" />
|
|
213
|
+
<line x1="2" y1="1" x2="2" y2="3" stroke={color} strokeWidth="0.6" />
|
|
214
|
+
<line x1="4" y1="1" x2="4" y2="3" stroke={color} strokeWidth="1" />
|
|
215
|
+
<line x1="6" y1="1" x2="6" y2="3" stroke={color} strokeWidth="0.6" />
|
|
216
|
+
</g>
|
|
217
|
+
</g>
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (archetype === "celestial_astro") {
|
|
222
|
+
return (
|
|
223
|
+
<g id="staff-3d-celestial-astro">
|
|
224
|
+
{/* Streamlined Flight Suit Body */}
|
|
225
|
+
<polygon points="28,54 72,54 66,74 34,74" fill="#f1f5f9" stroke={color} strokeWidth="1.4" />
|
|
226
|
+
{/* Hermetic Neck Ring */}
|
|
227
|
+
<rect x="36" y="52" width="28" height="4" rx="1.5" fill="#334155" stroke={color} strokeWidth="1" />
|
|
228
|
+
{/* Gold Command Rank Epaulets */}
|
|
229
|
+
<rect x="24" y="53" width="7" height="4" rx="0.8" fill="#f59e0b" stroke="#78350f" strokeWidth="0.6" />
|
|
230
|
+
<rect x="69" y="53" width="7" height="4" rx="0.8" fill="#f59e0b" stroke="#78350f" strokeWidth="0.6" />
|
|
231
|
+
{/* Dual Pressure Dials with Conduit */}
|
|
232
|
+
<circle cx="44" cy="65" r="3" fill="#0f172a" stroke={color} strokeWidth="1" />
|
|
233
|
+
<circle cx="44" cy="65" r="1.2" fill="#22c55e" />
|
|
234
|
+
<circle cx="56" cy="65" r="3" fill="#0f172a" stroke={color} strokeWidth="1" />
|
|
235
|
+
<circle cx="56" cy="65" r="1.2" fill="#38bdf8" />
|
|
236
|
+
<path d="M 47 65 Q 50 68 53 65" fill="none" stroke={color} strokeWidth="1.2" />
|
|
237
|
+
{/* Mission Patch Insignia */}
|
|
238
|
+
<polygon points="40,58 45,58 42.5,62" fill={color} stroke="#ffffff" strokeWidth="0.6" />
|
|
239
|
+
<ellipse cx="42.5" cy="60" rx="3.5" ry="1.2" fill="none" stroke="#f59e0b" strokeWidth="0.6" transform="rotate(-20 42.5 60)" />
|
|
240
|
+
</g>
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Default Cyber Suit (Corporate Executive)
|
|
245
|
+
return (
|
|
246
|
+
<g id="staff-3d-cyber-suit">
|
|
247
|
+
<polygon points="28,54 72,54 65,74 35,74" fill={`url(#${gradId}-left)`} stroke={color} strokeWidth="1.4" />
|
|
248
|
+
<polygon points="30,54 44,66 38,66" fill="#090d16" stroke={color} strokeWidth="0.8" />
|
|
249
|
+
<polygon points="70,54 56,66 62,66" fill="#090d16" stroke={color} strokeWidth="0.8" />
|
|
250
|
+
<line x1="50" y1="54" x2="50" y2="70" stroke={color} strokeWidth="1.2" />
|
|
251
|
+
<path d="M 46 54 Q 50 63 54 54" stroke={accentColor} strokeWidth="1" fill="none" opacity="0.85" />
|
|
252
|
+
<rect x="46" y="61" width="8" height="10" rx="1" fill="#070a12" stroke={color} strokeWidth="0.8" />
|
|
253
|
+
<rect x="47.5" y="62.5" width="5" height="3" fill={color} />
|
|
254
|
+
<line x1="47.5" y1="67" x2="52.5" y2="67" stroke="#ffffff" strokeWidth="0.6" />
|
|
255
|
+
<rect x="47" y="71" width="6" height="3.5" rx="0.8" fill="#1e293b" stroke={color} strokeWidth="0.8" />
|
|
256
|
+
</g>
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// ----------------------------------------------------------------------------
|
|
261
|
+
// 1. 3D AGENT SKINS (50 CURATED ICONIC MODELS)
|
|
148
262
|
// ----------------------------------------------------------------------------
|
|
149
263
|
function Render3DSkin({ item, gradId }) {
|
|
150
|
-
const { name, color, archetype } = item;
|
|
264
|
+
const { name, color, archetype, variant = "tactical_visor", secondaryColor = "#111827", accentColor = "#ffffff" } = item;
|
|
151
265
|
|
|
152
266
|
let headgear = null;
|
|
153
|
-
let visorExtra = null;
|
|
154
267
|
|
|
155
|
-
|
|
268
|
+
// 1. CYBER SUIT VARIANTS (10)
|
|
269
|
+
if (variant === "tactical_visor") {
|
|
156
270
|
headgear = (
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
<line x1="
|
|
160
|
-
<
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
</>
|
|
271
|
+
<g>
|
|
272
|
+
<polygon points="40,8 60,8 55,2 45,2" fill={color} />
|
|
273
|
+
<line x1="50" y1="2" x2="50" y2="8" stroke={accentColor} strokeWidth="1.5" />
|
|
274
|
+
<polygon points="18,24 10,12 18,18" fill={color} />
|
|
275
|
+
<polygon points="82,24 90,12 82,18" fill={color} />
|
|
276
|
+
</g>
|
|
164
277
|
);
|
|
165
|
-
} else if (
|
|
278
|
+
} else if (variant === "laser_scout") {
|
|
166
279
|
headgear = (
|
|
167
|
-
|
|
168
|
-
|
|
280
|
+
<g>
|
|
281
|
+
<circle cx="60" cy="34" r="8" fill="none" stroke={color} strokeWidth="1.8" />
|
|
282
|
+
<line x1="60" y1="22" x2="60" y2="46" stroke={color} strokeWidth="1" strokeDasharray="1 2" />
|
|
283
|
+
<line x1="48" y1="34" x2="72" y2="34" stroke={color} strokeWidth="1" strokeDasharray="1 2" />
|
|
284
|
+
<circle cx="60" cy="34" r="2.5" fill="#ff0000" />
|
|
285
|
+
</g>
|
|
286
|
+
);
|
|
287
|
+
} else if (variant === "riot_shield") {
|
|
288
|
+
headgear = (
|
|
289
|
+
<g>
|
|
290
|
+
<rect x="22" y="18" width="56" height="10" rx="3" fill="#181824" stroke={color} strokeWidth="1.8" />
|
|
291
|
+
<circle cx="32" cy="23" r="2.5" fill={accentColor} />
|
|
292
|
+
<circle cx="68" cy="23" r="2.5" fill={accentColor} />
|
|
293
|
+
</g>
|
|
294
|
+
);
|
|
295
|
+
} else if (variant === "cyber_horns") {
|
|
296
|
+
headgear = (
|
|
297
|
+
<g>
|
|
298
|
+
<polygon points="28,20 16,2 34,14" fill={color} stroke={secondaryColor} strokeWidth="1" />
|
|
299
|
+
<polygon points="72,20 84,2 66,14" fill={color} stroke={secondaryColor} strokeWidth="1" />
|
|
300
|
+
<line x1="30" y1="16" x2="22" y2="6" stroke={accentColor} strokeWidth="1.5" />
|
|
301
|
+
<line x1="70" y1="16" x2="78" y2="6" stroke={accentColor} strokeWidth="1.5" />
|
|
302
|
+
</g>
|
|
303
|
+
);
|
|
304
|
+
} else if (variant === "crown_radiator") {
|
|
305
|
+
headgear = (
|
|
306
|
+
<g fill={color}>
|
|
307
|
+
<polygon points="32,18 36,4 42,16" />
|
|
308
|
+
<polygon points="46,14 50,0 54,14" />
|
|
309
|
+
<polygon points="58,16 64,4 68,18" />
|
|
310
|
+
<circle cx="50" cy="18" r="3" fill={accentColor} />
|
|
311
|
+
</g>
|
|
312
|
+
);
|
|
313
|
+
} else if (variant === "gas_respirator") {
|
|
314
|
+
headgear = (
|
|
315
|
+
<g>
|
|
316
|
+
<circle cx="34" cy="46" r="7" fill="#181824" stroke={color} strokeWidth="1.6" />
|
|
317
|
+
<circle cx="66" cy="46" r="7" fill="#181824" stroke={color} strokeWidth="1.6" />
|
|
318
|
+
<circle cx="34" cy="46" r="3" fill={color} />
|
|
319
|
+
<circle cx="66" cy="46" r="3" fill={color} />
|
|
320
|
+
<rect x="42" y="44" width="16" height="6" rx="2" fill="#0f0f18" stroke={color} strokeWidth="1" />
|
|
321
|
+
</g>
|
|
322
|
+
);
|
|
323
|
+
} else if (variant === "prism_goggles") {
|
|
324
|
+
headgear = (
|
|
325
|
+
<g>
|
|
326
|
+
<polygon points="30,28 40,24 48,28 48,40 40,44 30,40" fill="#0c4a6e" stroke={color} strokeWidth="1.8" />
|
|
327
|
+
<polygon points="52,28 60,24 70,28 70,40 60,44 52,40" fill="#0c4a6e" stroke={color} strokeWidth="1.8" />
|
|
328
|
+
<circle cx="39" cy="34" r="3" fill={accentColor} />
|
|
329
|
+
<circle cx="61" cy="34" r="3" fill={accentColor} />
|
|
330
|
+
</g>
|
|
331
|
+
);
|
|
332
|
+
} else if (variant === "samurai_crest") {
|
|
333
|
+
headgear = (
|
|
334
|
+
<g>
|
|
335
|
+
<path d="M 24 18 Q 50 -6 76 18 Q 50 6 24 18 Z" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
336
|
+
<circle cx="50" cy="10" r="3.5" fill={accentColor} />
|
|
337
|
+
</g>
|
|
338
|
+
);
|
|
339
|
+
} else if (variant === "overdrive_vents") {
|
|
340
|
+
headgear = (
|
|
341
|
+
<g strokeLinecap="round">
|
|
342
|
+
<line x1="28" y1="16" x2="16" y2="2" stroke={color} strokeWidth="3.5" />
|
|
343
|
+
<line x1="72" y1="16" x2="84" y2="2" stroke={color} strokeWidth="3.5" />
|
|
344
|
+
<line x1="34" y1="18" x2="26" y2="6" stroke={accentColor} strokeWidth="2" />
|
|
345
|
+
<line x1="66" y1="18" x2="74" y2="6" stroke={accentColor} strokeWidth="2" />
|
|
346
|
+
</g>
|
|
347
|
+
);
|
|
348
|
+
} else if (variant === "holo_shroud") {
|
|
349
|
+
headgear = (
|
|
350
|
+
<g>
|
|
351
|
+
<ellipse cx="50" cy="18" rx="34" ry="14" fill="none" stroke={color} strokeWidth="1.8" strokeDasharray="5 3" />
|
|
352
|
+
<circle cx="50" cy="4" r="4" fill={accentColor} />
|
|
353
|
+
</g>
|
|
354
|
+
);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// 2. MECHA PILOT VARIANTS (10)
|
|
358
|
+
else if (variant === "v_fin") {
|
|
359
|
+
headgear = (
|
|
360
|
+
<g>
|
|
361
|
+
<polygon points="20,-2 26,-6 50,14 74,-6 80,-2 50,20" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
362
|
+
<polygon points="46,18 50,10 54,18 50,22" fill="#ef4444" />
|
|
363
|
+
</g>
|
|
364
|
+
);
|
|
365
|
+
} else if (variant === "blast_shield") {
|
|
366
|
+
headgear = (
|
|
367
|
+
<g>
|
|
368
|
+
<rect x="22" y="22" width="56" height="18" rx="3" fill="#0f172a" stroke={color} strokeWidth="2" />
|
|
369
|
+
<circle cx="28" cy="8" r="4" fill="#fde047" stroke={color} strokeWidth="1.5" />
|
|
370
|
+
<circle cx="72" cy="8" r="4" fill="#fde047" stroke={color} strokeWidth="1.5" />
|
|
169
371
|
<rect x="8" y="48" width="16" height="12" rx="3" fill="#1a1a26" stroke={color} strokeWidth="1.5" />
|
|
170
372
|
<rect x="76" y="48" width="16" height="12" rx="3" fill="#1a1a26" stroke={color} strokeWidth="1.5" />
|
|
171
|
-
|
|
172
|
-
<line x1="30" y1="12" x2="22" y2="2" stroke={color} strokeWidth="2" strokeLinecap="round" />
|
|
173
|
-
<circle cx="22" cy="2" r="2.5" fill={color} />
|
|
174
|
-
<line x1="70" y1="12" x2="78" y2="2" stroke={color} strokeWidth="2" strokeLinecap="round" />
|
|
175
|
-
<circle cx="78" cy="2" r="2.5" fill={color} />
|
|
176
|
-
</>
|
|
373
|
+
</g>
|
|
177
374
|
);
|
|
178
|
-
} else if (
|
|
375
|
+
} else if (variant === "eva_horn") {
|
|
179
376
|
headgear = (
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
<
|
|
183
|
-
<
|
|
184
|
-
|
|
377
|
+
<g>
|
|
378
|
+
<polygon points="47,18 50,-14 53,18" fill={color} stroke={secondaryColor} strokeWidth="1" />
|
|
379
|
+
<rect x="12" y="32" width="6" height="24" rx="2" fill={color} stroke={secondaryColor} strokeWidth="1" />
|
|
380
|
+
<rect x="82" y="32" width="6" height="24" rx="2" fill={color} stroke={secondaryColor} strokeWidth="1" />
|
|
381
|
+
</g>
|
|
185
382
|
);
|
|
186
|
-
} else if (
|
|
383
|
+
} else if (variant === "cage_grille") {
|
|
187
384
|
headgear = (
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
<
|
|
191
|
-
|
|
192
|
-
<
|
|
193
|
-
<
|
|
194
|
-
<
|
|
195
|
-
<
|
|
196
|
-
|
|
385
|
+
<g>
|
|
386
|
+
<rect x="30" y="30" width="40" height="20" rx="3" fill="#18181b" stroke={color} strokeWidth="1.8" />
|
|
387
|
+
<line x1="38" y1="30" x2="38" y2="50" stroke={color} strokeWidth="1.5" />
|
|
388
|
+
<line x1="46" y1="30" x2="46" y2="50" stroke={color} strokeWidth="1.5" />
|
|
389
|
+
<line x1="54" y1="30" x2="54" y2="50" stroke={color} strokeWidth="1.5" />
|
|
390
|
+
<line x1="62" y1="30" x2="62" y2="50" stroke={color} strokeWidth="1.5" />
|
|
391
|
+
<rect x="22" y="-2" width="6" height="22" rx="1" fill="#27272a" stroke={color} strokeWidth="1" />
|
|
392
|
+
<rect x="72" y="-2" width="6" height="22" rx="1" fill="#27272a" stroke={color} strokeWidth="1" />
|
|
393
|
+
</g>
|
|
394
|
+
);
|
|
395
|
+
} else if (variant === "missile_pod") {
|
|
396
|
+
headgear = (
|
|
397
|
+
<g>
|
|
398
|
+
<rect x="6" y="38" width="14" height="18" rx="3" fill="#1c1917" stroke={color} strokeWidth="1.5" />
|
|
399
|
+
<circle cx="13" cy="44" r="2" fill="#ef4444" />
|
|
400
|
+
<circle cx="13" cy="50" r="2" fill="#ef4444" />
|
|
401
|
+
<rect x="80" y="38" width="14" height="18" rx="3" fill="#1c1917" stroke={color} strokeWidth="1.5" />
|
|
402
|
+
<circle cx="87" cy="44" r="2" fill="#ef4444" />
|
|
403
|
+
<circle cx="87" cy="50" r="2" fill="#ef4444" />
|
|
404
|
+
</g>
|
|
405
|
+
);
|
|
406
|
+
} else if (variant === "quad_array") {
|
|
407
|
+
headgear = (
|
|
408
|
+
<g stroke={color} strokeWidth="2">
|
|
409
|
+
<line x1="24" y1="18" x2="16" y2="-4" />
|
|
410
|
+
<line x1="36" y1="14" x2="32" y2="-8" />
|
|
411
|
+
<line x1="64" y1="14" x2="68" y2="-8" />
|
|
412
|
+
<line x1="76" y1="18" x2="84" y2="-4" />
|
|
413
|
+
<circle cx="16" cy="-4" r="2.5" fill={accentColor} stroke="none" />
|
|
414
|
+
<circle cx="32" cy="-8" r="2.5" fill={accentColor} stroke="none" />
|
|
415
|
+
<circle cx="68" cy="-8" r="2.5" fill={accentColor} stroke="none" />
|
|
416
|
+
<circle cx="84" cy="-4" r="2.5" fill={accentColor} stroke="none" />
|
|
417
|
+
</g>
|
|
418
|
+
);
|
|
419
|
+
} else if (variant === "halo_shield") {
|
|
420
|
+
headgear = (
|
|
421
|
+
<g>
|
|
422
|
+
<polygon points="6,44 14,38 22,44 22,54 14,60 6,54" fill="#064e3b" stroke={color} strokeWidth="1.8" />
|
|
423
|
+
<polygon points="78,44 86,38 94,44 94,54 86,60 78,54" fill="#064e3b" stroke={color} strokeWidth="1.8" />
|
|
424
|
+
</g>
|
|
425
|
+
);
|
|
426
|
+
} else if (variant === "ram_horns") {
|
|
427
|
+
headgear = (
|
|
428
|
+
<g>
|
|
429
|
+
<path d="M 28 16 C 6 2, 8 -16, 28 -10 C 20 -4, 20 8, 34 16 Z" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
430
|
+
<path d="M 72 16 C 94 2, 92 -16, 72 -10 C 80 -4, 80 8, 66 16 Z" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
431
|
+
</g>
|
|
432
|
+
);
|
|
433
|
+
} else if (variant === "radar_dish") {
|
|
434
|
+
headgear = (
|
|
435
|
+
<g>
|
|
436
|
+
<ellipse cx="20" cy="2" rx="9" ry="16" fill="#18181b" stroke={color} strokeWidth="2" transform="rotate(-25 20 2)" />
|
|
437
|
+
<circle cx="20" cy="2" r="3" fill={accentColor} />
|
|
438
|
+
</g>
|
|
439
|
+
);
|
|
440
|
+
} else if (variant === "hyper_wings") {
|
|
441
|
+
headgear = (
|
|
442
|
+
<g>
|
|
443
|
+
<polygon points="20,44 -2,22 10,54" fill={color} stroke={secondaryColor} strokeWidth="1.5" />
|
|
444
|
+
<polygon points="80,44 102,22 90,54" fill={color} stroke={secondaryColor} strokeWidth="1.5" />
|
|
445
|
+
</g>
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// 3. STEALTH NINJA VARIANTS (10)
|
|
450
|
+
else if (variant === "flowing_headband") {
|
|
451
|
+
headgear = (
|
|
452
|
+
<g>
|
|
453
|
+
<line x1="18" y1="52" x2="82" y2="12" stroke="#334155" strokeWidth="3" strokeLinecap="round" />
|
|
454
|
+
<line x1="22" y1="48" x2="80" y2="14" stroke={color} strokeWidth="1.5" strokeLinecap="round" opacity="0.8" />
|
|
455
|
+
<path d="M 74 32 Q 90 26 96 42 Q 84 38 72 36" fill={color} opacity="0.9" />
|
|
456
|
+
</g>
|
|
457
|
+
);
|
|
458
|
+
} else if (variant === "tactical_cowl") {
|
|
459
|
+
headgear = (
|
|
460
|
+
<g>
|
|
461
|
+
<path d="M 22 24 Q 50 14 78 24 L 74 52 Q 50 60 26 52 Z" fill="#0f172a" stroke={color} strokeWidth="1.6" opacity="0.85" />
|
|
462
|
+
<circle cx="58" cy="34" r="6" fill="none" stroke="#22c55e" strokeWidth="2" />
|
|
463
|
+
<circle cx="58" cy="34" r="2" fill="#22c55e" />
|
|
464
|
+
</g>
|
|
465
|
+
);
|
|
466
|
+
} else if (variant === "oni_mask") {
|
|
467
|
+
headgear = (
|
|
468
|
+
<g>
|
|
469
|
+
<polygon points="30,16 18,-4 34,8" fill="#ef4444" stroke="#450a0a" strokeWidth="1.2" />
|
|
470
|
+
<polygon points="70,16 82,-4 66,8" fill="#ef4444" stroke="#450a0a" strokeWidth="1.2" />
|
|
471
|
+
<path d="M 32 44 L 40 50 L 46 44 L 50 48 L 54 44 L 60 50 L 68 44 L 62 56 L 38 56 Z" fill="#ffffff" stroke={color} strokeWidth="1.2" />
|
|
472
|
+
</g>
|
|
473
|
+
);
|
|
474
|
+
} else if (variant === "kitsune_ears") {
|
|
475
|
+
headgear = (
|
|
476
|
+
<g>
|
|
477
|
+
<polygon points="22,18 32,-4 42,12" fill="#1e2430" />
|
|
478
|
+
<polygon points="25,16 32,-1 39,12" fill={color} />
|
|
479
|
+
<polygon points="58,12 68,-4 78,18" fill="#1e2430" />
|
|
480
|
+
<polygon points="61,12 68,-1 75,16" fill={color} />
|
|
481
|
+
<line x1="36" y1="42" x2="22" y2="40" stroke={color} strokeWidth="1.5" />
|
|
482
|
+
<line x1="64" y1="42" x2="78" y2="40" stroke={color} strokeWidth="1.5" />
|
|
483
|
+
</g>
|
|
484
|
+
);
|
|
485
|
+
} else if (variant === "conical_kasa") {
|
|
486
|
+
headgear = (
|
|
487
|
+
<g>
|
|
488
|
+
<polygon points="6,24 50,-8 94,24" fill="#18181b" stroke={color} strokeWidth="2" />
|
|
489
|
+
<line x1="6" y1="24" x2="94" y2="24" stroke={accentColor} strokeWidth="3" />
|
|
490
|
+
</g>
|
|
491
|
+
);
|
|
492
|
+
} else if (variant === "twin_katanas") {
|
|
493
|
+
headgear = (
|
|
494
|
+
<g strokeLinecap="round">
|
|
495
|
+
<line x1="16" y1="56" x2="84" y2="-4" stroke="#475569" strokeWidth="3.5" />
|
|
496
|
+
<line x1="20" y1="52" x2="82" y2="-2" stroke={color} strokeWidth="2" />
|
|
497
|
+
<line x1="84" y1="56" x2="16" y2="-4" stroke="#475569" strokeWidth="3.5" />
|
|
498
|
+
<line x1="80" y1="52" x2="18" y2="-2" stroke={color} strokeWidth="2" />
|
|
499
|
+
</g>
|
|
500
|
+
);
|
|
501
|
+
} else if (variant === "tengu_beak") {
|
|
502
|
+
headgear = (
|
|
503
|
+
<g>
|
|
504
|
+
<polygon points="36,42 50,58 64,42 50,46" fill="#0f172a" stroke={color} strokeWidth="1.8" />
|
|
505
|
+
</g>
|
|
506
|
+
);
|
|
507
|
+
} else if (variant === "veil_shroud") {
|
|
508
|
+
headgear = (
|
|
509
|
+
<g>
|
|
510
|
+
<path d="M 22 30 Q 50 18 78 30 L 74 54 Q 50 64 26 54 Z" fill="#0f172a" opacity="0.85" stroke={color} strokeWidth="1.5" strokeDasharray="4 2" />
|
|
511
|
+
</g>
|
|
512
|
+
);
|
|
513
|
+
} else if (variant === "scythe_crest") {
|
|
514
|
+
headgear = (
|
|
515
|
+
<g>
|
|
516
|
+
<path d="M 50 -10 C 32 -10, 24 6, 32 18 C 24 10, 32 -4, 50 -4 C 68 -4, 76 10, 68 18 C 76 6, 68 -10, 50 -10 Z" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
517
|
+
</g>
|
|
518
|
+
);
|
|
519
|
+
} else if (variant === "void_mask") {
|
|
520
|
+
headgear = (
|
|
521
|
+
<g>
|
|
522
|
+
<rect x="28" y="24" width="44" height="24" rx="4" fill="#000000" stroke={color} strokeWidth="2" />
|
|
523
|
+
<text x="50" y="42" fill={color} fontSize="14" fontFamily="monospace" textAnchor="middle" fontWeight="bold">零</text>
|
|
524
|
+
</g>
|
|
525
|
+
);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// 4. MATRIX HACKER VARIANTS (10)
|
|
529
|
+
else if (variant === "hoodie_cowl") {
|
|
530
|
+
headgear = (
|
|
531
|
+
<g>
|
|
532
|
+
<path d="M 14,42 Q 14,8 50,8 Q 86,8 86,42 Q 70,48 50,48 Q 30,48 14,42 Z" fill="#081018" stroke={color} strokeWidth="1.8" />
|
|
533
|
+
<circle cx="28" cy="18" r="1.5" fill={color} opacity="0.7" />
|
|
534
|
+
<circle cx="36" cy="14" r="1.5" fill={color} opacity="0.9" />
|
|
535
|
+
<circle cx="64" cy="14" r="1.5" fill={color} opacity="0.9" />
|
|
536
|
+
<circle cx="72" cy="18" r="1.5" fill={color} opacity="0.7" />
|
|
537
|
+
</g>
|
|
538
|
+
);
|
|
539
|
+
} else if (variant === "vr_goggles") {
|
|
540
|
+
headgear = (
|
|
541
|
+
<g>
|
|
542
|
+
<rect x="24" y="24" width="52" height="18" rx="4" fill="#083344" stroke={color} strokeWidth="2" />
|
|
543
|
+
<line x1="36" y1="24" x2="30" y2="4" stroke={color} strokeWidth="2" />
|
|
544
|
+
<circle cx="30" cy="4" r="3" fill={accentColor} />
|
|
545
|
+
<line x1="32" y1="33" x2="68" y2="33" stroke={accentColor} strokeWidth="1.6" />
|
|
546
|
+
</g>
|
|
547
|
+
);
|
|
548
|
+
} else if (variant === "daemon_horns") {
|
|
549
|
+
headgear = (
|
|
550
|
+
<g>
|
|
551
|
+
<path d="M 22 20 Q 50 4 78 20" stroke={color} strokeWidth="3.5" fill="none" />
|
|
552
|
+
<polygon points="32,20 24,0 40,14" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
553
|
+
<polygon points="68,20 76,0 60,14" fill={color} stroke={secondaryColor} strokeWidth="1.2" />
|
|
554
|
+
</g>
|
|
555
|
+
);
|
|
556
|
+
} else if (variant === "glitch_halo") {
|
|
557
|
+
headgear = (
|
|
558
|
+
<g>
|
|
559
|
+
<rect x="18" y="10" width="64" height="48" fill="none" stroke={color} strokeWidth="1.8" strokeDasharray="8 4 3 5" />
|
|
560
|
+
<rect x="28" y="4" width="16" height="8" fill={color} opacity="0.8" />
|
|
561
|
+
<rect x="62" y="46" width="14" height="6" fill={color} opacity="0.8" />
|
|
562
|
+
</g>
|
|
563
|
+
);
|
|
564
|
+
} else if (variant === "floating_hud") {
|
|
565
|
+
headgear = (
|
|
566
|
+
<g>
|
|
567
|
+
<rect x="74" y="6" width="40" height="22" rx="3" fill="#09090b" stroke={color} strokeWidth="1.2" />
|
|
568
|
+
<text x="78" y="20" fill={color} fontSize="8" fontFamily="monospace">root#_</text>
|
|
569
|
+
</g>
|
|
570
|
+
);
|
|
571
|
+
} else if (variant === "respirator_eq") {
|
|
572
|
+
headgear = (
|
|
573
|
+
<g strokeWidth="2.5">
|
|
574
|
+
<rect x="28" y="42" width="44" height="14" rx="4" fill="#0f172a" stroke={color} strokeWidth="1.5" />
|
|
575
|
+
<line x1="36" y1="52" x2="36" y2="46" stroke="#22c55e" />
|
|
576
|
+
<line x1="43" y1="52" x2="43" y2="44" stroke="#eab308" />
|
|
577
|
+
<line x1="50" y1="52" x2="50" y2="43" stroke="#ef4444" />
|
|
578
|
+
<line x1="57" y1="52" x2="57" y2="45" stroke="#eab308" />
|
|
579
|
+
<line x1="64" y1="52" x2="64" y2="47" stroke="#22c55e" />
|
|
580
|
+
</g>
|
|
581
|
+
);
|
|
582
|
+
} else if (variant === "heatsink_fins") {
|
|
583
|
+
headgear = (
|
|
584
|
+
<g fill="#ea580c" stroke="#fed7aa" strokeWidth="1.2">
|
|
585
|
+
<rect x="28" y="-2" width="6" height="18" rx="1.5" />
|
|
586
|
+
<rect x="38" y="-6" width="6" height="22" rx="1.5" />
|
|
587
|
+
<rect x="47" y="-8" width="6" height="24" rx="1.5" />
|
|
588
|
+
<rect x="56" y="-6" width="6" height="22" rx="1.5" />
|
|
589
|
+
<rect x="66" y="-2" width="6" height="18" rx="1.5" />
|
|
590
|
+
</g>
|
|
591
|
+
);
|
|
592
|
+
} else if (variant === "cable_dreads") {
|
|
593
|
+
headgear = (
|
|
594
|
+
<g fill="none" strokeLinecap="round">
|
|
595
|
+
<path d="M 24 30 C 12 46, 14 74, 16 90" stroke={color} strokeWidth="3" />
|
|
596
|
+
<path d="M 30 26 C 22 50, 24 80, 26 94" stroke={accentColor} strokeWidth="2.5" />
|
|
597
|
+
<path d="M 70 26 C 78 50, 76 80, 74 94" stroke={accentColor} strokeWidth="2.5" />
|
|
598
|
+
<path d="M 76 30 C 88 46, 86 74, 84 90" stroke={color} strokeWidth="3" />
|
|
599
|
+
</g>
|
|
600
|
+
);
|
|
601
|
+
} else if (variant === "cyber_skull") {
|
|
602
|
+
headgear = (
|
|
603
|
+
<g>
|
|
604
|
+
<ellipse cx="42" cy="34" rx="6" ry="5" fill="#000000" stroke={color} strokeWidth="1.8" />
|
|
605
|
+
<ellipse cx="58" cy="34" rx="6" ry="5" fill="#000000" stroke={color} strokeWidth="1.8" />
|
|
606
|
+
<polygon points="48,44 50,40 52,44" fill={color} />
|
|
607
|
+
<line x1="40" y1="50" x2="60" y2="50" stroke={color} strokeWidth="2" />
|
|
608
|
+
<line x1="44" y1="47" x2="44" y2="53" stroke={color} strokeWidth="1.5" />
|
|
609
|
+
<line x1="50" y1="47" x2="50" y2="53" stroke={color} strokeWidth="1.5" />
|
|
610
|
+
<line x1="56" y1="47" x2="56" y2="53" stroke={color} strokeWidth="1.5" />
|
|
611
|
+
</g>
|
|
612
|
+
);
|
|
613
|
+
} else if (variant === "wireframe_cube") {
|
|
614
|
+
headgear = (
|
|
615
|
+
<g stroke={color}>
|
|
616
|
+
<rect x="20" y="8" width="60" height="52" rx="4" fill="none" strokeWidth="1.8" />
|
|
617
|
+
<rect x="30" y="18" width="40" height="32" rx="2" fill="none" stroke={accentColor} strokeWidth="1.4" strokeDasharray="4 2" />
|
|
618
|
+
<line x1="20" y1="8" x2="30" y2="18" strokeWidth="1.4" />
|
|
619
|
+
<line x1="80" y1="8" x2="70" y2="18" strokeWidth="1.4" />
|
|
620
|
+
<line x1="20" y1="60" x2="30" y2="50" strokeWidth="1.4" />
|
|
621
|
+
<line x1="80" y1="60" x2="70" y2="50" strokeWidth="1.4" />
|
|
622
|
+
</g>
|
|
623
|
+
);
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
// 5. CELESTIAL ASTRO VARIANTS (10)
|
|
627
|
+
else if (variant === "bubble_dome") {
|
|
628
|
+
headgear = (
|
|
629
|
+
<g>
|
|
630
|
+
<ellipse cx="50" cy="34" rx="36" ry="26" fill="none" stroke={color} strokeWidth="2.8" opacity="0.9" />
|
|
631
|
+
<circle cx="50" cy="4" r="4.5" fill="#fef08a" stroke={color} strokeWidth="1.5" />
|
|
632
|
+
<path d="M 32 18 Q 50 8 68 18" stroke="#ffffff" strokeWidth="2.5" fill="none" opacity="0.7" strokeLinecap="round" />
|
|
633
|
+
</g>
|
|
634
|
+
);
|
|
635
|
+
} else if (variant === "lunar_pack") {
|
|
636
|
+
headgear = (
|
|
637
|
+
<g>
|
|
638
|
+
<rect x="24" y="-4" width="3" height="24" fill={color} />
|
|
639
|
+
<circle cx="25.5" cy="-4" r="2.5" fill="#ffffff" />
|
|
640
|
+
<ellipse cx="50" cy="34" rx="32" ry="24" fill="none" stroke="#e2e8f0" strokeWidth="2.2" />
|
|
641
|
+
</g>
|
|
642
|
+
);
|
|
643
|
+
} else if (variant === "sunburst_halo") {
|
|
644
|
+
headgear = (
|
|
645
|
+
<g stroke={color} strokeWidth="2" opacity="0.9">
|
|
646
|
+
<line x1="50" y1="-2" x2="50" y2="-14" />
|
|
647
|
+
<line x1="76" y1="8" x2="88" y2="-4" />
|
|
648
|
+
<line x1="86" y1="34" x2="100" y2="34" />
|
|
649
|
+
<line x1="76" y1="60" x2="88" y2="72" />
|
|
650
|
+
<line x1="50" y1="70" x2="50" y2="82" />
|
|
651
|
+
<line x1="24" y1="60" x2="12" y2="72" />
|
|
652
|
+
<line x1="14" y1="34" x2="0" y2="34" />
|
|
653
|
+
<line x1="24" y1="8" x2="12" y2="-4" />
|
|
654
|
+
</g>
|
|
655
|
+
);
|
|
656
|
+
} else if (variant === "saturn_ring") {
|
|
657
|
+
headgear = (
|
|
658
|
+
<g>
|
|
659
|
+
<ellipse cx="50" cy="34" rx="46" ry="14" fill="none" stroke={color} strokeWidth="2.8" transform="rotate(-15 50 34)" />
|
|
660
|
+
<circle cx="86" cy="26" r="3.5" fill={accentColor} />
|
|
661
|
+
</g>
|
|
662
|
+
);
|
|
663
|
+
} else if (variant === "star_crown") {
|
|
664
|
+
headgear = (
|
|
665
|
+
<g fill={color}>
|
|
666
|
+
<polygon points="30,12 36,-2 42,10" />
|
|
667
|
+
<polygon points="44,8 50,-8 56,8" />
|
|
668
|
+
<polygon points="58,10 64,-2 70,12" />
|
|
669
|
+
<circle cx="50" cy="10" r="3" fill="#ffffff" />
|
|
670
|
+
</g>
|
|
671
|
+
);
|
|
672
|
+
} else if (variant === "eclipse_corona") {
|
|
673
|
+
headgear = (
|
|
674
|
+
<g>
|
|
675
|
+
<ellipse cx="50" cy="34" rx="40" ry="24" fill="none" stroke={color} strokeWidth="3.5" opacity="0.65" strokeDasharray="10 5" />
|
|
676
|
+
<circle cx="50" cy="34" r="28" fill="#000000" stroke={color} strokeWidth="1.8" />
|
|
677
|
+
</g>
|
|
678
|
+
);
|
|
679
|
+
} else if (variant === "pulsar_spires") {
|
|
680
|
+
headgear = (
|
|
681
|
+
<g stroke={color} strokeWidth="3.2" strokeLinecap="round">
|
|
682
|
+
<line x1="50" y1="8" x2="50" y2="-16" />
|
|
683
|
+
<circle cx="50" cy="-16" r="3.5" fill="#ffffff" stroke="none" />
|
|
684
|
+
<line x1="50" y1="60" x2="50" y2="78" />
|
|
685
|
+
<circle cx="50" cy="78" r="3.5" fill="#ffffff" stroke="none" />
|
|
686
|
+
</g>
|
|
687
|
+
);
|
|
688
|
+
} else if (variant === "aurora_ribbons") {
|
|
689
|
+
headgear = (
|
|
690
|
+
<g fill="none" strokeLinecap="round">
|
|
691
|
+
<path d="M 14 -2 Q 32 -18 50 -4 T 86 -8" stroke={color} strokeWidth="3.5" opacity="0.8" />
|
|
692
|
+
<path d="M 20 -8 Q 38 -24 56 -10 T 80 -14" stroke={accentColor} strokeWidth="2.5" opacity="0.6" />
|
|
693
|
+
</g>
|
|
694
|
+
);
|
|
695
|
+
} else if (variant === "angel_wings") {
|
|
696
|
+
headgear = (
|
|
697
|
+
<g>
|
|
698
|
+
<polygon points="20,44 -6,6 12,54" fill={color} stroke={secondaryColor} strokeWidth="1.5" opacity="0.9" />
|
|
699
|
+
<polygon points="80,44 106,6 88,54" fill={color} stroke={secondaryColor} strokeWidth="1.5" opacity="0.9" />
|
|
700
|
+
<ellipse cx="50" cy="2" rx="20" ry="6" fill="none" stroke={accentColor} strokeWidth="2" />
|
|
701
|
+
</g>
|
|
702
|
+
);
|
|
703
|
+
} else if (variant === "singularity_core") {
|
|
704
|
+
headgear = (
|
|
705
|
+
<g>
|
|
706
|
+
<ellipse cx="50" cy="34" rx="38" ry="32" fill="none" stroke="#ffffff" strokeWidth="2.5" opacity="0.9" />
|
|
707
|
+
<circle cx="22" cy="18" r="3" fill={accentColor} />
|
|
708
|
+
<circle cx="78" cy="50" r="3" fill={accentColor} />
|
|
709
|
+
</g>
|
|
197
710
|
);
|
|
198
711
|
} else {
|
|
199
712
|
// Default High-Tech Helm
|
|
@@ -209,10 +722,14 @@ function Render3DSkin({ item, gradId }) {
|
|
|
209
722
|
<g transform="translate(0, 2)">
|
|
210
723
|
{headgear}
|
|
211
724
|
|
|
212
|
-
{/* 3D Chibi Chassis Body */}
|
|
213
|
-
<
|
|
214
|
-
|
|
215
|
-
|
|
725
|
+
{/* 3D Chibi Chassis Body with Distinct Staff Uniform */}
|
|
726
|
+
<Render3DStaffTorso
|
|
727
|
+
archetype={archetype}
|
|
728
|
+
color={color}
|
|
729
|
+
secondaryColor={secondaryColor}
|
|
730
|
+
accentColor={accentColor}
|
|
731
|
+
gradId={gradId}
|
|
732
|
+
/>
|
|
216
733
|
|
|
217
734
|
{/* 3D Volumetric Head Helmet */}
|
|
218
735
|
<ellipse cx="50" cy="34" rx="30" ry="22" fill="#171724" stroke={color} strokeWidth="2" />
|
|
@@ -236,7 +753,7 @@ function Render3DSkin({ item, gradId }) {
|
|
|
236
753
|
}
|
|
237
754
|
|
|
238
755
|
// ----------------------------------------------------------------------------
|
|
239
|
-
// 2. 3D TECH DESK PROPS (
|
|
756
|
+
// 2. 3D TECH DESK PROPS (35 CURATED MODELS ACROSS 7 ARCHETYPES)
|
|
240
757
|
// ----------------------------------------------------------------------------
|
|
241
758
|
function Render3DProp({ item, gradId }) {
|
|
242
759
|
const { name, color, archetype } = item;
|
|
@@ -253,7 +770,7 @@ function Render3DProp({ item, gradId }) {
|
|
|
253
770
|
|
|
254
771
|
let prop3D = null;
|
|
255
772
|
|
|
256
|
-
if (archetype === "supercomputer" || name.includes("Server") || name.includes("Tower")) {
|
|
773
|
+
if (archetype === "supercomputer" || name.includes("Server") || name.includes("Tower") || name.includes("Mainframe") || name.includes("Cluster") || name.includes("Rig")) {
|
|
257
774
|
prop3D = (
|
|
258
775
|
<g transform="translate(54, 18)">
|
|
259
776
|
{/* Isometric Top Face */}
|
|
@@ -274,7 +791,7 @@ function Render3DProp({ item, gradId }) {
|
|
|
274
791
|
<circle cx="6" cy="42" r="1" fill="#ec4899" />
|
|
275
792
|
</g>
|
|
276
793
|
);
|
|
277
|
-
} else if (archetype === "dual_monitor" || name.includes("Monitor") || name.includes("Screen")) {
|
|
794
|
+
} else if (archetype === "dual_monitor" || name.includes("Monitor") || name.includes("Screen") || name.includes("OLED") || name.includes("Display")) {
|
|
278
795
|
prop3D = (
|
|
279
796
|
<g transform="translate(50, 22)">
|
|
280
797
|
{/* Monitor 1 (Main Left) */}
|
|
@@ -293,7 +810,7 @@ function Render3DProp({ item, gradId }) {
|
|
|
293
810
|
<ellipse cx="25" cy="46" rx="8" ry="3" fill="#334155" />
|
|
294
811
|
</g>
|
|
295
812
|
);
|
|
296
|
-
} else if (archetype === "hologram_emitter" || name.includes("Holo") || name.includes("Projector")) {
|
|
813
|
+
} else if (archetype === "hologram_emitter" || name.includes("Holo") || name.includes("Projector") || name.includes("Emitter") || name.includes("Tesseract")) {
|
|
297
814
|
prop3D = (
|
|
298
815
|
<g transform="translate(56, 16)">
|
|
299
816
|
{/* Hexagonal Projector Base */}
|
|
@@ -307,7 +824,7 @@ function Render3DProp({ item, gradId }) {
|
|
|
307
824
|
<polygon points="26,14 18,18 18,26 26,22" fill="#0369a1" opacity="0.95" />
|
|
308
825
|
</g>
|
|
309
826
|
);
|
|
310
|
-
} else if (archetype === "espresso_station" || name.includes("Espresso") || name.includes("Coffee")) {
|
|
827
|
+
} else if (archetype === "espresso_station" || name.includes("Espresso") || name.includes("Coffee") || name.includes("Brewer") || name.includes("Drip")) {
|
|
311
828
|
prop3D = (
|
|
312
829
|
<g transform="translate(56, 26)">
|
|
313
830
|
{/* 3D Espresso Box */}
|
|
@@ -321,7 +838,26 @@ function Render3DProp({ item, gradId }) {
|
|
|
321
838
|
<path d="M18,22 Q20,17 18,13" stroke={color} strokeWidth="1.5" fill="none" opacity="0.8" strokeLinecap="round" />
|
|
322
839
|
</g>
|
|
323
840
|
);
|
|
324
|
-
} else if (archetype === "
|
|
841
|
+
} else if (archetype === "arcade_cabinet" || name.includes("Arcade") || name.includes("Pinball") || name.includes("Cabinet")) {
|
|
842
|
+
prop3D = (
|
|
843
|
+
<g transform="translate(54, 16)">
|
|
844
|
+
{/* Isometric Cabinet Top & Sides */}
|
|
845
|
+
<polygon points="14,2 32,8 20,14 2,8" fill={`url(#${gradId}-top)`} stroke={color} strokeWidth="1" />
|
|
846
|
+
<polygon points="2,8 20,14 20,54 2,48" fill="#18181b" stroke="#2b2d3d" strokeWidth="1" />
|
|
847
|
+
<polygon points="20,14 32,8 32,48 20,54" fill="#0f0f14" stroke="#2b2d3d" strokeWidth="1" />
|
|
848
|
+
{/* Glowing Marquee Banner */}
|
|
849
|
+
<polygon points="4,12 18,17 18,22 4,17" fill={color} />
|
|
850
|
+
{/* Angled CRT Screen */}
|
|
851
|
+
<polygon points="4,22 18,27 18,38 4,33" fill="#000000" stroke={color} strokeWidth="0.8" />
|
|
852
|
+
<rect x="8" y="27" width="5" height="5" fill={color} transform="skewY(15)" />
|
|
853
|
+
{/* Control Deck with Joystick and Buttons */}
|
|
854
|
+
<polygon points="3,36 19,41 17,45 1,40" fill="#27272a" stroke={color} strokeWidth="0.8" />
|
|
855
|
+
<circle cx="6" cy="40" r="1.5" fill="#ef4444" />
|
|
856
|
+
<circle cx="12" cy="42" r="1.2" fill={color} />
|
|
857
|
+
<circle cx="15" cy="43" r="1.2" fill="#eab308" />
|
|
858
|
+
</g>
|
|
859
|
+
);
|
|
860
|
+
} else if (archetype === "terrarium_bonsai" || name.includes("Bonsai") || name.includes("Plant") || name.includes("Garden") || name.includes("Dome")) {
|
|
325
861
|
prop3D = (
|
|
326
862
|
<g transform="translate(56, 20)">
|
|
327
863
|
{/* Hexagonal Ceramic Pot */}
|
|
@@ -329,11 +865,29 @@ function Render3DProp({ item, gradId }) {
|
|
|
329
865
|
{/* Twisted Bonsai Trunk */}
|
|
330
866
|
<path d="M17,40 Q17,30 13,26 Q24,22 21,14" stroke="#92400e" strokeWidth="3" fill="none" strokeLinecap="round" />
|
|
331
867
|
{/* Foliage Clouds */}
|
|
332
|
-
<ellipse cx="14" cy="20" rx="9" ry="5.5" fill=
|
|
333
|
-
<ellipse cx="25" cy="15" rx="8" ry="5" fill="
|
|
868
|
+
<ellipse cx="14" cy="20" rx="9" ry="5.5" fill={color} />
|
|
869
|
+
<ellipse cx="25" cy="15" rx="8" ry="5" fill={color} opacity="0.8" />
|
|
334
870
|
<ellipse cx="19" cy="25" rx="6" ry="4" fill="#059669" />
|
|
335
871
|
</g>
|
|
336
872
|
);
|
|
873
|
+
} else if (archetype === "lab_oscilloscope" || name.includes("Oscilloscope") || name.includes("Multimeter") || name.includes("Analyzer") || name.includes("Scope") || name.includes("Meter")) {
|
|
874
|
+
prop3D = (
|
|
875
|
+
<g transform="translate(52, 22)">
|
|
876
|
+
{/* Instrument Enclosure Top */}
|
|
877
|
+
<polygon points="12,4 38,4 32,16 6,16" fill={`url(#${gradId}-top)`} stroke="#475569" strokeWidth="1" />
|
|
878
|
+
{/* Instrument Front Face */}
|
|
879
|
+
<polygon points="6,16 32,16 32,44 6,44" fill="#111827" stroke={color} strokeWidth="1.2" />
|
|
880
|
+
<polygon points="32,16 38,4 38,32 32,44" fill="#090d16" stroke="#334155" strokeWidth="1" />
|
|
881
|
+
{/* CRT Phosphor Screen */}
|
|
882
|
+
<rect x="9" y="19" width="16" height="15" rx="1.5" fill="#031a12" stroke={color} strokeWidth="0.8" />
|
|
883
|
+
{/* Oscilloscope Sine Wave Trace */}
|
|
884
|
+
<path d="M 10 26 Q 14 20 17 26 T 24 26" stroke={color} strokeWidth="1.5" fill="none" strokeLinecap="round" />
|
|
885
|
+
{/* Rotary Knobs & Terminals */}
|
|
886
|
+
<circle cx="28" cy="23" r="2" fill="#374151" stroke="#9ca3af" strokeWidth="0.6" />
|
|
887
|
+
<circle cx="28" cy="30" r="2" fill="#374151" stroke="#9ca3af" strokeWidth="0.6" />
|
|
888
|
+
<circle cx="28" cy="37" r="1.2" fill={color} />
|
|
889
|
+
</g>
|
|
890
|
+
);
|
|
337
891
|
} else {
|
|
338
892
|
// Default 3D Isometric Cyber Terminal
|
|
339
893
|
prop3D = (
|