Skip to content

Commit af34d87

Browse files
committed
refactor layout and styles in App, ColorListControl, and Options components; add responsive design adjustments
1 parent f819ad6 commit af34d87

File tree

4 files changed

+28
-13
lines changed

4 files changed

+28
-13
lines changed

src/App.tsx

+8-6
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@ function App () {
7676
return (
7777
<>
7878
<div class='container'>
79-
<div class='row'>
80-
<div class='col-12'>
79+
<div class='row mt-2 mt-lg-0'>
80+
<div class='col-12 d-none d-lg-block'>
8181
<h1 class='display-5'>CirclePacker UI</h1>
8282
</div>
83-
<div class='col-8'>
83+
<div class='col-12 col-lg-8' id='canvas'>
8484
<div class='h-100 rounded bg-checkerboard d-flex justify-content-center align-items-center'>
85-
{image() && <img src={image()} class='img-fluid' />}
85+
{image() && <img src={image()} class='img-fluid mh-100' />}
8686
<Show when={!image()}>
8787
<div class='alert alert-info' role='alert'>Drop or paste an image here &mdash; or
8888
<label for='file' class='ms-1 accordiontext-decoration-underline'>click here select an image from your device
@@ -92,8 +92,10 @@ function App () {
9292
</div>
9393
<input type='file' class='d-none' id='file' />
9494
</div>
95-
<div class='col-4 border border-1 border-1 py-2 rounded small'>
96-
<Options />
95+
<div class='col-12 col-lg-4'>
96+
<div class='border border-1 border-1 py-2 rounded small mt-2 mt-lg-0 p-2'>
97+
<Options />
98+
</div>
9799
</div>
98100
</div>
99101

src/ColorListControl.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createStore } from 'solid-js/store'
22
import { state } from './store'
3-
import { For } from 'solid-js'
3+
import { For, Show } from 'solid-js'
44

55
const [options, setOptions] = createStore(state.circlePackerOptions)
66

@@ -40,6 +40,9 @@ export default function () {
4040
</div>
4141
)}
4242
</For>
43+
<Show when={options.colors.length === 0}>
44+
<button class='btn btn-outline-secondary p-1 py-0 me-2 mb-2' disabled>using `auto` colors</button>
45+
</Show>
4346
</div>
4447
</>
4548
)

src/Options.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default function () {
2626
value={circlePackerOptions.numCircles} onInput={(e) => setCirclePackerOptions('numCircles', parseInt(e.target.value))} type='range'
2727
class='d-flex me-2 form-range'
2828
/>
29-
<input class='form-control w-50' id='numberOfCircles' type='number' value={circlePackerOptions.numCircles} onInput={(e) => setCirclePackerOptions('numCircles', parseInt(e.target.value))} />
29+
<input class='form-control w-33' id='numberOfCircles' type='number' value={circlePackerOptions.numCircles} onInput={(e) => setCirclePackerOptions('numCircles', parseInt(e.target.value))} />
3030
</div>
3131
</div>
3232
</div>
@@ -43,7 +43,7 @@ export default function () {
4343
value={circlePackerOptions.spacing} onInput={(e) => setCirclePackerOptions('spacing', parseFloat(e.target.value))} type='range'
4444
class='d-flex me-2 form-range' id='spacing'
4545
/>
46-
<input class='form-control w-25' type='number' value={circlePackerOptions.spacing} onInput={(e) => setCirclePackerOptions('spacing', parseInt(e.target.value))} />
46+
<input class='form-control w-33' type='number' value={circlePackerOptions.spacing} onInput={(e) => setCirclePackerOptions('spacing', parseInt(e.target.value))} />
4747
</div>
4848
</div>
4949
</div>
@@ -64,7 +64,7 @@ export default function () {
6464
class='d-flex me-2 form-range' id='minRadius'
6565
/>
6666

67-
<input class='form-control w-25' type='number' value={circlePackerOptions.minRadius} onInput={(e) => setCirclePackerOptions('minRadius', parseInt(e.target.value))} />
67+
<input class='form-control w-33' type='number' value={circlePackerOptions.minRadius} onInput={(e) => setCirclePackerOptions('minRadius', parseInt(e.target.value))} />
6868
</div>
6969

7070
</div>
@@ -86,7 +86,7 @@ export default function () {
8686
class='d-flex me-2 form-range' id='maxRadius'
8787
/>
8888

89-
<input class='form-control w-25' type='number' value={circlePackerOptions.maxRadius} onInput={(e) => setCirclePackerOptions('maxRadius', parseInt(e.target.value))} />
89+
<input class='form-control w-33' type='number' value={circlePackerOptions.maxRadius} onInput={(e) => setCirclePackerOptions('maxRadius', parseInt(e.target.value))} />
9090
</div>
9191

9292
</div>
@@ -132,7 +132,7 @@ export default function () {
132132
value={circlePackerOptions.minAlpha} onInput={(e) => setCirclePackerOptions('minAlpha', parseFloat(e.target.value))} type='range'
133133
class='d-flex me-2 form-range' id='minAlpha'
134134
/>
135-
<input class='form-control w-25' type='number' value={circlePackerOptions.minAlpha} onInput={(e) => setCirclePackerOptions('minAlpha', parseInt(e.target.value))} />
135+
<input class='form-control w-33' type='number' value={circlePackerOptions.minAlpha} onInput={(e) => setCirclePackerOptions('minAlpha', parseInt(e.target.value))} />
136136
</div>
137137
</div>
138138
</div>

src/index.css

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,14 @@
22
background-image: linear-gradient(45deg, #808080 25%, transparent 25%), linear-gradient(-45deg, #808080 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #808080 75%), linear-gradient(-45deg, transparent 75%, #808080 75%);
33
background-size: 20px 20px;
44
background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
5-
}
5+
}
6+
7+
@media screen and (max-width: 992px) {
8+
#canvas{
9+
height: 33dvh;
10+
}
11+
}
12+
13+
.w-33{
14+
width: 33%;
15+
}

0 commit comments

Comments
 (0)