diff --git a/apps/web/src/components/(marketing)/faster-smarter-beautiful-bento.tsx b/apps/web/src/components/(marketing)/faster-smarter-beautiful-bento.tsx
index 2cbaaef53..8b7eaf15c 100644
--- a/apps/web/src/components/(marketing)/faster-smarter-beautiful-bento.tsx
+++ b/apps/web/src/components/(marketing)/faster-smarter-beautiful-bento.tsx
@@ -16,6 +16,21 @@ export const FasterSmarterBeautifulBento = ({
className,
...props
}: FasterSmarterBeautifulBentoProps) => {
+ const featureCards = [
+ {
+ title: 'Beautiful.',
+ description:
+ 'Because signing should be celebrated. That’s why we care about the smallest detail in our product.',
+ image: cardBeautifulFigure,
+ },
+ {
+ title: 'Smart.',
+ description:
+ 'Our custom templates come with smart rules that can help you save time and energy.',
+ image: cardSmartFigure,
+ },
+ ];
+
return (
@@ -45,32 +60,19 @@ export const FasterSmarterBeautifulBento = ({
-
-
-
- Beautiful.
- Because signing should be celebrated. That’s why we care about the smallest detail in
- our product.
-
-
-
-
-
-
-
-
-
-
-
- Smart.
- Our custom templates come with smart rules that can help you save time and energy.
-
-
-
-
-
-
-
+ {featureCards.map((card, index) => (
+
+
+
+ {card.title}
+ {card.description}
+
+
+
+
+
+
+ ))}
);
diff --git a/apps/web/src/components/(marketing)/open-build-template-bento.tsx b/apps/web/src/components/(marketing)/open-build-template-bento.tsx
index e7920500b..779ef36e5 100644
--- a/apps/web/src/components/(marketing)/open-build-template-bento.tsx
+++ b/apps/web/src/components/(marketing)/open-build-template-bento.tsx
@@ -13,6 +13,22 @@ import cardTemplateFigure from '~/assets/card-template-figure.png';
export type OpenBuildTemplateBentoProps = HTMLAttributes;
export const OpenBuildTemplateBento = ({ className, ...props }: OpenBuildTemplateBentoProps) => {
+ const cardData = [
+ {
+ title: 'Build on top.',
+ description: 'Make it your own through advanced customization and adjustability.',
+ image: cardBuildFigure,
+ imageSize: 'max-w-xs',
+ },
+ {
+ title: 'Template Store (Soon).',
+ description:
+ 'Choose a template from the community app store. Or submit your own template for others to use.',
+ image: cardTemplateFigure,
+ imageSize: 'max-w-sm',
+ },
+ ];
+
return (
@@ -42,32 +58,19 @@ export const OpenBuildTemplateBento = ({ className, ...props }: OpenBuildTemplat
-
-
-
- Build on top.
- Make it your own through advanced customization and adjustability.
-
-
-
-
-
-
-
-
-
-
-
- Template Store (Soon).
- Choose a template from the community app store. Or submit your own template for others
- to use.
-
-
-
-
-
-
-
+ {cardData.map((card, index) => (
+
+
+
+ {card.title}
+ {card.description}
+
+
+
+
+
+
+ ))}
);
diff --git a/apps/web/src/components/(marketing)/share-connect-paid-widget-bento.tsx b/apps/web/src/components/(marketing)/share-connect-paid-widget-bento.tsx
index 05b6a3232..8c7fa74e5 100644
--- a/apps/web/src/components/(marketing)/share-connect-paid-widget-bento.tsx
+++ b/apps/web/src/components/(marketing)/share-connect-paid-widget-bento.tsx
@@ -17,6 +17,29 @@ export const ShareConnectPaidWidgetBento = ({
className,
...props
}: ShareConnectPaidWidgetBentoProps) => {
+ const cardData = [
+ {
+ title: 'Connections (Soon).',
+ description:
+ 'Create connections and automations with Zapier and more to integrate with your favorite tools.',
+ image: cardConnectionsFigure,
+ imageSize: 'max-w-sm',
+ },
+ {
+ title: 'Get paid (Soon).',
+ description: 'Integrated payments with stripe so you don’t have to worry about getting paid.',
+ image: cardPaidFigure,
+ imageSize: 'max-w-[14rem]',
+ },
+ {
+ title: 'React Widget (Soon).',
+ description:
+ 'Easily embed Documenso into your product. Simply copy and paste our react widget into your application.',
+ image: cardWidgetFigure,
+ imageSize: 'max-w-xs',
+ },
+ ];
+
return (
@@ -45,46 +68,19 @@ export const ShareConnectPaidWidgetBento = ({
-
-
-
- Connections (Soon).
- Create connections and automations with Zapier and more to integrate with your
- favorite tools.
-
-
-
-
-
-
-
-
-
-
-
- Get paid (Soon).
- Integrated payments with stripe so you don’t have to worry about getting paid.
-
-
-
-
-
-
-
-
-
-
-
- React Widget (Soon).
- Easily embed Documenso into your product. Simply copy and paste our react widget into
- your application.
-
-
-
-
-
-
-
+ {cardData.map((card, index) => (
+
+
+
+ {card.title}
+ {card.description}
+
+
+
+
+
+
+ ))}
);