@wow-two-beta/ui 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/button/Button.variants.d.ts +2 -2
- package/dist/actions/iconButton/IconButton.variants.d.ts +2 -2
- package/dist/actions/index.js +1 -1
- package/dist/actions/link/Link.variants.d.ts +2 -2
- package/dist/{chunk-YLN7VMYU.js → chunk-62NXDB5V.js} +33 -33
- package/dist/chunk-62NXDB5V.js.map +1 -0
- package/dist/{chunk-MP4OTUFA.js → chunk-DBQ4VF2J.js} +32 -32
- package/dist/chunk-DBQ4VF2J.js.map +1 -0
- package/dist/{chunk-L2RYQWZZ.js → chunk-HVJVLK6B.js} +16 -16
- package/dist/chunk-HVJVLK6B.js.map +1 -0
- package/dist/{chunk-NJZS7RIH.js → chunk-TDEEVNSD.js} +32 -32
- package/dist/chunk-TDEEVNSD.js.map +1 -0
- package/dist/display/avatar/Avatar.variants.d.ts +2 -2
- package/dist/display/heading/Heading.variants.d.ts +2 -2
- package/dist/display/index.js +1 -1
- package/dist/display/tag/Tag.variants.d.ts +2 -2
- package/dist/feedback/index.js +1 -1
- package/dist/feedback/progressBar/ProgressBar.variants.d.ts +2 -2
- package/dist/feedback/skeleton/Skeleton.variants.d.ts +2 -2
- package/dist/feedback/toastSimple/ToastSimple.variants.d.ts +2 -2
- package/dist/forms/_styles.d.ts +2 -2
- package/dist/forms/index.js +1 -1
- package/dist/index.css +112 -5
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-L2RYQWZZ.js.map +0 -1
- package/dist/chunk-MP4OTUFA.js.map +0 -1
- package/dist/chunk-NJZS7RIH.js.map +0 -1
- package/dist/chunk-YLN7VMYU.js.map +0 -1
|
@@ -17,14 +17,14 @@ var Label = forwardRef(
|
|
|
17
17
|
htmlFor: htmlFor ?? ctx?.id,
|
|
18
18
|
id: id ?? ctx?.labelId,
|
|
19
19
|
className: cn(
|
|
20
|
-
"text-sm font-medium text-
|
|
20
|
+
"text-sm font-medium text-foreground",
|
|
21
21
|
ctx?.isDisabled && "opacity-60",
|
|
22
22
|
className
|
|
23
23
|
),
|
|
24
24
|
...props,
|
|
25
25
|
children: [
|
|
26
26
|
children,
|
|
27
|
-
isRequired && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-
|
|
27
|
+
isRequired && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-destructive", "aria-hidden": "true", children: "*" })
|
|
28
28
|
]
|
|
29
29
|
}
|
|
30
30
|
);
|
|
@@ -39,7 +39,7 @@ var FormHelperText = forwardRef(
|
|
|
39
39
|
{
|
|
40
40
|
ref,
|
|
41
41
|
id: id ?? ctx?.helperId,
|
|
42
|
-
className: cn("text-sm text-
|
|
42
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
43
43
|
...props
|
|
44
44
|
}
|
|
45
45
|
);
|
|
@@ -56,7 +56,7 @@ var FormErrorMessage = forwardRef(
|
|
|
56
56
|
ref,
|
|
57
57
|
id: id ?? ctx?.errorId,
|
|
58
58
|
role: "alert",
|
|
59
|
-
className: cn("text-sm text-
|
|
59
|
+
className: cn("text-sm text-destructive", className),
|
|
60
60
|
...props
|
|
61
61
|
}
|
|
62
62
|
);
|
|
@@ -79,7 +79,7 @@ var Legend = forwardRef(
|
|
|
79
79
|
"legend",
|
|
80
80
|
{
|
|
81
81
|
ref,
|
|
82
|
-
className: cn("mb-2 text-sm font-medium text-
|
|
82
|
+
className: cn("mb-2 text-sm font-medium text-foreground", className),
|
|
83
83
|
...props
|
|
84
84
|
}
|
|
85
85
|
)
|
|
@@ -88,7 +88,7 @@ Legend.displayName = "Legend";
|
|
|
88
88
|
|
|
89
89
|
// src/forms/_styles.ts
|
|
90
90
|
var inputBaseVariants = tv({
|
|
91
|
-
base: "flex w-full rounded-md border bg-
|
|
91
|
+
base: "flex w-full rounded-md border bg-background text-foreground placeholder:text-subtle-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 read-only:bg-muted",
|
|
92
92
|
variants: {
|
|
93
93
|
size: {
|
|
94
94
|
sm: "h-8 px-2.5 text-sm",
|
|
@@ -96,8 +96,8 @@ var inputBaseVariants = tv({
|
|
|
96
96
|
lg: "h-12 px-4 text-base"
|
|
97
97
|
},
|
|
98
98
|
state: {
|
|
99
|
-
default: "border-
|
|
100
|
-
invalid: "border-
|
|
99
|
+
default: "border-input hover:border-border-strong",
|
|
100
|
+
invalid: "border-destructive focus-visible:ring-destructive"
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
103
|
defaultVariants: {
|
|
@@ -242,7 +242,7 @@ var NumberInput = forwardRef(
|
|
|
242
242
|
disabled: isDisabled,
|
|
243
243
|
onClick: () => adjust(-1),
|
|
244
244
|
"aria-label": "Decrement",
|
|
245
|
-
className: "grid h-7 w-6 place-items-center rounded text-
|
|
245
|
+
className: "grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50",
|
|
246
246
|
children: /* @__PURE__ */ jsx(Icon, { icon: Minus, size: 14 })
|
|
247
247
|
}
|
|
248
248
|
),
|
|
@@ -253,7 +253,7 @@ var NumberInput = forwardRef(
|
|
|
253
253
|
disabled: isDisabled,
|
|
254
254
|
onClick: () => adjust(1),
|
|
255
255
|
"aria-label": "Increment",
|
|
256
|
-
className: "grid h-7 w-6 place-items-center rounded text-
|
|
256
|
+
className: "grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50",
|
|
257
257
|
children: /* @__PURE__ */ jsx(Icon, { icon: Plus, size: 14 })
|
|
258
258
|
}
|
|
259
259
|
)
|
|
@@ -305,7 +305,7 @@ var PasswordInput = forwardRef(
|
|
|
305
305
|
onClick: () => setVisible((v) => !v),
|
|
306
306
|
"aria-label": visible ? "Hide password" : "Show password",
|
|
307
307
|
"aria-pressed": visible,
|
|
308
|
-
className: "absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-
|
|
308
|
+
className: "absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50",
|
|
309
309
|
children: /* @__PURE__ */ jsx(Icon, { icon: visible ? EyeOff : Eye, size: 16 })
|
|
310
310
|
}
|
|
311
311
|
)
|
|
@@ -355,7 +355,7 @@ var SearchInput = forwardRef(
|
|
|
355
355
|
{
|
|
356
356
|
icon: Search,
|
|
357
357
|
size: 16,
|
|
358
|
-
className: "absolute left-3 top-1/2 -translate-y-1/2 text-
|
|
358
|
+
className: "absolute left-3 top-1/2 -translate-y-1/2 text-subtle-foreground"
|
|
359
359
|
}
|
|
360
360
|
),
|
|
361
361
|
/* @__PURE__ */ jsx(
|
|
@@ -391,7 +391,7 @@ var SearchInput = forwardRef(
|
|
|
391
391
|
disabled: isDisabled,
|
|
392
392
|
onClick: handleClear,
|
|
393
393
|
"aria-label": "Clear search",
|
|
394
|
-
className: "absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-
|
|
394
|
+
className: "absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-subtle-foreground hover:bg-muted hover:text-muted-foreground",
|
|
395
395
|
children: /* @__PURE__ */ jsx(Icon, { icon: X, size: 14 })
|
|
396
396
|
}
|
|
397
397
|
)
|
|
@@ -455,11 +455,11 @@ var Checkbox = forwardRef(
|
|
|
455
455
|
{
|
|
456
456
|
"aria-hidden": "true",
|
|
457
457
|
className: cn(
|
|
458
|
-
"pointer-events-none grid h-full w-full place-items-center rounded-sm border border-
|
|
459
|
-
"peer-checked:border-
|
|
460
|
-
"peer-focus-visible:ring-2 peer-focus-visible:ring-
|
|
458
|
+
"pointer-events-none grid h-full w-full place-items-center rounded-sm border border-input bg-background text-primary-foreground transition-colors",
|
|
459
|
+
"peer-checked:border-primary peer-checked:bg-primary",
|
|
460
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1",
|
|
461
461
|
"peer-disabled:opacity-50",
|
|
462
|
-
indeterminate && "border-
|
|
462
|
+
indeterminate && "border-primary bg-primary"
|
|
463
463
|
),
|
|
464
464
|
children: indeterminate ? /* @__PURE__ */ jsx(Minus, { size: Math.round(SIZE_CLASS[size].length * 1.4), className: "h-3 w-3" }) : /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 opacity-0 peer-checked:opacity-100" })
|
|
465
465
|
}
|
|
@@ -495,12 +495,12 @@ var Radio = forwardRef(
|
|
|
495
495
|
{
|
|
496
496
|
"aria-hidden": "true",
|
|
497
497
|
className: cn(
|
|
498
|
-
"pointer-events-none grid h-full w-full place-items-center rounded-full border border-
|
|
499
|
-
"peer-checked:border-
|
|
500
|
-
"peer-focus-visible:ring-2 peer-focus-visible:ring-
|
|
498
|
+
"pointer-events-none grid h-full w-full place-items-center rounded-full border border-input bg-background transition-colors",
|
|
499
|
+
"peer-checked:border-primary",
|
|
500
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1",
|
|
501
501
|
"peer-disabled:opacity-50"
|
|
502
502
|
),
|
|
503
|
-
children: /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-
|
|
503
|
+
children: /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-primary opacity-0 peer-checked:opacity-100" })
|
|
504
504
|
}
|
|
505
505
|
)
|
|
506
506
|
] });
|
|
@@ -540,16 +540,16 @@ var Switch = forwardRef(
|
|
|
540
540
|
{
|
|
541
541
|
"aria-hidden": "true",
|
|
542
542
|
className: cn(
|
|
543
|
-
"pointer-events-none flex h-full w-full items-center rounded-full bg-
|
|
544
|
-
"peer-checked:bg-
|
|
545
|
-
"peer-focus-visible:ring-2 peer-focus-visible:ring-
|
|
543
|
+
"pointer-events-none flex h-full w-full items-center rounded-full bg-input px-0.5 transition-colors",
|
|
544
|
+
"peer-checked:bg-primary",
|
|
545
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1",
|
|
546
546
|
"peer-disabled:opacity-50"
|
|
547
547
|
),
|
|
548
548
|
children: /* @__PURE__ */ jsx(
|
|
549
549
|
"span",
|
|
550
550
|
{
|
|
551
551
|
className: cn(
|
|
552
|
-
"rounded-full bg-
|
|
552
|
+
"rounded-full bg-background shadow-sm transition-transform duration-150",
|
|
553
553
|
THUMB_CLASS[size]
|
|
554
554
|
)
|
|
555
555
|
}
|
|
@@ -582,14 +582,14 @@ var Slider = forwardRef(
|
|
|
582
582
|
className: cn(
|
|
583
583
|
"w-full appearance-none bg-transparent disabled:cursor-not-allowed disabled:opacity-50",
|
|
584
584
|
// WebKit
|
|
585
|
-
"[&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-
|
|
585
|
+
"[&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-muted",
|
|
586
586
|
`[&::-webkit-slider-runnable-track]:${TRACK_CLASS2[size]}`,
|
|
587
|
-
"[&::-webkit-slider-thumb]:mt-[-6px] [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-
|
|
587
|
+
"[&::-webkit-slider-thumb]:mt-[-6px] [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-background",
|
|
588
588
|
// Firefox
|
|
589
589
|
`[&::-moz-range-track]:${TRACK_CLASS2[size]}`,
|
|
590
|
-
"[&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-
|
|
591
|
-
"[&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-
|
|
592
|
-
"focus-visible:outline-none focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-
|
|
590
|
+
"[&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-muted",
|
|
591
|
+
"[&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary [&::-moz-range-thumb]:bg-background",
|
|
592
|
+
"focus-visible:outline-none focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-ring",
|
|
593
593
|
className
|
|
594
594
|
),
|
|
595
595
|
...props
|
|
@@ -600,5 +600,5 @@ var Slider = forwardRef(
|
|
|
600
600
|
Slider.displayName = "Slider";
|
|
601
601
|
|
|
602
602
|
export { Checkbox, EmailInput, Fieldset, FormErrorMessage, FormHelperText, Label, Legend, NumberInput, PasswordInput, Radio, SearchInput, Slider, Switch, TelInput, TextInput, Textarea, UrlInput };
|
|
603
|
-
//# sourceMappingURL=chunk-
|
|
604
|
-
//# sourceMappingURL=chunk-
|
|
603
|
+
//# sourceMappingURL=chunk-TDEEVNSD.js.map
|
|
604
|
+
//# sourceMappingURL=chunk-TDEEVNSD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/forms/label/Label.tsx","../src/forms/formHelperText/FormHelperText.tsx","../src/forms/formErrorMessage/FormErrorMessage.tsx","../src/forms/fieldset/Fieldset.tsx","../src/forms/legend/Legend.tsx","../src/forms/_styles.ts","../src/forms/textInput/TextInput.tsx","../src/forms/emailInput/EmailInput.tsx","../src/forms/telInput/TelInput.tsx","../src/forms/urlInput/UrlInput.tsx","../src/forms/numberInput/NumberInput.tsx","../src/forms/passwordInput/PasswordInput.tsx","../src/forms/searchInput/SearchInput.tsx","../src/forms/textarea/Textarea.tsx","../src/forms/checkbox/Checkbox.tsx","../src/forms/radio/Radio.tsx","../src/forms/switch/Switch.tsx","../src/forms/slider/Slider.tsx"],"names":["forwardRef","jsx","jsxs","useRef","useImperativeHandle","useState","Minus","SIZE_CLASS","TRACK_CLASS"],"mappings":"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","file":"chunk-TDEEVNSD.js","sourcesContent":["import { forwardRef, type LabelHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n /** Show a `*` indicator. Auto-derived from `FormControl.isRequired` when present. */\n required?: boolean;\n}\n\n/**\n * `<label>` wired to `FormControl` context — when wrapped in a `FormControl`\n * it auto-fills `htmlFor` and `id`. Standalone use: pass `htmlFor` directly.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, htmlFor, id, children, ...props }, ref) => {\n const ctx = useFormControl();\n const isRequired = required ?? ctx?.isRequired ?? false;\n return (\n <label\n ref={ref}\n htmlFor={htmlFor ?? ctx?.id}\n id={id ?? ctx?.labelId}\n className={cn(\n 'text-sm font-medium text-foreground',\n ctx?.isDisabled && 'opacity-60',\n className,\n )}\n {...props}\n >\n {children}\n {isRequired && <span className=\"ml-0.5 text-destructive\" aria-hidden=\"true\">*</span>}\n </label>\n );\n },\n);\nLabel.displayName = 'Label';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport type FormHelperTextProps = ComponentPropsWithoutRef<'p'>;\n\n/**\n * Helper / hint text below a form control. Reads `helperId` from\n * `FormControl` so the input can reference it via `aria-describedby`.\n */\nexport const FormHelperText = forwardRef<HTMLParagraphElement, FormHelperTextProps>(\n ({ className, id, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <p\n ref={ref}\n id={id ?? ctx?.helperId}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n },\n);\nFormHelperText.displayName = 'FormHelperText';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport type FormErrorMessageProps = ComponentPropsWithoutRef<'p'>;\n\n/**\n * Error copy under a form control. Renders only when the surrounding\n * `FormControl` is `isInvalid`. `id={errorId}` for `aria-describedby` wiring.\n */\nexport const FormErrorMessage = forwardRef<HTMLParagraphElement, FormErrorMessageProps>(\n ({ className, id, ...props }, ref) => {\n const ctx = useFormControl();\n if (ctx && !ctx.isInvalid) return null;\n return (\n <p\n ref={ref}\n id={id ?? ctx?.errorId}\n role=\"alert\"\n className={cn('text-sm text-destructive', className)}\n {...props}\n />\n );\n },\n);\nFormErrorMessage.displayName = 'FormErrorMessage';\n","import { forwardRef, type FieldsetHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\n\nexport type FieldsetProps = FieldsetHTMLAttributes<HTMLFieldSetElement>;\n\n/**\n * Semantic `<fieldset>` for grouping related controls. Pair with `Legend`\n * for the group label.\n */\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n ({ className, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn('m-0 min-w-0 border-0 p-0', className)}\n {...props}\n />\n ),\n);\nFieldset.displayName = 'Fieldset';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\n\nexport type LegendProps = HTMLAttributes<HTMLLegendElement>;\n\n/**\n * `<legend>` styled to match `Label`. Pair with `Fieldset`.\n */\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n ({ className, ...props }, ref) => (\n <legend\n ref={ref}\n className={cn('mb-2 text-sm font-medium text-foreground', className)}\n {...props}\n />\n ),\n);\nLegend.displayName = 'Legend';\n","// Shared visual primitives for form atoms. Co-located in `forms/` so imports\n// stay within-domain (ESLint boundaries allow same-domain imports).\n\nimport { tv, type VariantProps } from '../utils';\n\nexport const inputBaseVariants = tv({\n base: 'flex w-full rounded-md border bg-background text-foreground placeholder:text-subtle-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 read-only:bg-muted',\n variants: {\n size: {\n sm: 'h-8 px-2.5 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base',\n },\n state: {\n default: 'border-input hover:border-border-strong',\n invalid: 'border-destructive focus-visible:ring-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n});\n\nexport type InputBaseVariants = VariantProps<typeof inputBaseVariants>;\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface TextInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/**\n * Single-line text input. For email/tel/url/number/password/search variants\n * use the dedicated input component (each carries only the props/buttons it\n * actually needs).\n */\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"text\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nTextInput.displayName = 'TextInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface EmailInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"email\">` with sensible defaults (autocomplete, inputmode). */\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"email\"\n autoComplete=\"email\"\n inputMode=\"email\"\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nEmailInput.displayName = 'EmailInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface TelInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"tel\">` with `inputmode=\"tel\"` and `autocomplete=\"tel\"`. */\nexport const TelInput = forwardRef<HTMLInputElement, TelInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"tel\"\n autoComplete=\"tel\"\n inputMode=\"tel\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nTelInput.displayName = 'TelInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface UrlInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"url\">` with `inputmode=\"url\"` and `autocomplete=\"url\"`. */\nexport const UrlInput = forwardRef<HTMLInputElement, UrlInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"url\"\n autoComplete=\"url\"\n inputMode=\"url\"\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nUrlInput.displayName = 'UrlInput';\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type InputHTMLAttributes,\n} from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface NumberInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n step?: number;\n}\n\n/**\n * Numeric input with stepper buttons. Steppers are raw `<button>` elements\n * (not `IconButton`) to keep the strict atom rule.\n */\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n { className, size, state, id, disabled, required, readOnly, step = 1, ...props },\n forwardedRef,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n\n const adjust = (direction: 1 | -1) => {\n const el = inputRef.current;\n if (!el || typeof el.stepUp !== 'function') return;\n if (direction === 1) el.stepUp(step);\n else el.stepDown(step);\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n\n return (\n <div className={cn('relative', className)}>\n <input\n ref={inputRef}\n type=\"number\"\n inputMode=\"decimal\"\n step={step}\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), 'pr-12 [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none')}\n {...props}\n />\n <div className=\"absolute right-1 top-1/2 flex -translate-y-1/2 items-center\">\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => adjust(-1)}\n aria-label=\"Decrement\"\n className=\"grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={Minus} size={14} />\n </button>\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => adjust(1)}\n aria-label=\"Increment\"\n className=\"grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={Plus} size={14} />\n </button>\n </div>\n </div>\n );\n },\n);\nNumberInput.displayName = 'NumberInput';\n","import { forwardRef, useState, type InputHTMLAttributes } from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface PasswordInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n /** Whether to render the visibility-toggle button. Default true. */\n toggleable?: boolean;\n}\n\n/**\n * Password input with optional visibility toggle. Toggle is a raw `<button>`\n * to keep the strict atom rule.\n */\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (\n {\n className,\n size,\n state,\n id,\n disabled,\n required,\n readOnly,\n toggleable = true,\n autoComplete = 'current-password',\n ...props\n },\n ref,\n ) => {\n const [visible, setVisible] = useState(false);\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n\n return (\n <div className={cn('relative', className)}>\n <input\n ref={ref}\n type={visible ? 'text' : 'password'}\n autoComplete={autoComplete}\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), toggleable && 'pr-10')}\n {...props}\n />\n {toggleable && (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? 'Hide password' : 'Show password'}\n aria-pressed={visible}\n className=\"absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={visible ? EyeOff : Eye} size={16} />\n </button>\n )}\n </div>\n );\n },\n);\nPasswordInput.displayName = 'PasswordInput';\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n useState,\n type InputHTMLAttributes,\n} from 'react';\nimport { Search, X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface SearchInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n /** Show a clear (×) button when the input has a value. Default true. */\n clearable?: boolean;\n onClear?: () => void;\n}\n\n/**\n * Search input with leading search icon and optional clear button.\n * Buttons are raw `<button>` elements to keep the strict atom rule.\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n className,\n size,\n state,\n id,\n disabled,\n required,\n readOnly,\n clearable = true,\n onClear,\n onChange,\n defaultValue,\n value,\n ...props\n },\n forwardedRef,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultValue ?? '');\n const currentValue = isControlled ? value : uncontrolled;\n const showClear = clearable && String(currentValue ?? '').length > 0;\n\n const handleClear = () => {\n const el = inputRef.current;\n if (el) {\n const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')\n ?.set;\n setter?.call(el, '');\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.focus();\n }\n if (!isControlled) setUncontrolled('');\n onClear?.();\n };\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n icon={Search}\n size={16}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-subtle-foreground\"\n />\n <input\n ref={inputRef}\n type=\"search\"\n id={id ?? ctx?.id}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? (defaultValue as string | number | undefined) : undefined}\n onChange={(e) => {\n if (!isControlled) setUncontrolled(e.target.value);\n onChange?.(e);\n }}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(\n inputBaseVariants({ size, state: finalState }),\n 'pl-9',\n showClear && 'pr-9',\n '[&::-webkit-search-cancel-button]:appearance-none',\n )}\n {...props}\n />\n {showClear && (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-subtle-foreground hover:bg-muted hover:text-muted-foreground\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </div>\n );\n },\n);\nSearchInput.displayName = 'SearchInput';\n","import { forwardRef, type TextareaHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n InputBaseVariants {}\n\n/**\n * Multi-line text input. Inherits the input visual base. For autosize, pair\n * with a sibling-domain hook in v1 — kept simple at L3.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n { className, size, state, id, disabled, required, readOnly, rows = 3, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <textarea\n ref={ref}\n rows={rows}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(\n inputBaseVariants({ size, state: finalState }),\n 'h-auto resize-y py-2',\n className,\n )}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = 'Textarea';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n /** Tristate visual — input is `checked={false}` but rendered as a dash. */\n indeterminate?: boolean;\n}\n\nconst SIZE_CLASS: Record<NonNullable<CheckboxProps['size']>, string> = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n};\n\n/**\n * Native checkbox with custom visual. Renders the input visually hidden but\n * accessible — wrap in a `<label>` (or pair with `Label` via `FormControl`).\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n { className, size = 'md', indeterminate, id, disabled, required, checked, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.isDisabled;\n return (\n <span className={cn('relative inline-flex shrink-0', SIZE_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"checkbox\"\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n checked={checked}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none grid h-full w-full place-items-center rounded-sm border border-input bg-background text-primary-foreground transition-colors',\n 'peer-checked:border-primary peer-checked:bg-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n indeterminate && 'border-primary bg-primary',\n )}\n >\n {indeterminate ? (\n <Minus size={Math.round(SIZE_CLASS[size].length * 1.4)} className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3 opacity-0 peer-checked:opacity-100\" />\n )}\n </span>\n </span>\n );\n },\n);\nCheckbox.displayName = 'Checkbox';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE_CLASS: Record<NonNullable<RadioProps['size']>, string> = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n};\n\n/**\n * Native radio button with custom visual. Use multiple with the same `name`\n * to form a mutually exclusive group; for arrow-key nav, wrap in\n * `RadioGroup` (L4).\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ className, size = 'md', id, disabled, required, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <span className={cn('relative inline-flex shrink-0', SIZE_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"radio\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none grid h-full w-full place-items-center rounded-full border border-input bg-background transition-colors',\n 'peer-checked:border-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n )}\n >\n <span className=\"h-2 w-2 rounded-full bg-primary opacity-0 peer-checked:opacity-100\" />\n </span>\n </span>\n );\n },\n);\nRadio.displayName = 'Radio';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface SwitchProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst TRACK_CLASS: Record<NonNullable<SwitchProps['size']>, string> = {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n lg: 'h-6 w-11',\n};\nconst THUMB_CLASS: Record<NonNullable<SwitchProps['size']>, string> = {\n sm: 'h-3 w-3 peer-checked:translate-x-3',\n md: 'h-4 w-4 peer-checked:translate-x-4',\n lg: 'h-5 w-5 peer-checked:translate-x-5',\n};\n\n/**\n * Toggle switch — native checkbox styled as an iOS-style track + thumb.\n * Strict atom: no built-in label; pair via `FormControl` or wrap manually.\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, size = 'md', id, disabled, required, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <span className={cn('relative inline-flex shrink-0', TRACK_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none flex h-full w-full items-center rounded-full bg-input px-0.5 transition-colors',\n 'peer-checked:bg-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n )}\n >\n <span\n className={cn(\n 'rounded-full bg-background shadow-sm transition-transform duration-150',\n THUMB_CLASS[size],\n )}\n />\n </span>\n </span>\n );\n },\n);\nSwitch.displayName = 'Switch';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst TRACK_CLASS: Record<NonNullable<SliderProps['size']>, string> = {\n sm: 'h-1',\n md: 'h-1.5',\n lg: 'h-2',\n};\n\n/**\n * Single-value range slider — native `<input type=\"range\">` styled across\n * browsers. Multi-thumb / range slider lives at L5.\n */\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n { className, size = 'md', id, disabled, required, min = 0, max = 100, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n return (\n <input\n ref={ref}\n type=\"range\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n min={min}\n max={max}\n aria-invalid={ctx?.isInvalid || undefined}\n className={cn(\n 'w-full appearance-none bg-transparent disabled:cursor-not-allowed disabled:opacity-50',\n // WebKit\n '[&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-muted',\n `[&::-webkit-slider-runnable-track]:${TRACK_CLASS[size]}`,\n '[&::-webkit-slider-thumb]:mt-[-6px] [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-background',\n // Firefox\n `[&::-moz-range-track]:${TRACK_CLASS[size]}`,\n '[&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-muted',\n '[&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary [&::-moz-range-thumb]:bg-background',\n 'focus-visible:outline-none focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-ring',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSlider.displayName = 'Slider';\n"]}
|
|
@@ -12,7 +12,7 @@ export declare const avatarVariants: import("tailwind-variants").TVReturnType<{
|
|
|
12
12
|
circle: string;
|
|
13
13
|
square: string;
|
|
14
14
|
};
|
|
15
|
-
}, undefined, "inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-
|
|
15
|
+
}, undefined, "inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground font-medium", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
16
16
|
size: {
|
|
17
17
|
xs: string;
|
|
18
18
|
sm: string;
|
|
@@ -64,7 +64,7 @@ export declare const avatarVariants: import("tailwind-variants").TVReturnType<{
|
|
|
64
64
|
circle: string;
|
|
65
65
|
square: string;
|
|
66
66
|
};
|
|
67
|
-
}, undefined, "inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-
|
|
67
|
+
}, undefined, "inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground font-medium", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
68
68
|
size: {
|
|
69
69
|
xs: string;
|
|
70
70
|
sm: string;
|
|
@@ -21,7 +21,7 @@ export declare const headingVariants: import("tailwind-variants").TVReturnType<{
|
|
|
21
21
|
center: string;
|
|
22
22
|
right: string;
|
|
23
23
|
};
|
|
24
|
-
}, undefined, "font-semibold tracking-tight text-
|
|
24
|
+
}, undefined, "font-semibold tracking-tight text-foreground", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
25
25
|
size: {
|
|
26
26
|
xs: string;
|
|
27
27
|
sm: string;
|
|
@@ -109,7 +109,7 @@ export declare const headingVariants: import("tailwind-variants").TVReturnType<{
|
|
|
109
109
|
center: string;
|
|
110
110
|
right: string;
|
|
111
111
|
};
|
|
112
|
-
}, undefined, "font-semibold tracking-tight text-
|
|
112
|
+
}, undefined, "font-semibold tracking-tight text-foreground", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
113
113
|
size: {
|
|
114
114
|
xs: string;
|
|
115
115
|
sm: string;
|
package/dist/display/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Avatar, Badge, Code, Heading, Image, Kbd, Mark, Quote, Separator, Tag, Text, avatarVariants, badgeVariants, codeVariants, headingVariants, tagVariants, textVariants } from '../chunk-
|
|
1
|
+
export { Avatar, Badge, Code, Heading, Image, Kbd, Mark, Quote, Separator, Tag, Text, avatarVariants, badgeVariants, codeVariants, headingVariants, tagVariants, textVariants } from '../chunk-DBQ4VF2J.js';
|
|
2
2
|
import '../chunk-TDX22OWF.js';
|
|
3
3
|
import '../chunk-BMBIZLO4.js';
|
|
4
4
|
import '../chunk-DN7WBRIV.js';
|
|
@@ -8,7 +8,7 @@ export declare const tagVariants: import("tailwind-variants").TVReturnType<{
|
|
|
8
8
|
danger: string;
|
|
9
9
|
info: string;
|
|
10
10
|
};
|
|
11
|
-
}, undefined, "inline-flex items-center gap-1 rounded-md border border-
|
|
11
|
+
}, undefined, "inline-flex items-center gap-1 rounded-md border border-border bg-card px-2 py-0.5 text-xs font-medium text-card-foreground", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
12
12
|
variant: {
|
|
13
13
|
neutral: string;
|
|
14
14
|
brand: string;
|
|
@@ -44,7 +44,7 @@ export declare const tagVariants: import("tailwind-variants").TVReturnType<{
|
|
|
44
44
|
danger: string;
|
|
45
45
|
info: string;
|
|
46
46
|
};
|
|
47
|
-
}, undefined, "inline-flex items-center gap-1 rounded-md border border-
|
|
47
|
+
}, undefined, "inline-flex items-center gap-1 rounded-md border border-border bg-card px-2 py-0.5 text-xs font-medium text-card-foreground", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
48
48
|
variant: {
|
|
49
49
|
neutral: string;
|
|
50
50
|
brand: string;
|
package/dist/feedback/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AlertSimple, BannerSimple, ProgressBar, ProgressCircle, Skeleton, Spinner, ToastSimple, alertSimpleVariants, bannerSimpleVariants, progressFillVariants, progressTrackVariants, skeletonVariants, spinnerVariants, toastSimpleVariants } from '../chunk-
|
|
1
|
+
export { AlertSimple, BannerSimple, ProgressBar, ProgressCircle, Skeleton, Spinner, ToastSimple, alertSimpleVariants, bannerSimpleVariants, progressFillVariants, progressTrackVariants, skeletonVariants, spinnerVariants, toastSimpleVariants } from '../chunk-62NXDB5V.js';
|
|
2
2
|
import '../chunk-BMBIZLO4.js';
|
|
3
3
|
import '../chunk-DN7WBRIV.js';
|
|
4
4
|
import '../chunk-KZ4VFY2T.js';
|
|
@@ -5,7 +5,7 @@ export declare const progressTrackVariants: import("tailwind-variants").TVReturn
|
|
|
5
5
|
md: string;
|
|
6
6
|
lg: string;
|
|
7
7
|
};
|
|
8
|
-
}, undefined, "h-2 w-full overflow-hidden rounded-full bg-
|
|
8
|
+
}, undefined, "h-2 w-full overflow-hidden rounded-full bg-muted", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
9
9
|
size: {
|
|
10
10
|
sm: string;
|
|
11
11
|
md: string;
|
|
@@ -29,7 +29,7 @@ export declare const progressTrackVariants: import("tailwind-variants").TVReturn
|
|
|
29
29
|
md: string;
|
|
30
30
|
lg: string;
|
|
31
31
|
};
|
|
32
|
-
}, undefined, "h-2 w-full overflow-hidden rounded-full bg-
|
|
32
|
+
}, undefined, "h-2 w-full overflow-hidden rounded-full bg-muted", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
33
33
|
size: {
|
|
34
34
|
sm: string;
|
|
35
35
|
md: string;
|
|
@@ -5,7 +5,7 @@ export declare const skeletonVariants: import("tailwind-variants").TVReturnType<
|
|
|
5
5
|
text: string;
|
|
6
6
|
circle: string;
|
|
7
7
|
};
|
|
8
|
-
}, undefined, "animate-pulse bg-
|
|
8
|
+
}, undefined, "animate-pulse bg-muted", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
9
9
|
shape: {
|
|
10
10
|
rect: string;
|
|
11
11
|
text: string;
|
|
@@ -29,7 +29,7 @@ export declare const skeletonVariants: import("tailwind-variants").TVReturnType<
|
|
|
29
29
|
text: string;
|
|
30
30
|
circle: string;
|
|
31
31
|
};
|
|
32
|
-
}, undefined, "animate-pulse bg-
|
|
32
|
+
}, undefined, "animate-pulse bg-muted", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
33
33
|
shape: {
|
|
34
34
|
rect: string;
|
|
35
35
|
text: string;
|
|
@@ -7,7 +7,7 @@ export declare const toastSimpleVariants: import("tailwind-variants").TVReturnTy
|
|
|
7
7
|
danger: string;
|
|
8
8
|
neutral: string;
|
|
9
9
|
};
|
|
10
|
-
}, undefined, "pointer-events-auto rounded-md border bg-
|
|
10
|
+
}, undefined, "pointer-events-auto rounded-md border bg-popover text-popover-foreground shadow-lg px-4 py-3 text-sm", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
11
11
|
severity: {
|
|
12
12
|
info: string;
|
|
13
13
|
success: string;
|
|
@@ -39,7 +39,7 @@ export declare const toastSimpleVariants: import("tailwind-variants").TVReturnTy
|
|
|
39
39
|
danger: string;
|
|
40
40
|
neutral: string;
|
|
41
41
|
};
|
|
42
|
-
}, undefined, "pointer-events-auto rounded-md border bg-
|
|
42
|
+
}, undefined, "pointer-events-auto rounded-md border bg-popover text-popover-foreground shadow-lg px-4 py-3 text-sm", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
43
43
|
severity: {
|
|
44
44
|
info: string;
|
|
45
45
|
success: string;
|
package/dist/forms/_styles.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const inputBaseVariants: import("tailwind-variants").TVReturnType
|
|
|
9
9
|
default: string;
|
|
10
10
|
invalid: string;
|
|
11
11
|
};
|
|
12
|
-
}, undefined, "flex w-full rounded-md border bg-
|
|
12
|
+
}, undefined, "flex w-full rounded-md border bg-background text-foreground placeholder:text-subtle-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 read-only:bg-muted", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
13
13
|
size: {
|
|
14
14
|
sm: string;
|
|
15
15
|
md: string;
|
|
@@ -49,7 +49,7 @@ export declare const inputBaseVariants: import("tailwind-variants").TVReturnType
|
|
|
49
49
|
default: string;
|
|
50
50
|
invalid: string;
|
|
51
51
|
};
|
|
52
|
-
}, undefined, "flex w-full rounded-md border bg-
|
|
52
|
+
}, undefined, "flex w-full rounded-md border bg-background text-foreground placeholder:text-subtle-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 read-only:bg-muted", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
53
53
|
size: {
|
|
54
54
|
sm: string;
|
|
55
55
|
md: string;
|
package/dist/forms/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Checkbox, EmailInput, Fieldset, FormErrorMessage, FormHelperText, Label, Legend, NumberInput, PasswordInput, Radio, SearchInput, Slider, Switch, TelInput, TextInput, Textarea, UrlInput } from '../chunk-
|
|
1
|
+
export { Checkbox, EmailInput, Fieldset, FormErrorMessage, FormHelperText, Label, Legend, NumberInput, PasswordInput, Radio, SearchInput, Slider, Switch, TelInput, TextInput, Textarea, UrlInput } from '../chunk-TDEEVNSD.js';
|
|
2
2
|
import '../chunk-Q27NAHVB.js';
|
|
3
3
|
import '../chunk-JTJEI6MF.js';
|
|
4
4
|
import '../chunk-TDX22OWF.js';
|
package/dist/index.css
CHANGED
|
@@ -5,13 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
/* ---------------------------------------------------------------------------
|
|
7
7
|
* Theme tokens — single source of truth for colors, radii, motion.
|
|
8
|
+
*
|
|
9
|
+
* Two layers live here:
|
|
10
|
+
* 1. RAW SCALES (`--color-brand-*`, `--color-success-*`, …) — full palettes
|
|
11
|
+
* kept as escape hatches. Use directly when you need a specific shade.
|
|
12
|
+
* 2. SEMANTIC TOKENS (`--color-background`, `--color-primary`, …) — the
|
|
13
|
+
* 24-token surface every atom should consume. These flip in `.dark { }`
|
|
14
|
+
* below; consumers can override either layer in their own CSS.
|
|
15
|
+
*
|
|
8
16
|
* Tailwind v4 emits each `--*` here as a CSS variable AND uses it to generate
|
|
9
|
-
* utility classes (e.g. `--color-
|
|
10
|
-
* Override any of these in consumer CSS by re-defining the variable; for dark
|
|
11
|
-
* mode, override inside `.dark { … }`.
|
|
17
|
+
* utility classes (e.g. `--color-primary` → `bg-primary text-primary border-primary …`).
|
|
12
18
|
* ------------------------------------------------------------------------- */
|
|
13
19
|
@theme {
|
|
14
|
-
/*
|
|
20
|
+
/* ---------- raw color scales ---------- */
|
|
15
21
|
--color-brand-50: #eff6ff;
|
|
16
22
|
--color-brand-100: #dbeafe;
|
|
17
23
|
--color-brand-200: #bfdbfe;
|
|
@@ -24,7 +30,6 @@
|
|
|
24
30
|
--color-brand-900: #1e3a8a;
|
|
25
31
|
--color-brand-950: #172554;
|
|
26
32
|
|
|
27
|
-
/* Severity aliases — semantic names mapped onto Tailwind palettes */
|
|
28
33
|
--color-success-50: #f0fdf4;
|
|
29
34
|
--color-success-100: #dcfce7;
|
|
30
35
|
--color-success-500: #22c55e;
|
|
@@ -53,6 +58,54 @@
|
|
|
53
58
|
--color-info-700: #0e7490;
|
|
54
59
|
--color-info-900: #164e63;
|
|
55
60
|
|
|
61
|
+
/* ---------- semantic tokens (light mode defaults) ---------- */
|
|
62
|
+
|
|
63
|
+
/* Surfaces */
|
|
64
|
+
--color-background: #ffffff;
|
|
65
|
+
--color-foreground: #18181b;
|
|
66
|
+
--color-muted: #f4f4f5;
|
|
67
|
+
--color-muted-foreground: #71717a;
|
|
68
|
+
--color-subtle-foreground: #a1a1aa;
|
|
69
|
+
--color-card: #ffffff;
|
|
70
|
+
--color-card-foreground: #18181b;
|
|
71
|
+
--color-popover: #ffffff;
|
|
72
|
+
--color-popover-foreground: #18181b;
|
|
73
|
+
--color-inverse: #18181b;
|
|
74
|
+
--color-inverse-foreground: #fafafa;
|
|
75
|
+
|
|
76
|
+
/* Borders & focus */
|
|
77
|
+
--color-border: #e4e4e7;
|
|
78
|
+
--color-border-strong: #d4d4d8;
|
|
79
|
+
--color-input: #d4d4d8;
|
|
80
|
+
--color-ring: #3b82f6;
|
|
81
|
+
|
|
82
|
+
/* Brand (primary) */
|
|
83
|
+
--color-primary: #2563eb;
|
|
84
|
+
--color-primary-foreground: #ffffff;
|
|
85
|
+
--color-primary-soft: #dbeafe;
|
|
86
|
+
--color-primary-soft-foreground: #1d4ed8;
|
|
87
|
+
|
|
88
|
+
/* Severity solids + softs */
|
|
89
|
+
--color-destructive: #dc2626;
|
|
90
|
+
--color-destructive-foreground: #ffffff;
|
|
91
|
+
--color-destructive-soft: #fef2f2;
|
|
92
|
+
--color-destructive-soft-foreground: #b91c1c;
|
|
93
|
+
|
|
94
|
+
--color-success: #16a34a;
|
|
95
|
+
--color-success-foreground: #ffffff;
|
|
96
|
+
--color-success-soft: #f0fdf4;
|
|
97
|
+
--color-success-soft-foreground: #15803d;
|
|
98
|
+
|
|
99
|
+
--color-warning: #f59e0b;
|
|
100
|
+
--color-warning-foreground: #78350f;
|
|
101
|
+
--color-warning-soft: #fffbeb;
|
|
102
|
+
--color-warning-soft-foreground: #b45309;
|
|
103
|
+
|
|
104
|
+
--color-info: #0891b2;
|
|
105
|
+
--color-info-foreground: #ffffff;
|
|
106
|
+
--color-info-soft: #ecfeff;
|
|
107
|
+
--color-info-soft-foreground: #0e7490;
|
|
108
|
+
|
|
56
109
|
/* Radii — preserve our pre-v4 scale (some values shift in v4 defaults) */
|
|
57
110
|
--radius-md: 0.5rem;
|
|
58
111
|
--radius-lg: 0.75rem;
|
|
@@ -63,6 +116,60 @@
|
|
|
63
116
|
--animate-indeterminate: indeterminate 1.4s ease-in-out infinite;
|
|
64
117
|
}
|
|
65
118
|
|
|
119
|
+
/* ---------- dark mode semantic overrides ----------
|
|
120
|
+
* Toggle by setting `class="dark"` on <html> or <body>.
|
|
121
|
+
* Raw scales stay constant; only semantic tokens flip.
|
|
122
|
+
* ------------------------------------------------ */
|
|
123
|
+
.dark {
|
|
124
|
+
--color-background: #09090b;
|
|
125
|
+
--color-foreground: #fafafa;
|
|
126
|
+
--color-muted: #18181b;
|
|
127
|
+
--color-muted-foreground: #a1a1aa;
|
|
128
|
+
--color-subtle-foreground: #71717a;
|
|
129
|
+
--color-card: #18181b;
|
|
130
|
+
--color-card-foreground: #fafafa;
|
|
131
|
+
--color-popover: #18181b;
|
|
132
|
+
--color-popover-foreground: #fafafa;
|
|
133
|
+
--color-inverse: #fafafa;
|
|
134
|
+
--color-inverse-foreground: #09090b;
|
|
135
|
+
|
|
136
|
+
--color-border: #27272a;
|
|
137
|
+
--color-border-strong: #3f3f46;
|
|
138
|
+
--color-input: #3f3f46;
|
|
139
|
+
--color-ring: #60a5fa;
|
|
140
|
+
|
|
141
|
+
--color-primary: #3b82f6;
|
|
142
|
+
--color-primary-foreground: #ffffff;
|
|
143
|
+
--color-primary-soft: #1e3a8a;
|
|
144
|
+
--color-primary-soft-foreground: #dbeafe;
|
|
145
|
+
|
|
146
|
+
--color-destructive: #ef4444;
|
|
147
|
+
--color-destructive-foreground: #ffffff;
|
|
148
|
+
--color-destructive-soft: #7f1d1d;
|
|
149
|
+
--color-destructive-soft-foreground: #fee2e2;
|
|
150
|
+
|
|
151
|
+
--color-success: #22c55e;
|
|
152
|
+
--color-success-foreground: #ffffff;
|
|
153
|
+
--color-success-soft: #14532d;
|
|
154
|
+
--color-success-soft-foreground: #dcfce7;
|
|
155
|
+
|
|
156
|
+
--color-warning: #f59e0b;
|
|
157
|
+
--color-warning-foreground: #78350f;
|
|
158
|
+
--color-warning-soft: #78350f;
|
|
159
|
+
--color-warning-soft-foreground: #fef3c7;
|
|
160
|
+
|
|
161
|
+
--color-info: #06b6d4;
|
|
162
|
+
--color-info-foreground: #ffffff;
|
|
163
|
+
--color-info-soft: #164e63;
|
|
164
|
+
--color-info-soft-foreground: #cffafe;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Body defaults so consumers get sane page colors out of the box. */
|
|
168
|
+
html, body {
|
|
169
|
+
background-color: var(--color-background);
|
|
170
|
+
color: var(--color-foreground);
|
|
171
|
+
}
|
|
172
|
+
|
|
66
173
|
@keyframes indeterminate {
|
|
67
174
|
0% {
|
|
68
175
|
transform: translateX(-100%);
|