@tonyarbor/components 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.js ADDED
@@ -0,0 +1,510 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ Button: () => Button,
34
+ Card: () => Card,
35
+ Input: () => Input,
36
+ Tag: () => Tag
37
+ });
38
+ module.exports = __toCommonJS(src_exports);
39
+
40
+ // src/Button/Button.tsx
41
+ var React = __toESM(require("react"));
42
+ var import_react_slot = require("@radix-ui/react-slot");
43
+ var import_clsx = require("clsx");
44
+ var import_jsx_runtime = require("react/jsx-runtime");
45
+ var buttonStyles = {
46
+ base: {
47
+ display: "inline-flex",
48
+ alignItems: "center",
49
+ justifyContent: "center",
50
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
51
+ fontWeight: "500",
52
+ borderRadius: "99px",
53
+ // Pill shape
54
+ border: "none",
55
+ cursor: "pointer",
56
+ transition: "all 0.2s ease-in-out",
57
+ outline: "none"
58
+ },
59
+ variants: {
60
+ primary: {
61
+ backgroundColor: "#0e8a0e",
62
+ // brand-600
63
+ color: "#ffffff",
64
+ ":hover": {
65
+ backgroundColor: "#005700"
66
+ // brand-800
67
+ },
68
+ ":active": {
69
+ backgroundColor: "#024002"
70
+ // brand-900
71
+ },
72
+ ":focus-visible": {
73
+ outline: "3px solid #3cad51",
74
+ // brand-500
75
+ outlineOffset: "0px"
76
+ },
77
+ ":disabled": {
78
+ backgroundColor: "#b3b3b3",
79
+ // grey-400
80
+ cursor: "not-allowed"
81
+ }
82
+ },
83
+ secondary: {
84
+ backgroundColor: "#ffffff",
85
+ color: "#2f2f2f",
86
+ // grey-900
87
+ border: "1px solid #d1d1d1",
88
+ // grey-300
89
+ ":hover": {
90
+ backgroundColor: "#f8f8f8"
91
+ // grey-050
92
+ },
93
+ ":active": {
94
+ backgroundColor: "#efefef"
95
+ // grey-100
96
+ },
97
+ ":focus-visible": {
98
+ outline: "3px solid #3cad51",
99
+ // brand-500
100
+ outlineOffset: "0px"
101
+ },
102
+ ":disabled": {
103
+ backgroundColor: "#f8f8f8",
104
+ color: "#b3b3b3",
105
+ cursor: "not-allowed"
106
+ }
107
+ },
108
+ destructive: {
109
+ backgroundColor: "#c93232",
110
+ // destructive-500
111
+ color: "#ffffff",
112
+ ":hover": {
113
+ backgroundColor: "#920a0a"
114
+ // destructive-700
115
+ },
116
+ ":active": {
117
+ backgroundColor: "#610202"
118
+ // destructive-800
119
+ },
120
+ ":focus-visible": {
121
+ outline: "3px solid #e86565",
122
+ // destructive-300
123
+ outlineOffset: "0px"
124
+ },
125
+ ":disabled": {
126
+ backgroundColor: "#b3b3b3",
127
+ cursor: "not-allowed"
128
+ }
129
+ },
130
+ ghost: {
131
+ backgroundColor: "transparent",
132
+ color: "#0b800b",
133
+ // brand-700 for link style
134
+ textDecoration: "underline",
135
+ ":hover": {
136
+ color: "#005700"
137
+ // brand-800
138
+ },
139
+ ":active": {
140
+ color: "#024002"
141
+ // brand-900
142
+ },
143
+ ":focus-visible": {
144
+ outline: "3px solid #3cad51",
145
+ outlineOffset: "2px"
146
+ },
147
+ ":disabled": {
148
+ color: "#b3b3b3",
149
+ cursor: "not-allowed"
150
+ }
151
+ }
152
+ },
153
+ sizes: {
154
+ small: {
155
+ height: "32px",
156
+ fontSize: "13px",
157
+ padding: "8px 16px"
158
+ },
159
+ medium: {
160
+ height: "36px",
161
+ fontSize: "13px",
162
+ padding: "8px 16px"
163
+ }
164
+ }
165
+ };
166
+ var Button = React.forwardRef(
167
+ ({
168
+ variant = "primary",
169
+ size = "medium",
170
+ asChild = false,
171
+ className,
172
+ disabled,
173
+ style,
174
+ children,
175
+ onMouseEnter,
176
+ onMouseLeave,
177
+ onFocus,
178
+ onBlur,
179
+ ...props
180
+ }, ref) => {
181
+ const Comp = asChild ? import_react_slot.Slot : "button";
182
+ const [isHovered, setIsHovered] = React.useState(false);
183
+ const [isFocused, setIsFocused] = React.useState(false);
184
+ const variantStyles = buttonStyles.variants[variant];
185
+ const sizeStyles = buttonStyles.sizes[size];
186
+ const combinedStyle = {
187
+ ...buttonStyles.base,
188
+ ...variantStyles,
189
+ ...sizeStyles,
190
+ ...isHovered && !disabled && variantStyles[":hover"],
191
+ ...isFocused && !disabled && variantStyles[":focus-visible"],
192
+ ...disabled && variantStyles[":disabled"],
193
+ ...style
194
+ };
195
+ const handleMouseEnter = (e) => {
196
+ setIsHovered(true);
197
+ onMouseEnter?.(e);
198
+ };
199
+ const handleMouseLeave = (e) => {
200
+ setIsHovered(false);
201
+ onMouseLeave?.(e);
202
+ };
203
+ const handleFocus = (e) => {
204
+ setIsFocused(true);
205
+ onFocus?.(e);
206
+ };
207
+ const handleBlur = (e) => {
208
+ setIsFocused(false);
209
+ onBlur?.(e);
210
+ };
211
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
212
+ Comp,
213
+ {
214
+ ref,
215
+ className: (0, import_clsx.clsx)("arbor-button", className),
216
+ style: combinedStyle,
217
+ disabled,
218
+ onMouseEnter: handleMouseEnter,
219
+ onMouseLeave: handleMouseLeave,
220
+ onFocus: handleFocus,
221
+ onBlur: handleBlur,
222
+ ...props,
223
+ children
224
+ }
225
+ );
226
+ }
227
+ );
228
+ Button.displayName = "Button";
229
+
230
+ // src/Card/Card.tsx
231
+ var React2 = __toESM(require("react"));
232
+ var import_clsx2 = require("clsx");
233
+ var import_jsx_runtime2 = require("react/jsx-runtime");
234
+ var cardStyles = {
235
+ base: {
236
+ backgroundColor: "#ffffff",
237
+ borderRadius: "8px",
238
+ border: "1px solid #efefef",
239
+ // grey-100 - subtle border
240
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
241
+ },
242
+ padding: {
243
+ none: {
244
+ padding: "0"
245
+ },
246
+ small: {
247
+ padding: "8px"
248
+ // small spacing
249
+ },
250
+ medium: {
251
+ padding: "16px"
252
+ // large spacing
253
+ },
254
+ large: {
255
+ padding: "24px"
256
+ // xlarge spacing
257
+ }
258
+ }
259
+ };
260
+ var Card = React2.forwardRef(
261
+ ({ padding = "large", className, style, children, ...props }, ref) => {
262
+ const paddingStyles = cardStyles.padding[padding];
263
+ const combinedStyle = {
264
+ ...cardStyles.base,
265
+ ...paddingStyles,
266
+ ...style
267
+ };
268
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
269
+ "div",
270
+ {
271
+ ref,
272
+ className: (0, import_clsx2.clsx)("arbor-card", className),
273
+ style: combinedStyle,
274
+ ...props,
275
+ children
276
+ }
277
+ );
278
+ }
279
+ );
280
+ Card.displayName = "Card";
281
+
282
+ // src/Input/Input.tsx
283
+ var React3 = __toESM(require("react"));
284
+ var import_clsx3 = require("clsx");
285
+ var import_jsx_runtime3 = require("react/jsx-runtime");
286
+ var inputStyles = {
287
+ base: {
288
+ width: "100%",
289
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
290
+ backgroundColor: "#ffffff",
291
+ borderRadius: "8px",
292
+ transition: "all 0.2s ease-in-out",
293
+ outline: "none",
294
+ margin: "0",
295
+ display: "block"
296
+ },
297
+ sizes: {
298
+ small: {
299
+ height: "32px",
300
+ fontSize: "13px",
301
+ padding: "8px"
302
+ },
303
+ medium: {
304
+ height: "36px",
305
+ fontSize: "13px",
306
+ padding: "8px"
307
+ }
308
+ },
309
+ states: {
310
+ default: {
311
+ border: "1px solid #d1d1d1",
312
+ // grey-300
313
+ color: "#2f2f2f",
314
+ // grey-900
315
+ ":focus": {
316
+ borderColor: "#3cad51",
317
+ // brand-500
318
+ outline: "3px solid rgba(60, 173, 81, 0.2)"
319
+ },
320
+ ":disabled": {
321
+ backgroundColor: "#f8f8f8",
322
+ // grey-050
323
+ borderColor: "#efefef",
324
+ // grey-100
325
+ color: "#7e7e7e",
326
+ // grey-500
327
+ cursor: "not-allowed"
328
+ }
329
+ },
330
+ error: {
331
+ border: "1px solid #c93232",
332
+ // destructive-500
333
+ color: "#2f2f2f",
334
+ ":focus": {
335
+ borderColor: "#c93232",
336
+ outline: "3px solid rgba(201, 50, 50, 0.2)"
337
+ }
338
+ },
339
+ success: {
340
+ border: "1px solid #16a33d",
341
+ // success-500
342
+ color: "#2f2f2f",
343
+ ":focus": {
344
+ borderColor: "#16a33d",
345
+ outline: "3px solid rgba(22, 163, 61, 0.2)"
346
+ }
347
+ }
348
+ }
349
+ };
350
+ var labelStyles = {
351
+ display: "block",
352
+ fontSize: "13px",
353
+ fontWeight: "600",
354
+ color: "#2f2f2f",
355
+ // grey-900
356
+ marginBottom: "4px",
357
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
358
+ };
359
+ var helperTextStyles = {
360
+ fontSize: "13px",
361
+ margin: "0",
362
+ marginTop: "2px",
363
+ color: "#595959",
364
+ // grey-600
365
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
366
+ lineHeight: "1.4"
367
+ };
368
+ var errorTextStyles = {
369
+ ...helperTextStyles,
370
+ color: "#a62323",
371
+ // destructive-600 (accessible)
372
+ display: "flex",
373
+ alignItems: "center",
374
+ gap: "4px"
375
+ };
376
+ var Input = React3.forwardRef(
377
+ ({
378
+ size = "medium",
379
+ state = "default",
380
+ label,
381
+ error,
382
+ helperText,
383
+ className,
384
+ style,
385
+ disabled,
386
+ ...props
387
+ }, ref) => {
388
+ const inputId = React3.useId();
389
+ const helperTextId = React3.useId();
390
+ const errorId = React3.useId();
391
+ const [isFocused, setIsFocused] = React3.useState(false);
392
+ const sizeStyles = inputStyles.sizes[size];
393
+ const stateStyles = inputStyles.states[error ? "error" : state];
394
+ const inputStyle = {
395
+ ...inputStyles.base,
396
+ ...sizeStyles,
397
+ ...stateStyles,
398
+ ...isFocused && !disabled && stateStyles[":focus"],
399
+ ...disabled && inputStyles.states.default[":disabled"]
400
+ };
401
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx3.clsx)("arbor-input-wrapper", className), style, children: [
402
+ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { htmlFor: inputId, style: labelStyles, children: label }),
403
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
404
+ "input",
405
+ {
406
+ ref,
407
+ id: inputId,
408
+ className: "arbor-input",
409
+ style: inputStyle,
410
+ disabled,
411
+ "aria-invalid": error ? "true" : "false",
412
+ "aria-describedby": error ? errorId : helperText ? helperTextId : void 0,
413
+ onFocus: (e) => {
414
+ setIsFocused(true);
415
+ props.onFocus?.(e);
416
+ },
417
+ onBlur: (e) => {
418
+ setIsFocused(false);
419
+ props.onBlur?.(e);
420
+ },
421
+ ...props
422
+ }
423
+ ),
424
+ error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { id: errorId, style: errorTextStyles, role: "alert", children: error }),
425
+ !error && helperText && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { id: helperTextId, style: helperTextStyles, children: helperText })
426
+ ] });
427
+ }
428
+ );
429
+ Input.displayName = "Input";
430
+
431
+ // src/Tag/Tag.tsx
432
+ var React4 = __toESM(require("react"));
433
+ var import_clsx4 = require("clsx");
434
+ var import_jsx_runtime4 = require("react/jsx-runtime");
435
+ var tagStyles = {
436
+ base: {
437
+ display: "inline-flex",
438
+ alignItems: "center",
439
+ padding: "4px 8px",
440
+ borderRadius: "99px",
441
+ // Pill shape
442
+ fontSize: "11px",
443
+ // Type 1
444
+ fontWeight: "600",
445
+ gap: "4px",
446
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
447
+ lineHeight: "1.2"
448
+ },
449
+ variants: {
450
+ default: {
451
+ backgroundColor: "#fff4e5",
452
+ // caution-100
453
+ color: "#975a00"
454
+ // caution-700
455
+ },
456
+ success: {
457
+ backgroundColor: "#e5f9eb",
458
+ // success-100
459
+ color: "#005a19"
460
+ // success-800
461
+ },
462
+ error: {
463
+ backgroundColor: "#ffeaea",
464
+ // destructive-100
465
+ color: "#a62323"
466
+ // destructive-600
467
+ },
468
+ info: {
469
+ backgroundColor: "#e5f4ff",
470
+ // info-100
471
+ color: "#003d80"
472
+ // info-800
473
+ },
474
+ neutral: {
475
+ backgroundColor: "#f8f8f8",
476
+ // grey-050
477
+ color: "#595959"
478
+ // grey-600
479
+ }
480
+ }
481
+ };
482
+ var Tag = React4.forwardRef(
483
+ ({ variant = "default", className, style, children, ...props }, ref) => {
484
+ const variantStyles = tagStyles.variants[variant];
485
+ const combinedStyle = {
486
+ ...tagStyles.base,
487
+ ...variantStyles,
488
+ ...style
489
+ };
490
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
491
+ "span",
492
+ {
493
+ ref,
494
+ className: (0, import_clsx4.clsx)("arbor-tag", `arbor-tag--${variant}`, className),
495
+ style: combinedStyle,
496
+ ...props,
497
+ children
498
+ }
499
+ );
500
+ }
501
+ );
502
+ Tag.displayName = "Tag";
503
+ // Annotate the CommonJS export names for ESM import in node:
504
+ 0 && (module.exports = {
505
+ Button,
506
+ Card,
507
+ Input,
508
+ Tag
509
+ });
510
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/Button/Button.tsx","../src/Card/Card.tsx","../src/Input/Input.tsx","../src/Tag/Tag.tsx"],"sourcesContent":["/**\n * Arbor Design System - React Components\n *\n * A collection of accessible, customizable React components\n * built with design tokens from @arbor-ds/tokens\n */\n\nexport { Button } from './Button';\nexport type { ButtonProps } from './Button';\n\nexport { Card } from './Card';\nexport type { CardProps } from './Card';\n\nexport { Input } from './Input';\nexport type { InputProps } from './Input';\n\nexport { Tag } from './Tag';\nexport type { TagProps } from './Tag';\n\nexport type {\n ButtonVariant,\n ButtonSize,\n InputSize,\n ValidationState,\n CardPadding,\n TagVariant,\n} from './types';\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { clsx } from 'clsx';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'ghost';\nexport type ButtonSize = 'small' | 'medium';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * The visual style variant of the button\n * @default 'primary'\n */\n variant?: ButtonVariant;\n /**\n * The size of the button\n * @default 'medium'\n */\n size?: ButtonSize;\n /**\n * If true, the component will be rendered as a child element\n * and merge its props with the child\n */\n asChild?: boolean;\n /**\n * The content of the button\n */\n children: React.ReactNode;\n}\n\n// Arbor Design System button styles\nconst buttonStyles = {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n fontWeight: '500',\n borderRadius: '99px', // Pill shape\n border: 'none',\n cursor: 'pointer',\n transition: 'all 0.2s ease-in-out',\n outline: 'none',\n },\n variants: {\n primary: {\n backgroundColor: '#0e8a0e', // brand-600\n color: '#ffffff',\n ':hover': {\n backgroundColor: '#005700', // brand-800\n },\n ':active': {\n backgroundColor: '#024002', // brand-900\n },\n ':focus-visible': {\n outline: '3px solid #3cad51', // brand-500\n outlineOffset: '0px',\n },\n ':disabled': {\n backgroundColor: '#b3b3b3', // grey-400\n cursor: 'not-allowed',\n },\n },\n secondary: {\n backgroundColor: '#ffffff',\n color: '#2f2f2f', // grey-900\n border: '1px solid #d1d1d1', // grey-300\n ':hover': {\n backgroundColor: '#f8f8f8', // grey-050\n },\n ':active': {\n backgroundColor: '#efefef', // grey-100\n },\n ':focus-visible': {\n outline: '3px solid #3cad51', // brand-500\n outlineOffset: '0px',\n },\n ':disabled': {\n backgroundColor: '#f8f8f8',\n color: '#b3b3b3',\n cursor: 'not-allowed',\n },\n },\n destructive: {\n backgroundColor: '#c93232', // destructive-500\n color: '#ffffff',\n ':hover': {\n backgroundColor: '#920a0a', // destructive-700\n },\n ':active': {\n backgroundColor: '#610202', // destructive-800\n },\n ':focus-visible': {\n outline: '3px solid #e86565', // destructive-300\n outlineOffset: '0px',\n },\n ':disabled': {\n backgroundColor: '#b3b3b3',\n cursor: 'not-allowed',\n },\n },\n ghost: {\n backgroundColor: 'transparent',\n color: '#0b800b', // brand-700 for link style\n textDecoration: 'underline',\n ':hover': {\n color: '#005700', // brand-800\n },\n ':active': {\n color: '#024002', // brand-900\n },\n ':focus-visible': {\n outline: '3px solid #3cad51',\n outlineOffset: '2px',\n },\n ':disabled': {\n color: '#b3b3b3',\n cursor: 'not-allowed',\n },\n },\n },\n sizes: {\n small: {\n height: '32px',\n fontSize: '13px',\n padding: '8px 16px',\n },\n medium: {\n height: '36px',\n fontSize: '13px',\n padding: '8px 16px',\n },\n },\n};\n\n/**\n * Button component - Arbor Design System\n *\n * A flexible button component with pill-shaped design following Arbor's design system.\n * Supports primary (green), secondary (outlined), destructive (red), and ghost (link-style) variants.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"medium\">\n * Save Changes\n * </Button>\n * ```\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'medium',\n asChild = false,\n className,\n disabled,\n style,\n children,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : 'button';\n const [isHovered, setIsHovered] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n\n const variantStyles = buttonStyles.variants[variant];\n const sizeStyles = buttonStyles.sizes[size];\n\n const combinedStyle: React.CSSProperties = {\n ...buttonStyles.base,\n ...variantStyles,\n ...sizeStyles,\n ...(isHovered && !disabled && variantStyles[':hover']),\n ...(isFocused && !disabled && variantStyles[':focus-visible']),\n ...(disabled && variantStyles[':disabled']),\n ...style,\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n setIsHovered(true);\n onMouseEnter?.(e);\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n setIsHovered(false);\n onMouseLeave?.(e);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n return (\n <Comp\n ref={ref}\n className={clsx('arbor-button', className)}\n style={combinedStyle}\n disabled={disabled}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import * as React from 'react';\nimport { clsx } from 'clsx';\n\ntype PaddingVariant = 'none' | 'small' | 'medium' | 'large';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * The padding variant of the card\n * @default 'large'\n */\n padding?: PaddingVariant;\n /**\n * The content of the card\n */\n children: React.ReactNode;\n}\n\n// Arbor Design System card styles\nconst cardStyles = {\n base: {\n backgroundColor: '#ffffff',\n borderRadius: '8px',\n border: '1px solid #efefef', // grey-100 - subtle border\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n },\n padding: {\n none: {\n padding: '0',\n },\n small: {\n padding: '8px', // small spacing\n },\n medium: {\n padding: '16px', // large spacing\n },\n large: {\n padding: '24px', // xlarge spacing\n },\n },\n};\n\n/**\n * Card component - Arbor Design System\n *\n * A container component that provides consistent styling for content cards.\n * Uses subtle borders rather than shadows, following Arbor's minimal design approach.\n *\n * @example\n * ```tsx\n * <Card padding=\"large\">\n * <h2>Card Title</h2>\n * <p>Card content goes here</p>\n * </Card>\n * ```\n */\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ padding = 'large', className, style, children, ...props }, ref) => {\n const paddingStyles = cardStyles.padding[padding];\n\n const combinedStyle: React.CSSProperties = {\n ...cardStyles.base,\n ...paddingStyles,\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={clsx('arbor-card', className)}\n style={combinedStyle}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = 'Card';\n","import * as React from 'react';\nimport { clsx } from 'clsx';\n\nexport type InputSize = 'small' | 'medium';\nexport type ValidationState = 'default' | 'error' | 'success';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /**\n * The size of the input\n * @default 'medium'\n */\n size?: InputSize;\n /**\n * The validation state of the input\n * @default 'default'\n */\n state?: ValidationState;\n /**\n * Optional label for the input\n */\n label?: string;\n /**\n * Optional error message to display\n */\n error?: string;\n /**\n * Optional helper text to display\n */\n helperText?: string;\n}\n\n// Arbor Design System input styles\nconst inputStyles = {\n base: {\n width: '100%',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n backgroundColor: '#ffffff',\n borderRadius: '8px',\n transition: 'all 0.2s ease-in-out',\n outline: 'none',\n margin: '0',\n display: 'block',\n },\n sizes: {\n small: {\n height: '32px',\n fontSize: '13px',\n padding: '8px',\n },\n medium: {\n height: '36px',\n fontSize: '13px',\n padding: '8px',\n },\n },\n states: {\n default: {\n border: '1px solid #d1d1d1', // grey-300\n color: '#2f2f2f', // grey-900\n ':focus': {\n borderColor: '#3cad51', // brand-500\n outline: '3px solid rgba(60, 173, 81, 0.2)',\n },\n ':disabled': {\n backgroundColor: '#f8f8f8', // grey-050\n borderColor: '#efefef', // grey-100\n color: '#7e7e7e', // grey-500\n cursor: 'not-allowed',\n },\n },\n error: {\n border: '1px solid #c93232', // destructive-500\n color: '#2f2f2f',\n ':focus': {\n borderColor: '#c93232',\n outline: '3px solid rgba(201, 50, 50, 0.2)',\n },\n },\n success: {\n border: '1px solid #16a33d', // success-500\n color: '#2f2f2f',\n ':focus': {\n borderColor: '#16a33d',\n outline: '3px solid rgba(22, 163, 61, 0.2)',\n },\n },\n },\n};\n\nconst labelStyles: React.CSSProperties = {\n display: 'block',\n fontSize: '13px',\n fontWeight: '600',\n color: '#2f2f2f', // grey-900\n marginBottom: '4px',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n};\n\nconst helperTextStyles: React.CSSProperties = {\n fontSize: '13px',\n margin: '0',\n marginTop: '2px',\n color: '#595959', // grey-600\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n lineHeight: '1.4',\n};\n\nconst errorTextStyles: React.CSSProperties = {\n ...helperTextStyles,\n color: '#a62323', // destructive-600 (accessible)\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n};\n\n/**\n * Input component - Arbor Design System\n *\n * A text input component following Arbor's design specifications.\n * Supports labels, validation states (error/success), and helper text.\n * Uses 8px border radius and Inter font family.\n *\n * @example\n * ```tsx\n * <Input\n * label=\"Email\"\n * type=\"email\"\n * placeholder=\"you@example.com\"\n * helperText=\"We'll never share your email\"\n * />\n * ```\n */\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'medium',\n state = 'default',\n label,\n error,\n helperText,\n className,\n style,\n disabled,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId();\n const helperTextId = React.useId();\n const errorId = React.useId();\n const [isFocused, setIsFocused] = React.useState(false);\n\n const sizeStyles = inputStyles.sizes[size];\n const stateStyles = inputStyles.states[error ? 'error' : state];\n\n const inputStyle: React.CSSProperties = {\n ...inputStyles.base,\n ...sizeStyles,\n ...stateStyles,\n ...(isFocused && !disabled && stateStyles[':focus']),\n ...(disabled && inputStyles.states.default[':disabled']),\n };\n\n return (\n <div className={clsx('arbor-input-wrapper', className)} style={style}>\n {label && (\n <label htmlFor={inputId} style={labelStyles}>\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className=\"arbor-input\"\n style={inputStyle}\n disabled={disabled}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error ? errorId : helperText ? helperTextId : undefined\n }\n onFocus={(e) => {\n setIsFocused(true);\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n props.onBlur?.(e);\n }}\n {...props}\n />\n {error && (\n <p id={errorId} style={errorTextStyles} role=\"alert\">\n {error}\n </p>\n )}\n {!error && helperText && (\n <p id={helperTextId} style={helperTextStyles}>\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n","import * as React from 'react';\nimport { clsx } from 'clsx';\n\nexport type TagVariant = 'default' | 'success' | 'error' | 'info' | 'neutral';\n\nexport interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * The visual style variant of the tag\n * @default 'default'\n */\n variant?: TagVariant;\n /**\n * The content of the tag\n */\n children: React.ReactNode;\n}\n\n// Arbor Design System tag styles\nconst tagStyles = {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n padding: '4px 8px',\n borderRadius: '99px', // Pill shape\n fontSize: '11px', // Type 1\n fontWeight: '600',\n gap: '4px',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n lineHeight: '1.2',\n },\n variants: {\n default: {\n backgroundColor: '#fff4e5', // caution-100\n color: '#975a00', // caution-700\n },\n success: {\n backgroundColor: '#e5f9eb', // success-100\n color: '#005a19', // success-800\n },\n error: {\n backgroundColor: '#ffeaea', // destructive-100\n color: '#a62323', // destructive-600\n },\n info: {\n backgroundColor: '#e5f4ff', // info-100\n color: '#003d80', // info-800\n },\n neutral: {\n backgroundColor: '#f8f8f8', // grey-050\n color: '#595959', // grey-600\n },\n },\n};\n\n/**\n * Tag component - Arbor Design System\n *\n * A label component for categorization and status indication.\n * Uses pill shape (99px radius) with semantic color variants.\n *\n * @example\n * ```tsx\n * <Tag variant=\"success\">Active</Tag>\n * <Tag variant=\"error\">Overdue</Tag>\n * <Tag variant=\"info\">New</Tag>\n * ```\n */\nexport const Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n ({ variant = 'default', className, style, children, ...props }, ref) => {\n const variantStyles = tagStyles.variants[variant];\n\n const combinedStyle: React.CSSProperties = {\n ...tagStyles.base,\n ...variantStyles,\n ...style,\n };\n\n return (\n <span\n ref={ref}\n className={clsx('arbor-tag', `arbor-tag--${variant}`, className)}\n style={combinedStyle}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nTag.displayName = 'Tag';\n"],"mappings":"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","names":["React","import_clsx","import_jsx_runtime","React","import_clsx","import_jsx_runtime","React","import_clsx","import_jsx_runtime"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,19 @@
1
+ import {
2
+ Button
3
+ } from "./chunk-ALEJXAZY.mjs";
4
+ import {
5
+ Card
6
+ } from "./chunk-ZFKW3P6P.mjs";
7
+ import {
8
+ Input
9
+ } from "./chunk-NOHUMPXV.mjs";
10
+ import {
11
+ Tag
12
+ } from "./chunk-QCRIECT7.mjs";
13
+ export {
14
+ Button,
15
+ Card,
16
+ Input,
17
+ Tag
18
+ };
19
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@tonyarbor/components",
3
+ "version": "0.1.0",
4
+ "description": "React components for Arbor Design System",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./Button": {
15
+ "import": "./dist/Button.mjs",
16
+ "require": "./dist/Button.js",
17
+ "types": "./dist/Button.d.ts"
18
+ },
19
+ "./Card": {
20
+ "import": "./dist/Card.mjs",
21
+ "require": "./dist/Card.js",
22
+ "types": "./dist/Card.d.ts"
23
+ },
24
+ "./Input": {
25
+ "import": "./dist/Input.mjs",
26
+ "require": "./dist/Input.js",
27
+ "types": "./dist/Input.d.ts"
28
+ },
29
+ "./Tag": {
30
+ "import": "./dist/Tag.mjs",
31
+ "require": "./dist/Tag.js",
32
+ "types": "./dist/Tag.d.ts"
33
+ }
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "README.md"
38
+ ],
39
+ "scripts": {
40
+ "build": "tsup",
41
+ "dev": "tsup --watch",
42
+ "test": "vitest",
43
+ "test:watch": "vitest --watch",
44
+ "clean": "rm -rf dist"
45
+ },
46
+ "peerDependencies": {
47
+ "react": "^18.0.0",
48
+ "react-dom": "^18.0.0"
49
+ },
50
+ "dependencies": {
51
+ "@tonyarbor/tokens": "*",
52
+ "@radix-ui/react-slot": "^1.0.2",
53
+ "clsx": "^2.0.0"
54
+ },
55
+ "devDependencies": {
56
+ "@testing-library/jest-dom": "^6.1.5",
57
+ "@testing-library/react": "^14.1.2",
58
+ "@testing-library/user-event": "^14.5.1",
59
+ "@types/react": "^18.2.45",
60
+ "@types/react-dom": "^18.2.18",
61
+ "@vitejs/plugin-react": "^4.2.1",
62
+ "jsdom": "^23.0.1",
63
+ "react": "^18.2.0",
64
+ "react-dom": "^18.2.0",
65
+ "tsup": "^8.0.0",
66
+ "typescript": "^5.3.0",
67
+ "vitest": "^1.0.4"
68
+ },
69
+ "keywords": [
70
+ "react",
71
+ "components",
72
+ "design-system",
73
+ "ui",
74
+ "arbor"
75
+ ],
76
+ "author": "Arbor Team",
77
+ "license": "MIT",
78
+ "publishConfig": {
79
+ "access": "restricted"
80
+ }
81
+ }