@upstart.gg/sdk 0.0.137 → 0.0.138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/ai/schemas.js +2 -2
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +2 -2
- package/dist/shared/ai/types.d.ts.map +1 -1
- package/dist/shared/ajv.js +26 -25
- package/dist/shared/ajv.js.map +1 -1
- package/dist/shared/attributes.d.ts +8 -0
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +15 -14
- package/dist/shared/brick-manifest.js +2 -2
- package/dist/shared/bricks/manifests/accordion.manifest.js +8 -7
- package/dist/shared/bricks/manifests/all-manifests.js +38 -37
- package/dist/shared/bricks/manifests/all-props.d.ts +32 -22
- package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-props.js +40 -39
- package/dist/shared/bricks/manifests/all-props.js.map +1 -1
- package/dist/shared/bricks/manifests/box.manifest.js +11 -10
- package/dist/shared/bricks/manifests/button.manifest.js +10 -9
- package/dist/shared/bricks/manifests/card.manifest.d.ts +2 -0
- package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/card.manifest.js +13 -12
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts +1 -0
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/carousel.manifest.js +11 -10
- package/dist/shared/bricks/manifests/footer.manifest.d.ts +2 -0
- package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.js +9 -8
- package/dist/shared/bricks/manifests/form.manifest.js +9 -8
- package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -4
- package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/hero.manifest.js +10 -9
- package/dist/shared/bricks/manifests/html.manifest.d.ts +1 -0
- package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/html.manifest.js +6 -5
- package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/icon.manifest.js +9 -8
- package/dist/shared/bricks/manifests/image.manifest.d.ts +1 -0
- package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/image.manifest.js +12 -11
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -0
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +11 -10
- package/dist/shared/bricks/manifests/map.manifest.d.ts +1 -0
- package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/map.manifest.js +9 -8
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts +2 -0
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js +11 -10
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.js +11 -10
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/social-links.manifest.js +10 -9
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/spacer.manifest.js +6 -5
- package/dist/shared/bricks/manifests/table.manifest.d.ts +1 -0
- package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/table.manifest.js +10 -9
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.js +11 -10
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +3 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.js +13 -12
- package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -5
- package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/text.manifest.js +10 -9
- package/dist/shared/bricks/manifests/timeline.manifest.js +11 -10
- package/dist/shared/bricks/manifests/video.manifest.js +9 -8
- package/dist/shared/bricks/props/background.d.ts.map +1 -1
- package/dist/shared/bricks/props/background.js +1 -1
- package/dist/shared/bricks/props/border.js +2 -2
- package/dist/shared/bricks/props/color.d.ts.map +1 -1
- package/dist/shared/bricks/props/color.js +1 -1
- package/dist/shared/bricks/props/common.d.ts.map +1 -1
- package/dist/shared/bricks/props/common.js +2 -1
- package/dist/shared/bricks/props/grow.d.ts +3 -0
- package/dist/shared/bricks/props/grow.d.ts.map +1 -0
- package/dist/shared/bricks/props/grow.js +10 -0
- package/dist/shared/bricks/props/grow.js.map +1 -0
- package/dist/shared/bricks/props/helpers.js +3 -2
- package/dist/shared/bricks/props/image.d.ts +1 -0
- package/dist/shared/bricks/props/image.d.ts.map +1 -1
- package/dist/shared/bricks/props/image.js +1 -1
- package/dist/shared/bricks/props/string.d.ts.map +1 -1
- package/dist/shared/bricks/props/string.js +1 -1
- package/dist/shared/bricks.d.ts +18 -17
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +39 -38
- package/dist/shared/chunk-2EOCK66Z.js +19 -0
- package/dist/shared/chunk-2EOCK66Z.js.map +1 -0
- package/dist/shared/{chunk-XXPSM6UA.js → chunk-2UEPTT5J.js} +5 -9
- package/dist/shared/chunk-2UEPTT5J.js.map +1 -0
- package/dist/shared/{chunk-DRQKKPTX.js → chunk-2Z5WOCFS.js} +41 -1
- package/dist/shared/chunk-2Z5WOCFS.js.map +1 -0
- package/dist/shared/{chunk-7U5WPHXB.js → chunk-34IUWNRX.js} +7 -7
- package/dist/shared/chunk-57NRTXRA.js +309 -0
- package/dist/shared/chunk-57NRTXRA.js.map +1 -0
- package/dist/shared/{chunk-T6C3NG2L.js → chunk-5HJT5NJ3.js} +8 -8
- package/dist/shared/{chunk-BZTWZC77.js → chunk-5J4Y43RM.js} +37 -179
- package/dist/shared/chunk-5J4Y43RM.js.map +1 -0
- package/dist/shared/{chunk-KKWT3OXF.js → chunk-5OVOXUFX.js} +3 -2
- package/dist/shared/{chunk-KKWT3OXF.js.map → chunk-5OVOXUFX.js.map} +1 -1
- package/dist/shared/{chunk-XK2CERPB.js → chunk-5SNSUC6Q.js} +7 -7
- package/dist/shared/{chunk-JLDAS3VE.js → chunk-B5T2LFV2.js} +10 -14
- package/dist/shared/chunk-B5T2LFV2.js.map +1 -0
- package/dist/shared/{chunk-PF75LW33.js → chunk-E3ZW57HF.js} +18 -9
- package/dist/shared/chunk-E3ZW57HF.js.map +1 -0
- package/dist/shared/{chunk-JSDKK5QN.js → chunk-EUFVTHAG.js} +5 -3
- package/dist/shared/chunk-EUFVTHAG.js.map +1 -0
- package/dist/shared/{chunk-U4KZUX37.js → chunk-FC52EHCC.js} +8 -8
- package/dist/shared/chunk-FC52EHCC.js.map +1 -0
- package/dist/shared/{chunk-JW7MQAU4.js → chunk-FVV27R73.js} +9 -94
- package/dist/shared/chunk-FVV27R73.js.map +1 -0
- package/dist/shared/{chunk-SQXZNGQF.js → chunk-FYGFB5U5.js} +3 -1
- package/dist/shared/chunk-FYGFB5U5.js.map +1 -0
- package/dist/shared/{chunk-J45LSQT6.js → chunk-GNTJT7MR.js} +2 -2
- package/dist/shared/chunk-HHUFGV7J.js +259 -0
- package/dist/shared/chunk-HHUFGV7J.js.map +1 -0
- package/dist/shared/{chunk-W2RFDII5.js → chunk-IMDOF55E.js} +12 -4
- package/dist/shared/chunk-IMDOF55E.js.map +1 -0
- package/dist/shared/{chunk-KQH6V22E.js → chunk-IPWYNE6Y.js} +25 -25
- package/dist/shared/{chunk-H6TMBELF.js → chunk-J6R3GSKS.js} +46 -34
- package/dist/shared/chunk-J6R3GSKS.js.map +1 -0
- package/dist/shared/{chunk-TBT2PTGB.js → chunk-KRODRZNS.js} +9 -9
- package/dist/shared/chunk-KTA7XES3.js +168 -0
- package/dist/shared/chunk-KTA7XES3.js.map +1 -0
- package/dist/shared/{chunk-SK2O7GFC.js → chunk-L4W4B2RQ.js} +15 -70
- package/dist/shared/chunk-L4W4B2RQ.js.map +1 -0
- package/dist/shared/{chunk-MYOLWTB2.js → chunk-NTP6BKRU.js} +9 -9
- package/dist/shared/chunk-NTP6BKRU.js.map +1 -0
- package/dist/shared/{chunk-JF52BBFD.js → chunk-O53V22BK.js} +18 -10
- package/dist/shared/chunk-O53V22BK.js.map +1 -0
- package/dist/shared/{chunk-ZVJNRKT4.js → chunk-ORIUCOED.js} +7 -7
- package/dist/shared/{chunk-LGDDJJHK.js → chunk-PFZMRSHJ.js} +11 -11
- package/dist/shared/{chunk-6AE7UD73.js → chunk-QHKOAIOK.js} +31 -60
- package/dist/shared/chunk-QHKOAIOK.js.map +1 -0
- package/dist/shared/{chunk-LPAQ47C6.js → chunk-RDOCVLCF.js} +11 -11
- package/dist/shared/{chunk-VSLRTXLF.js → chunk-RFH7PEVS.js} +5 -4
- package/dist/shared/chunk-RFH7PEVS.js.map +1 -0
- package/dist/shared/{chunk-XNRSL6FL.js → chunk-T3UPW5OW.js} +5 -4
- package/dist/shared/{chunk-XNRSL6FL.js.map → chunk-T3UPW5OW.js.map} +1 -1
- package/dist/shared/{chunk-FUUSAMN3.js → chunk-TGKNA2JS.js} +8 -8
- package/dist/shared/{chunk-HY7JOP3J.js → chunk-TZ6X7ZM5.js} +19 -11
- package/dist/shared/chunk-TZ6X7ZM5.js.map +1 -0
- package/dist/shared/{chunk-VTCHJT4O.js → chunk-UC75KRLX.js} +2 -2
- package/dist/shared/{chunk-4KY7OZWD.js → chunk-VMIJ6MG5.js} +13 -13
- package/dist/shared/{chunk-SRYBJ6NQ.js → chunk-VYA2FCTY.js} +2 -2
- package/dist/shared/{chunk-LGGPCCCY.js → chunk-XYWSIMZ6.js} +3 -3
- package/dist/shared/chunk-XYWSIMZ6.js.map +1 -0
- package/dist/shared/{chunk-FHA4DFIM.js → chunk-ZYQZUWF7.js} +10 -10
- package/dist/shared/{chunk-2O5HVPID.js → chunk-ZZVYD4BG.js} +3 -3
- package/dist/shared/context.d.ts +4 -0
- package/dist/shared/context.d.ts.map +1 -1
- package/dist/shared/context.js +43 -42
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/page.d.ts +2 -0
- package/dist/shared/page.d.ts.map +1 -1
- package/dist/shared/page.js +41 -40
- package/dist/shared/site.d.ts +7 -0
- package/dist/shared/site.d.ts.map +1 -1
- package/dist/shared/site.js +43 -42
- package/dist/shared/sitemap.js +42 -41
- package/dist/shared/utils/schema.d.ts +0 -5
- package/dist/shared/utils/schema.d.ts.map +1 -1
- package/dist/shared/utils/schema.js +1 -3
- package/package.json +2 -2
- package/src/shared/ai/schemas.ts +1 -1
- package/src/shared/ai/types.ts +2 -2
- package/src/shared/bricks/manifests/card.manifest.ts +25 -168
- package/src/shared/bricks/manifests/hero.manifest.ts +44 -249
- package/src/shared/bricks/manifests/html.manifest.ts +6 -0
- package/src/shared/bricks/manifests/icon.manifest.ts +1 -89
- package/src/shared/bricks/manifests/image.manifest.ts +0 -4
- package/src/shared/bricks/manifests/images-gallery.manifest.ts +8 -0
- package/src/shared/bricks/manifests/map.manifest.ts +9 -65
- package/src/shared/bricks/manifests/sidebar.manifest.ts +0 -1
- package/src/shared/bricks/manifests/social-links.manifest.ts +0 -1
- package/src/shared/bricks/manifests/spacer.manifest.ts +0 -1
- package/src/shared/bricks/manifests/table.manifest.ts +6 -0
- package/src/shared/bricks/manifests/tabs.manifest.ts +12 -429
- package/src/shared/bricks/manifests/testimonials.manifest.ts +28 -226
- package/src/shared/bricks/manifests/text.manifest.ts +16 -44
- package/src/shared/bricks/props/background.ts +2 -1
- package/src/shared/bricks/props/color.ts +5 -2
- package/src/shared/bricks/props/common.ts +2 -8
- package/src/shared/bricks/props/grow.ts +11 -0
- package/src/shared/bricks/props/image.ts +40 -0
- package/src/shared/bricks/props/string.ts +2 -0
- package/src/shared/bricks.ts +33 -23
- package/src/shared/page.ts +1 -0
- package/src/shared/site.ts +1 -0
- package/src/shared/utils/schema.ts +28 -18
- package/src/shared/utils/tests/schema.test.ts +211 -4
- package/dist/shared/chunk-6AE7UD73.js.map +0 -1
- package/dist/shared/chunk-BZTWZC77.js.map +0 -1
- package/dist/shared/chunk-DRQKKPTX.js.map +0 -1
- package/dist/shared/chunk-H6TMBELF.js.map +0 -1
- package/dist/shared/chunk-HUWMIXNN.js +0 -570
- package/dist/shared/chunk-HUWMIXNN.js.map +0 -1
- package/dist/shared/chunk-HY7JOP3J.js.map +0 -1
- package/dist/shared/chunk-JF52BBFD.js.map +0 -1
- package/dist/shared/chunk-JLDAS3VE.js.map +0 -1
- package/dist/shared/chunk-JSDKK5QN.js.map +0 -1
- package/dist/shared/chunk-JW7MQAU4.js.map +0 -1
- package/dist/shared/chunk-LGGPCCCY.js.map +0 -1
- package/dist/shared/chunk-MYOLWTB2.js.map +0 -1
- package/dist/shared/chunk-O24RDXZS.js +0 -505
- package/dist/shared/chunk-O24RDXZS.js.map +0 -1
- package/dist/shared/chunk-PF75LW33.js.map +0 -1
- package/dist/shared/chunk-QEJGPYTB.js +0 -462
- package/dist/shared/chunk-QEJGPYTB.js.map +0 -1
- package/dist/shared/chunk-SK2O7GFC.js.map +0 -1
- package/dist/shared/chunk-SQXZNGQF.js.map +0 -1
- package/dist/shared/chunk-U4KZUX37.js.map +0 -1
- package/dist/shared/chunk-VSLRTXLF.js.map +0 -1
- package/dist/shared/chunk-W2RFDII5.js.map +0 -1
- package/dist/shared/chunk-XXPSM6UA.js.map +0 -1
- /package/dist/shared/{chunk-7U5WPHXB.js.map → chunk-34IUWNRX.js.map} +0 -0
- /package/dist/shared/{chunk-T6C3NG2L.js.map → chunk-5HJT5NJ3.js.map} +0 -0
- /package/dist/shared/{chunk-XK2CERPB.js.map → chunk-5SNSUC6Q.js.map} +0 -0
- /package/dist/shared/{chunk-J45LSQT6.js.map → chunk-GNTJT7MR.js.map} +0 -0
- /package/dist/shared/{chunk-KQH6V22E.js.map → chunk-IPWYNE6Y.js.map} +0 -0
- /package/dist/shared/{chunk-TBT2PTGB.js.map → chunk-KRODRZNS.js.map} +0 -0
- /package/dist/shared/{chunk-ZVJNRKT4.js.map → chunk-ORIUCOED.js.map} +0 -0
- /package/dist/shared/{chunk-LGDDJJHK.js.map → chunk-PFZMRSHJ.js.map} +0 -0
- /package/dist/shared/{chunk-LPAQ47C6.js.map → chunk-RDOCVLCF.js.map} +0 -0
- /package/dist/shared/{chunk-FUUSAMN3.js.map → chunk-TGKNA2JS.js.map} +0 -0
- /package/dist/shared/{chunk-VTCHJT4O.js.map → chunk-UC75KRLX.js.map} +0 -0
- /package/dist/shared/{chunk-4KY7OZWD.js.map → chunk-VMIJ6MG5.js.map} +0 -0
- /package/dist/shared/{chunk-SRYBJ6NQ.js.map → chunk-VYA2FCTY.js.map} +0 -0
- /package/dist/shared/{chunk-FHA4DFIM.js.map → chunk-ZYQZUWF7.js.map} +0 -0
- /package/dist/shared/{chunk-2O5HVPID.js.map → chunk-ZZVYD4BG.js.map} +0 -0
|
@@ -12,16 +12,18 @@ import { loop } from "../props/dynamic";
|
|
|
12
12
|
import { border } from "../props/border";
|
|
13
13
|
import { shadow } from "../props/effects";
|
|
14
14
|
import type { BrickExample } from "./_types";
|
|
15
|
+
import { grow } from "../props/grow";
|
|
15
16
|
|
|
16
17
|
export const manifest = defineBrickManifest({
|
|
17
18
|
type: "testimonials",
|
|
18
19
|
name: "Testimonials",
|
|
19
|
-
description: "Display testimonials from users",
|
|
20
|
+
description: "Display a list of testimonials from users",
|
|
20
21
|
defaultWidth: { desktop: "100%" },
|
|
21
22
|
icon: HiOutlineChatBubbleBottomCenter,
|
|
22
23
|
consumesMultipleQueryRows: true,
|
|
23
|
-
aiInstructions: `This brick displays
|
|
24
|
+
aiInstructions: `This brick displays a list of testimonials with optional avatars and social icons.
|
|
24
25
|
It is typically used to showcase customer feedback or endorsements.
|
|
26
|
+
It can directly consume data from a page query to populate the testimonials dynamically.
|
|
25
27
|
Optionally either use an avatar or a social icon but not both at the same time.`,
|
|
26
28
|
props: defineProps(
|
|
27
29
|
{
|
|
@@ -77,17 +79,32 @@ Optionally either use an avatar or a social icon but not both at the same time.`
|
|
|
77
79
|
"ui:placeholder": "Not specified (static)",
|
|
78
80
|
}),
|
|
79
81
|
),
|
|
82
|
+
grow: Type.Optional(
|
|
83
|
+
grow({
|
|
84
|
+
default: true,
|
|
85
|
+
}),
|
|
86
|
+
),
|
|
80
87
|
testimonials: Type.Optional(
|
|
81
88
|
Type.Array(
|
|
82
89
|
Type.Object({
|
|
83
90
|
text: Type.String({
|
|
84
91
|
title: "Text",
|
|
85
92
|
default: "Amazing product!",
|
|
93
|
+
description: "The testimonial text",
|
|
86
94
|
"ui:multiline": true,
|
|
87
95
|
"ui:textarea-class": "h-20",
|
|
88
96
|
}),
|
|
89
|
-
author: Type.String({
|
|
90
|
-
|
|
97
|
+
author: Type.String({
|
|
98
|
+
title: "Author",
|
|
99
|
+
description: "Name of the person giving the testimonial",
|
|
100
|
+
default: "John Doe",
|
|
101
|
+
}),
|
|
102
|
+
subtitle: Type.Optional(
|
|
103
|
+
Type.String({
|
|
104
|
+
title: "Subtitle",
|
|
105
|
+
description: "Subtitle, can be a company, social handle, job title, etc",
|
|
106
|
+
}),
|
|
107
|
+
),
|
|
91
108
|
avatar: Type.Optional(
|
|
92
109
|
image({
|
|
93
110
|
title: "Avatar",
|
|
@@ -138,13 +155,13 @@ export type Manifest = typeof manifest;
|
|
|
138
155
|
|
|
139
156
|
export const examples: BrickExample<Manifest>[] = [
|
|
140
157
|
{
|
|
141
|
-
description: "SaaS platform testimonials with avatars",
|
|
158
|
+
description: "SaaS platform testimonials with avatars (static content)",
|
|
142
159
|
type: "testimonials",
|
|
143
160
|
props: {
|
|
144
161
|
testimonials: [
|
|
145
162
|
{
|
|
146
163
|
author: "Sarah Johnson",
|
|
147
|
-
|
|
164
|
+
subtitle: "TechCorp Solutions",
|
|
148
165
|
text: "This platform has completely transformed how we manage our projects. The intuitive interface and powerful automation features have saved us countless hours.",
|
|
149
166
|
avatar: {
|
|
150
167
|
src: "https://via.placeholder.com/80x80.png?text=SJ",
|
|
@@ -154,7 +171,7 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
154
171
|
},
|
|
155
172
|
{
|
|
156
173
|
author: "Mike Chen",
|
|
157
|
-
|
|
174
|
+
subtitle: "StartupFlow",
|
|
158
175
|
text: "Outstanding customer support and regular feature updates. We've been using this for over a year and it keeps getting better. Highly recommend!",
|
|
159
176
|
avatar: {
|
|
160
177
|
src: "https://via.placeholder.com/80x80.png?text=MC",
|
|
@@ -164,7 +181,7 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
164
181
|
},
|
|
165
182
|
{
|
|
166
183
|
author: "Emily Rodriguez",
|
|
167
|
-
|
|
184
|
+
subtitle: "Digital Agency Pro",
|
|
168
185
|
text: "The automation capabilities are game-changing. What used to take us days now happens automatically. It's like having an extra team member.",
|
|
169
186
|
avatar: {
|
|
170
187
|
src: "https://via.placeholder.com/80x80.png?text=ER",
|
|
@@ -176,135 +193,7 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
176
193
|
},
|
|
177
194
|
},
|
|
178
195
|
{
|
|
179
|
-
description: "
|
|
180
|
-
type: "testimonials",
|
|
181
|
-
props: {
|
|
182
|
-
testimonials: [
|
|
183
|
-
{
|
|
184
|
-
author: "Jessica Williams",
|
|
185
|
-
company: "Happy Customer",
|
|
186
|
-
text: "Amazing product quality and fast shipping! The item exceeded my expectations and the customer service was excellent when I had questions.",
|
|
187
|
-
avatar: {
|
|
188
|
-
src: "https://via.placeholder.com/60x60.png?text=JW",
|
|
189
|
-
alt: "Jessica Williams customer photo",
|
|
190
|
-
},
|
|
191
|
-
socialIcon: "mdi:star",
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
author: "David Park",
|
|
195
|
-
text: "Five stars! Been using this product for 6 months and it's still going strong. Definitely worth the investment and I've already recommended it to friends.",
|
|
196
|
-
avatar: {
|
|
197
|
-
src: "https://via.placeholder.com/60x60.png?text=DP",
|
|
198
|
-
alt: "David Park customer photo",
|
|
199
|
-
},
|
|
200
|
-
socialIcon: "mdi:thumbs-up",
|
|
201
|
-
},
|
|
202
|
-
],
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
description: "Agency client testimonials with company info",
|
|
207
|
-
type: "testimonials",
|
|
208
|
-
props: {
|
|
209
|
-
testimonials: [
|
|
210
|
-
{
|
|
211
|
-
author: "Rachel Thompson",
|
|
212
|
-
company: "Global Enterprises",
|
|
213
|
-
text: "The team delivered exceptional results on time and within budget. Their creative approach and attention to detail made all the difference for our brand.",
|
|
214
|
-
avatar: {
|
|
215
|
-
src: "https://via.placeholder.com/70x70.png?text=RT",
|
|
216
|
-
alt: "Rachel Thompson headshot",
|
|
217
|
-
},
|
|
218
|
-
socialIcon: "mdi:briefcase",
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
author: "Alex Kumar",
|
|
222
|
-
company: "Innovation Labs",
|
|
223
|
-
text: "Working with this agency was a game-changer for our digital presence. They understood our vision and brought it to life beautifully.",
|
|
224
|
-
avatar: {
|
|
225
|
-
src: "https://via.placeholder.com/70x70.png?text=AK",
|
|
226
|
-
alt: "Alex Kumar profile",
|
|
227
|
-
},
|
|
228
|
-
socialIcon: "mdi:lightbulb",
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
author: "Maria Santos",
|
|
232
|
-
company: "Retail Plus",
|
|
233
|
-
text: "Professional, creative, and results-driven. Our website traffic increased by 200% after their redesign. Couldn't be happier!",
|
|
234
|
-
avatar: {
|
|
235
|
-
src: "https://via.placeholder.com/70x70.png?text=MS",
|
|
236
|
-
alt: "Maria Santos photo",
|
|
237
|
-
},
|
|
238
|
-
socialIcon: "mdi:chart-line",
|
|
239
|
-
},
|
|
240
|
-
],
|
|
241
|
-
},
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
description: "App user feedback",
|
|
245
|
-
type: "testimonials",
|
|
246
|
-
props: {
|
|
247
|
-
testimonials: [
|
|
248
|
-
{
|
|
249
|
-
author: "Tom Wilson",
|
|
250
|
-
text: "This app has made my daily routine so much easier. Love the clean interface and how everything just works seamlessly across all my devices.",
|
|
251
|
-
avatar: {
|
|
252
|
-
src: "https://via.placeholder.com/65x65.png?text=TW",
|
|
253
|
-
alt: "Tom Wilson user photo",
|
|
254
|
-
},
|
|
255
|
-
socialIcon: "mdi:cellphone",
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
author: "Lisa Chang",
|
|
259
|
-
text: "Been using this app for months and it's become essential to my workflow. The latest update with AI features is incredibly impressive.",
|
|
260
|
-
avatar: {
|
|
261
|
-
src: "https://via.placeholder.com/65x65.png?text=LC",
|
|
262
|
-
alt: "Lisa Chang profile picture",
|
|
263
|
-
},
|
|
264
|
-
socialIcon: "mdi:robot",
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
author: "James Miller",
|
|
268
|
-
text: "Simple, powerful, and reliable. Exactly what I was looking for. The customer support team is also very responsive and helpful.",
|
|
269
|
-
avatar: {
|
|
270
|
-
src: "https://via.placeholder.com/65x65.png?text=JM",
|
|
271
|
-
alt: "James Miller avatar",
|
|
272
|
-
},
|
|
273
|
-
socialIcon: "mdi:heart",
|
|
274
|
-
},
|
|
275
|
-
],
|
|
276
|
-
},
|
|
277
|
-
},
|
|
278
|
-
{
|
|
279
|
-
description: "Course/education testimonials with social icons",
|
|
280
|
-
type: "testimonials",
|
|
281
|
-
props: {
|
|
282
|
-
testimonials: [
|
|
283
|
-
{
|
|
284
|
-
author: "Amanda Foster",
|
|
285
|
-
company: "UX Designer",
|
|
286
|
-
text: "This course completely changed my career trajectory. The practical projects and expert feedback helped me land my dream job in just 3 months.",
|
|
287
|
-
avatar: {
|
|
288
|
-
src: "https://via.placeholder.com/75x75.png?text=AF",
|
|
289
|
-
alt: "Amanda Foster student photo",
|
|
290
|
-
},
|
|
291
|
-
socialIcon: "mdi:school",
|
|
292
|
-
},
|
|
293
|
-
{
|
|
294
|
-
author: "Carlos Rodriguez",
|
|
295
|
-
company: "Software Engineer",
|
|
296
|
-
text: "The instructors are industry experts and the content is always up-to-date. I've taken three courses here and each one exceeded my expectations.",
|
|
297
|
-
avatar: {
|
|
298
|
-
src: "https://via.placeholder.com/75x75.png?text=CR",
|
|
299
|
-
alt: "Carlos Rodriguez profile",
|
|
300
|
-
},
|
|
301
|
-
socialIcon: "mdi:code-tags",
|
|
302
|
-
},
|
|
303
|
-
],
|
|
304
|
-
},
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
description: "Simple testimonials without avatars",
|
|
196
|
+
description: "Simple testimonials without avatars (static content)",
|
|
308
197
|
type: "testimonials",
|
|
309
198
|
props: {
|
|
310
199
|
testimonials: [
|
|
@@ -326,72 +215,6 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
326
215
|
],
|
|
327
216
|
},
|
|
328
217
|
},
|
|
329
|
-
{
|
|
330
|
-
description: "Consultant testimonials with professional focus",
|
|
331
|
-
type: "testimonials",
|
|
332
|
-
props: {
|
|
333
|
-
testimonials: [
|
|
334
|
-
{
|
|
335
|
-
author: "Dr. Patricia Lee",
|
|
336
|
-
company: "Medical Practice Solutions",
|
|
337
|
-
text: "The consulting services provided were invaluable to our practice. Revenue increased by 40% and patient satisfaction scores improved significantly.",
|
|
338
|
-
avatar: {
|
|
339
|
-
src: "https://via.placeholder.com/80x80.png?text=PL",
|
|
340
|
-
alt: "Dr. Patricia Lee headshot",
|
|
341
|
-
},
|
|
342
|
-
socialIcon: "mdi:medical-bag",
|
|
343
|
-
},
|
|
344
|
-
{
|
|
345
|
-
author: "Robert Kim",
|
|
346
|
-
company: "Manufacturing Inc.",
|
|
347
|
-
text: "Their strategic insights helped us streamline operations and reduce costs by 25%. The ROI was evident within the first quarter.",
|
|
348
|
-
avatar: {
|
|
349
|
-
src: "https://via.placeholder.com/80x80.png?text=RK",
|
|
350
|
-
alt: "Robert Kim executive photo",
|
|
351
|
-
},
|
|
352
|
-
socialIcon: "mdi:factory",
|
|
353
|
-
},
|
|
354
|
-
],
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
description: "Event testimonials with social media icons",
|
|
359
|
-
type: "testimonials",
|
|
360
|
-
props: {
|
|
361
|
-
testimonials: [
|
|
362
|
-
{
|
|
363
|
-
author: "Jennifer Adams",
|
|
364
|
-
company: "Marketing Director",
|
|
365
|
-
text: "Best conference I've attended in years! The networking opportunities were incredible and the speakers were top-notch industry leaders.",
|
|
366
|
-
avatar: {
|
|
367
|
-
src: "https://via.placeholder.com/70x70.png?text=JA",
|
|
368
|
-
alt: "Jennifer Adams conference attendee",
|
|
369
|
-
},
|
|
370
|
-
socialIcon: "mdi:twitter",
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
author: "Michael Brown",
|
|
374
|
-
company: "Tech Startup Founder",
|
|
375
|
-
text: "The workshops were incredibly practical and I left with actionable strategies I could implement immediately. Already planning to attend next year!",
|
|
376
|
-
avatar: {
|
|
377
|
-
src: "https://via.placeholder.com/70x70.png?text=MB",
|
|
378
|
-
alt: "Michael Brown participant photo",
|
|
379
|
-
},
|
|
380
|
-
socialIcon: "mdi:linkedin",
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
author: "Sophie Chen",
|
|
384
|
-
company: "Product Manager",
|
|
385
|
-
text: "Amazing organization and valuable content. Met so many like-minded professionals and learned cutting-edge techniques I'm excited to try.",
|
|
386
|
-
avatar: {
|
|
387
|
-
src: "https://via.placeholder.com/70x70.png?text=SC",
|
|
388
|
-
alt: "Sophie Chen attendee photo",
|
|
389
|
-
},
|
|
390
|
-
socialIcon: "mdi:instagram",
|
|
391
|
-
},
|
|
392
|
-
],
|
|
393
|
-
},
|
|
394
|
-
},
|
|
395
218
|
{
|
|
396
219
|
description: "Dynamic customer testimonials using customerReviews query",
|
|
397
220
|
type: "testimonials",
|
|
@@ -399,7 +222,7 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
399
222
|
testimonials: [
|
|
400
223
|
{
|
|
401
224
|
author: "{{customerReviews.customerName}}",
|
|
402
|
-
|
|
225
|
+
subtitle: "{{customerReviews.company}}",
|
|
403
226
|
text: "{{customerReviews.reviewText}}",
|
|
404
227
|
avatar: {
|
|
405
228
|
src: "{{customerReviews.customerPhoto}}",
|
|
@@ -420,7 +243,7 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
420
243
|
testimonials: [
|
|
421
244
|
{
|
|
422
245
|
author: "{{clientFeedback.clientName}}",
|
|
423
|
-
|
|
246
|
+
subtitle: "{{clientFeedback.companyName}} - {{clientFeedback.position}}",
|
|
424
247
|
text: "{{clientFeedback.testimonial}}",
|
|
425
248
|
avatar: {
|
|
426
249
|
src: "{{clientFeedback.headshot}}",
|
|
@@ -454,25 +277,4 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
454
277
|
},
|
|
455
278
|
},
|
|
456
279
|
},
|
|
457
|
-
{
|
|
458
|
-
description: "Dynamic employee testimonials using teamTestimonials query",
|
|
459
|
-
type: "testimonials",
|
|
460
|
-
props: {
|
|
461
|
-
testimonials: [
|
|
462
|
-
{
|
|
463
|
-
author: "{{teamTestimonials.employeeName}}",
|
|
464
|
-
company: "{{teamTestimonials.department}} - {{teamTestimonials.jobTitle}}",
|
|
465
|
-
text: "{{teamTestimonials.testimonial}}",
|
|
466
|
-
avatar: {
|
|
467
|
-
src: "{{teamTestimonials.profilePhoto}}",
|
|
468
|
-
alt: "{{teamTestimonials.employeeName}} profile photo",
|
|
469
|
-
},
|
|
470
|
-
socialIcon: "{{teamTestimonials.socialIcon}}",
|
|
471
|
-
},
|
|
472
|
-
],
|
|
473
|
-
loop: {
|
|
474
|
-
over: "teamTestimonials",
|
|
475
|
-
},
|
|
476
|
-
},
|
|
477
|
-
},
|
|
478
280
|
];
|
|
@@ -6,10 +6,10 @@ import { RxTextAlignLeft } from "react-icons/rx";
|
|
|
6
6
|
import { Type } from "@sinclair/typebox";
|
|
7
7
|
import { alignItems } from "../props/align";
|
|
8
8
|
import { shadow } from "../props/effects";
|
|
9
|
-
import { colorPreset } from "../props/color-preset";
|
|
10
|
-
import { loop } from "../props/dynamic";
|
|
11
9
|
import { cssLength } from "../props/css-length";
|
|
12
10
|
import type { BrickExample } from "./_types";
|
|
11
|
+
import { backgroundColor } from "../props/background";
|
|
12
|
+
import { color } from "../props/color";
|
|
13
13
|
|
|
14
14
|
export const manifest = defineBrickManifest({
|
|
15
15
|
type: "text",
|
|
@@ -26,25 +26,23 @@ CONTENT FORMATTING:
|
|
|
26
26
|
- Lists: <ul><li>Item 1</li><li>Item 2</li></ul>
|
|
27
27
|
|
|
28
28
|
STYLING OPTIONS:
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
- border: Add borders with width ("border", "border-2") and color ("border-gray-300", "border-primary-500")
|
|
33
|
-
- shadow: Add depth with "shadow-sm", "shadow-md", "shadow-lg"
|
|
29
|
+
- "color": Leave empty to inherit parent text color, which is the recommended setting when the brick is a direct child of a section or box with background color.
|
|
30
|
+
- "backgroundColor": Only use when the text brick is a direct child of a section.Leave empty for transparent background, or set to a color like "bg-xxx-nnn" for emphasis.
|
|
31
|
+
- "padding": Use CSS values like "1rem", "2rem", "24px" for internal spacing
|
|
34
32
|
|
|
35
33
|
WHEN TO USE:
|
|
34
|
+
- All text content that requires formatting
|
|
36
35
|
- Rich content sections (About Us, Service descriptions)
|
|
37
36
|
- Announcements and notices
|
|
38
37
|
- Product descriptions with formatting
|
|
39
38
|
- Quotes and testimonials
|
|
40
39
|
- FAQ content and detailed explanations
|
|
41
|
-
- Footer information and legal text
|
|
42
40
|
|
|
43
41
|
BEST PRACTICES:
|
|
44
42
|
- Keep HTML minimal - complex layouts should use multiple components
|
|
45
43
|
- Use semantic headings (h2, h3, h4) for proper hierarchy
|
|
46
|
-
- Center-align for quotes/testimonials, left-align for body text
|
|
47
|
-
|
|
44
|
+
- Center-align for quotes/testimonials, left-align for body text`,
|
|
45
|
+
|
|
48
46
|
defaultWidth: {
|
|
49
47
|
mobile: "100%",
|
|
50
48
|
},
|
|
@@ -55,9 +53,14 @@ BEST PRACTICES:
|
|
|
55
53
|
staticClasses: "prose lg:prose-lg",
|
|
56
54
|
icon: RxTextAlignLeft,
|
|
57
55
|
props: defineProps({
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
title: "
|
|
56
|
+
backgroundColor: Type.Optional(
|
|
57
|
+
backgroundColor({
|
|
58
|
+
title: "Background color",
|
|
59
|
+
}),
|
|
60
|
+
),
|
|
61
|
+
color: Type.Optional(
|
|
62
|
+
color({
|
|
63
|
+
title: "Text color",
|
|
61
64
|
}),
|
|
62
65
|
),
|
|
63
66
|
content: textContent({
|
|
@@ -66,12 +69,6 @@ BEST PRACTICES:
|
|
|
66
69
|
// category: "content",
|
|
67
70
|
// },
|
|
68
71
|
}),
|
|
69
|
-
verticalAlign: Type.Optional(
|
|
70
|
-
alignItems({
|
|
71
|
-
default: "items-center",
|
|
72
|
-
title: "Align",
|
|
73
|
-
}),
|
|
74
|
-
),
|
|
75
72
|
padding: Type.Optional(
|
|
76
73
|
cssLength({
|
|
77
74
|
default: "2rem",
|
|
@@ -127,9 +124,6 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
127
124
|
props: {
|
|
128
125
|
content:
|
|
129
126
|
"<h2>About Our Company</h2><p>We've been serving customers since 2010, building trust through quality products and exceptional service.</p>",
|
|
130
|
-
colorPreset: {
|
|
131
|
-
color: "primary-100",
|
|
132
|
-
},
|
|
133
127
|
},
|
|
134
128
|
},
|
|
135
129
|
{
|
|
@@ -148,9 +142,6 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
148
142
|
content:
|
|
149
143
|
"<p>Scheduled maintenance will occur on <em>Sunday, March 15th</em> from 2:00 AM to 6:00 AM UTC.</p><p>During this time, some features may be temporarily unavailable. We apologize for any inconvenience.</p>",
|
|
150
144
|
padding: "1rem",
|
|
151
|
-
colorPreset: {
|
|
152
|
-
color: "neutral-700",
|
|
153
|
-
},
|
|
154
145
|
border: {
|
|
155
146
|
width: "border",
|
|
156
147
|
color: "border-neutral-400",
|
|
@@ -172,13 +163,9 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
172
163
|
props: {
|
|
173
164
|
content:
|
|
174
165
|
"<h3 style='text-align: center'>Ready to Get Started?</h3><p style='text-align: center'>Join thousands of satisfied customers who trust our platform. <strong>Sign up today</strong> and experience the difference!</p><p style='text-align: center'><a href='/signup'>Create Your Free Account</a></p>",
|
|
175
|
-
colorPreset: {
|
|
176
|
-
color: "secondary-200",
|
|
177
|
-
},
|
|
178
166
|
padding: "2.5rem",
|
|
179
167
|
rounding: "rounded-xl",
|
|
180
168
|
shadow: "shadow-md",
|
|
181
|
-
verticalAlign: "items-center",
|
|
182
169
|
},
|
|
183
170
|
},
|
|
184
171
|
{
|
|
@@ -187,9 +174,6 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
187
174
|
props: {
|
|
188
175
|
content:
|
|
189
176
|
"<h4>API Authentication</h4><p>To authenticate your requests, include your API key in the header:</p><p><strong>Authorization: Bearer YOUR_API_KEY</strong></p><p>All API endpoints require authentication. You can find your API key in the <a href='/dashboard'>dashboard settings</a>.</p>",
|
|
190
|
-
colorPreset: {
|
|
191
|
-
color: "accent-100",
|
|
192
|
-
},
|
|
193
177
|
padding: "1.5rem",
|
|
194
178
|
rounding: "rounded-md",
|
|
195
179
|
border: {
|
|
@@ -204,13 +188,9 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
204
188
|
props: {
|
|
205
189
|
content:
|
|
206
190
|
"<h3>✅ Payment Successful!</h3><p>Thank you for your purchase. Your order <strong>#12345</strong> has been confirmed.</p><p>You will receive an email confirmation shortly at your registered email address.</p>",
|
|
207
|
-
colorPreset: {
|
|
208
|
-
color: "primary-200",
|
|
209
|
-
},
|
|
210
191
|
padding: "2rem",
|
|
211
192
|
rounding: "rounded-lg",
|
|
212
193
|
shadow: "shadow-sm",
|
|
213
|
-
verticalAlign: "items-start",
|
|
214
194
|
},
|
|
215
195
|
},
|
|
216
196
|
{
|
|
@@ -219,11 +199,7 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
219
199
|
props: {
|
|
220
200
|
content:
|
|
221
201
|
"<p style='text-align: center'>© 2024 Company Name. All rights reserved.</p><p style='text-align: center'><a href='/privacy'>Privacy Policy</a> | <a href='/terms'>Terms of Service</a> | <a href='/contact'>Contact Us</a></p><p style='text-align: center'><em>Follow us on social media for the latest updates</em></p>",
|
|
222
|
-
colorPreset: {
|
|
223
|
-
color: "neutral-800",
|
|
224
|
-
},
|
|
225
202
|
padding: "1.5rem",
|
|
226
|
-
verticalAlign: "items-end",
|
|
227
203
|
},
|
|
228
204
|
},
|
|
229
205
|
{
|
|
@@ -247,9 +223,6 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
247
223
|
props: {
|
|
248
224
|
content:
|
|
249
225
|
"<h3 style='text-align: center'>⚠️ URGENT NOTICE</h3><p style='text-align: center'><strong>System maintenance is currently in progress.</strong></p><p style='text-align: center'>Some services may be <em>temporarily unavailable</em>. We expect full restoration by 4:00 PM EST.</p><p style='text-align: center'>For urgent support, please <a href='/emergency-contact'>contact our emergency line</a>.</p>",
|
|
250
|
-
colorPreset: {
|
|
251
|
-
color: "accent-400",
|
|
252
|
-
},
|
|
253
226
|
padding: "2rem",
|
|
254
227
|
rounding: "rounded-md",
|
|
255
228
|
border: {
|
|
@@ -257,7 +230,6 @@ export const examples: BrickExample<Manifest>[] = [
|
|
|
257
230
|
color: "border-accent-600",
|
|
258
231
|
},
|
|
259
232
|
shadow: "shadow-xl",
|
|
260
|
-
verticalAlign: "items-center",
|
|
261
233
|
},
|
|
262
234
|
},
|
|
263
235
|
];
|
|
@@ -53,7 +53,8 @@ export function backgroundColor(options: SchemaOptions = {}) {
|
|
|
53
53
|
title: "Background color",
|
|
54
54
|
// $id: "styles:backgroundColor",
|
|
55
55
|
"ai:instructions":
|
|
56
|
-
"
|
|
56
|
+
"Must be formated like `bg-<variant>-<shade>`, variants being primary, secondary, accent and neutral, or base and shades between 100 and 900, except the base with takes shades betwen 100 and 300 only.",
|
|
57
|
+
pattern: "^bg-(primary|secondary|accent|neutral|base)-?(50|100|200|300|400|500|600|700|800|900)?$",
|
|
57
58
|
"ui:field": "color",
|
|
58
59
|
"ui:color-type": "background",
|
|
59
60
|
// "ui:advanced": true,
|
|
@@ -4,7 +4,9 @@ export function color(options: StringOptions = {}) {
|
|
|
4
4
|
return Type.String({
|
|
5
5
|
title: "Text color",
|
|
6
6
|
"ai:instructions":
|
|
7
|
-
"
|
|
7
|
+
"Format is `text-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900",
|
|
8
|
+
pattern:
|
|
9
|
+
"^text-(primary|secondary|accent|neutral|base|inherit)-?(50|100|200|300|400|500|600|700|800|900)?$",
|
|
8
10
|
"ui:styleId": "styles:color",
|
|
9
11
|
"ui:field": "color",
|
|
10
12
|
"ui:color-type": "text",
|
|
@@ -18,7 +20,8 @@ export function borderColor(options: StringOptions = {}) {
|
|
|
18
20
|
return Type.String({
|
|
19
21
|
title: "Border color",
|
|
20
22
|
"ai:instructions":
|
|
21
|
-
"
|
|
23
|
+
"Format is `border-<variant>-<shade>`, variants being `primary`, `secondary`, `accent` and `neutral`, and shades between 50 and 900",
|
|
24
|
+
pattern: "^border-(primary|secondary|accent|neutral|base)-?(50|100|200|300|400|500|600|700|800|900)?$",
|
|
22
25
|
"ui:styleId": "styles:borderColor",
|
|
23
26
|
"ui:field": "color",
|
|
24
27
|
"ui:color-type": "border",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Static, type TString, Type } from "@sinclair/typebox";
|
|
2
2
|
import { cssLength } from "./css-length";
|
|
3
3
|
import { alignSelf } from "./align";
|
|
4
|
+
import { grow } from "./grow";
|
|
4
5
|
|
|
5
6
|
export function hidden() {
|
|
6
7
|
return Type.Object(
|
|
@@ -48,14 +49,7 @@ export const commonProps = {
|
|
|
48
49
|
"ui:field": "hidden",
|
|
49
50
|
}),
|
|
50
51
|
),
|
|
51
|
-
grow: Type.Optional(
|
|
52
|
-
Type.Boolean({
|
|
53
|
-
title: "Auto expand",
|
|
54
|
-
description: "If set, the brick will grow to fill the available space of its parent section or box.",
|
|
55
|
-
"ui:styleId": "styles:grow",
|
|
56
|
-
"ui:responsive": true,
|
|
57
|
-
}),
|
|
58
|
-
),
|
|
52
|
+
grow: Type.Optional(grow()),
|
|
59
53
|
alignSelf: Type.Optional(alignSelf()),
|
|
60
54
|
};
|
|
61
55
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Type, type SchemaOptions } from "@sinclair/typebox";
|
|
2
|
+
|
|
3
|
+
export function grow(options: SchemaOptions = {}) {
|
|
4
|
+
return Type.Boolean({
|
|
5
|
+
title: "Auto expand",
|
|
6
|
+
description: "If set, the brick will grow to fill the available space of its parent section or box.",
|
|
7
|
+
"ui:styleId": "styles:grow",
|
|
8
|
+
"ui:responsive": true,
|
|
9
|
+
...options,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -22,6 +22,46 @@ export function image(options: PropImageOptions = {}) {
|
|
|
22
22
|
"ui:placeholder": "Your image description",
|
|
23
23
|
}),
|
|
24
24
|
),
|
|
25
|
+
aspectRatio: Type.Optional(
|
|
26
|
+
StringEnum(
|
|
27
|
+
[
|
|
28
|
+
"auto",
|
|
29
|
+
"1:1",
|
|
30
|
+
"4:3",
|
|
31
|
+
"3:4",
|
|
32
|
+
"16:9",
|
|
33
|
+
"9:16",
|
|
34
|
+
"2:3",
|
|
35
|
+
"3:2",
|
|
36
|
+
"5:4",
|
|
37
|
+
"4:5",
|
|
38
|
+
"21:9",
|
|
39
|
+
"9:21",
|
|
40
|
+
"original",
|
|
41
|
+
],
|
|
42
|
+
{
|
|
43
|
+
enumNames: [
|
|
44
|
+
"Auto",
|
|
45
|
+
"1:1 (Square)",
|
|
46
|
+
"4:3 (Standard landscape)",
|
|
47
|
+
"3:4 (Standard portrait)",
|
|
48
|
+
"16:9 (Widescreen)",
|
|
49
|
+
"9:16 (Vertical video)",
|
|
50
|
+
"2:3 (Portrait)",
|
|
51
|
+
"3:2 (Landscape)",
|
|
52
|
+
"5:4 (Classic photo)",
|
|
53
|
+
"4:5 (Instagram post)",
|
|
54
|
+
"21:9 (Cinema widescreen)",
|
|
55
|
+
"9:21 (Tall vertical)",
|
|
56
|
+
"Original",
|
|
57
|
+
],
|
|
58
|
+
title: "Aspect Ratio",
|
|
59
|
+
description: "The aspect ratio of the image",
|
|
60
|
+
"ui:field": "enum",
|
|
61
|
+
"ui:styleId": "styles:aspectRatio",
|
|
62
|
+
},
|
|
63
|
+
),
|
|
64
|
+
),
|
|
25
65
|
fit: Type.Optional(
|
|
26
66
|
StringEnum(["object-none", "object-contain", "object-cover", "object-fill", "object-scale-down"], {
|
|
27
67
|
enumNames: ["None", "Contain", "Cover", "Fill", "Scale down"],
|
|
@@ -30,6 +30,7 @@ export function urlOrPageId(options: StringOptions = {}) {
|
|
|
30
30
|
{
|
|
31
31
|
// $id: "content:urlOrPageId",
|
|
32
32
|
title: "URL",
|
|
33
|
+
description: "A URL or a page ID",
|
|
33
34
|
metadata: {
|
|
34
35
|
category: "content",
|
|
35
36
|
},
|
|
@@ -48,6 +49,7 @@ type IconOptions = StrFieldOptions & { "ui:default-icon-collection"?: string };
|
|
|
48
49
|
export function icon(options: IconOptions = {}) {
|
|
49
50
|
return Type.String({
|
|
50
51
|
title: "Icon",
|
|
52
|
+
description: "An icon from the Iconify collection",
|
|
51
53
|
"ai:instructions": "Use a iconify reference like 'mdi:heart' or 'fa-solid:coffee'.",
|
|
52
54
|
"ui:field": "iconify",
|
|
53
55
|
// $id: "assets:icon",
|