@wealthx/shadcn 1.5.12 → 1.5.13
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/.turbo/turbo-build.log +74 -74
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-CPM6P63C.mjs → chunk-BF5FKUF6.mjs} +53 -24
- package/dist/chunk-KICT4VQL.mjs +508 -0
- package/dist/chunk-V23CBULF.mjs +432 -0
- package/dist/components/ui/appointment-calendar-view.js +177 -176
- package/dist/components/ui/appointment-calendar-view.mjs +1 -1
- package/dist/components/ui/bank-statement-generate-dialog.js +163 -76
- package/dist/components/ui/bank-statement-generate-dialog.mjs +2 -1
- package/dist/components/ui/resource-center/index.js +1030 -0
- package/dist/components/ui/resource-center/index.mjs +29 -0
- package/dist/index.js +540 -364
- package/dist/index.mjs +15 -13
- package/dist/styles.css +1 -1
- package/package.json +4 -4
- package/src/components/index.tsx +2 -0
- package/src/components/ui/appointment-calendar-view.tsx +211 -199
- package/src/components/ui/bank-statement-generate-dialog.tsx +125 -97
- package/src/components/ui/resource-center/index.tsx +35 -0
- package/src/components/ui/resource-center/resource-cards.tsx +218 -0
- package/src/components/ui/resource-center/resource-carousel.tsx +122 -0
- package/src/components/ui/resource-center/resource-center-header.tsx +95 -0
- package/src/components/ui/resource-center/resource-email-editor-dialog.tsx +131 -0
- package/src/components/ui/resource-center/resource-modal.tsx +76 -0
- package/src/components/ui/resource-center/types.ts +81 -0
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +1 -1
- package/dist/chunk-IODGRCQG.mjs +0 -438
- package/dist/chunk-XYWEGBAA.mjs +0 -348
- package/dist/components/ui/resource-center.js +0 -748
- package/dist/components/ui/resource-center.mjs +0 -24
- package/src/components/ui/resource-center.tsx +0 -539
package/dist/chunk-XYWEGBAA.mjs
DELETED
|
@@ -1,348 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Dialog,
|
|
3
|
-
DialogContent,
|
|
4
|
-
DialogHeader,
|
|
5
|
-
DialogTitle
|
|
6
|
-
} from "./chunk-LI2CTS5O.mjs";
|
|
7
|
-
import {
|
|
8
|
-
Badge
|
|
9
|
-
} from "./chunk-X6RC5UWB.mjs";
|
|
10
|
-
import {
|
|
11
|
-
Button
|
|
12
|
-
} from "./chunk-NOOEKOWY.mjs";
|
|
13
|
-
import {
|
|
14
|
-
cn
|
|
15
|
-
} from "./chunk-AFML43VJ.mjs";
|
|
16
|
-
|
|
17
|
-
// src/components/ui/resource-center.tsx
|
|
18
|
-
import { useRef, useState } from "react";
|
|
19
|
-
import { ChevronLeft, ChevronRight, Download, Play } from "lucide-react";
|
|
20
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
-
function ResourceModal({
|
|
22
|
-
open,
|
|
23
|
-
onClose,
|
|
24
|
-
title,
|
|
25
|
-
videoUrl,
|
|
26
|
-
tags,
|
|
27
|
-
attachments
|
|
28
|
-
}) {
|
|
29
|
-
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (v) => !v && onClose(), children: /* @__PURE__ */ jsxs(
|
|
30
|
-
DialogContent,
|
|
31
|
-
{
|
|
32
|
-
size: "2xl",
|
|
33
|
-
className: "flex flex-col gap-4 p-0 overflow-hidden",
|
|
34
|
-
children: [
|
|
35
|
-
/* @__PURE__ */ jsxs(DialogHeader, { className: "px-6 pt-6 pb-0", children: [
|
|
36
|
-
/* @__PURE__ */ jsx(DialogTitle, { className: "text-lg font-semibold", children: title }),
|
|
37
|
-
tags && tags.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5 pt-1", children: tags.map((tag) => /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs", children: tag }, tag)) })
|
|
38
|
-
] }),
|
|
39
|
-
videoUrl && /* @__PURE__ */ jsx("div", { className: "aspect-video w-full bg-foreground", children: /* @__PURE__ */ jsx(
|
|
40
|
-
"iframe",
|
|
41
|
-
{
|
|
42
|
-
src: videoUrl,
|
|
43
|
-
title,
|
|
44
|
-
className: "h-full w-full",
|
|
45
|
-
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
46
|
-
allowFullScreen: true
|
|
47
|
-
}
|
|
48
|
-
) }),
|
|
49
|
-
attachments && attachments.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 px-6 pb-6", children: [
|
|
50
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground", children: "Attachments" }),
|
|
51
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1", children: attachments.map((attachment, i) => /* @__PURE__ */ jsxs(
|
|
52
|
-
"a",
|
|
53
|
-
{
|
|
54
|
-
href: attachment.url,
|
|
55
|
-
download: true,
|
|
56
|
-
className: "flex items-center gap-2 text-sm text-primary hover:underline",
|
|
57
|
-
children: [
|
|
58
|
-
/* @__PURE__ */ jsx(Download, { className: "size-3.5 shrink-0" }),
|
|
59
|
-
attachment.name
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
i
|
|
63
|
-
)) })
|
|
64
|
-
] }),
|
|
65
|
-
(!attachments || attachments.length === 0) && /* @__PURE__ */ jsx("div", { className: "pb-2" })
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
) });
|
|
69
|
-
}
|
|
70
|
-
function ResourceVideoCard({ video }) {
|
|
71
|
-
const [modalOpen, setModalOpen] = useState(false);
|
|
72
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
73
|
-
/* @__PURE__ */ jsxs(
|
|
74
|
-
"button",
|
|
75
|
-
{
|
|
76
|
-
type: "button",
|
|
77
|
-
onClick: () => setModalOpen(true),
|
|
78
|
-
className: "group relative flex w-full flex-col gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
79
|
-
children: [
|
|
80
|
-
/* @__PURE__ */ jsxs("div", { className: "relative w-full overflow-hidden bg-muted aspect-video", children: [
|
|
81
|
-
video.thumbnailUrl ? /* @__PURE__ */ jsx(
|
|
82
|
-
"img",
|
|
83
|
-
{
|
|
84
|
-
src: video.thumbnailUrl,
|
|
85
|
-
alt: video.title,
|
|
86
|
-
className: "h-full w-full object-cover transition-transform duration-200 group-hover:scale-105"
|
|
87
|
-
}
|
|
88
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(Play, { className: "size-10 text-muted-foreground opacity-40" }) }),
|
|
89
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/30 opacity-0 transition-opacity duration-200 group-hover:opacity-100", children: /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center bg-background/90", children: /* @__PURE__ */ jsx(Play, { className: "size-5 text-foreground" }) }) }),
|
|
90
|
-
video.duration && /* @__PURE__ */ jsx("span", { className: "absolute bottom-2 right-2 bg-black/70 px-1.5 py-0.5 text-xs font-medium text-white", children: video.duration })
|
|
91
|
-
] }),
|
|
92
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground leading-snug line-clamp-2 group-hover:text-primary", children: video.title })
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
),
|
|
96
|
-
/* @__PURE__ */ jsx(
|
|
97
|
-
ResourceModal,
|
|
98
|
-
{
|
|
99
|
-
open: modalOpen,
|
|
100
|
-
onClose: () => setModalOpen(false),
|
|
101
|
-
title: video.title,
|
|
102
|
-
videoUrl: video.videoUrl,
|
|
103
|
-
tags: video.tags,
|
|
104
|
-
attachments: video.attachments
|
|
105
|
-
}
|
|
106
|
-
)
|
|
107
|
-
] });
|
|
108
|
-
}
|
|
109
|
-
function ResourceEmailTemplateCard({
|
|
110
|
-
template,
|
|
111
|
-
onClick
|
|
112
|
-
}) {
|
|
113
|
-
if (template.isAddTemplate) {
|
|
114
|
-
return /* @__PURE__ */ jsxs(
|
|
115
|
-
"button",
|
|
116
|
-
{
|
|
117
|
-
type: "button",
|
|
118
|
-
onClick,
|
|
119
|
-
className: cn(
|
|
120
|
-
"flex w-full flex-col items-center justify-center gap-3",
|
|
121
|
-
"border-2 border-dashed border-border bg-muted/40",
|
|
122
|
-
"aspect-[3/4] hover:border-primary hover:bg-muted/70 transition-colors",
|
|
123
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
124
|
-
),
|
|
125
|
-
children: [
|
|
126
|
-
/* @__PURE__ */ jsx("div", { className: "flex size-10 items-center justify-center border-2 border-dashed border-muted-foreground/40", children: /* @__PURE__ */ jsx("span", { className: "text-2xl text-muted-foreground/60", children: "+" }) }),
|
|
127
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: "Add Template" })
|
|
128
|
-
]
|
|
129
|
-
}
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
return /* @__PURE__ */ jsxs(
|
|
133
|
-
"button",
|
|
134
|
-
{
|
|
135
|
-
type: "button",
|
|
136
|
-
onClick,
|
|
137
|
-
className: "group relative flex w-full flex-col gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
138
|
-
children: [
|
|
139
|
-
/* @__PURE__ */ jsxs("div", { className: "relative w-full overflow-hidden border border-border bg-background aspect-[3/4]", children: [
|
|
140
|
-
template.htmlContent ? /* @__PURE__ */ jsx(
|
|
141
|
-
"iframe",
|
|
142
|
-
{
|
|
143
|
-
srcDoc: template.htmlContent,
|
|
144
|
-
title: template.title,
|
|
145
|
-
className: "h-full w-full pointer-events-none",
|
|
146
|
-
style: {
|
|
147
|
-
transform: "scale(0.5)",
|
|
148
|
-
transformOrigin: "top left",
|
|
149
|
-
width: "200%",
|
|
150
|
-
height: "200%"
|
|
151
|
-
},
|
|
152
|
-
sandbox: "allow-same-origin"
|
|
153
|
-
}
|
|
154
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center bg-muted", children: /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "No preview available" }) }),
|
|
155
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-foreground/60 opacity-0 transition-opacity duration-200 group-hover:opacity-100", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-white", children: "Use Template" }) })
|
|
156
|
-
] }),
|
|
157
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
158
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground leading-snug line-clamp-1", children: template.title }),
|
|
159
|
-
template.type && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "shrink-0 text-xs", children: template.type === "system" ? "System" : "Company" })
|
|
160
|
-
] })
|
|
161
|
-
]
|
|
162
|
-
}
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
function ResourceDocumentCard({
|
|
166
|
-
document,
|
|
167
|
-
onClick
|
|
168
|
-
}) {
|
|
169
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-2", children: [
|
|
170
|
-
/* @__PURE__ */ jsxs(
|
|
171
|
-
"button",
|
|
172
|
-
{
|
|
173
|
-
type: "button",
|
|
174
|
-
onClick,
|
|
175
|
-
className: "group relative w-full overflow-hidden border border-border bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aspect-[3/4]",
|
|
176
|
-
children: [
|
|
177
|
-
document.pdfUrl ? /* @__PURE__ */ jsx(
|
|
178
|
-
"iframe",
|
|
179
|
-
{
|
|
180
|
-
src: document.pdfUrl,
|
|
181
|
-
title: document.title,
|
|
182
|
-
className: "h-full w-full pointer-events-none"
|
|
183
|
-
}
|
|
184
|
-
) : document.thumbnailUrl ? /* @__PURE__ */ jsx(
|
|
185
|
-
"img",
|
|
186
|
-
{
|
|
187
|
-
src: document.thumbnailUrl,
|
|
188
|
-
alt: document.title,
|
|
189
|
-
className: "h-full w-full object-cover"
|
|
190
|
-
}
|
|
191
|
-
) : /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col items-center justify-center gap-2", children: [
|
|
192
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center bg-muted-foreground/10 p-4", children: /* @__PURE__ */ jsx(Download, { className: "size-8 text-muted-foreground opacity-50" }) }),
|
|
193
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: document.title })
|
|
194
|
-
] }),
|
|
195
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-foreground/40 opacity-0 transition-opacity duration-200 group-hover:opacity-100" })
|
|
196
|
-
]
|
|
197
|
-
}
|
|
198
|
-
),
|
|
199
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
200
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
201
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground leading-snug line-clamp-1", children: document.title }),
|
|
202
|
-
document.tags && document.tags.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: document.tags.map((tag) => /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs", children: tag }, tag)) })
|
|
203
|
-
] }),
|
|
204
|
-
document.downloadUrl && /* @__PURE__ */ jsx(
|
|
205
|
-
"a",
|
|
206
|
-
{
|
|
207
|
-
href: document.downloadUrl,
|
|
208
|
-
download: true,
|
|
209
|
-
onClick: (e) => e.stopPropagation(),
|
|
210
|
-
className: "shrink-0",
|
|
211
|
-
"aria-label": `Download ${document.title}`,
|
|
212
|
-
children: /* @__PURE__ */ jsx(Button, { variant: "outline", size: "icon", className: "size-8", children: /* @__PURE__ */ jsx(Download, { className: "size-4" }) })
|
|
213
|
-
}
|
|
214
|
-
)
|
|
215
|
-
] })
|
|
216
|
-
] });
|
|
217
|
-
}
|
|
218
|
-
function ResourceCarousel({
|
|
219
|
-
title,
|
|
220
|
-
items,
|
|
221
|
-
headerAction,
|
|
222
|
-
className
|
|
223
|
-
}) {
|
|
224
|
-
const scrollRef = useRef(null);
|
|
225
|
-
function scrollLeft() {
|
|
226
|
-
var _a;
|
|
227
|
-
(_a = scrollRef.current) == null ? void 0 : _a.scrollBy({ left: -300, behavior: "smooth" });
|
|
228
|
-
}
|
|
229
|
-
function scrollRight() {
|
|
230
|
-
var _a;
|
|
231
|
-
(_a = scrollRef.current) == null ? void 0 : _a.scrollBy({ left: 300, behavior: "smooth" });
|
|
232
|
-
}
|
|
233
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
234
|
-
(title || headerAction) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
235
|
-
title && /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-foreground", children: title }),
|
|
236
|
-
headerAction && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: headerAction })
|
|
237
|
-
] }),
|
|
238
|
-
items.length === 0 ? /* @__PURE__ */ jsx("p", { className: "py-8 text-center text-sm text-muted-foreground", children: "No items available" }) : /* @__PURE__ */ jsxs("div", { className: "group relative", children: [
|
|
239
|
-
/* @__PURE__ */ jsx(
|
|
240
|
-
"button",
|
|
241
|
-
{
|
|
242
|
-
type: "button",
|
|
243
|
-
onClick: scrollLeft,
|
|
244
|
-
"aria-label": "Scroll left",
|
|
245
|
-
className: cn(
|
|
246
|
-
"absolute left-0 top-1/2 z-10 -translate-x-1/2 -translate-y-1/2",
|
|
247
|
-
"flex size-9 items-center justify-center",
|
|
248
|
-
"border border-border bg-background shadow-sm",
|
|
249
|
-
"opacity-0 transition-opacity duration-200 group-hover:opacity-100",
|
|
250
|
-
"hover:bg-muted focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
251
|
-
),
|
|
252
|
-
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4 text-foreground" })
|
|
253
|
-
}
|
|
254
|
-
),
|
|
255
|
-
/* @__PURE__ */ jsx(
|
|
256
|
-
"div",
|
|
257
|
-
{
|
|
258
|
-
ref: scrollRef,
|
|
259
|
-
className: "flex gap-4 overflow-x-auto scroll-smooth pb-2",
|
|
260
|
-
style: { scrollbarWidth: "none" },
|
|
261
|
-
children: items.map((item, i) => /* @__PURE__ */ jsx("div", { className: "w-[220px] shrink-0", children: item }, i))
|
|
262
|
-
}
|
|
263
|
-
),
|
|
264
|
-
/* @__PURE__ */ jsx(
|
|
265
|
-
"button",
|
|
266
|
-
{
|
|
267
|
-
type: "button",
|
|
268
|
-
onClick: scrollRight,
|
|
269
|
-
"aria-label": "Scroll right",
|
|
270
|
-
className: cn(
|
|
271
|
-
"absolute right-0 top-1/2 z-10 translate-x-1/2 -translate-y-1/2",
|
|
272
|
-
"flex size-9 items-center justify-center",
|
|
273
|
-
"border border-border bg-background shadow-sm",
|
|
274
|
-
"opacity-0 transition-opacity duration-200 group-hover:opacity-100",
|
|
275
|
-
"hover:bg-muted focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
276
|
-
),
|
|
277
|
-
children: /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 text-foreground" })
|
|
278
|
-
}
|
|
279
|
-
)
|
|
280
|
-
] })
|
|
281
|
-
] });
|
|
282
|
-
}
|
|
283
|
-
function ResourceCenterHeader({
|
|
284
|
-
title,
|
|
285
|
-
description,
|
|
286
|
-
backgroundVideoUrl,
|
|
287
|
-
watchVideoUrl
|
|
288
|
-
}) {
|
|
289
|
-
const [watchModalOpen, setWatchModalOpen] = useState(false);
|
|
290
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
291
|
-
/* @__PURE__ */ jsxs(
|
|
292
|
-
"div",
|
|
293
|
-
{
|
|
294
|
-
className: cn(
|
|
295
|
-
"relative flex min-h-[400px] w-full items-center overflow-hidden bg-foreground"
|
|
296
|
-
),
|
|
297
|
-
children: [
|
|
298
|
-
backgroundVideoUrl ? /* @__PURE__ */ jsx(
|
|
299
|
-
"video",
|
|
300
|
-
{
|
|
301
|
-
className: "absolute inset-0 h-full w-full object-cover opacity-60 z-[1]",
|
|
302
|
-
src: backgroundVideoUrl,
|
|
303
|
-
autoPlay: true,
|
|
304
|
-
muted: true,
|
|
305
|
-
loop: true,
|
|
306
|
-
playsInline: true
|
|
307
|
-
}
|
|
308
|
-
) : /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-foreground z-[1]" }),
|
|
309
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/40 z-[1]" }),
|
|
310
|
-
/* @__PURE__ */ jsxs("div", { className: "relative z-[2] flex flex-col gap-4 px-8 py-12 md:px-16 max-w-3xl", children: [
|
|
311
|
-
/* @__PURE__ */ jsx("h1", { className: "text-3xl font-bold text-background md:text-4xl", children: title }),
|
|
312
|
-
/* @__PURE__ */ jsx("p", { className: "text-base text-background/80 leading-relaxed", children: description }),
|
|
313
|
-
watchVideoUrl && /* @__PURE__ */ jsx("div", { className: "pt-2", children: /* @__PURE__ */ jsxs(
|
|
314
|
-
Button,
|
|
315
|
-
{
|
|
316
|
-
variant: "outline",
|
|
317
|
-
className: "border-background text-background bg-transparent hover:bg-background/10 hover:text-background",
|
|
318
|
-
onClick: () => setWatchModalOpen(true),
|
|
319
|
-
children: [
|
|
320
|
-
/* @__PURE__ */ jsx(Play, { className: "mr-2 size-4" }),
|
|
321
|
-
"Watch Now"
|
|
322
|
-
]
|
|
323
|
-
}
|
|
324
|
-
) })
|
|
325
|
-
] })
|
|
326
|
-
]
|
|
327
|
-
}
|
|
328
|
-
),
|
|
329
|
-
watchVideoUrl && /* @__PURE__ */ jsx(
|
|
330
|
-
ResourceModal,
|
|
331
|
-
{
|
|
332
|
-
open: watchModalOpen,
|
|
333
|
-
onClose: () => setWatchModalOpen(false),
|
|
334
|
-
title,
|
|
335
|
-
videoUrl: watchVideoUrl
|
|
336
|
-
}
|
|
337
|
-
)
|
|
338
|
-
] });
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
export {
|
|
342
|
-
ResourceModal,
|
|
343
|
-
ResourceVideoCard,
|
|
344
|
-
ResourceEmailTemplateCard,
|
|
345
|
-
ResourceDocumentCard,
|
|
346
|
-
ResourceCarousel,
|
|
347
|
-
ResourceCenterHeader
|
|
348
|
-
};
|