@ataraui/ataraui-react 0.2.0 → 0.3.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/README.md CHANGED
@@ -47,23 +47,73 @@ Add the source and theme tokens to your `globals.css`:
47
47
  ## Usage
48
48
 
49
49
  ```tsx
50
- import { Button, Input, Badge } from '@ataraui/ataraui-react'
50
+ import {
51
+ Button,
52
+ Input,
53
+ Badge,
54
+ Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter,
55
+ Avatar,
56
+ Separator,
57
+ Spinner,
58
+ Select,
59
+ Checkbox,
60
+ RadioGroup,
61
+ Switch,
62
+ } from '@ataraui/ataraui-react'
51
63
 
52
64
  export default function Page() {
53
65
  return (
54
66
  <div>
55
67
  <Badge variant="default">New</Badge>
56
- <Input
57
- label="Email"
58
- placeholder="you@example.com"
59
- hint="We will never spam you."
68
+
69
+ <Input label="Email" placeholder="you@example.com" hint="We will never spam you." />
70
+
71
+ <Button variant="primary" size="md">Ship it</Button>
72
+ <Button variant="outline" isLoading>Loading...</Button>
73
+
74
+ <Card variant="elevated">
75
+ <CardHeader>
76
+ <CardTitle>Card Title</CardTitle>
77
+ <CardDescription>Card description here.</CardDescription>
78
+ </CardHeader>
79
+ <CardContent>Content goes here.</CardContent>
80
+ <CardFooter>
81
+ <Button variant="primary" size="sm">Confirm</Button>
82
+ <Button variant="ghost" size="sm">Cancel</Button>
83
+ </CardFooter>
84
+ </Card>
85
+
86
+ <Avatar src="https://github.com/ryo.png" alt="Ryo" size="md" />
87
+ <Avatar fallback="Ryo Kurniawan" size="md" />
88
+
89
+ <Separator />
90
+ <Separator label="OR" />
91
+
92
+ <Spinner size="md" />
93
+ <Spinner size="md" label="Loading data..." />
94
+
95
+ <Select
96
+ label="Country"
97
+ placeholder="Select a country..."
98
+ options={[
99
+ { value: 'id', label: 'Indonesia' },
100
+ { value: 'sg', label: 'Singapore' },
101
+ ]}
60
102
  />
61
- <Button variant="primary" size="md">
62
- Ship it
63
- </Button>
64
- <Button variant="outline" isLoading>
65
- Loading...
66
- </Button>
103
+
104
+ <Checkbox label="Accept terms" />
105
+ <Checkbox label="Remember me" description="Stay logged in for 30 days." />
106
+
107
+ <RadioGroup
108
+ name="plan"
109
+ label="Billing Plan"
110
+ options={[
111
+ { value: 'monthly', label: 'Monthly' },
112
+ { value: 'yearly', label: 'Yearly' },
113
+ ]}
114
+ />
115
+
116
+ <Switch label="Notifications" description="Receive email notifications." />
67
117
  </div>
68
118
  )
69
119
  }
@@ -73,9 +123,17 @@ export default function Page() {
73
123
 
74
124
  | Component | Variants | Status |
75
125
  |-----------|----------|--------|
76
- | `Button` | `primary` `secondary` `outline` `ghost` `destructive` | ✅ Ready |
77
- | `Input` | `default` `error` | ✅ Ready |
78
- | `Badge` | `default` `secondary` `outline` `success` `warning` `destructive` | ✅ Ready |
126
+ | `Button` | `primary` `secondary` `outline` `ghost` `destructive` | ✅ Ready |
127
+ | `Input` | `default` `error` | ✅ Ready |
128
+ | `Badge` | `default` `secondary` `outline` `success` `warning` `destructive` | ✅ Ready |
129
+ | `Card` | `elevated` `outlined` `ghost` | ✅ Ready |
130
+ | `Avatar` | — | ✅ Ready |
131
+ | `Separator` | `horizontal` `vertical` | ✅ Ready |
132
+ | `Spinner` | — | ✅ Ready |
133
+ | `Select` | `default` `error` | ✅ Ready |
134
+ | `Checkbox` | — | ✅ Ready |
135
+ | `RadioGroup` | `vertical` `horizontal` | ✅ Ready |
136
+ | `Switch` | — | ✅ Ready |
79
137
 
80
138
  ## Button Props
81
139
 
@@ -94,6 +152,79 @@ export default function Page() {
94
152
  | `hint` | `string` | Helper text displayed below the input |
95
153
  | `inputSize` | `sm` \| `md` \| `lg` | Input height size |
96
154
 
155
+ ## Card Props
156
+
157
+ | Prop | Type | Default | Description |
158
+ |------|------|---------|-------------|
159
+ | `variant` | `elevated` \| `outlined` \| `ghost` | `elevated` | Visual style |
160
+ | `padding` | `none` \| `sm` \| `md` \| `lg` | `md` | Inner padding |
161
+
162
+ ## Avatar Props
163
+
164
+ | Prop | Type | Default | Description |
165
+ |------|------|---------|-------------|
166
+ | `src` | `string` | — | Image URL |
167
+ | `alt` | `string` | — | Image alt text |
168
+ | `fallback` | `string` | — | Name for initials fallback |
169
+ | `size` | `xs` \| `sm` \| `md` \| `lg` \| `xl` | `md` | Avatar size |
170
+
171
+ ## Separator Props
172
+
173
+ | Prop | Type | Default | Description |
174
+ |------|------|---------|-------------|
175
+ | `orientation` | `horizontal` \| `vertical` | `horizontal` | Direction |
176
+ | `label` | `string` | — | Text label in the middle |
177
+
178
+ ## Spinner Props
179
+
180
+ | Prop | Type | Default | Description |
181
+ |------|------|---------|-------------|
182
+ | `size` | `xs` \| `sm` \| `md` \| `lg` \| `xl` | `md` | Spinner size |
183
+ | `label` | `string` | — | Text label below spinner |
184
+
185
+ ## Select Props
186
+
187
+ | Prop | Type | Description |
188
+ |------|------|-------------|
189
+ | `label` | `string` | Label displayed above the select |
190
+ | `error` | `string` | Error message (also triggers error state) |
191
+ | `hint` | `string` | Helper text displayed below the select |
192
+ | `placeholder` | `string` | Placeholder option text |
193
+ | `options` | `SelectOption[]` | Array of `{ value, label, disabled? }` |
194
+ | `selectSize` | `sm` \| `md` \| `lg` | Select height size |
195
+
196
+ ## Checkbox Props
197
+
198
+ | Prop | Type | Description |
199
+ |------|------|-------------|
200
+ | `label` | `string` | Label displayed next to the checkbox |
201
+ | `description` | `string` | Helper text below the label |
202
+ | `error` | `string` | Error message below the checkbox |
203
+
204
+ ## RadioGroup Props
205
+
206
+ | Prop | Type | Default | Description |
207
+ |------|------|---------|-------------|
208
+ | `name` | `string` | — | Input group name (required) |
209
+ | `options` | `RadioOption[]` | — | Array of `{ value, label, description?, disabled? }` |
210
+ | `value` | `string` | — | Controlled value |
211
+ | `onChange` | `(value: string) => void` | — | Change handler |
212
+ | `label` | `string` | — | Group label |
213
+ | `orientation` | `vertical` \| `horizontal` | `vertical` | Layout direction |
214
+ | `error` | `string` | — | Error message |
215
+ | `hint` | `string` | — | Helper text |
216
+
217
+ ## Switch Props
218
+
219
+ | Prop | Type | Description |
220
+ |------|------|-------------|
221
+ | `label` | `string` | Label displayed next to the switch |
222
+ | `description` | `string` | Helper text below the label |
223
+ | `error` | `string` | Error message below the switch |
224
+ | `checked` | `boolean` | Controlled checked state |
225
+ | `defaultChecked` | `boolean` | Default checked state (uncontrolled) |
226
+ | `onChange` | `ChangeEventHandler` | Change handler |
227
+
97
228
  ## Development
98
229
 
99
230
  ```bash
@@ -124,12 +255,12 @@ npm publish
124
255
  | Version | Components | Category |
125
256
  |---------|-----------|----------|
126
257
  | **v0.1.0** ✅ | `Button` `Input` `Badge` | Core + Tailwind v4 |
127
- | **v0.2.0** | `Card` `Avatar` `Separator` `Spinner` | Layout primitives |
128
- | **v0.3.0** | `Select` `Checkbox` `Radio` `Switch` | Form components |
258
+ | **v0.2.0** | `Card` `Avatar` `Separator` `Spinner` | Layout primitives |
259
+ | **v0.3.0** | `Select` `Checkbox` `Radio` `Switch` | Form components |
129
260
  | **v0.4.0** | `Modal/Dialog` `Drawer` `Tooltip` `Popover` | Overlay components |
130
261
  | **v0.5.0** | `Toast/Alert` `Progress` `Skeleton` | Feedback components |
131
262
  | **v0.6.0** | `Table` `Tabs` `Accordion` | Data display |
132
- | **v0.7.0** | Dark mode `Storybook` docs | DX improvements |
263
+ | **v0.7.0** | Dark mode · Storybook docs | DX improvements |
133
264
  | **v0.8.0** | `Navbar` `Sidebar` `Breadcrumb` | Navigation |
134
265
  | **v0.9.0** | `DatePicker` `Combobox` `FileUpload` | Advanced inputs |
135
266
  | **v1.0.0** 🎯 | API stable · Full docs · A11y tested · ataraui.com live | Stable release |
package/dist/index.d.mts CHANGED
@@ -140,4 +140,54 @@ interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement>, VariantPro
140
140
  }
141
141
  declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
142
142
 
143
- export { Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Input, type InputProps, Separator, type SeparatorProps, Spinner, type SpinnerProps, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, fontSize, inputVariants, radius, separatorVariants, spinnerVariants };
143
+ declare const selectVariants: (props?: ({
144
+ state?: "default" | "error" | null | undefined;
145
+ selectSize?: "sm" | "md" | "lg" | null | undefined;
146
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
147
+ interface SelectOption {
148
+ value: string;
149
+ label: string;
150
+ disabled?: boolean;
151
+ }
152
+ interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>, VariantProps<typeof selectVariants> {
153
+ label?: string;
154
+ error?: string;
155
+ hint?: string;
156
+ placeholder?: string;
157
+ options?: SelectOption[];
158
+ }
159
+ declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
160
+
161
+ interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {
162
+ label?: string;
163
+ description?: string;
164
+ error?: string;
165
+ }
166
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
167
+
168
+ interface RadioOption {
169
+ value: string;
170
+ label: string;
171
+ description?: string;
172
+ disabled?: boolean;
173
+ }
174
+ interface RadioGroupProps {
175
+ options: RadioOption[];
176
+ value?: string;
177
+ onChange?: (value: string) => void;
178
+ name: string;
179
+ label?: string;
180
+ error?: string;
181
+ hint?: string;
182
+ orientation?: "vertical" | "horizontal";
183
+ }
184
+ declare const RadioGroup: React.FC<RadioGroupProps>;
185
+
186
+ interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
187
+ label?: string;
188
+ description?: string;
189
+ error?: string;
190
+ }
191
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLInputElement>>;
192
+
193
+ export { Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, Input, type InputProps, RadioGroup, type RadioGroupProps, type RadioOption, Select, type SelectOption, type SelectProps, Separator, type SeparatorProps, Spinner, type SpinnerProps, Switch, type SwitchProps, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, fontSize, inputVariants, radius, selectVariants, separatorVariants, spinnerVariants };
package/dist/index.d.ts CHANGED
@@ -140,4 +140,54 @@ interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement>, VariantPro
140
140
  }
141
141
  declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
142
142
 
143
- export { Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Input, type InputProps, Separator, type SeparatorProps, Spinner, type SpinnerProps, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, fontSize, inputVariants, radius, separatorVariants, spinnerVariants };
143
+ declare const selectVariants: (props?: ({
144
+ state?: "default" | "error" | null | undefined;
145
+ selectSize?: "sm" | "md" | "lg" | null | undefined;
146
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
147
+ interface SelectOption {
148
+ value: string;
149
+ label: string;
150
+ disabled?: boolean;
151
+ }
152
+ interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>, VariantProps<typeof selectVariants> {
153
+ label?: string;
154
+ error?: string;
155
+ hint?: string;
156
+ placeholder?: string;
157
+ options?: SelectOption[];
158
+ }
159
+ declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
160
+
161
+ interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {
162
+ label?: string;
163
+ description?: string;
164
+ error?: string;
165
+ }
166
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
167
+
168
+ interface RadioOption {
169
+ value: string;
170
+ label: string;
171
+ description?: string;
172
+ disabled?: boolean;
173
+ }
174
+ interface RadioGroupProps {
175
+ options: RadioOption[];
176
+ value?: string;
177
+ onChange?: (value: string) => void;
178
+ name: string;
179
+ label?: string;
180
+ error?: string;
181
+ hint?: string;
182
+ orientation?: "vertical" | "horizontal";
183
+ }
184
+ declare const RadioGroup: React.FC<RadioGroupProps>;
185
+
186
+ interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
187
+ label?: string;
188
+ description?: string;
189
+ error?: string;
190
+ }
191
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLInputElement>>;
192
+
193
+ export { Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, Input, type InputProps, RadioGroup, type RadioGroupProps, type RadioOption, Select, type SelectOption, type SelectProps, Separator, type SeparatorProps, Spinner, type SpinnerProps, Switch, type SwitchProps, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, fontSize, inputVariants, radius, selectVariants, separatorVariants, spinnerVariants };
package/dist/index.js CHANGED
@@ -341,6 +341,257 @@ var Spinner = React3__default.default.forwardRef(
341
341
  ] })
342
342
  );
343
343
  Spinner.displayName = "Spinner";
344
+ var selectVariants = classVarianceAuthority.cva(
345
+ "w-full appearance-none bg-white border rounded-(--radius-md) px-3 py-2 text-sm transition-colors cursor-pointer focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)",
346
+ {
347
+ variants: {
348
+ state: {
349
+ default: "border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20",
350
+ error: "border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20"
351
+ },
352
+ selectSize: {
353
+ sm: "h-8 text-xs pr-8",
354
+ md: "h-10 text-sm pr-8",
355
+ lg: "h-12 text-base pr-10"
356
+ }
357
+ },
358
+ defaultVariants: {
359
+ state: "default",
360
+ selectSize: "md"
361
+ }
362
+ }
363
+ );
364
+ var Select = React3__default.default.forwardRef(
365
+ ({ className, label, error, hint, placeholder, options, selectSize, id, children, ...props }, ref) => {
366
+ const selectId = id != null ? id : label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-");
367
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5 w-full", children: [
368
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: selectId, className: "text-sm font-medium text-(--color-neutral-700)", children: label }),
369
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
370
+ /* @__PURE__ */ jsxRuntime.jsxs(
371
+ "select",
372
+ {
373
+ ref,
374
+ id: selectId,
375
+ className: cn(selectVariants({ state: error ? "error" : "default", selectSize }), className),
376
+ ...props,
377
+ children: [
378
+ placeholder && /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: true, children: placeholder }),
379
+ options ? options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value)) : children
380
+ ]
381
+ }
382
+ ),
383
+ /* @__PURE__ */ jsxRuntime.jsx(
384
+ "svg",
385
+ {
386
+ className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-(--color-neutral-400)",
387
+ xmlns: "http://www.w3.org/2000/svg",
388
+ viewBox: "0 0 24 24",
389
+ fill: "none",
390
+ stroke: "currentColor",
391
+ strokeWidth: "2",
392
+ strokeLinecap: "round",
393
+ strokeLinejoin: "round",
394
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m6 9 6 6 6-6" })
395
+ }
396
+ )
397
+ ] }),
398
+ hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-neutral-500)", children: hint }),
399
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-danger-500)", children: error })
400
+ ] });
401
+ }
402
+ );
403
+ Select.displayName = "Select";
404
+ var Checkbox = React3__default.default.forwardRef(
405
+ ({ className, label, description, error, id, disabled, ...props }, ref) => {
406
+ const checkboxId = id != null ? id : label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-");
407
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
408
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2.5", children: [
409
+ /* @__PURE__ */ jsxRuntime.jsx(
410
+ "input",
411
+ {
412
+ ref,
413
+ type: "checkbox",
414
+ id: checkboxId,
415
+ disabled,
416
+ className: cn(
417
+ "h-4 w-4 shrink-0 mt-0.5 rounded-(--radius-sm) border cursor-pointer transition-colors appearance-none",
418
+ "border-(--color-neutral-300) bg-white",
419
+ "checked:bg-(--color-primary-500) checked:border-(--color-primary-500)",
420
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20",
421
+ "disabled:cursor-not-allowed disabled:opacity-50",
422
+ error && "border-(--color-danger-500)",
423
+ className
424
+ ),
425
+ style: {
426
+ backgroundImage: `url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")`,
427
+ backgroundRepeat: "no-repeat",
428
+ backgroundPosition: "center"
429
+ },
430
+ ...props
431
+ }
432
+ ),
433
+ (label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5", children: [
434
+ label && /* @__PURE__ */ jsxRuntime.jsx(
435
+ "label",
436
+ {
437
+ htmlFor: checkboxId,
438
+ className: cn(
439
+ "text-sm font-medium cursor-pointer text-(--color-neutral-900)",
440
+ disabled && "cursor-not-allowed opacity-50"
441
+ ),
442
+ children: label
443
+ }
444
+ ),
445
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-neutral-500)", children: description })
446
+ ] })
447
+ ] }),
448
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-danger-500) ml-6", children: error })
449
+ ] });
450
+ }
451
+ );
452
+ Checkbox.displayName = "Checkbox";
453
+ var RadioGroup = ({
454
+ options,
455
+ value,
456
+ onChange,
457
+ name,
458
+ label,
459
+ error,
460
+ hint,
461
+ orientation = "vertical"
462
+ }) => {
463
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
464
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-(--color-neutral-700)", children: label }),
465
+ /* @__PURE__ */ jsxRuntime.jsx(
466
+ "div",
467
+ {
468
+ className: cn(
469
+ "flex gap-3",
470
+ orientation === "vertical" ? "flex-col" : "flex-row flex-wrap"
471
+ ),
472
+ children: options.map((option) => {
473
+ const optionId = `${name}-${option.value}`;
474
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2.5", children: [
475
+ /* @__PURE__ */ jsxRuntime.jsx(
476
+ "input",
477
+ {
478
+ type: "radio",
479
+ id: optionId,
480
+ name,
481
+ value: option.value,
482
+ checked: value === option.value,
483
+ disabled: option.disabled,
484
+ onChange: () => onChange == null ? void 0 : onChange(option.value),
485
+ className: cn(
486
+ "h-4 w-4 shrink-0 mt-0.5 cursor-pointer appearance-none rounded-full border-2 transition-colors",
487
+ "border-(--color-neutral-300) bg-white",
488
+ "checked:border-(--color-primary-500) checked:bg-(--color-primary-500)",
489
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20",
490
+ "disabled:cursor-not-allowed disabled:opacity-50",
491
+ error && "border-(--color-danger-500)"
492
+ ),
493
+ style: {
494
+ backgroundImage: value === option.value ? `url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")` : "none",
495
+ backgroundRepeat: "no-repeat",
496
+ backgroundPosition: "center"
497
+ }
498
+ }
499
+ ),
500
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5", children: [
501
+ /* @__PURE__ */ jsxRuntime.jsx(
502
+ "label",
503
+ {
504
+ htmlFor: optionId,
505
+ className: cn(
506
+ "text-sm font-medium cursor-pointer text-(--color-neutral-900)",
507
+ option.disabled && "cursor-not-allowed opacity-50"
508
+ ),
509
+ children: option.label
510
+ }
511
+ ),
512
+ option.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-neutral-500)", children: option.description })
513
+ ] })
514
+ ] }, option.value);
515
+ })
516
+ }
517
+ ),
518
+ hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-neutral-500)", children: hint }),
519
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-danger-500)", children: error })
520
+ ] });
521
+ };
522
+ RadioGroup.displayName = "RadioGroup";
523
+ var Switch = React3__default.default.forwardRef(
524
+ ({ className, label, description, error, id, disabled, checked, defaultChecked, onChange, ...props }, ref) => {
525
+ const switchId = id != null ? id : `switch-${Math.random().toString(36).slice(2, 9)}`;
526
+ const [internalChecked, setInternalChecked] = React3__default.default.useState(
527
+ defaultChecked != null ? defaultChecked : false
528
+ );
529
+ const isControlled = checked !== void 0;
530
+ const isChecked = isControlled ? checked : internalChecked;
531
+ const handleChange = (e) => {
532
+ if (!isControlled) setInternalChecked(e.target.checked);
533
+ onChange == null ? void 0 : onChange(e);
534
+ };
535
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
536
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
537
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative inline-flex shrink-0 mt-0.5", children: [
538
+ /* @__PURE__ */ jsxRuntime.jsx(
539
+ "input",
540
+ {
541
+ ref,
542
+ type: "checkbox",
543
+ role: "switch",
544
+ id: switchId,
545
+ disabled,
546
+ checked: isChecked,
547
+ onChange: handleChange,
548
+ className: "sr-only peer",
549
+ ...props
550
+ }
551
+ ),
552
+ /* @__PURE__ */ jsxRuntime.jsx(
553
+ "label",
554
+ {
555
+ htmlFor: switchId,
556
+ className: cn(
557
+ "relative flex h-5 w-9 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors",
558
+ "bg-(--color-neutral-200) peer-checked:bg-(--color-primary-500)",
559
+ "peer-focus-visible:ring-2 peer-focus-visible:ring-(--color-primary-500)/20",
560
+ "peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
561
+ error && "ring-2 ring-(--color-danger-500)/20",
562
+ className
563
+ ),
564
+ children: /* @__PURE__ */ jsxRuntime.jsx(
565
+ "span",
566
+ {
567
+ className: "pointer-events-none block h-3.5 w-3.5 rounded-full bg-white shadow transition-transform",
568
+ style: {
569
+ transform: isChecked ? "translateX(18px)" : "translateX(2px)"
570
+ }
571
+ }
572
+ )
573
+ }
574
+ )
575
+ ] }),
576
+ (label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5", children: [
577
+ label && /* @__PURE__ */ jsxRuntime.jsx(
578
+ "span",
579
+ {
580
+ className: cn(
581
+ "text-sm font-medium text-(--color-neutral-900)",
582
+ disabled && "opacity-50"
583
+ ),
584
+ children: label
585
+ }
586
+ ),
587
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-neutral-500)", children: description })
588
+ ] })
589
+ ] }),
590
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-(--color-danger-500) ml-12", children: error })
591
+ ] });
592
+ }
593
+ );
594
+ Switch.displayName = "Switch";
344
595
 
345
596
  exports.Avatar = Avatar;
346
597
  exports.Badge = Badge;
@@ -351,9 +602,13 @@ exports.CardDescription = CardDescription;
351
602
  exports.CardFooter = CardFooter;
352
603
  exports.CardHeader = CardHeader;
353
604
  exports.CardTitle = CardTitle;
605
+ exports.Checkbox = Checkbox;
354
606
  exports.Input = Input;
607
+ exports.RadioGroup = RadioGroup;
608
+ exports.Select = Select;
355
609
  exports.Separator = Separator;
356
610
  exports.Spinner = Spinner;
611
+ exports.Switch = Switch;
357
612
  exports.avatarVariants = avatarVariants;
358
613
  exports.badgeVariants = badgeVariants;
359
614
  exports.buttonVariants = buttonVariants;
@@ -363,6 +618,7 @@ exports.colors = colors;
363
618
  exports.fontSize = fontSize;
364
619
  exports.inputVariants = inputVariants;
365
620
  exports.radius = radius;
621
+ exports.selectVariants = selectVariants;
366
622
  exports.separatorVariants = separatorVariants;
367
623
  exports.spinnerVariants = spinnerVariants;
368
624
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/tokens/index.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Separator/Separator.tsx","../src/components/Spinner/Spinner.tsx"],"names":["twMerge","clsx","cva","React","jsxs","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}","export const colors = {\n primary: {\n 50: '#FFF4EE',\n 100: '#FFE0CC',\n 200: '#FFBF99',\n 300: '#F08050',\n 400: '#D4602A',\n 500: '#C2440A',\n 600: '#A03808',\n 700: '#8F2F06',\n 800: '#5C1C03',\n 900: '#2E0D01',\n },\n neutral: {\n 50: '#f9f7f5',\n 100: '#f0ece7',\n 200: '#ddd6cc',\n 300: '#c5bab0',\n 400: '#a89b8e',\n 500: '#8a7d72',\n 600: '#6f6358',\n 700: '#564d45',\n 800: '#3c3630',\n 900: '#252019',\n },\n danger: {\n 500: '#ef4444',\n 600: '#dc2626',\n },\n success: {\n 500: '#22c55e',\n 600: '#16a34a',\n },\n warning: {\n 500: '#f59e0b',\n 600: '#d97706',\n },\n} as const\n\nexport const radius = {\n none: '0',\n sm: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl':'1rem',\n full: '9999px',\n} as const\n\nexport const fontSize = {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n} as const","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n primary: 'bg-(--color-primary-500) text-white hover:bg-(--color-primary-600) focus-visible:ring-(--color-primary-500)',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-900) hover:bg-(--color-neutral-200)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500) bg-transparent hover:bg-(--color-primary-50)',\n ghost: 'text-(--color-neutral-700) hover:bg-(--color-neutral-100)',\n destructive: 'bg-(--color-danger-500) text-white hover:bg-(--color-danger-600)',\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-(--radius-md) gap-1.5',\n md: 'h-10 px-4 text-sm rounded-(--radius-md) gap-2',\n lg: 'h-12 px-6 text-base rounded-(--radius-lg) gap-2',\n icon: 'h-10 w-10 rounded-(--radius-md)',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n isLoading?: boolean\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, isLoading, children, disabled, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n )}\n {children}\n </button>\n )\n)\nButton.displayName = 'Button'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const inputVariants = cva(\n 'w-full px-3 py-2 text-sm bg-white border rounded-(--radius-md) transition-colors placeholder:text-(--color-neutral-400) focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)',\n {\n variants: {\n state: {\n default: 'border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20',\n error: 'border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20',\n },\n inputSize: {\n sm: 'h-8 text-xs',\n md: 'h-10 text-sm',\n lg: 'h-12 text-base',\n },\n },\n defaultVariants: {\n state: 'default',\n inputSize: 'md',\n },\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n error?: string\n hint?: string\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, hint, id, inputSize, ...props }, ref) => {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, '-')\n return (\n <div className=\"flex flex-col gap-1.5 w-full\">\n {label && (\n <label htmlFor={inputId} className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(inputVariants({ state: error ? 'error' : 'default', inputSize }), className)}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n )\n }\n)\nInput.displayName = 'Input'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-full font-medium',\n {\n variants: {\n variant: {\n default: 'bg-(--color-primary-500) text-white',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-700)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500)',\n success: 'bg-(--color-success-500)/10 text-(--color-success-600)',\n warning: 'bg-(--color-warning-500)/10 text-(--color-warning-600)',\n destructive: 'bg-(--color-danger-500)/10 text-(--color-danger-600)',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = ({ className, variant, size, ...props }: BadgeProps) => (\n <span className={cn(badgeVariants({ variant, size }), className)} {...props} />\n)\nBadge.displayName = 'Badge'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const cardVariants = cva(\n 'rounded-(--radius-lg) bg-white text-(--color-neutral-900)',\n {\n variants: {\n variant: {\n elevated: 'shadow-md',\n outlined: 'border border-(--color-neutral-200)',\n ghost: 'bg-(--color-neutral-50)',\n },\n padding: {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n },\n },\n defaultVariants: {\n variant: 'elevated',\n padding: 'md',\n },\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, padding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, padding }), className)}\n {...props}\n />\n )\n)\nCard.displayName = 'Card'\n\n// ─── Sub-components ───────────────────────────────────────\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 mb-4', className)} {...props} />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn('text-lg font-semibold text-(--color-neutral-900)', className)} {...props} />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm text-(--color-neutral-500)', className)} {...props} />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-(--color-neutral-700)', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 mt-4', className)} {...props} />\n )\n)\nCardFooter.displayName = 'CardFooter'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const avatarVariants = cva(\n 'relative inline-flex items-center justify-center shrink-0 overflow-hidden rounded-full bg-(--color-neutral-200)',\n {\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n src?: string\n alt?: string\n fallback?: string\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, src, alt, fallback, ...props }, ref) => {\n const [imgError, setImgError] = React.useState(false)\n\n const initials = fallback\n ?.split(' ')\n .map((word) => word[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n\n return (\n <span\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n >\n {src && !imgError ? (\n <img\n src={src}\n alt={alt ?? ''}\n className=\"h-full w-full object-cover\"\n onError={() => setImgError(true)}\n />\n ) : initials ? (\n <span className=\"font-medium text-(--color-neutral-700) select-none\">\n {initials}\n </span>\n ) : (\n <svg\n className=\"h-[60%] w-[60%] text-(--color-neutral-400)\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z\" />\n </svg>\n )}\n </span>\n )\n }\n)\nAvatar.displayName = 'Avatar'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const separatorVariants = cva(\n 'shrink-0 bg-(--color-neutral-200)',\n {\n variants: {\n orientation: {\n horizontal: 'h-px w-full',\n vertical: 'h-full w-px',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n)\n\nexport interface SeparatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof separatorVariants> {\n label?: string\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ className, orientation, label, ...props }, ref) => {\n if (label && orientation !== 'vertical') {\n return (\n <div ref={ref} className={cn('flex items-center gap-3', className)} {...props}>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n <span className=\"text-xs text-(--color-neutral-400) font-medium select-none\">\n {label}\n </span>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation ?? 'horizontal'}\n className={cn(separatorVariants({ orientation }), className)}\n {...props}\n />\n )\n }\n)\nSeparator.displayName = 'Separator'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const spinnerVariants = cva(\n 'animate-spin rounded-full border-2 border-(--color-neutral-200) border-t-(--color-primary-500)',\n {\n variants: {\n size: {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof spinnerVariants> {\n label?: string\n}\n\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size, label, ...props }, ref) => (\n <span ref={ref} role=\"status\" className={cn('inline-flex flex-col items-center gap-2', className)} {...props}>\n <span className={cn(spinnerVariants({ size }))} />\n {label && (\n <span className=\"text-sm text-(--color-neutral-500)\">{label}</span>\n )}\n <span className=\"sr-only\">{label ?? 'Loading...'}</span>\n </span>\n )\n)\nSpinner.displayName = 'Spinner'"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/tokens/index.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Separator/Separator.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Select/Select.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/components/Switch/Switch.tsx"],"names":["twMerge","clsx","cva","React","jsxs","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}","export const colors = {\n primary: {\n 50: '#FFF4EE',\n 100: '#FFE0CC',\n 200: '#FFBF99',\n 300: '#F08050',\n 400: '#D4602A',\n 500: '#C2440A',\n 600: '#A03808',\n 700: '#8F2F06',\n 800: '#5C1C03',\n 900: '#2E0D01',\n },\n neutral: {\n 50: '#f9f7f5',\n 100: '#f0ece7',\n 200: '#ddd6cc',\n 300: '#c5bab0',\n 400: '#a89b8e',\n 500: '#8a7d72',\n 600: '#6f6358',\n 700: '#564d45',\n 800: '#3c3630',\n 900: '#252019',\n },\n danger: {\n 500: '#ef4444',\n 600: '#dc2626',\n },\n success: {\n 500: '#22c55e',\n 600: '#16a34a',\n },\n warning: {\n 500: '#f59e0b',\n 600: '#d97706',\n },\n} as const\n\nexport const radius = {\n none: '0',\n sm: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl':'1rem',\n full: '9999px',\n} as const\n\nexport const fontSize = {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n} as const","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n primary: 'bg-(--color-primary-500) text-white hover:bg-(--color-primary-600) focus-visible:ring-(--color-primary-500)',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-900) hover:bg-(--color-neutral-200)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500) bg-transparent hover:bg-(--color-primary-50)',\n ghost: 'text-(--color-neutral-700) hover:bg-(--color-neutral-100)',\n destructive: 'bg-(--color-danger-500) text-white hover:bg-(--color-danger-600)',\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-(--radius-md) gap-1.5',\n md: 'h-10 px-4 text-sm rounded-(--radius-md) gap-2',\n lg: 'h-12 px-6 text-base rounded-(--radius-lg) gap-2',\n icon: 'h-10 w-10 rounded-(--radius-md)',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n isLoading?: boolean\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, isLoading, children, disabled, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n )}\n {children}\n </button>\n )\n)\nButton.displayName = 'Button'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const inputVariants = cva(\n 'w-full px-3 py-2 text-sm bg-white border rounded-(--radius-md) transition-colors placeholder:text-(--color-neutral-400) focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)',\n {\n variants: {\n state: {\n default: 'border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20',\n error: 'border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20',\n },\n inputSize: {\n sm: 'h-8 text-xs',\n md: 'h-10 text-sm',\n lg: 'h-12 text-base',\n },\n },\n defaultVariants: {\n state: 'default',\n inputSize: 'md',\n },\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n error?: string\n hint?: string\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, hint, id, inputSize, ...props }, ref) => {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, '-')\n return (\n <div className=\"flex flex-col gap-1.5 w-full\">\n {label && (\n <label htmlFor={inputId} className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(inputVariants({ state: error ? 'error' : 'default', inputSize }), className)}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n )\n }\n)\nInput.displayName = 'Input'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-full font-medium',\n {\n variants: {\n variant: {\n default: 'bg-(--color-primary-500) text-white',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-700)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500)',\n success: 'bg-(--color-success-500)/10 text-(--color-success-600)',\n warning: 'bg-(--color-warning-500)/10 text-(--color-warning-600)',\n destructive: 'bg-(--color-danger-500)/10 text-(--color-danger-600)',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = ({ className, variant, size, ...props }: BadgeProps) => (\n <span className={cn(badgeVariants({ variant, size }), className)} {...props} />\n)\nBadge.displayName = 'Badge'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const cardVariants = cva(\n 'rounded-(--radius-lg) bg-white text-(--color-neutral-900)',\n {\n variants: {\n variant: {\n elevated: 'shadow-md',\n outlined: 'border border-(--color-neutral-200)',\n ghost: 'bg-(--color-neutral-50)',\n },\n padding: {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n },\n },\n defaultVariants: {\n variant: 'elevated',\n padding: 'md',\n },\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, padding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, padding }), className)}\n {...props}\n />\n )\n)\nCard.displayName = 'Card'\n\n// ─── Sub-components ───────────────────────────────────────\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 mb-4', className)} {...props} />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn('text-lg font-semibold text-(--color-neutral-900)', className)} {...props} />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm text-(--color-neutral-500)', className)} {...props} />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-(--color-neutral-700)', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 mt-4', className)} {...props} />\n )\n)\nCardFooter.displayName = 'CardFooter'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const avatarVariants = cva(\n 'relative inline-flex items-center justify-center shrink-0 overflow-hidden rounded-full bg-(--color-neutral-200)',\n {\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n src?: string\n alt?: string\n fallback?: string\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, src, alt, fallback, ...props }, ref) => {\n const [imgError, setImgError] = React.useState(false)\n\n const initials = fallback\n ?.split(' ')\n .map((word) => word[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n\n return (\n <span\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n >\n {src && !imgError ? (\n <img\n src={src}\n alt={alt ?? ''}\n className=\"h-full w-full object-cover\"\n onError={() => setImgError(true)}\n />\n ) : initials ? (\n <span className=\"font-medium text-(--color-neutral-700) select-none\">\n {initials}\n </span>\n ) : (\n <svg\n className=\"h-[60%] w-[60%] text-(--color-neutral-400)\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z\" />\n </svg>\n )}\n </span>\n )\n }\n)\nAvatar.displayName = 'Avatar'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const separatorVariants = cva(\n 'shrink-0 bg-(--color-neutral-200)',\n {\n variants: {\n orientation: {\n horizontal: 'h-px w-full',\n vertical: 'h-full w-px',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n)\n\nexport interface SeparatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof separatorVariants> {\n label?: string\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ className, orientation, label, ...props }, ref) => {\n if (label && orientation !== 'vertical') {\n return (\n <div ref={ref} className={cn('flex items-center gap-3', className)} {...props}>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n <span className=\"text-xs text-(--color-neutral-400) font-medium select-none\">\n {label}\n </span>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation ?? 'horizontal'}\n className={cn(separatorVariants({ orientation }), className)}\n {...props}\n />\n )\n }\n)\nSeparator.displayName = 'Separator'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const spinnerVariants = cva(\n 'animate-spin rounded-full border-2 border-(--color-neutral-200) border-t-(--color-primary-500)',\n {\n variants: {\n size: {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof spinnerVariants> {\n label?: string\n}\n\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size, label, ...props }, ref) => (\n <span ref={ref} role=\"status\" className={cn('inline-flex flex-col items-center gap-2', className)} {...props}>\n <span className={cn(spinnerVariants({ size }))} />\n {label && (\n <span className=\"text-sm text-(--color-neutral-500)\">{label}</span>\n )}\n <span className=\"sr-only\">{label ?? 'Loading...'}</span>\n </span>\n )\n)\nSpinner.displayName = 'Spinner'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const selectVariants = cva(\n 'w-full appearance-none bg-white border rounded-(--radius-md) px-3 py-2 text-sm transition-colors cursor-pointer focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)',\n {\n variants: {\n state: {\n default: 'border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20',\n error: 'border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20',\n },\n selectSize: {\n sm: 'h-8 text-xs pr-8',\n md: 'h-10 text-sm pr-8',\n lg: 'h-12 text-base pr-10',\n },\n },\n defaultVariants: {\n state: 'default',\n selectSize: 'md',\n },\n }\n)\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>,\n VariantProps<typeof selectVariants> {\n label?: string\n error?: string\n hint?: string\n placeholder?: string\n options?: SelectOption[]\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, label, error, hint, placeholder, options, selectSize, id, children, ...props }, ref) => {\n const selectId = id ?? label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className=\"flex flex-col gap-1.5 w-full\">\n {label && (\n <label htmlFor={selectId} className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n <select\n ref={ref}\n id={selectId}\n className={cn(selectVariants({ state: error ? 'error' : 'default', selectSize }), className)}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n <svg\n className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-(--color-neutral-400)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n {hint && !error && <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n )\n }\n)\nSelect.displayName = 'Select'","import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n description?: string;\n error?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, description, error, id, disabled, ...props }, ref) => {\n const checkboxId = id ?? label?.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-start gap-2.5\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n disabled={disabled}\n className={cn(\n \"h-4 w-4 shrink-0 mt-0.5 rounded-(--radius-sm) border cursor-pointer transition-colors appearance-none\",\n \"border-(--color-neutral-300) bg-white\",\n \"checked:bg-(--color-primary-500) checked:border-(--color-primary-500)\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-(--color-danger-500)\",\n className,\n )}\n style={{\n backgroundImage: `url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\",\n }}\n {...props}\n />\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <label\n htmlFor={checkboxId}\n className={cn(\n \"text-sm font-medium cursor-pointer text-(--color-neutral-900)\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-xs text-(--color-neutral-500)\">\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n {error && (\n <p className=\"text-xs text-(--color-danger-500) ml-6\">{error}</p>\n )}\n </div>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[];\n value?: string;\n onChange?: (value: string) => void;\n name: string;\n label?: string;\n error?: string;\n hint?: string;\n orientation?: \"vertical\" | \"horizontal\";\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n options,\n value,\n onChange,\n name,\n label,\n error,\n hint,\n orientation = \"vertical\",\n}) => {\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <span className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </span>\n )}\n <div\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n )}\n >\n {options.map((option) => {\n const optionId = `${name}-${option.value}`;\n return (\n <div key={option.value} className=\"flex items-start gap-2.5\">\n <input\n type=\"radio\"\n id={optionId}\n name={name}\n value={option.value}\n checked={value === option.value}\n disabled={option.disabled}\n onChange={() => onChange?.(option.value)}\n className={cn(\n \"h-4 w-4 shrink-0 mt-0.5 cursor-pointer appearance-none rounded-full border-2 transition-colors\",\n \"border-(--color-neutral-300) bg-white\",\n \"checked:border-(--color-primary-500) checked:bg-(--color-primary-500)\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-(--color-danger-500)\",\n )}\n style={{\n backgroundImage:\n value === option.value\n ? `url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\")`\n : \"none\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\",\n }}\n />\n <div className=\"flex flex-col gap-0.5\">\n <label\n htmlFor={optionId}\n className={cn(\n \"text-sm font-medium cursor-pointer text-(--color-neutral-900)\",\n option.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {option.label}\n </label>\n {option.description && (\n <p className=\"text-xs text-(--color-neutral-500)\">\n {option.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n {hint && !error && (\n <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>\n )}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n );\n};\nRadioGroup.displayName = \"RadioGroup\";\n","import React from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n label?: string\n description?: string\n error?: string\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, label, description, error, id, disabled, checked, defaultChecked, onChange, ...props }, ref) => {\n const switchId = id ?? `switch-${Math.random().toString(36).slice(2, 9)}`\n\n const [internalChecked, setInternalChecked] = React.useState(\n defaultChecked ?? false\n )\n\n const isControlled = checked !== undefined\n const isChecked = isControlled ? checked : internalChecked\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalChecked(e.target.checked)\n onChange?.(e)\n }\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-start gap-3\">\n <div className=\"relative inline-flex shrink-0 mt-0.5\">\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={switchId}\n disabled={disabled}\n checked={isChecked}\n onChange={handleChange}\n className=\"sr-only peer\"\n {...props}\n />\n <label\n htmlFor={switchId}\n className={cn(\n 'relative flex h-5 w-9 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors',\n 'bg-(--color-neutral-200) peer-checked:bg-(--color-primary-500)',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-(--color-primary-500)/20',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n error && 'ring-2 ring-(--color-danger-500)/20',\n className\n )}\n >\n <span\n className=\"pointer-events-none block h-3.5 w-3.5 rounded-full bg-white shadow transition-transform\"\n style={{\n transform: isChecked ? 'translateX(18px)' : 'translateX(2px)',\n }}\n />\n </label>\n </div>\n\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <span\n className={cn(\n 'text-sm font-medium text-(--color-neutral-900)',\n disabled && 'opacity-50',\n )}\n >\n {label}\n </span>\n )}\n {description && (\n <p className=\"text-xs text-(--color-neutral-500)\">{description}</p>\n )}\n </div>\n )}\n </div>\n {error && (\n <p className=\"text-xs text-(--color-danger-500) ml-12\">{error}</p>\n )}\n </div>\n )\n }\n)\nSwitch.displayName = 'Switch'"]}
package/dist/index.mjs CHANGED
@@ -335,7 +335,258 @@ var Spinner = React3.forwardRef(
335
335
  ] })
336
336
  );
337
337
  Spinner.displayName = "Spinner";
338
+ var selectVariants = cva(
339
+ "w-full appearance-none bg-white border rounded-(--radius-md) px-3 py-2 text-sm transition-colors cursor-pointer focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)",
340
+ {
341
+ variants: {
342
+ state: {
343
+ default: "border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20",
344
+ error: "border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20"
345
+ },
346
+ selectSize: {
347
+ sm: "h-8 text-xs pr-8",
348
+ md: "h-10 text-sm pr-8",
349
+ lg: "h-12 text-base pr-10"
350
+ }
351
+ },
352
+ defaultVariants: {
353
+ state: "default",
354
+ selectSize: "md"
355
+ }
356
+ }
357
+ );
358
+ var Select = React3.forwardRef(
359
+ ({ className, label, error, hint, placeholder, options, selectSize, id, children, ...props }, ref) => {
360
+ const selectId = id != null ? id : label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-");
361
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5 w-full", children: [
362
+ label && /* @__PURE__ */ jsx("label", { htmlFor: selectId, className: "text-sm font-medium text-(--color-neutral-700)", children: label }),
363
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
364
+ /* @__PURE__ */ jsxs(
365
+ "select",
366
+ {
367
+ ref,
368
+ id: selectId,
369
+ className: cn(selectVariants({ state: error ? "error" : "default", selectSize }), className),
370
+ ...props,
371
+ children: [
372
+ placeholder && /* @__PURE__ */ jsx("option", { value: "", disabled: true, children: placeholder }),
373
+ options ? options.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value)) : children
374
+ ]
375
+ }
376
+ ),
377
+ /* @__PURE__ */ jsx(
378
+ "svg",
379
+ {
380
+ className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-(--color-neutral-400)",
381
+ xmlns: "http://www.w3.org/2000/svg",
382
+ viewBox: "0 0 24 24",
383
+ fill: "none",
384
+ stroke: "currentColor",
385
+ strokeWidth: "2",
386
+ strokeLinecap: "round",
387
+ strokeLinejoin: "round",
388
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
389
+ }
390
+ )
391
+ ] }),
392
+ hint && !error && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-neutral-500)", children: hint }),
393
+ error && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-danger-500)", children: error })
394
+ ] });
395
+ }
396
+ );
397
+ Select.displayName = "Select";
398
+ var Checkbox = React3.forwardRef(
399
+ ({ className, label, description, error, id, disabled, ...props }, ref) => {
400
+ const checkboxId = id != null ? id : label == null ? void 0 : label.toLowerCase().replace(/\s+/g, "-");
401
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
402
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5", children: [
403
+ /* @__PURE__ */ jsx(
404
+ "input",
405
+ {
406
+ ref,
407
+ type: "checkbox",
408
+ id: checkboxId,
409
+ disabled,
410
+ className: cn(
411
+ "h-4 w-4 shrink-0 mt-0.5 rounded-(--radius-sm) border cursor-pointer transition-colors appearance-none",
412
+ "border-(--color-neutral-300) bg-white",
413
+ "checked:bg-(--color-primary-500) checked:border-(--color-primary-500)",
414
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20",
415
+ "disabled:cursor-not-allowed disabled:opacity-50",
416
+ error && "border-(--color-danger-500)",
417
+ className
418
+ ),
419
+ style: {
420
+ backgroundImage: `url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")`,
421
+ backgroundRepeat: "no-repeat",
422
+ backgroundPosition: "center"
423
+ },
424
+ ...props
425
+ }
426
+ ),
427
+ (label || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
428
+ label && /* @__PURE__ */ jsx(
429
+ "label",
430
+ {
431
+ htmlFor: checkboxId,
432
+ className: cn(
433
+ "text-sm font-medium cursor-pointer text-(--color-neutral-900)",
434
+ disabled && "cursor-not-allowed opacity-50"
435
+ ),
436
+ children: label
437
+ }
438
+ ),
439
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-neutral-500)", children: description })
440
+ ] })
441
+ ] }),
442
+ error && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-danger-500) ml-6", children: error })
443
+ ] });
444
+ }
445
+ );
446
+ Checkbox.displayName = "Checkbox";
447
+ var RadioGroup = ({
448
+ options,
449
+ value,
450
+ onChange,
451
+ name,
452
+ label,
453
+ error,
454
+ hint,
455
+ orientation = "vertical"
456
+ }) => {
457
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
458
+ label && /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-(--color-neutral-700)", children: label }),
459
+ /* @__PURE__ */ jsx(
460
+ "div",
461
+ {
462
+ className: cn(
463
+ "flex gap-3",
464
+ orientation === "vertical" ? "flex-col" : "flex-row flex-wrap"
465
+ ),
466
+ children: options.map((option) => {
467
+ const optionId = `${name}-${option.value}`;
468
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5", children: [
469
+ /* @__PURE__ */ jsx(
470
+ "input",
471
+ {
472
+ type: "radio",
473
+ id: optionId,
474
+ name,
475
+ value: option.value,
476
+ checked: value === option.value,
477
+ disabled: option.disabled,
478
+ onChange: () => onChange == null ? void 0 : onChange(option.value),
479
+ className: cn(
480
+ "h-4 w-4 shrink-0 mt-0.5 cursor-pointer appearance-none rounded-full border-2 transition-colors",
481
+ "border-(--color-neutral-300) bg-white",
482
+ "checked:border-(--color-primary-500) checked:bg-(--color-primary-500)",
483
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20",
484
+ "disabled:cursor-not-allowed disabled:opacity-50",
485
+ error && "border-(--color-danger-500)"
486
+ ),
487
+ style: {
488
+ backgroundImage: value === option.value ? `url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")` : "none",
489
+ backgroundRepeat: "no-repeat",
490
+ backgroundPosition: "center"
491
+ }
492
+ }
493
+ ),
494
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
495
+ /* @__PURE__ */ jsx(
496
+ "label",
497
+ {
498
+ htmlFor: optionId,
499
+ className: cn(
500
+ "text-sm font-medium cursor-pointer text-(--color-neutral-900)",
501
+ option.disabled && "cursor-not-allowed opacity-50"
502
+ ),
503
+ children: option.label
504
+ }
505
+ ),
506
+ option.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-neutral-500)", children: option.description })
507
+ ] })
508
+ ] }, option.value);
509
+ })
510
+ }
511
+ ),
512
+ hint && !error && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-neutral-500)", children: hint }),
513
+ error && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-danger-500)", children: error })
514
+ ] });
515
+ };
516
+ RadioGroup.displayName = "RadioGroup";
517
+ var Switch = React3.forwardRef(
518
+ ({ className, label, description, error, id, disabled, checked, defaultChecked, onChange, ...props }, ref) => {
519
+ const switchId = id != null ? id : `switch-${Math.random().toString(36).slice(2, 9)}`;
520
+ const [internalChecked, setInternalChecked] = React3.useState(
521
+ defaultChecked != null ? defaultChecked : false
522
+ );
523
+ const isControlled = checked !== void 0;
524
+ const isChecked = isControlled ? checked : internalChecked;
525
+ const handleChange = (e) => {
526
+ if (!isControlled) setInternalChecked(e.target.checked);
527
+ onChange == null ? void 0 : onChange(e);
528
+ };
529
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
530
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
531
+ /* @__PURE__ */ jsxs("div", { className: "relative inline-flex shrink-0 mt-0.5", children: [
532
+ /* @__PURE__ */ jsx(
533
+ "input",
534
+ {
535
+ ref,
536
+ type: "checkbox",
537
+ role: "switch",
538
+ id: switchId,
539
+ disabled,
540
+ checked: isChecked,
541
+ onChange: handleChange,
542
+ className: "sr-only peer",
543
+ ...props
544
+ }
545
+ ),
546
+ /* @__PURE__ */ jsx(
547
+ "label",
548
+ {
549
+ htmlFor: switchId,
550
+ className: cn(
551
+ "relative flex h-5 w-9 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors",
552
+ "bg-(--color-neutral-200) peer-checked:bg-(--color-primary-500)",
553
+ "peer-focus-visible:ring-2 peer-focus-visible:ring-(--color-primary-500)/20",
554
+ "peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
555
+ error && "ring-2 ring-(--color-danger-500)/20",
556
+ className
557
+ ),
558
+ children: /* @__PURE__ */ jsx(
559
+ "span",
560
+ {
561
+ className: "pointer-events-none block h-3.5 w-3.5 rounded-full bg-white shadow transition-transform",
562
+ style: {
563
+ transform: isChecked ? "translateX(18px)" : "translateX(2px)"
564
+ }
565
+ }
566
+ )
567
+ }
568
+ )
569
+ ] }),
570
+ (label || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
571
+ label && /* @__PURE__ */ jsx(
572
+ "span",
573
+ {
574
+ className: cn(
575
+ "text-sm font-medium text-(--color-neutral-900)",
576
+ disabled && "opacity-50"
577
+ ),
578
+ children: label
579
+ }
580
+ ),
581
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-neutral-500)", children: description })
582
+ ] })
583
+ ] }),
584
+ error && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--color-danger-500) ml-12", children: error })
585
+ ] });
586
+ }
587
+ );
588
+ Switch.displayName = "Switch";
338
589
 
339
- export { Avatar, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Input, Separator, Spinner, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, fontSize, inputVariants, radius, separatorVariants, spinnerVariants };
590
+ export { Avatar, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Input, RadioGroup, Select, Separator, Spinner, Switch, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, fontSize, inputVariants, radius, selectVariants, separatorVariants, spinnerVariants };
340
591
  //# sourceMappingURL=index.mjs.map
341
592
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/tokens/index.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Separator/Separator.tsx","../src/components/Spinner/Spinner.tsx"],"names":["React","cva","jsxs","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}","export const colors = {\n primary: {\n 50: '#FFF4EE',\n 100: '#FFE0CC',\n 200: '#FFBF99',\n 300: '#F08050',\n 400: '#D4602A',\n 500: '#C2440A',\n 600: '#A03808',\n 700: '#8F2F06',\n 800: '#5C1C03',\n 900: '#2E0D01',\n },\n neutral: {\n 50: '#f9f7f5',\n 100: '#f0ece7',\n 200: '#ddd6cc',\n 300: '#c5bab0',\n 400: '#a89b8e',\n 500: '#8a7d72',\n 600: '#6f6358',\n 700: '#564d45',\n 800: '#3c3630',\n 900: '#252019',\n },\n danger: {\n 500: '#ef4444',\n 600: '#dc2626',\n },\n success: {\n 500: '#22c55e',\n 600: '#16a34a',\n },\n warning: {\n 500: '#f59e0b',\n 600: '#d97706',\n },\n} as const\n\nexport const radius = {\n none: '0',\n sm: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl':'1rem',\n full: '9999px',\n} as const\n\nexport const fontSize = {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n} as const","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n primary: 'bg-(--color-primary-500) text-white hover:bg-(--color-primary-600) focus-visible:ring-(--color-primary-500)',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-900) hover:bg-(--color-neutral-200)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500) bg-transparent hover:bg-(--color-primary-50)',\n ghost: 'text-(--color-neutral-700) hover:bg-(--color-neutral-100)',\n destructive: 'bg-(--color-danger-500) text-white hover:bg-(--color-danger-600)',\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-(--radius-md) gap-1.5',\n md: 'h-10 px-4 text-sm rounded-(--radius-md) gap-2',\n lg: 'h-12 px-6 text-base rounded-(--radius-lg) gap-2',\n icon: 'h-10 w-10 rounded-(--radius-md)',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n isLoading?: boolean\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, isLoading, children, disabled, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n )}\n {children}\n </button>\n )\n)\nButton.displayName = 'Button'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const inputVariants = cva(\n 'w-full px-3 py-2 text-sm bg-white border rounded-(--radius-md) transition-colors placeholder:text-(--color-neutral-400) focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)',\n {\n variants: {\n state: {\n default: 'border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20',\n error: 'border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20',\n },\n inputSize: {\n sm: 'h-8 text-xs',\n md: 'h-10 text-sm',\n lg: 'h-12 text-base',\n },\n },\n defaultVariants: {\n state: 'default',\n inputSize: 'md',\n },\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n error?: string\n hint?: string\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, hint, id, inputSize, ...props }, ref) => {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, '-')\n return (\n <div className=\"flex flex-col gap-1.5 w-full\">\n {label && (\n <label htmlFor={inputId} className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(inputVariants({ state: error ? 'error' : 'default', inputSize }), className)}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n )\n }\n)\nInput.displayName = 'Input'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-full font-medium',\n {\n variants: {\n variant: {\n default: 'bg-(--color-primary-500) text-white',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-700)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500)',\n success: 'bg-(--color-success-500)/10 text-(--color-success-600)',\n warning: 'bg-(--color-warning-500)/10 text-(--color-warning-600)',\n destructive: 'bg-(--color-danger-500)/10 text-(--color-danger-600)',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = ({ className, variant, size, ...props }: BadgeProps) => (\n <span className={cn(badgeVariants({ variant, size }), className)} {...props} />\n)\nBadge.displayName = 'Badge'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const cardVariants = cva(\n 'rounded-(--radius-lg) bg-white text-(--color-neutral-900)',\n {\n variants: {\n variant: {\n elevated: 'shadow-md',\n outlined: 'border border-(--color-neutral-200)',\n ghost: 'bg-(--color-neutral-50)',\n },\n padding: {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n },\n },\n defaultVariants: {\n variant: 'elevated',\n padding: 'md',\n },\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, padding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, padding }), className)}\n {...props}\n />\n )\n)\nCard.displayName = 'Card'\n\n// ─── Sub-components ───────────────────────────────────────\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 mb-4', className)} {...props} />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn('text-lg font-semibold text-(--color-neutral-900)', className)} {...props} />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm text-(--color-neutral-500)', className)} {...props} />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-(--color-neutral-700)', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 mt-4', className)} {...props} />\n )\n)\nCardFooter.displayName = 'CardFooter'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const avatarVariants = cva(\n 'relative inline-flex items-center justify-center shrink-0 overflow-hidden rounded-full bg-(--color-neutral-200)',\n {\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n src?: string\n alt?: string\n fallback?: string\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, src, alt, fallback, ...props }, ref) => {\n const [imgError, setImgError] = React.useState(false)\n\n const initials = fallback\n ?.split(' ')\n .map((word) => word[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n\n return (\n <span\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n >\n {src && !imgError ? (\n <img\n src={src}\n alt={alt ?? ''}\n className=\"h-full w-full object-cover\"\n onError={() => setImgError(true)}\n />\n ) : initials ? (\n <span className=\"font-medium text-(--color-neutral-700) select-none\">\n {initials}\n </span>\n ) : (\n <svg\n className=\"h-[60%] w-[60%] text-(--color-neutral-400)\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z\" />\n </svg>\n )}\n </span>\n )\n }\n)\nAvatar.displayName = 'Avatar'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const separatorVariants = cva(\n 'shrink-0 bg-(--color-neutral-200)',\n {\n variants: {\n orientation: {\n horizontal: 'h-px w-full',\n vertical: 'h-full w-px',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n)\n\nexport interface SeparatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof separatorVariants> {\n label?: string\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ className, orientation, label, ...props }, ref) => {\n if (label && orientation !== 'vertical') {\n return (\n <div ref={ref} className={cn('flex items-center gap-3', className)} {...props}>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n <span className=\"text-xs text-(--color-neutral-400) font-medium select-none\">\n {label}\n </span>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation ?? 'horizontal'}\n className={cn(separatorVariants({ orientation }), className)}\n {...props}\n />\n )\n }\n)\nSeparator.displayName = 'Separator'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const spinnerVariants = cva(\n 'animate-spin rounded-full border-2 border-(--color-neutral-200) border-t-(--color-primary-500)',\n {\n variants: {\n size: {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof spinnerVariants> {\n label?: string\n}\n\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size, label, ...props }, ref) => (\n <span ref={ref} role=\"status\" className={cn('inline-flex flex-col items-center gap-2', className)} {...props}>\n <span className={cn(spinnerVariants({ size }))} />\n {label && (\n <span className=\"text-sm text-(--color-neutral-500)\">{label}</span>\n )}\n <span className=\"sr-only\">{label ?? 'Loading...'}</span>\n </span>\n )\n)\nSpinner.displayName = 'Spinner'"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/tokens/index.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Separator/Separator.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Select/Select.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/components/Switch/Switch.tsx"],"names":["React","cva","jsxs","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}","export const colors = {\n primary: {\n 50: '#FFF4EE',\n 100: '#FFE0CC',\n 200: '#FFBF99',\n 300: '#F08050',\n 400: '#D4602A',\n 500: '#C2440A',\n 600: '#A03808',\n 700: '#8F2F06',\n 800: '#5C1C03',\n 900: '#2E0D01',\n },\n neutral: {\n 50: '#f9f7f5',\n 100: '#f0ece7',\n 200: '#ddd6cc',\n 300: '#c5bab0',\n 400: '#a89b8e',\n 500: '#8a7d72',\n 600: '#6f6358',\n 700: '#564d45',\n 800: '#3c3630',\n 900: '#252019',\n },\n danger: {\n 500: '#ef4444',\n 600: '#dc2626',\n },\n success: {\n 500: '#22c55e',\n 600: '#16a34a',\n },\n warning: {\n 500: '#f59e0b',\n 600: '#d97706',\n },\n} as const\n\nexport const radius = {\n none: '0',\n sm: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl':'1rem',\n full: '9999px',\n} as const\n\nexport const fontSize = {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n} as const","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n primary: 'bg-(--color-primary-500) text-white hover:bg-(--color-primary-600) focus-visible:ring-(--color-primary-500)',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-900) hover:bg-(--color-neutral-200)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500) bg-transparent hover:bg-(--color-primary-50)',\n ghost: 'text-(--color-neutral-700) hover:bg-(--color-neutral-100)',\n destructive: 'bg-(--color-danger-500) text-white hover:bg-(--color-danger-600)',\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-(--radius-md) gap-1.5',\n md: 'h-10 px-4 text-sm rounded-(--radius-md) gap-2',\n lg: 'h-12 px-6 text-base rounded-(--radius-lg) gap-2',\n icon: 'h-10 w-10 rounded-(--radius-md)',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n isLoading?: boolean\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, isLoading, children, disabled, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n )}\n {children}\n </button>\n )\n)\nButton.displayName = 'Button'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const inputVariants = cva(\n 'w-full px-3 py-2 text-sm bg-white border rounded-(--radius-md) transition-colors placeholder:text-(--color-neutral-400) focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)',\n {\n variants: {\n state: {\n default: 'border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20',\n error: 'border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20',\n },\n inputSize: {\n sm: 'h-8 text-xs',\n md: 'h-10 text-sm',\n lg: 'h-12 text-base',\n },\n },\n defaultVariants: {\n state: 'default',\n inputSize: 'md',\n },\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n error?: string\n hint?: string\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, hint, id, inputSize, ...props }, ref) => {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, '-')\n return (\n <div className=\"flex flex-col gap-1.5 w-full\">\n {label && (\n <label htmlFor={inputId} className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(inputVariants({ state: error ? 'error' : 'default', inputSize }), className)}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n )\n }\n)\nInput.displayName = 'Input'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-full font-medium',\n {\n variants: {\n variant: {\n default: 'bg-(--color-primary-500) text-white',\n secondary: 'bg-(--color-neutral-100) text-(--color-neutral-700)',\n outline: 'border border-(--color-primary-500) text-(--color-primary-500)',\n success: 'bg-(--color-success-500)/10 text-(--color-success-600)',\n warning: 'bg-(--color-warning-500)/10 text-(--color-warning-600)',\n destructive: 'bg-(--color-danger-500)/10 text-(--color-danger-600)',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = ({ className, variant, size, ...props }: BadgeProps) => (\n <span className={cn(badgeVariants({ variant, size }), className)} {...props} />\n)\nBadge.displayName = 'Badge'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const cardVariants = cva(\n 'rounded-(--radius-lg) bg-white text-(--color-neutral-900)',\n {\n variants: {\n variant: {\n elevated: 'shadow-md',\n outlined: 'border border-(--color-neutral-200)',\n ghost: 'bg-(--color-neutral-50)',\n },\n padding: {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n },\n },\n defaultVariants: {\n variant: 'elevated',\n padding: 'md',\n },\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, padding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, padding }), className)}\n {...props}\n />\n )\n)\nCard.displayName = 'Card'\n\n// ─── Sub-components ───────────────────────────────────────\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 mb-4', className)} {...props} />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn('text-lg font-semibold text-(--color-neutral-900)', className)} {...props} />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm text-(--color-neutral-500)', className)} {...props} />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-(--color-neutral-700)', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 mt-4', className)} {...props} />\n )\n)\nCardFooter.displayName = 'CardFooter'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const avatarVariants = cva(\n 'relative inline-flex items-center justify-center shrink-0 overflow-hidden rounded-full bg-(--color-neutral-200)',\n {\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n src?: string\n alt?: string\n fallback?: string\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, src, alt, fallback, ...props }, ref) => {\n const [imgError, setImgError] = React.useState(false)\n\n const initials = fallback\n ?.split(' ')\n .map((word) => word[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n\n return (\n <span\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n >\n {src && !imgError ? (\n <img\n src={src}\n alt={alt ?? ''}\n className=\"h-full w-full object-cover\"\n onError={() => setImgError(true)}\n />\n ) : initials ? (\n <span className=\"font-medium text-(--color-neutral-700) select-none\">\n {initials}\n </span>\n ) : (\n <svg\n className=\"h-[60%] w-[60%] text-(--color-neutral-400)\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z\" />\n </svg>\n )}\n </span>\n )\n }\n)\nAvatar.displayName = 'Avatar'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const separatorVariants = cva(\n 'shrink-0 bg-(--color-neutral-200)',\n {\n variants: {\n orientation: {\n horizontal: 'h-px w-full',\n vertical: 'h-full w-px',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n)\n\nexport interface SeparatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof separatorVariants> {\n label?: string\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ className, orientation, label, ...props }, ref) => {\n if (label && orientation !== 'vertical') {\n return (\n <div ref={ref} className={cn('flex items-center gap-3', className)} {...props}>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n <span className=\"text-xs text-(--color-neutral-400) font-medium select-none\">\n {label}\n </span>\n <div className=\"h-px flex-1 bg-(--color-neutral-200)\" />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation ?? 'horizontal'}\n className={cn(separatorVariants({ orientation }), className)}\n {...props}\n />\n )\n }\n)\nSeparator.displayName = 'Separator'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const spinnerVariants = cva(\n 'animate-spin rounded-full border-2 border-(--color-neutral-200) border-t-(--color-primary-500)',\n {\n variants: {\n size: {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n)\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof spinnerVariants> {\n label?: string\n}\n\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size, label, ...props }, ref) => (\n <span ref={ref} role=\"status\" className={cn('inline-flex flex-col items-center gap-2', className)} {...props}>\n <span className={cn(spinnerVariants({ size }))} />\n {label && (\n <span className=\"text-sm text-(--color-neutral-500)\">{label}</span>\n )}\n <span className=\"sr-only\">{label ?? 'Loading...'}</span>\n </span>\n )\n)\nSpinner.displayName = 'Spinner'","import React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nexport const selectVariants = cva(\n 'w-full appearance-none bg-white border rounded-(--radius-md) px-3 py-2 text-sm transition-colors cursor-pointer focus:outline-none focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-(--color-neutral-50)',\n {\n variants: {\n state: {\n default: 'border-(--color-neutral-300) text-(--color-neutral-900) focus:border-(--color-primary-500) focus:ring-(--color-primary-500)/20',\n error: 'border-(--color-danger-500) text-(--color-neutral-900) focus:border-(--color-danger-500) focus:ring-(--color-danger-500)/20',\n },\n selectSize: {\n sm: 'h-8 text-xs pr-8',\n md: 'h-10 text-sm pr-8',\n lg: 'h-12 text-base pr-10',\n },\n },\n defaultVariants: {\n state: 'default',\n selectSize: 'md',\n },\n }\n)\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>,\n VariantProps<typeof selectVariants> {\n label?: string\n error?: string\n hint?: string\n placeholder?: string\n options?: SelectOption[]\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, label, error, hint, placeholder, options, selectSize, id, children, ...props }, ref) => {\n const selectId = id ?? label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className=\"flex flex-col gap-1.5 w-full\">\n {label && (\n <label htmlFor={selectId} className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n <select\n ref={ref}\n id={selectId}\n className={cn(selectVariants({ state: error ? 'error' : 'default', selectSize }), className)}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n <svg\n className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-(--color-neutral-400)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n {hint && !error && <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n )\n }\n)\nSelect.displayName = 'Select'","import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n description?: string;\n error?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, description, error, id, disabled, ...props }, ref) => {\n const checkboxId = id ?? label?.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-start gap-2.5\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n disabled={disabled}\n className={cn(\n \"h-4 w-4 shrink-0 mt-0.5 rounded-(--radius-sm) border cursor-pointer transition-colors appearance-none\",\n \"border-(--color-neutral-300) bg-white\",\n \"checked:bg-(--color-primary-500) checked:border-(--color-primary-500)\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-(--color-danger-500)\",\n className,\n )}\n style={{\n backgroundImage: `url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\",\n }}\n {...props}\n />\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <label\n htmlFor={checkboxId}\n className={cn(\n \"text-sm font-medium cursor-pointer text-(--color-neutral-900)\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-xs text-(--color-neutral-500)\">\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n {error && (\n <p className=\"text-xs text-(--color-danger-500) ml-6\">{error}</p>\n )}\n </div>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[];\n value?: string;\n onChange?: (value: string) => void;\n name: string;\n label?: string;\n error?: string;\n hint?: string;\n orientation?: \"vertical\" | \"horizontal\";\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n options,\n value,\n onChange,\n name,\n label,\n error,\n hint,\n orientation = \"vertical\",\n}) => {\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <span className=\"text-sm font-medium text-(--color-neutral-700)\">\n {label}\n </span>\n )}\n <div\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n )}\n >\n {options.map((option) => {\n const optionId = `${name}-${option.value}`;\n return (\n <div key={option.value} className=\"flex items-start gap-2.5\">\n <input\n type=\"radio\"\n id={optionId}\n name={name}\n value={option.value}\n checked={value === option.value}\n disabled={option.disabled}\n onChange={() => onChange?.(option.value)}\n className={cn(\n \"h-4 w-4 shrink-0 mt-0.5 cursor-pointer appearance-none rounded-full border-2 transition-colors\",\n \"border-(--color-neutral-300) bg-white\",\n \"checked:border-(--color-primary-500) checked:bg-(--color-primary-500)\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-primary-500)/20\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-(--color-danger-500)\",\n )}\n style={{\n backgroundImage:\n value === option.value\n ? `url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\")`\n : \"none\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\",\n }}\n />\n <div className=\"flex flex-col gap-0.5\">\n <label\n htmlFor={optionId}\n className={cn(\n \"text-sm font-medium cursor-pointer text-(--color-neutral-900)\",\n option.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {option.label}\n </label>\n {option.description && (\n <p className=\"text-xs text-(--color-neutral-500)\">\n {option.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n {hint && !error && (\n <p className=\"text-xs text-(--color-neutral-500)\">{hint}</p>\n )}\n {error && <p className=\"text-xs text-(--color-danger-500)\">{error}</p>}\n </div>\n );\n};\nRadioGroup.displayName = \"RadioGroup\";\n","import React from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n label?: string\n description?: string\n error?: string\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, label, description, error, id, disabled, checked, defaultChecked, onChange, ...props }, ref) => {\n const switchId = id ?? `switch-${Math.random().toString(36).slice(2, 9)}`\n\n const [internalChecked, setInternalChecked] = React.useState(\n defaultChecked ?? false\n )\n\n const isControlled = checked !== undefined\n const isChecked = isControlled ? checked : internalChecked\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalChecked(e.target.checked)\n onChange?.(e)\n }\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-start gap-3\">\n <div className=\"relative inline-flex shrink-0 mt-0.5\">\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={switchId}\n disabled={disabled}\n checked={isChecked}\n onChange={handleChange}\n className=\"sr-only peer\"\n {...props}\n />\n <label\n htmlFor={switchId}\n className={cn(\n 'relative flex h-5 w-9 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors',\n 'bg-(--color-neutral-200) peer-checked:bg-(--color-primary-500)',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-(--color-primary-500)/20',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n error && 'ring-2 ring-(--color-danger-500)/20',\n className\n )}\n >\n <span\n className=\"pointer-events-none block h-3.5 w-3.5 rounded-full bg-white shadow transition-transform\"\n style={{\n transform: isChecked ? 'translateX(18px)' : 'translateX(2px)',\n }}\n />\n </label>\n </div>\n\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <span\n className={cn(\n 'text-sm font-medium text-(--color-neutral-900)',\n disabled && 'opacity-50',\n )}\n >\n {label}\n </span>\n )}\n {description && (\n <p className=\"text-xs text-(--color-neutral-500)\">{description}</p>\n )}\n </div>\n )}\n </div>\n {error && (\n <p className=\"text-xs text-(--color-danger-500) ml-12\">{error}</p>\n )}\n </div>\n )\n }\n)\nSwitch.displayName = 'Switch'"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ataraui/ataraui-react",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "AtaraUI — A calm, composable component library for React",
5
5
  "author": "AtaraUI",
6
6
  "license": "MIT",