Skip to content

Commit c5fc193

Browse files
Copilothotlong
andcommitted
Add mobile responsiveness to all component categories
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 86fe21b commit c5fc193

File tree

11 files changed

+42
-41
lines changed

11 files changed

+42
-41
lines changed

packages/components/src/renderers/complex/carousel.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ ComponentRegistry.register('carousel',
5858
orientation: 'horizontal',
5959
showArrows: true,
6060
items: [
61-
[{ type: 'div', className: 'p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 1' }] }],
62-
[{ type: 'div', className: 'p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 2' }] }],
63-
[{ type: 'div', className: 'p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 3' }] }]
61+
[{ type: 'div', className: 'p-4 sm:p-6 md:p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 1' }] }],
62+
[{ type: 'div', className: 'p-4 sm:p-6 md:p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 2' }] }],
63+
[{ type: 'div', className: 'p-4 sm:p-6 md:p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 3' }] }]
6464
],
6565
className: 'w-full max-w-xs'
6666
}

packages/components/src/renderers/data-display/kbd.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ComponentRegistry.register('kbd',
2222
const keys = Array.isArray(schema.keys) ? schema.keys : [schema.keys || schema.label || 'K'];
2323

2424
return (
25-
<div className={cn('inline-flex gap-1', schema.className)}>
25+
<div className={cn('inline-flex flex-wrap gap-1', schema.className)}>
2626
{keys.map((key, idx) => (
2727
<kbd
2828
key={idx}

packages/components/src/renderers/data-display/statistic.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { TrendingUp, TrendingDown, Minus } from 'lucide-react';
1414
const StatisticRenderer = ({ schema }: { schema: StatisticSchema }) => {
1515
return (
1616
<div className={cn(
17-
"group relative flex flex-col p-6 rounded-xl border bg-card text-card-foreground shadow-sm",
17+
"group relative flex flex-col p-4 sm:p-5 md:p-6 rounded-xl border bg-card text-card-foreground shadow-sm",
1818
schema.className
1919
)}>
2020
{/* Label */}

packages/components/src/renderers/form/file-upload.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ ComponentRegistry.register('file-upload',
9595
<div
9696
onClick={handleClick}
9797
className={cn(
98-
"relative overflow-hidden cursor-pointer rounded-lg border-2 border-dashed transition-all duration-300 min-h-[120px] flex flex-col items-center justify-center p-6 gap-3",
98+
"relative overflow-hidden cursor-pointer rounded-lg border-2 border-dashed transition-all duration-300 min-h-[120px] flex flex-col items-center justify-center p-4 sm:p-6 gap-3",
9999
isUploading
100100
? "border-cyan-400 bg-cyan-950/30"
101101
: "border-slate-700 bg-slate-900/50 hover:bg-slate-900 hover:border-cyan-500/50 hover:shadow-[0_0_20px_-5px_rgba(6,182,212,0.3)]"
@@ -141,7 +141,7 @@ ComponentRegistry.register('file-upload',
141141

142142
<div className="flex items-center gap-3 z-10">
143143
<CheckCircle2 className="w-4 h-4 text-emerald-500 rounded-full" />
144-
<span className="truncate max-w-[200px] text-muted-foreground group-hover/file:text-foreground font-mono text-xs transition-colors">{file.name}</span>
144+
<span className="truncate max-w-[150px] sm:max-w-[200px] md:max-w-[300px] text-muted-foreground group-hover/file:text-foreground font-mono text-xs transition-colors">{file.name}</span>
145145
</div>
146146

147147
<Button

packages/components/src/renderers/form/form.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,12 @@ ComponentRegistry.register('form',
126126
};
127127

128128
// Determine grid classes based on columns (explicit classes for Tailwind JIT)
129+
// Mobile-first: 1 column on mobile, 2 on sm, then md/lg for larger values
129130
const gridColsClass =
130131
columns === 1 ? '' :
131-
columns === 2 ? 'md:grid-cols-2' :
132-
columns === 3 ? 'md:grid-cols-3' :
133-
'md:grid-cols-4';
132+
columns === 2 ? 'sm:grid-cols-2' :
133+
columns === 3 ? 'sm:grid-cols-2 md:grid-cols-3' :
134+
'sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4';
134135

135136
const gridClass = columns > 1
136137
? cn('grid gap-4', gridColsClass)

packages/components/src/renderers/layout/container.tsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ const ContainerRenderer = forwardRef<HTMLDivElement, { schema: ContainerSchema;
3636
maxWidth === 'screen' && 'max-w-screen-2xl',
3737
// Centering
3838
centered && 'mx-auto',
39-
// Padding
39+
// Padding - Mobile-first responsive
4040
padding === 0 && 'p-0',
41-
padding === 1 && 'p-1',
42-
padding === 2 && 'p-2',
43-
padding === 3 && 'p-3',
44-
padding === 4 && 'p-4',
45-
padding === 5 && 'p-5',
46-
padding === 6 && 'p-6',
47-
padding === 7 && 'p-7',
48-
padding === 8 && 'p-8',
49-
padding === 10 && 'p-10',
50-
padding === 12 && 'p-12',
51-
padding === 16 && 'p-16',
41+
padding === 1 && 'p-0.5 sm:p-1',
42+
padding === 2 && 'p-1 sm:p-2',
43+
padding === 3 && 'p-2 sm:p-3',
44+
padding === 4 && 'p-2 sm:p-3 md:p-4',
45+
padding === 5 && 'p-3 sm:p-4 md:p-5',
46+
padding === 6 && 'p-3 sm:p-4 md:p-6',
47+
padding === 7 && 'p-4 sm:p-5 md:p-7',
48+
padding === 8 && 'p-4 sm:p-6 md:p-8',
49+
padding === 10 && 'p-5 sm:p-7 md:p-10',
50+
padding === 12 && 'p-6 sm:p-8 md:p-12',
51+
padding === 16 && 'p-8 sm:p-10 md:p-16',
5252
className
5353
);
5454

packages/components/src/renderers/layout/flex.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ ComponentRegistry.register('flex',
3939
align === 'center' && 'items-center',
4040
align === 'baseline' && 'items-baseline',
4141
align === 'stretch' && 'items-stretch',
42-
// Gap
42+
// Gap - Mobile-first responsive
4343
gap === 0 && 'gap-0',
4444
gap === 1 && 'gap-1',
45-
gap === 2 && 'gap-2',
46-
gap === 3 && 'gap-3',
47-
gap === 4 && 'gap-4',
48-
gap === 5 && 'gap-5',
49-
gap === 6 && 'gap-6',
50-
gap === 7 && 'gap-7',
51-
gap === 8 && 'gap-8',
45+
gap === 2 && 'gap-1.5 sm:gap-2',
46+
gap === 3 && 'gap-2 sm:gap-3',
47+
gap === 4 && 'gap-2 sm:gap-3 md:gap-4',
48+
gap === 5 && 'gap-3 sm:gap-4 md:gap-5',
49+
gap === 6 && 'gap-3 sm:gap-4 md:gap-6',
50+
gap === 7 && 'gap-4 sm:gap-5 md:gap-7',
51+
gap === 8 && 'gap-4 sm:gap-6 md:gap-8',
5252
// Wrap
5353
wrap && 'flex-wrap',
5454
className

packages/components/src/renderers/layout/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const PageRenderer: React.FC<{ schema: PageSchema; className?: string; [k
3131

3232
return (
3333
<div
34-
className={cn("min-h-full w-full bg-background p-6 md:p-8", className)}
34+
className={cn("min-h-full w-full bg-background p-4 md:p-6 lg:p-8", className)}
3535
{...pageProps}
3636
// Apply designer props
3737
data-obj-id={dataObjId}

packages/components/src/renderers/layout/stack.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,16 @@ const StackRenderer = forwardRef<HTMLDivElement, { schema: StackSchema; classNam
4242
align === 'center' && 'items-center',
4343
align === 'baseline' && 'items-baseline',
4444
align === 'stretch' && 'items-stretch',
45-
// Gap
45+
// Gap - Mobile-first responsive
4646
gap === 0 && 'gap-0',
4747
gap === 1 && 'gap-1',
48-
gap === 2 && 'gap-2',
49-
gap === 3 && 'gap-3',
50-
gap === 4 && 'gap-4',
51-
gap === 5 && 'gap-5',
52-
gap === 6 && 'gap-6',
53-
gap === 8 && 'gap-8',
54-
gap === 10 && 'gap-10',
48+
gap === 2 && 'gap-1.5 sm:gap-2',
49+
gap === 3 && 'gap-2 sm:gap-3',
50+
gap === 4 && 'gap-2 sm:gap-3 md:gap-4',
51+
gap === 5 && 'gap-3 sm:gap-4 md:gap-5',
52+
gap === 6 && 'gap-3 sm:gap-4 md:gap-6',
53+
gap === 8 && 'gap-4 sm:gap-6 md:gap-8',
54+
gap === 10 && 'gap-5 sm:gap-7 md:gap-10',
5555
// Wrap
5656
wrap && 'flex-wrap',
5757
className

packages/components/src/renderers/navigation/header-bar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222

2323
ComponentRegistry.register('header-bar',
2424
({ schema }: { schema: HeaderBarSchema }) => (
25-
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
25+
<header className="flex h-14 sm:h-16 shrink-0 items-center gap-2 border-b px-3 sm:px-4">
2626
<SidebarTrigger />
2727
<Separator orientation="vertical" className="mr-2 h-4" />
2828
<Breadcrumb>

0 commit comments

Comments
 (0)