@sirlund/mindset-ui 0.1.0

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/index.cjs ADDED
@@ -0,0 +1,521 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ Button: () => Button,
24
+ Card: () => Card,
25
+ Icon: () => Icon,
26
+ colors: () => colors,
27
+ getCSSVar: () => getCSSVar,
28
+ spacing: () => spacing,
29
+ tokens: () => tokens_default
30
+ });
31
+ module.exports = __toCommonJS(index_exports);
32
+
33
+ // src/components/Button/Button.tsx
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var Button = ({
36
+ children,
37
+ variant = "primary",
38
+ size = "medium",
39
+ disabled = false,
40
+ loading = false,
41
+ fullWidth = false,
42
+ startIcon,
43
+ endIcon,
44
+ onClick,
45
+ type = "button",
46
+ className = "",
47
+ ...props
48
+ }) => {
49
+ const baseClasses = "btn";
50
+ const variantClass = `btn--${variant}`;
51
+ const sizeClass = `btn--${size}`;
52
+ const disabledClass = disabled ? "btn--disabled" : "";
53
+ const loadingClass = loading ? "btn--loading" : "";
54
+ const fullWidthClass = fullWidth ? "btn--full-width" : "";
55
+ const classes = [
56
+ baseClasses,
57
+ variantClass,
58
+ sizeClass,
59
+ disabledClass,
60
+ loadingClass,
61
+ fullWidthClass,
62
+ className
63
+ ].filter(Boolean).join(" ");
64
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
65
+ "button",
66
+ {
67
+ type,
68
+ className: classes,
69
+ disabled: disabled || loading,
70
+ onClick,
71
+ ...props,
72
+ children: [
73
+ loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "btn__spinner", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
74
+ "svg",
75
+ {
76
+ className: "btn__spinner-icon",
77
+ viewBox: "0 0 24 24",
78
+ fill: "none",
79
+ xmlns: "http://www.w3.org/2000/svg",
80
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
81
+ "circle",
82
+ {
83
+ className: "btn__spinner-circle",
84
+ cx: "12",
85
+ cy: "12",
86
+ r: "9",
87
+ stroke: "currentColor",
88
+ strokeWidth: "3",
89
+ strokeLinecap: "round"
90
+ }
91
+ )
92
+ }
93
+ ) }),
94
+ startIcon && !loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "btn__icon btn__icon--start", "aria-hidden": "true", children: startIcon }),
95
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "btn__content", children }),
96
+ endIcon && !loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "btn__icon btn__icon--end", "aria-hidden": "true", children: endIcon })
97
+ ]
98
+ }
99
+ );
100
+ };
101
+
102
+ // src/components/Card/Card.tsx
103
+ var import_jsx_runtime2 = require("react/jsx-runtime");
104
+ var PlanIcons = ({ planType = "Starter" }) => {
105
+ if (planType === "Individual") {
106
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "plan-icon plan-icon--individual", children: [
107
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--top-left" }),
108
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--bottom-left" }),
109
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--top-right" }),
110
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--bottom-right" })
111
+ ] });
112
+ }
113
+ if (planType === "Teams") {
114
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "plan-icon plan-icon--teams", children: [
115
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--top-left" }),
116
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--middle-left" }),
117
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--bottom-center" }),
118
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--top-center" }),
119
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--middle-right" }),
120
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--center" }),
121
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--bottom-right" })
122
+ ] });
123
+ }
124
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "plan-icon plan-icon--starter", children: [
125
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--left" }),
126
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "plan-icon__square plan-icon__square--right" })
127
+ ] });
128
+ };
129
+ var Card = ({
130
+ plan = "Starter",
131
+ price = 0,
132
+ pricePeriod = "/Month",
133
+ seats = 1,
134
+ canEditSeats = false,
135
+ nextBillingAmount = 0,
136
+ renewalDate = "Sep 07, 2024",
137
+ className = "",
138
+ onActionClick
139
+ }) => {
140
+ const getPlanPrice = () => {
141
+ switch (plan) {
142
+ case "Individual":
143
+ return 20;
144
+ case "Teams":
145
+ return 49;
146
+ default:
147
+ return 0;
148
+ }
149
+ };
150
+ const getSeatsText = () => {
151
+ if (plan === "Teams") {
152
+ return `${seats} Monthly seats`;
153
+ }
154
+ return "1 Monthly seat";
155
+ };
156
+ const getUpgradeText = () => {
157
+ if (plan === "Starter" || plan === "Individual") {
158
+ return "Upgrade to Teams unlock multiple seats";
159
+ }
160
+ return "";
161
+ };
162
+ const getNextBillingAmount = () => {
163
+ if (plan === "Teams") {
164
+ return price * seats;
165
+ }
166
+ return nextBillingAmount;
167
+ };
168
+ const actualPrice = price || getPlanPrice();
169
+ const actualNextBilling = getNextBillingAmount();
170
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: `card ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__container", children: [
171
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__header", children: [
172
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__header-title", children: [
173
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
174
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M8 2V5M16 2V5M3.5 9.09H20.5M21 8.5V17C21 20 19.5 22 16 22H8C4.5 22 3 20 3 17V8.5C3 5.5 4.5 3.5 8 3.5H16C19.5 3.5 21 5.5 21 8.5Z", stroke: "#6d6d6e", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
175
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 13.2H12.01M8.8 13.2H8.81M15.2 13.2H15.21", stroke: "#6d6d6e", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
176
+ ] }) }),
177
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__header-text", children: "Plan" })
178
+ ] }),
179
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__header-action", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
180
+ "button",
181
+ {
182
+ className: "card__action-button",
183
+ onClick: onActionClick,
184
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__action-text", children: "Edit" })
185
+ }
186
+ ) })
187
+ ] }),
188
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__body", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__content", children: [
189
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__plan", children: [
190
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__plan-icon", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(PlanIcons, { planType: plan }) }),
191
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__plan-name", children: plan })
192
+ ] }),
193
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__price-section", children: [
194
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__price", children: [
195
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__price-currency", children: "$" }),
196
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__price-amount", children: actualPrice }),
197
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__price-period", children: pricePeriod })
198
+ ] }),
199
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__seats", children: [
200
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__seats-divider" }),
201
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__seats-info", children: [
202
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__seats-count", children: plan === "Teams" ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__seats-teams", children: [
203
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__seats-multiplier", children: "x" }),
204
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__seats-number", children: seats }),
205
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__seats-text", children: "Monthly seats" }),
206
+ canEditSeats && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", { className: "card__seats-edit", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "Edit" }) })
207
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
208
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__seats-number", children: "1" }),
209
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__seats-text", children: "Monthly seat" })
210
+ ] }) }),
211
+ getUpgradeText() && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__seats-upgrade", children: getUpgradeText() })
212
+ ] })
213
+ ] })
214
+ ] })
215
+ ] }) }),
216
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__footer", children: [
217
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__footer-left", children: [
218
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__footer-price", children: [
219
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__footer-currency", children: "$" }),
220
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "card__footer-amount", children: actualNextBilling })
221
+ ] }),
222
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__footer-label", children: "Next plan bill" })
223
+ ] }),
224
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "card__footer-right", children: [
225
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__footer-renewal", children: "Renews on" }),
226
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "card__footer-date", children: renewalDate })
227
+ ] })
228
+ ] })
229
+ ] }) });
230
+ };
231
+
232
+ // src/components/Icon/Icon.tsx
233
+ var import_jsx_runtime3 = require("react/jsx-runtime");
234
+ var Icon = ({
235
+ name,
236
+ size = "M",
237
+ className = "",
238
+ color = "#29292a",
239
+ onClick
240
+ }) => {
241
+ const sizeMap = {
242
+ XS: 16,
243
+ S: 20,
244
+ M: 24,
245
+ L: 32
246
+ };
247
+ const iconSize = sizeMap[size];
248
+ const iconPaths = {
249
+ "add": "M12 5v14M5 12h14",
250
+ "add-circle": "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zM12 8v8M8 12h8",
251
+ "alert-circle": "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zM12 8v4M12 16h.01",
252
+ "alert-triangle": "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM12 9v4M12 17h.01",
253
+ "archive": "M21 8v13H3V8M1 3h22l-1 5H2zM10 12h4",
254
+ "arrow-down": "M12 5v14M19 12l-7 7-7-7",
255
+ "arrow-left": "M19 12H5M12 19l-7-7 7-7",
256
+ "arrow-right": "M5 12h14M12 5l7 7-7 7",
257
+ "arrow-up": "M12 19V5M5 12l7-7 7 7",
258
+ "bell": "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0",
259
+ "trash": "M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6M10 11v6M14 11v6",
260
+ "building": "M3 21h18M5 21V7l8-4v18M19 21V11l-6-4",
261
+ "calendar": "M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z",
262
+ "camera": "M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2zM12 17a4 4 0 1 0 0-8 4 4 0 0 0 0 8z",
263
+ "check": "M20 6L9 17l-5-5",
264
+ "chevron-down": "M6 9l6 6 6-6",
265
+ "chevron-left": "M15 18l-6-6 6-6",
266
+ "chevron-right": "M9 18l6-6-6-6",
267
+ "chevron-up": "M18 15l-6-6-6 6",
268
+ "close": "M18 6L6 18M6 6l12 12",
269
+ "mail": "M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2zM22 6l-10 7L2 6",
270
+ "folder": "M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z",
271
+ "folder-open": "M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2zM2 9h20",
272
+ "lock": "M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 10 0v4",
273
+ "menu": "M3 12h18M3 6h18M3 18h18",
274
+ "pencil": "M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z",
275
+ "question-circle": "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z",
276
+ "remove": "M18 6L6 18M6 6l12 12",
277
+ "search": "M21 21l-6-6m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0z",
278
+ "settings": "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1 1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z",
279
+ "upload": "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12",
280
+ "user": "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z",
281
+ "view": "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8zM12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z",
282
+ "view-off": "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24M1 1l22 22"
283
+ };
284
+ const path = iconPaths[name];
285
+ if (!path) {
286
+ console.warn(`Icon "${name}" not found`);
287
+ return null;
288
+ }
289
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
290
+ "div",
291
+ {
292
+ className: `icon icon--${size.toLowerCase()} ${className}`,
293
+ onClick,
294
+ style: { color },
295
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
296
+ "svg",
297
+ {
298
+ width: iconSize,
299
+ height: iconSize,
300
+ viewBox: "0 0 24 24",
301
+ fill: "none",
302
+ stroke: "currentColor",
303
+ strokeWidth: "2",
304
+ strokeLinecap: "round",
305
+ strokeLinejoin: "round",
306
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: path })
307
+ }
308
+ )
309
+ }
310
+ );
311
+ };
312
+
313
+ // src/tokens/tokens.ts
314
+ var tokens = {
315
+ // Scale
316
+ scale: {
317
+ 0: "0px",
318
+ 12.5: "1px",
319
+ 25: "2px",
320
+ 50: "4px",
321
+ 75: "6px",
322
+ 100: "8px",
323
+ 150: "12px",
324
+ 175: "14px",
325
+ 200: "16px",
326
+ 250: "20px",
327
+ 300: "24px",
328
+ 400: "32px",
329
+ 500: "40px",
330
+ 600: "48px",
331
+ 700: "56px",
332
+ 800: "64px",
333
+ 900: "72px",
334
+ 1e3: "80px",
335
+ 2e3: "160px",
336
+ 2500: "200px"
337
+ },
338
+ // Typography
339
+ typography: {
340
+ fontFamily: {
341
+ default: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif",
342
+ mono: "'Fira Code', 'Monaco', 'Courier New', monospace"
343
+ },
344
+ fontSize: {
345
+ xs: "12px",
346
+ s: "14px",
347
+ m: "16px",
348
+ l: "20px",
349
+ xl: "24px"
350
+ }
351
+ },
352
+ // Spacing/Gap
353
+ gap: {
354
+ none: "0px",
355
+ "3xs": "2px",
356
+ "2xs": "4px",
357
+ xs: "8px",
358
+ s: "12px",
359
+ m: "16px",
360
+ l: "20px",
361
+ xl: "24px",
362
+ "2xl": "32px",
363
+ "3xl": "40px",
364
+ "4xl": "48px",
365
+ "5xl": "56px",
366
+ "6xl": "64px",
367
+ "7xl": "80px"
368
+ },
369
+ // Border Radius
370
+ radius: {
371
+ none: "0px",
372
+ xs: "4px",
373
+ s: "6px",
374
+ m: "8px",
375
+ l: "12px",
376
+ xl: "16px",
377
+ rounded: "9999px"
378
+ },
379
+ // Stroke Width
380
+ stroke: {
381
+ none: "0px",
382
+ thin: "1px",
383
+ light: "1.25px",
384
+ medium: "1.5px",
385
+ large: "2px"
386
+ },
387
+ // Container Max Widths
388
+ maxWidth: {
389
+ mobile: "480px",
390
+ tabletPortrait: "768px",
391
+ tabletLandscape: "1024px",
392
+ desktop: "1440px",
393
+ desktopLg: "1600px",
394
+ desktopXl: "1980px"
395
+ }
396
+ };
397
+ var getCSSVar = (name) => `var(--${name})`;
398
+ var spacing = {
399
+ none: getCSSVar("gap-none"),
400
+ "3xs": getCSSVar("gap-3xs"),
401
+ "2xs": getCSSVar("gap-2xs"),
402
+ xs: getCSSVar("gap-xs"),
403
+ s: getCSSVar("gap-s"),
404
+ m: getCSSVar("gap-m"),
405
+ l: getCSSVar("gap-l"),
406
+ xl: getCSSVar("gap-xl"),
407
+ "2xl": getCSSVar("gap-2xl"),
408
+ "3xl": getCSSVar("gap-3xl"),
409
+ "4xl": getCSSVar("gap-4xl"),
410
+ "5xl": getCSSVar("gap-5xl"),
411
+ "6xl": getCSSVar("gap-6xl"),
412
+ "7xl": getCSSVar("gap-7xl")
413
+ };
414
+ var colors = {
415
+ // Accent
416
+ accent: {
417
+ default: getCSSVar("color-accent-default"),
418
+ subtle: getCSSVar("color-accent-subtle"),
419
+ strong: getCSSVar("color-accent-strong"),
420
+ lighter: getCSSVar("color-accent-lighter"),
421
+ light: getCSSVar("color-accent-light")
422
+ },
423
+ // Primary
424
+ primary: {
425
+ default: getCSSVar("color-primary-default"),
426
+ inverted: getCSSVar("color-primary-inverted"),
427
+ subtle: getCSSVar("color-primary-subtle"),
428
+ light: getCSSVar("color-primary-light")
429
+ },
430
+ // Surface
431
+ surface: {
432
+ background: getCSSVar("color-surface-background"),
433
+ backgroundInverted: getCSSVar("color-surface-background-inverted"),
434
+ layer: getCSSVar("color-surface-layer"),
435
+ layerStrong: getCSSVar("color-surface-layer-strong"),
436
+ layerStronger: getCSSVar("color-surface-layer-stronger"),
437
+ elevated: getCSSVar("color-surface-elevated"),
438
+ accent: getCSSVar("color-surface-accent"),
439
+ input: getCSSVar("color-surface-input")
440
+ },
441
+ // Content/Text
442
+ content: {
443
+ heading: getCSSVar("color-content-heading"),
444
+ primary: getCSSVar("color-content-primary"),
445
+ secondary: getCSSVar("color-content-secondary"),
446
+ disabled: getCSSVar("color-content-disabled"),
447
+ inverted: getCSSVar("color-content-inverted"),
448
+ accent: getCSSVar("color-content-accent"),
449
+ error: getCSSVar("color-content-error"),
450
+ success: getCSSVar("color-content-success"),
451
+ warning: getCSSVar("color-content-warning")
452
+ },
453
+ // Content On Inverted
454
+ contentOnInverted: {
455
+ heading: getCSSVar("color-content-on-inverted-heading"),
456
+ primary: getCSSVar("color-content-on-inverted-primary"),
457
+ secondary: getCSSVar("color-content-on-inverted-secondary"),
458
+ disabled: getCSSVar("color-content-on-inverted-disabled"),
459
+ accent: getCSSVar("color-content-on-inverted-accent")
460
+ },
461
+ // Icon
462
+ icon: {
463
+ primary: getCSSVar("color-icon-primary"),
464
+ secondary: getCSSVar("color-icon-secondary"),
465
+ disabled: getCSSVar("color-icon-disabled"),
466
+ inverted: getCSSVar("color-icon-inverted"),
467
+ accent: getCSSVar("color-icon-accent"),
468
+ accentSubtle: getCSSVar("color-icon-accent-subtle"),
469
+ accentStrong: getCSSVar("color-icon-accent-strong"),
470
+ error: getCSSVar("color-icon-error"),
471
+ success: getCSSVar("color-icon-success"),
472
+ warning: getCSSVar("color-icon-warning")
473
+ },
474
+ // Stroke/Border
475
+ stroke: {
476
+ subtle: getCSSVar("color-stroke-subtle"),
477
+ medium: getCSSVar("color-stroke-medium"),
478
+ strong: getCSSVar("color-stroke-strong"),
479
+ alphaSubtle: getCSSVar("color-stroke-alpha-subtle"),
480
+ alphaMedium: getCSSVar("color-stroke-alpha-medium"),
481
+ alphaStrong: getCSSVar("color-stroke-alpha-strong")
482
+ },
483
+ // Feedback
484
+ feedback: {
485
+ negative: {
486
+ light: getCSSVar("color-feedback-negative-light"),
487
+ default: getCSSVar("color-feedback-negative-default"),
488
+ strong: getCSSVar("color-feedback-negative-strong")
489
+ },
490
+ positive: {
491
+ light: getCSSVar("color-feedback-positive-light"),
492
+ default: getCSSVar("color-feedback-positive-default"),
493
+ strong: getCSSVar("color-feedback-positive-strong")
494
+ },
495
+ warning: {
496
+ light: getCSSVar("color-feedback-warning-light"),
497
+ default: getCSSVar("color-feedback-warning-default"),
498
+ strong: getCSSVar("color-feedback-warning-strong")
499
+ }
500
+ },
501
+ // Build System
502
+ build: {
503
+ action: getCSSVar("color-build-action"),
504
+ data: getCSSVar("color-build-data"),
505
+ function: getCSSVar("color-build-function"),
506
+ input: getCSSVar("color-build-input"),
507
+ workflow: getCSSVar("color-build-workflow")
508
+ }
509
+ };
510
+ var tokens_default = tokens;
511
+ // Annotate the CommonJS export names for ESM import in node:
512
+ 0 && (module.exports = {
513
+ Button,
514
+ Card,
515
+ Icon,
516
+ colors,
517
+ getCSSVar,
518
+ spacing,
519
+ tokens
520
+ });
521
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Icon/Icon.tsx","../src/tokens/tokens.ts"],"sourcesContent":["// Components\nexport { Button, type ButtonProps } from './components/Button';\nexport { Card, type CardProps } from './components/Card';\nexport { Icon, type IconProps, type IconName, type IconSize } from './components/Icon';\n\n// Tokens\nexport { tokens, colors, spacing, getCSSVar } from './tokens';\nexport type { Scale, FontFamily, FontSize, Gap, Radius, Stroke, MaxWidth } from './tokens';\n","import React from 'react';\nimport './Button.css';\n\nexport interface ButtonProps {\n /**\n * The content of the button\n */\n children: React.ReactNode;\n /**\n * The variant of the button\n * - primary: Dark background (inverted)\n * - accent: Blue background (secondary)\n * - tertiary: Transparent with border (ghost)\n * - text: No background or border\n * - danger: Red for destructive actions\n */\n variant?: 'primary' | 'accent' | 'tertiary' | 'text' | 'danger';\n /**\n * The size of the button\n */\n size?: 'xsmall' | 'small' | 'medium' | 'large';\n /**\n * Whether the button is disabled\n */\n disabled?: boolean;\n /**\n * Whether the button is in loading state\n */\n loading?: boolean;\n /**\n * Whether the button takes full width\n */\n fullWidth?: boolean;\n /**\n * Icon to display before the text\n */\n startIcon?: React.ReactNode;\n /**\n * Icon to display after the text\n */\n endIcon?: React.ReactNode;\n /**\n * Click handler\n */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * HTML button type\n */\n type?: 'button' | 'submit' | 'reset';\n /**\n * Additional CSS class name\n */\n className?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant = 'primary',\n size = 'medium',\n disabled = false,\n loading = false,\n fullWidth = false,\n startIcon,\n endIcon,\n onClick,\n type = 'button',\n className = '',\n ...props\n}) => {\n const baseClasses = 'btn';\n const variantClass = `btn--${variant}`;\n const sizeClass = `btn--${size}`;\n const disabledClass = disabled ? 'btn--disabled' : '';\n const loadingClass = loading ? 'btn--loading' : '';\n const fullWidthClass = fullWidth ? 'btn--full-width' : '';\n\n const classes = [\n baseClasses,\n variantClass,\n sizeClass,\n disabledClass,\n loadingClass,\n fullWidthClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <button\n type={type}\n className={classes}\n disabled={disabled || loading}\n onClick={onClick}\n {...props}\n >\n {loading && (\n <span className=\"btn__spinner\" aria-hidden=\"true\">\n <svg\n className=\"btn__spinner-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n className=\"btn__spinner-circle\"\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n </svg>\n </span>\n )}\n {startIcon && !loading && (\n <span className=\"btn__icon btn__icon--start\" aria-hidden=\"true\">\n {startIcon}\n </span>\n )}\n <span className=\"btn__content\">{children}</span>\n {endIcon && !loading && (\n <span className=\"btn__icon btn__icon--end\" aria-hidden=\"true\">\n {endIcon}\n </span>\n )}\n </button>\n );\n};\n\nexport default Button;\n","import React from 'react';\nimport './Card.css';\n\n// Plan Icons Component\ninterface PlanIconsProps {\n planType?: 'Starter' | 'Individual' | 'Teams';\n}\n\nconst PlanIcons: React.FC<PlanIconsProps> = ({ planType = 'Starter' }) => {\n if (planType === 'Individual') {\n return (\n <div className=\"plan-icon plan-icon--individual\">\n <div className=\"plan-icon__square plan-icon__square--top-left\"></div>\n <div className=\"plan-icon__square plan-icon__square--bottom-left\"></div>\n <div className=\"plan-icon__square plan-icon__square--top-right\"></div>\n <div className=\"plan-icon__square plan-icon__square--bottom-right\"></div>\n </div>\n );\n }\n \n if (planType === 'Teams') {\n return (\n <div className=\"plan-icon plan-icon--teams\">\n <div className=\"plan-icon__square plan-icon__square--top-left\"></div>\n <div className=\"plan-icon__square plan-icon__square--middle-left\"></div>\n <div className=\"plan-icon__square plan-icon__square--bottom-center\"></div>\n <div className=\"plan-icon__square plan-icon__square--top-center\"></div>\n <div className=\"plan-icon__square plan-icon__square--middle-right\"></div>\n <div className=\"plan-icon__square plan-icon__square--center\"></div>\n <div className=\"plan-icon__square plan-icon__square--bottom-right\"></div>\n </div>\n );\n }\n \n return (\n <div className=\"plan-icon plan-icon--starter\">\n <div className=\"plan-icon__square plan-icon__square--left\"></div>\n <div className=\"plan-icon__square plan-icon__square--right\"></div>\n </div>\n );\n};\n\n// Card Props Interface\nexport interface CardProps {\n /**\n * The plan type\n */\n plan?: 'Starter' | 'Individual' | 'Teams';\n /**\n * The plan price\n */\n price?: number;\n /**\n * The plan price per period\n */\n pricePeriod?: string;\n /**\n * Number of seats/users\n */\n seats?: number;\n /**\n * Whether seats can be edited\n */\n canEditSeats?: boolean;\n /**\n * Next billing amount\n */\n nextBillingAmount?: number;\n /**\n * Renewal date\n */\n renewalDate?: string;\n /**\n * Additional CSS class name\n */\n className?: string;\n /**\n * Click handler for the action button\n */\n onActionClick?: () => void;\n}\n\nexport const Card: React.FC<CardProps> = ({\n plan = 'Starter',\n price = 0,\n pricePeriod = '/Month',\n seats = 1,\n canEditSeats = false,\n nextBillingAmount = 0,\n renewalDate = 'Sep 07, 2024',\n className = '',\n onActionClick,\n}) => {\n const getPlanPrice = () => {\n switch (plan) {\n case 'Individual':\n return 20;\n case 'Teams':\n return 49;\n default:\n return 0;\n }\n };\n\n const getSeatsText = () => {\n if (plan === 'Teams') {\n return `${seats} Monthly seats`;\n }\n return '1 Monthly seat';\n };\n\n const getUpgradeText = () => {\n if (plan === 'Starter' || plan === 'Individual') {\n return 'Upgrade to Teams unlock multiple seats';\n }\n return '';\n };\n\n const getNextBillingAmount = () => {\n if (plan === 'Teams') {\n return price * seats;\n }\n return nextBillingAmount;\n };\n\n const actualPrice = price || getPlanPrice();\n const actualNextBilling = getNextBillingAmount();\n\n return (\n <div className={`card ${className}`}>\n <div className=\"card__container\">\n {/* Card Header */}\n <div className=\"card__header\">\n <div className=\"card__header-title\">\n <div className=\"card__header-icon\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 2V5M16 2V5M3.5 9.09H20.5M21 8.5V17C21 20 19.5 22 16 22H8C4.5 22 3 20 3 17V8.5C3 5.5 4.5 3.5 8 3.5H16C19.5 3.5 21 5.5 21 8.5Z\" stroke=\"#6d6d6e\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M12 13.2H12.01M8.8 13.2H8.81M15.2 13.2H15.21\" stroke=\"#6d6d6e\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </div>\n <div className=\"card__header-text\">Plan</div>\n </div>\n <div className=\"card__header-action\">\n <button \n className=\"card__action-button\"\n onClick={onActionClick}\n >\n <span className=\"card__action-text\">Edit</span>\n </button>\n </div>\n </div>\n\n {/* Card Body */}\n <div className=\"card__body\">\n <div className=\"card__content\">\n {/* Plan Info */}\n <div className=\"card__plan\">\n <div className=\"card__plan-icon\">\n <PlanIcons planType={plan} />\n </div>\n <div className=\"card__plan-name\">{plan}</div>\n </div>\n\n {/* Price Info */}\n <div className=\"card__price-section\">\n <div className=\"card__price\">\n <span className=\"card__price-currency\">$</span>\n <span className=\"card__price-amount\">{actualPrice}</span>\n <span className=\"card__price-period\">{pricePeriod}</span>\n </div>\n\n {/* Seats Info */}\n <div className=\"card__seats\">\n <div className=\"card__seats-divider\"></div>\n <div className=\"card__seats-info\">\n <div className=\"card__seats-count\">\n {plan === 'Teams' ? (\n <div className=\"card__seats-teams\">\n <span className=\"card__seats-multiplier\">x</span>\n <span className=\"card__seats-number\">{seats}</span>\n <span className=\"card__seats-text\">Monthly seats</span>\n {canEditSeats && (\n <button className=\"card__seats-edit\">\n <span>Edit</span>\n </button>\n )}\n </div>\n ) : (\n <>\n <span className=\"card__seats-number\">1</span>\n <span className=\"card__seats-text\">Monthly seat</span>\n </>\n )}\n </div>\n {getUpgradeText() && (\n <div className=\"card__seats-upgrade\">\n {getUpgradeText()}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Card Footer */}\n <div className=\"card__footer\">\n <div className=\"card__footer-left\">\n <div className=\"card__footer-price\">\n <span className=\"card__footer-currency\">$</span>\n <span className=\"card__footer-amount\">{actualNextBilling}</span>\n </div>\n <div className=\"card__footer-label\">Next plan bill</div>\n </div>\n <div className=\"card__footer-right\">\n <div className=\"card__footer-renewal\">Renews on</div>\n <div className=\"card__footer-date\">{renewalDate}</div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Card;\n","import React from 'react';\nimport './Icon.css';\n\nexport type IconName = \n | 'add'\n | 'add-circle'\n | 'alert-circle'\n | 'alert-triangle'\n | 'archive'\n | 'arrow-down'\n | 'arrow-left'\n | 'arrow-right'\n | 'arrow-up'\n | 'bell'\n | 'trash'\n | 'building'\n | 'calendar'\n | 'camera'\n | 'check'\n | 'chevron-down'\n | 'chevron-left'\n | 'chevron-right'\n | 'chevron-up'\n | 'close'\n | 'mail'\n | 'folder'\n | 'folder-open'\n | 'lock'\n | 'menu'\n | 'pencil'\n | 'question-circle'\n | 'remove'\n | 'search'\n | 'settings'\n | 'upload'\n | 'user'\n | 'view'\n | 'view-off';\n\nexport type IconSize = 'XS' | 'S' | 'M' | 'L';\n\nexport interface IconProps {\n name: IconName;\n size?: IconSize;\n className?: string;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n}\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size = 'M',\n className = '',\n color = '#29292a',\n onClick,\n}) => {\n const sizeMap = {\n XS: 16,\n S: 20,\n M: 24,\n L: 32,\n };\n\n const iconSize = sizeMap[size];\n\n const iconPaths: Record<IconName, string> = {\n 'add': 'M12 5v14M5 12h14',\n 'add-circle': 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zM12 8v8M8 12h8',\n 'alert-circle': 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zM12 8v4M12 16h.01',\n 'alert-triangle': 'M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM12 9v4M12 17h.01',\n 'archive': 'M21 8v13H3V8M1 3h22l-1 5H2zM10 12h4',\n 'arrow-down': 'M12 5v14M19 12l-7 7-7-7',\n 'arrow-left': 'M19 12H5M12 19l-7-7 7-7',\n 'arrow-right': 'M5 12h14M12 5l7 7-7 7',\n 'arrow-up': 'M12 19V5M5 12l7-7 7 7',\n 'bell': 'M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0',\n 'trash': 'M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6M10 11v6M14 11v6',\n 'building': 'M3 21h18M5 21V7l8-4v18M19 21V11l-6-4',\n 'calendar': 'M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z',\n 'camera': 'M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2zM12 17a4 4 0 1 0 0-8 4 4 0 0 0 0 8z',\n 'check': 'M20 6L9 17l-5-5',\n 'chevron-down': 'M6 9l6 6 6-6',\n 'chevron-left': 'M15 18l-6-6 6-6',\n 'chevron-right': 'M9 18l6-6-6-6',\n 'chevron-up': 'M18 15l-6-6-6 6',\n 'close': 'M18 6L6 18M6 6l12 12',\n 'mail': 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2zM22 6l-10 7L2 6',\n 'folder': 'M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z',\n 'folder-open': 'M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2zM2 9h20',\n 'lock': 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 10 0v4',\n 'menu': 'M3 12h18M3 6h18M3 18h18',\n 'pencil': 'M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z',\n 'question-circle': 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z',\n 'remove': 'M18 6L6 18M6 6l12 12',\n 'search': 'M21 21l-6-6m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0z',\n 'settings': 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1 1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z',\n 'upload': 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12',\n 'user': 'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z',\n 'view': 'M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8zM12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z',\n 'view-off': 'M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24M1 1l22 22',\n };\n\n const path = iconPaths[name];\n \n if (!path) {\n console.warn(`Icon \"${name}\" not found`);\n return null;\n }\n\n return (\n <div \n className={`icon icon--${size.toLowerCase()} ${className}`}\n onClick={onClick}\n style={{ color }}\n >\n <svg\n width={iconSize}\n height={iconSize}\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={path} />\n </svg>\n </div>\n );\n};\n\nexport default Icon;","/**\n * MindSet Design System - Design Tokens (TypeScript)\n * Type-safe access to design tokens\n */\n\nexport const tokens = {\n // Scale\n scale: {\n 0: '0px',\n 12.5: '1px',\n 25: '2px',\n 50: '4px',\n 75: '6px',\n 100: '8px',\n 150: '12px',\n 175: '14px',\n 200: '16px',\n 250: '20px',\n 300: '24px',\n 400: '32px',\n 500: '40px',\n 600: '48px',\n 700: '56px',\n 800: '64px',\n 900: '72px',\n 1000: '80px',\n 2000: '160px',\n 2500: '200px',\n },\n\n // Typography\n typography: {\n fontFamily: {\n default: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif\",\n mono: \"'Fira Code', 'Monaco', 'Courier New', monospace\",\n },\n fontSize: {\n xs: '12px',\n s: '14px',\n m: '16px',\n l: '20px',\n xl: '24px',\n },\n },\n\n // Spacing/Gap\n gap: {\n none: '0px',\n '3xs': '2px',\n '2xs': '4px',\n xs: '8px',\n s: '12px',\n m: '16px',\n l: '20px',\n xl: '24px',\n '2xl': '32px',\n '3xl': '40px',\n '4xl': '48px',\n '5xl': '56px',\n '6xl': '64px',\n '7xl': '80px',\n },\n\n // Border Radius\n radius: {\n none: '0px',\n xs: '4px',\n s: '6px',\n m: '8px',\n l: '12px',\n xl: '16px',\n rounded: '9999px',\n },\n\n // Stroke Width\n stroke: {\n none: '0px',\n thin: '1px',\n light: '1.25px',\n medium: '1.5px',\n large: '2px',\n },\n\n // Container Max Widths\n maxWidth: {\n mobile: '480px',\n tabletPortrait: '768px',\n tabletLandscape: '1024px',\n desktop: '1440px',\n desktopLg: '1600px',\n desktopXl: '1980px',\n },\n} as const;\n\n// Export types for better TypeScript support\nexport type Scale = keyof typeof tokens.scale;\nexport type FontFamily = keyof typeof tokens.typography.fontFamily;\nexport type FontSize = keyof typeof tokens.typography.fontSize;\nexport type Gap = keyof typeof tokens.gap;\nexport type Radius = keyof typeof tokens.radius;\nexport type Stroke = keyof typeof tokens.stroke;\nexport type MaxWidth = keyof typeof tokens.maxWidth;\n\n// Helper function to get CSS variable\nexport const getCSSVar = (name: string): string => `var(--${name})`;\n\n// Helper to create spacing values\nexport const spacing = {\n none: getCSSVar('gap-none'),\n '3xs': getCSSVar('gap-3xs'),\n '2xs': getCSSVar('gap-2xs'),\n xs: getCSSVar('gap-xs'),\n s: getCSSVar('gap-s'),\n m: getCSSVar('gap-m'),\n l: getCSSVar('gap-l'),\n xl: getCSSVar('gap-xl'),\n '2xl': getCSSVar('gap-2xl'),\n '3xl': getCSSVar('gap-3xl'),\n '4xl': getCSSVar('gap-4xl'),\n '5xl': getCSSVar('gap-5xl'),\n '6xl': getCSSVar('gap-6xl'),\n '7xl': getCSSVar('gap-7xl'),\n} as const;\n\n// Color system - semantic tokens\nexport const colors = {\n // Accent\n accent: {\n default: getCSSVar('color-accent-default'),\n subtle: getCSSVar('color-accent-subtle'),\n strong: getCSSVar('color-accent-strong'),\n lighter: getCSSVar('color-accent-lighter'),\n light: getCSSVar('color-accent-light'),\n },\n \n // Primary\n primary: {\n default: getCSSVar('color-primary-default'),\n inverted: getCSSVar('color-primary-inverted'),\n subtle: getCSSVar('color-primary-subtle'),\n light: getCSSVar('color-primary-light'),\n },\n \n // Surface\n surface: {\n background: getCSSVar('color-surface-background'),\n backgroundInverted: getCSSVar('color-surface-background-inverted'),\n layer: getCSSVar('color-surface-layer'),\n layerStrong: getCSSVar('color-surface-layer-strong'),\n layerStronger: getCSSVar('color-surface-layer-stronger'),\n elevated: getCSSVar('color-surface-elevated'),\n accent: getCSSVar('color-surface-accent'),\n input: getCSSVar('color-surface-input'),\n },\n \n // Content/Text\n content: {\n heading: getCSSVar('color-content-heading'),\n primary: getCSSVar('color-content-primary'),\n secondary: getCSSVar('color-content-secondary'),\n disabled: getCSSVar('color-content-disabled'),\n inverted: getCSSVar('color-content-inverted'),\n accent: getCSSVar('color-content-accent'),\n error: getCSSVar('color-content-error'),\n success: getCSSVar('color-content-success'),\n warning: getCSSVar('color-content-warning'),\n },\n \n // Content On Inverted\n contentOnInverted: {\n heading: getCSSVar('color-content-on-inverted-heading'),\n primary: getCSSVar('color-content-on-inverted-primary'),\n secondary: getCSSVar('color-content-on-inverted-secondary'),\n disabled: getCSSVar('color-content-on-inverted-disabled'),\n accent: getCSSVar('color-content-on-inverted-accent'),\n },\n \n // Icon\n icon: {\n primary: getCSSVar('color-icon-primary'),\n secondary: getCSSVar('color-icon-secondary'),\n disabled: getCSSVar('color-icon-disabled'),\n inverted: getCSSVar('color-icon-inverted'),\n accent: getCSSVar('color-icon-accent'),\n accentSubtle: getCSSVar('color-icon-accent-subtle'),\n accentStrong: getCSSVar('color-icon-accent-strong'),\n error: getCSSVar('color-icon-error'),\n success: getCSSVar('color-icon-success'),\n warning: getCSSVar('color-icon-warning'),\n },\n \n // Stroke/Border\n stroke: {\n subtle: getCSSVar('color-stroke-subtle'),\n medium: getCSSVar('color-stroke-medium'),\n strong: getCSSVar('color-stroke-strong'),\n alphaSubtle: getCSSVar('color-stroke-alpha-subtle'),\n alphaMedium: getCSSVar('color-stroke-alpha-medium'),\n alphaStrong: getCSSVar('color-stroke-alpha-strong'),\n },\n \n // Feedback\n feedback: {\n negative: {\n light: getCSSVar('color-feedback-negative-light'),\n default: getCSSVar('color-feedback-negative-default'),\n strong: getCSSVar('color-feedback-negative-strong'),\n },\n positive: {\n light: getCSSVar('color-feedback-positive-light'),\n default: getCSSVar('color-feedback-positive-default'),\n strong: getCSSVar('color-feedback-positive-strong'),\n },\n warning: {\n light: getCSSVar('color-feedback-warning-light'),\n default: getCSSVar('color-feedback-warning-default'),\n strong: getCSSVar('color-feedback-warning-strong'),\n },\n },\n \n // Build System\n build: {\n action: getCSSVar('color-build-action'),\n data: getCSSVar('color-build-data'),\n function: getCSSVar('color-build-function'),\n input: getCSSVar('color-build-input'),\n workflow: getCSSVar('color-build-workflow'),\n },\n} as const;\n\nexport default tokens;\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime"]}