Skip to content

Commit 5c43a0f

Browse files
committed
Remove circular dependency between components-library and page-primitives
1 parent 010587e commit 5c43a0f

File tree

9 files changed

+67
-124
lines changed

9 files changed

+67
-124
lines changed

apps/web/app/(with-contexts)/(with-layout)/products/products-list.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { useProducts } from "@/hooks/use-products";
77
import { BookOpen } from "lucide-react";
88
import { EmptyState } from "./empty-state";
99
import { Button } from "@components/ui/button";
10-
import { SkeletonCard, ProductCard } from "@courselit/components-library";
10+
import { SkeletonCard } from "@components/skeleton-card";
11+
import { ProductCard } from "@courselit/page-blocks";
1112
import { SiteInfoContext } from "@components/contexts";
1213
import { truncate } from "@ui-lib/utils";
1314
const ITEMS_PER_PAGE = 9;

packages/components-library/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
"@courselit/state-management": "workspace:^",
5757
"@courselit/text-editor": "workspace:^",
5858
"@courselit/utils": "workspace:^",
59-
"@courselit/page-primitives": "workspace:^",
6059
"@dnd-kit/core": "^6.1.0",
6160
"@dnd-kit/sortable": "^8.0.0",
6261
"@dnd-kit/utilities": "^3.2.2",

packages/components-library/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ export * from "./paginated-table";
5555
import getSymbolFromCurrency from "currency-symbol-map";
5656
export * from "./content-card";
5757
export * from "./skeleton-card";
58-
export * from "./product-card";
5958
export * from "./video-with-preview";
6059
export * from "./image";
6160
export * from "./vertical-padding-selector";

packages/components-library/src/product-card.tsx

Lines changed: 0 additions & 109 deletions
This file was deleted.

packages/page-blocks/src/banner/admin-widget/custom-settings.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import {
2020
Constants,
2121
PaymentPlan,
2222
Theme,
23-
UITheme,
2423
} from "@courselit/common-models";
2524
import { DEFAULT_FAILURE_MESSAGE, DEFAULT_SUCCESS_MESSAGE } from "../constants";
2625

@@ -30,7 +29,7 @@ interface CustomSettingsProps {
3029
pageData: Record<string, unknown>;
3130
onChange: (...args: any[]) => void;
3231
address: Address;
33-
theme: UITheme;
32+
theme: Theme;
3433
}
3534

3635
export default function CustomSettings({
@@ -83,13 +82,10 @@ export default function CustomSettings({
8382
>(settings.editingViewShowSuccess || "0");
8483
const [maxWidth, setMaxWidth] = useState<
8584
Theme["structure"]["page"]["width"]
86-
>(settings.maxWidth || theme.theme.structure.page.width);
85+
>(settings.maxWidth || theme.structure.page.width);
8786
const [verticalPadding, setVerticalPadding] = useState<
8887
Theme["structure"]["section"]["verticalPadding"]
89-
>(
90-
settings.verticalPadding ||
91-
theme.theme.structure.section.verticalPadding,
92-
);
88+
>(settings.verticalPadding || theme.structure.section.verticalPadding);
9389
const [mediaBorderRadius, setMediaBorderRadius] = useState(
9490
settings.mediaRadius || 2,
9591
);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./product-card";
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { Course, SiteInfo, Theme } from "@courselit/common-models";
2+
import { getSymbolFromCurrency, Image } from "@courselit/components-library";
3+
import { Badge } from "@courselit/components-library";
4+
import { PageCardHeader, Subheader2 } from "@courselit/page-primitives";
5+
import { PageCardContent } from "@courselit/page-primitives";
6+
import { PageCard, PageCardImage } from "@courselit/page-primitives";
7+
import { getPlanPrice, truncate } from "@courselit/utils";
8+
9+
export function ProductCard({
10+
product,
11+
siteinfo,
12+
theme,
13+
}: {
14+
product: Course;
15+
siteinfo: SiteInfo;
16+
theme?: Theme;
17+
}) {
18+
const defaultPlan = product.paymentPlans?.filter(
19+
(plan) => plan.planId === product.defaultPaymentPlan,
20+
)[0];
21+
const { amount, period } = getPlanPrice(defaultPlan);
22+
23+
return (
24+
<PageCard
25+
href={`/p/${product.pageId}`}
26+
className="overflow-hidden"
27+
theme={theme}
28+
>
29+
<PageCardImage
30+
src={product.featuredImage?.file}
31+
alt={product.title}
32+
className="aspect-video object-cover rounded-t-lg rounded-b-none"
33+
theme={theme}
34+
/>
35+
<PageCardContent theme={theme}>
36+
<PageCardHeader theme={theme}>{product.title}</PageCardHeader>
37+
<div className="flex items-center justify-between">
38+
<div className="flex items-center gap-1">
39+
<Image
40+
src={product.user?.avatar?.thumbnail}
41+
alt={product.user?.name || "User Avatar"}
42+
/>
43+
<Subheader2 theme={theme}>
44+
{truncate(product.user?.name || "Unnamed", 20)}
45+
</Subheader2>
46+
</div>
47+
<Badge className="flex items-center font-medium">
48+
{getSymbolFromCurrency(
49+
siteinfo.currencyISOCode || "USD",
50+
)}
51+
<span>{amount.toFixed(2)}</span>
52+
<span className="ml-1">{period}</span>
53+
</Badge>
54+
</div>
55+
</PageCardContent>
56+
</PageCard>
57+
);
58+
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
import React, { useEffect, useState } from "react";
22
import { Course, Theme, WidgetProps } from "@courselit/common-models";
3-
import {
4-
TextRenderer,
5-
SkeletonCard,
6-
ProductCard,
7-
} from "@courselit/components-library";
3+
import { TextRenderer, SkeletonCard } from "@courselit/components-library";
84
import { actionCreators } from "@courselit/state-management";
95
import { FetchBuilder } from "@courselit/utils";
106
import Settings from "./settings";
117
import { Header1, Subheader1, Section } from "@courselit/page-primitives";
8+
import { ProductCard } from "../components";
129

1310
export default function Widget({
1411
settings: {

packages/page-blocks/src/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@ export * from "./content";
3131
export * from "./faq";
3232
export * from "./pricing";
3333
export * from "./media";
34+
export * from "./components";

0 commit comments

Comments
 (0)