Skip to content

Commit bba0662

Browse files
committed
fix: restructure customize controls into two rows to prevent overflow
Split the single-row controls into: accent picker on row 1, background toggle + download buttons on row 2. Fits max-w-2xl container properly.
1 parent 15d62bd commit bba0662

File tree

1 file changed

+60
-61
lines changed

1 file changed

+60
-61
lines changed

app/components/Brand/Customize.vue

Lines changed: 60 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,11 @@ async function downloadCustomPng() {
138138
</div>
139139

140140
<!-- Controls -->
141-
<div
142-
class="border-t border-border p-4 sm:p-6 flex flex-col sm:flex-row sm:items-center gap-4"
143-
>
144-
<!-- Accent color picker -->
145-
<fieldset class="flex items-center gap-3 flex-1 border-none p-0 m-0">
141+
<div class="border-t border-border p-4 sm:p-6 flex flex-col gap-4">
142+
<!-- Row 1: Accent color picker -->
143+
<fieldset class="flex items-center gap-3 border-none p-0 m-0">
146144
<legend class="sr-only">{{ $t('brand.customize.accent_label') }}</legend>
147-
<span class="text-xs font-mono text-fg-muted shrink-0">{{
145+
<span class="text-sm font-mono text-fg-muted shrink-0">{{
148146
$t('brand.customize.accent_label')
149147
}}</span>
150148
<div class="flex items-center gap-1.5" role="radiogroup">
@@ -168,71 +166,72 @@ async function downloadCustomPng() {
168166
</div>
169167
</fieldset>
170168

171-
<!-- Background toggle -->
172-
<div class="flex items-center gap-3">
173-
<span class="text-xs font-mono text-fg-muted">{{ $t('brand.customize.bg_label') }}</span>
174-
<div
175-
class="flex items-center border border-border rounded-md overflow-hidden"
176-
role="radiogroup"
177-
>
169+
<!-- Row 2: Background toggle + Download buttons -->
170+
<div class="flex items-center gap-4 flex-wrap">
171+
<div class="flex items-center gap-3">
172+
<span class="text-sm font-mono text-fg-muted">{{ $t('brand.customize.bg_label') }}</span>
173+
<div
174+
class="flex items-center border border-border rounded-md overflow-hidden"
175+
role="radiogroup"
176+
>
177+
<ButtonBase
178+
size="sm"
179+
role="radio"
180+
:aria-checked="customBgDark"
181+
:aria-label="$t('brand.logos.on_dark')"
182+
class="!border-none !rounded-none motion-reduce:transition-none"
183+
:class="
184+
customBgDark ? 'bg-bg-muted text-fg' : 'bg-transparent text-fg-muted hover:text-fg'
185+
"
186+
@click="customBgDark = true"
187+
>
188+
{{ $t('brand.logos.on_dark') }}
189+
</ButtonBase>
190+
<ButtonBase
191+
size="sm"
192+
role="radio"
193+
:aria-checked="!customBgDark"
194+
:aria-label="$t('brand.logos.on_light')"
195+
class="!border-none !rounded-none border-is border-is-border motion-reduce:transition-none"
196+
:class="
197+
!customBgDark ? 'bg-bg-muted text-fg' : 'bg-transparent text-fg-muted hover:text-fg'
198+
"
199+
@click="customBgDark = false"
200+
>
201+
{{ $t('brand.logos.on_light') }}
202+
</ButtonBase>
203+
</div>
204+
</div>
205+
206+
<div class="flex items-center gap-2">
178207
<ButtonBase
179208
size="sm"
180-
role="radio"
181-
:aria-checked="customBgDark"
182-
:aria-label="$t('brand.logos.on_dark')"
183-
class="!border-none !rounded-none motion-reduce:transition-none"
184-
:class="
185-
customBgDark ? 'bg-bg-muted text-fg' : 'bg-transparent text-fg-muted hover:text-fg'
186-
"
187-
@click="customBgDark = true"
209+
:aria-label="$t('brand.customize.download_svg_aria')"
210+
:disabled="svgLoading"
211+
@click="downloadCustomSvg"
188212
>
189-
{{ $t('brand.logos.on_dark') }}
213+
<span
214+
class="size-[1em]"
215+
aria-hidden="true"
216+
:class="svgLoading ? 'i-lucide:loader-circle animate-spin' : 'i-lucide:download'"
217+
/>
218+
{{ $t('brand.logos.download_svg') }}
190219
</ButtonBase>
191220
<ButtonBase
192221
size="sm"
193-
role="radio"
194-
:aria-checked="!customBgDark"
195-
:aria-label="$t('brand.logos.on_light')"
196-
class="!border-none !rounded-none border-is border-is-border motion-reduce:transition-none"
197-
:class="
198-
!customBgDark ? 'bg-bg-muted text-fg' : 'bg-transparent text-fg-muted hover:text-fg'
199-
"
200-
@click="customBgDark = false"
222+
:aria-label="$t('brand.customize.download_png_aria')"
223+
:disabled="pngLoading"
224+
@click="downloadCustomPng"
201225
>
202-
{{ $t('brand.logos.on_light') }}
226+
<span
227+
class="size-[1em]"
228+
aria-hidden="true"
229+
:class="pngLoading ? 'i-lucide:loader-circle animate-spin' : 'i-lucide:download'"
230+
/>
231+
{{ $t('brand.logos.download_png') }}
203232
</ButtonBase>
204233
</div>
205234
</div>
206-
207-
<!-- Download buttons -->
208-
<div class="flex items-center gap-2">
209-
<ButtonBase
210-
size="sm"
211-
:aria-label="$t('brand.customize.download_svg_aria')"
212-
:disabled="svgLoading"
213-
@click="downloadCustomSvg"
214-
>
215-
<span
216-
class="size-[1em]"
217-
aria-hidden="true"
218-
:class="svgLoading ? 'i-lucide:loader-circle animate-spin' : 'i-lucide:download'"
219-
/>
220-
{{ $t('brand.logos.download_svg') }}
221-
</ButtonBase>
222-
<ButtonBase
223-
size="sm"
224-
:aria-label="$t('brand.customize.download_png_aria')"
225-
:disabled="pngLoading"
226-
@click="downloadCustomPng"
227-
>
228-
<span
229-
class="size-[1em]"
230-
aria-hidden="true"
231-
:class="pngLoading ? 'i-lucide:loader-circle animate-spin' : 'i-lucide:download'"
232-
/>
233-
{{ $t('brand.logos.download_png') }}
234-
</ButtonBase>
235-
</div>
236235
</div>
237236
</div>
238237
</section>

0 commit comments

Comments
 (0)