@akanaka-design/components 0.6.2
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/LICENSE +21 -0
- package/dist/index.d.ts +191 -0
- package/dist/index.js +827 -0
- package/dist/index.js.map +1 -0
- package/package.json +79 -0
- package/tailwind.config.ts +125 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Alert/Alert.tsx","../src/Avatar/Avatar.tsx","../src/Badge/Badge.tsx","../src/Button/Button.tsx","../src/Card/Card.tsx","../src/Card/StatCard.tsx","../src/Checkbox/Checkbox.tsx","../src/Input/Input.tsx","../src/Label/Label.tsx","../src/Progress/Progress.tsx","../src/Select/Select.tsx","../src/Table/Table.tsx","../src/Tabs/Tabs.tsx","../src/Toggle/Toggle.tsx","../src/index.ts"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface AlertProps extends HTMLAttributes<HTMLDivElement> {\n /** Visual style variant */\n variant?: AlertVariant;\n /** Alert title */\n title?: string;\n /** Alert content */\n children: ReactNode;\n /** Dismiss handler */\n onDismiss?: () => void;\n}\n\nconst variantStyles: Record<AlertVariant, { container: string; icon: string }> = {\n info: {\n container: \"bg-background-info text-foreground-info border border-border-info\",\n icon: \"text-foreground-info\",\n },\n success: {\n container: \"bg-background-success text-foreground-success border border-border-success\",\n icon: \"text-foreground-success\",\n },\n warning: {\n container: \"bg-background-warning text-foreground-warning border border-border-warning\",\n icon: \"text-foreground-warning\",\n },\n error: {\n container: \"bg-background-error text-foreground-error border border-border-error-subtle\",\n icon: \"text-foreground-error\",\n },\n};\n\nconst icons: Record<AlertVariant, ReactNode> = {\n info: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clipRule=\"evenodd\" />\n </svg>\n ),\n success: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clipRule=\"evenodd\" />\n </svg>\n ),\n warning: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>\n ),\n error: (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clipRule=\"evenodd\" />\n </svg>\n ),\n};\n\nexport function Alert({\n variant = \"info\",\n title,\n children,\n onDismiss,\n className = \"\",\n ...props\n}: AlertProps) {\n const baseStyles = \"flex gap-3 p-4 rounded-lg border\";\n const styles = variantStyles[variant];\n const classes = [baseStyles, styles.container, className].filter(Boolean).join(\" \");\n\n return (\n <div role=\"alert\" className={classes} {...props}>\n <span className={`flex-shrink-0 ${styles.icon}`}>{icons[variant]}</span>\n <div className=\"flex-1\">\n {title && <p className=\"font-semibold mb-1\">{title}</p>}\n <div className=\"text-body-sm\">{children}</div>\n </div>\n {onDismiss && (\n <button\n onClick={onDismiss}\n className=\"flex-shrink-0 opacity-70 hover:opacity-100 transition-opacity\"\n aria-label=\"Dismiss\"\n >\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clipRule=\"evenodd\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n","import type { ImgHTMLAttributes } from \"react\";\n\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, \"size\"> {\n /** Size of the avatar */\n size?: AvatarSize;\n /** Fallback initials when no image */\n initials?: string;\n /** Image source */\n src?: string;\n /** Alt text */\n alt?: string;\n}\n\nconst sizeStyles: Record<AvatarSize, string> = {\n sm: \"w-8 h-8 text-caption\",\n md: \"w-10 h-10 text-body-sm\",\n lg: \"w-12 h-12 text-body\",\n xl: \"w-16 h-16 text-h3\",\n};\n\nexport function Avatar({\n size = \"md\",\n initials,\n src,\n alt = \"\",\n className = \"\",\n ...props\n}: AvatarProps) {\n const baseStyles = [\n \"inline-flex items-center justify-center\",\n \"rounded-full\",\n \"bg-background-primary-subtle text-foreground-primary\",\n \"font-semibold\",\n \"overflow-hidden\",\n \"flex-shrink-0\",\n ].join(\" \");\n\n const classes = [baseStyles, sizeStyles[size], className]\n .filter(Boolean)\n .join(\" \");\n\n if (src) {\n return (\n <img\n src={src}\n alt={alt}\n className={`${sizeStyles[size]} rounded-full object-cover ${className}`}\n {...props}\n />\n );\n }\n\n return (\n <span className={classes} role=\"img\" aria-label={alt || initials}>\n {initials?.slice(0, 2).toUpperCase()}\n </span>\n );\n}\n","import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport type BadgeVariant = \"default\" | \"primary\" | \"success\" | \"warning\" | \"error\" | \"info\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /** Visual style variant */\n variant?: BadgeVariant;\n /** Badge content */\n children: ReactNode;\n}\n\nconst variantStyles: Record<BadgeVariant, string> = {\n default: \"bg-background-muted text-foreground\",\n primary: \"bg-background-primary-subtle text-foreground-primary\",\n success: \"bg-background-success text-foreground-success\",\n warning: \"bg-background-warning text-foreground-warning\",\n error: \"bg-background-error text-foreground-error\",\n info: \"bg-background-info text-foreground-info\",\n};\n\nexport function Badge({\n variant = \"default\",\n children,\n className = \"\",\n ...props\n}: BadgeProps) {\n const baseStyles = [\n \"inline-flex items-center\",\n \"px-2 py-0.5\",\n \"text-caption font-medium\",\n \"rounded-full\",\n ].join(\" \");\n\n const classes = [baseStyles, variantStyles[variant], className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n}\n","import { forwardRef, type ButtonHTMLAttributes } from \"react\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"default\" | \"outline\" | \"destructive\" | \"link\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Size of the button */\n size?: ButtonSize;\n /** Full width button */\n fullWidth?: boolean;\n}\n\nconst variantStyles: Record<ButtonVariant, string> = {\n primary: [\n \"bg-primary-500 text-foreground-on-primary\",\n \"hover:bg-primary-600\",\n \"active:bg-primary-700\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:bg-background-subtle disabled:text-foreground-muted\",\n ].join(\" \"),\n default: [\n \"bg-primary-500 text-foreground-on-primary\",\n \"hover:bg-primary-600\",\n \"active:bg-primary-700\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:bg-background-subtle disabled:text-foreground-muted\",\n ].join(\" \"),\n secondary: [\n \"bg-background-muted text-foreground\",\n \"border border-border\",\n \"hover:bg-background-subtle\",\n \"active:bg-background-subtle\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:bg-background-muted disabled:text-foreground-muted disabled:border-border-muted\",\n ].join(\" \"),\n outline: [\n \"bg-transparent text-foreground\",\n \"border border-border\",\n \"hover:bg-background-muted\",\n \"active:bg-background-subtle\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:text-foreground-muted disabled:border-border-muted\",\n ].join(\" \"),\n ghost: [\n \"bg-transparent text-foreground\",\n \"hover:bg-background-muted\",\n \"active:bg-background-subtle\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:text-foreground-muted disabled:bg-transparent\",\n ].join(\" \"),\n danger: [\n \"bg-error text-foreground-on-primary\",\n \"hover:bg-red-600\",\n \"active:bg-red-700\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:bg-background-subtle disabled:text-foreground-muted\",\n ].join(\" \"),\n destructive: [\n \"bg-error text-foreground-on-primary\",\n \"hover:bg-red-600\",\n \"active:bg-red-700\",\n \"focus-visible:shadow-focus focus-visible:outline-none\",\n \"disabled:bg-background-subtle disabled:text-foreground-muted\",\n ].join(\" \"),\n link: [\n \"bg-transparent text-primary-500 underline-offset-4\",\n \"hover:underline\",\n \"active:text-primary-700\",\n \"focus-visible:outline-none focus-visible:underline\",\n \"disabled:text-foreground-muted disabled:no-underline\",\n ].join(\" \"),\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n sm: \"px-3 py-1.5 text-body-sm rounded-sm\",\n md: \"px-4 py-2 text-body rounded-md\",\n lg: \"px-6 py-3 text-h3 rounded-lg\",\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"md\",\n fullWidth = false,\n className = \"\",\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseStyles = [\n \"inline-flex items-center justify-center\",\n \"font-semibold\",\n \"transition-colors duration-fast\",\n \"cursor-pointer\",\n \"disabled:cursor-not-allowed\",\n ].join(\" \");\n\n const classes = [\n baseStyles,\n variantStyles[variant],\n sizeStyles[size],\n fullWidth ? \"w-full\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport type CardVariant = \"elevated\" | \"flat\";\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: CardVariant;\n children: ReactNode;\n}\n\nexport interface CardSectionProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nconst variantStyles: Record<CardVariant, string> = {\n elevated: \"bg-background-elevated shadow-md border border-border\",\n flat: \"bg-background-muted border border-border\",\n};\n\nexport function Card({\n variant = \"elevated\",\n children,\n className = \"\",\n ...props\n}: CardProps) {\n const baseStyles = \"rounded-lg overflow-hidden\";\n const classes = [baseStyles, variantStyles[variant], className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n}\n\nexport function CardHeader({ children, className = \"\", ...props }: CardSectionProps) {\n return (\n <div className={`px-4 py-3 border-b border-border ${className}`} {...props}>\n {children}\n </div>\n );\n}\n\nexport function CardTitle({ children, className = \"\", ...props }: CardSectionProps) {\n return (\n <h3 className={`text-lg font-semibold text-foreground ${className}`} {...props}>\n {children}\n </h3>\n );\n}\n\nexport function CardDescription({ children, className = \"\", ...props }: CardSectionProps) {\n return (\n <p className={`text-sm text-foreground-muted mt-1 ${className}`} {...props}>\n {children}\n </p>\n );\n}\n\nexport function CardContent({ children, className = \"\", ...props }: CardSectionProps) {\n return (\n <div className={`px-4 py-4 ${className}`} {...props}>\n {children}\n </div>\n );\n}\n\n/** @deprecated Use CardContent instead */\nexport const CardBody = CardContent;\n\nexport function CardFooter({ children, className = \"\", ...props }: CardSectionProps) {\n return (\n <div className={`px-4 py-3 border-t border-border bg-background-muted ${className}`} {...props}>\n {children}\n </div>\n );\n}","import { useId, type HTMLAttributes, type ReactNode } from \"react\";\n\nexport type StatCardAccent = \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"destructive\";\n\nexport interface StatCardProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Metric label (muted, 13px) */\n label: string;\n /** Primary metric value */\n value: ReactNode;\n /** Top accent bar color */\n accent?: StatCardAccent;\n}\n\nconst accentTopStyles: Record<StatCardAccent, string> = {\n primary: \"border-t-primary-500\",\n secondary: \"border-t-border-strong\",\n success: \"border-t-success\",\n warning: \"border-t-warning\",\n destructive: \"border-t-error\",\n};\n\nexport function StatCard({\n label,\n value,\n accent = \"primary\",\n className = \"\",\n ...props\n}: StatCardProps) {\n const labelId = useId();\n const root = [\n \"overflow-hidden rounded-b-lg rounded-t-none\",\n \"border border-border border-t-4 bg-background-elevated shadow-md\",\n accentTopStyles[accent],\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <section className={root} aria-labelledby={labelId} {...props}>\n <div className=\"space-y-1 px-4 py-4\">\n <p id={labelId} className=\"text-body-sm text-foreground-muted\">\n {label}\n </p>\n <div className=\"text-[1.75rem] font-medium leading-tight text-foreground\">{value}</div>\n </div>\n </section>\n );\n}\n","import { forwardRef, type InputHTMLAttributes } from \"react\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Label text */\n label?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, disabled, className = \"\", id, ...props }, ref) => {\n const checkboxId = id || props.name;\n\n const checkboxStyles = [\n \"w-4 h-4\",\n \"rounded-sm\",\n \"border border-border\",\n \"text-primary-500\",\n \"bg-background-default\",\n \"transition-colors duration-fast\",\n \"focus:outline-none focus:shadow-focus\",\n \"checked:bg-primary-500 checked:border-primary-500\",\n \"hover:border-border-strong\",\n \"disabled:bg-background-muted disabled:border-border disabled:cursor-not-allowed\",\n \"cursor-pointer\",\n \"accent-primary-500\",\n ].join(\" \");\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n disabled={disabled}\n className={checkboxStyles}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className={`text-body text-foreground select-none ${\n disabled ? \"text-foreground-muted cursor-not-allowed\" : \"cursor-pointer\"\n }`}\n >\n {label}\n </label>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import { forwardRef, useId, type InputHTMLAttributes } from \"react\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /** Size of the input */\n size?: InputSize;\n /** Error message to display */\n error?: string;\n /** Label text */\n label?: string;\n /** Helper text below input */\n helperText?: string;\n}\n\nconst sizeStyles: Record<InputSize, string> = {\n sm: \"px-2 py-1 text-body-sm rounded-sm\",\n md: \"px-3 py-2 text-body rounded-md\",\n lg: \"px-4 py-3 text-body rounded-lg\",\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ size = \"md\", error, label, helperText, disabled, className = \"\", id, ...props }, ref) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n\n const baseStyles = [\n \"w-full\",\n \"text-foreground\",\n \"bg-background-muted\",\n \"border border-border\",\n \"transition-colors duration-fast\",\n \"placeholder:text-foreground-muted\",\n \"focus:outline-none focus:shadow-focus\",\n ].join(\" \");\n\n const stateStyles = error\n ? \"border-error focus:border-error\"\n : \"border-border hover:border-border-strong focus:border-primary-500\";\n\n const disabledStyles = disabled\n ? \"bg-background-muted text-foreground-muted cursor-not-allowed hover:border-border\"\n : \"\";\n\n const classes = [baseStyles, sizeStyles[size], stateStyles, disabledStyles, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className=\"flex flex-col gap-1\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-body-sm font-medium text-foreground\"\n >\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n disabled={disabled}\n className={classes}\n aria-invalid={!!error}\n aria-describedby={error ? `${inputId}-error` : helperText ? `${inputId}-helper` : undefined}\n {...props}\n />\n {error && (\n <p id={`${inputId}-error`} className=\"text-body-sm text-error\">\n {error}\n </p>\n )}\n {!error && helperText && (\n <p id={`${inputId}-helper`} className=\"text-body-sm text-foreground-muted\">\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import { forwardRef, type LabelHTMLAttributes } from \"react\";\n\nexport type LabelSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n /** Size of the label */\n size?: LabelSize;\n /** Show error styling (red text) */\n error?: boolean;\n /** Show required indicator (red asterisk) */\n required?: boolean;\n}\n\nconst sizeStyles: Record<LabelSize, string> = {\n sm: \"text-caption\",\n md: \"text-body-sm\",\n lg: \"text-body\",\n};\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n (\n {\n size = \"md\",\n error = false,\n required = false,\n className = \"\",\n children,\n ...props\n },\n ref\n ) => {\n const baseStyles = \"font-medium\";\n const colorStyles = error ? \"text-error\" : \"text-foreground\";\n\n const classes = [baseStyles, sizeStyles[size], colorStyles, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label ref={ref} className={classes} {...props}>\n {children}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n );\n }\n);\n\nLabel.displayName = \"Label\";\n","import type { HTMLAttributes } from \"react\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n /** Current value (0-100) */\n value: number;\n /** Maximum value */\n max?: number;\n /** Show percentage label */\n showLabel?: boolean;\n}\n\nexport function Progress({\n value,\n max = 100,\n showLabel = false,\n className = \"\",\n ...props\n}: ProgressProps) {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n return (\n <div className={`flex items-center gap-3 ${className}`} {...props}>\n <div\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className=\"flex-1 h-2 bg-background-subtle rounded-full overflow-hidden\"\n >\n <div\n className=\"h-full bg-primary-500 rounded-full transition-all duration-base\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n {showLabel && (\n <span className=\"text-body-sm text-foreground-muted min-w-[3ch]\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n}\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n} from \"react\";\n\nconst SelectPlaceholderContext = createContext<string | undefined>(undefined);\n\nexport type SelectProps = ComponentPropsWithoutRef<typeof SelectPrimitive.Root> & {\n /** Shown when no value is selected; also used by default `SelectTrigger` + `SelectValue` */\n placeholder?: string;\n};\n\nexport function Select({ placeholder, children, ...props }: SelectProps) {\n return (\n <SelectPlaceholderContext.Provider value={placeholder}>\n <SelectPrimitive.Root {...props}>{children}</SelectPrimitive.Root>\n </SelectPlaceholderContext.Provider>\n );\n}\n\nconst triggerBaseStyles = [\n \"group inline-flex h-10 w-full shrink-0 items-center justify-between gap-2\",\n \"rounded-md border px-3 py-2 text-left text-body\",\n \"text-foreground bg-background-muted border-border\",\n \"transition-colors duration-fast\",\n \"focus:outline-none focus:shadow-focus focus:border-primary-500\",\n \"hover:border-border-strong\",\n \"disabled:cursor-not-allowed disabled:text-foreground-muted disabled:hover:border-border\",\n \"[&>span]:line-clamp-1\",\n].join(\" \");\n\nexport type SelectTriggerProps = ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>;\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className = \"\", children, ...props }, ref) => {\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n className={[triggerBaseStyles, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children ?? (\n <>\n <SelectValue />\n <SelectChevronIcon />\n </>\n )}\n </SelectPrimitive.Trigger>\n );\n }\n);\nSelectTrigger.displayName = \"SelectTrigger\";\n\nexport type SelectValueProps = ComponentPropsWithoutRef<typeof SelectPrimitive.Value>;\n\nexport const SelectValue = forwardRef<HTMLSpanElement, SelectValueProps>(\n ({ placeholder, className = \"\", ...props }, ref) => {\n const rootPlaceholder = useContext(SelectPlaceholderContext);\n return (\n <SelectPrimitive.Value\n ref={ref}\n placeholder={placeholder ?? rootPlaceholder}\n className={[\"data-[placeholder]:text-foreground-muted\", className].filter(Boolean).join(\" \")}\n {...props}\n />\n );\n }\n);\nSelectValue.displayName = \"SelectValue\";\n\nfunction SelectChevronIcon() {\n return (\n <SelectPrimitive.Icon asChild>\n <span className=\"pointer-events-none flex size-4 shrink-0 items-center justify-center text-foreground-muted\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n className=\"transition-transform duration-200 group-data-[state=open]:rotate-180\"\n >\n <path\n d=\"M3 4.5L6 7.5L9 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </SelectPrimitive.Icon>\n );\n}\n\nconst contentStyles = [\n \"relative z-50 max-h-96 min-w-[var(--radix-select-trigger-width)] overflow-hidden\",\n \"rounded-md border border-border bg-background-default text-foreground shadow-md\",\n].join(\" \");\n\nconst viewportStyles = \"p-1\";\n\nexport type SelectContentProps = ComponentPropsWithoutRef<typeof SelectPrimitive.Content>;\n\nexport const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(\n ({ className = \"\", children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={[contentStyles, className].filter(Boolean).join(\" \")}\n position={position}\n sideOffset={4}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={[\n viewportStyles,\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n);\nSelectContent.displayName = \"SelectContent\";\n\nconst itemStyles = [\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-3 pr-8\",\n \"text-body text-foreground outline-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:text-foreground-muted\",\n \"data-[highlighted]:bg-background-subtle\",\n].join(\" \");\n\nexport type SelectItemProps = ComponentPropsWithoutRef<typeof SelectPrimitive.Item>;\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(\n ({ className = \"\", children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={[itemStyles, className].filter(Boolean).join(\" \")}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n);\nSelectItem.displayName = \"SelectItem\";\n","import {\n createContext,\n useContext,\n type HTMLAttributes,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n} from \"react\";\n\nexport type TableHeaderVariant = \"default\" | \"primary\" | \"secondary\" | \"muted\";\n\nconst TableHeaderVariantContext = createContext<TableHeaderVariant | null>(null);\n\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {}\nexport interface TableHeaderProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Header background and automatic header cell text color */\n variant?: TableHeaderVariant;\n}\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {}\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {}\nexport interface TableHeadProps extends ThHTMLAttributes<HTMLTableCellElement> {}\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {}\n\nexport function Table({ className = \"\", children, ...props }: TableProps) {\n return (\n <div className=\"w-full overflow-auto\">\n <table\n className={`w-full border-collapse text-body ${className}`}\n {...props}\n >\n {children}\n </table>\n </div>\n );\n}\n\nconst headerTheadClasses: Record<TableHeaderVariant, string> = {\n default: \"bg-background-muted\",\n /* primary-700 (#A8503A) + white text ≥4.5:1 for small semibold header copy (primary-500 fails AA) */\n primary: \"bg-primary-700\",\n secondary: \"bg-background-subtle\",\n muted: \"bg-background-page\",\n};\n\nconst headerHeadTextClasses: Record<TableHeaderVariant, string> = {\n default: \"text-foreground\",\n primary: \"text-foreground-on-primary\",\n secondary: \"text-foreground\",\n muted: \"text-foreground-muted\",\n};\n\nconst headerRowClasses: Record<TableHeaderVariant, string> = {\n default: \"border-border hover:bg-background-subtle\",\n /* Avoid lightening into primary-600 on hover — white text would drop below AA */\n primary: \"border-white/20 hover:ring-1 hover:ring-inset hover:ring-white/35\",\n secondary: \"border-border hover:bg-background-muted\",\n muted: \"border-border-muted hover:bg-background-muted\",\n};\n\nexport function TableHeader({\n className = \"\",\n children,\n variant = \"default\",\n ...props\n}: TableHeaderProps) {\n const theadBase = headerTheadClasses[variant];\n return (\n <thead className={`${theadBase} ${className}`.trim()} {...props}>\n <TableHeaderVariantContext.Provider value={variant}>\n {children}\n </TableHeaderVariantContext.Provider>\n </thead>\n );\n}\n\nexport function TableBody({ className = \"\", children, ...props }: TableBodyProps) {\n return (\n <tbody className={`divide-y divide-border ${className}`} {...props}>\n {children}\n </tbody>\n );\n}\n\nexport function TableRow({ className = \"\", children, ...props }: TableRowProps) {\n const headerVariant = useContext(TableHeaderVariantContext);\n const rowStyles = headerVariant\n ? `border-b ${headerRowClasses[headerVariant]}`\n : \"border-b border-border hover:bg-background-muted\";\n\n return (\n <tr className={`${rowStyles} transition-colors ${className}`.trim()} {...props}>\n {children}\n </tr>\n );\n}\n\nexport function TableHead({ className = \"\", children, ...props }: TableHeadProps) {\n const headerVariant = useContext(TableHeaderVariantContext);\n const textColor = headerVariant\n ? headerHeadTextClasses[headerVariant]\n : \"text-foreground\";\n\n return (\n <th\n className={`px-4 py-3 text-left text-body-sm font-semibold ${textColor} ${className}`.trim()}\n {...props}\n >\n {children}\n </th>\n );\n}\n\nexport function TableCell({ className = \"\", children, ...props }: TableCellProps) {\n return (\n <td\n className={`px-4 py-3 text-foreground ${className}`}\n {...props}\n >\n {children}\n </td>\n );\n}\n","import {\n createContext,\n useContext,\n useState,\n type ReactNode,\n type HTMLAttributes,\n} from \"react\";\n\ninterface TabsContextValue {\n activeTab: string;\n setActiveTab: (value: string) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext() {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within a Tabs provider\");\n }\n return context;\n}\n\nexport interface TabsProps extends HTMLAttributes<HTMLDivElement> {\n /** Default active tab value */\n defaultValue: string;\n /** Controlled active tab value */\n value?: string;\n /** Callback when tab changes */\n onValueChange?: (value: string) => void;\n children: ReactNode;\n}\n\nexport interface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport interface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n /** Value that identifies this tab */\n value: string;\n children: ReactNode;\n}\n\nexport interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {\n /** Value that identifies this content */\n value: string;\n children: ReactNode;\n}\n\nexport function Tabs({\n defaultValue,\n value,\n onValueChange,\n children,\n className = \"\",\n ...props\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const activeTab = value ?? internalValue;\n\n const setActiveTab = (newValue: string) => {\n if (!value) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n };\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab }}>\n <div className={className} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport function TabsList({ children, className = \"\", ...props }: TabsListProps) {\n return (\n <div\n role=\"tablist\"\n className={`flex border-b border-border ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function TabsTrigger({\n value,\n children,\n className = \"\",\n ...props\n}: TabsTriggerProps) {\n const { activeTab, setActiveTab } = useTabsContext();\n const isActive = activeTab === value;\n\n const baseStyles = [\n \"px-4 py-2\",\n \"text-body font-medium\",\n \"border-b-2 -mb-px\",\n \"transition-colors duration-fast\",\n \"focus:outline-none focus-visible:shadow-focus\",\n ].join(\" \");\n\n const stateStyles = isActive\n ? \"border-primary-500 text-primary-600\"\n : \"border-transparent text-foreground-muted hover:text-foreground hover:border-border-strong\";\n\n return (\n <button\n role=\"tab\"\n aria-selected={isActive}\n onClick={() => setActiveTab(value)}\n className={`${baseStyles} ${stateStyles} ${className}`}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function TabsContent({\n value,\n children,\n className = \"\",\n ...props\n}: TabsContentProps) {\n const { activeTab } = useTabsContext();\n\n if (activeTab !== value) {\n return null;\n }\n\n return (\n <div role=\"tabpanel\" className={`py-4 ${className}`} {...props}>\n {children}\n </div>\n );\n}\n","import { forwardRef, type InputHTMLAttributes } from \"react\";\n\nexport interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Label text */\n label?: string;\n}\n\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n ({ label, disabled, checked, className = \"\", id, ...props }, ref) => {\n const toggleId = id || props.name;\n\n const trackStyles = [\n \"relative inline-flex\",\n \"w-10 h-6\",\n \"rounded-full\",\n \"transition-colors duration-fast\",\n \"cursor-pointer\",\n checked ? \"bg-primary-500\" : \"bg-background-subtle\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"\",\n ].join(\" \");\n\n const thumbStyles = [\n \"absolute top-1 left-1\",\n \"w-4 h-4\",\n \"bg-background-elevated rounded-full\",\n \"shadow-sm\",\n \"transition-transform duration-fast\",\n checked ? \"translate-x-4\" : \"translate-x-0\",\n ].join(\" \");\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n <label htmlFor={toggleId} className={trackStyles}>\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={toggleId}\n disabled={disabled}\n checked={checked}\n className=\"sr-only\"\n aria-checked={checked}\n {...props}\n />\n <span className={thumbStyles} />\n </label>\n {label && (\n <label\n htmlFor={toggleId}\n className={`text-body text-foreground select-none ${\n disabled ? \"text-foreground-muted cursor-not-allowed\" : \"cursor-pointer\"\n }`}\n >\n {label}\n </label>\n )}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n","// Components\nexport * from \"./Alert\";\nexport * from \"./Avatar\";\nexport * from \"./Badge\";\nexport * from \"./Button\";\nexport * from \"./Card\";\nexport * from \"./Checkbox\";\nexport * from \"./Input\";\nexport * from \"./Label\";\nexport * from \"./Progress\";\nexport * from \"./Select\";\nexport * from \"./Table\";\nexport * from \"./Tabs\";\nexport * from \"./Toggle\";\n\n// Re-export tokens for convenience\nexport * from \"@akanaka-design/tokens\";\n"],"mappings":"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","names":["jsx","jsx","variantStyles","jsx","variantStyles","sizeStyles","jsx","variantStyles","jsx","jsxs","forwardRef","jsx","jsxs","forwardRef","useId","jsx","jsxs","sizeStyles","forwardRef","jsx","jsxs","sizeStyles","jsx","jsxs","forwardRef","jsx","jsxs","createContext","useContext","jsx","createContext","useContext","jsx","forwardRef","jsx","jsxs"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@akanaka-design/components",
|
|
3
|
+
"version": "0.6.2",
|
|
4
|
+
"description": "React components for the design system",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./styles.css": "./dist/styles.css",
|
|
15
|
+
"./tailwind.config": "./tailwind.config.ts"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"tailwind.config.ts"
|
|
20
|
+
],
|
|
21
|
+
"sideEffects": [
|
|
22
|
+
"*.css"
|
|
23
|
+
],
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/YOUR_ORG/design-system.git",
|
|
30
|
+
"directory": "packages/components"
|
|
31
|
+
},
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"keywords": [
|
|
34
|
+
"react",
|
|
35
|
+
"components",
|
|
36
|
+
"design-system",
|
|
37
|
+
"tailwindcss"
|
|
38
|
+
],
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@radix-ui/react-select": "^2.1.6",
|
|
41
|
+
"@akanaka-design/tokens": "0.6.2"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
45
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@testing-library/jest-dom": "^6.6.0",
|
|
49
|
+
"@testing-library/react": "^16.0.0",
|
|
50
|
+
"@testing-library/user-event": "^14.5.0",
|
|
51
|
+
"@types/jest-axe": "^3.5.9",
|
|
52
|
+
"@types/react": "^19.0.0",
|
|
53
|
+
"@types/react-dom": "^19.0.0",
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
55
|
+
"@typescript-eslint/parser": "^8.0.0",
|
|
56
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
57
|
+
"autoprefixer": "^10.4.0",
|
|
58
|
+
"eslint": "^9.0.0",
|
|
59
|
+
"eslint-plugin-react": "^7.35.0",
|
|
60
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
61
|
+
"jest-axe": "^10.0.0",
|
|
62
|
+
"jsdom": "^25.0.0",
|
|
63
|
+
"postcss": "^8.4.0",
|
|
64
|
+
"react": "^19.0.0",
|
|
65
|
+
"react-dom": "^19.0.0",
|
|
66
|
+
"tailwindcss": "^3.4.0",
|
|
67
|
+
"tsup": "^8.4.0",
|
|
68
|
+
"typescript": "^5.7.0",
|
|
69
|
+
"vitest": "^2.1.0"
|
|
70
|
+
},
|
|
71
|
+
"scripts": {
|
|
72
|
+
"build": "tsup",
|
|
73
|
+
"dev": "tsup --watch",
|
|
74
|
+
"lint": "ESLINT_USE_FLAT_CONFIG=false eslint .",
|
|
75
|
+
"lint:fix": "ESLINT_USE_FLAT_CONFIG=false eslint . --fix",
|
|
76
|
+
"test": "vitest run",
|
|
77
|
+
"test:watch": "vitest"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { Config } from "tailwindcss";
|
|
2
|
+
|
|
3
|
+
const config: Config = {
|
|
4
|
+
content: ["./src/**/*.{ts,tsx}"],
|
|
5
|
+
darkMode: "class",
|
|
6
|
+
theme: {
|
|
7
|
+
extend: {
|
|
8
|
+
colors: {
|
|
9
|
+
primary: {
|
|
10
|
+
50: "var(--color-primary-50)",
|
|
11
|
+
100: "var(--color-primary-100)",
|
|
12
|
+
200: "var(--color-primary-200)",
|
|
13
|
+
500: "var(--color-primary-500)",
|
|
14
|
+
600: "var(--color-primary-600)",
|
|
15
|
+
700: "var(--color-primary-700)",
|
|
16
|
+
},
|
|
17
|
+
neutral: {
|
|
18
|
+
50: "var(--color-neutral-50)",
|
|
19
|
+
100: "var(--color-neutral-100)",
|
|
20
|
+
200: "var(--color-neutral-200)",
|
|
21
|
+
300: "var(--color-neutral-300)",
|
|
22
|
+
400: "var(--color-neutral-400)",
|
|
23
|
+
500: "var(--color-neutral-500)",
|
|
24
|
+
600: "var(--color-neutral-600)",
|
|
25
|
+
700: "var(--color-neutral-700)",
|
|
26
|
+
900: "var(--color-neutral-900)",
|
|
27
|
+
},
|
|
28
|
+
success: "var(--color-success)",
|
|
29
|
+
warning: "var(--color-warning)",
|
|
30
|
+
error: "var(--color-error)",
|
|
31
|
+
info: "var(--color-info)",
|
|
32
|
+
// Semantic — Backgrounds
|
|
33
|
+
// DEFAULT → bg-background; default → bg-background-default (same token; both names are used in the codebase)
|
|
34
|
+
background: {
|
|
35
|
+
DEFAULT: "var(--background-default)",
|
|
36
|
+
default: "var(--background-default)",
|
|
37
|
+
page: "var(--background-page)",
|
|
38
|
+
muted: "var(--background-muted)",
|
|
39
|
+
subtle: "var(--background-subtle)",
|
|
40
|
+
elevated: "var(--background-elevated)",
|
|
41
|
+
overlay: "var(--background-overlay)",
|
|
42
|
+
primary: "var(--background-primary)",
|
|
43
|
+
"primary-subtle": "var(--background-primary-subtle)",
|
|
44
|
+
success: "var(--background-success)",
|
|
45
|
+
warning: "var(--background-warning)",
|
|
46
|
+
error: "var(--background-error)",
|
|
47
|
+
info: "var(--background-info)",
|
|
48
|
+
nav: "var(--background-nav)",
|
|
49
|
+
"nav-hover": "var(--background-nav-hover)",
|
|
50
|
+
"nav-active": "var(--background-nav-active)",
|
|
51
|
+
},
|
|
52
|
+
// Semantic — Foregrounds
|
|
53
|
+
foreground: {
|
|
54
|
+
DEFAULT: "var(--foreground-default)",
|
|
55
|
+
muted: "var(--foreground-muted)",
|
|
56
|
+
subtle: "var(--foreground-subtle)",
|
|
57
|
+
primary: "var(--foreground-primary)",
|
|
58
|
+
success: "var(--foreground-success)",
|
|
59
|
+
warning: "var(--foreground-warning)",
|
|
60
|
+
error: "var(--foreground-error)",
|
|
61
|
+
info: "var(--foreground-info)",
|
|
62
|
+
"on-primary": "var(--foreground-on-primary)",
|
|
63
|
+
nav: "var(--foreground-nav)",
|
|
64
|
+
"nav-hover": "var(--foreground-nav-hover)",
|
|
65
|
+
"nav-active": "var(--foreground-nav-active)",
|
|
66
|
+
},
|
|
67
|
+
// Semantic — Borders
|
|
68
|
+
border: {
|
|
69
|
+
DEFAULT: "var(--border-default)",
|
|
70
|
+
muted: "var(--border-muted)",
|
|
71
|
+
strong: "var(--border-strong)",
|
|
72
|
+
primary: "var(--border-primary)",
|
|
73
|
+
error: "var(--border-error)",
|
|
74
|
+
success: "var(--border-success)",
|
|
75
|
+
warning: "var(--border-warning)",
|
|
76
|
+
info: "var(--border-info)",
|
|
77
|
+
"error-subtle": "var(--border-error-subtle)",
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
fontFamily: {
|
|
81
|
+
sans: "var(--font-sans)",
|
|
82
|
+
mono: "var(--font-mono)",
|
|
83
|
+
},
|
|
84
|
+
fontSize: {
|
|
85
|
+
caption: "var(--font-size-caption)",
|
|
86
|
+
overline: "var(--font-size-overline)",
|
|
87
|
+
"body-sm": "var(--font-size-body-sm)",
|
|
88
|
+
body: "var(--font-size-body)",
|
|
89
|
+
h3: "var(--font-size-h3)",
|
|
90
|
+
h2: "var(--font-size-h2)",
|
|
91
|
+
h1: "var(--font-size-h1)",
|
|
92
|
+
display: "var(--font-size-display)",
|
|
93
|
+
},
|
|
94
|
+
spacing: {
|
|
95
|
+
1: "var(--spacing-1)",
|
|
96
|
+
2: "var(--spacing-2)",
|
|
97
|
+
3: "var(--spacing-3)",
|
|
98
|
+
4: "var(--spacing-4)",
|
|
99
|
+
6: "var(--spacing-6)",
|
|
100
|
+
8: "var(--spacing-8)",
|
|
101
|
+
12: "var(--spacing-12)",
|
|
102
|
+
},
|
|
103
|
+
borderRadius: {
|
|
104
|
+
sm: "var(--radius-sm)",
|
|
105
|
+
md: "var(--radius-md)",
|
|
106
|
+
lg: "var(--radius-lg)",
|
|
107
|
+
full: "var(--radius-full)",
|
|
108
|
+
},
|
|
109
|
+
boxShadow: {
|
|
110
|
+
sm: "var(--shadow-sm)",
|
|
111
|
+
md: "var(--shadow-md)",
|
|
112
|
+
lg: "var(--shadow-lg)",
|
|
113
|
+
focus: "var(--shadow-focus)",
|
|
114
|
+
},
|
|
115
|
+
transitionDuration: {
|
|
116
|
+
fast: "150ms",
|
|
117
|
+
base: "200ms",
|
|
118
|
+
slow: "300ms",
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
plugins: [],
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export default config;
|