Skip to content

Commit dc0c75e

Browse files
author
Rajat
committed
media block border made configurable
1 parent 4b6c40c commit dc0c75e

3 files changed

Lines changed: 49 additions & 43 deletions

File tree

packages/page-blocks/src/blocks/media/admin-widget.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ import {
1616
Select,
1717
MaxWidthSelector,
1818
VerticalPaddingSelector,
19+
Tooltip,
1920
} from "@courselit/components-library";
2021
import { isVideo } from "@courselit/utils";
2122
import type { Theme, ThemeStyle } from "@courselit/page-models";
23+
import { Help } from "@courselit/icons";
2224

2325
interface AdminWidgetProps {
2426
name: string;
@@ -58,6 +60,9 @@ export default function AdminWidget({
5860
const [objectFit, setObjectFit] = useState<ImageObjectFit>(
5961
settings.objectFit || "cover",
6062
);
63+
const [hasBorder, setHasBorder] = useState<boolean>(
64+
settings.hasBorder || true,
65+
);
6166

6267
const onSettingsChanged = () =>
6368
onChange({
@@ -70,6 +75,7 @@ export default function AdminWidget({
7075
playVideoInModal,
7176
aspectRatio,
7277
objectFit,
78+
hasBorder,
7379
});
7480

7581
useEffect(() => {
@@ -84,6 +90,7 @@ export default function AdminWidget({
8490
playVideoInModal,
8591
aspectRatio,
8692
objectFit,
93+
hasBorder,
8794
]);
8895

8996
return (
@@ -188,6 +195,18 @@ export default function AdminWidget({
188195
}
189196
onChange={setVerticalPadding}
190197
/>
198+
<div className="flex justify-between">
199+
<div className="flex grow items-center gap-1">
200+
<p>Border</p>
201+
<Tooltip title="Media will have a border">
202+
<Help />
203+
</Tooltip>
204+
</div>
205+
<Checkbox
206+
checked={hasBorder}
207+
onChange={(value: boolean) => setHasBorder(value)}
208+
/>
209+
</div>
191210
</AdminWidgetPanel>
192211
<AdminWidgetPanel title="Advanced" value="advanced">
193212
<CssIdField value={cssId} onChange={setCssId} />

packages/page-blocks/src/blocks/media/settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ export default interface Settings extends WidgetDefaultSettings {
88
playVideoInModal?: boolean;
99
aspectRatio?: AspectRatio;
1010
objectFit?: ImageObjectFit;
11+
hasBorder?: boolean;
1112
}

packages/page-blocks/src/blocks/media/widget.tsx

Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export default function Widget({
3030
objectFit,
3131
maxWidth,
3232
verticalPadding,
33+
hasBorder = true,
3334
},
3435
state: { theme },
3536
}: WidgetProps<Settings>) {
@@ -44,49 +45,34 @@ export default function Widget({
4445
return (
4546
<Section theme={overiddenTheme} id={cssId}>
4647
<div className={`flex flex-col gap-4`}>
47-
{hasHeroGraphic && (
48-
<div>
49-
<div
50-
className={clsx(
51-
"w-full text-center overflow-hidden border",
52-
twRoundedMap[mediaRadius],
53-
)}
54-
style={{
55-
width: "100%",
56-
}}
57-
>
58-
{isVideo(youtubeLink, media) ? (
59-
<VideoWithPreview
60-
videoUrl={youtubeLink || media?.file || ""}
61-
aspectRatio={aspectRatio}
62-
title={media?.caption || ""}
63-
thumbnailUrl={media?.thumbnail || ""}
64-
modal={playVideoInModal}
65-
/>
66-
) : (
67-
<Image
68-
src={media?.file || ""}
69-
alt={media?.caption || ""}
70-
borderRadius={mediaRadius}
71-
objectFit={objectFit}
72-
/>
73-
)}
74-
</div>
75-
</div>
76-
)}
77-
{!hasHeroGraphic && (
78-
<div
79-
className={clsx(
80-
"w-full text-center overflow-hidden border",
81-
twRoundedMap[mediaRadius],
82-
)}
83-
style={{
84-
width: "100%",
85-
}}
86-
>
87-
<Image src="" borderRadius={0} />
88-
</div>
89-
)}
48+
<div
49+
className={clsx(
50+
"w-full text-center overflow-hidden",
51+
hasBorder &&
52+
overiddenTheme.interactives.card.border.width,
53+
twRoundedMap[mediaRadius],
54+
)}
55+
style={{
56+
width: "100%",
57+
}}
58+
>
59+
{isVideo(youtubeLink, media) ? (
60+
<VideoWithPreview
61+
videoUrl={youtubeLink || media?.file || ""}
62+
aspectRatio={aspectRatio}
63+
title={media?.caption || ""}
64+
thumbnailUrl={media?.thumbnail || ""}
65+
modal={playVideoInModal}
66+
/>
67+
) : (
68+
<Image
69+
src={media?.file || ""}
70+
alt={media?.caption || ""}
71+
borderRadius={mediaRadius}
72+
objectFit={objectFit}
73+
/>
74+
)}
75+
</div>
9076
</div>
9177
</Section>
9278
);

0 commit comments

Comments
 (0)