@lsts_tech/ui 2.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +459 -0
- package/dist/index.css +1484 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +155 -0
- package/dist/index.d.ts +155 -0
- package/dist/index.js +1041 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +970 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/alert.tsx","../src/lib/utils.ts","../src/components/avatar.tsx","../src/components/badge.tsx","../src/providers/brand-provider.tsx","../src/components/button.tsx","../src/components/brand-switcher.tsx","../src/components/card.tsx","../src/components/input.tsx","../src/components/separator.tsx","../src/components/tabs.tsx","../src/providers/theme-provider.tsx","../src/components/theme-switcher.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { X, CheckCircle, AlertCircle, Info, AlertTriangle } from \"lucide-react\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n muted: \"bg-muted text-muted-foreground border-muted\",\n brand: \"bg-brand-primary/10 text-brand-primary border-brand-primary/20 [&>svg]:text-brand-primary\",\n success:\n \"bg-success/10 text-success border-success/20 [&>svg]:text-success\",\n warning:\n \"bg-warning/10 text-warning border-warning/20 [&>svg]:text-warning\",\n info: \"bg-info/10 text-info border-info/20 [&>svg]:text-info\",\n error: \"bg-error/10 text-error border-error/20 [&>svg]:text-error\",\n destructive:\n \"bg-destructive/10 text-destructive border-destructive/20 [&>svg]:text-destructive\",\n },\n radius: {\n default: \"rounded-lg\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n none: \"rounded-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n radius: \"default\",\n },\n }\n);\n\nconst alertIconMap = {\n default: Info,\n muted: Info,\n brand: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n info: Info,\n error: AlertCircle,\n destructive: AlertCircle,\n};\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n title?: string;\n dismissible?: boolean;\n onDismiss?: () => void;\n icon?: React.ReactNode;\n showIcon?: boolean;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"default\",\n radius,\n title,\n children,\n dismissible,\n onDismiss,\n icon,\n showIcon = true,\n ...props\n },\n ref\n ) => {\n const IconComponent = variant ? alertIconMap[variant] : Info;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, radius, className }))}\n {...props}\n >\n {showIcon && (icon || <IconComponent className=\"h-4 w-4\" />)}\n {dismissible && (\n <button\n onClick={onDismiss}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Dismiss</span>\n </button>\n )}\n {title && <AlertTitle>{title}</AlertTitle>}\n {children && <AlertDescription>{children}</AlertDescription>}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants };\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\nexport function formatDate(input: string | number): string {\n const date = new Date(input)\n return date.toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n })\n}\n\nexport function formatCurrency(amount: number): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(amount)\n}\n","import * as React from \"react\"\n\nconst Avatar = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={\n \"relative flex h-10 w-10 shrink-0 cursor-pointer select-none items-center justify-center overflow-hidden rounded-full border border-gray-200 bg-gray-100 transition-colors hover:border-gray-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2\"\n }\n {...props}\n />\n))\nAvatar.displayName = \"Avatar\"\n\ninterface AvatarImageProps {\n src?: string | null;\n alt?: string;\n className?: string;\n}\n\nconst AvatarImage = React.forwardRef<\n HTMLImageElement,\n AvatarImageProps\n>(({ src, alt, className, ...props }, ref) => (\n <img\n ref={ref}\n src={src || undefined}\n alt={alt || ''}\n className={`aspect-square h-full w-full rounded-full object-cover ${className}`}\n {...props}\n />\n))\nAvatarImage.displayName = \"AvatarImage\"\n\nconst AvatarFallback = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\"\n }\n {...props}\n />\n))\nAvatarFallback.displayName = \"AvatarFallback\"\n\nexport { Avatar, AvatarFallback, AvatarImage }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary-hover\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary-hover\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n muted:\n \"border-transparent bg-muted text-muted-foreground hover:bg-muted/80\",\n outline:\n \"text-foreground border-border hover:bg-muted\",\n ghost:\n \"border-transparent hover:bg-muted\",\n brand:\n \"border-transparent bg-brand-primary text-brand-primary-foreground hover:bg-brand-primary-dark\",\n \"brand-secondary\":\n \"border-transparent bg-brand-secondary text-brand-secondary-foreground hover:opacity-90\",\n success:\n \"border-transparent bg-success text-success-foreground\",\n warning:\n \"border-transparent bg-warning text-warning-foreground\",\n info:\n \"border-transparent bg-info text-info-foreground\",\n error:\n \"border-transparent bg-error text-error-foreground\",\n },\n size: {\n default: \"px-2 py-0.5 text-xs\",\n sm: \"px-1.5 py-0 text-[10px]\",\n lg: \"px-3 py-1 text-sm\",\n xl: \"px-4 py-1.5 text-base\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n}\n\nfunction Badge({ className, variant, size, radius, ...props }: BadgeProps) {\n return (\n <div\n className={cn(badgeVariants({ variant, size, radius, className }))}\n {...props}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","\"use client\";\n\nimport * as React from \"react\";\n\ntype Brand = \"lsts\" | \"tlao\";\n\ninterface BrandContextValue {\n brand: Brand;\n setBrand: (brand: Brand) => void;\n brands: Brand[];\n}\n\nconst BrandContext = React.createContext<BrandContextValue | undefined>(\n undefined\n);\n\ninterface BrandProviderProps {\n children: React.ReactNode;\n defaultBrand?: Brand;\n brands?: Brand[];\n storageKey?: string;\n}\n\nexport function BrandProvider({\n children,\n defaultBrand = \"lsts\",\n brands = [\"lsts\", \"tlao\"],\n storageKey = \"ui-brand\",\n}: BrandProviderProps) {\n // Initialize with the default on both server and client to avoid hydration mismatch.\n // localStorage is read in a useEffect after hydration.\n const [brand, setBrandState] = React.useState<Brand>(defaultBrand);\n\n // Sync stored brand preference after hydration (client-only)\n React.useEffect(() => {\n const stored = localStorage.getItem(storageKey) as Brand | null;\n if (stored && (brands as string[]).includes(stored)) {\n setBrandState(stored);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storageKey]);\n\n const setBrand = React.useCallback(\n (newBrand: Brand) => {\n setBrandState(newBrand);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(storageKey, newBrand);\n document.documentElement.setAttribute(\"data-brand\", newBrand);\n }\n },\n [storageKey]\n );\n\n React.useEffect(() => {\n if (typeof window !== \"undefined\") {\n document.documentElement.setAttribute(\"data-brand\", brand);\n }\n }, [brand]);\n\n const value = React.useMemo(\n () => ({ brand, setBrand, brands }),\n [brand, setBrand, brands]\n );\n\n return (\n <BrandContext.Provider value={value}>{children}</BrandContext.Provider>\n );\n}\n\nexport function useBrand() {\n const context = React.useContext(BrandContext);\n if (context === undefined) {\n throw new Error(\"useBrand must be used within a BrandProvider\");\n }\n return context;\n}\n\nexport type { Brand, BrandProviderProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground hover:bg-primary-hover active:bg-primary-active shadow-sm\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover shadow-sm\",\n outline:\n \"border border-input bg-background hover:bg-background-hover hover:text-accent-foreground shadow-sm\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary-hover shadow-sm\",\n ghost:\n \"hover:bg-background-hover hover:text-foreground\",\n link:\n \"text-primary underline-offset-4 hover:underline\",\n brand:\n \"bg-brand-primary text-brand-primary-foreground hover:bg-brand-primary-dark shadow-sm\",\n \"brand-secondary\":\n \"bg-brand-secondary text-brand-secondary-foreground hover:opacity-90 shadow-sm\",\n \"brand-ghost\":\n \"hover:bg-brand-primary/10 text-brand-primary hover:text-brand-primary\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n xs: \"h-7 px-2 text-xs\",\n sm: \"h-8 px-3 text-xs\",\n lg: \"h-10 px-8\",\n xl: \"h-12 px-8 text-base\",\n \"2xl\": \"h-14 px-10 text-base\",\n icon: \"h-9 w-9 p-0\",\n \"icon-sm\": \"h-8 w-8 p-0\",\n \"icon-lg\": \"h-10 w-10 p-0\",\n },\n radius: {\n default: \"rounded-md\",\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n radius,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const content = loading ? (\n <>\n <Loader2 className=\"animate-spin\" />\n {children}\n </>\n ) : (\n <>\n {leftIcon}\n {children}\n {rightIcon}\n </>\n );\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, radius, className }))}\n ref={ref}\n disabled={disabled || loading}\n {...props}\n >\n {content}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useBrand, type Brand } from \"@/providers/brand-provider\";\nimport { Button } from \"@/components/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Check, Building2, Landmark } from \"lucide-react\";\n\ninterface BrandOption {\n value: Brand;\n label: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\ninterface BrandSwitcherProps {\n options?: BrandOption[];\n variant?: \"buttons\" | \"cards\" | \"dropdown\" | \"select\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n showIcons?: boolean;\n showDescription?: boolean;\n}\n\nconst defaultBrandOptions: BrandOption[] = [\n {\n value: \"lsts\",\n label: \"LSTS\",\n description: \"LSTech Solutions\",\n icon: <Building2 className=\"h-4 w-4\" />,\n },\n {\n value: \"tlao\",\n label: \"TLÁO\",\n description: \"TLÁO Project\",\n icon: <Landmark className=\"h-4 w-4\" />,\n },\n];\n\nexport function BrandSwitcher({\n options = defaultBrandOptions,\n variant = \"buttons\",\n size = \"md\",\n className,\n showIcons = true,\n showDescription = false,\n}: BrandSwitcherProps) {\n const { brand, setBrand } = useBrand();\n\n const sizeClasses = {\n sm: \"h-7 px-2 text-xs\",\n md: \"h-9 px-3 text-sm\",\n lg: \"h-10 px-4 text-base\",\n };\n\n if (variant === \"buttons\") {\n return (\n <div className={cn(\"flex items-center gap-1\", className)}>\n {options.map((option) => {\n const isActive = brand === option.value;\n return (\n <Button\n key={option.value}\n variant={isActive ? \"brand\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setBrand(option.value)}\n className={cn(\n \"gap-2\",\n sizeClasses[size],\n isActive && \"ring-2 ring-ring ring-offset-2\"\n )}\n >\n {showIcons && option.icon}\n <span>{option.label}</span>\n {isActive && <Check className=\"h-3 w-3 ml-1\" />}\n </Button>\n );\n })}\n </div>\n );\n }\n\n if (variant === \"cards\") {\n return (\n <div className={cn(\"grid gap-3\", className)}>\n {options.map((option) => {\n const isActive = brand === option.value;\n return (\n <button\n key={option.value}\n onClick={() => setBrand(option.value)}\n className={cn(\n \"flex items-start gap-3 rounded-lg border p-4 text-left transition-all duration-fast\",\n \"hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring\",\n isActive && \"border-brand-primary bg-brand-primary/5\"\n )}\n >\n {showIcons && (\n <div\n className={cn(\n \"flex h-10 w-10 shrink-0 items-center justify-center rounded-md\",\n isActive\n ? \"bg-brand-primary text-brand-primary-foreground\"\n : \"bg-muted text-muted-foreground\"\n )}\n >\n {option.icon}\n </div>\n )}\n <div className=\"flex-1\">\n <div className=\"font-medium\">{option.label}</div>\n {showDescription && option.description && (\n <p className=\"text-sm text-muted-foreground\">\n {option.description}\n </p>\n )}\n </div>\n {isActive && (\n <Check className=\"h-5 w-5 text-brand-primary shrink-0\" />\n )}\n </button>\n );\n })}\n </div>\n );\n }\n\n // Simple select variant\n return (\n <select\n value={brand}\n onChange={(e) => setBrand(e.target.value as Brand)}\n className={cn(\n \"flex h-9 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors\",\n \"focus:outline-none focus:ring-1 focus:ring-ring\",\n className\n )}\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n );\n}\n\nexport { type BrandOption, type BrandSwitcherProps, defaultBrandOptions };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-fast\",\n {\n variants: {\n variant: {\n default: \"\",\n elevated: \"shadow-elevation-2 hover:shadow-elevation-3\",\n outline: \"shadow-none\",\n ghost: \"border-transparent bg-transparent shadow-none\",\n brand: \"border-brand-primary/20 bg-brand-primary/5\",\n },\n radius: {\n default: \"rounded-lg\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n xl: \"rounded-2xl\",\n none: \"rounded-none\",\n },\n padding: {\n default: \"\",\n none: \"\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n radius: \"default\",\n padding: \"default\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, radius, padding, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, radius, padding, className }))}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n );\n});\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => {\n return (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n );\n});\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />;\n});\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n );\n});\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n cardVariants,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst inputVariants = cva(\n \"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-fast\",\n {\n variants: {\n variant: {\n default: \"\",\n filled: \"bg-muted border-transparent\",\n ghost: \"border-transparent bg-transparent\",\n brand: \"focus-visible:ring-brand-primary/50\",\n },\n size: {\n default: \"h-9 px-3 py-2\",\n sm: \"h-8 px-2 py-1 text-xs\",\n lg: \"h-10 px-4 py-2\",\n xl: \"h-12 px-4 py-3 text-base\",\n },\n radius: {\n default: \"rounded-md\",\n sm: \"rounded-sm\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full px-4\",\n none: \"rounded-none\",\n },\n state: {\n default: \"\",\n error: \"border-error focus-visible:ring-error/50\",\n success: \"border-success focus-visible:ring-success/50\",\n warning: \"border-warning focus-visible:ring-warning/50\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n state: \"default\",\n },\n }\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant,\n size: inputSize,\n radius,\n state,\n leftIcon,\n rightIcon,\n type,\n ...props\n },\n ref\n ) => {\n const input = (\n <input\n type={type}\n className={cn(inputVariants({ variant, size: inputSize, radius, state, className }))}\n ref={ref}\n {...props}\n />\n );\n\n if (leftIcon || rightIcon) {\n return (\n <div className=\"relative flex items-center\">\n {leftIcon && (\n <div className=\"absolute left-3 text-muted-foreground pointer-events-none\">\n {leftIcon}\n </div>\n )}\n <input\n type={type}\n className={cn(\n inputVariants({ variant, size: inputSize, radius, state, className }),\n leftIcon && \"pl-10\",\n rightIcon && \"pr-10\"\n )}\n ref={ref}\n {...props}\n />\n {rightIcon && (\n <div className=\"absolute right-3 text-muted-foreground pointer-events-none\">\n {rightIcon}\n </div>\n )}\n </div>\n );\n }\n\n return input;\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };\n","'use client';\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Separator = React.forwardRef<\n HTMLHRElement,\n React.HTMLAttributes<HTMLHRElement>\n>(({ className, ...props }, ref) => (\n <hr\n ref={ref}\n className={cn(\"shrink-0 bg-border\", className)}\n {...props}\n />\n));\nSeparator.displayName = \"Separator\";\n\nexport { Separator };\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"inline-flex flex-col\", className)}\n {...props}\n />\n))\nTabs.displayName = \"Tabs\"\n\nconst TabsList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"tablist\"\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = \"TabsList\"\n\nconst TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = \"TabsTrigger\"\n\nconst TabsContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = \"TabsContent\"\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","\"use client\";\n\nimport * as React from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextValue {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = React.createContext<ThemeContextValue | undefined>(\n undefined\n);\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n enableSystem?: boolean;\n disableTransitionOnChange?: boolean;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = \"ui-theme\",\n enableSystem = true,\n disableTransitionOnChange = false,\n}: ThemeProviderProps) {\n // Initialize with the default on both server and client to avoid hydration mismatch.\n // localStorage is read in a useEffect after hydration.\n const [theme, setThemeState] = React.useState<Theme>(defaultTheme);\n const [resolvedTheme, setResolvedTheme] = React.useState<\"light\" | \"dark\">(\"light\");\n\n // Sync stored theme preference after hydration (client-only)\n React.useEffect(() => {\n const stored = localStorage.getItem(storageKey) as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storageKey]);\n\n const setTheme = React.useCallback(\n (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(storageKey, newTheme);\n }\n },\n [storageKey]\n );\n\n React.useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const root = document.documentElement;\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n const applyTheme = () => {\n let resolved: \"light\" | \"dark\";\n\n if (theme === \"system\" && enableSystem) {\n resolved = mediaQuery.matches ? \"dark\" : \"light\";\n } else {\n resolved = theme === \"dark\" ? \"dark\" : \"light\";\n }\n\n setResolvedTheme(resolved);\n\n if (disableTransitionOnChange) {\n const css = document.createElement(\"style\");\n css.appendChild(\n document.createTextNode(\n \"* { transition: none !important; }\"\n )\n );\n document.head.appendChild(css);\n requestAnimationFrame(() => {\n document.head.removeChild(css);\n });\n }\n\n root.setAttribute(\"data-theme\", resolved);\n\n // Toggle the 'dark' class so Tailwind's class-based dark mode works\n if (resolved === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n };\n\n applyTheme();\n\n if (enableSystem && theme === \"system\") {\n mediaQuery.addEventListener(\"change\", applyTheme);\n return () => mediaQuery.removeEventListener(\"change\", applyTheme);\n }\n }, [theme, enableSystem, disableTransitionOnChange]);\n\n const value = React.useMemo(\n () => ({ theme, setTheme, resolvedTheme }),\n [theme, setTheme, resolvedTheme]\n );\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = React.useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n\nexport type { Theme, ThemeProviderProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useTheme, type Theme } from \"@/providers/theme-provider\";\nimport { Button } from \"@/components/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Sun, Moon, Monitor, Check } from \"lucide-react\";\n\ninterface ThemeOption {\n value: Theme;\n label: string;\n description?: string;\n icon: React.ReactNode;\n}\n\ninterface ThemeSwitcherProps {\n variant?: \"buttons\" | \"cards\" | \"segmented\" | \"select\" | \"dropdown\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n showLabel?: boolean;\n showIcons?: boolean;\n}\n\nconst themeOptions: ThemeOption[] = [\n {\n value: \"light\",\n label: \"Light\",\n description: \"Always use light mode\",\n icon: <Sun className=\"h-4 w-4\" />,\n },\n {\n value: \"dark\",\n label: \"Dark\",\n description: \"Always use dark mode\",\n icon: <Moon className=\"h-4 w-4\" />,\n },\n {\n value: \"system\",\n label: \"System\",\n description: \"Follow system preference\",\n icon: <Monitor className=\"h-4 w-4\" />,\n },\n];\n\nexport function ThemeSwitcher({\n variant = \"segmented\",\n size = \"md\",\n className,\n showLabel = true,\n showIcons = true,\n}: ThemeSwitcherProps) {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const sizeClasses = {\n sm: \"h-7 px-2\",\n md: \"h-9 px-3\",\n lg: \"h-10 px-4\",\n };\n\n if (variant === \"buttons\") {\n return (\n <div className={cn(\"flex items-center gap-1\", className)}>\n {themeOptions.map((option) => {\n const isActive = theme === option.value;\n return (\n <Button\n key={option.value}\n variant={isActive ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setTheme(option.value)}\n className={cn(\n \"gap-2\",\n sizeClasses[size],\n isActive && \"ring-2 ring-ring ring-offset-2\"\n )}\n >\n {showIcons && option.icon}\n {showLabel && <span>{option.label}</span>}\n </Button>\n );\n })}\n </div>\n );\n }\n\n if (variant === \"segmented\") {\n return (\n <div\n className={cn(\n \"inline-flex items-center rounded-lg border bg-muted p-1\",\n className\n )}\n >\n {themeOptions.map((option) => {\n const isActive = theme === option.value;\n return (\n <button\n key={option.value}\n onClick={() => setTheme(option.value)}\n className={cn(\n \"relative flex items-center justify-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-all duration-fast\",\n \"hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isActive\n ? \"bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:bg-muted\"\n )}\n >\n {showIcons && option.icon}\n {showLabel && <span>{option.label}</span>}\n </button>\n );\n })}\n </div>\n );\n }\n\n if (variant === \"cards\") {\n return (\n <div className={cn(\"grid gap-3\", className)}>\n {themeOptions.map((option) => {\n const isActive = theme === option.value;\n const isResolved = resolvedTheme === (option.value === \"system\" ? undefined : option.value);\n \n return (\n <button\n key={option.value}\n onClick={() => setTheme(option.value)}\n className={cn(\n \"flex items-start gap-3 rounded-lg border p-4 text-left transition-all duration-fast\",\n \"hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring\",\n isActive && \"border-primary bg-primary/5\"\n )}\n >\n {showIcons && (\n <div\n className={cn(\n \"flex h-10 w-10 shrink-0 items-center justify-center rounded-md\",\n isActive\n ? \"bg-primary text-primary-foreground\"\n : \"bg-muted text-muted-foreground\"\n )}\n >\n {option.icon}\n </div>\n )}\n <div className=\"flex-1\">\n <div className=\"font-medium flex items-center gap-2\">\n {option.label}\n {option.value === \"system\" && (\n <span className=\"text-xs text-muted-foreground\">\n ({resolvedTheme})\n </span>\n )}\n </div>\n {option.description && (\n <p className=\"text-sm text-muted-foreground\">\n {option.description}\n </p>\n )}\n </div>\n {isActive && <Check className=\"h-5 w-5 text-primary shrink-0\" />}\n </button>\n );\n })}\n </div>\n );\n }\n\n // Simple select variant\n return (\n <select\n value={theme}\n onChange={(e) => setTheme(e.target.value as Theme)}\n className={cn(\n \"flex h-9 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors\",\n \"focus:outline-none focus:ring-1 focus:ring-ring\",\n className\n )}\n >\n {themeOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n );\n}\n\nexport { type ThemeOption, type ThemeSwitcherProps, themeOptions };\n"],"mappings":"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","names":["React","jsx","cva","jsx","cva","React","jsx","React","cva","jsx","jsxs","cva","jsx","jsxs","React","cva","jsx","cva","React","cva","jsx","jsxs","cva","React","jsx","React","jsx","React","jsx","Check","jsx","jsxs"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lsts_tech/ui",
|
|
3
|
+
"version": "2.0.23",
|
|
4
|
+
"description": "LSTech UI component library",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ui",
|
|
7
|
+
"components",
|
|
8
|
+
"react",
|
|
9
|
+
"tailwindcss",
|
|
10
|
+
"radix-ui"
|
|
11
|
+
],
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"module": "./dist/index.mjs",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.mjs",
|
|
19
|
+
"require": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./styles.css": "./dist/index.css"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist/**"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup src/index.ts --format cjs,esm --dts --external react --external react-dom",
|
|
28
|
+
"dev": "tsup src/index.ts --format cjs,esm --dts --external react --external react-dom --watch",
|
|
29
|
+
"lint": "eslint 'src/**/*.{ts,tsx,js,jsx}'",
|
|
30
|
+
"check-types": "tsc --noEmit",
|
|
31
|
+
"clean": "rm -rf dist .turbo node_modules storybook-static",
|
|
32
|
+
"prepublishOnly": "pnpm run build",
|
|
33
|
+
"generate:component": "echo 'Add component generator here'",
|
|
34
|
+
"storybook": "storybook dev -p 6006",
|
|
35
|
+
"build-storybook": "storybook build"
|
|
36
|
+
},
|
|
37
|
+
"sideEffects": [
|
|
38
|
+
"**/*.css"
|
|
39
|
+
],
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public",
|
|
42
|
+
"registry": "https://registry.npmjs.org/"
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "git+https://github.com/lstechnologysolutions/lstech.solutions.git",
|
|
47
|
+
"directory": "packages/ui"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/lstechnologysolutions/lstech.solutions/tree/main/packages/ui#readme",
|
|
50
|
+
"bugs": {
|
|
51
|
+
"url": "https://github.com/lstechnologysolutions/lstech.solutions/issues"
|
|
52
|
+
},
|
|
53
|
+
"license": "MIT",
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
56
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@radix-ui/react-avatar": "^1.1.10",
|
|
60
|
+
"@radix-ui/react-dropdown-menu": "^2.1.15",
|
|
61
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
62
|
+
"class-variance-authority": "^0.7.1",
|
|
63
|
+
"clsx": "^2.1.1",
|
|
64
|
+
"lucide-react": "^0.511.0",
|
|
65
|
+
"tailwind-merge": "^3.3.0"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@chromatic-com/storybook": "^3",
|
|
69
|
+
"@lsts_tech/typescript-config": "workspace:*",
|
|
70
|
+
"@lsts_tech/eslint-config": "workspace:*",
|
|
71
|
+
"@storybook/addon-essentials": "^8.5.0",
|
|
72
|
+
"@storybook/addon-interactions": "^8.5.0",
|
|
73
|
+
"@storybook/addon-onboarding": "^8.5.0",
|
|
74
|
+
"@storybook/blocks": "^8.5.0",
|
|
75
|
+
"@storybook/react": "^8.5.0",
|
|
76
|
+
"@storybook/react-vite": "^8.5.0",
|
|
77
|
+
"@storybook/test": "^8.5.0",
|
|
78
|
+
"@types/react": "^19.1.0",
|
|
79
|
+
"@types/react-dom": "^19.1.0",
|
|
80
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
81
|
+
"autoprefixer": "^10.4.21",
|
|
82
|
+
"postcss": "^8.5.3",
|
|
83
|
+
"storybook": "^8.5.0",
|
|
84
|
+
"tailwindcss": "^3.4.17",
|
|
85
|
+
"tailwindcss-animate": "^1.0.7",
|
|
86
|
+
"tsup": "^8.0.0",
|
|
87
|
+
"typescript": "^5",
|
|
88
|
+
"vite": "^6.0.0"
|
|
89
|
+
}
|
|
90
|
+
}
|