the editor sections fall to one column when it is narrow
A container query on the scroller, once, so a new section is responsive by being in the column rather than by remembering to say so. Below 320px the two-column sections stack instead of truncating every select to "Martia…". Colors stays flex-wrap: three swatches in a two-column grid is 2 and 1. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+9
-1
@@ -37,7 +37,15 @@ export const EditorPanel = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{editor ? (
|
{editor ? (
|
||||||
<div className="min-h-0 flex-1 overflow-auto p-3">{editor}</div>
|
/*
|
||||||
|
`@container`, once, for every section inside it.
|
||||||
|
|
||||||
|
The sections lay out in two columns and have to fall back to one when the panel is dragged
|
||||||
|
narrow — and the window's width says nothing about that, because the width here is a divider
|
||||||
|
somebody moves. Declared on the scroller rather than per section, so a new section is
|
||||||
|
responsive by being in the column rather than by remembering to say so.
|
||||||
|
*/
|
||||||
|
<div className="@container min-h-0 flex-1 overflow-auto p-3">{editor}</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="flex min-h-0 flex-1 items-center justify-center p-6 text-center">
|
<div className="flex min-h-0 flex-1 items-center justify-center p-6 text-center">
|
||||||
{/* Names what the panel is FOR rather than saying it is empty. "Nothing selected" describes
|
{/* Names what the panel is FOR rather than saying it is empty. "Nothing selected" describes
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export const FontSizesTab = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="grid grid-cols-2 gap-3">
|
<div className="grid grid-cols-1 gap-3 @[20rem]:grid-cols-2">
|
||||||
{ROLES.map((role) => {
|
{ROLES.map((role) => {
|
||||||
const current = sizes[role.size];
|
const current = sizes[role.size];
|
||||||
const own = current?.[key];
|
const own = current?.[key];
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ export const LayoutPanel = () => {
|
|||||||
give each one room to be read, which is the only thing this control is for.
|
give each one room to be read, which is the only thing this control is for.
|
||||||
|
|
||||||
*/}
|
*/}
|
||||||
<div className="grid grid-cols-2 gap-3">
|
<div className="grid grid-cols-1 gap-3 @[20rem]:grid-cols-2">
|
||||||
{ROLES.map(({ font, label }) => (
|
{ROLES.map(({ font, label }) => (
|
||||||
<div key={font} className="flex flex-col gap-1">
|
<div key={font} className="flex flex-col gap-1">
|
||||||
<label className="text-xs">{label}</label>
|
<label className="text-xs">{label}</label>
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ export const SpacingTab = ({
|
|||||||
{BANDS.map((band) => (
|
{BANDS.map((band) => (
|
||||||
<div key={band.key} className="flex flex-col gap-2">
|
<div key={band.key} className="flex flex-col gap-2">
|
||||||
<h4 className="text-xs font-medium">{band.label}</h4>
|
<h4 className="text-xs font-medium">{band.label}</h4>
|
||||||
<div className="grid grid-cols-2 gap-3">
|
<div className="grid grid-cols-1 gap-3 @[20rem]:grid-cols-2">
|
||||||
{band.fields.map((field) => {
|
{band.fields.map((field) => {
|
||||||
const current = (spacing as Record<string, Record<string, Steps> | undefined>)[band.key]?.[field.key];
|
const current = (spacing as Record<string, Record<string, Steps> | undefined>)[band.key]?.[field.key];
|
||||||
const own = current?.[key];
|
const own = current?.[key];
|
||||||
|
|||||||
Reference in New Issue
Block a user