beacon-ui 3.1.4

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +175 -0
  3. package/dist/components/Avatar.d.ts +20 -0
  4. package/dist/components/Avatar.d.ts.map +1 -0
  5. package/dist/components/Avatar.js +174 -0
  6. package/dist/components/Button.d.ts +21 -0
  7. package/dist/components/Button.d.ts.map +1 -0
  8. package/dist/components/Button.js +227 -0
  9. package/dist/components/Card.d.ts +40 -0
  10. package/dist/components/Card.d.ts.map +1 -0
  11. package/dist/components/Card.js +517 -0
  12. package/dist/components/Checkbox.d.ts +12 -0
  13. package/dist/components/Checkbox.d.ts.map +1 -0
  14. package/dist/components/Checkbox.js +64 -0
  15. package/dist/components/CheckboxPreview.d.ts +13 -0
  16. package/dist/components/CheckboxPreview.d.ts.map +1 -0
  17. package/dist/components/CheckboxPreview.js +155 -0
  18. package/dist/components/Chip.d.ts +15 -0
  19. package/dist/components/Chip.d.ts.map +1 -0
  20. package/dist/components/Chip.js +99 -0
  21. package/dist/components/Input.d.ts +24 -0
  22. package/dist/components/Input.d.ts.map +1 -0
  23. package/dist/components/Input.js +138 -0
  24. package/dist/components/Menu.d.ts +20 -0
  25. package/dist/components/Menu.d.ts.map +1 -0
  26. package/dist/components/Menu.js +252 -0
  27. package/dist/components/RadioButton.d.ts +13 -0
  28. package/dist/components/RadioButton.d.ts.map +1 -0
  29. package/dist/components/RadioButton.js +140 -0
  30. package/dist/components/Switch.d.ts +11 -0
  31. package/dist/components/Switch.d.ts.map +1 -0
  32. package/dist/components/Switch.js +64 -0
  33. package/dist/components/SwitchPreview.d.ts +14 -0
  34. package/dist/components/SwitchPreview.d.ts.map +1 -0
  35. package/dist/components/SwitchPreview.js +281 -0
  36. package/dist/icons/index.d.ts +97 -0
  37. package/dist/icons/index.d.ts.map +1 -0
  38. package/dist/icons/index.js +383 -0
  39. package/dist/index.d.ts +13 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +12 -0
  42. package/dist/providers/ThemeProvider.d.ts +23 -0
  43. package/dist/providers/ThemeProvider.d.ts.map +1 -0
  44. package/dist/providers/ThemeProvider.js +79 -0
  45. package/dist/tokens/types.d.ts +14 -0
  46. package/dist/tokens/types.d.ts.map +1 -0
  47. package/dist/tokens/types.js +5 -0
  48. package/dist/utils/patternPaths.d.ts +28 -0
  49. package/dist/utils/patternPaths.d.ts.map +1 -0
  50. package/dist/utils/patternPaths.js +92 -0
  51. package/package.json +51 -0
  52. package/tokens/generated/brand-dark.css +86 -0
  53. package/tokens/generated/brand-light.css +86 -0
  54. package/tokens/generated/effects.css +10 -0
  55. package/tokens/generated/index.css +804 -0
  56. package/tokens/generated/primitives.css +116 -0
  57. package/tokens/generated/responsive.css +235 -0
  58. package/tokens/generated/semantic.css +138 -0
  59. package/tokens/generated/typography.css +124 -0
@@ -0,0 +1,40 @@
1
+ import type { Theme, HueVariant } from "../tokens/types";
2
+ import { type PatternType } from "../utils/patternPaths";
3
+ type CardType = "product" | "experience" | "info" | "generic";
4
+ type ProductCardSize = "full" | "half";
5
+ type ProductCardStatus = "default" | "highlighted";
6
+ type ExperienceCardType = "default" | "skills" | "contacts";
7
+ type GenericCardStatus = "default" | "highlighted" | "selected";
8
+ interface CardProps {
9
+ cardType: CardType;
10
+ theme: Theme;
11
+ hue: HueVariant;
12
+ size?: ProductCardSize;
13
+ status?: ProductCardStatus;
14
+ hasImage?: boolean;
15
+ imageAspectRatio?: "16x9" | "4x3";
16
+ hasIdentifiers?: boolean;
17
+ hasButton?: boolean;
18
+ title?: string;
19
+ description?: string;
20
+ experienceType?: ExperienceCardType;
21
+ positionName?: string;
22
+ companyName?: string;
23
+ year?: string;
24
+ experienceDescription?: string;
25
+ label?: string;
26
+ details?: string;
27
+ cardName?: string;
28
+ cardDescription?: string;
29
+ hasIcon?: boolean;
30
+ genericStatus?: GenericCardStatus;
31
+ showBgPattern?: boolean;
32
+ patternType?: PatternType;
33
+ showOverlay?: boolean;
34
+ showShadow?: boolean;
35
+ showBorder?: boolean;
36
+ slot?: React.ReactNode;
37
+ }
38
+ export declare function Card({ cardType, theme, hue, size, status, hasImage, imageAspectRatio, hasIdentifiers, hasButton, title, description, experienceType, positionName, companyName, year, experienceDescription, label, details, cardName, cardDescription, hasIcon, genericStatus, showBgPattern, patternType, showOverlay, showShadow, showBorder, slot, }: CardProps): import("react/jsx-runtime").JSX.Element;
39
+ export {};
40
+ //# sourceMappingURL=Card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE3E,KAAK,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAG9D,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AACvC,KAAK,iBAAiB,GAAG,SAAS,GAAG,aAAa,CAAC;AAGnD,KAAK,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAG5D,KAAK,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEhE,UAAU,SAAS;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,UAAU,CAAC;IAEhB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,EACL,GAAG,EAEH,IAAa,EACb,MAAkB,EAClB,QAAe,EACf,gBAAyB,EACzB,cAAqB,EACrB,SAAgB,EAChB,KAAuB,EACvB,WAAsI,EAEtI,cAA0B,EAC1B,YAA8B,EAC9B,WAA4B,EAC5B,IAAgB,EAChB,qBAA0C,EAC1C,KAAe,EACf,OAAmB,EAEnB,QAAsB,EACtB,eAAoC,EACpC,OAAc,EAEd,aAAyB,EACzB,aAAoB,EACpB,WAAqB,EACrB,WAAkB,EAClB,UAAiB,EACjB,UAAiB,EACjB,IAAI,GACL,EAAE,SAAS,2CAkyBX"}
@@ -0,0 +1,517 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { RightArrowIcon, ArrowDownFallSlotIcon } from "../icons";
4
+ import { getPatternConfig } from "../utils/patternPaths";
5
+ export function Card({ cardType, theme, hue,
6
+ // ProductCard
7
+ size = "full", status = "default", hasImage = true, imageAspectRatio = "16x9", hasIdentifiers = true, hasButton = true, title = "Product Title", description = "Add your products Details that description here. This paragraph is restricted only two lines even if content is large.",
8
+ // ExperienceCard
9
+ experienceType = "default", positionName = "Position Name", companyName = "Company Name", year = "2025-26", experienceDescription = "Long Description", label = "Label", details = "Details",
10
+ // InfoCard
11
+ cardName = "Card Name", cardDescription = "Card Description", hasIcon = true,
12
+ // Generic Card
13
+ genericStatus = "default", showBgPattern = true, patternType = "cubes", showOverlay = true, showShadow = true, showBorder = true, slot, }) {
14
+ const renderProductCard = () => {
15
+ const isFull = size === "full";
16
+ const isHighlighted = status === "highlighted";
17
+ const cardStyles = {
18
+ position: "relative",
19
+ overflow: "hidden",
20
+ borderRadius: "var(--corner-radius-400)",
21
+ backgroundColor: isHighlighted ? "var(--bg-page-primary)" : "var(--bg-page-tertiary)",
22
+ display: "flex",
23
+ flexDirection: isFull ? "row" : "column",
24
+ gap: isFull ? "var(--spacing-500)" : "var(--spacing-200)",
25
+ padding: isFull ? 0 : "var(--spacing-400)",
26
+ width: isFull ? "100%" : "100%",
27
+ maxWidth: isFull ? "600px" : "400px",
28
+ minHeight: isFull ? "240px" : "auto",
29
+ };
30
+ const overlayStyles = {
31
+ position: "absolute",
32
+ inset: "-1px",
33
+ background: `linear-gradient(to bottom, rgba(255,255,255,0) 26.827%, ${isHighlighted ? "var(--bg-page-primary)" : "var(--bg-page-secondary)"} 86.384%)`,
34
+ pointerEvents: "none",
35
+ };
36
+ if (isFull) {
37
+ return (_jsxs("div", { style: cardStyles, children: [showBgPattern && (_jsx("div", { style: {
38
+ position: "absolute",
39
+ aspectRatio: "64/64",
40
+ inset: "-1px",
41
+ overflow: "hidden",
42
+ }, children: _jsx("div", { style: {
43
+ position: "absolute",
44
+ inset: "0 -322px -322px 0",
45
+ backgroundImage: "url('data:image/svg+xml,%3Csvg width=\"210\" height=\"163\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Crect width=\"210\" height=\"163\" fill=\"%23d2d2d6\"/%3E%3C/svg%3E')",
46
+ backgroundRepeat: "repeat",
47
+ backgroundSize: "210px 163px",
48
+ } }) })), showOverlay && _jsx("div", { style: overlayStyles }), hasImage && (_jsx("div", { style: {
49
+ aspectRatio: imageAspectRatio === "16x9" ? "16/9" : "4/3",
50
+ flex: "1 0 0",
51
+ maxHeight: "240px",
52
+ maxWidth: "300px",
53
+ minHeight: "36px",
54
+ minWidth: "48px",
55
+ position: "relative",
56
+ borderRadius: "0 var(--corner-radius-400) 0 0",
57
+ overflow: "hidden",
58
+ }, children: _jsx("div", { style: {
59
+ position: "absolute",
60
+ inset: 0,
61
+ backgroundColor: "var(--bg-page-secondary)",
62
+ borderRadius: "0 var(--corner-radius-400) 0 0",
63
+ } }) })), _jsxs("div", { style: {
64
+ display: "flex",
65
+ flexDirection: "column",
66
+ flex: "1 0 0",
67
+ gap: "var(--spacing-500)",
68
+ alignItems: "flex-start",
69
+ minHeight: 0,
70
+ minWidth: 0,
71
+ padding: "0 0 var(--spacing-500) 0",
72
+ position: "relative",
73
+ }, children: [_jsxs("div", { style: {
74
+ display: "flex",
75
+ flexDirection: "column",
76
+ gap: "var(--spacing-200)",
77
+ alignItems: "flex-start",
78
+ width: "100%",
79
+ }, children: [_jsx("h4", { style: {
80
+ fontFamily: "var(--font-secondary)",
81
+ fontSize: "var(--heading-h4-text-size)",
82
+ lineHeight: "var(--heading-h4-line-height)",
83
+ fontWeight: "var(--font-weight-secondary-semibold)",
84
+ color: "var(--fg-neutral)",
85
+ margin: 0,
86
+ textTransform: "capitalize",
87
+ }, children: title }), _jsx("p", { style: {
88
+ fontFamily: "var(--font-secondary)",
89
+ fontSize: "var(--body-regular-text-size)",
90
+ lineHeight: "var(--body-regular-line-height)",
91
+ fontWeight: "var(--font-weight-secondary-regular)",
92
+ color: "var(--fg-neutral-tertiary)",
93
+ margin: 0,
94
+ flex: "1 0 0",
95
+ display: "-webkit-box",
96
+ WebkitLineClamp: 2,
97
+ WebkitBoxOrient: "vertical",
98
+ overflow: "hidden",
99
+ }, children: description })] }), hasIdentifiers && (_jsxs("div", { style: {
100
+ display: "flex",
101
+ gap: "var(--spacing-200)",
102
+ alignItems: "flex-start",
103
+ }, children: [_jsx("div", { style: {
104
+ backgroundColor: "var(--bg-page-tertiary)",
105
+ padding: "var(--spacing-100) var(--spacing-300)",
106
+ borderRadius: "var(--corner-radius-full)",
107
+ display: "flex",
108
+ alignItems: "center",
109
+ gap: "var(--spacing-100)",
110
+ }, children: _jsx("span", { style: {
111
+ fontFamily: "var(--font-secondary)",
112
+ fontSize: "var(--body-extra-small-text-size)",
113
+ lineHeight: "var(--body-extra-small-line-height)",
114
+ color: "var(--fg-neutral-tertiary)",
115
+ }, children: "Identifier" }) }), _jsx("div", { style: {
116
+ backgroundColor: "var(--bg-page-tertiary)",
117
+ padding: "var(--spacing-100) var(--spacing-300)",
118
+ borderRadius: "var(--corner-radius-full)",
119
+ display: "flex",
120
+ alignItems: "center",
121
+ gap: "var(--spacing-100)",
122
+ }, children: _jsx("span", { style: {
123
+ fontFamily: "var(--font-secondary)",
124
+ fontSize: "var(--body-extra-small-text-size)",
125
+ lineHeight: "var(--body-extra-small-line-height)",
126
+ color: "var(--fg-neutral-tertiary)",
127
+ }, children: "Tag" }) })] })), hasButton && (_jsxs("div", { style: {
128
+ backgroundColor: "var(--bg-primary-tonal)",
129
+ padding: "var(--spacing-300) var(--spacing-400)",
130
+ borderRadius: "var(--corner-radius-200)",
131
+ display: "flex",
132
+ alignItems: "center",
133
+ gap: "var(--spacing-200)",
134
+ cursor: "pointer",
135
+ }, children: [_jsx("span", { style: {
136
+ fontFamily: "var(--font-secondary)",
137
+ fontSize: "var(--body-small-text-size)",
138
+ lineHeight: "var(--body-small-line-height)",
139
+ fontWeight: "var(--font-weight-secondary-medium)",
140
+ color: "var(--fg-primary-on-tonal)",
141
+ }, children: "Button" }), _jsx(RightArrowIcon, { size: "xs" })] }))] })] }));
142
+ }
143
+ // Half size (vertical)
144
+ return (_jsxs("div", { style: cardStyles, children: [showBgPattern && (_jsx("div", { style: {
145
+ position: "absolute",
146
+ aspectRatio: "64/64",
147
+ inset: "-1px",
148
+ overflow: "hidden",
149
+ }, children: _jsx("div", { style: {
150
+ position: "absolute",
151
+ inset: "0 -322px -322px 0",
152
+ backgroundImage: "url('data:image/svg+xml,%3Csvg width=\"210\" height=\"163\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Crect width=\"210\" height=\"163\" fill=\"%23d2d2d6\"/%3E%3C/svg%3E')",
153
+ backgroundRepeat: "repeat",
154
+ backgroundSize: "210px 163px",
155
+ } }) })), showOverlay && _jsx("div", { style: overlayStyles }), _jsxs("div", { style: {
156
+ display: "flex",
157
+ flexDirection: "column",
158
+ gap: "var(--spacing-200)",
159
+ alignItems: "flex-start",
160
+ width: "100%",
161
+ position: "relative",
162
+ }, children: [_jsx("h5", { style: {
163
+ fontFamily: "var(--font-secondary)",
164
+ fontSize: "var(--heading-h5-text-size)",
165
+ lineHeight: "var(--heading-h5-line-height)",
166
+ fontWeight: "var(--font-weight-secondary-semibold)",
167
+ color: "var(--fg-neutral)",
168
+ margin: 0,
169
+ textTransform: "capitalize",
170
+ }, children: title }), _jsx("p", { style: {
171
+ fontFamily: "var(--font-secondary)",
172
+ fontSize: "var(--body-regular-text-size)",
173
+ lineHeight: "var(--body-regular-line-height)",
174
+ fontWeight: "var(--font-weight-secondary-regular)",
175
+ color: "var(--fg-neutral-tertiary)",
176
+ margin: 0,
177
+ display: "-webkit-box",
178
+ WebkitLineClamp: 1,
179
+ WebkitBoxOrient: "vertical",
180
+ overflow: "hidden",
181
+ }, children: description })] }), hasImage && (_jsx("div", { style: {
182
+ aspectRatio: imageAspectRatio === "16x9" ? "320/180" : "4/3",
183
+ minHeight: "27px",
184
+ minWidth: "48px",
185
+ position: "relative",
186
+ borderRadius: "var(--corner-radius-400)",
187
+ width: "100%",
188
+ overflow: "hidden",
189
+ }, children: _jsx("div", { style: {
190
+ position: "absolute",
191
+ inset: 0,
192
+ backgroundColor: "var(--bg-page-secondary)",
193
+ borderRadius: "var(--corner-radius-400)",
194
+ } }) })), hasIdentifiers && (_jsxs("div", { style: {
195
+ display: "flex",
196
+ gap: "var(--spacing-200)",
197
+ alignItems: "flex-start",
198
+ position: "relative",
199
+ }, children: [_jsx("div", { style: {
200
+ backgroundColor: "var(--bg-page-tertiary)",
201
+ padding: "var(--spacing-100) var(--spacing-300)",
202
+ borderRadius: "var(--corner-radius-full)",
203
+ display: "flex",
204
+ alignItems: "center",
205
+ gap: "var(--spacing-100)",
206
+ }, children: _jsx("span", { style: {
207
+ fontFamily: "var(--font-secondary)",
208
+ fontSize: "var(--body-extra-small-text-size)",
209
+ lineHeight: "var(--body-extra-small-line-height)",
210
+ color: "var(--fg-neutral-tertiary)",
211
+ }, children: "Identifier" }) }), _jsx("div", { style: {
212
+ backgroundColor: "var(--bg-page-tertiary)",
213
+ padding: "var(--spacing-100) var(--spacing-300)",
214
+ borderRadius: "var(--corner-radius-full)",
215
+ display: "flex",
216
+ alignItems: "center",
217
+ gap: "var(--spacing-100)",
218
+ }, children: _jsx("span", { style: {
219
+ fontFamily: "var(--font-secondary)",
220
+ fontSize: "var(--body-extra-small-text-size)",
221
+ lineHeight: "var(--body-extra-small-line-height)",
222
+ color: "var(--fg-neutral-tertiary)",
223
+ }, children: "Tag" }) })] })), hasButton && (_jsxs("div", { style: {
224
+ backgroundColor: "var(--bg-primary-tonal)",
225
+ padding: "var(--spacing-300) var(--spacing-400)",
226
+ borderRadius: "var(--corner-radius-200)",
227
+ display: "flex",
228
+ alignItems: "center",
229
+ gap: "var(--spacing-200)",
230
+ cursor: "pointer",
231
+ position: "relative",
232
+ }, children: [_jsx("span", { style: {
233
+ fontFamily: "var(--font-secondary)",
234
+ fontSize: "var(--body-small-text-size)",
235
+ lineHeight: "var(--body-small-line-height)",
236
+ fontWeight: "var(--font-weight-secondary-medium)",
237
+ color: "var(--fg-primary-on-tonal)",
238
+ }, children: "Button" }), _jsx(RightArrowIcon, { size: "xs" })] }))] }));
239
+ };
240
+ const renderExperienceCard = () => {
241
+ const isDefault = experienceType === "default";
242
+ const isSkills = experienceType === "skills";
243
+ const isContacts = experienceType === "contacts";
244
+ if (isDefault) {
245
+ return (_jsxs("div", { style: {
246
+ display: "flex",
247
+ gap: "var(--spacing-500)",
248
+ alignItems: "flex-start",
249
+ width: "480px",
250
+ position: "relative",
251
+ }, children: [_jsx("div", { style: {
252
+ minHeight: "48px",
253
+ minWidth: "48px",
254
+ width: "64px",
255
+ height: "64px",
256
+ borderRadius: "var(--corner-radius-200)",
257
+ backgroundColor: "var(--bg-page-secondary)",
258
+ flexShrink: 0,
259
+ } }), _jsxs("div", { style: {
260
+ display: "flex",
261
+ flexDirection: "column",
262
+ flex: "1 0 0",
263
+ gap: "var(--spacing-300)",
264
+ alignItems: "flex-start",
265
+ maxWidth: "600px",
266
+ minHeight: 0,
267
+ minWidth: 0,
268
+ }, children: [_jsxs("div", { style: {
269
+ display: "flex",
270
+ flexDirection: "column",
271
+ gap: "var(--spacing-100)",
272
+ alignItems: "flex-start",
273
+ width: "100%",
274
+ }, children: [_jsx("h6", { style: {
275
+ fontFamily: "var(--font-secondary)",
276
+ fontSize: "var(--heading-h6-text-size)",
277
+ lineHeight: "var(--heading-h6-line-height)",
278
+ fontWeight: "var(--font-weight-secondary-semibold)",
279
+ color: "var(--fg-neutral)",
280
+ margin: 0,
281
+ textTransform: "capitalize",
282
+ }, children: positionName }), _jsx("p", { style: {
283
+ fontFamily: "var(--font-secondary)",
284
+ fontSize: "var(--body-regular-text-size)",
285
+ lineHeight: "var(--body-regular-line-height)",
286
+ fontWeight: "var(--font-weight-secondary-medium)",
287
+ color: "var(--fg-neutral-tertiary)",
288
+ margin: 0,
289
+ }, children: companyName }), _jsx("p", { style: {
290
+ fontFamily: "var(--font-secondary)",
291
+ fontSize: "var(--body-extra-small-text-size)",
292
+ lineHeight: "var(--body-extra-small-line-height)",
293
+ fontWeight: "var(--font-weight-secondary-regular)",
294
+ color: "var(--fg-neutral-tertiary)",
295
+ margin: 0,
296
+ }, children: year })] }), _jsx("p", { style: {
297
+ fontFamily: "var(--font-secondary)",
298
+ fontSize: "var(--body-small-text-size)",
299
+ lineHeight: "var(--body-small-line-height)",
300
+ fontWeight: "var(--font-weight-secondary-regular)",
301
+ color: "var(--fg-neutral-tertiary)",
302
+ margin: 0,
303
+ }, children: experienceDescription })] })] }));
304
+ }
305
+ if (isSkills) {
306
+ return (_jsxs("div", { style: {
307
+ display: "flex",
308
+ gap: "var(--spacing-400)",
309
+ alignItems: "center",
310
+ backgroundColor: "var(--bg-page-secondary)",
311
+ padding: "var(--spacing-200)",
312
+ borderRadius: "var(--corner-radius-200)",
313
+ width: "480px",
314
+ position: "relative",
315
+ }, children: [_jsx("div", { style: {
316
+ minHeight: "32px",
317
+ minWidth: "32px",
318
+ width: "48px",
319
+ height: "48px",
320
+ borderRadius: "var(--corner-radius-200)",
321
+ backgroundColor: "var(--bg-page-tertiary)",
322
+ flexShrink: 0,
323
+ } }), _jsx("p", { style: {
324
+ fontFamily: "var(--font-secondary)",
325
+ fontSize: "var(--body-regular-text-size)",
326
+ lineHeight: "var(--body-regular-line-height)",
327
+ fontWeight: "var(--font-weight-secondary-medium)",
328
+ color: "var(--fg-neutral)",
329
+ margin: 0,
330
+ flex: "1 0 0",
331
+ }, children: positionName })] }));
332
+ }
333
+ // Contacts
334
+ return (_jsxs("div", { style: {
335
+ display: "flex",
336
+ gap: "var(--spacing-400)",
337
+ alignItems: "center",
338
+ width: "480px",
339
+ position: "relative",
340
+ }, children: [_jsxs("div", { style: {
341
+ display: "flex",
342
+ flexDirection: "column",
343
+ flex: "1 0 0",
344
+ gap: "var(--spacing-100)",
345
+ alignItems: "flex-start",
346
+ maxWidth: "600px",
347
+ minHeight: 0,
348
+ minWidth: 0,
349
+ }, children: [_jsx("p", { style: {
350
+ fontFamily: "var(--font-secondary)",
351
+ fontSize: "var(--body-regular-text-size)",
352
+ lineHeight: "var(--body-regular-line-height)",
353
+ fontWeight: "var(--font-weight-secondary-regular)",
354
+ color: "var(--fg-neutral-tertiary)",
355
+ margin: 0,
356
+ }, children: label }), _jsx("p", { style: {
357
+ fontFamily: "var(--font-secondary)",
358
+ fontSize: "var(--body-medium-text-size)",
359
+ lineHeight: "var(--body-medium-line-height)",
360
+ fontWeight: "var(--font-weight-secondary-medium)",
361
+ color: "var(--fg-neutral)",
362
+ margin: 0,
363
+ }, children: details })] }), _jsx("div", { style: {
364
+ backgroundColor: "var(--bg-page-tertiary)",
365
+ width: "48px",
366
+ height: "48px",
367
+ borderRadius: "var(--corner-radius-200)",
368
+ display: "flex",
369
+ alignItems: "center",
370
+ justifyContent: "center",
371
+ flexShrink: 0,
372
+ }, children: _jsx("div", { style: {
373
+ width: "24px",
374
+ height: "24px",
375
+ backgroundColor: "var(--fg-neutral)",
376
+ borderRadius: "50%",
377
+ } }) })] }));
378
+ };
379
+ const renderInfoCard = () => {
380
+ return (_jsxs("div", { style: {
381
+ display: "flex",
382
+ gap: "var(--spacing-400)",
383
+ alignItems: "flex-start",
384
+ width: "480px",
385
+ position: "relative",
386
+ }, children: [hasIcon && (_jsx("div", { style: {
387
+ backgroundColor: "var(--bg-primary-tonal)",
388
+ width: "32px",
389
+ height: "32px",
390
+ borderRadius: "var(--corner-radius-200)",
391
+ display: "flex",
392
+ alignItems: "center",
393
+ justifyContent: "center",
394
+ flexShrink: 0,
395
+ padding: "8px",
396
+ }, children: _jsx("div", { style: {
397
+ width: "16px",
398
+ height: "16px",
399
+ backgroundColor: "var(--fg-primary-on-tonal)",
400
+ borderRadius: "50%",
401
+ } }) })), _jsxs("div", { style: {
402
+ display: "flex",
403
+ flexDirection: "column",
404
+ flex: "1 0 0",
405
+ gap: "var(--spacing-300)",
406
+ alignItems: "flex-start",
407
+ maxWidth: "600px",
408
+ minHeight: 0,
409
+ minWidth: 0,
410
+ }, children: [_jsx("p", { style: {
411
+ fontFamily: "var(--font-secondary)",
412
+ fontSize: "var(--body-regular-text-size)",
413
+ lineHeight: "var(--body-regular-line-height)",
414
+ fontWeight: "var(--font-weight-secondary-medium)",
415
+ color: "var(--fg-neutral)",
416
+ margin: 0,
417
+ }, children: cardName }), _jsx("p", { style: {
418
+ fontFamily: "var(--font-secondary)",
419
+ fontSize: "var(--body-small-text-size)",
420
+ lineHeight: "var(--body-small-line-height)",
421
+ fontWeight: "var(--font-weight-secondary-regular)",
422
+ color: "var(--fg-neutral-tertiary)",
423
+ margin: 0,
424
+ textAlign: "justify",
425
+ }, children: cardDescription })] })] }));
426
+ };
427
+ const renderGenericCard = () => {
428
+ const isDefault = genericStatus === "default";
429
+ const isHighlighted = genericStatus === "highlighted";
430
+ const isSelected = genericStatus === "selected";
431
+ const cardStyles = {
432
+ display: "flex",
433
+ flexDirection: "column",
434
+ gap: "var(--spacing-400)",
435
+ alignItems: "flex-start",
436
+ overflow: "hidden",
437
+ padding: "var(--spacing-400)",
438
+ borderRadius: "var(--corner-radius-400)",
439
+ width: "400px",
440
+ position: "relative",
441
+ backgroundColor: isDefault ? "var(--bg-page-tertiary)" : "var(--bg-page-primary)",
442
+ };
443
+ if (showBorder) {
444
+ if (isSelected) {
445
+ cardStyles.border = "var(--border-width-25) solid var(--border-primary)";
446
+ }
447
+ else {
448
+ cardStyles.border = "var(--border-width-25) solid var(--border-strong-200)";
449
+ }
450
+ }
451
+ if (showShadow) {
452
+ if (isHighlighted) {
453
+ cardStyles.boxShadow =
454
+ "0px 4px 6px -2px var(--shadow-subtle), 0px -4px 9px -6px var(--shadow-subtle)";
455
+ }
456
+ else {
457
+ cardStyles.boxShadow =
458
+ "0px 1px 4px -2px var(--shadow-subtle), 0px 1px 4px 0px var(--shadow-subtle)";
459
+ }
460
+ }
461
+ const overlayGradient = isDefault
462
+ ? "var(--bg-page-secondary)"
463
+ : "var(--bg-page-primary)";
464
+ return (_jsxs("div", { style: cardStyles, children: [showBgPattern && (() => {
465
+ const patternConfig = getPatternConfig(patternType);
466
+ if (!patternConfig.imageUrl)
467
+ return null;
468
+ return (_jsx("div", { style: {
469
+ position: "absolute",
470
+ aspectRatio: "64/64",
471
+ inset: showBorder ? "-1px" : "0",
472
+ overflow: "hidden",
473
+ zIndex: 1,
474
+ }, children: _jsx("div", { style: {
475
+ position: "absolute",
476
+ inset: patternConfig.inset || "0",
477
+ backgroundImage: `url("${patternConfig.imageUrl}")`,
478
+ backgroundRepeat: "repeat",
479
+ backgroundSize: patternConfig.backgroundSize,
480
+ backgroundPosition: patternConfig.backgroundPosition || "top left",
481
+ } }) }));
482
+ })(), showOverlay && (_jsx("div", { style: {
483
+ position: "absolute",
484
+ inset: showBorder ? "-1px" : "0",
485
+ background: `linear-gradient(to bottom, rgba(255,255,255,0) 26.827%, ${overlayGradient} 86.384%)`,
486
+ pointerEvents: "none",
487
+ zIndex: 2,
488
+ } })), slot || (_jsx("div", { style: {
489
+ backgroundColor: "var(--bg-warning-tonal)",
490
+ border: "var(--border-width-25) dashed var(--border-warning)",
491
+ padding: "var(--spacing-200) 8px",
492
+ borderRadius: "var(--corner-radius-100)",
493
+ width: "100%",
494
+ display: "flex",
495
+ alignItems: "center",
496
+ justifyContent: "center",
497
+ minHeight: "32px",
498
+ position: "relative",
499
+ zIndex: 3,
500
+ }, children: _jsx("div", { style: { color: "var(--fg-warning-on-tonal)" }, children: _jsx(ArrowDownFallSlotIcon, { size: "xs" }) }) }))] }));
501
+ };
502
+ const renderCard = () => {
503
+ switch (cardType) {
504
+ case "product":
505
+ return renderProductCard();
506
+ case "experience":
507
+ return renderExperienceCard();
508
+ case "info":
509
+ return renderInfoCard();
510
+ case "generic":
511
+ return renderGenericCard();
512
+ default:
513
+ return null;
514
+ }
515
+ };
516
+ return (_jsx("div", { className: "ds-card-preview-container", children: _jsx("div", { className: "ds-card-preview-canvas", children: renderCard() }) }));
517
+ }
@@ -0,0 +1,12 @@
1
+ interface CheckboxProps {
2
+ checked?: boolean;
3
+ onChange?: (checked: boolean) => void;
4
+ disabled?: boolean;
5
+ id?: string;
6
+ ariaLabel?: string;
7
+ label?: string;
8
+ showLabel?: boolean;
9
+ }
10
+ export declare function Checkbox({ checked, onChange, disabled, id, ariaLabel, label, showLabel, }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAe,EACf,QAAQ,EACR,QAAgB,EAChB,EAAE,EACF,SAAS,EACT,KAAK,EACL,SAAiB,GAClB,EAAE,aAAa,2CAmGf"}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState, useCallback } from "react";
4
+ import { CheckboxPreview } from "./CheckboxPreview";
5
+ import { useThemeSafe } from "../providers/ThemeProvider";
6
+ export function Checkbox({ checked = false, onChange, disabled = false, id, ariaLabel, label, showLabel = false, }) {
7
+ const themeContext = useThemeSafe();
8
+ const theme = themeContext?.theme;
9
+ const hue = themeContext?.hue;
10
+ const [status, setStatus] = useState("default");
11
+ const handleClick = useCallback(() => {
12
+ if (!disabled && onChange) {
13
+ onChange(!checked);
14
+ }
15
+ }, [checked, disabled, onChange]);
16
+ const handleKeyDown = useCallback((e) => {
17
+ if (disabled)
18
+ return;
19
+ if (e.key === " " || e.key === "Enter") {
20
+ e.preventDefault();
21
+ if (onChange) {
22
+ onChange(!checked);
23
+ }
24
+ }
25
+ }, [checked, disabled, onChange]);
26
+ const handleMouseEnter = useCallback(() => {
27
+ if (!disabled) {
28
+ setStatus("hovered");
29
+ }
30
+ }, [disabled]);
31
+ const handleMouseLeave = useCallback(() => {
32
+ if (!disabled) {
33
+ setStatus("default");
34
+ }
35
+ }, [disabled]);
36
+ const handleFocus = useCallback(() => {
37
+ if (!disabled) {
38
+ setStatus("focused");
39
+ }
40
+ }, [disabled]);
41
+ const handleBlur = useCallback(() => {
42
+ if (!disabled) {
43
+ setStatus("default");
44
+ }
45
+ }, [disabled]);
46
+ const handleMouseDown = useCallback(() => {
47
+ if (!disabled) {
48
+ setStatus("pressed");
49
+ }
50
+ }, [disabled]);
51
+ const handleMouseUp = useCallback(() => {
52
+ if (!disabled) {
53
+ setStatus("default");
54
+ }
55
+ }, [disabled]);
56
+ const currentStatus = disabled ? "disabled" : status;
57
+ return (_jsx("button", { type: "button", id: id, role: "checkbox", "aria-checked": checked, "aria-label": ariaLabel, "aria-disabled": disabled, disabled: disabled, onClick: handleClick, onKeyDown: handleKeyDown, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, style: {
58
+ border: "none",
59
+ background: "none",
60
+ padding: 0,
61
+ cursor: disabled ? "not-allowed" : "pointer",
62
+ outline: "none",
63
+ }, children: _jsx(CheckboxPreview, { checked: checked, status: currentStatus, label: label, showLabel: showLabel, theme: theme, hue: hue }) }));
64
+ }