Skip to content

Commit ea9b125

Browse files
authored
Group theme picker into General and Special, nest Shape under General (#24)
1 parent 7b0eea0 commit ea9b125

1 file changed

Lines changed: 40 additions & 30 deletions

File tree

src/app/page.tsx

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -630,41 +630,16 @@ export default function Home() {
630630
</div>
631631
</div>
632632

633-
{/* Shape — not applicable to pixel-art or full-scene styles */}
634-
{!minecraftSelected && !onepieceSelected && !aotSelected && !gotSelected && (
635-
<div className="mb-7">
636-
<label className="block text-[11px] font-semibold text-white/35 uppercase tracking-widest mb-2.5">
637-
Shape
638-
</label>
639-
<div className="inline-flex gap-1 p-1 bg-white/[0.04] border border-white/[0.08] rounded-lg">
640-
{[
641-
{ id: "box", name: "Box", Icon: Square },
642-
{ id: "circle", name: "Circular", Icon: Circle },
643-
].map(({ id, name, Icon }) => (
644-
<button
645-
key={id}
646-
onClick={() => setShape(id)}
647-
aria-pressed={shape === id}
648-
aria-label={`${name} cells`}
649-
className={`flex items-center gap-1.5 px-4 py-2 rounded-md text-[12px] font-semibold transition-colors cursor-pointer ${
650-
shape === id
651-
? "bg-white text-black"
652-
: "text-white/50 hover:text-white"
653-
}`}
654-
>
655-
<Icon className="size-3.5" />
656-
{name}
657-
</button>
658-
))}
659-
</div>
660-
</div>
661-
)}
662-
663633
{/* Theme */}
664634
<div>
665635
<label className="block text-[11px] font-semibold text-white/35 uppercase tracking-widest mb-3">
666636
Theme
667637
</label>
638+
639+
{/* General — solid box/dot themes; the Shape selector applies to these */}
640+
<p className="text-[11px] font-semibold text-white/30 uppercase tracking-widest mb-2.5">
641+
General
642+
</p>
668643
<div className="flex flex-wrap gap-2">
669644
{gridThemes.map((t) => (
670645
<button
@@ -692,7 +667,42 @@ export default function Home() {
692667
</span>
693668
</button>
694669
))}
670+
</div>
671+
672+
{/* Shape lives with General — it only changes how these solid cells
673+
are drawn (box vs circle); pixel-art/full-scene themes ignore it. */}
674+
{!minecraftSelected && !onepieceSelected && !aotSelected && !gotSelected && (
675+
<div className="mt-3 flex items-center gap-2.5">
676+
<span className="text-[11px] font-medium text-white/30">Shape</span>
677+
<div className="inline-flex gap-1 p-1 bg-white/[0.04] border border-white/[0.08] rounded-lg">
678+
{[
679+
{ id: "box", name: "Box", Icon: Square },
680+
{ id: "circle", name: "Circular", Icon: Circle },
681+
].map(({ id, name, Icon }) => (
682+
<button
683+
key={id}
684+
onClick={() => setShape(id)}
685+
aria-pressed={shape === id}
686+
aria-label={`${name} cells`}
687+
className={`flex items-center gap-1.5 px-3.5 py-1.5 rounded-md text-[12px] font-semibold transition-colors cursor-pointer ${
688+
shape === id
689+
? "bg-white text-black"
690+
: "text-white/50 hover:text-white"
691+
}`}
692+
>
693+
<Icon className="size-3.5" />
694+
{name}
695+
</button>
696+
))}
697+
</div>
698+
</div>
699+
)}
695700

701+
{/* Special — show themes; selecting one expands its variants below */}
702+
<p className="text-[11px] font-semibold text-white/30 uppercase tracking-widest mt-5 mb-2.5">
703+
Special
704+
</p>
705+
<div className="flex flex-wrap gap-2">
696706
{/* Minecraft group — opens the block-style sub-options below */}
697707
{minecraftGroup && (
698708
<button

0 commit comments

Comments
 (0)