@abhir9/pd-design-system 0.1.18 → 0.1.19

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/types.ts","../src/theme/config.ts","../src/adapters/shadcn/utils.ts","../src/primitives/ButtonPrimitive.tsx","../src/utils/icons.ts","../src/adapters/shadcn/Button.tsx","../src/adapters/shadcn/ButtonGroup.tsx","../src/adapters/index.ts","../src/components/Button.tsx","../src/components/ButtonGroup.tsx","../src/tokens/base.ts","../src/tokens/semantic.ts","../src/theme/theme.ts","../src/theme/ThemeProvider.tsx","../src/tokens/index.ts","../src/utils/accessibility.ts"],"names":["twMerge","clsx","forwardRef","React","jsx","LucideIcons","cva","jsxs","Fragment","Loader2","useMemo","createContext","useState","useEffect","useContext"],"mappings":"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","file":"index.cjs","sourcesContent":["// Single source of truth: define arrays first, then derive types from them\nexport const THEME_MODES = ['light', 'dark', 'system'] as const;\nexport const THEME_NAMES = ['base', 'brand'] as const;\nexport const ADAPTER_TYPES = ['shadcn', 'material'] as const;\n\n// Derive types from arrays to ensure they stay in sync\nexport type ThemeMode = typeof THEME_MODES[number];\nexport type ThemeName = typeof THEME_NAMES[number];\nexport type AdapterType = typeof ADAPTER_TYPES[number];\nexport const DEFAULT_MODE: ThemeMode = 'system';\nexport const [DEFAULT_THEME] = THEME_NAMES;\nexport const [DEFAULT_ADAPTER] = ADAPTER_TYPES;\n\nexport interface DesignSystemConfig {\n adapter: AdapterType;\n theme: ThemeName;\n mode: ThemeMode;\n}\n\nexport interface Theme {\n mode: ThemeMode;\n name: ThemeName;\n cssVariables: Record<string, string>;\n}\n","import type { DesignSystemConfig, AdapterType, ThemeName, ThemeMode } from './types';\nimport { DEFAULT_ADAPTER, DEFAULT_THEME, DEFAULT_MODE } from './types';\n\nlet globalConfig: DesignSystemConfig = {\n adapter: DEFAULT_ADAPTER,\n theme: DEFAULT_THEME,\n mode: DEFAULT_MODE,\n};\n\nexport function setDesignSystemConfig(config: Partial<DesignSystemConfig>): void {\n globalConfig = { ...globalConfig, ...config };\n}\n\nexport function getDesignSystemConfig(): DesignSystemConfig {\n return { ...globalConfig };\n}\n\nexport function getAdapter(): AdapterType {\n return globalConfig.adapter;\n}\n\nexport function getThemeName(): ThemeName {\n return globalConfig.theme;\n}\n\nexport function getThemeMode(): ThemeMode {\n return globalConfig.mode;\n}\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React, { forwardRef } from 'react';\nimport type { ButtonType } from '../tokens/semantic';\n\nexport interface ButtonPrimitiveProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n asChild?: boolean;\n type?: ButtonType;\n}\n\nexport const ButtonPrimitive = forwardRef<HTMLButtonElement, ButtonPrimitiveProps>(\n ({ asChild = false, type = 'button', children, ...props }, ref) => {\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ...props,\n ref,\n type,\n } as React.HTMLAttributes<HTMLElement>);\n }\n \n return (\n <button\n ref={ref}\n type={type}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButtonPrimitive.displayName = 'ButtonPrimitive';\n","/**\n * Icon Utility\n * \n * Dynamically loads icons from lucide-react by name.\n * Handles invalid icon names gracefully.\n */\n\nimport * as LucideIcons from 'lucide-react';\nimport React from 'react';\n\n// Type for valid lucide-react icon names\nexport type LucideIconName = keyof typeof LucideIcons;\n\n// Cache for icon components to avoid repeated lookups\n// Using React.ComponentType<any> here because lucide-react icons have specific prop requirements\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst iconCache = new Map<string, React.ComponentType<any>>();\n// Track which icons we've logged (to avoid spam)\nconst loggedIcons = new Set<string>();\n\n/**\n * Get an icon component from lucide-react by name\n * \n * @param iconName - Name of the icon (e.g., 'Download', 'Trash2', 'Plus')\n * @returns Icon component or null if icon doesn't exist\n * \n * @example\n * ```tsx\n * const Icon = getIcon('Download');\n * if (Icon) {\n * return <Icon className=\"h-4 w-4\" />;\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getIcon(iconName: string | undefined | null): React.ComponentType<any> | null {\n if (!iconName || typeof iconName !== 'string') {\n return null;\n }\n\n // Check cache first\n if (iconCache.has(iconName)) {\n return iconCache.get(iconName) || null;\n }\n\n // Try to get icon from lucide-react\n // Handle different naming conventions:\n // 1. Exact match (e.g., \"Download\")\n // 2. PascalCase (e.g., \"download\" -> \"Download\")\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let IconComponent: React.ComponentType<any> | null = null;\n\n // Try exact match first\n if (iconName in LucideIcons) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n IconComponent = (LucideIcons as unknown as Record<string, React.ComponentType<any>>)[iconName];\n } else {\n // Try PascalCase conversion\n const pascalCaseName = iconName.charAt(0).toUpperCase() + iconName.slice(1);\n if (pascalCaseName in LucideIcons) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n IconComponent = (LucideIcons as unknown as Record<string, React.ComponentType<any>>)[pascalCaseName];\n }\n }\n\n // If we found something, verify it's usable as a React component\n // React components can be functions or objects (memo, forwardRef, etc.)\n if (IconComponent) {\n // Verify it's a valid component - check if it's callable or has React component properties\n const isValidComponent = \n typeof IconComponent === 'function' || \n (typeof IconComponent === 'object' && IconComponent !== null);\n \n if (isValidComponent) {\n // Cache and return the icon component\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCache.set(iconName, IconComponent as React.ComponentType<any>);\n \n // Debug logging in development\n if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined') {\n // Only log once per icon to avoid spam\n if (!loggedIcons.has(iconName)) {\n console.debug(`[pd-design] Icon \"${iconName}\" found and cached`);\n loggedIcons.add(iconName);\n }\n }\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return IconComponent as React.ComponentType<any>;\n }\n }\n\n // Icon not found - return null (graceful handling)\n // Only warn in development to avoid console noise\n if (process.env.NODE_ENV !== 'production') {\n const availableIcons = Object.keys(LucideIcons)\n .filter(k => {\n const icon = (LucideIcons as Record<string, unknown>)[k];\n return !k.includes('Icon') && icon && (typeof icon === 'function' || typeof icon === 'object');\n })\n .slice(0, 10);\n console.warn(`[pd-design] Icon \"${iconName}\" not found in lucide-react. Available icons: ${availableIcons.join(', ')}...`);\n }\n return null;\n}\n\n/**\n * Render an icon component with proper sizing\n * \n * @param iconName - Name of the icon\n * @param size - Size class for the icon\n * @param className - Additional classes\n * @returns Rendered icon or null\n */\nexport function renderIcon(\n iconName: string | undefined | null,\n size: string = 'h-4 w-4',\n className?: string\n): React.ReactElement | null {\n const IconComponent = getIcon(iconName);\n \n if (!IconComponent) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return React.createElement(IconComponent as React.ComponentType<any>, { \n className: `${size} ${className || ''}`.trim() \n }) as React.ReactElement;\n}\n\n/**\n * Check if an icon name exists in lucide-react\n * \n * @param iconName - Name of the icon to check\n * @returns true if icon exists, false otherwise\n */\nexport function iconExists(iconName: string | undefined | null): boolean {\n return getIcon(iconName) !== null;\n}\n\n/**\n * Get list of available icon names (for autocomplete/validation)\n * Note: This returns all exported names from lucide-react\n */\nexport function getAvailableIconNames(): string[] {\n return Object.keys(LucideIcons).filter(\n (name) => {\n const icon = (LucideIcons as Record<string, unknown>)[name];\n return icon && (typeof icon === 'function' || typeof icon === 'object') && !name.includes('Icon');\n }\n );\n}\n","import React, { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { Loader2 } from 'lucide-react';\nimport { cn } from './utils';\nimport type { ButtonAdapterProps } from '../types';\nimport type { Size } from '../../tokens/semantic';\nimport { ButtonPrimitive } from '../../primitives/ButtonPrimitive';\nimport { getIcon } from '../../utils/icons';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-blue)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n primary: '',\n secondary: '',\n ghost: '',\n outline: 'border',\n },\n intent: {\n primary: '',\n success: '',\n warning: '',\n danger: '',\n neutral: '',\n },\n size: {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-base',\n lg: 'h-12 px-6 text-lg',\n },\n },\n compoundVariants: [\n // Primary variant - using new semantic tokens\n {\n variant: 'primary',\n intent: 'primary',\n class: 'bg-[var(--background-invert)] text-[var(--content-on-color)] hover:bg-[var(--background-invert-light)] active:bg-[var(--background-invert)] disabled:bg-[var(--background-secondary)] disabled:text-[var(--content-subtle)]',\n },\n {\n variant: 'primary',\n intent: 'success',\n class: 'bg-[var(--background-green)] text-[var(--content-green)] hover:bg-[var(--background-green-on-hover)] active:bg-[var(--background-green)] border-[var(--border-green)]',\n },\n {\n variant: 'primary',\n intent: 'warning',\n class: 'bg-[var(--background-yellow)] text-[var(--content-yellow)] hover:bg-[var(--background-yellow-on-hover)] active:bg-[var(--background-yellow)] border-[var(--border-yellow)]',\n },\n {\n variant: 'primary',\n intent: 'danger',\n class: 'bg-[var(--background-red)] text-[var(--content-red)] hover:bg-[var(--background-red-on-hover)] hover:text-[var(--content-red-on-hover)] active:bg-[var(--background-red)] border-[var(--border-red)] disabled:bg-[var(--background-red)] disabled:text-[var(--content-subtle)]',\n },\n {\n variant: 'primary',\n intent: 'neutral',\n class: 'bg-[var(--background-secondary)] text-[var(--content-primary)] hover:bg-[var(--background-low-on-hover)] active:bg-[var(--background-tertiary)] border-[var(--border-primary)]',\n },\n // Secondary variant - using new semantic tokens\n {\n variant: 'secondary',\n intent: 'primary',\n class: 'bg-[var(--background-secondary)] text-[var(--content-primary)] hover:bg-[var(--background-low-on-hover)] active:bg-[var(--background-secondary)] border border-[var(--border-secondary)] disabled:bg-[var(--background-tertiary)] disabled:text-[var(--content-subtle)] disabled:border-[var(--border-subtle)]',\n },\n {\n variant: 'secondary',\n intent: 'success',\n class: 'bg-[var(--background-green)] text-[var(--content-green)] hover:bg-[var(--background-green-on-hover)] active:bg-[var(--background-green)] border-[var(--border-green-subtle)]',\n },\n {\n variant: 'secondary',\n intent: 'warning',\n class: 'bg-[var(--background-yellow)] text-[var(--content-yellow)] hover:bg-[var(--background-yellow-on-hover)] active:bg-[var(--background-yellow)] border-[var(--border-yellow-subtle)]',\n },\n {\n variant: 'secondary',\n intent: 'danger',\n class: 'bg-[var(--background-red)] text-[var(--content-red)] hover:bg-[var(--background-red-on-hover)] hover:text-[var(--content-red-on-hover)] active:bg-[var(--background-red)] border border-[var(--border-red)]',\n },\n {\n variant: 'secondary',\n intent: 'neutral',\n class: 'bg-[var(--background-low)] text-[var(--content-primary)] hover:bg-[var(--background-low-on-hover)] active:bg-[var(--background-tertiary)] border-[var(--border-subtle)]',\n },\n // Ghost variant - using new semantic tokens\n {\n variant: 'ghost',\n intent: 'primary',\n class: 'text-[var(--content-primary)] hover:bg-[var(--background-low)] hover:text-[var(--content-primary)] disabled:text-[var(--content-subtle)]',\n },\n {\n variant: 'ghost',\n intent: 'success',\n class: 'hover:bg-[var(--background-green)] text-[var(--content-green)] hover:text-[var(--content-green-on-hover)]',\n },\n {\n variant: 'ghost',\n intent: 'warning',\n class: 'hover:bg-[var(--background-yellow)] text-[var(--content-yellow)] hover:text-[var(--content-yellow-on-hover)]',\n },\n {\n variant: 'ghost',\n intent: 'danger',\n class: 'text-[var(--content-red)] hover:bg-[var(--background-red)] hover:text-[var(--content-red-on-hover)]',\n },\n {\n variant: 'ghost',\n intent: 'neutral',\n class: 'hover:bg-[var(--background-low)] text-[var(--content-secondary)] hover:text-[var(--content-primary)]',\n },\n // Outline variant - using new semantic tokens\n {\n variant: 'outline',\n intent: 'primary',\n class: 'border-[var(--border-primary)] text-[var(--content-primary)] hover:bg-[var(--background-low)] hover:border-[var(--border-secondary)]',\n },\n {\n variant: 'outline',\n intent: 'success',\n class: 'border-[var(--border-green)] text-[var(--content-green)] hover:bg-[var(--background-green)] hover:border-[var(--border-green-on-hover)]',\n },\n {\n variant: 'outline',\n intent: 'warning',\n class: 'border-[var(--border-yellow)] text-[var(--content-yellow)] hover:bg-[var(--background-yellow)] hover:border-[var(--border-yellow-on-hover)]',\n },\n {\n variant: 'outline',\n intent: 'danger',\n class: 'border border-[var(--border-red)] text-[var(--content-red)] hover:bg-[var(--background-red)] hover:text-[var(--content-red-on-hover)] hover:border-[var(--border-red-on-hover)]',\n },\n {\n variant: 'outline',\n intent: 'neutral',\n class: 'border-[var(--border-primary)] text-[var(--content-primary)] hover:bg-[var(--background-low)] hover:border-[var(--border-secondary)]',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n intent: 'primary',\n size: 'md',\n },\n }\n);\n\nexport const ShadcnButton = forwardRef<HTMLButtonElement, ButtonAdapterProps>(\n ({ \n variant = 'primary', \n intent = 'primary', \n size = 'md', \n disabled, \n loading, \n fullWidth,\n startIcon,\n endIcon,\n loadingText,\n asChild,\n href,\n target,\n children, \n ...props \n }, ref) => {\n\n // Build className from variants - no arbitrary classes allowed\n const buttonClasses = cn(\n buttonVariants({ variant, intent, size }),\n fullWidth && 'w-full'\n );\n\n // Handle link buttons\n if (href) {\n return (\n <ButtonPrimitive\n asChild={true}\n {...props}\n >\n <a\n href={href}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n className={buttonClasses}\n aria-disabled={disabled || loading}\n style={{ pointerEvents: disabled || loading ? 'none' : undefined }}\n >\n {renderButtonContent({ loading, loadingText, startIcon, endIcon, children, size })}\n </a>\n </ButtonPrimitive>\n );\n }\n\n return (\n <ButtonPrimitive\n ref={ref}\n disabled={disabled || loading}\n className={buttonClasses}\n asChild={asChild}\n {...props}\n >\n {renderButtonContent({ loading, loadingText, startIcon, endIcon, children, size })}\n </ButtonPrimitive>\n );\n }\n);\n\nfunction renderButtonContent({\n loading,\n loadingText,\n startIcon,\n endIcon,\n children,\n size,\n}: {\n loading?: boolean;\n loadingText?: string;\n startIcon?: string;\n endIcon?: string;\n children: React.ReactNode;\n size?: Size;\n}) {\n // Icon sizes based on button size\n const iconSizeClass = size === 'sm' ? 'h-3 w-3' : size === 'lg' ? 'h-5 w-5' : 'h-4 w-4';\n const spinnerSizeClass = size === 'sm' ? 'h-3 w-3' : size === 'lg' ? 'h-5 w-5' : 'h-4 w-4';\n const iconSpacing = size === 'sm' ? 'mr-1.5' : size === 'lg' ? 'mr-2.5' : 'mr-2';\n const iconSpacingEnd = size === 'sm' ? 'ml-1.5' : size === 'lg' ? 'ml-2.5' : 'ml-2';\n\n if (loading) {\n return (\n <>\n <Loader2 \n aria-hidden=\"true\" \n className={`${spinnerSizeClass} ${iconSpacing} animate-spin text-[var(--content-secondary)]`} \n />\n <span className=\"text-[var(--content-secondary)]\">\n {loadingText || children}\n </span>\n <span className=\"sr-only\">\n {loadingText ? `Loading: ${loadingText}` : 'Loading'}\n </span>\n </>\n );\n }\n\n // Get icon components from lucide-react by name\n const StartIconComponent = startIcon ? getIcon(startIcon) : null;\n const EndIconComponent = endIcon ? getIcon(endIcon) : null;\n\n // For icon-only buttons (no children), don't apply spacing\n const hasChildren = Boolean(children);\n const startIconSpacing = hasChildren ? iconSpacing : '';\n const endIconSpacing = hasChildren ? iconSpacingEnd : '';\n\n return (\n <>\n {StartIconComponent && (\n <span className={`${startIconSpacing} inline-flex items-center justify-center`}>\n {React.createElement(StartIconComponent, { className: iconSizeClass })}\n </span>\n )}\n {children}\n {EndIconComponent && (\n <span className={`${endIconSpacing} inline-flex items-center justify-center`}>\n {React.createElement(EndIconComponent, { className: iconSizeClass })}\n </span>\n )}\n </>\n );\n}\n\nShadcnButton.displayName = 'ShadcnButton';\n","import React, { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from './utils';\nimport type { ButtonGroupAdapterProps } from '../types';\n\nconst buttonGroupVariants = cva(\n 'inline-flex',\n {\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n },\n gap: {\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n },\n fullWidth: {\n true: 'w-full',\n false: '',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n gap: 'md',\n fullWidth: false,\n },\n }\n);\n\nexport const ShadcnButtonGroup = forwardRef<HTMLDivElement, ButtonGroupAdapterProps>(\n ({ \n orientation = 'horizontal',\n gap = 'md',\n fullWidth = false,\n children,\n className,\n ...props \n }, ref) => {\n const groupClasses = cn(\n buttonGroupVariants({ orientation, gap, fullWidth }),\n className\n );\n\n return (\n <div\n ref={ref}\n className={groupClasses}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nShadcnButtonGroup.displayName = 'ShadcnButtonGroup';\n","import { getAdapter } from '../theme/config';\nimport { ADAPTER_TYPES } from '../theme/types';\nimport * as ShadcnAdapter from './shadcn';\n// Material/Any other adapter will be imported when the adapter is installed\n// import * as MaterialAdapter from './material';\n\nconst [SHADCN_ADAPTER, MATERIAL_ADAPTER] = ADAPTER_TYPES;\n\nexport function getButtonAdapter() {\n const adapter = getAdapter();\n \n switch (adapter) {\n case SHADCN_ADAPTER:\n return ShadcnAdapter.ShadcnButton;\n case MATERIAL_ADAPTER:\n // Material adapter implementation available in src/adapters/material/Button.tsx\n // Uncomment when Material UI is installed:\n // return MaterialAdapter.MaterialButton;\n console.warn('Material adapter not yet enabled. Install @mui/material to use it.');\n return ShadcnAdapter.ShadcnButton;\n default:\n return ShadcnAdapter.ShadcnButton;\n }\n}\n\n// export function getInputAdapter() {\n// const adapter = getAdapter();\n \n// switch (adapter) {\n// case SHADCN_ADAPTER:\n// return ShadcnAdapter.ShadcnInput;\n// case MATERIAL_ADAPTER:\n// // Material adapter would go here\n// return ShadcnAdapter.ShadcnInput;\n// default:\n// return ShadcnAdapter.ShadcnInput;\n// }\n// }\n\n// export function getCardAdapter() {\n// const adapter = getAdapter();\n \n// switch (adapter) {\n// case SHADCN_ADAPTER:\n// return ShadcnAdapter.Card;\n// case MATERIAL_ADAPTER:\n// // Material adapter would go here\n// return ShadcnAdapter.Card;\n// default:\n// return ShadcnAdapter.Card;\n// }\n// }\n\nexport function getButtonGroupAdapter() {\n const adapter = getAdapter();\n \n switch (adapter) {\n case SHADCN_ADAPTER:\n return ShadcnAdapter.ShadcnButtonGroup;\n case MATERIAL_ADAPTER:\n // Material adapter would go here\n return ShadcnAdapter.ShadcnButtonGroup;\n default:\n return ShadcnAdapter.ShadcnButtonGroup;\n }\n}\n","import React, { forwardRef, useMemo } from 'react';\nimport { getButtonAdapter } from '../adapters';\nimport type { Intent, Variant, Size, ButtonType } from '../tokens/semantic';\n\nexport type { Intent, Variant, Size, ButtonType } from '../tokens/semantic';\n\nexport interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'className'> {\n variant?: Variant;\n intent?: Intent;\n size?: Size;\n loading?: boolean;\n fullWidth?: boolean;\n startIcon?: string;\n endIcon?: string;\n loadingText?: string;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n type?: ButtonType;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ \n variant = 'primary', \n intent = 'primary', \n size = 'md', \n loading, \n disabled,\n fullWidth,\n startIcon,\n endIcon,\n loadingText,\n href,\n target,\n children,\n ...props \n }, ref) => {\n const AdapterButton = getButtonAdapter();\n \n // Remove className if passed - we don't allow arbitrary classes\n const { className, ...restProps } = props as Omit<ButtonProps, 'variant' | 'intent' | 'size' | 'loading' | 'fullWidth' | 'startIcon' | 'endIcon' | 'loadingText' | 'href' | 'target' | 'type'> & { className?: string };\n if (className) {\n console.warn('Button component does not accept className prop. Use variant, intent, size, and other props for styling.');\n }\n \n // Apply sensible accessibility defaults based on component state\n const accessibilityProps = useMemo(() => {\n const defaults: Record<string, boolean> = {};\n \n // Auto-apply aria-disabled for disabled/loading state\n if (disabled || loading) {\n defaults['aria-disabled'] = true;\n }\n \n // Auto-apply aria-busy for loading state\n if (loading) {\n defaults['aria-busy'] = true;\n }\n \n return defaults;\n }, [disabled, loading]);\n \n // Merge defaults with user props (user props take precedence)\n const mergedProps = {\n ...restProps,\n ...accessibilityProps,\n };\n \n return (\n <AdapterButton\n ref={ref}\n variant={variant}\n intent={intent}\n size={size}\n disabled={disabled}\n loading={loading}\n fullWidth={fullWidth}\n startIcon={startIcon}\n endIcon={endIcon}\n loadingText={loadingText}\n href={href}\n target={target}\n {...mergedProps}\n >\n {children}\n </AdapterButton>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import React, { forwardRef } from 'react';\nimport { getButtonGroupAdapter } from '../adapters';\nimport type { Orientation, Size } from '../tokens/semantic';\n\nexport type { Orientation, Size } from '../tokens/semantic';\n\nexport interface ButtonGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className'> {\n orientation?: Orientation;\n fullWidth?: boolean;\n gap?: Size; // Reuse Size type for gap\n children: React.ReactNode;\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ \n orientation = 'horizontal',\n gap = 'md',\n fullWidth = false,\n children,\n ...props \n }, ref) => {\n const AdapterButtonGroup = getButtonGroupAdapter();\n \n // Remove className if passed - we don't allow arbitrary classes\n const { className, ...restProps } = props as Omit<ButtonGroupProps, 'orientation' | 'fullWidth' | 'gap'> & { className?: string };\n if (className) {\n console.warn('ButtonGroup component does not accept className prop. Use orientation, gap, fullWidth, and other props for styling.');\n }\n \n return (\n <AdapterButtonGroup\n ref={ref}\n orientation={orientation}\n gap={gap}\n fullWidth={fullWidth}\n {...restProps}\n >\n {children}\n </AdapterButtonGroup>\n );\n }\n);\n\nButtonGroup.displayName = 'ButtonGroup';","/**\n * Base Design Tokens\n * Framework-agnostic design tokens\n * \n * Color Primitives: These are the base color values that should not be used directly in components.\n * Use semantic tokens instead for better theme support.\n */\n\n// Color Primitives with 100-950 scale\nexport const neutral = {\n 100: \"#FFFFFF\",\n 200: \"#EDEDED\",\n 300: \"#DFDFE2\",\n 400: \"#BEBEC1\",\n 500: \"#7E7E8B\",\n 600: \"#60606C\",\n 700: \"#4E4E5A\",\n 800: \"#2F2F37\",\n 900: \"#17171C\",\n 950: \"#09090B\",\n 1000: \"#FAFAFA\",\n} as const;\n\nexport const blue = {\n 100: \"#EBF1FF\",\n 200: \"#C2D4FF\",\n 300: \"#99B7FF\",\n 400: \"#709AFF\",\n 500: \"#3772FF\",\n 600: \"#004BFF\",\n 700: \"#003FD6\",\n 800: \"#002680\",\n 900: \"#001E66\",\n 950: \"#00123D\",\n} as const;\n\nexport const orange = {\n 100: \"#FFF3EB\",\n 200: \"#FFE1CC\",\n 300: \"#FFC9A3\",\n 400: \"#EC9C64\",\n 500: \"#FF6800\",\n 600: \"#D65700\",\n 700: \"#AD4700\",\n 800: \"#7A3200\",\n 900: \"#5C2500\",\n 950: \"#331500\",\n} as const;\n\nexport const red = {\n 100: \"#FDF2F4\",\n 200: \"#FADBE1\",\n 300: \"#F6C1CA\",\n 400: \"#E15C5C\",\n 500: \"#E12D4E\",\n 600: \"#C41C3B\",\n 700: \"#A11730\",\n 800: \"#7D1225\",\n 900: \"#4C0B17\",\n 950: \"#2D060D\",\n} as const;\n\nexport const green = {\n 100: \"#E0FFEC\",\n 200: \"#BDFFD5\",\n 300: \"#8AFFB5\",\n 400: \"#5CFF98\",\n 500: \"#09FF63\",\n 600: \"#00E052\",\n 700: \"#00B241\",\n 800: \"#008A32\",\n 900: \"#006625\",\n 950: \"#00471A\",\n} as const;\n\nexport const yellow = {\n 100: \"#FFF4E0\",\n 200: \"#FFE8C2\",\n 300: \"#FFD999\",\n 400: \"#FFCA70\",\n 500: \"#FFAD22\",\n 600: \"#F09700\",\n 700: \"#D68700\",\n 800: \"#7A4D00\",\n 900: \"#5C3A00\",\n 950: \"#3D2600\",\n} as const;\n\nexport const colorPrimitives = {\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n} as const;\n\n// Legacy colors object for backward compatibility\nexport const colors = {\n // Neutral palette (mapped from new scale)\n white: neutral[100],\n black: neutral[950],\n gray50: neutral[200],\n gray100: neutral[300],\n gray200: neutral[400],\n gray300: neutral[500],\n gray400: neutral[500],\n gray500: neutral[500],\n gray600: neutral[600],\n gray700: neutral[700],\n gray800: neutral[800],\n gray900: neutral[900],\n \n // Primary palette (mapped from blue)\n blue50: blue[100],\n blue100: blue[100],\n blue200: blue[200],\n blue300: blue[300],\n blue400: blue[400],\n blue500: blue[500],\n blue600: blue[600],\n blue700: blue[700],\n blue800: blue[800],\n blue900: blue[900],\n \n // Success palette (mapped from green)\n green50: green[100],\n green100: green[100],\n green200: green[200],\n green300: green[300],\n green400: green[400],\n green500: green[500],\n green600: green[600],\n green700: green[700],\n green800: green[800],\n green900: green[900],\n \n // Warning palette (mapped from yellow)\n yellow50: yellow[100],\n yellow100: yellow[100],\n yellow200: yellow[200],\n yellow300: yellow[300],\n yellow400: yellow[400],\n yellow500: yellow[500],\n yellow600: yellow[600],\n yellow700: yellow[700],\n yellow800: yellow[800],\n yellow900: yellow[900],\n \n // Danger palette (mapped from red)\n red50: red[100],\n red100: red[100],\n red200: red[200],\n red300: red[300],\n red400: red[400],\n red500: red[500],\n red600: red[600],\n red700: red[700],\n red800: red[800],\n red900: red[900],\n} as const;\n\nexport const typography = {\n fontFamily: {\n sans: ['Gist', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'sans-serif'],\n mono: ['Gist Mono', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace'],\n },\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n '5xl': '3rem', // 48px\n },\n fontWeight: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n lineHeight: {\n tight: '1.25',\n normal: '1.5',\n relaxed: '1.75',\n },\n} as const;\n\nexport const spacing = {\n 0: '0',\n 1: '0.25rem', // 4px\n 2: '0.5rem', // 8px\n 3: '0.75rem', // 12px\n 4: '1rem', // 16px\n 5: '1.25rem', // 20px\n 6: '1.5rem', // 24px\n 8: '2rem', // 32px\n 10: '2.5rem', // 40px\n 12: '3rem', // 48px\n 16: '4rem', // 64px\n 20: '5rem', // 80px\n 24: '6rem', // 96px\n} as const;\n\nexport const radius = {\n none: '0',\n sm: '0.125rem', // 2px\n base: '0.25rem', // 4px\n md: '0.375rem', // 6px\n lg: '0.5rem', // 8px\n xl: '0.75rem', // 12px\n '2xl': '1rem', // 16px\n '3xl': '1.5rem', // 24px\n full: '9999px',\n} as const;\n\nexport const shadows = {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n base: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n} as const;\n\nexport const zIndex = {\n base: 0,\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n} as const;\n\nexport type ColorPrimitives = typeof colorPrimitives;\nexport type Colors = typeof colors;\nexport type Typography = typeof typography;\nexport type Spacing = typeof spacing;\nexport type Radius = typeof radius;\nexport type Shadows = typeof shadows;\nexport type ZIndex = typeof zIndex;\n\n// Single source of truth: define array first, then derive type from it\nexport const COLOR_SCALES = [100, 200, 300, 400, 500, 600, 700, 800, 900, 950, 1000] as const;\n\n// Color name and scale types\nexport type ColorName = keyof typeof colorPrimitives;\nexport type ColorScale = typeof COLOR_SCALES[number];\n","/**\n * Semantic Tokens\n * These tokens should be used in components for consistent theming.\n * They map to color primitives and change based on theme (light/dark).\n */\n\nimport { neutral, blue, orange, red, green, yellow } from './base';\nimport type { ThemeMode } from '../theme/types';\n\n/**\n * Border Tokens\n */\nexport const borderTokens = {\n dark: {\n primary: neutral[700],\n secondary: neutral[800],\n subtle: neutral[800],\n invert: neutral[100],\n onColor: neutral[950],\n blue: blue[400],\n blueSubtle: blue[800],\n blueOnHover: blue[500],\n red: red[400],\n redSubtle: red[900],\n redOnHover: red[500],\n orange: orange[400],\n orangeSubtle: orange[900],\n orangeOnHover: orange[500],\n yellow: yellow[400],\n yellowSubtle: yellow[900],\n yellowOnHover: yellow[500],\n green: green[600],\n greenSubtle: green[900],\n greenOnHover: green[700],\n },\n light: {\n primary: neutral[400],\n secondary: neutral[300],\n subtle: neutral[300],\n invert: neutral[950],\n onColor: neutral[100],\n blue: blue[500],\n blueSubtle: blue[300],\n blueOnHover: blue[700],\n red: red[600],\n redSubtle: red[300],\n redOnHover: red[700],\n orange: orange[600],\n orangeSubtle: orange[300],\n orangeOnHover: orange[700],\n yellow: yellow[600],\n yellowSubtle: yellow[300],\n yellowOnHover: yellow[700],\n green: green[600],\n greenSubtle: green[300],\n greenOnHover: green[700],\n },\n} as const;\n\n/**\n * Content Tokens (Text/Foreground)\n */\nexport const contentTokens = {\n dark: {\n primary: neutral[300],\n secondary: neutral[500],\n subtle: neutral[700],\n onColor: neutral[950],\n alwaysWhite: neutral[100],\n alwaysBlack: neutral[950],\n onColorInverse: neutral[200],\n blue: blue[400],\n blueDisabled: blue[800],\n blueOnHover: blue[500],\n green: green[600],\n greenDisabled: green[800],\n greenOnHover: green[500],\n red: red[400],\n redDisabled: red[800],\n redOnHover: red[300],\n orange: orange[400],\n orangeDisabled: orange[800],\n orangeOnHover: orange[300],\n yellow: yellow[400],\n yellowDisabled: yellow[800],\n yellowOnHover: yellow[300],\n },\n light: {\n primary: neutral[900],\n secondary: neutral[600],\n subtle: neutral[400],\n onColor: neutral[100],\n alwaysWhite: neutral[100],\n alwaysBlack: neutral[950],\n onColorInverse: neutral[950],\n blue: blue[500],\n blueDisabled: blue[400],\n blueOnHover: blue[600],\n green: green[700],\n greenDisabled: green[400],\n greenOnHover: green[600],\n red: red[600],\n redDisabled: red[400],\n redOnHover: red[700],\n orange: orange[600],\n orangeDisabled: orange[400],\n orangeOnHover: orange[700],\n yellow: yellow[600],\n yellowDisabled: yellow[400],\n yellowOnHover: yellow[700],\n },\n} as const;\n\n/**\n * Background Tokens\n */\nexport const backgroundTokens = {\n dark: {\n primary: neutral[950], \n system: neutral[950], \n secondary: neutral[900],\n tertiary: neutral[800],\n invert: neutral[100],\n invertLight: neutral[300],\n green: green[950],\n greenOnHover: green[900],\n red: red[950],\n redOnHover: red[900],\n orange: orange[950],\n orangeOnHover: orange[900],\n yellow: yellow[950],\n yellowOnHover: yellow[900],\n low: neutral[900],\n lowOnHover: neutral[800],\n info: blue[950], \n infoOnHover: blue[900],\n base: neutral[950],\n },\n light: {\n primary: neutral[100],\n system: neutral[1000],\n secondary: neutral[200],\n tertiary: neutral[300],\n invert: neutral[950],\n invertLight: neutral[900],\n green: green[100],\n greenOnHover: green[200],\n red: red[100],\n redOnHover: red[200],\n orange: orange[100],\n orangeOnHover: orange[200],\n yellow: orange[100],\n yellowOnHover: orange[200],\n low: neutral[200],\n lowOnHover: neutral[300],\n info: blue[100],\n infoOnHover: blue[300],\n base: neutral[100], \n },\n} as const;\n\nexport const semanticTokens = {\n border: borderTokens,\n content: contentTokens,\n background: backgroundTokens,\n} as const;\n\n// Single source of truth: define arrays first, then derive types from them\nexport const VARIANTS = ['primary', 'secondary', 'ghost', 'outline'] as const;\nexport const INTENTS = ['primary', 'success', 'warning', 'danger', 'neutral'] as const;\nexport const SIZES = ['sm', 'md', 'lg'] as const;\nexport const BUTTON_TYPES = ['button', 'submit', 'reset'] as const;\nexport const INPUT_TYPES = ['text', 'email', 'password', 'number', 'tel', 'url', 'search'] as const;\nexport const ORIENTATIONS = ['horizontal', 'vertical'] as const;\nexport const SURFACE_LEVELS = ['base', 'elevated', 'overlay'] as const;\n\n// Derive types from arrays to ensure they stay in sync\nexport type Variant = typeof VARIANTS[number];\nexport type Intent = typeof INTENTS[number];\nexport type Size = typeof SIZES[number];\nexport type ButtonType = typeof BUTTON_TYPES[number];\nexport type InputType = typeof INPUT_TYPES[number];\nexport type Orientation = typeof ORIENTATIONS[number];\nexport type SurfaceLevel = typeof SURFACE_LEVELS[number];\n\n// New semantic token types\nexport type BorderToken = keyof typeof borderTokens.light;\nexport type ContentToken = keyof typeof contentTokens.light;\nexport type BackgroundToken = keyof typeof backgroundTokens.light;\nexport type SemanticToken = BorderToken | ContentToken | BackgroundToken;\n\n// Legacy interface for backward compatibility\nexport interface SemanticTokens {\n intent: {\n [K in Intent]: {\n color: string;\n colorHover: string;\n colorActive: string;\n background: string;\n backgroundHover: string;\n backgroundActive: string;\n border: string;\n text: string;\n textMuted: string;\n };\n };\n surface: {\n [K in SurfaceLevel]: {\n background: string;\n border: string;\n };\n };\n text: {\n heading: string;\n body: string;\n muted: string;\n disabled: string;\n };\n}\n\n/**\n * Legacy function for backward compatibility\n * Maps new semantic tokens to old structure\n */\nexport function createSemanticTokens(mode: ThemeMode): SemanticTokens {\n const isLight = mode === 'light';\n const border = isLight ? borderTokens.light : borderTokens.dark;\n const content = isLight ? contentTokens.light : contentTokens.dark;\n const background = isLight ? backgroundTokens.light : backgroundTokens.dark;\n \n return {\n intent: {\n primary: {\n color: content.secondary,\n colorHover: isLight ? neutral[700] : neutral[300],\n colorActive: isLight ? neutral[800] : neutral[200],\n background: background.secondary,\n backgroundHover: background.lowOnHover,\n backgroundActive: background.tertiary,\n border: border.primary,\n text: content.primary,\n textMuted: content.subtle,\n },\n success: {\n color: isLight ? green[600] : green[600],\n colorHover: isLight ? green[700] : green[500],\n colorActive: isLight ? green[800] : green[700],\n background: background.green,\n backgroundHover: background.greenOnHover,\n backgroundActive: isLight ? green[300] : green[800],\n border: border.green,\n text: content.green,\n textMuted: isLight ? green[700] : green[300],\n },\n warning: {\n color: isLight ? yellow[600] : yellow[400],\n colorHover: isLight ? yellow[700] : yellow[300],\n colorActive: isLight ? yellow[800] : yellow[500],\n background: background.yellow,\n backgroundHover: background.yellowOnHover,\n backgroundActive: isLight ? yellow[200] : yellow[900],\n border: border.yellow,\n text: content.yellow,\n textMuted: isLight ? yellow[700] : yellow[300],\n },\n danger: {\n color: isLight ? red[600] : red[400],\n colorHover: isLight ? red[700] : red[300],\n colorActive: isLight ? red[800] : red[500],\n background: background.red,\n backgroundHover: background.redOnHover,\n backgroundActive: isLight ? red[200] : red[900],\n border: border.red,\n text: content.red,\n textMuted: isLight ? red[700] : red[300],\n },\n neutral: {\n color: content.secondary,\n colorHover: isLight ? neutral[700] : neutral[300],\n colorActive: isLight ? neutral[800] : neutral[200],\n background: background.secondary,\n backgroundHover: background.lowOnHover,\n backgroundActive: background.tertiary,\n border: border.primary,\n text: content.primary,\n textMuted: content.subtle,\n },\n },\n surface: {\n base: {\n background: background.primary,\n border: border.primary,\n },\n elevated: {\n background: background.secondary,\n border: border.secondary,\n },\n overlay: {\n background: isLight ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.7)',\n border: 'transparent',\n },\n },\n text: {\n heading: content.primary,\n body: content.primary,\n muted: content.subtle,\n disabled: isLight ? content.subtle : neutral[600],\n },\n };\n}\n","import { colors, spacing, radius, shadows, typography, zIndex } from '../tokens/base';\nimport { createSemanticTokens, borderTokens, contentTokens, backgroundTokens } from '../tokens/semantic';\nimport type { Theme, ThemeMode, ThemeName } from './types';\n\n/**\n * Resolves 'system' mode to either 'light' or 'dark' based on OS preference\n * Falls back to 'light' if matchMedia is not available (SSR)\n */\nexport function resolveThemeMode(mode: ThemeMode): 'light' | 'dark' {\n if (mode !== 'system') {\n return mode;\n }\n \n // Check if we're in a browser environment\n if (typeof window !== 'undefined' && window.matchMedia) {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n \n // Default to light for SSR or when matchMedia is not available\n return 'light';\n}\n\nexport function createTheme(name: ThemeName, mode: ThemeMode): Theme {\n const resolvedMode = resolveThemeMode(mode);\n const semantic = createSemanticTokens(resolvedMode);\n const isLight = resolvedMode === 'light';\n \n // Get current theme tokens\n const border = isLight ? borderTokens.light : borderTokens.dark;\n const content = isLight ? contentTokens.light : contentTokens.dark;\n const background = isLight ? backgroundTokens.light : backgroundTokens.dark;\n \n // Helper function to convert camelCase to kebab-case\n const toKebabCase = (str: string): string => {\n return str.replace(/([A-Z])/g, '-$1').toLowerCase();\n };\n\n const cssVariables: Record<string, string> = {\n // Base colors\n '--color-white': colors.white,\n '--color-black': colors.black,\n \n // Intent colors\n '--intent-primary': semantic.intent.primary.color,\n '--intent-primary-hover': semantic.intent.primary.colorHover,\n '--intent-primary-active': semantic.intent.primary.colorActive,\n '--intent-primary-bg': semantic.intent.primary.background,\n '--intent-primary-bg-hover': semantic.intent.primary.backgroundHover,\n '--intent-primary-bg-active': semantic.intent.primary.backgroundActive,\n '--intent-primary-border': semantic.intent.primary.border,\n '--intent-primary-text': semantic.intent.primary.text,\n \n '--intent-success': semantic.intent.success.color,\n '--intent-success-hover': semantic.intent.success.colorHover,\n '--intent-success-active': semantic.intent.success.colorActive,\n '--intent-success-bg': semantic.intent.success.background,\n '--intent-success-bg-hover': semantic.intent.success.backgroundHover,\n '--intent-success-bg-active': semantic.intent.success.backgroundActive,\n '--intent-success-border': semantic.intent.success.border,\n '--intent-success-text': semantic.intent.success.text,\n \n '--intent-warning': semantic.intent.warning.color,\n '--intent-warning-hover': semantic.intent.warning.colorHover,\n '--intent-warning-active': semantic.intent.warning.colorActive,\n '--intent-warning-bg': semantic.intent.warning.background,\n '--intent-warning-bg-hover': semantic.intent.warning.backgroundHover,\n '--intent-warning-bg-active': semantic.intent.warning.backgroundActive,\n '--intent-warning-border': semantic.intent.warning.border,\n '--intent-warning-text': semantic.intent.warning.text,\n \n '--intent-danger': semantic.intent.danger.color,\n '--intent-danger-hover': semantic.intent.danger.colorHover,\n '--intent-danger-active': semantic.intent.danger.colorActive,\n '--intent-danger-bg': semantic.intent.danger.background,\n '--intent-danger-bg-hover': semantic.intent.danger.backgroundHover,\n '--intent-danger-bg-active': semantic.intent.danger.backgroundActive,\n '--intent-danger-border': semantic.intent.danger.border,\n '--intent-danger-text': semantic.intent.danger.text,\n \n '--intent-neutral': semantic.intent.neutral.color,\n '--intent-neutral-hover': semantic.intent.neutral.colorHover,\n '--intent-neutral-active': semantic.intent.neutral.colorActive,\n '--intent-neutral-bg': semantic.intent.neutral.background,\n '--intent-neutral-bg-hover': semantic.intent.neutral.backgroundHover,\n '--intent-neutral-bg-active': semantic.intent.neutral.backgroundActive,\n '--intent-neutral-border': semantic.intent.neutral.border,\n '--intent-neutral-text': semantic.intent.neutral.text,\n \n // Surface\n '--surface-base': semantic.surface.base.background,\n '--surface-base-border': semantic.surface.base.border,\n '--surface-elevated': semantic.surface.elevated.background,\n '--surface-elevated-border': semantic.surface.elevated.border,\n '--surface-overlay': semantic.surface.overlay.background,\n \n // Text\n '--text-heading': semantic.text.heading,\n '--text-body': semantic.text.body,\n '--text-muted': semantic.text.muted,\n '--text-disabled': semantic.text.disabled,\n \n // Spacing\n '--spacing-0': spacing[0],\n '--spacing-1': spacing[1],\n '--spacing-2': spacing[2],\n '--spacing-3': spacing[3],\n '--spacing-4': spacing[4],\n '--spacing-5': spacing[5],\n '--spacing-6': spacing[6],\n '--spacing-8': spacing[8],\n '--spacing-10': spacing[10],\n '--spacing-12': spacing[12],\n '--spacing-16': spacing[16],\n '--spacing-20': spacing[20],\n '--spacing-24': spacing[24],\n \n // Radius\n '--radius-none': radius.none,\n '--radius-sm': radius.sm,\n '--radius-base': radius.base,\n '--radius-md': radius.md,\n '--radius-lg': radius.lg,\n '--radius-xl': radius.xl,\n '--radius-2xl': radius['2xl'],\n '--radius-3xl': radius['3xl'],\n '--radius-full': radius.full,\n \n // Shadows\n '--shadow-sm': shadows.sm,\n '--shadow-base': shadows.base,\n '--shadow-md': shadows.md,\n '--shadow-lg': shadows.lg,\n '--shadow-xl': shadows.xl,\n '--shadow-2xl': shadows['2xl'],\n '--shadow-inner': shadows.inner,\n '--shadow-none': shadows.none,\n \n // Z-index\n '--z-dropdown': String(zIndex.dropdown),\n '--z-sticky': String(zIndex.sticky),\n '--z-fixed': String(zIndex.fixed),\n '--z-modal-backdrop': String(zIndex.modalBackdrop),\n '--z-modal': String(zIndex.modal),\n '--z-popover': String(zIndex.popover),\n '--z-tooltip': String(zIndex.tooltip),\n \n // Typography\n '--font-sans': typography.fontFamily.sans.join(', '),\n '--font-mono': typography.fontFamily.mono.join(', '),\n '--font-size-xs': typography.fontSize.xs,\n '--font-size-sm': typography.fontSize.sm,\n '--font-size-base': typography.fontSize.base,\n '--font-size-lg': typography.fontSize.lg,\n '--font-size-xl': typography.fontSize.xl,\n '--font-size-2xl': typography.fontSize['2xl'],\n '--font-size-3xl': typography.fontSize['3xl'],\n '--font-size-4xl': typography.fontSize['4xl'],\n '--font-size-5xl': typography.fontSize['5xl'],\n '--font-weight-normal': typography.fontWeight.normal,\n '--font-weight-medium': typography.fontWeight.medium,\n '--font-weight-semibold': typography.fontWeight.semibold,\n '--font-weight-bold': typography.fontWeight.bold,\n '--line-height-tight': typography.lineHeight.tight,\n '--line-height-normal': typography.lineHeight.normal,\n '--line-height-relaxed': typography.lineHeight.relaxed,\n \n // shadcn/ui CSS variable mappings for compatibility\n '--background': semantic.surface.base.background,\n '--foreground': semantic.text.body,\n '--card': semantic.surface.elevated.background,\n '--card-foreground': semantic.text.body,\n '--popover': semantic.surface.elevated.background,\n '--popover-foreground': semantic.text.body,\n '--primary': semantic.intent.primary.color,\n '--primary-foreground': colors.white,\n '--secondary': semantic.intent.neutral.background,\n '--secondary-foreground': semantic.intent.neutral.text,\n '--muted': semantic.intent.neutral.background,\n '--muted-foreground': semantic.text.muted,\n '--accent': semantic.intent.primary.background,\n '--accent-foreground': semantic.intent.primary.text,\n '--destructive': semantic.intent.danger.color,\n '--destructive-foreground': colors.white,\n '--border': semantic.intent.neutral.border,\n '--input': semantic.intent.neutral.border,\n '--ring': semantic.intent.primary.color,\n '--radius': radius.md,\n \n // New semantic token CSS variables (border, content, background)\n // Border tokens - convert camelCase keys to kebab-case\n ...Object.entries(border).reduce((acc, [key, value]) => {\n acc[`--border-${toKebabCase(key)}`] = value;\n return acc;\n }, {} as Record<string, string>),\n \n // Content tokens - convert camelCase keys to kebab-case\n ...Object.entries(content).reduce((acc, [key, value]) => {\n acc[`--content-${toKebabCase(key)}`] = value;\n return acc;\n }, {} as Record<string, string>),\n \n // Background tokens - convert camelCase keys to kebab-case\n // Note: Now background.primary = base background (matches reference structure)\n // The blue/info background is available as background.info\n ...Object.entries(background).reduce((acc, [key, value]) => {\n // Skip 'base' as it's just a legacy alias for 'primary'\n if (key === 'base') {\n return acc;\n }\n acc[`--background-${toKebabCase(key)}`] = value;\n return acc;\n }, {} as Record<string, string>),\n };\n \n return {\n name,\n mode: resolvedMode, // Store the resolved mode (light/dark) not 'system'\n cssVariables,\n };\n}\n","import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport { createTheme, resolveThemeMode } from './theme';\nimport { setDesignSystemConfig, getDesignSystemConfig } from './config';\nimport type { DesignSystemConfig, ThemeMode, ThemeName } from './types';\nimport { DEFAULT_ADAPTER, DEFAULT_THEME, DEFAULT_MODE } from './types';\n\ninterface ThemeContextValue {\n config: DesignSystemConfig;\n setConfig: (config: Partial<DesignSystemConfig>) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n adapter?: DesignSystemConfig['adapter'];\n theme?: ThemeName;\n mode?: ThemeMode;\n}\n\nexport function ThemeProvider({\n children,\n adapter = DEFAULT_ADAPTER,\n theme: themeName = DEFAULT_THEME,\n mode = DEFAULT_MODE,\n}: ThemeProviderProps) {\n // Track the resolved mode for system theme\n const [resolvedMode, setResolvedMode] = useState<'light' | 'dark'>(() => \n resolveThemeMode(mode)\n );\n \n // Listen to system preference changes when mode is 'system'\n useEffect(() => {\n if (mode !== 'system' || typeof window === 'undefined' || !window.matchMedia) {\n return;\n }\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent | MediaQueryList) => {\n setResolvedMode(e.matches ? 'dark' : 'light');\n };\n \n // Set initial value\n handleChange(mediaQuery);\n \n // Listen for changes\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n } else {\n // Fallback for older browsers\n mediaQuery.addListener(handleChange);\n return () => mediaQuery.removeListener(handleChange);\n }\n }, [mode]);\n \n // Update resolved mode when mode prop changes\n useEffect(() => {\n if (mode !== 'system') {\n setResolvedMode(mode === 'dark' ? 'dark' : 'light');\n }\n }, [mode]);\n \n const theme = useMemo(() => {\n const effectiveMode = mode === 'system' ? resolvedMode : mode;\n return createTheme(themeName, effectiveMode);\n }, [themeName, mode, resolvedMode]);\n \n useEffect(() => {\n setDesignSystemConfig({ adapter, theme: themeName, mode });\n }, [adapter, themeName, mode]);\n \n useEffect(() => {\n const root = document.documentElement;\n const effectiveMode = mode === 'system' ? resolvedMode : mode;\n \n // Update class for dark mode\n if (effectiveMode === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n \n Object.entries(theme.cssVariables).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n \n return () => {\n Object.keys(theme.cssVariables).forEach((key) => {\n root.style.removeProperty(key);\n });\n };\n }, [theme, mode, resolvedMode]);\n \n const contextValue = useMemo<ThemeContextValue>(() => ({\n config: getDesignSystemConfig(),\n setConfig: setDesignSystemConfig,\n }), []);\n \n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within ThemeProvider');\n }\n return context;\n}\n","export * from './base';\nexport * from './semantic';\n\n// Re-export base tokens for convenience\nexport {\n colorPrimitives,\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n colors,\n typography,\n spacing,\n radius,\n shadows,\n zIndex,\n COLOR_SCALES,\n type ColorPrimitives,\n type Colors,\n type Typography,\n type Spacing,\n type Radius,\n type Shadows,\n type ZIndex,\n type ColorName,\n type ColorScale,\n} from './base';\n\n// Re-export semantic tokens and types for convenience\nexport {\n semanticTokens,\n borderTokens,\n contentTokens,\n backgroundTokens,\n // Arrays (single source of truth)\n VARIANTS,\n INTENTS,\n SIZES,\n BUTTON_TYPES,\n INPUT_TYPES,\n ORIENTATIONS,\n SURFACE_LEVELS,\n // Types derived from arrays\n type Variant,\n type Intent,\n type Size,\n type ButtonType,\n type InputType,\n type Orientation,\n type SurfaceLevel,\n // Other semantic types\n type BorderToken,\n type ContentToken,\n type BackgroundToken,\n type SemanticToken,\n} from './semantic';\n\n// Import for grouped tokens object\nimport {\n colorPrimitives,\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n colors as legacyColors,\n typography,\n spacing,\n radius,\n shadows,\n zIndex,\n} from './base';\n\nimport {\n semanticTokens,\n borderTokens,\n contentTokens,\n backgroundTokens,\n} from './semantic';\n\n/**\n * Grouped design tokens for convenient access\n * \n * Provides a structured object containing all design tokens organized by category.\n * This allows for easy access like `tokens.colors.blue[500]` or `tokens.spacing[4]`.\n * \n * @example\n * ```ts\n * import { tokens } from '@pd-design/system';\n * \n * // Access color primitives\n * const primaryColor = tokens.colors.blue[500];\n * const grayColor = tokens.colors.neutral[600];\n * \n * // Access semantic tokens\n * const borderColor = tokens.semantic.border.light.primary;\n * \n * // Access spacing\n * const padding = tokens.spacing[4];\n * \n * // Access typography\n * const fontSize = tokens.typography.fontSize.base;\n * ```\n */\nexport const tokens = {\n colors: {\n // Individual color scales\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n // All colors grouped together\n all: colorPrimitives,\n // Legacy color names (for backward compatibility)\n legacy: legacyColors,\n },\n semantic: {\n border: borderTokens,\n content: contentTokens,\n background: backgroundTokens,\n // Full semantic tokens object\n all: semanticTokens,\n },\n spacing,\n typography,\n radius,\n shadows,\n zIndex,\n} as const;\n\n// Type export for better developer experience\nexport type Tokens = typeof tokens;\n","/**\n * Accessibility Utilities\n * \n * Provides utilities and types for ensuring excellent accessibility scores\n * across all components. Supports both user-provided and default accessibility props.\n */\n\nimport React from 'react';\n\n/**\n * Accessibility props that can be passed by users or use defaults\n */\nexport interface AccessibilityProps {\n /**\n * Accessible label for the element.\n * If not provided, will attempt to generate from children or other props.\n */\n 'aria-label'?: string;\n \n /**\n * Reference to element(s) that describe this element.\n */\n 'aria-describedby'?: string;\n \n /**\n * Reference to element(s) that label this element.\n */\n 'aria-labelledby'?: string;\n \n /**\n * Indicates the current state of the element.\n */\n 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean;\n \n /**\n * Indicates whether the element is expanded or collapsed.\n */\n 'aria-expanded'?: boolean;\n \n /**\n * Indicates whether the element is selected.\n */\n 'aria-selected'?: boolean;\n \n /**\n * Indicates whether the element is checked.\n */\n 'aria-checked'?: boolean | 'mixed';\n \n /**\n * Indicates whether the element is disabled.\n */\n 'aria-disabled'?: boolean;\n \n /**\n * Indicates whether the element is required.\n */\n 'aria-required'?: boolean;\n \n /**\n * Indicates whether the element has invalid input.\n */\n 'aria-invalid'?: boolean | 'grammar' | 'spelling';\n \n /**\n * Describes the error message for invalid input.\n */\n 'aria-errormessage'?: string;\n \n /**\n * Indicates the element's role.\n */\n role?: string;\n \n /**\n * Tab index for keyboard navigation.\n * -1: Not focusable, 0: Focusable in tab order, >0: Custom tab order (not recommended)\n */\n tabIndex?: number;\n \n /**\n * Indicates whether the element should be hidden from assistive technologies.\n */\n 'aria-hidden'?: boolean;\n \n /**\n * Indicates whether the element is live and should be announced.\n */\n 'aria-live'?: 'off' | 'polite' | 'assertive';\n \n /**\n * Indicates whether the element is atomic for live regions.\n */\n 'aria-atomic'?: boolean;\n \n /**\n * Indicates the level of heading (for headings).\n */\n 'aria-level'?: number;\n \n /**\n * Indicates the position in a set (for list items, etc.).\n */\n 'aria-posinset'?: number;\n \n /**\n * Indicates the size of a set (for list items, etc.).\n */\n 'aria-setsize'?: number;\n \n /**\n * Indicates whether the element has a popup.\n */\n 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\n \n /**\n * Indicates the orientation of the element.\n */\n 'aria-orientation'?: 'horizontal' | 'vertical';\n \n /**\n * Indicates the value of the element.\n */\n 'aria-valuenow'?: number;\n \n /**\n * Indicates the minimum value.\n */\n 'aria-valuemin'?: number;\n \n /**\n * Indicates the maximum value.\n */\n 'aria-valuemax'?: number;\n \n /**\n * Human-readable text alternative of aria-valuenow.\n */\n 'aria-valuetext'?: string;\n \n /**\n * Indicates whether the element is busy.\n */\n 'aria-busy'?: boolean;\n \n /**\n * Indicates the element's controls.\n */\n 'aria-controls'?: string;\n \n /**\n * Indicates the element's owns.\n */\n 'aria-owns'?: string;\n}\n\n/**\n * Options for generating default accessibility props\n */\nexport interface AccessibilityDefaultsOptions {\n /**\n * Component type/name for generating appropriate defaults\n */\n componentType?: string;\n \n /**\n * Children content to extract text from\n */\n children?: React.ReactNode;\n \n /**\n * Whether the element is disabled\n */\n disabled?: boolean;\n \n /**\n * Whether the element is loading\n */\n loading?: boolean;\n \n /**\n * Whether the element is required\n */\n required?: boolean;\n \n /**\n * Whether the element has an error\n */\n error?: boolean;\n \n /**\n * Error message for the element\n */\n errorMessage?: string;\n \n /**\n * Description or help text for the element\n */\n description?: string;\n \n /**\n * Label text for the element\n */\n label?: string;\n \n /**\n * ID for the element (used for generating related IDs)\n */\n id?: string;\n \n /**\n * Start icon name (for icon-only detection)\n */\n startIcon?: string;\n \n /**\n * End icon name (for icon-only detection)\n */\n endIcon?: string;\n}\n\n/**\n * Extracts text content from React children\n */\nexport function extractTextFromChildren(children: React.ReactNode): string {\n if (typeof children === 'string') {\n return children.trim();\n }\n \n if (typeof children === 'number') {\n return String(children);\n }\n \n if (Array.isArray(children)) {\n return children.map(extractTextFromChildren).join(' ').trim();\n }\n \n if (React.isValidElement(children) && children.props) {\n if (children.props.children) {\n return extractTextFromChildren(children.props.children);\n }\n }\n \n return '';\n}\n\n/**\n * Generates default accessibility props based on component state and options\n * \n * @param options - Options for generating defaults\n * @param userProps - User-provided accessibility props (will override defaults)\n * @returns Merged accessibility props with user props taking precedence\n */\nexport function generateAccessibilityDefaults(\n options: AccessibilityDefaultsOptions,\n userProps: Partial<AccessibilityProps> = {}\n): AccessibilityProps {\n const {\n componentType,\n children,\n disabled,\n loading,\n required,\n error,\n errorMessage,\n description,\n label,\n id,\n } = options;\n\n const defaults: AccessibilityProps = {};\n\n // Generate aria-label from children if not provided\n if (!userProps['aria-label'] && !userProps['aria-labelledby']) {\n const textContent = extractTextFromChildren(children);\n if (textContent) {\n defaults['aria-label'] = textContent;\n } else if (label) {\n defaults['aria-label'] = label;\n }\n }\n\n // Handle disabled state\n if (disabled !== undefined) {\n defaults['aria-disabled'] = disabled;\n }\n\n // Handle loading state\n if (loading) {\n defaults['aria-busy'] = true;\n if (!userProps['aria-label']) {\n const baseLabel = defaults['aria-label'] || extractTextFromChildren(children) || 'Loading';\n defaults['aria-label'] = `${baseLabel}, loading`;\n }\n }\n\n // Handle required state\n if (required !== undefined) {\n defaults['aria-required'] = required;\n }\n\n // Handle error state\n if (error !== undefined) {\n defaults['aria-invalid'] = error;\n \n if (error && errorMessage && id) {\n const errorId = `${id}-error`;\n defaults['aria-errormessage'] = errorId;\n defaults['aria-describedby'] = userProps['aria-describedby']\n ? `${userProps['aria-describedby']} ${errorId}`\n : errorId;\n }\n }\n\n // Handle description\n if (description && id && !userProps['aria-describedby']) {\n const descId = `${id}-description`;\n defaults['aria-describedby'] = userProps['aria-describedby']\n ? `${userProps['aria-describedby']} ${descId}`\n : descId;\n }\n\n // Component-specific defaults\n if (componentType === 'button') {\n if (!userProps.role && !userProps['aria-label']) {\n // Buttons don't need explicit role unless they're not actually buttons\n defaults.role = 'button';\n }\n }\n\n if (componentType === 'link') {\n defaults.role = 'link';\n }\n\n // Merge user props (user props take precedence)\n return {\n ...defaults,\n ...userProps,\n };\n}\n\n/**\n * Merges accessibility props with user-provided props\n * User props always take precedence over defaults\n */\nexport function mergeAccessibilityProps(\n defaults: AccessibilityProps,\n userProps: Partial<AccessibilityProps>\n): AccessibilityProps {\n return {\n ...defaults,\n ...userProps,\n };\n}\n\n/**\n * Validates accessibility props and returns warnings in development\n */\nexport function validateAccessibilityProps(\n props: AccessibilityProps,\n componentType: string,\n options: { children?: React.ReactNode; iconOnly?: boolean } = {}\n): void {\n if (process.env.NODE_ENV === 'production') {\n return;\n }\n\n const warnings: string[] = [];\n\n // Check for icon-only buttons without aria-label\n if (componentType === 'button' && options.iconOnly && !props['aria-label'] && !props['aria-labelledby']) {\n warnings.push(\n `[pd-design] Icon-only button should have an aria-label or aria-labelledby for accessibility.`\n );\n }\n\n // Check for interactive elements without accessible name\n if (\n (componentType === 'button' || componentType === 'link') &&\n !props['aria-label'] &&\n !props['aria-labelledby'] &&\n !extractTextFromChildren(options.children)\n ) {\n warnings.push(\n `[pd-design] ${componentType} should have an accessible name (aria-label, aria-labelledby, or text content).`\n );\n }\n\n // Check for form inputs without labels\n if (\n (componentType === 'input' || componentType === 'select' || componentType === 'textarea') &&\n !props['aria-label'] &&\n !props['aria-labelledby']\n ) {\n warnings.push(\n `[pd-design] ${componentType} should have an accessible label (aria-label or aria-labelledby).`\n );\n }\n\n // Warn about invalid tabIndex values\n if (props.tabIndex !== undefined && props.tabIndex > 0) {\n warnings.push(\n `[pd-design] tabIndex > 0 is not recommended. Use tabIndex={0} for focusable elements or tabIndex={-1} for programmatic focus only.`\n );\n }\n\n // Output warnings\n warnings.forEach(warning => console.warn(warning));\n}\n\n/**\n * Generates unique IDs for accessibility relationships\n */\nlet idCounter = 0;\nexport function generateId(prefix: string = 'pd'): string {\n return `${prefix}-${++idCounter}-${Date.now()}`;\n}\n\n/**\n * Keyboard event handlers for common patterns\n */\nexport interface KeyboardHandlers {\n onEnter?: (event: React.KeyboardEvent) => void;\n onEscape?: (event: React.KeyboardEvent) => void;\n onArrowUp?: (event: React.KeyboardEvent) => void;\n onArrowDown?: (event: React.KeyboardEvent) => void;\n onArrowLeft?: (event: React.KeyboardEvent) => void;\n onArrowRight?: (event: React.KeyboardEvent) => void;\n onHome?: (event: React.KeyboardEvent) => void;\n onEnd?: (event: React.KeyboardEvent) => void;\n onSpace?: (event: React.KeyboardEvent) => void;\n}\n\n/**\n * Creates a keyboard event handler that calls appropriate callbacks\n */\nexport function createKeyboardHandler(handlers: KeyboardHandlers) {\n return (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'Enter':\n handlers.onEnter?.(event);\n break;\n case 'Escape':\n handlers.onEscape?.(event);\n break;\n case 'ArrowUp':\n handlers.onArrowUp?.(event);\n break;\n case 'ArrowDown':\n handlers.onArrowDown?.(event);\n break;\n case 'ArrowLeft':\n handlers.onArrowLeft?.(event);\n break;\n case 'ArrowRight':\n handlers.onArrowRight?.(event);\n break;\n case 'Home':\n handlers.onHome?.(event);\n break;\n case 'End':\n handlers.onEnd?.(event);\n break;\n case ' ':\n handlers.onSpace?.(event);\n event.preventDefault(); // Prevent page scroll\n break;\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/types.ts","../src/theme/config.ts","../src/adapters/shadcn/utils.ts","../src/primitives/ButtonPrimitive.tsx","../src/utils/icons.ts","../src/adapters/shadcn/Button.tsx","../src/adapters/shadcn/ButtonGroup.tsx","../src/adapters/index.ts","../src/components/Button.tsx","../src/components/ButtonGroup.tsx","../src/components/PdProvider.tsx","../src/tokens/base.ts","../src/tokens/semantic.ts","../src/theme/theme.ts","../src/theme/ThemeProvider.tsx","../src/tokens/index.ts","../src/utils/accessibility.ts"],"names":["twMerge","clsx","forwardRef","React","jsx","LucideIcons","cva","jsxs","Fragment","Loader2","useMemo","createContext","useState","useEffect","useContext"],"mappings":"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","file":"index.cjs","sourcesContent":["// Single source of truth: define arrays first, then derive types from them\nexport const THEME_MODES = ['light', 'dark', 'system'] as const;\nexport const THEME_NAMES = ['base', 'brand'] as const;\nexport const ADAPTER_TYPES = ['shadcn', 'material'] as const;\n\n// Derive types from arrays to ensure they stay in sync\nexport type ThemeMode = typeof THEME_MODES[number];\nexport type ThemeName = typeof THEME_NAMES[number];\nexport type AdapterType = typeof ADAPTER_TYPES[number];\nexport const DEFAULT_MODE: ThemeMode = 'system';\nexport const [DEFAULT_THEME] = THEME_NAMES;\nexport const [DEFAULT_ADAPTER] = ADAPTER_TYPES;\n\nexport interface DesignSystemConfig {\n adapter: AdapterType;\n theme: ThemeName;\n mode: ThemeMode;\n}\n\nexport interface Theme {\n mode: ThemeMode;\n name: ThemeName;\n cssVariables: Record<string, string>;\n}\n","import type { DesignSystemConfig, AdapterType, ThemeName, ThemeMode } from './types';\nimport { DEFAULT_ADAPTER, DEFAULT_THEME, DEFAULT_MODE } from './types';\n\nlet globalConfig: DesignSystemConfig = {\n adapter: DEFAULT_ADAPTER,\n theme: DEFAULT_THEME,\n mode: DEFAULT_MODE,\n};\n\nexport function setDesignSystemConfig(config: Partial<DesignSystemConfig>): void {\n globalConfig = { ...globalConfig, ...config };\n}\n\nexport function getDesignSystemConfig(): DesignSystemConfig {\n return { ...globalConfig };\n}\n\nexport function getAdapter(): AdapterType {\n return globalConfig.adapter;\n}\n\nexport function getThemeName(): ThemeName {\n return globalConfig.theme;\n}\n\nexport function getThemeMode(): ThemeMode {\n return globalConfig.mode;\n}\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React, { forwardRef } from 'react';\nimport type { ButtonType } from '../tokens/semantic';\n\nexport interface ButtonPrimitiveProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n asChild?: boolean;\n type?: ButtonType;\n}\n\nexport const ButtonPrimitive = forwardRef<HTMLButtonElement, ButtonPrimitiveProps>(\n ({ asChild = false, type = 'button', children, ...props }, ref) => {\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ...props,\n ref,\n type,\n } as React.HTMLAttributes<HTMLElement>);\n }\n \n return (\n <button\n ref={ref}\n type={type}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButtonPrimitive.displayName = 'ButtonPrimitive';\n","/**\n * Icon Utility\n * \n * Dynamically loads icons from lucide-react by name.\n * Handles invalid icon names gracefully.\n */\n\nimport * as LucideIcons from 'lucide-react';\nimport React from 'react';\n\n// Type for valid lucide-react icon names\nexport type LucideIconName = keyof typeof LucideIcons;\n\n// Cache for icon components to avoid repeated lookups\n// Using React.ComponentType<any> here because lucide-react icons have specific prop requirements\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst iconCache = new Map<string, React.ComponentType<any>>();\n// Track which icons we've logged (to avoid spam)\nconst loggedIcons = new Set<string>();\n\n/**\n * Get an icon component from lucide-react by name\n * \n * @param iconName - Name of the icon (e.g., 'Download', 'Trash2', 'Plus')\n * @returns Icon component or null if icon doesn't exist\n * \n * @example\n * ```tsx\n * const Icon = getIcon('Download');\n * if (Icon) {\n * return <Icon className=\"h-4 w-4\" />;\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getIcon(iconName: string | undefined | null): React.ComponentType<any> | null {\n if (!iconName || typeof iconName !== 'string') {\n return null;\n }\n\n // Check cache first\n if (iconCache.has(iconName)) {\n return iconCache.get(iconName) || null;\n }\n\n // Try to get icon from lucide-react\n // Handle different naming conventions:\n // 1. Exact match (e.g., \"Download\")\n // 2. PascalCase (e.g., \"download\" -> \"Download\")\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let IconComponent: React.ComponentType<any> | null = null;\n\n // Try exact match first\n if (iconName in LucideIcons) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n IconComponent = (LucideIcons as unknown as Record<string, React.ComponentType<any>>)[iconName];\n } else {\n // Try PascalCase conversion\n const pascalCaseName = iconName.charAt(0).toUpperCase() + iconName.slice(1);\n if (pascalCaseName in LucideIcons) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n IconComponent = (LucideIcons as unknown as Record<string, React.ComponentType<any>>)[pascalCaseName];\n }\n }\n\n // If we found something, verify it's usable as a React component\n // React components can be functions or objects (memo, forwardRef, etc.)\n if (IconComponent) {\n // Verify it's a valid component - check if it's callable or has React component properties\n const isValidComponent = \n typeof IconComponent === 'function' || \n (typeof IconComponent === 'object' && IconComponent !== null);\n \n if (isValidComponent) {\n // Cache and return the icon component\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCache.set(iconName, IconComponent as React.ComponentType<any>);\n \n // Debug logging in development\n if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined') {\n // Only log once per icon to avoid spam\n if (!loggedIcons.has(iconName)) {\n console.debug(`[pd-design] Icon \"${iconName}\" found and cached`);\n loggedIcons.add(iconName);\n }\n }\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return IconComponent as React.ComponentType<any>;\n }\n }\n\n // Icon not found - return null (graceful handling)\n // Only warn in development to avoid console noise\n if (process.env.NODE_ENV !== 'production') {\n const availableIcons = Object.keys(LucideIcons)\n .filter(k => {\n const icon = (LucideIcons as Record<string, unknown>)[k];\n return !k.includes('Icon') && icon && (typeof icon === 'function' || typeof icon === 'object');\n })\n .slice(0, 10);\n console.warn(`[pd-design] Icon \"${iconName}\" not found in lucide-react. Available icons: ${availableIcons.join(', ')}...`);\n }\n return null;\n}\n\n/**\n * Render an icon component with proper sizing\n * \n * @param iconName - Name of the icon\n * @param size - Size class for the icon\n * @param className - Additional classes\n * @returns Rendered icon or null\n */\nexport function renderIcon(\n iconName: string | undefined | null,\n size: string = 'h-4 w-4',\n className?: string\n): React.ReactElement | null {\n const IconComponent = getIcon(iconName);\n \n if (!IconComponent) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return React.createElement(IconComponent as React.ComponentType<any>, { \n className: `${size} ${className || ''}`.trim() \n }) as React.ReactElement;\n}\n\n/**\n * Check if an icon name exists in lucide-react\n * \n * @param iconName - Name of the icon to check\n * @returns true if icon exists, false otherwise\n */\nexport function iconExists(iconName: string | undefined | null): boolean {\n return getIcon(iconName) !== null;\n}\n\n/**\n * Get list of available icon names (for autocomplete/validation)\n * Note: This returns all exported names from lucide-react\n */\nexport function getAvailableIconNames(): string[] {\n return Object.keys(LucideIcons).filter(\n (name) => {\n const icon = (LucideIcons as Record<string, unknown>)[name];\n return icon && (typeof icon === 'function' || typeof icon === 'object') && !name.includes('Icon');\n }\n );\n}\n","import React, { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { Loader2 } from 'lucide-react';\nimport { cn } from './utils';\nimport type { ButtonAdapterProps } from '../types';\nimport type { Size } from '../../tokens/semantic';\nimport { ButtonPrimitive } from '../../primitives/ButtonPrimitive';\nimport { getIcon } from '../../utils/icons';\n\nconst buttonVariants = cva(\n 'pd-inline-flex pd-items-center pd-justify-center pd-rounded-[var(--pd-radius-base)] pd-font-medium pd-transition-colors pd-focus-visible:outline-none pd-focus-visible:ring-2 pd-focus-visible:ring-[var(--pd-border-blue)] pd-focus-visible:ring-offset-2 pd-disabled:pointer-events-none pd-disabled:cursor-not-allowed pd-disabled:hover:pd-bg-[inherit] pd-disabled:hover:pd-text-[inherit] pd-disabled:hover:pd-border-[inherit] pd-disabled:active:pd-bg-[inherit] pd-disabled:active:pd-text-[inherit] pd-disabled:active:pd-border-[inherit] [font-family:var(--pd-font-sans,Gist,sans-serif)] pd-shadow-none',\n {\n variants: {\n variant: {\n primary: 'pd-border-0',\n secondary: 'pd-border',\n ghost: 'pd-border-0',\n destructive: 'pd-border-0'\n },\n intent: {\n primary: '',\n success: '',\n warning: '',\n danger: '',\n neutral: '',\n },\n size: {\n sm: 'pd-h-8 pd-px-3 pd-text-sm',\n md: 'pd-h-10 pd-px-4 pd-text-base',\n lg: 'pd-h-12 pd-px-6 pd-text-lg',\n },\n },\n compoundVariants: [\n // Primary variant - using new semantic tokens\n {\n variant: 'primary',\n intent: 'primary',\n class: 'pd-bg-[var(--pd-background-invert)] pd-text-[var(--pd-content-on-color)] hover:pd-bg-[var(--pd-background-invert-light)] active:pd-bg-[var(--pd-background-invert)]',\n },\n {\n variant: 'primary',\n intent: 'success',\n class: 'pd-bg-[var(--pd-intent-success-bg)] pd-text-[var(--pd-intent-success-text)] hover:pd-bg-[var(--pd-intent-success-bg-hover)] active:pd-bg-[var(--pd-intent-success-bg-active)]',\n },\n {\n variant: 'primary',\n intent: 'warning',\n class: 'pd-bg-[var(--pd-intent-warning-bg)] pd-text-[var(--pd-intent-warning-text)] hover:pd-bg-[var(--pd-intent-warning-bg-hover)] active:pd-bg-[var(--pd-intent-warning-bg-active)]',\n },\n {\n variant: 'primary',\n intent: 'danger',\n class: 'pd-bg-[var(--pd-intent-danger-bg)] pd-text-[var(--pd-destructive-foreground)] hover:pd-bg-[var(--pd-intent-danger-bg-hover)] active:pd-bg-[var(--pd-intent-danger-bg-active)] pd-disabled:pd-bg-[var(--pd-intent-danger-bg)] pd-disabled:pd-text-[var(--pd-content-subtle)]',\n },\n {\n variant: 'primary',\n intent: 'neutral',\n class: 'pd-bg-[var(--pd-intent-neutral-bg)] pd-text-[var(--pd-intent-neutral-text)] hover:pd-bg-[var(--pd-intent-neutral-bg-hover)] active:pd-bg-[var(--pd-intent-neutral-bg-active)]',\n },\n // Secondary variant - White bg default, always has light grey border\n {\n variant: 'secondary',\n intent: 'primary',\n class: 'pd-bg-[var(--pd-background-primary)] pd-text-[var(--pd-content-secondary)] hover:pd-bg-[var(--pd-background-low)] hover:pd-text-[var(--pd-content-primary)] active:pd-bg-[var(--pd-background-low-on-hover)] active:pd-text-[var(--pd-content-primary)] pd-border pd-border-[var(--pd-border-secondary)]',\n },\n {\n variant: 'secondary',\n intent: 'success',\n class: 'pd-bg-[var(--pd-intent-success-bg)] pd-text-[var(--pd-intent-success-text)] hover:pd-bg-[var(--pd-intent-success-bg-hover)] active:pd-bg-[var(--pd-intent-success-bg-active)] pd-border-[var(--pd-intent-success-border)]',\n },\n {\n variant: 'secondary',\n intent: 'warning',\n class: 'pd-bg-[var(--pd-intent-warning-bg)] pd-text-[var(--pd-intent-warning-text)] hover:pd-bg-[var(--pd-intent-warning-bg-hover)] active:pd-bg-[var(--pd-intent-warning-bg-active)] pd-border-[var(--pd-intent-warning-border)]',\n },\n {\n variant: 'secondary',\n intent: 'danger',\n class: 'pd-bg-[var(--pd-intent-danger-bg)] pd-text-[var(--pd-intent-danger-text)] hover:pd-bg-[var(--pd-intent-danger-bg-hover)] hover:pd-text-[var(--pd-intent-danger-hover)] active:pd-bg-[var(--pd-intent-danger-bg-active)] pd-border pd-border-[var(--pd-intent-danger-border)]',\n },\n {\n variant: 'secondary',\n intent: 'neutral',\n class: 'pd-bg-[var(--pd-intent-neutral-bg)] pd-text-[var(--pd-intent-neutral-text)] hover:pd-bg-[var(--pd-intent-neutral-bg-hover)] active:pd-bg-[var(--pd-intent-neutral-bg-active)] pd-border-[var(--pd-intent-neutral-border)]',\n },\n // Ghost variant - Transparent default, light grey fill on hover/pressed/loading\n {\n variant: 'ghost',\n intent: 'primary',\n class: 'pd-border-0 pd-bg-transparent pd-text-[var(--pd-content-secondary)] hover:pd-bg-[var(--pd-background-low)] hover:pd-text-[var(--pd-content-primary)] active:pd-bg-[var(--pd-background-low-on-hover)] active:pd-text-[var(--pd-content-primary)] pd-disabled:pd-text-[var(--pd-content-subtle)]',\n },\n {\n variant: 'ghost',\n intent: 'success',\n class: 'pd-border-0 pd-bg-transparent hover:pd-bg-[var(--pd-intent-success-bg)] pd-text-[var(--pd-intent-success-text)] hover:pd-text-[var(--pd-intent-success-hover)]',\n },\n {\n variant: 'ghost',\n intent: 'warning',\n class: 'pd-border-0 pd-bg-transparent hover:pd-bg-[var(--pd-intent-warning-bg)] pd-text-[var(--pd-intent-warning-text)] hover:pd-text-[var(--pd-intent-warning-hover)]',\n },\n {\n variant: 'ghost',\n intent: 'danger',\n class: 'pd-border-0 pd-bg-transparent pd-text-[var(--pd-intent-danger-text)] hover:pd-bg-[var(--pd-intent-danger-bg)] hover:pd-text-[var(--pd-intent-danger-hover)]',\n },\n {\n variant: 'ghost',\n intent: 'neutral',\n class: 'pd-border-0 pd-bg-transparent pd-text-[var(--pd-intent-neutral-text)] hover:pd-text-[var(--pd-intent-neutral-hover)]',\n },\n // Destructive variant - Red text, light red/pink background, different on hover/active/disabled\n {\n variant: 'destructive',\n intent: 'primary',\n class: 'pd-border-0 pd-bg-[var(--pd-background-red)] pd-text-[var(--pd-content-red)] hover:pd-bg-[var(--pd-background-red-on-hover)] hover:pd-text-[var(--pd-content-red-on-hover)] active:pd-bg-[var(--pd-intent-danger-bg-active)] pd-disabled:pd-bg-transparent pd-disabled:pd-text-[var(--pd-content-subtle)]',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n intent: 'primary',\n size: 'md',\n },\n }\n);\n\nexport const ShadcnButton = forwardRef<HTMLButtonElement, ButtonAdapterProps>(\n ({ \n variant = 'primary', \n intent = 'primary', \n size = 'md', \n disabled, \n loading, \n fullWidth,\n startIcon,\n endIcon,\n loadingText,\n asChild,\n href,\n target,\n children, \n ...props \n }, ref) => {\n\n // Build className from variants - no arbitrary classes allowed\n // Add loading and disabled state overrides based on specification\n const buttonClasses = cn(\n buttonVariants({ variant, intent, size }),\n fullWidth && 'pd-w-full',\n // Loading states - light mode (apply to all intents for secondary and ghost)\n loading && variant === 'primary' && intent === 'primary' && 'pd-bg-[var(--pd-background-tertiary)] pd-text-[var(--pd-content-secondary)]',\n loading && variant === 'secondary' && 'pd-bg-[var(--pd-background-tertiary)] pd-text-[var(--pd-content-secondary)] pd-border-[var(--pd-border-secondary)]',\n loading && variant === 'ghost' && '!pd-bg-[var(--pd-background-tertiary)] pd-text-[var(--pd-content-secondary)]',\n loading && variant === 'destructive' && 'pd-bg-[var(--pd-background-red)] pd-text-[var(--pd-content-red)]',\n // Disabled states - consistent across all variants (no hover/active changes)\n disabled && variant === 'primary' && 'pd-bg-[var(--pd-background-tertiary)] pd-text-[var(--pd-content-subtle)]',\n disabled && variant === 'secondary' && 'pd-bg-[var(--pd-background-tertiary)] pd-text-[var(--pd-content-subtle)] pd-border-[var(--pd-border-secondary)]',\n disabled && variant === 'ghost' && 'pd-bg-transparent pd-text-[var(--pd-content-subtle)]',\n disabled && variant === 'destructive' && 'pd-bg-transparent pd-text-[var(--pd-content-subtle)]',\n );\n\n // Handle link buttons\n if (href) {\n return (\n <ButtonPrimitive\n asChild={true}\n {...props}\n >\n <a\n href={href}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n className={buttonClasses}\n aria-disabled={disabled || loading}\n style={{ pointerEvents: disabled || loading ? 'none' : undefined }}\n >\n {renderButtonContent({ loading, loadingText, startIcon, endIcon, children, size, variant, intent })}\n </a>\n </ButtonPrimitive>\n );\n }\n\n return (\n <ButtonPrimitive\n ref={ref}\n disabled={disabled || loading}\n className={buttonClasses}\n asChild={asChild}\n {...props}\n >\n {renderButtonContent({ loading, loadingText, startIcon, endIcon, children, size, variant, intent })}\n </ButtonPrimitive>\n );\n }\n);\n\nfunction renderButtonContent({\n loading,\n loadingText,\n startIcon,\n endIcon,\n children,\n size,\n variant,\n intent,\n}: {\n loading?: boolean;\n loadingText?: string;\n startIcon?: string;\n endIcon?: string;\n children: React.ReactNode;\n size?: Size;\n variant?: string;\n intent?: string;\n}) {\n // Icon sizes based on button size\n const iconSizeClass = size === 'sm' ? 'pd-h-3 pd-w-3' : size === 'lg' ? 'pd-h-5 pd-w-5' : 'pd-h-4 pd-w-4';\n const spinnerSizeClass = size === 'sm' ? 'pd-h-3 pd-w-3' : size === 'lg' ? 'pd-h-5 pd-w-5' : 'pd-h-4 pd-w-4';\n const iconSpacing = size === 'sm' ? 'pd-mr-1.5' : size === 'lg' ? 'pd-mr-2.5' : 'pd-mr-2';\n const iconSpacingEnd = size === 'sm' ? 'pd-ml-1.5' : size === 'lg' ? 'pd-ml-2.5' : 'pd-ml-2';\n\n // Determine loading text/spinner color based on variant and intent\n const getLoadingTextColor = () => {\n if (variant === 'primary' && intent === 'primary') {\n return 'pd-text-[var(--pd-content-secondary)]'; // Grey for light grey background\n }\n if (variant === 'primary' && intent === 'danger') {\n return 'pd-text-[var(--pd-destructive-foreground)]'; // White for red background\n }\n if (variant === 'secondary' && intent === 'primary') {\n return 'pd-text-[var(--pd-content-secondary)]'; // Grey for light grey background\n }\n if (variant === 'ghost' && intent === 'primary') {\n return 'pd-text-[var(--pd-content-secondary)]'; // Grey for light grey background\n }\n if (variant === 'destructive') {\n return 'pd-text-[var(--pd-content-red)]'; // Red text for destructive\n }\n return 'pd-text-[var(--pd-content-secondary)]'; // Fallback\n };\n\n const loadingTextColor = getLoadingTextColor();\n\n if (loading) {\n return (\n <>\n <Loader2 \n aria-hidden=\"true\" \n className={`${spinnerSizeClass} ${iconSpacing} pd-animate-spin ${loadingTextColor}`} \n />\n <span className={loadingTextColor}>\n {loadingText || children}\n </span>\n <span className=\"pd-sr-only\">\n {loadingText ? `Loading: ${loadingText}` : 'Loading'}\n </span>\n </>\n );\n }\n\n // Get icon components from lucide-react by name\n const StartIconComponent = startIcon ? getIcon(startIcon) : null;\n const EndIconComponent = endIcon ? getIcon(endIcon) : null;\n\n // For icon-only buttons (no children), don't apply spacing\n const hasChildren = Boolean(children);\n const startIconSpacing = hasChildren ? iconSpacing : '';\n const endIconSpacing = hasChildren ? iconSpacingEnd : '';\n\n return (\n <>\n {StartIconComponent && (\n <span className={`${startIconSpacing} pd-inline-flex pd-items-center pd-justify-center`}>\n {React.createElement(StartIconComponent, { className: iconSizeClass })}\n </span>\n )}\n {children}\n {EndIconComponent && (\n <span className={`${endIconSpacing} pd-inline-flex pd-items-center pd-justify-center`}>\n {React.createElement(EndIconComponent, { className: iconSizeClass })}\n </span>\n )}\n </>\n );\n}\n\nShadcnButton.displayName = 'ShadcnButton';\n","import React, { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from './utils';\nimport type { ButtonGroupAdapterProps } from '../types';\n\nconst buttonGroupVariants = cva(\n 'pd-inline-flex',\n {\n variants: {\n orientation: {\n horizontal: 'pd-flex-row',\n vertical: 'pd-flex-col',\n },\n gap: {\n sm: 'pd-gap-1',\n md: 'pd-gap-2',\n lg: 'pd-gap-3',\n },\n fullWidth: {\n true: 'pd-w-full',\n false: '',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n gap: 'md',\n fullWidth: false,\n },\n }\n);\n\nexport const ShadcnButtonGroup = forwardRef<HTMLDivElement, ButtonGroupAdapterProps>(\n ({ \n orientation = 'horizontal',\n gap = 'md',\n fullWidth = false,\n children,\n className,\n ...props \n }, ref) => {\n const groupClasses = cn(\n buttonGroupVariants({ orientation, gap, fullWidth }),\n className\n );\n\n return (\n <div\n ref={ref}\n className={groupClasses}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nShadcnButtonGroup.displayName = 'ShadcnButtonGroup';\n","import { getAdapter } from '../theme/config';\nimport { ADAPTER_TYPES } from '../theme/types';\nimport * as ShadcnAdapter from './shadcn';\n// Material/Any other adapter will be imported when the adapter is installed\n// import * as MaterialAdapter from './material';\n\nconst [SHADCN_ADAPTER, MATERIAL_ADAPTER] = ADAPTER_TYPES;\n\nexport function getButtonAdapter() {\n const adapter = getAdapter();\n \n switch (adapter) {\n case SHADCN_ADAPTER:\n return ShadcnAdapter.ShadcnButton;\n case MATERIAL_ADAPTER:\n // Material adapter implementation available in src/adapters/material/Button.tsx\n // Uncomment when Material UI is installed:\n // return MaterialAdapter.MaterialButton;\n console.warn('Material adapter not yet enabled. Install @mui/material to use it.');\n return ShadcnAdapter.ShadcnButton;\n default:\n return ShadcnAdapter.ShadcnButton;\n }\n}\n\n// export function getInputAdapter() {\n// const adapter = getAdapter();\n \n// switch (adapter) {\n// case SHADCN_ADAPTER:\n// return ShadcnAdapter.ShadcnInput;\n// case MATERIAL_ADAPTER:\n// // Material adapter would go here\n// return ShadcnAdapter.ShadcnInput;\n// default:\n// return ShadcnAdapter.ShadcnInput;\n// }\n// }\n\n// export function getCardAdapter() {\n// const adapter = getAdapter();\n \n// switch (adapter) {\n// case SHADCN_ADAPTER:\n// return ShadcnAdapter.Card;\n// case MATERIAL_ADAPTER:\n// // Material adapter would go here\n// return ShadcnAdapter.Card;\n// default:\n// return ShadcnAdapter.Card;\n// }\n// }\n\nexport function getButtonGroupAdapter() {\n const adapter = getAdapter();\n \n switch (adapter) {\n case SHADCN_ADAPTER:\n return ShadcnAdapter.ShadcnButtonGroup;\n case MATERIAL_ADAPTER:\n // Material adapter would go here\n return ShadcnAdapter.ShadcnButtonGroup;\n default:\n return ShadcnAdapter.ShadcnButtonGroup;\n }\n}\n","import React, { forwardRef, useMemo } from 'react';\nimport { getButtonAdapter } from '../adapters';\nimport type { Intent, Variant, Size, ButtonType } from '../tokens/semantic';\n\nexport type { Intent, Variant, Size, ButtonType } from '../tokens/semantic';\n\nexport interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'className'> {\n variant?: Variant;\n intent?: Intent;\n size?: Size;\n loading?: boolean;\n fullWidth?: boolean;\n startIcon?: string;\n endIcon?: string;\n loadingText?: string;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n type?: ButtonType;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ \n variant = 'primary', \n intent = 'primary', \n size = 'md', \n loading, \n disabled,\n fullWidth,\n startIcon,\n endIcon,\n loadingText,\n href,\n target,\n children,\n ...props \n }, ref) => {\n const AdapterButton = getButtonAdapter();\n \n // Remove className if passed - we don't allow arbitrary classes\n const { className, ...restProps } = props as Omit<ButtonProps, 'variant' | 'intent' | 'size' | 'loading' | 'fullWidth' | 'startIcon' | 'endIcon' | 'loadingText' | 'href' | 'target' | 'type'> & { className?: string };\n if (className) {\n console.warn('Button component does not accept className prop. Use variant, intent, size, and other props for styling.');\n }\n \n // Apply sensible accessibility defaults based on component state\n const accessibilityProps = useMemo(() => {\n const defaults: Record<string, boolean> = {};\n \n // Auto-apply aria-disabled for disabled/loading state\n if (disabled || loading) {\n defaults['aria-disabled'] = true;\n }\n \n // Auto-apply aria-busy for loading state\n if (loading) {\n defaults['aria-busy'] = true;\n }\n \n return defaults;\n }, [disabled, loading]);\n \n // Merge defaults with user props (user props take precedence)\n const mergedProps = {\n ...restProps,\n ...accessibilityProps,\n };\n \n return (\n <AdapterButton\n ref={ref}\n variant={variant}\n intent={intent}\n size={size}\n disabled={disabled}\n loading={loading}\n fullWidth={fullWidth}\n startIcon={startIcon}\n endIcon={endIcon}\n loadingText={loadingText}\n href={href}\n target={target}\n {...mergedProps}\n >\n {children}\n </AdapterButton>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import React, { forwardRef } from 'react';\nimport { getButtonGroupAdapter } from '../adapters';\nimport type { Orientation, Size } from '../tokens/semantic';\n\nexport type { Orientation, Size } from '../tokens/semantic';\n\nexport interface ButtonGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className'> {\n orientation?: Orientation;\n fullWidth?: boolean;\n gap?: Size; // Reuse Size type for gap\n children: React.ReactNode;\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ \n orientation = 'horizontal',\n gap = 'md',\n fullWidth = false,\n children,\n ...props \n }, ref) => {\n const AdapterButtonGroup = getButtonGroupAdapter();\n \n // Remove className if passed - we don't allow arbitrary classes\n const { className, ...restProps } = props as Omit<ButtonGroupProps, 'orientation' | 'fullWidth' | 'gap'> & { className?: string };\n if (className) {\n console.warn('ButtonGroup component does not accept className prop. Use orientation, gap, fullWidth, and other props for styling.');\n }\n \n return (\n <AdapterButtonGroup\n ref={ref}\n orientation={orientation}\n gap={gap}\n fullWidth={fullWidth}\n {...restProps}\n >\n {children}\n </AdapterButtonGroup>\n );\n }\n);\n\nButtonGroup.displayName = 'ButtonGroup';","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport type PdProviderProps = {\n children: React.ReactNode;\n theme?: 'light' | 'dark';\n className?: string;\n};\n\n/**\n * PdProvider - Root provider for PD Design System\n * \n * This component creates a scoped boundary for all design system styles.\n * All tokens are scoped under .pd-root to prevent style leakage.\n * \n * @example\n * ```tsx\n * <PdProvider theme=\"light\">\n * <Button>Click me</Button>\n * </PdProvider>\n * ```\n */\nexport function PdProvider({ children, theme = 'light', className }: PdProviderProps) {\n return (\n <div className={clsx('pd-root', theme === 'dark' && 'pd-dark', className)}>\n {children}\n </div>\n );\n}\n\nPdProvider.displayName = 'PdProvider';\n","/**\n * Base Design Tokens\n * Framework-agnostic design tokens\n * \n * Color Primitives: These are the base color values that should not be used directly in components.\n * Use semantic tokens instead for better theme support.\n */\n\n// Color Primitives with 100-950 scale\nexport const neutral = {\n 100: \"#FFFFFF\",\n 200: \"#EDEDED\",\n 300: \"#DFDFE2\",\n 400: \"#BEBEC1\",\n 500: \"#7E7E8B\",\n 600: \"#60606C\",\n 700: \"#4E4E5A\",\n 800: \"#2F2F37\",\n 900: \"#17171C\",\n 950: \"#09090B\",\n 1000: \"#FAFAFA\",\n} as const;\n\nexport const blue = {\n 100: \"#EBF1FF\",\n 200: \"#C2D4FF\",\n 300: \"#99B7FF\",\n 400: \"#709AFF\",\n 500: \"#3772FF\",\n 600: \"#004BFF\",\n 700: \"#003FD6\",\n 800: \"#002680\",\n 900: \"#001E66\",\n 950: \"#00123D\",\n} as const;\n\nexport const orange = {\n 100: \"#FFF3EB\",\n 200: \"#FFE1CC\",\n 300: \"#FFC9A3\",\n 400: \"#EC9C64\",\n 500: \"#FF6800\",\n 600: \"#D65700\",\n 700: \"#AD4700\",\n 800: \"#7A3200\",\n 900: \"#5C2500\",\n 950: \"#331500\",\n} as const;\n\nexport const red = {\n 100: \"#FDF2F4\",\n 200: \"#FADBE1\",\n 300: \"#F6C1CA\",\n 400: \"#E15C5C\",\n 500: \"#E12D4E\",\n 600: \"#C41C3B\",\n 700: \"#A11730\",\n 800: \"#7D1225\",\n 900: \"#4C0B17\",\n 950: \"#2D060D\",\n} as const;\n\nexport const green = {\n 100: \"#E0FFEC\",\n 200: \"#BDFFD5\",\n 300: \"#8AFFB5\",\n 400: \"#5CFF98\",\n 500: \"#09FF63\",\n 600: \"#00E052\",\n 700: \"#00B241\",\n 800: \"#008A32\",\n 900: \"#006625\",\n 950: \"#00471A\",\n} as const;\n\nexport const yellow = {\n 100: \"#FFF4E0\",\n 200: \"#FFE8C2\",\n 300: \"#FFD999\",\n 400: \"#FFCA70\",\n 500: \"#FFAD22\",\n 600: \"#F09700\",\n 700: \"#D68700\",\n 800: \"#7A4D00\",\n 900: \"#5C3A00\",\n 950: \"#3D2600\",\n} as const;\n\nexport const colorPrimitives = {\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n} as const;\n\n// Legacy colors object for backward compatibility\nexport const colors = {\n // Neutral palette (mapped from new scale)\n white: neutral[100],\n black: neutral[950],\n gray50: neutral[200],\n gray100: neutral[300],\n gray200: neutral[400],\n gray300: neutral[500],\n gray400: neutral[500],\n gray500: neutral[500],\n gray600: neutral[600],\n gray700: neutral[700],\n gray800: neutral[800],\n gray900: neutral[900],\n \n // Primary palette (mapped from blue)\n blue50: blue[100],\n blue100: blue[100],\n blue200: blue[200],\n blue300: blue[300],\n blue400: blue[400],\n blue500: blue[500],\n blue600: blue[600],\n blue700: blue[700],\n blue800: blue[800],\n blue900: blue[900],\n \n // Success palette (mapped from green)\n green50: green[100],\n green100: green[100],\n green200: green[200],\n green300: green[300],\n green400: green[400],\n green500: green[500],\n green600: green[600],\n green700: green[700],\n green800: green[800],\n green900: green[900],\n \n // Warning palette (mapped from yellow)\n yellow50: yellow[100],\n yellow100: yellow[100],\n yellow200: yellow[200],\n yellow300: yellow[300],\n yellow400: yellow[400],\n yellow500: yellow[500],\n yellow600: yellow[600],\n yellow700: yellow[700],\n yellow800: yellow[800],\n yellow900: yellow[900],\n \n // Danger palette (mapped from red)\n red50: red[100],\n red100: red[100],\n red200: red[200],\n red300: red[300],\n red400: red[400],\n red500: red[500],\n red600: red[600],\n red700: red[700],\n red800: red[800],\n red900: red[900],\n} as const;\n\nexport const typography = {\n fontFamily: {\n sans: ['Gist', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'sans-serif'],\n mono: ['Gist Mono', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace'],\n },\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n '5xl': '3rem', // 48px\n },\n fontWeight: {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n lineHeight: {\n tight: '1.25',\n normal: '1.5',\n relaxed: '1.75',\n },\n} as const;\n\nexport const spacing = {\n 0: '0',\n 1: '0.25rem', // 4px\n 2: '0.5rem', // 8px\n 3: '0.75rem', // 12px\n 4: '1rem', // 16px\n 5: '1.25rem', // 20px\n 6: '1.5rem', // 24px\n 8: '2rem', // 32px\n 10: '2.5rem', // 40px\n 12: '3rem', // 48px\n 16: '4rem', // 64px\n 20: '5rem', // 80px\n 24: '6rem', // 96px\n} as const;\n\nexport const radius = {\n none: '0',\n sm: '0.125rem', // 2px\n base: '0.25rem', // 4px\n md: '0.375rem', // 6px\n lg: '0.5rem', // 8px\n xl: '0.75rem', // 12px\n '2xl': '1rem', // 16px\n '3xl': '1.5rem', // 24px\n full: '9999px',\n} as const;\n\nexport const shadows = {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n base: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n} as const;\n\nexport const zIndex = {\n base: 0,\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n} as const;\n\nexport type ColorPrimitives = typeof colorPrimitives;\nexport type Colors = typeof colors;\nexport type Typography = typeof typography;\nexport type Spacing = typeof spacing;\nexport type Radius = typeof radius;\nexport type Shadows = typeof shadows;\nexport type ZIndex = typeof zIndex;\n\n// Single source of truth: define array first, then derive type from it\nexport const COLOR_SCALES = [100, 200, 300, 400, 500, 600, 700, 800, 900, 950, 1000] as const;\n\n// Color name and scale types\nexport type ColorName = keyof typeof colorPrimitives;\nexport type ColorScale = typeof COLOR_SCALES[number];\n","/**\n * Semantic Tokens\n * These tokens should be used in components for consistent theming.\n * They map to color primitives and change based on theme (light/dark).\n */\n\nimport { neutral, blue, orange, red, green, yellow } from './base';\nimport type { ThemeMode } from '../theme/types';\n\n/**\n * Border Tokens\n */\nexport const borderTokens = {\n dark: {\n primary: neutral[700],\n secondary: neutral[800],\n subtle: neutral[800],\n invert: neutral[100],\n onColor: neutral[950],\n blue: blue[400],\n blueSubtle: blue[800],\n blueOnHover: blue[500],\n red: red[400],\n redSubtle: red[900],\n redOnHover: red[500],\n orange: orange[400],\n orangeSubtle: orange[900],\n orangeOnHover: orange[500],\n yellow: yellow[400],\n yellowSubtle: yellow[900],\n yellowOnHover: yellow[500],\n green: green[600],\n greenSubtle: green[900],\n greenOnHover: green[700],\n },\n light: {\n primary: neutral[400],\n secondary: neutral[300],\n subtle: neutral[300],\n invert: neutral[950],\n onColor: neutral[100],\n blue: blue[500],\n blueSubtle: blue[300],\n blueOnHover: blue[700],\n red: red[600],\n redSubtle: red[300],\n redOnHover: red[700],\n orange: orange[600],\n orangeSubtle: orange[300],\n orangeOnHover: orange[700],\n yellow: yellow[600],\n yellowSubtle: yellow[300],\n yellowOnHover: yellow[700],\n green: green[600],\n greenSubtle: green[300],\n greenOnHover: green[700],\n },\n} as const;\n\n/**\n * Content Tokens (Text/Foreground)\n */\nexport const contentTokens = {\n dark: {\n primary: neutral[300],\n secondary: neutral[500],\n subtle: neutral[700],\n onColor: neutral[950],\n alwaysWhite: neutral[100],\n alwaysBlack: neutral[950],\n onColorInverse: neutral[100],\n blue: blue[400],\n blueDisabled: blue[800],\n blueOnHover: blue[500],\n green: green[600],\n greenDisabled: green[800],\n greenOnHover: green[500],\n red: red[400],\n redDisabled: red[800],\n redOnHover: red[300],\n orange: orange[400],\n orangeDisabled: orange[800],\n orangeOnHover: orange[300],\n yellow: yellow[400],\n yellowDisabled: yellow[800],\n yellowOnHover: yellow[300],\n },\n light: {\n primary: neutral[900],\n secondary: neutral[600],\n subtle: neutral[400],\n onColor: neutral[100],\n alwaysWhite: neutral[100],\n alwaysBlack: neutral[950],\n onColorInverse: neutral[950],\n blue: blue[500],\n blueDisabled: blue[400],\n blueOnHover: blue[600],\n green: green[700],\n greenDisabled: green[400],\n greenOnHover: green[600],\n red: red[600],\n redDisabled: red[400],\n redOnHover: red[700],\n orange: orange[600],\n orangeDisabled: orange[400],\n orangeOnHover: orange[700],\n yellow: yellow[600],\n yellowDisabled: yellow[400],\n yellowOnHover: yellow[700],\n },\n} as const;\n\n/**\n * Background Tokens\n */\nexport const backgroundTokens = {\n dark: {\n primary: neutral[950], \n system: neutral[950], \n secondary: neutral[900],\n tertiary: neutral[800],\n invert: neutral[100],\n invertLight: neutral[300],\n green: green[950],\n greenOnHover: green[900],\n red: red[950],\n redOnHover: red[900],\n orange: orange[950],\n orangeOnHover: orange[900],\n yellow: yellow[950],\n yellowOnHover: yellow[900],\n low: neutral[900],\n lowOnHover: neutral[800],\n info: blue[950], \n infoOnHover: blue[900],\n base: neutral[950],\n },\n light: {\n primary: neutral[100],\n system: neutral[1000],\n secondary: neutral[200],\n tertiary: neutral[300],\n invert: neutral[950],\n invertLight: neutral[900],\n green: green[100],\n greenOnHover: green[200],\n red: red[100],\n redOnHover: red[200],\n orange: orange[100],\n orangeOnHover: orange[200],\n yellow: orange[100],\n yellowOnHover: orange[200],\n low: neutral[200],\n lowOnHover: neutral[300],\n info: blue[100],\n infoOnHover: blue[300],\n base: neutral[100], \n },\n} as const;\n\nexport const semanticTokens = {\n border: borderTokens,\n content: contentTokens,\n background: backgroundTokens,\n} as const;\n\n// Single source of truth: define arrays first, then derive types from them\nexport const VARIANTS = ['primary', 'secondary', 'ghost', 'destructive'] as const;\nexport const INTENTS = ['primary', 'success', 'warning', 'danger', 'neutral'] as const;\nexport const SIZES = ['sm', 'md', 'lg'] as const;\nexport const BUTTON_TYPES = ['button', 'submit', 'reset'] as const;\nexport const INPUT_TYPES = ['text', 'email', 'password', 'number', 'tel', 'url', 'search'] as const;\nexport const ORIENTATIONS = ['horizontal', 'vertical'] as const;\nexport const SURFACE_LEVELS = ['base', 'elevated', 'overlay'] as const;\n\n// Derive types from arrays to ensure they stay in sync\nexport type Variant = typeof VARIANTS[number];\nexport type Intent = typeof INTENTS[number];\nexport type Size = typeof SIZES[number];\nexport type ButtonType = typeof BUTTON_TYPES[number];\nexport type InputType = typeof INPUT_TYPES[number];\nexport type Orientation = typeof ORIENTATIONS[number];\nexport type SurfaceLevel = typeof SURFACE_LEVELS[number];\n\n// New semantic token types\nexport type BorderToken = keyof typeof borderTokens.light;\nexport type ContentToken = keyof typeof contentTokens.light;\nexport type BackgroundToken = keyof typeof backgroundTokens.light;\nexport type SemanticToken = BorderToken | ContentToken | BackgroundToken;\n\n// Legacy interface for backward compatibility\nexport interface SemanticTokens {\n intent: {\n [K in Intent]: {\n color: string;\n colorHover: string;\n colorActive: string;\n background: string;\n backgroundHover: string;\n backgroundActive: string;\n border: string;\n text: string;\n textMuted: string;\n };\n };\n surface: {\n [K in SurfaceLevel]: {\n background: string;\n border: string;\n };\n };\n text: {\n heading: string;\n body: string;\n muted: string;\n disabled: string;\n };\n}\n\n/**\n * Legacy function for backward compatibility\n * Maps new semantic tokens to old structure\n */\nexport function createSemanticTokens(mode: ThemeMode): SemanticTokens {\n const isLight = mode === 'light';\n const border = isLight ? borderTokens.light : borderTokens.dark;\n const content = isLight ? contentTokens.light : contentTokens.dark;\n const background = isLight ? backgroundTokens.light : backgroundTokens.dark;\n \n return {\n intent: {\n primary: {\n color: content.secondary,\n colorHover: isLight ? neutral[700] : neutral[300],\n colorActive: isLight ? neutral[800] : neutral[200],\n background: background.secondary,\n backgroundHover: background.lowOnHover,\n backgroundActive: background.tertiary,\n border: border.primary,\n text: content.primary,\n textMuted: content.subtle,\n },\n success: {\n color: isLight ? green[600] : green[600],\n colorHover: isLight ? green[700] : green[500],\n colorActive: isLight ? green[800] : green[700],\n background: background.green,\n backgroundHover: background.greenOnHover,\n backgroundActive: isLight ? green[300] : green[800],\n border: border.green,\n text: content.green,\n textMuted: isLight ? green[700] : green[300],\n },\n warning: {\n color: isLight ? yellow[600] : yellow[400],\n colorHover: isLight ? yellow[700] : yellow[300],\n colorActive: isLight ? yellow[800] : yellow[500],\n background: background.yellow,\n backgroundHover: background.yellowOnHover,\n backgroundActive: isLight ? yellow[200] : yellow[900],\n border: border.yellow,\n text: content.yellow,\n textMuted: isLight ? yellow[700] : yellow[300],\n },\n danger: {\n color: isLight ? red[600] : red[400],\n colorHover: isLight ? red[700] : red[300],\n colorActive: isLight ? red[800] : red[500],\n background: background.red,\n backgroundHover: background.redOnHover,\n backgroundActive: isLight ? red[200] : red[900],\n border: border.red,\n text: content.red,\n textMuted: isLight ? red[700] : red[300],\n },\n neutral: {\n color: content.secondary,\n colorHover: isLight ? neutral[700] : neutral[300],\n colorActive: isLight ? neutral[800] : neutral[200],\n background: background.secondary,\n backgroundHover: background.lowOnHover,\n backgroundActive: background.tertiary,\n border: border.primary,\n text: content.primary,\n textMuted: content.subtle,\n },\n },\n surface: {\n base: {\n background: background.primary,\n border: border.primary,\n },\n elevated: {\n background: background.secondary,\n border: border.secondary,\n },\n overlay: {\n background: isLight ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0.7)',\n border: 'transparent',\n },\n },\n text: {\n heading: content.primary,\n body: content.primary,\n muted: content.subtle,\n disabled: isLight ? content.subtle : neutral[600],\n },\n };\n}\n","import { colors, spacing, radius, shadows, typography, zIndex } from '../tokens/base';\nimport { createSemanticTokens, borderTokens, contentTokens, backgroundTokens } from '../tokens/semantic';\nimport type { Theme, ThemeMode, ThemeName } from './types';\n\n/**\n * Resolves 'system' mode to either 'light' or 'dark' based on OS preference\n * Falls back to 'light' if matchMedia is not available (SSR)\n */\nexport function resolveThemeMode(mode: ThemeMode): 'light' | 'dark' {\n if (mode !== 'system') {\n return mode;\n }\n \n // Check if we're in a browser environment\n if (typeof window !== 'undefined' && window.matchMedia) {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n \n // Default to light for SSR or when matchMedia is not available\n return 'light';\n}\n\nexport function createTheme(name: ThemeName, mode: ThemeMode): Theme {\n const resolvedMode = resolveThemeMode(mode);\n const semantic = createSemanticTokens(resolvedMode);\n const isLight = resolvedMode === 'light';\n \n // Get current theme tokens\n const border = isLight ? borderTokens.light : borderTokens.dark;\n const content = isLight ? contentTokens.light : contentTokens.dark;\n const background = isLight ? backgroundTokens.light : backgroundTokens.dark;\n \n // Helper function to convert camelCase to kebab-case\n const toKebabCase = (str: string): string => {\n return str.replace(/([A-Z])/g, '-$1').toLowerCase();\n };\n\n const cssVariables: Record<string, string> = {\n // Base colors\n '--color-white': colors.white,\n '--color-black': colors.black,\n \n // Intent colors\n '--intent-primary': semantic.intent.primary.color,\n '--intent-primary-hover': semantic.intent.primary.colorHover,\n '--intent-primary-active': semantic.intent.primary.colorActive,\n '--intent-primary-bg': semantic.intent.primary.background,\n '--intent-primary-bg-hover': semantic.intent.primary.backgroundHover,\n '--intent-primary-bg-active': semantic.intent.primary.backgroundActive,\n '--intent-primary-border': semantic.intent.primary.border,\n '--intent-primary-text': semantic.intent.primary.text,\n \n '--intent-success': semantic.intent.success.color,\n '--intent-success-hover': semantic.intent.success.colorHover,\n '--intent-success-active': semantic.intent.success.colorActive,\n '--intent-success-bg': semantic.intent.success.background,\n '--intent-success-bg-hover': semantic.intent.success.backgroundHover,\n '--intent-success-bg-active': semantic.intent.success.backgroundActive,\n '--intent-success-border': semantic.intent.success.border,\n '--intent-success-text': semantic.intent.success.text,\n \n '--intent-warning': semantic.intent.warning.color,\n '--intent-warning-hover': semantic.intent.warning.colorHover,\n '--intent-warning-active': semantic.intent.warning.colorActive,\n '--intent-warning-bg': semantic.intent.warning.background,\n '--intent-warning-bg-hover': semantic.intent.warning.backgroundHover,\n '--intent-warning-bg-active': semantic.intent.warning.backgroundActive,\n '--intent-warning-border': semantic.intent.warning.border,\n '--intent-warning-text': semantic.intent.warning.text,\n \n '--intent-danger': semantic.intent.danger.color,\n '--intent-danger-hover': semantic.intent.danger.colorHover,\n '--intent-danger-active': semantic.intent.danger.colorActive,\n '--intent-danger-bg': semantic.intent.danger.background,\n '--intent-danger-bg-hover': semantic.intent.danger.backgroundHover,\n '--intent-danger-bg-active': semantic.intent.danger.backgroundActive,\n '--intent-danger-border': semantic.intent.danger.border,\n '--intent-danger-text': semantic.intent.danger.text,\n \n '--intent-neutral': semantic.intent.neutral.color,\n '--intent-neutral-hover': semantic.intent.neutral.colorHover,\n '--intent-neutral-active': semantic.intent.neutral.colorActive,\n '--intent-neutral-bg': semantic.intent.neutral.background,\n '--intent-neutral-bg-hover': semantic.intent.neutral.backgroundHover,\n '--intent-neutral-bg-active': semantic.intent.neutral.backgroundActive,\n '--intent-neutral-border': semantic.intent.neutral.border,\n '--intent-neutral-text': semantic.intent.neutral.text,\n \n // Surface\n '--surface-base': semantic.surface.base.background,\n '--surface-base-border': semantic.surface.base.border,\n '--surface-elevated': semantic.surface.elevated.background,\n '--surface-elevated-border': semantic.surface.elevated.border,\n '--surface-overlay': semantic.surface.overlay.background,\n \n // Text\n '--text-heading': semantic.text.heading,\n '--text-body': semantic.text.body,\n '--text-muted': semantic.text.muted,\n '--text-disabled': semantic.text.disabled,\n \n // Spacing\n '--spacing-0': spacing[0],\n '--spacing-1': spacing[1],\n '--spacing-2': spacing[2],\n '--spacing-3': spacing[3],\n '--spacing-4': spacing[4],\n '--spacing-5': spacing[5],\n '--spacing-6': spacing[6],\n '--spacing-8': spacing[8],\n '--spacing-10': spacing[10],\n '--spacing-12': spacing[12],\n '--spacing-16': spacing[16],\n '--spacing-20': spacing[20],\n '--spacing-24': spacing[24],\n \n // Radius\n '--radius-none': radius.none,\n '--radius-sm': radius.sm,\n '--radius-base': radius.base,\n '--radius-md': radius.md,\n '--radius-lg': radius.lg,\n '--radius-xl': radius.xl,\n '--radius-2xl': radius['2xl'],\n '--radius-3xl': radius['3xl'],\n '--radius-full': radius.full,\n \n // Shadows\n '--shadow-sm': shadows.sm,\n '--shadow-base': shadows.base,\n '--shadow-md': shadows.md,\n '--shadow-lg': shadows.lg,\n '--shadow-xl': shadows.xl,\n '--shadow-2xl': shadows['2xl'],\n '--shadow-inner': shadows.inner,\n '--shadow-none': shadows.none,\n \n // Z-index\n '--z-dropdown': String(zIndex.dropdown),\n '--z-sticky': String(zIndex.sticky),\n '--z-fixed': String(zIndex.fixed),\n '--z-modal-backdrop': String(zIndex.modalBackdrop),\n '--z-modal': String(zIndex.modal),\n '--z-popover': String(zIndex.popover),\n '--z-tooltip': String(zIndex.tooltip),\n \n // Typography\n '--font-sans': typography.fontFamily.sans.join(', '),\n '--font-mono': typography.fontFamily.mono.join(', '),\n '--font-size-xs': typography.fontSize.xs,\n '--font-size-sm': typography.fontSize.sm,\n '--font-size-base': typography.fontSize.base,\n '--font-size-lg': typography.fontSize.lg,\n '--font-size-xl': typography.fontSize.xl,\n '--font-size-2xl': typography.fontSize['2xl'],\n '--font-size-3xl': typography.fontSize['3xl'],\n '--font-size-4xl': typography.fontSize['4xl'],\n '--font-size-5xl': typography.fontSize['5xl'],\n '--font-weight-normal': typography.fontWeight.normal,\n '--font-weight-medium': typography.fontWeight.medium,\n '--font-weight-semibold': typography.fontWeight.semibold,\n '--font-weight-bold': typography.fontWeight.bold,\n '--line-height-tight': typography.lineHeight.tight,\n '--line-height-normal': typography.lineHeight.normal,\n '--line-height-relaxed': typography.lineHeight.relaxed,\n \n // shadcn/ui CSS variable mappings for compatibility\n '--background': semantic.surface.base.background,\n '--foreground': semantic.text.body,\n '--card': semantic.surface.elevated.background,\n '--card-foreground': semantic.text.body,\n '--popover': semantic.surface.elevated.background,\n '--popover-foreground': semantic.text.body,\n '--primary': semantic.intent.primary.color,\n '--primary-foreground': colors.white,\n '--secondary': semantic.intent.neutral.background,\n '--secondary-foreground': semantic.intent.neutral.text,\n '--muted': semantic.intent.neutral.background,\n '--muted-foreground': semantic.text.muted,\n '--accent': semantic.intent.primary.background,\n '--accent-foreground': semantic.intent.primary.text,\n '--destructive': semantic.intent.danger.color,\n '--destructive-foreground': colors.white,\n '--border': semantic.intent.neutral.border,\n '--input': semantic.intent.neutral.border,\n '--ring': semantic.intent.primary.color,\n '--radius': radius.md,\n \n // New semantic token CSS variables (border, content, background)\n // Border tokens - convert camelCase keys to kebab-case\n ...Object.entries(border).reduce((acc, [key, value]) => {\n acc[`--border-${toKebabCase(key)}`] = value;\n return acc;\n }, {} as Record<string, string>),\n \n // Content tokens - convert camelCase keys to kebab-case\n ...Object.entries(content).reduce((acc, [key, value]) => {\n acc[`--content-${toKebabCase(key)}`] = value;\n return acc;\n }, {} as Record<string, string>),\n \n // Background tokens - convert camelCase keys to kebab-case\n // Note: Now background.primary = base background (matches reference structure)\n // The blue/info background is available as background.info\n ...Object.entries(background).reduce((acc, [key, value]) => {\n // Skip 'base' as it's just a legacy alias for 'primary'\n if (key === 'base') {\n return acc;\n }\n acc[`--background-${toKebabCase(key)}`] = value;\n return acc;\n }, {} as Record<string, string>),\n };\n \n return {\n name,\n mode: resolvedMode, // Store the resolved mode (light/dark) not 'system'\n cssVariables,\n };\n}\n","import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport { createTheme, resolveThemeMode } from './theme';\nimport { setDesignSystemConfig, getDesignSystemConfig } from './config';\nimport type { DesignSystemConfig, ThemeMode, ThemeName } from './types';\nimport { DEFAULT_ADAPTER, DEFAULT_THEME, DEFAULT_MODE } from './types';\n\ninterface ThemeContextValue {\n config: DesignSystemConfig;\n setConfig: (config: Partial<DesignSystemConfig>) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n adapter?: DesignSystemConfig['adapter'];\n theme?: ThemeName;\n mode?: ThemeMode;\n}\n\nexport function ThemeProvider({\n children,\n adapter = DEFAULT_ADAPTER,\n theme: themeName = DEFAULT_THEME,\n mode = DEFAULT_MODE,\n}: ThemeProviderProps) {\n // Track the resolved mode for system theme\n const [resolvedMode, setResolvedMode] = useState<'light' | 'dark'>(() => \n resolveThemeMode(mode)\n );\n \n // Listen to system preference changes when mode is 'system'\n useEffect(() => {\n if (mode !== 'system' || typeof window === 'undefined' || !window.matchMedia) {\n return;\n }\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent | MediaQueryList) => {\n setResolvedMode(e.matches ? 'dark' : 'light');\n };\n \n // Set initial value\n handleChange(mediaQuery);\n \n // Listen for changes\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n } else {\n // Fallback for older browsers\n mediaQuery.addListener(handleChange);\n return () => mediaQuery.removeListener(handleChange);\n }\n }, [mode]);\n \n // Update resolved mode when mode prop changes\n useEffect(() => {\n if (mode !== 'system') {\n setResolvedMode(mode === 'dark' ? 'dark' : 'light');\n }\n }, [mode]);\n \n const theme = useMemo(() => {\n const effectiveMode = mode === 'system' ? resolvedMode : mode;\n return createTheme(themeName, effectiveMode);\n }, [themeName, mode, resolvedMode]);\n \n useEffect(() => {\n setDesignSystemConfig({ adapter, theme: themeName, mode });\n }, [adapter, themeName, mode]);\n \n useEffect(() => {\n const root = document.documentElement;\n const effectiveMode = mode === 'system' ? resolvedMode : mode;\n \n // Update class for dark mode\n if (effectiveMode === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n \n Object.entries(theme.cssVariables).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n \n return () => {\n Object.keys(theme.cssVariables).forEach((key) => {\n root.style.removeProperty(key);\n });\n };\n }, [theme, mode, resolvedMode]);\n \n const contextValue = useMemo<ThemeContextValue>(() => ({\n config: getDesignSystemConfig(),\n setConfig: setDesignSystemConfig,\n }), []);\n \n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within ThemeProvider');\n }\n return context;\n}\n","export * from './base';\nexport * from './semantic';\n\n// Re-export base tokens for convenience\nexport {\n colorPrimitives,\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n colors,\n typography,\n spacing,\n radius,\n shadows,\n zIndex,\n COLOR_SCALES,\n type ColorPrimitives,\n type Colors,\n type Typography,\n type Spacing,\n type Radius,\n type Shadows,\n type ZIndex,\n type ColorName,\n type ColorScale,\n} from './base';\n\n// Re-export semantic tokens and types for convenience\nexport {\n semanticTokens,\n borderTokens,\n contentTokens,\n backgroundTokens,\n // Arrays (single source of truth)\n VARIANTS,\n INTENTS,\n SIZES,\n BUTTON_TYPES,\n INPUT_TYPES,\n ORIENTATIONS,\n SURFACE_LEVELS,\n // Types derived from arrays\n type Variant,\n type Intent,\n type Size,\n type ButtonType,\n type InputType,\n type Orientation,\n type SurfaceLevel,\n // Other semantic types\n type BorderToken,\n type ContentToken,\n type BackgroundToken,\n type SemanticToken,\n} from './semantic';\n\n// Import for grouped tokens object\nimport {\n colorPrimitives,\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n colors as legacyColors,\n typography,\n spacing,\n radius,\n shadows,\n zIndex,\n} from './base';\n\nimport {\n semanticTokens,\n borderTokens,\n contentTokens,\n backgroundTokens,\n} from './semantic';\n\n/**\n * Grouped design tokens for convenient access\n * \n * Provides a structured object containing all design tokens organized by category.\n * This allows for easy access like `tokens.colors.blue[500]` or `tokens.spacing[4]`.\n * \n * @example\n * ```ts\n * import { tokens } from '@pd-design/system';\n * \n * // Access color primitives\n * const primaryColor = tokens.colors.blue[500];\n * const grayColor = tokens.colors.neutral[600];\n * \n * // Access semantic tokens\n * const borderColor = tokens.semantic.border.light.primary;\n * \n * // Access spacing\n * const padding = tokens.spacing[4];\n * \n * // Access typography\n * const fontSize = tokens.typography.fontSize.base;\n * ```\n */\nexport const tokens = {\n colors: {\n // Individual color scales\n neutral,\n blue,\n orange,\n red,\n green,\n yellow,\n // All colors grouped together\n all: colorPrimitives,\n // Legacy color names (for backward compatibility)\n legacy: legacyColors,\n },\n semantic: {\n border: borderTokens,\n content: contentTokens,\n background: backgroundTokens,\n // Full semantic tokens object\n all: semanticTokens,\n },\n spacing,\n typography,\n radius,\n shadows,\n zIndex,\n} as const;\n\n// Type export for better developer experience\nexport type Tokens = typeof tokens;\n","/**\n * Accessibility Utilities\n * \n * Provides utilities and types for ensuring excellent accessibility scores\n * across all components. Supports both user-provided and default accessibility props.\n */\n\nimport React from 'react';\n\n/**\n * Accessibility props that can be passed by users or use defaults\n */\nexport interface AccessibilityProps {\n /**\n * Accessible label for the element.\n * If not provided, will attempt to generate from children or other props.\n */\n 'aria-label'?: string;\n \n /**\n * Reference to element(s) that describe this element.\n */\n 'aria-describedby'?: string;\n \n /**\n * Reference to element(s) that label this element.\n */\n 'aria-labelledby'?: string;\n \n /**\n * Indicates the current state of the element.\n */\n 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean;\n \n /**\n * Indicates whether the element is expanded or collapsed.\n */\n 'aria-expanded'?: boolean;\n \n /**\n * Indicates whether the element is selected.\n */\n 'aria-selected'?: boolean;\n \n /**\n * Indicates whether the element is checked.\n */\n 'aria-checked'?: boolean | 'mixed';\n \n /**\n * Indicates whether the element is disabled.\n */\n 'aria-disabled'?: boolean;\n \n /**\n * Indicates whether the element is required.\n */\n 'aria-required'?: boolean;\n \n /**\n * Indicates whether the element has invalid input.\n */\n 'aria-invalid'?: boolean | 'grammar' | 'spelling';\n \n /**\n * Describes the error message for invalid input.\n */\n 'aria-errormessage'?: string;\n \n /**\n * Indicates the element's role.\n */\n role?: string;\n \n /**\n * Tab index for keyboard navigation.\n * -1: Not focusable, 0: Focusable in tab order, >0: Custom tab order (not recommended)\n */\n tabIndex?: number;\n \n /**\n * Indicates whether the element should be hidden from assistive technologies.\n */\n 'aria-hidden'?: boolean;\n \n /**\n * Indicates whether the element is live and should be announced.\n */\n 'aria-live'?: 'off' | 'polite' | 'assertive';\n \n /**\n * Indicates whether the element is atomic for live regions.\n */\n 'aria-atomic'?: boolean;\n \n /**\n * Indicates the level of heading (for headings).\n */\n 'aria-level'?: number;\n \n /**\n * Indicates the position in a set (for list items, etc.).\n */\n 'aria-posinset'?: number;\n \n /**\n * Indicates the size of a set (for list items, etc.).\n */\n 'aria-setsize'?: number;\n \n /**\n * Indicates whether the element has a popup.\n */\n 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\n \n /**\n * Indicates the orientation of the element.\n */\n 'aria-orientation'?: 'horizontal' | 'vertical';\n \n /**\n * Indicates the value of the element.\n */\n 'aria-valuenow'?: number;\n \n /**\n * Indicates the minimum value.\n */\n 'aria-valuemin'?: number;\n \n /**\n * Indicates the maximum value.\n */\n 'aria-valuemax'?: number;\n \n /**\n * Human-readable text alternative of aria-valuenow.\n */\n 'aria-valuetext'?: string;\n \n /**\n * Indicates whether the element is busy.\n */\n 'aria-busy'?: boolean;\n \n /**\n * Indicates the element's controls.\n */\n 'aria-controls'?: string;\n \n /**\n * Indicates the element's owns.\n */\n 'aria-owns'?: string;\n}\n\n/**\n * Options for generating default accessibility props\n */\nexport interface AccessibilityDefaultsOptions {\n /**\n * Component type/name for generating appropriate defaults\n */\n componentType?: string;\n \n /**\n * Children content to extract text from\n */\n children?: React.ReactNode;\n \n /**\n * Whether the element is disabled\n */\n disabled?: boolean;\n \n /**\n * Whether the element is loading\n */\n loading?: boolean;\n \n /**\n * Whether the element is required\n */\n required?: boolean;\n \n /**\n * Whether the element has an error\n */\n error?: boolean;\n \n /**\n * Error message for the element\n */\n errorMessage?: string;\n \n /**\n * Description or help text for the element\n */\n description?: string;\n \n /**\n * Label text for the element\n */\n label?: string;\n \n /**\n * ID for the element (used for generating related IDs)\n */\n id?: string;\n \n /**\n * Start icon name (for icon-only detection)\n */\n startIcon?: string;\n \n /**\n * End icon name (for icon-only detection)\n */\n endIcon?: string;\n}\n\n/**\n * Extracts text content from React children\n */\nexport function extractTextFromChildren(children: React.ReactNode): string {\n if (typeof children === 'string') {\n return children.trim();\n }\n \n if (typeof children === 'number') {\n return String(children);\n }\n \n if (Array.isArray(children)) {\n return children.map(extractTextFromChildren).join(' ').trim();\n }\n \n if (React.isValidElement(children) && children.props) {\n if (children.props.children) {\n return extractTextFromChildren(children.props.children);\n }\n }\n \n return '';\n}\n\n/**\n * Generates default accessibility props based on component state and options\n * \n * @param options - Options for generating defaults\n * @param userProps - User-provided accessibility props (will override defaults)\n * @returns Merged accessibility props with user props taking precedence\n */\nexport function generateAccessibilityDefaults(\n options: AccessibilityDefaultsOptions,\n userProps: Partial<AccessibilityProps> = {}\n): AccessibilityProps {\n const {\n componentType,\n children,\n disabled,\n loading,\n required,\n error,\n errorMessage,\n description,\n label,\n id,\n } = options;\n\n const defaults: AccessibilityProps = {};\n\n // Generate aria-label from children if not provided\n if (!userProps['aria-label'] && !userProps['aria-labelledby']) {\n const textContent = extractTextFromChildren(children);\n if (textContent) {\n defaults['aria-label'] = textContent;\n } else if (label) {\n defaults['aria-label'] = label;\n }\n }\n\n // Handle disabled state\n if (disabled !== undefined) {\n defaults['aria-disabled'] = disabled;\n }\n\n // Handle loading state\n if (loading) {\n defaults['aria-busy'] = true;\n if (!userProps['aria-label']) {\n const baseLabel = defaults['aria-label'] || extractTextFromChildren(children) || 'Loading';\n defaults['aria-label'] = `${baseLabel}, loading`;\n }\n }\n\n // Handle required state\n if (required !== undefined) {\n defaults['aria-required'] = required;\n }\n\n // Handle error state\n if (error !== undefined) {\n defaults['aria-invalid'] = error;\n \n if (error && errorMessage && id) {\n const errorId = `${id}-error`;\n defaults['aria-errormessage'] = errorId;\n defaults['aria-describedby'] = userProps['aria-describedby']\n ? `${userProps['aria-describedby']} ${errorId}`\n : errorId;\n }\n }\n\n // Handle description\n if (description && id && !userProps['aria-describedby']) {\n const descId = `${id}-description`;\n defaults['aria-describedby'] = userProps['aria-describedby']\n ? `${userProps['aria-describedby']} ${descId}`\n : descId;\n }\n\n // Component-specific defaults\n if (componentType === 'button') {\n if (!userProps.role && !userProps['aria-label']) {\n // Buttons don't need explicit role unless they're not actually buttons\n defaults.role = 'button';\n }\n }\n\n if (componentType === 'link') {\n defaults.role = 'link';\n }\n\n // Merge user props (user props take precedence)\n return {\n ...defaults,\n ...userProps,\n };\n}\n\n/**\n * Merges accessibility props with user-provided props\n * User props always take precedence over defaults\n */\nexport function mergeAccessibilityProps(\n defaults: AccessibilityProps,\n userProps: Partial<AccessibilityProps>\n): AccessibilityProps {\n return {\n ...defaults,\n ...userProps,\n };\n}\n\n/**\n * Validates accessibility props and returns warnings in development\n */\nexport function validateAccessibilityProps(\n props: AccessibilityProps,\n componentType: string,\n options: { children?: React.ReactNode; iconOnly?: boolean } = {}\n): void {\n if (process.env.NODE_ENV === 'production') {\n return;\n }\n\n const warnings: string[] = [];\n\n // Check for icon-only buttons without aria-label\n if (componentType === 'button' && options.iconOnly && !props['aria-label'] && !props['aria-labelledby']) {\n warnings.push(\n `[pd-design] Icon-only button should have an aria-label or aria-labelledby for accessibility.`\n );\n }\n\n // Check for interactive elements without accessible name\n if (\n (componentType === 'button' || componentType === 'link') &&\n !props['aria-label'] &&\n !props['aria-labelledby'] &&\n !extractTextFromChildren(options.children)\n ) {\n warnings.push(\n `[pd-design] ${componentType} should have an accessible name (aria-label, aria-labelledby, or text content).`\n );\n }\n\n // Check for form inputs without labels\n if (\n (componentType === 'input' || componentType === 'select' || componentType === 'textarea') &&\n !props['aria-label'] &&\n !props['aria-labelledby']\n ) {\n warnings.push(\n `[pd-design] ${componentType} should have an accessible label (aria-label or aria-labelledby).`\n );\n }\n\n // Warn about invalid tabIndex values\n if (props.tabIndex !== undefined && props.tabIndex > 0) {\n warnings.push(\n `[pd-design] tabIndex > 0 is not recommended. Use tabIndex={0} for focusable elements or tabIndex={-1} for programmatic focus only.`\n );\n }\n\n // Output warnings\n warnings.forEach(warning => console.warn(warning));\n}\n\n/**\n * Generates unique IDs for accessibility relationships\n */\nlet idCounter = 0;\nexport function generateId(prefix: string = 'pd'): string {\n return `${prefix}-${++idCounter}-${Date.now()}`;\n}\n\n/**\n * Keyboard event handlers for common patterns\n */\nexport interface KeyboardHandlers {\n onEnter?: (event: React.KeyboardEvent) => void;\n onEscape?: (event: React.KeyboardEvent) => void;\n onArrowUp?: (event: React.KeyboardEvent) => void;\n onArrowDown?: (event: React.KeyboardEvent) => void;\n onArrowLeft?: (event: React.KeyboardEvent) => void;\n onArrowRight?: (event: React.KeyboardEvent) => void;\n onHome?: (event: React.KeyboardEvent) => void;\n onEnd?: (event: React.KeyboardEvent) => void;\n onSpace?: (event: React.KeyboardEvent) => void;\n}\n\n/**\n * Creates a keyboard event handler that calls appropriate callbacks\n */\nexport function createKeyboardHandler(handlers: KeyboardHandlers) {\n return (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'Enter':\n handlers.onEnter?.(event);\n break;\n case 'Escape':\n handlers.onEscape?.(event);\n break;\n case 'ArrowUp':\n handlers.onArrowUp?.(event);\n break;\n case 'ArrowDown':\n handlers.onArrowDown?.(event);\n break;\n case 'ArrowLeft':\n handlers.onArrowLeft?.(event);\n break;\n case 'ArrowRight':\n handlers.onArrowRight?.(event);\n break;\n case 'Home':\n handlers.onHome?.(event);\n break;\n case 'End':\n handlers.onEnd?.(event);\n break;\n case ' ':\n handlers.onSpace?.(event);\n event.preventDefault(); // Prevent page scroll\n break;\n }\n };\n}\n"]}