@salesmind-ai/design-system 0.3.4 → 0.3.5
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/admin/index.cjs +68 -2928
- package/dist/admin/index.cjs.map +1 -1
- package/dist/admin/index.js +5 -2915
- package/dist/admin/index.js.map +1 -1
- package/dist/blog/index.cjs +53 -1064
- package/dist/blog/index.cjs.map +1 -1
- package/dist/blog/index.js +8 -1054
- package/dist/blog/index.js.map +1 -1
- package/dist/charts/index.cjs +46 -2694
- package/dist/charts/index.cjs.map +1 -1
- package/dist/charts/index.js +3 -2680
- package/dist/charts/index.js.map +1 -1
- package/dist/chunk-2GARWEJK.js +17 -0
- package/dist/chunk-2GARWEJK.js.map +1 -0
- package/dist/chunk-2KQVZ5FB.js +485 -0
- package/dist/chunk-2KQVZ5FB.js.map +1 -0
- package/dist/chunk-2ZNR2F2V.cjs +194 -0
- package/dist/chunk-2ZNR2F2V.cjs.map +1 -0
- package/dist/chunk-3NKRFUAR.js +37 -0
- package/dist/chunk-3NKRFUAR.js.map +1 -0
- package/dist/chunk-3TGSIILM.cjs +201 -0
- package/dist/chunk-3TGSIILM.cjs.map +1 -0
- package/dist/chunk-4GM5BGBN.cjs +801 -0
- package/dist/chunk-4GM5BGBN.cjs.map +1 -0
- package/dist/chunk-5LGDEZWY.cjs +2434 -0
- package/dist/chunk-5LGDEZWY.cjs.map +1 -0
- package/dist/chunk-6H4DSTXR.js +786 -0
- package/dist/chunk-6H4DSTXR.js.map +1 -0
- package/dist/chunk-6HKQ5ILL.cjs +1624 -0
- package/dist/chunk-6HKQ5ILL.cjs.map +1 -0
- package/dist/chunk-6UNG76Y2.js +153 -0
- package/dist/chunk-6UNG76Y2.js.map +1 -0
- package/dist/chunk-7PX2AZ6Y.js +39 -0
- package/dist/chunk-7PX2AZ6Y.js.map +1 -0
- package/dist/chunk-B6AVAX4F.js +1415 -0
- package/dist/chunk-B6AVAX4F.js.map +1 -0
- package/dist/chunk-BILT5KD3.js +264 -0
- package/dist/chunk-BILT5KD3.js.map +1 -0
- package/dist/chunk-C2BCDNAV.js +24 -0
- package/dist/chunk-C2BCDNAV.js.map +1 -0
- package/dist/chunk-CH42VPWE.cjs +421 -0
- package/dist/chunk-CH42VPWE.cjs.map +1 -0
- package/dist/chunk-CJ2MKVAF.cjs +46 -0
- package/dist/chunk-CJ2MKVAF.cjs.map +1 -0
- package/dist/chunk-DP74LUXG.cjs +98 -0
- package/dist/chunk-DP74LUXG.cjs.map +1 -0
- package/dist/chunk-E7D6EKJ4.cjs +44 -0
- package/dist/chunk-E7D6EKJ4.cjs.map +1 -0
- package/dist/chunk-ECXBTUH6.cjs +584 -0
- package/dist/chunk-ECXBTUH6.cjs.map +1 -0
- package/dist/chunk-EFRAP5ES.js +157 -0
- package/dist/chunk-EFRAP5ES.js.map +1 -0
- package/dist/chunk-EM7JHRYW.cjs +69 -0
- package/dist/chunk-EM7JHRYW.cjs.map +1 -0
- package/dist/chunk-FAFAP4L5.js +183 -0
- package/dist/chunk-FAFAP4L5.js.map +1 -0
- package/dist/chunk-H2Y6BSTL.cjs +69 -0
- package/dist/chunk-H2Y6BSTL.cjs.map +1 -0
- package/dist/chunk-HN4PHABT.js +126 -0
- package/dist/chunk-HN4PHABT.js.map +1 -0
- package/dist/chunk-HRENHNDJ.js +211 -0
- package/dist/chunk-HRENHNDJ.js.map +1 -0
- package/dist/chunk-I75BFEYT.cjs +2561 -0
- package/dist/chunk-I75BFEYT.cjs.map +1 -0
- package/dist/chunk-IFRATNLU.js +562 -0
- package/dist/chunk-IFRATNLU.js.map +1 -0
- package/dist/chunk-JNASH4OQ.js +1022 -0
- package/dist/chunk-JNASH4OQ.js.map +1 -0
- package/dist/chunk-JPJN4YBC.js +409 -0
- package/dist/chunk-JPJN4YBC.js.map +1 -0
- package/dist/chunk-KCKUSU2M.cjs +166 -0
- package/dist/chunk-KCKUSU2M.cjs.map +1 -0
- package/dist/chunk-KDLH35OI.cjs +1042 -0
- package/dist/chunk-KDLH35OI.cjs.map +1 -0
- package/dist/chunk-KJ2OXQF4.js +287 -0
- package/dist/chunk-KJ2OXQF4.js.map +1 -0
- package/dist/chunk-KK5UO2P4.cjs +717 -0
- package/dist/chunk-KK5UO2P4.cjs.map +1 -0
- package/dist/chunk-KNQEIU7O.cjs +1202 -0
- package/dist/chunk-KNQEIU7O.cjs.map +1 -0
- package/dist/chunk-KVGSVGRK.cjs +569 -0
- package/dist/chunk-KVGSVGRK.cjs.map +1 -0
- package/dist/chunk-L352JRV6.cjs +105 -0
- package/dist/chunk-L352JRV6.cjs.map +1 -0
- package/dist/chunk-LGNMFBLF.cjs +502 -0
- package/dist/chunk-LGNMFBLF.cjs.map +1 -0
- package/dist/chunk-LJADZITX.cjs +298 -0
- package/dist/chunk-LJADZITX.cjs.map +1 -0
- package/dist/chunk-MDB2WCRQ.cjs +137 -0
- package/dist/chunk-MDB2WCRQ.cjs.map +1 -0
- package/dist/chunk-MQDEE7HC.cjs +283 -0
- package/dist/chunk-MQDEE7HC.cjs.map +1 -0
- package/dist/chunk-MQRB634A.cjs +34 -0
- package/dist/chunk-MQRB634A.cjs.map +1 -0
- package/dist/chunk-MU6GW5ZV.js +2317 -0
- package/dist/chunk-MU6GW5ZV.js.map +1 -0
- package/dist/chunk-NN3TUHIH.js +28 -0
- package/dist/chunk-NN3TUHIH.js.map +1 -0
- package/dist/chunk-NT4LBP7D.cjs +111 -0
- package/dist/chunk-NT4LBP7D.cjs.map +1 -0
- package/dist/chunk-OGKGIXFC.cjs +2162 -0
- package/dist/chunk-OGKGIXFC.cjs.map +1 -0
- package/dist/chunk-OXNXEQY7.js +2538 -0
- package/dist/chunk-OXNXEQY7.js.map +1 -0
- package/dist/chunk-P5BOFE5A.js +546 -0
- package/dist/chunk-P5BOFE5A.js.map +1 -0
- package/dist/chunk-PE2KJVRN.js +185 -0
- package/dist/chunk-PE2KJVRN.js.map +1 -0
- package/dist/chunk-Q2MFGYTE.cjs +1449 -0
- package/dist/chunk-Q2MFGYTE.cjs.map +1 -0
- package/dist/chunk-Q75DBVDY.cjs +68 -0
- package/dist/chunk-Q75DBVDY.cjs.map +1 -0
- package/dist/chunk-RQUFZAZ7.js +1608 -0
- package/dist/chunk-RQUFZAZ7.js.map +1 -0
- package/dist/chunk-SICKWUWB.js +62 -0
- package/dist/chunk-SICKWUWB.js.map +1 -0
- package/dist/chunk-T343CCH5.js +1190 -0
- package/dist/chunk-T343CCH5.js.map +1 -0
- package/dist/chunk-T5H5PNLN.js +701 -0
- package/dist/chunk-T5H5PNLN.js.map +1 -0
- package/dist/chunk-U3LK2GID.js +2122 -0
- package/dist/chunk-U3LK2GID.js.map +1 -0
- package/dist/chunk-UFAJY2DM.js +62 -0
- package/dist/chunk-UFAJY2DM.js.map +1 -0
- package/dist/chunk-VC5LMUVQ.cjs +20 -0
- package/dist/chunk-VC5LMUVQ.cjs.map +1 -0
- package/dist/chunk-VM7WFMKI.cjs +76 -0
- package/dist/chunk-VM7WFMKI.cjs.map +1 -0
- package/dist/chunk-W2WTP6HS.cjs +233 -0
- package/dist/chunk-W2WTP6HS.cjs.map +1 -0
- package/dist/chunk-WH7PYHZY.cjs +35 -0
- package/dist/chunk-WH7PYHZY.cjs.map +1 -0
- package/dist/chunk-XU3OMQ7V.js +98 -0
- package/dist/chunk-XU3OMQ7V.js.map +1 -0
- package/dist/chunk-XWPDRMZG.js +62 -0
- package/dist/chunk-XWPDRMZG.js.map +1 -0
- package/dist/chunk-Y3CPKNB7.js +67 -0
- package/dist/chunk-Y3CPKNB7.js.map +1 -0
- package/dist/chunk-YNVRDD2P.js +98 -0
- package/dist/chunk-YNVRDD2P.js.map +1 -0
- package/dist/chunk-YSYR54XR.js +92 -0
- package/dist/chunk-YSYR54XR.js.map +1 -0
- package/dist/chunk-YTYDQBVY.cjs +162 -0
- package/dist/chunk-YTYDQBVY.cjs.map +1 -0
- package/dist/core/index.cjs +807 -4333
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +14 -4130
- package/dist/core/index.js.map +1 -1
- package/dist/i18n/index.cjs +86 -558
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.js +1 -544
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.cjs +1432 -17140
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +31 -16785
- package/dist/index.js.map +1 -1
- package/dist/marketing/index.cjs +142 -3072
- package/dist/marketing/index.cjs.map +1 -1
- package/dist/marketing/index.js +11 -3042
- package/dist/marketing/index.js.map +1 -1
- package/dist/motion/index.cjs +26 -1222
- package/dist/motion/index.cjs.map +1 -1
- package/dist/motion/index.js +2 -1215
- package/dist/motion/index.js.map +1 -1
- package/dist/nav/index.cjs +101 -1518
- package/dist/nav/index.cjs.map +1 -1
- package/dist/nav/index.js +4 -1498
- package/dist/nav/index.js.map +1 -1
- package/dist/report/index.cjs +171 -2403
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.js +3 -2363
- package/dist/report/index.js.map +1 -1
- package/dist/sections/index.cjs +22 -377
- package/dist/sections/index.cjs.map +1 -1
- package/dist/sections/index.js +6 -369
- package/dist/sections/index.js.map +1 -1
- package/dist/social-proof/index.cjs +53 -1250
- package/dist/social-proof/index.cjs.map +1 -1
- package/dist/social-proof/index.js +6 -1235
- package/dist/social-proof/index.js.map +1 -1
- package/dist/theme/index.cjs +38 -565
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.js +2 -555
- package/dist/theme/index.js.map +1 -1
- package/dist/web/client/index.cjs +38 -491
- package/dist/web/client/index.cjs.map +1 -1
- package/dist/web/client/index.js +4 -483
- package/dist/web/client/index.js.map +1 -1
- package/dist/web/index.cjs +158 -1346
- package/dist/web/index.cjs.map +1 -1
- package/dist/web/index.js +9 -1305
- package/dist/web/index.js.map +1 -1
- package/dist/web/server/index.cjs +26 -563
- package/dist/web/server/index.cjs.map +1 -1
- package/dist/web/server/index.js +1 -560
- package/dist/web/server/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkMQRB634A_cjs = require('./chunk-MQRB634A.cjs');
|
|
4
|
+
var chunkEM7JHRYW_cjs = require('./chunk-EM7JHRYW.cjs');
|
|
5
|
+
var chunkMDB2WCRQ_cjs = require('./chunk-MDB2WCRQ.cjs');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
13
|
+
|
|
14
|
+
var HeroSection = react.forwardRef(
|
|
15
|
+
({
|
|
16
|
+
variant = "left",
|
|
17
|
+
title,
|
|
18
|
+
subtitle,
|
|
19
|
+
eyebrow,
|
|
20
|
+
primaryCta,
|
|
21
|
+
secondaryCta,
|
|
22
|
+
media,
|
|
23
|
+
mediaBrowserFrame = false,
|
|
24
|
+
floatingElement,
|
|
25
|
+
floatingPosition = "bottom-left",
|
|
26
|
+
withGrid = false,
|
|
27
|
+
withGlow = false,
|
|
28
|
+
align,
|
|
29
|
+
className,
|
|
30
|
+
children,
|
|
31
|
+
...props
|
|
32
|
+
}, ref) => {
|
|
33
|
+
const isSplit = variant === "split";
|
|
34
|
+
const isCenter = variant === "center";
|
|
35
|
+
const textAlignment = align || (isCenter ? "center" : "left");
|
|
36
|
+
const ContentBlock = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx__default.default("ds-hero__content", `ds-hero__content--${textAlignment}`), children: [
|
|
37
|
+
eyebrow && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-section-header__eyebrow", style: { marginBottom: "var(--space-2)" }, children: eyebrow }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "ds-hero__title", children: title }),
|
|
39
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-hero__subtitle", children: subtitle }),
|
|
40
|
+
(primaryCta || secondaryCta) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-hero__actions", children: [
|
|
41
|
+
primaryCta,
|
|
42
|
+
secondaryCta
|
|
43
|
+
] }),
|
|
44
|
+
children
|
|
45
|
+
] });
|
|
46
|
+
const MediaBlock = media && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-hero__media-wrapper", children: [
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx__default.default("ds-hero__media", mediaBrowserFrame && "ds-hero__media--browser"), children: media }),
|
|
48
|
+
floatingElement && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx__default.default("ds-hero__float", `ds-hero__float--${floatingPosition}`), children: floatingElement })
|
|
49
|
+
] });
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
52
|
+
{
|
|
53
|
+
ref,
|
|
54
|
+
className: clsx__default.default(
|
|
55
|
+
"ds-hero",
|
|
56
|
+
`ds-hero--${variant}`,
|
|
57
|
+
withGrid && "ds-hero--bg-grid",
|
|
58
|
+
withGlow && "ds-hero--bg-glow",
|
|
59
|
+
className
|
|
60
|
+
),
|
|
61
|
+
padding: "lg",
|
|
62
|
+
...props,
|
|
63
|
+
children: isSplit ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
64
|
+
"div",
|
|
65
|
+
{
|
|
66
|
+
style: {
|
|
67
|
+
display: "grid",
|
|
68
|
+
gridTemplateColumns: "repeat(auto-fit, minmax(min(100%, 500px), 1fr))",
|
|
69
|
+
gap: "var(--space-16)",
|
|
70
|
+
alignItems: "center"
|
|
71
|
+
},
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMDB2WCRQ_cjs.Box, { children: ContentBlock }),
|
|
74
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMDB2WCRQ_cjs.Box, { children: MediaBlock })
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(chunkMQRB634A_cjs.Stack, { gap: 16, align: isCenter ? "center" : "start", children: [
|
|
78
|
+
ContentBlock,
|
|
79
|
+
MediaBlock && /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
chunkMDB2WCRQ_cjs.Box,
|
|
81
|
+
{
|
|
82
|
+
style: {
|
|
83
|
+
width: "100%",
|
|
84
|
+
display: "flex",
|
|
85
|
+
justifyContent: isCenter ? "center" : "flex-start"
|
|
86
|
+
},
|
|
87
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "100%", maxWidth: isCenter ? "1200px" : "100%" }, children: MediaBlock })
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
] })
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
HeroSection.displayName = "HeroSection";
|
|
96
|
+
var FeatureCard = ({ item }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-feature-card", children: [
|
|
97
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-feature-card__icon", children: item.icon }),
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-feature-card__title", children: item.title }),
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-feature-card__description", children: item.description }),
|
|
100
|
+
item.cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-feature-card__cta", children: item.cta })
|
|
101
|
+
] });
|
|
102
|
+
var FeatureRow = ({ item }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-feature-row", children: [
|
|
103
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-feature-row__content", children: [
|
|
104
|
+
item.step && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-feature-row__step", children: [
|
|
105
|
+
"STEP ",
|
|
106
|
+
item.step
|
|
107
|
+
] }),
|
|
108
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-feature-card__icon", children: item.icon }),
|
|
109
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-section-header__title", style: { fontSize: "var(--font-size-2xl)" }, children: item.title }),
|
|
110
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-section-header__subtitle", style: { fontSize: "var(--font-size-lg)" }, children: item.description }),
|
|
111
|
+
item.cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-hero__actions", children: item.cta })
|
|
112
|
+
] }),
|
|
113
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-feature-row__media", children: item.media || /* @__PURE__ */ jsxRuntime.jsx("div", { style: { paddingBottom: "56.25%", background: "var(--glass-base-active)" } }) })
|
|
114
|
+
] });
|
|
115
|
+
var FeatureSection = react.forwardRef(
|
|
116
|
+
({
|
|
117
|
+
variant = "grid",
|
|
118
|
+
columns = 3,
|
|
119
|
+
features,
|
|
120
|
+
title,
|
|
121
|
+
subtitle,
|
|
122
|
+
eyebrow,
|
|
123
|
+
alignHeader = "center",
|
|
124
|
+
className,
|
|
125
|
+
...props
|
|
126
|
+
}, ref) => {
|
|
127
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkEM7JHRYW_cjs.SectionShell, { ref, className: clsx__default.default("ds-feature-section", className), ...props, children: [
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { title, subtitle, eyebrow, align: alignHeader }),
|
|
129
|
+
variant === "grid" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx__default.default("ds-feature-grid", `ds-feature-grid--${columns}-col`), children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(FeatureCard, { item: feature }, index)) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-feature-zigzag", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(FeatureRow, { item: feature }, index)) })
|
|
130
|
+
] });
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
FeatureSection.displayName = "FeatureSection";
|
|
134
|
+
var CTASection = react.forwardRef(
|
|
135
|
+
({
|
|
136
|
+
variant = "center",
|
|
137
|
+
title,
|
|
138
|
+
description,
|
|
139
|
+
primaryCta,
|
|
140
|
+
secondaryCta,
|
|
141
|
+
actions,
|
|
142
|
+
className,
|
|
143
|
+
children,
|
|
144
|
+
...props
|
|
145
|
+
}, ref) => {
|
|
146
|
+
const isBoxed = variant === "boxed";
|
|
147
|
+
const effectiveVariant = isBoxed ? "center" : variant;
|
|
148
|
+
const Content = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx__default.default("ds-cta-section", `ds-cta-section--${effectiveVariant}`), children: [
|
|
149
|
+
effectiveVariant === "split" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-cta-section--split", children: [
|
|
150
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-cta-content", children: [
|
|
151
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "ds-cta-title", children: title }),
|
|
152
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-cta-description", children: description })
|
|
153
|
+
] }),
|
|
154
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-cta-actions", children: actions || /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
155
|
+
primaryCta,
|
|
156
|
+
secondaryCta
|
|
157
|
+
] }) })
|
|
158
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-cta-content", children: [
|
|
159
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "ds-cta-title", children: title }),
|
|
160
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-cta-description", children: description }),
|
|
161
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-cta-actions", children: actions || /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
162
|
+
primaryCta,
|
|
163
|
+
secondaryCta
|
|
164
|
+
] }) })
|
|
165
|
+
] }),
|
|
166
|
+
children
|
|
167
|
+
] });
|
|
168
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionShell, { ref, className: clsx__default.default(className), ...props, children: isBoxed ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-cta-card", children: Content }) : Content });
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
CTASection.displayName = "CTASection";
|
|
172
|
+
var StatsSection = react.forwardRef(
|
|
173
|
+
({ stats, title, subtitle, eyebrow, className, ...props }, ref) => {
|
|
174
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkEM7JHRYW_cjs.SectionShell, { ref, className: clsx__default.default("ds-stats-section", className), ...props, children: [
|
|
175
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { title, subtitle, eyebrow }),
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-stats-grid", children: stats.map((stat, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-stat-card", children: [
|
|
177
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-stat-value", children: [
|
|
178
|
+
stat.prefix,
|
|
179
|
+
stat.value,
|
|
180
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-stat-suffix", children: stat.suffix })
|
|
181
|
+
] }),
|
|
182
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-stat-label", children: stat.label })
|
|
183
|
+
] }, idx)) })
|
|
184
|
+
] });
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
StatsSection.displayName = "StatsSection";
|
|
188
|
+
|
|
189
|
+
exports.CTASection = CTASection;
|
|
190
|
+
exports.FeatureSection = FeatureSection;
|
|
191
|
+
exports.HeroSection = HeroSection;
|
|
192
|
+
exports.StatsSection = StatsSection;
|
|
193
|
+
//# sourceMappingURL=out.js.map
|
|
194
|
+
//# sourceMappingURL=chunk-2ZNR2F2V.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/HeroSection/HeroSection.tsx","../src/components/FeatureSection/FeatureSection.tsx","../src/components/CTASection/CTASection.tsx","../src/components/StatsSection/StatsSection.tsx"],"names":["forwardRef","clsx","jsx","jsxs"],"mappings":"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","sourcesContent":["import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { SectionShell, SectionShellProps } from '../SectionShell/SectionShell';\nimport { Stack, Box } from '../LayoutPrimitives';\nimport './HeroSection.css';\n\n/* ============================================================================\n Types\n ============================================================================ */\n\nexport interface HeroSectionProps extends Omit<SectionShellProps, 'title'> {\n variant?: 'left' | 'center' | 'split';\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n eyebrow?: React.ReactNode;\n primaryCta?: React.ReactNode;\n secondaryCta?: React.ReactNode;\n\n /** Main visual (Image, Video, or Component) */\n media?: React.ReactNode;\n /** Adds a browser-like header bar to the media container */\n mediaBrowserFrame?: boolean;\n\n /** Optional floating elements (e.g. SocialProof cards) over the media */\n floatingElement?: React.ReactNode;\n floatingPosition?: 'top-right' | 'bottom-left';\n\n /** Background Visuals */\n withGrid?: boolean;\n withGlow?: boolean;\n\n align?: 'left' | 'center'; // Text alignment overrides variant default\n}\n\n/* ============================================================================\n Component\n ============================================================================ */\n\nexport const HeroSection = forwardRef<HTMLDivElement, HeroSectionProps>(\n (\n {\n variant = 'left',\n title,\n subtitle,\n eyebrow,\n primaryCta,\n secondaryCta,\n media,\n mediaBrowserFrame = false,\n floatingElement,\n floatingPosition = 'bottom-left',\n withGrid = false,\n withGlow = false,\n align,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n // Determine layout based on variant\n const isSplit = variant === 'split';\n const isCenter = variant === 'center';\n\n // Default alignment\n const textAlignment = align || (isCenter ? 'center' : 'left');\n\n const ContentBlock = (\n <div className={clsx('ds-hero__content', `ds-hero__content--${textAlignment}`)}>\n {eyebrow && (\n <span className=\"ds-section-header__eyebrow\" style={{ marginBottom: 'var(--space-2)' }}>\n {eyebrow}\n </span>\n )}\n <h1 className=\"ds-hero__title\">{title}</h1>\n {subtitle && <p className=\"ds-hero__subtitle\">{subtitle}</p>}\n\n {(primaryCta || secondaryCta) && (\n <div className=\"ds-hero__actions\">\n {primaryCta}\n {secondaryCta}\n </div>\n )}\n {children}\n </div>\n );\n\n const MediaBlock = media && (\n <div className=\"ds-hero__media-wrapper\">\n <div className={clsx('ds-hero__media', mediaBrowserFrame && 'ds-hero__media--browser')}>\n {media}\n </div>\n {floatingElement && (\n <div className={clsx('ds-hero__float', `ds-hero__float--${floatingPosition}`)}>\n {floatingElement}\n </div>\n )}\n </div>\n );\n\n return (\n <SectionShell\n ref={ref}\n className={clsx(\n 'ds-hero',\n `ds-hero--${variant}`,\n withGrid && 'ds-hero--bg-grid',\n withGlow && 'ds-hero--bg-glow',\n className,\n )}\n padding=\"lg\"\n {...props}\n >\n {isSplit ? (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(100%, 500px), 1fr))',\n gap: 'var(--space-16)',\n alignItems: 'center',\n }}\n >\n <Box>{ContentBlock}</Box>\n <Box>{MediaBlock}</Box>\n </div>\n ) : (\n <Stack gap={16} align={isCenter ? 'center' : 'start'}>\n {ContentBlock}\n {MediaBlock && (\n <Box\n style={{\n width: '100%',\n display: 'flex',\n justifyContent: isCenter ? 'center' : 'flex-start',\n }}\n >\n <div style={{ width: '100%', maxWidth: isCenter ? '1200px' : '100%' }}>\n {MediaBlock}\n </div>\n </Box>\n )}\n </Stack>\n )}\n </SectionShell>\n );\n },\n);\n\nHeroSection.displayName = 'HeroSection';\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { SectionShell, SectionShellProps, SectionHeader } from '../SectionShell/SectionShell';\nimport './FeatureSection.css';\n\n/* ============================================================================\n Types\n ============================================================================ */\n\nexport interface FeatureItem {\n title: React.ReactNode;\n description: React.ReactNode;\n icon?: React.ReactNode;\n media?: React.ReactNode; // For ZigZag\n step?: string | number; // For ZigZag steps\n cta?: React.ReactNode;\n}\n\nexport interface FeatureSectionProps extends Omit<SectionShellProps, 'title'> {\n variant?: 'grid' | 'zigzag';\n columns?: 2 | 3 | 4; // For grid variant\n features: FeatureItem[];\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n eyebrow?: React.ReactNode;\n alignHeader?: 'left' | 'center' | 'right';\n}\n\n/* ============================================================================\n Components\n ============================================================================ */\n\nconst FeatureCard = ({ item }: { item: FeatureItem }) => (\n <div className=\"ds-feature-card\">\n {item.icon && <div className=\"ds-feature-card__icon\">{item.icon}</div>}\n <h3 className=\"ds-feature-card__title\">{item.title}</h3>\n <div className=\"ds-feature-card__description\">{item.description}</div>\n {item.cta && <div className=\"ds-feature-card__cta\">{item.cta}</div>}\n </div>\n);\n\nconst FeatureRow = ({ item }: { item: FeatureItem }) => (\n <div className=\"ds-feature-row\">\n <div className=\"ds-feature-row__content\">\n {item.step && <div className=\"ds-feature-row__step\">STEP {item.step}</div>}\n {item.icon && <div className=\"ds-feature-card__icon\">{item.icon}</div>}\n <h3 className=\"ds-section-header__title\" style={{ fontSize: 'var(--font-size-2xl)' }}>\n {item.title}\n </h3>\n <div className=\"ds-section-header__subtitle\" style={{ fontSize: 'var(--font-size-lg)' }}>\n {item.description}\n </div>\n {item.cta && <div className=\"ds-hero__actions\">{item.cta}</div>}\n </div>\n <div className=\"ds-feature-row__media\">\n {item.media || (\n <div style={{ paddingBottom: '56.25%', background: 'var(--glass-base-active)' }} />\n )}\n </div>\n </div>\n);\n\nexport const FeatureSection = forwardRef<HTMLDivElement, FeatureSectionProps>(\n (\n {\n variant = 'grid',\n columns = 3,\n features,\n title,\n subtitle,\n eyebrow,\n alignHeader = 'center',\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <SectionShell ref={ref} className={clsx('ds-feature-section', className)} {...props}>\n <SectionHeader title={title} subtitle={subtitle} eyebrow={eyebrow} align={alignHeader} />\n\n {variant === 'grid' ? (\n <div className={clsx('ds-feature-grid', `ds-feature-grid--${columns}-col`)}>\n {features.map((feature, index) => (\n <FeatureCard key={index} item={feature} />\n ))}\n </div>\n ) : (\n <div className=\"ds-feature-zigzag\">\n {features.map((feature, index) => (\n <FeatureRow key={index} item={feature} />\n ))}\n </div>\n )}\n </SectionShell>\n );\n },\n);\nFeatureSection.displayName = 'FeatureSection';\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { SectionShell, SectionShellProps } from '../SectionShell/SectionShell';\nimport './CTASection.css';\n\nexport interface CTASectionProps extends Omit<SectionShellProps, 'title'> {\n variant?: 'center' | 'split' | 'boxed';\n title: React.ReactNode;\n description?: React.ReactNode;\n primaryCta?: React.ReactNode;\n secondaryCta?: React.ReactNode;\n actions?: React.ReactNode; // Custom actions slot\n}\n\nexport const CTASection = forwardRef<HTMLDivElement, CTASectionProps>(\n (\n {\n variant = 'center',\n title,\n description,\n primaryCta,\n secondaryCta,\n actions,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n // \"Boxed\" is just centered content inside a card-like container within the section\n const isBoxed = variant === 'boxed';\n const effectiveVariant = isBoxed ? 'center' : variant;\n\n const Content = (\n <div className={clsx('ds-cta-section', `ds-cta-section--${effectiveVariant}`)}>\n {effectiveVariant === 'split' ? (\n <div className=\"ds-cta-section--split\">\n <div className=\"ds-cta-content\">\n <h2 className=\"ds-cta-title\">{title}</h2>\n {description && <p className=\"ds-cta-description\">{description}</p>}\n </div>\n <div className=\"ds-cta-actions\">\n {actions || (\n <>\n {primaryCta}\n {secondaryCta}\n </>\n )}\n </div>\n </div>\n ) : (\n <div className=\"ds-cta-content\">\n <h2 className=\"ds-cta-title\">{title}</h2>\n {description && <p className=\"ds-cta-description\">{description}</p>}\n <div className=\"ds-cta-actions\">\n {actions || (\n <>\n {primaryCta}\n {secondaryCta}\n </>\n )}\n </div>\n </div>\n )}\n {children}\n </div>\n );\n\n return (\n <SectionShell ref={ref} className={clsx(className)} {...props}>\n {isBoxed ? <div className=\"ds-cta-card\">{Content}</div> : Content}\n </SectionShell>\n );\n },\n);\nCTASection.displayName = 'CTASection';\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { SectionShell, SectionShellProps, SectionHeader } from '../SectionShell/SectionShell';\nimport './StatsSection.css';\n\nexport interface StatItem {\n label: string;\n value: string | number;\n suffix?: string;\n prefix?: string;\n}\n\nexport interface StatsSectionProps extends Omit<SectionShellProps, 'title'> {\n stats: StatItem[];\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n eyebrow?: React.ReactNode;\n}\n\nexport const StatsSection = forwardRef<HTMLDivElement, StatsSectionProps>(\n ({ stats, title, subtitle, eyebrow, className, ...props }, ref) => {\n return (\n <SectionShell ref={ref} className={clsx('ds-stats-section', className)} {...props}>\n <SectionHeader title={title} subtitle={subtitle} eyebrow={eyebrow} />\n\n <div className=\"ds-stats-grid\">\n {stats.map((stat, idx) => (\n <div key={idx} className=\"ds-stat-card\">\n <div className=\"ds-stat-value\">\n {stat.prefix}\n {stat.value}\n <span className=\"ds-stat-suffix\">{stat.suffix}</span>\n </div>\n <div className=\"ds-stat-label\">{stat.label}</div>\n </div>\n ))}\n </div>\n </SectionShell>\n );\n },\n);\nStatsSection.displayName = 'StatsSection';\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Input } from '@base-ui/react/input';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
// src/components/TextField/TextField.tsx
|
|
7
|
+
var TextField = React.forwardRef(
|
|
8
|
+
({ className, label, error, helperText, endAdornment, id, ...props }, ref) => {
|
|
9
|
+
const generatedId = React.useId();
|
|
10
|
+
const inputId = id || generatedId;
|
|
11
|
+
return /* @__PURE__ */ jsxs("div", { className: clsx("ds-textfield", className), children: [
|
|
12
|
+
label && /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "ds-textfield__label", children: label }),
|
|
13
|
+
/* @__PURE__ */ jsxs("div", { className: "ds-textfield__input-wrapper", children: [
|
|
14
|
+
/* @__PURE__ */ jsx(
|
|
15
|
+
Input,
|
|
16
|
+
{
|
|
17
|
+
id: inputId,
|
|
18
|
+
ref,
|
|
19
|
+
className: clsx(
|
|
20
|
+
"ds-textfield__input",
|
|
21
|
+
error && "ds-textfield__input--error",
|
|
22
|
+
endAdornment && "ds-textfield__input--adorned"
|
|
23
|
+
),
|
|
24
|
+
...props
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
endAdornment && /* @__PURE__ */ jsx("div", { className: "ds-textfield__adornment", children: endAdornment })
|
|
28
|
+
] }),
|
|
29
|
+
helperText && /* @__PURE__ */ jsx("span", { className: clsx("ds-textfield__helper", error && "ds-textfield__helper--error"), children: helperText })
|
|
30
|
+
] });
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
TextField.displayName = "TextField";
|
|
34
|
+
|
|
35
|
+
export { TextField };
|
|
36
|
+
//# sourceMappingURL=out.js.map
|
|
37
|
+
//# sourceMappingURL=chunk-3NKRFUAR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/TextField/TextField.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW;AAClB,SAAS,SAAS,iBAAiB;AACnC,OAAO,UAAU;AAkBP,cAIF,YAJE;AARH,IAAM,YAAY,MAAM;AAAA,EAC7B,CAAC,EAAE,WAAW,OAAO,OAAO,YAAY,cAAc,IAAI,GAAG,MAAM,GAAG,QAAQ;AAC5E,UAAM,cAAc,MAAM,MAAM;AAChC,UAAM,UAAU,MAAM;AAEtB,WACE,qBAAC,SAAI,WAAW,KAAK,gBAAgB,SAAS,GAC3C;AAAA,eACC,oBAAC,WAAM,SAAS,SAAS,WAAU,uBAChC,iBACH;AAAA,MAEF,qBAAC,SAAI,WAAU,+BACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ;AAAA,YACA,WAAW;AAAA,cACT;AAAA,cACA,SAAS;AAAA,cACT,gBAAgB;AAAA,YAClB;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,QACC,gBAAgB,oBAAC,SAAI,WAAU,2BAA2B,wBAAa;AAAA,SAC1E;AAAA,MACC,cACC,oBAAC,UAAK,WAAW,KAAK,wBAAwB,SAAS,6BAA6B,GACjF,sBACH;AAAA,OAEJ;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc","sourcesContent":["import React from 'react';\nimport { Input as BaseInput } from '@base-ui/react/input';\nimport clsx from 'clsx';\nimport './TextField.css';\n\nexport interface TextFieldProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: boolean;\n helperText?: string;\n endAdornment?: React.ReactNode;\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n ({ className, label, error, helperText, endAdornment, id, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id || generatedId;\n\n return (\n <div className={clsx('ds-textfield', className)}>\n {label && (\n <label htmlFor={inputId} className=\"ds-textfield__label\">\n {label}\n </label>\n )}\n <div className=\"ds-textfield__input-wrapper\">\n <BaseInput\n id={inputId}\n ref={ref}\n className={clsx(\n 'ds-textfield__input',\n error && 'ds-textfield__input--error',\n endAdornment && 'ds-textfield__input--adorned',\n )}\n {...props}\n />\n {endAdornment && <div className=\"ds-textfield__adornment\">{endAdornment}</div>}\n </div>\n {helperText && (\n <span className={clsx('ds-textfield__helper', error && 'ds-textfield__helper--error')}>\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n\nTextField.displayName = 'TextField';\n"]}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var menu = require('@base-ui/react/menu');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var select = require('@base-ui/react/select');
|
|
8
|
+
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
12
|
+
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
13
|
+
|
|
14
|
+
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
15
|
+
var DropdownMenu = menu.Menu.Root;
|
|
16
|
+
var DropdownMenuTrigger = React__default.default.forwardRef(({ className, ...props }, ref) => {
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
+
menu.Menu.Trigger,
|
|
19
|
+
{
|
|
20
|
+
ref,
|
|
21
|
+
className: clsx__default.default("ds-dropdown-menu__trigger", className),
|
|
22
|
+
...props
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
|
|
27
|
+
var DropdownMenuContent = React__default.default.forwardRef(
|
|
28
|
+
({ className, side = "bottom", align = "start", sideOffset = 4, alignOffset = 0, ...props }, ref) => {
|
|
29
|
+
return /* @__PURE__ */ jsxRuntime.jsx(menu.Menu.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
+
menu.Menu.Positioner,
|
|
31
|
+
{
|
|
32
|
+
side,
|
|
33
|
+
align,
|
|
34
|
+
sideOffset,
|
|
35
|
+
alignOffset,
|
|
36
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37
|
+
menu.Menu.Popup,
|
|
38
|
+
{
|
|
39
|
+
ref,
|
|
40
|
+
className: clsx__default.default("ds-dropdown-menu__content", className),
|
|
41
|
+
...props
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
) });
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
DropdownMenuContent.displayName = "DropdownMenuContent";
|
|
49
|
+
var DropdownMenuItem = React__default.default.forwardRef(
|
|
50
|
+
({ className, ...props }, ref) => {
|
|
51
|
+
return /* @__PURE__ */ jsxRuntime.jsx(menu.Menu.Item, { ref, className: clsx__default.default("ds-dropdown-menu__item", className), ...props });
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
55
|
+
var DropdownMenuSeparator = React__default.default.forwardRef(({ className, ...props }, ref) => {
|
|
56
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx__default.default("ds-dropdown-menu__separator", className), ...props });
|
|
57
|
+
});
|
|
58
|
+
DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
|
|
59
|
+
var DropdownMenuLabel = React__default.default.forwardRef(({ className, ...props }, ref) => {
|
|
60
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx__default.default("ds-dropdown-menu__label", className), ...props });
|
|
61
|
+
});
|
|
62
|
+
DropdownMenuLabel.displayName = "DropdownMenuLabel";
|
|
63
|
+
function Select({
|
|
64
|
+
value,
|
|
65
|
+
defaultValue,
|
|
66
|
+
onValueChange,
|
|
67
|
+
disabled,
|
|
68
|
+
required,
|
|
69
|
+
name,
|
|
70
|
+
items,
|
|
71
|
+
children
|
|
72
|
+
}) {
|
|
73
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
select.Select.Root,
|
|
75
|
+
{
|
|
76
|
+
value,
|
|
77
|
+
defaultValue,
|
|
78
|
+
onValueChange: onValueChange ? (val) => onValueChange(val) : void 0,
|
|
79
|
+
disabled,
|
|
80
|
+
required,
|
|
81
|
+
name,
|
|
82
|
+
items,
|
|
83
|
+
children
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
Select.displayName = "Select";
|
|
88
|
+
var SelectTrigger = React__default.default.forwardRef(
|
|
89
|
+
({ className, placeholder = "Select...", size = "md", ...props }, ref) => {
|
|
90
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-select__trigger-wrapper", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
91
|
+
select.Select.Trigger,
|
|
92
|
+
{
|
|
93
|
+
ref,
|
|
94
|
+
className: clsx__default.default("ds-select__trigger", `ds-select__trigger--${size}`, className),
|
|
95
|
+
"aria-label": props["aria-label"] || (typeof placeholder === "string" ? placeholder : "Select"),
|
|
96
|
+
...props,
|
|
97
|
+
children: [
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx(select.Select.Value, { className: "ds-select__value", placeholder }),
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(select.Select.Icon, { className: "ds-select__icon", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}) })
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
) });
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
SelectTrigger.displayName = "SelectTrigger";
|
|
106
|
+
var SelectContent = React__default.default.forwardRef(
|
|
107
|
+
({ className, side = "bottom", sideOffset = 4, align = "start", children, ...props }, ref) => {
|
|
108
|
+
return /* @__PURE__ */ jsxRuntime.jsx(select.Select.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
+
select.Select.Positioner,
|
|
110
|
+
{
|
|
111
|
+
side,
|
|
112
|
+
sideOffset,
|
|
113
|
+
align,
|
|
114
|
+
alignItemWithTrigger: false,
|
|
115
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(select.Select.Popup, { ref, className: clsx__default.default("ds-select__content", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(select.Select.List, { className: "ds-select__list", children }) })
|
|
116
|
+
}
|
|
117
|
+
) });
|
|
118
|
+
}
|
|
119
|
+
);
|
|
120
|
+
SelectContent.displayName = "SelectContent";
|
|
121
|
+
var SelectItem = React__default.default.forwardRef(
|
|
122
|
+
({ className, value, children, disabled, ...props }, ref) => {
|
|
123
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
124
|
+
select.Select.Item,
|
|
125
|
+
{
|
|
126
|
+
ref,
|
|
127
|
+
value,
|
|
128
|
+
disabled,
|
|
129
|
+
className: clsx__default.default("ds-select__item", className),
|
|
130
|
+
...props,
|
|
131
|
+
children: [
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsx(select.Select.ItemIndicator, { className: "ds-select__item-indicator", children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) }),
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx(select.Select.ItemText, { children })
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
);
|
|
139
|
+
SelectItem.displayName = "SelectItem";
|
|
140
|
+
var SelectGroup = React__default.default.forwardRef(
|
|
141
|
+
({ className, label, children, ...props }, ref) => {
|
|
142
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(select.Select.Group, { ref, className: clsx__default.default("ds-select__group", className), ...props, children: [
|
|
143
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(select.Select.GroupLabel, { className: "ds-select__group-label", children: label }),
|
|
144
|
+
children
|
|
145
|
+
] });
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
SelectGroup.displayName = "SelectGroup";
|
|
149
|
+
var SelectSeparator = React__default.default.forwardRef(({ className, ...props }, ref) => {
|
|
150
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx__default.default("ds-select__separator", className), ...props });
|
|
151
|
+
});
|
|
152
|
+
SelectSeparator.displayName = "SelectSeparator";
|
|
153
|
+
function ChevronDownIcon() {
|
|
154
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
+
"svg",
|
|
156
|
+
{
|
|
157
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
158
|
+
width: "16",
|
|
159
|
+
height: "16",
|
|
160
|
+
viewBox: "0 0 24 24",
|
|
161
|
+
fill: "none",
|
|
162
|
+
stroke: "currentColor",
|
|
163
|
+
strokeWidth: "2",
|
|
164
|
+
strokeLinecap: "round",
|
|
165
|
+
strokeLinejoin: "round",
|
|
166
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m6 9 6 6 6-6" })
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
function CheckIcon() {
|
|
171
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
172
|
+
"svg",
|
|
173
|
+
{
|
|
174
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
175
|
+
width: "14",
|
|
176
|
+
height: "14",
|
|
177
|
+
viewBox: "0 0 24 24",
|
|
178
|
+
fill: "none",
|
|
179
|
+
stroke: "currentColor",
|
|
180
|
+
strokeWidth: "2",
|
|
181
|
+
strokeLinecap: "round",
|
|
182
|
+
strokeLinejoin: "round",
|
|
183
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" })
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
exports.DropdownMenu = DropdownMenu;
|
|
189
|
+
exports.DropdownMenuContent = DropdownMenuContent;
|
|
190
|
+
exports.DropdownMenuItem = DropdownMenuItem;
|
|
191
|
+
exports.DropdownMenuLabel = DropdownMenuLabel;
|
|
192
|
+
exports.DropdownMenuSeparator = DropdownMenuSeparator;
|
|
193
|
+
exports.DropdownMenuTrigger = DropdownMenuTrigger;
|
|
194
|
+
exports.Select = Select;
|
|
195
|
+
exports.SelectContent = SelectContent;
|
|
196
|
+
exports.SelectGroup = SelectGroup;
|
|
197
|
+
exports.SelectItem = SelectItem;
|
|
198
|
+
exports.SelectSeparator = SelectSeparator;
|
|
199
|
+
exports.SelectTrigger = SelectTrigger;
|
|
200
|
+
//# sourceMappingURL=out.js.map
|
|
201
|
+
//# sourceMappingURL=chunk-3TGSIILM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/Select/Select.tsx"],"names":["React","clsx","jsx"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Menu as BaseMenu } from '@base-ui/react/menu';\nimport clsx from 'clsx';\nimport './DropdownMenu.css';\n\n/* ============================================================================\n DROPDOWN MENU ROOT\n ============================================================================ */\n\nexport const DropdownMenu = BaseMenu.Root;\n\n/* ============================================================================\n DROPDOWN MENU TRIGGER\n ============================================================================ */\n\nexport const DropdownMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { className?: string }\n>(({ className, ...props }, ref) => {\n return (\n <BaseMenu.Trigger\n ref={ref}\n className={clsx('ds-dropdown-menu__trigger', className)}\n {...props}\n />\n );\n});\n\nDropdownMenuTrigger.displayName = 'DropdownMenuTrigger';\n\n/* ============================================================================\n DROPDOWN MENU CONTENT\n ============================================================================ */\n\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: 'top' | 'right' | 'bottom' | 'left';\n align?: 'start' | 'center' | 'end';\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const DropdownMenuContent = React.forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n (\n { className, side = 'bottom', align = 'start', sideOffset = 4, alignOffset = 0, ...props },\n ref,\n ) => {\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n >\n <BaseMenu.Popup\n ref={ref}\n className={clsx('ds-dropdown-menu__content', className)}\n {...props}\n />\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n },\n);\n\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\n/* ============================================================================\n DROPDOWN MENU ITEM\n ============================================================================ */\n\nexport interface DropdownMenuItemProps extends React.HTMLAttributes<HTMLDivElement> {\n disabled?: boolean;\n}\n\nexport const DropdownMenuItem = React.forwardRef<HTMLDivElement, DropdownMenuItemProps>(\n ({ className, ...props }, ref) => {\n return (\n <BaseMenu.Item ref={ref} className={clsx('ds-dropdown-menu__item', className)} {...props} />\n );\n },\n);\n\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\n/* ============================================================================\n DROPDOWN MENU SEPARATOR\n ============================================================================ */\n\nexport const DropdownMenuSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return <div ref={ref} className={clsx('ds-dropdown-menu__separator', className)} {...props} />;\n});\n\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\n/* ============================================================================\n DROPDOWN MENU LABEL\n ============================================================================ */\n\nexport const DropdownMenuLabel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return <div ref={ref} className={clsx('ds-dropdown-menu__label', className)} {...props} />;\n});\n\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n","import React from 'react';\nimport { Select as BaseSelect } from '@base-ui/react/select';\nimport clsx from 'clsx';\nimport './Select.css';\n\n/* ============================================================================\n SELECT ROOT\n ============================================================================ */\n\nexport interface SelectProps {\n /** Current selected value */\n value?: string;\n /** Default value for uncontrolled mode */\n defaultValue?: string;\n /** Callback when value changes */\n onValueChange?: (value: string | null) => void;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether the select is required */\n required?: boolean;\n /** Name for form submission */\n name?: string;\n /**\n * Item label map for Value display resolution.\n * When provided, Select.Value renders the label instead of the raw value.\n * Accepts a record (e.g. `{ en: \"English\", fr: \"French\" }`) or an array\n * of `{ value, label }` objects.\n */\n items?: Record<string, React.ReactNode> | ReadonlyArray<{ label: React.ReactNode; value: string }>;\n /** Children (SelectTrigger, SelectContent, etc.) */\n children: React.ReactNode;\n}\n\nexport function Select({\n value,\n defaultValue,\n onValueChange,\n disabled,\n required,\n name,\n items,\n children,\n}: SelectProps) {\n return (\n <BaseSelect.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange ? (val) => onValueChange(val) : undefined}\n disabled={disabled}\n required={required}\n name={name}\n items={items}\n >\n {children}\n </BaseSelect.Root>\n );\n}\n\nSelect.displayName = 'Select';\n\n/* ============================================================================\n SELECT TRIGGER\n ============================================================================ */\n\nexport interface SelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Placeholder text when no value selected */\n placeholder?: string;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, placeholder = 'Select...', size = 'md', ...props }, ref) => {\n return (\n <div className=\"ds-select__trigger-wrapper\">\n <BaseSelect.Trigger\n ref={ref}\n className={clsx('ds-select__trigger', `ds-select__trigger--${size}`, className)}\n aria-label={props['aria-label'] || (typeof placeholder === 'string' ? placeholder : 'Select')}\n {...props}\n >\n <BaseSelect.Value className=\"ds-select__value\" placeholder={placeholder} />\n <BaseSelect.Icon className=\"ds-select__icon\" aria-hidden>\n <ChevronDownIcon />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n </div>\n );\n },\n);\n\nSelectTrigger.displayName = 'SelectTrigger';\n\n/* ============================================================================\n SELECT CONTENT\n ============================================================================ */\n\nexport interface SelectContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Positioning side */\n side?: 'top' | 'bottom';\n /** Side offset in pixels */\n sideOffset?: number;\n /** Alignment */\n align?: 'start' | 'center' | 'end';\n}\n\nexport const SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n ({ className, side = 'bottom', sideOffset = 4, align = 'start', children, ...props }, ref) => {\n return (\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignItemWithTrigger={false}\n >\n <BaseSelect.Popup ref={ref} className={clsx('ds-select__content', className)} {...props}>\n <BaseSelect.List className=\"ds-select__list\">\n {children}\n </BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n );\n },\n);\n\nSelectContent.displayName = 'SelectContent';\n\n/* ============================================================================\n SELECT ITEM\n ============================================================================ */\n\nexport interface SelectItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Value for this option */\n value: string;\n /** Display text */\n children: React.ReactNode;\n /** Whether the item is disabled */\n disabled?: boolean;\n}\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n ({ className, value, children, disabled, ...props }, ref) => {\n return (\n <BaseSelect.Item\n ref={ref}\n value={value}\n disabled={disabled}\n className={clsx('ds-select__item', className)}\n {...props}\n >\n <BaseSelect.ItemIndicator className=\"ds-select__item-indicator\">\n <CheckIcon />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText>{children}</BaseSelect.ItemText>\n </BaseSelect.Item>\n );\n },\n);\n\nSelectItem.displayName = 'SelectItem';\n\n/* ============================================================================\n SELECT GROUP\n ============================================================================ */\n\nexport interface SelectGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label?: string;\n}\n\nexport const SelectGroup = React.forwardRef<HTMLDivElement, SelectGroupProps>(\n ({ className, label, children, ...props }, ref) => {\n return (\n <BaseSelect.Group ref={ref} className={clsx('ds-select__group', className)} {...props}>\n {label && (\n <BaseSelect.GroupLabel className=\"ds-select__group-label\">{label}</BaseSelect.GroupLabel>\n )}\n {children}\n </BaseSelect.Group>\n );\n },\n);\n\nSelectGroup.displayName = 'SelectGroup';\n\n/* ============================================================================\n SELECT SEPARATOR\n ============================================================================ */\n\nexport const SelectSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return <div ref={ref} className={clsx('ds-select__separator', className)} {...props} />;\n});\n\nSelectSeparator.displayName = 'SelectSeparator';\n\n/* ============================================================================\n ICONS\n ============================================================================ */\n\nfunction ChevronDownIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n"]}
|