@12min/ds 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.web.ts","../src/tokens/colors.ts","../src/themes/lightTheme.ts","../src/themes/darkTheme.ts"],"sourcesContent":["export * from './src/tokens'\nexport * from './src/themes'\n","export const colors = {\n brand: {\n primary: '#FF6B35',\n secondary: '#1A1A2E',\n },\n\n neutral: {\n 0: '#FFFFFF',\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#E5E5E5',\n 300: '#D4D4D4',\n 400: '#A3A3A3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#121212',\n },\n\n success: {\n light: '#4ADE80',\n default: '#22C55E',\n dark: '#16A34A',\n },\n\n error: {\n light: '#F87171',\n default: '#EF4444',\n dark: '#DC2626',\n },\n\n warning: {\n light: '#FCD34D',\n default: '#F59E0B',\n dark: '#D97706',\n },\n\n info: {\n light: '#60A5FA',\n default: '#3B82F6',\n dark: '#2563EB',\n },\n} as const\n\nexport type Colors = typeof colors\n","import { colors } from '../tokens/colors'\nimport type { Theme } from './types'\n\nexport const lightTheme: Theme = {\n background: colors.neutral[0],\n surface: colors.neutral[100],\n border: colors.neutral[200],\n onBackground: colors.neutral[900],\n onSurface: colors.neutral[800],\n muted: colors.neutral[500],\n primary: colors.brand.primary,\n secondary: colors.brand.secondary,\n success: colors.success.default,\n error: colors.error.default,\n warning: colors.warning.default,\n info: colors.info.default,\n}\n","import { colors } from '../tokens/colors'\nimport type { Theme } from './types'\n\nexport const darkTheme: Theme = {\n background: colors.neutral[900],\n surface: colors.neutral[800],\n border: colors.neutral[700],\n onBackground: colors.neutral[0],\n onSurface: colors.neutral[100],\n muted: colors.neutral[400],\n primary: colors.brand.primary,\n secondary: colors.brand.secondary,\n success: colors.success.light,\n error: colors.error.light,\n warning: colors.warning.light,\n info: colors.info.light,\n} as const\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,SAAS;AAAA,EACpB,OAAO;AAAA,IACL,SAAW;AAAA,IACX,WAAW;AAAA,EACb;AAAA,EAEA,SAAS;AAAA,IACP,GAAK;AAAA,IACL,IAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EAEA,SAAS;AAAA,IACP,OAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IACL,OAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,EACX;AAAA,EAEA,SAAS;AAAA,IACP,OAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,EACX;AAAA,EAEA,MAAM;AAAA,IACJ,OAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAS;AAAA,EACX;AACF;;;ACxCO,IAAM,aAAoB;AAAA,EAC/B,YAAc,OAAO,QAAQ,CAAC;AAAA,EAC9B,SAAc,OAAO,QAAQ,GAAG;AAAA,EAChC,QAAc,OAAO,QAAQ,GAAG;AAAA,EAChC,cAAc,OAAO,QAAQ,GAAG;AAAA,EAChC,WAAc,OAAO,QAAQ,GAAG;AAAA,EAChC,OAAc,OAAO,QAAQ,GAAG;AAAA,EAChC,SAAc,OAAO,MAAM;AAAA,EAC3B,WAAc,OAAO,MAAM;AAAA,EAC3B,SAAc,OAAO,QAAQ;AAAA,EAC7B,OAAc,OAAO,MAAM;AAAA,EAC3B,SAAc,OAAO,QAAQ;AAAA,EAC7B,MAAc,OAAO,KAAK;AAC5B;;;ACbO,IAAM,YAAmB;AAAA,EAC9B,YAAe,OAAO,QAAQ,GAAG;AAAA,EACjC,SAAe,OAAO,QAAQ,GAAG;AAAA,EACjC,QAAe,OAAO,QAAQ,GAAG;AAAA,EACjC,cAAe,OAAO,QAAQ,CAAC;AAAA,EAC/B,WAAe,OAAO,QAAQ,GAAG;AAAA,EACjC,OAAe,OAAO,QAAQ,GAAG;AAAA,EACjC,SAAe,OAAO,MAAM;AAAA,EAC5B,WAAe,OAAO,MAAM;AAAA,EAC5B,SAAe,OAAO,QAAQ;AAAA,EAC9B,OAAe,OAAO,MAAM;AAAA,EAC5B,SAAe,OAAO,QAAQ;AAAA,EAC9B,MAAe,OAAO,KAAK;AAC7B;","names":[]}
1
+ {"version":3,"sources":["../index.web.ts","../src/tokens/colors.ts","../src/tokens/typography.ts","../src/themes/lightTheme.ts","../src/themes/darkTheme.ts","../src/components/Button/Button.web.tsx","../src/utils/cn.ts","../src/components/Chip/Chip.web.tsx","../src/components/Alert/Alert.web.tsx","../src/components/ProgressBar/ProgressBar.web.tsx","../src/components/Input/Input.web.tsx","../src/components/Checkbox/Checkbox.web.tsx","../src/components/RadioItem/RadioItem.web.tsx","../src/components/RadioGroup/RadioGroup.web.tsx","../src/components/ActionItem/ActionItem.web.tsx","../src/components/Stepper/Stepper.web.tsx","../src/components/RatingScale/RatingScale.styles.ts","../src/components/RatingScale/RatingScale.web.tsx"],"sourcesContent":["// DSThemeProvider and useTheme are intentionally not exported on web —\n// dark mode on web uses CSS dark: variants, not runtime theme switching.\nexport * from './src/tokens'\nexport * from './src/themes'\nexport { Button } from './src/components/Button/Button.web'\nexport { Chip } from './src/components/Chip/Chip.web'\nexport { Alert } from './src/components/Alert/Alert.web'\nexport { ProgressBar } from './src/components/ProgressBar/ProgressBar.web'\nexport { Input } from './src/components/Input/Input.web'\nexport { Checkbox } from './src/components/Checkbox/Checkbox.web'\nexport { RadioItem } from './src/components/RadioItem/RadioItem.web'\nexport { RadioGroup } from './src/components/RadioGroup/RadioGroup.web'\nexport { ActionItem } from './src/components/ActionItem/ActionItem.web'\nexport { Stepper } from './src/components/Stepper/Stepper.web'\nexport { RatingScale } from './src/components/RatingScale/RatingScale.web'\n","export const colors = {\n marianBlue: {\n 50: '#FAFBFF',\n 100: '#F1F4FE',\n 200: '#E1E7FF',\n 300: '#C3CCF7',\n 400: '#94A5F2',\n 500: '#697DD6',\n 600: '#475CBB',\n 700: '#31428B',\n 800: '#25326A',\n 900: '#131937',\n },\n\n midnight: {\n 50: '#707070',\n 100: '#5C5C5C',\n 200: '#525252',\n 300: '#474747',\n 400: '#3D3D3D',\n 500: '#333333',\n 600: '#1E1E1E',\n 700: '#161616',\n 800: '#141414',\n 900: '#0A0A0A',\n },\n\n gray: {\n 50: '#B1B5BE',\n 100: '#A6ABB5',\n 200: '#9BA0AB',\n 300: '#9095A2',\n 400: '#858B99',\n 500: '#7A8190',\n 600: '#6F7685',\n 700: '#5E6471',\n 800: '#5D636F',\n 900: '#545964',\n },\n\n mustard: {\n 50: '#FFF2D6',\n 100: '#FFECC2',\n 200: '#FFE5AD',\n 300: '#FFDF99',\n 400: '#FFD885',\n 500: '#FFD270',\n 600: '#FFCB5C',\n 700: '#FFC140',\n 800: '#FFBE33',\n 900: '#FFB81F',\n },\n\n ketchup: {\n 50: '#FFD6D6',\n 100: '#FFC2C2',\n 200: '#FFADAD',\n 300: '#FF9999',\n 400: '#FF8585',\n 500: '#FF7070',\n 600: '#FF5C5C',\n 700: '#FF4040',\n 800: '#FF3333',\n 900: '#FF1F1F',\n },\n\n mint: {\n 50: '#A7F1B7',\n 100: '#96EEA9',\n 200: '#84EB9A',\n 300: '#73E88C',\n 400: '#61E57E',\n 500: '#50E26F',\n 600: '#3EE061',\n 700: '#24DC4C',\n 800: '#22D348',\n 900: '#1FC142',\n },\n\n white: '#FFFFFF',\n successBg: '#E5FBE9',\n} as const\n\nexport type Colors = typeof colors\n","export const typography = {\n display: { fontSize: 32, fontWeight: '700', lineHeight: 1.2, fontFamily: 'Poppins' },\n h1: { fontSize: 24, fontWeight: '700', lineHeight: 1.3, fontFamily: 'Poppins' },\n h2: { fontSize: 20, fontWeight: '600', lineHeight: 1.3, fontFamily: 'Poppins' },\n h3: { fontSize: 18, fontWeight: '600', lineHeight: 1.4, fontFamily: 'Poppins' },\n bodyLarge: { fontSize: 16, fontWeight: '400', lineHeight: 1.5, fontFamily: 'Inter' },\n bodyDefault: { fontSize: 14, fontWeight: '400', lineHeight: 1.5, fontFamily: 'Inter' },\n bodySmall: { fontSize: 12, fontWeight: '400', lineHeight: 1.5, fontFamily: 'Inter' },\n labelLarge: { fontSize: 16, fontWeight: '500', lineHeight: 1.5, fontFamily: 'Inter' },\n labelDefault: { fontSize: 14, fontWeight: '500', lineHeight: 1.5, fontFamily: 'Inter' },\n labelSmall: { fontSize: 12, fontWeight: '500', lineHeight: 1.5, fontFamily: 'Inter' },\n caption: { fontSize: 12, fontWeight: '500', lineHeight: 1.5, fontFamily: 'Inter' },\n overline: { fontSize: 10, fontWeight: '600', lineHeight: 1.0, fontFamily: 'Inter' },\n buttonLarge: { fontSize: 16, fontWeight: '600', lineHeight: 1.5, fontFamily: 'Inter' },\n buttonDefault: { fontSize: 14, fontWeight: '600', lineHeight: 1.5, fontFamily: 'Inter' },\n} as const\n\nexport type Typography = typeof typography\n","import { colors } from '../tokens/colors'\nimport type { Theme } from './types'\n\nexport const lightTheme: Theme = {\n background: colors.marianBlue[50],\n surface: colors.marianBlue[100],\n border: colors.marianBlue[200],\n onBackground: colors.midnight[900],\n onSurface: colors.midnight[700],\n muted: colors.gray[500],\n primary: colors.marianBlue[600],\n secondary: colors.midnight[900],\n success: colors.mint[800],\n error: colors.ketchup[600],\n warning: colors.mustard[500],\n info: colors.marianBlue[500],\n\n surfaceDisabled: colors.gray[50],\n successBg: colors.successBg,\n textSecondary: colors.gray[700],\n textTertiary: colors.gray[500],\n textInverse: colors.white,\n borderStrong: colors.marianBlue[600],\n borderSubtle: colors.marianBlue[200],\n interactivePressed: colors.marianBlue[800],\n}\n","import { colors } from '../tokens/colors'\nimport type { Theme } from './types'\n\nexport const darkTheme: Theme = {\n background: colors.midnight[900],\n surface: colors.midnight[700],\n border: colors.midnight[500],\n onBackground: colors.marianBlue[50],\n onSurface: colors.gray[50],\n muted: colors.gray[600],\n primary: colors.marianBlue[400],\n secondary: colors.marianBlue[50],\n success: colors.mint[400],\n error: colors.ketchup[400],\n warning: colors.mustard[400],\n info: colors.marianBlue[300],\n\n surfaceDisabled: colors.midnight[600],\n successBg: colors.midnight[800],\n textSecondary: colors.gray[400],\n textTertiary: colors.gray[500],\n textInverse: colors.midnight[900],\n borderStrong: colors.marianBlue[400],\n borderSubtle: colors.midnight[600],\n interactivePressed: colors.marianBlue[300],\n} as const\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nconst button = cva(\n 'inline-flex items-center justify-center font-semibold rounded-full transition-opacity disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n primary:\n 'bg-marian-blue-700 text-white disabled:bg-gray-50 disabled:opacity-50 dark:bg-marian-blue-400 dark:text-midnight-900 dark:disabled:bg-midnight-600',\n secondary:\n 'bg-marian-blue-200 text-marian-blue-900 disabled:opacity-50 dark:bg-midnight-700 dark:text-marian-blue-200',\n ghost:\n 'bg-transparent text-marian-blue-700 disabled:opacity-50 dark:text-marian-blue-300',\n },\n size: {\n sm: 'h-9 px-3.5 text-sm',\n md: 'h-12 px-4 text-base',\n lg: 'h-14 px-6 text-lg',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\ntype ButtonProps = VariantProps<typeof button> & {\n children: React.ReactNode\n disabled?: boolean\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n type?: 'button' | 'submit' | 'reset'\n className?: string\n}\n\nexport function Button({ variant, size, disabled, children, onClick, type = 'button', className }: ButtonProps) {\n return (\n <button\n type={type}\n disabled={disabled}\n onClick={onClick}\n className={cn(button({ variant, size }), className)}\n >\n {children}\n </button>\n )\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from '../../utils/cn'\n\ntype ChipProps = {\n children: React.ReactNode\n checked?: boolean\n onClick?: () => void\n className?: string\n}\n\nexport function Chip({ children, checked = false, onClick, className }: ChipProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'inline-flex items-center justify-center h-12 px-4 rounded-full text-sm transition-colors',\n checked\n ? 'bg-marian-blue-600 text-white font-semibold dark:bg-marian-blue-500 dark:text-white'\n : 'bg-marian-blue-100 text-marian-blue-900 font-medium dark:bg-midnight-700 dark:text-marian-blue-100',\n className\n )}\n >\n {children}\n </button>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype AlertVariant = 'success' | 'info'\n\ntype AlertProps = {\n variant?: AlertVariant\n title: string\n description?: string\n className?: string\n}\n\nexport function Alert({ variant = 'info', title, description, className }: AlertProps) {\n return (\n <div\n className={cn(\n 'w-full p-5 rounded-tl-[32px] rounded-tr-[32px] rounded-br-[32px] border border-marian-blue-200 dark:border-midnight-600',\n variant === 'success'\n ? 'bg-success-bg dark:bg-midnight-800'\n : 'bg-marian-blue-50 dark:bg-midnight-700',\n className\n )}\n >\n <p\n className=\"[font-family:'Poppins',sans-serif] font-semibold text-base leading-snug text-marian-blue-900 dark:text-marian-blue-100\"\n >\n {title}\n </p>\n {description && (\n <p className=\"mt-3 font-medium text-sm leading-normal text-gray-700 dark:text-gray-400\">\n {description}\n </p>\n )}\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype ProgressBarProps = {\n value: number\n className?: string\n}\n\nexport function ProgressBar({ value, className }: ProgressBarProps) {\n const pct = Math.min(100, Math.max(0, value))\n\n return (\n <div\n role=\"progressbar\"\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\n 'relative h-2 w-full rounded-full bg-marian-blue-200 overflow-hidden dark:bg-midnight-600',\n className\n )}\n >\n <div\n className=\"absolute inset-y-0 left-0 bg-marian-blue-700 rounded-[24px] transition-[width] dark:bg-marian-blue-400\"\n style={{ width: `${pct}%` }}\n />\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype InputState = 'default' | 'filled' | 'error' | 'disabled'\n\ntype InputProps = {\n value?: string\n placeholder?: string\n state?: InputState\n leadingIcon?: React.ReactNode\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n className?: string\n}\n\nexport function Input({ value, placeholder = 'exemplo@email.com', state = 'default', leadingIcon, onChange, className }: InputProps) {\n const isDisabled = state === 'disabled'\n const isError = state === 'error'\n\n return (\n <div\n className={cn(\n 'flex items-center gap-2 h-12 px-3 rounded-xl border text-sm font-medium',\n 'focus-within:border-2 focus-within:border-marian-blue-600 dark:focus-within:border-marian-blue-400',\n isDisabled\n ? 'bg-marian-blue-50 border-gray-200 text-gray-200 cursor-not-allowed dark:bg-midnight-800 dark:border-midnight-500 dark:text-gray-600'\n : isError\n ? 'bg-marian-blue-100 border-ketchup-600 text-ketchup-700 dark:bg-midnight-700 dark:border-ketchup-400 dark:text-ketchup-400'\n : 'bg-marian-blue-100 border-marian-blue-200 text-gray-500 dark:bg-midnight-700 dark:border-midnight-600 dark:text-gray-500',\n className\n )}\n >\n {leadingIcon && (\n <span className=\"shrink-0 text-current\">{leadingIcon}</span>\n )}\n <input\n type=\"text\"\n value={value}\n placeholder={placeholder}\n disabled={isDisabled}\n onChange={onChange}\n className=\"flex-1 bg-transparent outline-none placeholder:text-current text-current min-w-0 focus:text-marian-blue-900 dark:focus:text-marian-blue-100\"\n />\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype CheckboxProps = {\n checked?: boolean\n onChange?: (checked: boolean) => void\n disabled?: boolean\n className?: string\n}\n\nfunction CheckIcon() {\n return (\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 5L4.5 8.5L11 1.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport function Checkbox({ checked = false, onChange, disabled = false, className }: CheckboxProps) {\n return (\n <label\n className={cn(\n 'relative size-5 rounded-md flex items-center justify-center transition-colors',\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n checked\n ? 'bg-marian-blue-800 text-white dark:bg-marian-blue-400 dark:text-midnight-900'\n : 'border border-marian-blue-600 bg-transparent dark:border-marian-blue-400',\n className\n )}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={() => onChange?.(!checked)}\n className=\"sr-only\"\n />\n {checked && <CheckIcon />}\n </label>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype RadioItemProps = {\n label: string\n description?: string\n selected?: boolean\n icon?: React.ReactNode\n onClick?: () => void\n className?: string\n}\n\nfunction RadioIndicator({ selected }: { selected: boolean }) {\n return (\n <div\n className={cn(\n 'size-5 rounded-full border flex items-center justify-center shrink-0',\n selected\n ? 'border-marian-blue-100'\n : 'border-marian-blue-800 dark:border-marian-blue-300'\n )}\n >\n {selected && (\n <svg width=\"10\" height=\"8\" viewBox=\"0 0 10 8\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 4L3.5 6.5L9 1\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </div>\n )\n}\n\nexport function RadioItem({ label, description, selected = false, icon, onClick, className }: RadioItemProps) {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n onClick={onClick}\n className={cn(\n 'flex items-center justify-between h-12 px-4 rounded-2xl transition-colors text-left',\n selected\n ? 'bg-marian-blue-600 text-white dark:bg-marian-blue-500'\n : 'bg-marian-blue-100 text-marian-blue-900 dark:bg-midnight-700 dark:text-marian-blue-100',\n className\n )}\n >\n <div className=\"flex items-center gap-3\">\n {icon && <span className=\"shrink-0 size-5\">{icon}</span>}\n <div className=\"flex flex-col gap-0.5\">\n <span\n className={cn(\n 'text-sm leading-normal',\n selected ? 'font-bold' : 'font-medium'\n )}\n >\n {label}\n </span>\n {description && (\n <span\n className={cn(\n 'text-xs leading-normal tracking-[0.024px]',\n selected ? 'text-current opacity-80' : 'text-gray-700 dark:text-gray-500'\n )}\n >\n {description}\n </span>\n )}\n </div>\n </div>\n <RadioIndicator selected={selected} />\n </button>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype RadioGroupProps = {\n children: React.ReactNode\n label?: string\n className?: string\n}\n\nexport function RadioGroup({ children, label, className }: RadioGroupProps) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n className={cn('flex flex-col gap-2', className)}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype ActionItemProps = {\n label: string\n description?: string\n selected?: boolean\n icon?: React.ReactNode\n onClick?: () => void\n className?: string\n}\n\nfunction ChevronRight() {\n return (\n <svg width=\"8\" height=\"14\" viewBox=\"0 0 8 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 1L7 7L1 13\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport function ActionItem({ label, description, selected = false, icon, onClick, className }: ActionItemProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex items-center gap-5 h-14 px-4 rounded-2xl transition-colors text-left text-marian-blue-900 dark:text-marian-blue-100',\n selected\n ? 'bg-marian-blue-200 border-2 border-marian-blue-600 dark:bg-midnight-600 dark:border-marian-blue-400'\n : 'bg-marian-blue-100 dark:bg-midnight-700',\n className\n )}\n >\n <div className=\"flex flex-1 items-center gap-4 min-w-0\">\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <div className=\"flex flex-col gap-1 flex-1 min-w-0\">\n <span className=\"text-sm font-medium leading-normal whitespace-nowrap\">\n {label}\n </span>\n {description && (\n <span className=\"text-xs font-normal text-gray-700 dark:text-gray-400 leading-normal tracking-[0.024px]\">\n {description}\n </span>\n )}\n </div>\n </div>\n <span className=\"shrink-0\">\n <ChevronRight />\n </span>\n </button>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype StepState = 'completed' | 'active' | 'upcoming'\n\ntype Step = {\n label: string\n}\n\ntype StepperProps = {\n steps: Step[]\n currentStep: number\n className?: string\n}\n\nfunction Dot({ state }: { state: StepState }) {\n return (\n <div\n className={cn(\n 'shrink-0 size-1 rounded-full',\n state === 'completed'\n ? 'bg-marian-blue-600 dark:bg-marian-blue-400'\n : 'bg-marian-blue-200 dark:bg-midnight-600'\n )}\n />\n )\n}\n\nfunction Track({ state }: { state: StepState }) {\n return (\n <div className=\"w-full h-1 rounded-lg overflow-hidden bg-marian-blue-200 dark:bg-midnight-600\">\n {state === 'completed' && (\n <div className=\"h-full w-full bg-marian-blue-600 rounded-lg dark:bg-marian-blue-400\" />\n )}\n {state === 'active' && (\n <div className=\"h-full w-[calc(100%-12px)] bg-marian-blue-900 rounded-lg dark:bg-marian-blue-100\" />\n )}\n </div>\n )\n}\n\nexport function Stepper({ steps, currentStep, className }: StepperProps) {\n return (\n <div className={cn('flex items-end gap-1 w-full', className)}>\n {steps.map((step, i) => {\n const state: StepState =\n i < currentStep ? 'completed' : i === currentStep ? 'active' : 'upcoming'\n\n return (\n <div key={step.label} className=\"flex flex-col gap-1 flex-1 min-w-0\">\n {state === 'active' && (\n <span className=\"text-[10px] font-semibold text-marian-blue-900 dark:text-marian-blue-100 leading-none tracking-[0.8px] uppercase truncate\">\n {step.label}\n </span>\n )}\n {(state === 'completed' || state === 'upcoming') && (\n <div className=\"h-[10px]\" />\n )}\n <Track state={state} />\n </div>\n )\n }).reduce<React.ReactNode[]>((acc, el, i) => {\n if (i === 0) return [el]\n const prevState: StepState =\n i - 1 < currentStep ? 'completed' : i - 1 === currentStep ? 'active' : 'upcoming'\n return [...acc, <Dot key={`dot-${i}`} state={prevState} />, el]\n }, [])}\n </div>\n )\n}\n","export const ratingScaleTokens = {\n itemWidth: 60,\n circleSize: 60,\n circlePadding: 8,\n circleRadius: 30,\n emojiFontSize: 38,\n emojiLineHeight: 44,\n labelFontSize: 12,\n numberFontSize: 10,\n itemGap: 8,\n labelNumberGap: 11,\n}\n\nexport const DEFAULT_OPTIONS = [\n { emoji: '😞', label: 'Nada\\na ver' },\n { emoji: '🙁', label: 'Pouco\\na ver' },\n { emoji: '😐', label: 'Mais ou\\nmenos' },\n { emoji: '🙂', label: 'Tem\\na ver' },\n { emoji: '😊', label: 'Totalmente\\neu' },\n] as const\n","import { cn } from '../../utils/cn'\nimport { DEFAULT_OPTIONS } from './RatingScale.styles'\n\ntype RatingScaleOption = {\n emoji: string\n label: string\n}\n\ntype RatingScaleProps = {\n value?: number | null\n onChange?: (value: number) => void\n options?: ReadonlyArray<RatingScaleOption>\n className?: string\n}\n\nexport function RatingScale({ value = null, onChange, options = DEFAULT_OPTIONS, className }: RatingScaleProps) {\n return (\n <div className={cn('flex items-start justify-between', className)}>\n {options.map((option, index) => {\n const itemValue = index + 1\n const selected = value === itemValue\n return (\n <button\n key={itemValue}\n type=\"button\"\n onClick={() => onChange?.(itemValue)}\n className=\"flex w-[60px] flex-col items-center gap-2\"\n aria-pressed={selected}\n >\n <div\n className={cn(\n 'flex size-[60px] items-center justify-center overflow-hidden rounded-full p-[8px] transition-colors',\n selected\n ? 'bg-marian-blue-600'\n : 'border border-marian-blue-200 bg-marian-blue-50 dark:border-midnight-500 dark:bg-midnight-700'\n )}\n >\n <span className=\"select-none text-[38px] leading-none\">{option.emoji}</span>\n </div>\n <div className=\"flex w-full flex-col items-center gap-[11px]\">\n <span\n className={cn(\n 'w-full whitespace-pre-line text-center text-[12px] leading-[1.3] tracking-[0.06px]',\n selected\n ? 'font-bold text-marian-blue-600'\n : 'font-medium text-marian-blue-900 dark:text-marian-blue-100'\n )}\n >\n {option.label}\n </span>\n <span className=\"text-[10px] font-semibold leading-none tracking-[0.8px] text-gray-500\">\n {itemValue}\n </span>\n </div>\n </button>\n )\n })}\n </div>\n )\n}\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}
@@ -1,13 +1,387 @@
1
1
  import {
2
+ DEFAULT_OPTIONS,
2
3
  darkTheme,
3
4
  lightTheme
4
- } from "./chunk-QIJRSFZB.mjs";
5
+ } from "./chunk-CC3QVZS2.mjs";
5
6
  import {
6
- colors
7
- } from "./chunk-E2C4G6H4.mjs";
7
+ colors,
8
+ typography
9
+ } from "./chunk-NK4IHR7O.mjs";
10
+
11
+ // src/components/Button/Button.web.tsx
12
+ import { cva } from "class-variance-authority";
13
+
14
+ // src/utils/cn.ts
15
+ import { clsx } from "clsx";
16
+ import { twMerge } from "tailwind-merge";
17
+ function cn(...inputs) {
18
+ return twMerge(clsx(inputs));
19
+ }
20
+
21
+ // src/components/Button/Button.web.tsx
22
+ import { jsx } from "react/jsx-runtime";
23
+ var button = cva(
24
+ "inline-flex items-center justify-center font-semibold rounded-full transition-opacity disabled:cursor-not-allowed",
25
+ {
26
+ variants: {
27
+ variant: {
28
+ primary: "bg-marian-blue-700 text-white disabled:bg-gray-50 disabled:opacity-50 dark:bg-marian-blue-400 dark:text-midnight-900 dark:disabled:bg-midnight-600",
29
+ secondary: "bg-marian-blue-200 text-marian-blue-900 disabled:opacity-50 dark:bg-midnight-700 dark:text-marian-blue-200",
30
+ ghost: "bg-transparent text-marian-blue-700 disabled:opacity-50 dark:text-marian-blue-300"
31
+ },
32
+ size: {
33
+ sm: "h-9 px-3.5 text-sm",
34
+ md: "h-12 px-4 text-base",
35
+ lg: "h-14 px-6 text-lg"
36
+ }
37
+ },
38
+ defaultVariants: {
39
+ variant: "primary",
40
+ size: "md"
41
+ }
42
+ }
43
+ );
44
+ function Button({ variant, size, disabled, children, onClick, type = "button", className }) {
45
+ return /* @__PURE__ */ jsx(
46
+ "button",
47
+ {
48
+ type,
49
+ disabled,
50
+ onClick,
51
+ className: cn(button({ variant, size }), className),
52
+ children
53
+ }
54
+ );
55
+ }
56
+
57
+ // src/components/Chip/Chip.web.tsx
58
+ import { jsx as jsx2 } from "react/jsx-runtime";
59
+ function Chip({ children, checked = false, onClick, className }) {
60
+ return /* @__PURE__ */ jsx2(
61
+ "button",
62
+ {
63
+ type: "button",
64
+ onClick,
65
+ className: cn(
66
+ "inline-flex items-center justify-center h-12 px-4 rounded-full text-sm transition-colors",
67
+ checked ? "bg-marian-blue-600 text-white font-semibold dark:bg-marian-blue-500 dark:text-white" : "bg-marian-blue-100 text-marian-blue-900 font-medium dark:bg-midnight-700 dark:text-marian-blue-100",
68
+ className
69
+ ),
70
+ children
71
+ }
72
+ );
73
+ }
74
+
75
+ // src/components/Alert/Alert.web.tsx
76
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
77
+ function Alert({ variant = "info", title, description, className }) {
78
+ return /* @__PURE__ */ jsxs(
79
+ "div",
80
+ {
81
+ className: cn(
82
+ "w-full p-5 rounded-tl-[32px] rounded-tr-[32px] rounded-br-[32px] border border-marian-blue-200 dark:border-midnight-600",
83
+ variant === "success" ? "bg-success-bg dark:bg-midnight-800" : "bg-marian-blue-50 dark:bg-midnight-700",
84
+ className
85
+ ),
86
+ children: [
87
+ /* @__PURE__ */ jsx3(
88
+ "p",
89
+ {
90
+ className: "[font-family:'Poppins',sans-serif] font-semibold text-base leading-snug text-marian-blue-900 dark:text-marian-blue-100",
91
+ children: title
92
+ }
93
+ ),
94
+ description && /* @__PURE__ */ jsx3("p", { className: "mt-3 font-medium text-sm leading-normal text-gray-700 dark:text-gray-400", children: description })
95
+ ]
96
+ }
97
+ );
98
+ }
99
+
100
+ // src/components/ProgressBar/ProgressBar.web.tsx
101
+ import { jsx as jsx4 } from "react/jsx-runtime";
102
+ function ProgressBar({ value, className }) {
103
+ const pct = Math.min(100, Math.max(0, value));
104
+ return /* @__PURE__ */ jsx4(
105
+ "div",
106
+ {
107
+ role: "progressbar",
108
+ "aria-valuenow": pct,
109
+ "aria-valuemin": 0,
110
+ "aria-valuemax": 100,
111
+ className: cn(
112
+ "relative h-2 w-full rounded-full bg-marian-blue-200 overflow-hidden dark:bg-midnight-600",
113
+ className
114
+ ),
115
+ children: /* @__PURE__ */ jsx4(
116
+ "div",
117
+ {
118
+ className: "absolute inset-y-0 left-0 bg-marian-blue-700 rounded-[24px] transition-[width] dark:bg-marian-blue-400",
119
+ style: { width: `${pct}%` }
120
+ }
121
+ )
122
+ }
123
+ );
124
+ }
125
+
126
+ // src/components/Input/Input.web.tsx
127
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
128
+ function Input({ value, placeholder = "exemplo@email.com", state = "default", leadingIcon, onChange, className }) {
129
+ const isDisabled = state === "disabled";
130
+ const isError = state === "error";
131
+ return /* @__PURE__ */ jsxs2(
132
+ "div",
133
+ {
134
+ className: cn(
135
+ "flex items-center gap-2 h-12 px-3 rounded-xl border text-sm font-medium",
136
+ "focus-within:border-2 focus-within:border-marian-blue-600 dark:focus-within:border-marian-blue-400",
137
+ isDisabled ? "bg-marian-blue-50 border-gray-200 text-gray-200 cursor-not-allowed dark:bg-midnight-800 dark:border-midnight-500 dark:text-gray-600" : isError ? "bg-marian-blue-100 border-ketchup-600 text-ketchup-700 dark:bg-midnight-700 dark:border-ketchup-400 dark:text-ketchup-400" : "bg-marian-blue-100 border-marian-blue-200 text-gray-500 dark:bg-midnight-700 dark:border-midnight-600 dark:text-gray-500",
138
+ className
139
+ ),
140
+ children: [
141
+ leadingIcon && /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-current", children: leadingIcon }),
142
+ /* @__PURE__ */ jsx5(
143
+ "input",
144
+ {
145
+ type: "text",
146
+ value,
147
+ placeholder,
148
+ disabled: isDisabled,
149
+ onChange,
150
+ className: "flex-1 bg-transparent outline-none placeholder:text-current text-current min-w-0 focus:text-marian-blue-900 dark:focus:text-marian-blue-100"
151
+ }
152
+ )
153
+ ]
154
+ }
155
+ );
156
+ }
157
+
158
+ // src/components/Checkbox/Checkbox.web.tsx
159
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
160
+ function CheckIcon() {
161
+ return /* @__PURE__ */ jsx6("svg", { width: "12", height: "10", viewBox: "0 0 12 10", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx6("path", { d: "M1 5L4.5 8.5L11 1.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
162
+ }
163
+ function Checkbox({ checked = false, onChange, disabled = false, className }) {
164
+ return /* @__PURE__ */ jsxs3(
165
+ "label",
166
+ {
167
+ className: cn(
168
+ "relative size-5 rounded-md flex items-center justify-center transition-colors",
169
+ disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
170
+ checked ? "bg-marian-blue-800 text-white dark:bg-marian-blue-400 dark:text-midnight-900" : "border border-marian-blue-600 bg-transparent dark:border-marian-blue-400",
171
+ className
172
+ ),
173
+ children: [
174
+ /* @__PURE__ */ jsx6(
175
+ "input",
176
+ {
177
+ type: "checkbox",
178
+ checked,
179
+ disabled,
180
+ onChange: () => onChange?.(!checked),
181
+ className: "sr-only"
182
+ }
183
+ ),
184
+ checked && /* @__PURE__ */ jsx6(CheckIcon, {})
185
+ ]
186
+ }
187
+ );
188
+ }
189
+
190
+ // src/components/RadioItem/RadioItem.web.tsx
191
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
192
+ function RadioIndicator({ selected }) {
193
+ return /* @__PURE__ */ jsx7(
194
+ "div",
195
+ {
196
+ className: cn(
197
+ "size-5 rounded-full border flex items-center justify-center shrink-0",
198
+ selected ? "border-marian-blue-100" : "border-marian-blue-800 dark:border-marian-blue-300"
199
+ ),
200
+ children: selected && /* @__PURE__ */ jsx7("svg", { width: "10", height: "8", viewBox: "0 0 10 8", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx7("path", { d: "M1 4L3.5 6.5L9 1", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })
201
+ }
202
+ );
203
+ }
204
+ function RadioItem({ label, description, selected = false, icon, onClick, className }) {
205
+ return /* @__PURE__ */ jsxs4(
206
+ "button",
207
+ {
208
+ type: "button",
209
+ role: "radio",
210
+ "aria-checked": selected,
211
+ onClick,
212
+ className: cn(
213
+ "flex items-center justify-between h-12 px-4 rounded-2xl transition-colors text-left",
214
+ selected ? "bg-marian-blue-600 text-white dark:bg-marian-blue-500" : "bg-marian-blue-100 text-marian-blue-900 dark:bg-midnight-700 dark:text-marian-blue-100",
215
+ className
216
+ ),
217
+ children: [
218
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3", children: [
219
+ icon && /* @__PURE__ */ jsx7("span", { className: "shrink-0 size-5", children: icon }),
220
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-0.5", children: [
221
+ /* @__PURE__ */ jsx7(
222
+ "span",
223
+ {
224
+ className: cn(
225
+ "text-sm leading-normal",
226
+ selected ? "font-bold" : "font-medium"
227
+ ),
228
+ children: label
229
+ }
230
+ ),
231
+ description && /* @__PURE__ */ jsx7(
232
+ "span",
233
+ {
234
+ className: cn(
235
+ "text-xs leading-normal tracking-[0.024px]",
236
+ selected ? "text-current opacity-80" : "text-gray-700 dark:text-gray-500"
237
+ ),
238
+ children: description
239
+ }
240
+ )
241
+ ] })
242
+ ] }),
243
+ /* @__PURE__ */ jsx7(RadioIndicator, { selected })
244
+ ]
245
+ }
246
+ );
247
+ }
248
+
249
+ // src/components/RadioGroup/RadioGroup.web.tsx
250
+ import { jsx as jsx8 } from "react/jsx-runtime";
251
+ function RadioGroup({ children, label, className }) {
252
+ return /* @__PURE__ */ jsx8(
253
+ "div",
254
+ {
255
+ role: "radiogroup",
256
+ "aria-label": label,
257
+ className: cn("flex flex-col gap-2", className),
258
+ children
259
+ }
260
+ );
261
+ }
262
+
263
+ // src/components/ActionItem/ActionItem.web.tsx
264
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
265
+ function ChevronRight() {
266
+ return /* @__PURE__ */ jsx9("svg", { width: "8", height: "14", viewBox: "0 0 8 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx9("path", { d: "M1 1L7 7L1 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
267
+ }
268
+ function ActionItem({ label, description, selected = false, icon, onClick, className }) {
269
+ return /* @__PURE__ */ jsxs5(
270
+ "button",
271
+ {
272
+ type: "button",
273
+ onClick,
274
+ className: cn(
275
+ "flex items-center gap-5 h-14 px-4 rounded-2xl transition-colors text-left text-marian-blue-900 dark:text-marian-blue-100",
276
+ selected ? "bg-marian-blue-200 border-2 border-marian-blue-600 dark:bg-midnight-600 dark:border-marian-blue-400" : "bg-marian-blue-100 dark:bg-midnight-700",
277
+ className
278
+ ),
279
+ children: [
280
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-1 items-center gap-4 min-w-0", children: [
281
+ icon && /* @__PURE__ */ jsx9("span", { className: "shrink-0", children: icon }),
282
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
283
+ /* @__PURE__ */ jsx9("span", { className: "text-sm font-medium leading-normal whitespace-nowrap", children: label }),
284
+ description && /* @__PURE__ */ jsx9("span", { className: "text-xs font-normal text-gray-700 dark:text-gray-400 leading-normal tracking-[0.024px]", children: description })
285
+ ] })
286
+ ] }),
287
+ /* @__PURE__ */ jsx9("span", { className: "shrink-0", children: /* @__PURE__ */ jsx9(ChevronRight, {}) })
288
+ ]
289
+ }
290
+ );
291
+ }
292
+
293
+ // src/components/Stepper/Stepper.web.tsx
294
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
295
+ function Dot({ state }) {
296
+ return /* @__PURE__ */ jsx10(
297
+ "div",
298
+ {
299
+ className: cn(
300
+ "shrink-0 size-1 rounded-full",
301
+ state === "completed" ? "bg-marian-blue-600 dark:bg-marian-blue-400" : "bg-marian-blue-200 dark:bg-midnight-600"
302
+ )
303
+ }
304
+ );
305
+ }
306
+ function Track({ state }) {
307
+ return /* @__PURE__ */ jsxs6("div", { className: "w-full h-1 rounded-lg overflow-hidden bg-marian-blue-200 dark:bg-midnight-600", children: [
308
+ state === "completed" && /* @__PURE__ */ jsx10("div", { className: "h-full w-full bg-marian-blue-600 rounded-lg dark:bg-marian-blue-400" }),
309
+ state === "active" && /* @__PURE__ */ jsx10("div", { className: "h-full w-[calc(100%-12px)] bg-marian-blue-900 rounded-lg dark:bg-marian-blue-100" })
310
+ ] });
311
+ }
312
+ function Stepper({ steps, currentStep, className }) {
313
+ return /* @__PURE__ */ jsx10("div", { className: cn("flex items-end gap-1 w-full", className), children: steps.map((step, i) => {
314
+ const state = i < currentStep ? "completed" : i === currentStep ? "active" : "upcoming";
315
+ return /* @__PURE__ */ jsxs6("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
316
+ state === "active" && /* @__PURE__ */ jsx10("span", { className: "text-[10px] font-semibold text-marian-blue-900 dark:text-marian-blue-100 leading-none tracking-[0.8px] uppercase truncate", children: step.label }),
317
+ (state === "completed" || state === "upcoming") && /* @__PURE__ */ jsx10("div", { className: "h-[10px]" }),
318
+ /* @__PURE__ */ jsx10(Track, { state })
319
+ ] }, step.label);
320
+ }).reduce((acc, el, i) => {
321
+ if (i === 0) return [el];
322
+ const prevState = i - 1 < currentStep ? "completed" : i - 1 === currentStep ? "active" : "upcoming";
323
+ return [...acc, /* @__PURE__ */ jsx10(Dot, { state: prevState }, `dot-${i}`), el];
324
+ }, []) });
325
+ }
326
+
327
+ // src/components/RatingScale/RatingScale.web.tsx
328
+ import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
329
+ function RatingScale({ value = null, onChange, options = DEFAULT_OPTIONS, className }) {
330
+ return /* @__PURE__ */ jsx11("div", { className: cn("flex items-start justify-between", className), children: options.map((option, index) => {
331
+ const itemValue = index + 1;
332
+ const selected = value === itemValue;
333
+ return /* @__PURE__ */ jsxs7(
334
+ "button",
335
+ {
336
+ type: "button",
337
+ onClick: () => onChange?.(itemValue),
338
+ className: "flex w-[60px] flex-col items-center gap-2",
339
+ "aria-pressed": selected,
340
+ children: [
341
+ /* @__PURE__ */ jsx11(
342
+ "div",
343
+ {
344
+ className: cn(
345
+ "flex size-[60px] items-center justify-center overflow-hidden rounded-full p-[8px] transition-colors",
346
+ selected ? "bg-marian-blue-600" : "border border-marian-blue-200 bg-marian-blue-50 dark:border-midnight-500 dark:bg-midnight-700"
347
+ ),
348
+ children: /* @__PURE__ */ jsx11("span", { className: "select-none text-[38px] leading-none", children: option.emoji })
349
+ }
350
+ ),
351
+ /* @__PURE__ */ jsxs7("div", { className: "flex w-full flex-col items-center gap-[11px]", children: [
352
+ /* @__PURE__ */ jsx11(
353
+ "span",
354
+ {
355
+ className: cn(
356
+ "w-full whitespace-pre-line text-center text-[12px] leading-[1.3] tracking-[0.06px]",
357
+ selected ? "font-bold text-marian-blue-600" : "font-medium text-marian-blue-900 dark:text-marian-blue-100"
358
+ ),
359
+ children: option.label
360
+ }
361
+ ),
362
+ /* @__PURE__ */ jsx11("span", { className: "text-[10px] font-semibold leading-none tracking-[0.8px] text-gray-500", children: itemValue })
363
+ ] })
364
+ ]
365
+ },
366
+ itemValue
367
+ );
368
+ }) });
369
+ }
8
370
  export {
371
+ ActionItem,
372
+ Alert,
373
+ Button,
374
+ Checkbox,
375
+ Chip,
376
+ Input,
377
+ ProgressBar,
378
+ RadioGroup,
379
+ RadioItem,
380
+ RatingScale,
381
+ Stepper,
9
382
  colors,
10
383
  darkTheme,
11
- lightTheme
384
+ lightTheme,
385
+ typography
12
386
  };
13
387
  //# sourceMappingURL=index.web.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../src/components/Button/Button.web.tsx","../src/utils/cn.ts","../src/components/Chip/Chip.web.tsx","../src/components/Alert/Alert.web.tsx","../src/components/ProgressBar/ProgressBar.web.tsx","../src/components/Input/Input.web.tsx","../src/components/Checkbox/Checkbox.web.tsx","../src/components/RadioItem/RadioItem.web.tsx","../src/components/RadioGroup/RadioGroup.web.tsx","../src/components/ActionItem/ActionItem.web.tsx","../src/components/Stepper/Stepper.web.tsx","../src/components/RatingScale/RatingScale.web.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../utils/cn'\n\nconst button = cva(\n 'inline-flex items-center justify-center font-semibold rounded-full transition-opacity disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n primary:\n 'bg-marian-blue-700 text-white disabled:bg-gray-50 disabled:opacity-50 dark:bg-marian-blue-400 dark:text-midnight-900 dark:disabled:bg-midnight-600',\n secondary:\n 'bg-marian-blue-200 text-marian-blue-900 disabled:opacity-50 dark:bg-midnight-700 dark:text-marian-blue-200',\n ghost:\n 'bg-transparent text-marian-blue-700 disabled:opacity-50 dark:text-marian-blue-300',\n },\n size: {\n sm: 'h-9 px-3.5 text-sm',\n md: 'h-12 px-4 text-base',\n lg: 'h-14 px-6 text-lg',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\ntype ButtonProps = VariantProps<typeof button> & {\n children: React.ReactNode\n disabled?: boolean\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n type?: 'button' | 'submit' | 'reset'\n className?: string\n}\n\nexport function Button({ variant, size, disabled, children, onClick, type = 'button', className }: ButtonProps) {\n return (\n <button\n type={type}\n disabled={disabled}\n onClick={onClick}\n className={cn(button({ variant, size }), className)}\n >\n {children}\n </button>\n )\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from '../../utils/cn'\n\ntype ChipProps = {\n children: React.ReactNode\n checked?: boolean\n onClick?: () => void\n className?: string\n}\n\nexport function Chip({ children, checked = false, onClick, className }: ChipProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'inline-flex items-center justify-center h-12 px-4 rounded-full text-sm transition-colors',\n checked\n ? 'bg-marian-blue-600 text-white font-semibold dark:bg-marian-blue-500 dark:text-white'\n : 'bg-marian-blue-100 text-marian-blue-900 font-medium dark:bg-midnight-700 dark:text-marian-blue-100',\n className\n )}\n >\n {children}\n </button>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype AlertVariant = 'success' | 'info'\n\ntype AlertProps = {\n variant?: AlertVariant\n title: string\n description?: string\n className?: string\n}\n\nexport function Alert({ variant = 'info', title, description, className }: AlertProps) {\n return (\n <div\n className={cn(\n 'w-full p-5 rounded-tl-[32px] rounded-tr-[32px] rounded-br-[32px] border border-marian-blue-200 dark:border-midnight-600',\n variant === 'success'\n ? 'bg-success-bg dark:bg-midnight-800'\n : 'bg-marian-blue-50 dark:bg-midnight-700',\n className\n )}\n >\n <p\n className=\"[font-family:'Poppins',sans-serif] font-semibold text-base leading-snug text-marian-blue-900 dark:text-marian-blue-100\"\n >\n {title}\n </p>\n {description && (\n <p className=\"mt-3 font-medium text-sm leading-normal text-gray-700 dark:text-gray-400\">\n {description}\n </p>\n )}\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype ProgressBarProps = {\n value: number\n className?: string\n}\n\nexport function ProgressBar({ value, className }: ProgressBarProps) {\n const pct = Math.min(100, Math.max(0, value))\n\n return (\n <div\n role=\"progressbar\"\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\n 'relative h-2 w-full rounded-full bg-marian-blue-200 overflow-hidden dark:bg-midnight-600',\n className\n )}\n >\n <div\n className=\"absolute inset-y-0 left-0 bg-marian-blue-700 rounded-[24px] transition-[width] dark:bg-marian-blue-400\"\n style={{ width: `${pct}%` }}\n />\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype InputState = 'default' | 'filled' | 'error' | 'disabled'\n\ntype InputProps = {\n value?: string\n placeholder?: string\n state?: InputState\n leadingIcon?: React.ReactNode\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n className?: string\n}\n\nexport function Input({ value, placeholder = 'exemplo@email.com', state = 'default', leadingIcon, onChange, className }: InputProps) {\n const isDisabled = state === 'disabled'\n const isError = state === 'error'\n\n return (\n <div\n className={cn(\n 'flex items-center gap-2 h-12 px-3 rounded-xl border text-sm font-medium',\n 'focus-within:border-2 focus-within:border-marian-blue-600 dark:focus-within:border-marian-blue-400',\n isDisabled\n ? 'bg-marian-blue-50 border-gray-200 text-gray-200 cursor-not-allowed dark:bg-midnight-800 dark:border-midnight-500 dark:text-gray-600'\n : isError\n ? 'bg-marian-blue-100 border-ketchup-600 text-ketchup-700 dark:bg-midnight-700 dark:border-ketchup-400 dark:text-ketchup-400'\n : 'bg-marian-blue-100 border-marian-blue-200 text-gray-500 dark:bg-midnight-700 dark:border-midnight-600 dark:text-gray-500',\n className\n )}\n >\n {leadingIcon && (\n <span className=\"shrink-0 text-current\">{leadingIcon}</span>\n )}\n <input\n type=\"text\"\n value={value}\n placeholder={placeholder}\n disabled={isDisabled}\n onChange={onChange}\n className=\"flex-1 bg-transparent outline-none placeholder:text-current text-current min-w-0 focus:text-marian-blue-900 dark:focus:text-marian-blue-100\"\n />\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype CheckboxProps = {\n checked?: boolean\n onChange?: (checked: boolean) => void\n disabled?: boolean\n className?: string\n}\n\nfunction CheckIcon() {\n return (\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 5L4.5 8.5L11 1.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport function Checkbox({ checked = false, onChange, disabled = false, className }: CheckboxProps) {\n return (\n <label\n className={cn(\n 'relative size-5 rounded-md flex items-center justify-center transition-colors',\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n checked\n ? 'bg-marian-blue-800 text-white dark:bg-marian-blue-400 dark:text-midnight-900'\n : 'border border-marian-blue-600 bg-transparent dark:border-marian-blue-400',\n className\n )}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={() => onChange?.(!checked)}\n className=\"sr-only\"\n />\n {checked && <CheckIcon />}\n </label>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype RadioItemProps = {\n label: string\n description?: string\n selected?: boolean\n icon?: React.ReactNode\n onClick?: () => void\n className?: string\n}\n\nfunction RadioIndicator({ selected }: { selected: boolean }) {\n return (\n <div\n className={cn(\n 'size-5 rounded-full border flex items-center justify-center shrink-0',\n selected\n ? 'border-marian-blue-100'\n : 'border-marian-blue-800 dark:border-marian-blue-300'\n )}\n >\n {selected && (\n <svg width=\"10\" height=\"8\" viewBox=\"0 0 10 8\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 4L3.5 6.5L9 1\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </div>\n )\n}\n\nexport function RadioItem({ label, description, selected = false, icon, onClick, className }: RadioItemProps) {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n onClick={onClick}\n className={cn(\n 'flex items-center justify-between h-12 px-4 rounded-2xl transition-colors text-left',\n selected\n ? 'bg-marian-blue-600 text-white dark:bg-marian-blue-500'\n : 'bg-marian-blue-100 text-marian-blue-900 dark:bg-midnight-700 dark:text-marian-blue-100',\n className\n )}\n >\n <div className=\"flex items-center gap-3\">\n {icon && <span className=\"shrink-0 size-5\">{icon}</span>}\n <div className=\"flex flex-col gap-0.5\">\n <span\n className={cn(\n 'text-sm leading-normal',\n selected ? 'font-bold' : 'font-medium'\n )}\n >\n {label}\n </span>\n {description && (\n <span\n className={cn(\n 'text-xs leading-normal tracking-[0.024px]',\n selected ? 'text-current opacity-80' : 'text-gray-700 dark:text-gray-500'\n )}\n >\n {description}\n </span>\n )}\n </div>\n </div>\n <RadioIndicator selected={selected} />\n </button>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype RadioGroupProps = {\n children: React.ReactNode\n label?: string\n className?: string\n}\n\nexport function RadioGroup({ children, label, className }: RadioGroupProps) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n className={cn('flex flex-col gap-2', className)}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype ActionItemProps = {\n label: string\n description?: string\n selected?: boolean\n icon?: React.ReactNode\n onClick?: () => void\n className?: string\n}\n\nfunction ChevronRight() {\n return (\n <svg width=\"8\" height=\"14\" viewBox=\"0 0 8 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 1L7 7L1 13\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport function ActionItem({ label, description, selected = false, icon, onClick, className }: ActionItemProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex items-center gap-5 h-14 px-4 rounded-2xl transition-colors text-left text-marian-blue-900 dark:text-marian-blue-100',\n selected\n ? 'bg-marian-blue-200 border-2 border-marian-blue-600 dark:bg-midnight-600 dark:border-marian-blue-400'\n : 'bg-marian-blue-100 dark:bg-midnight-700',\n className\n )}\n >\n <div className=\"flex flex-1 items-center gap-4 min-w-0\">\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <div className=\"flex flex-col gap-1 flex-1 min-w-0\">\n <span className=\"text-sm font-medium leading-normal whitespace-nowrap\">\n {label}\n </span>\n {description && (\n <span className=\"text-xs font-normal text-gray-700 dark:text-gray-400 leading-normal tracking-[0.024px]\">\n {description}\n </span>\n )}\n </div>\n </div>\n <span className=\"shrink-0\">\n <ChevronRight />\n </span>\n </button>\n )\n}\n","import { cn } from '../../utils/cn'\n\ntype StepState = 'completed' | 'active' | 'upcoming'\n\ntype Step = {\n label: string\n}\n\ntype StepperProps = {\n steps: Step[]\n currentStep: number\n className?: string\n}\n\nfunction Dot({ state }: { state: StepState }) {\n return (\n <div\n className={cn(\n 'shrink-0 size-1 rounded-full',\n state === 'completed'\n ? 'bg-marian-blue-600 dark:bg-marian-blue-400'\n : 'bg-marian-blue-200 dark:bg-midnight-600'\n )}\n />\n )\n}\n\nfunction Track({ state }: { state: StepState }) {\n return (\n <div className=\"w-full h-1 rounded-lg overflow-hidden bg-marian-blue-200 dark:bg-midnight-600\">\n {state === 'completed' && (\n <div className=\"h-full w-full bg-marian-blue-600 rounded-lg dark:bg-marian-blue-400\" />\n )}\n {state === 'active' && (\n <div className=\"h-full w-[calc(100%-12px)] bg-marian-blue-900 rounded-lg dark:bg-marian-blue-100\" />\n )}\n </div>\n )\n}\n\nexport function Stepper({ steps, currentStep, className }: StepperProps) {\n return (\n <div className={cn('flex items-end gap-1 w-full', className)}>\n {steps.map((step, i) => {\n const state: StepState =\n i < currentStep ? 'completed' : i === currentStep ? 'active' : 'upcoming'\n\n return (\n <div key={step.label} className=\"flex flex-col gap-1 flex-1 min-w-0\">\n {state === 'active' && (\n <span className=\"text-[10px] font-semibold text-marian-blue-900 dark:text-marian-blue-100 leading-none tracking-[0.8px] uppercase truncate\">\n {step.label}\n </span>\n )}\n {(state === 'completed' || state === 'upcoming') && (\n <div className=\"h-[10px]\" />\n )}\n <Track state={state} />\n </div>\n )\n }).reduce<React.ReactNode[]>((acc, el, i) => {\n if (i === 0) return [el]\n const prevState: StepState =\n i - 1 < currentStep ? 'completed' : i - 1 === currentStep ? 'active' : 'upcoming'\n return [...acc, <Dot key={`dot-${i}`} state={prevState} />, el]\n }, [])}\n </div>\n )\n}\n","import { cn } from '../../utils/cn'\nimport { DEFAULT_OPTIONS } from './RatingScale.styles'\n\ntype RatingScaleOption = {\n emoji: string\n label: string\n}\n\ntype RatingScaleProps = {\n value?: number | null\n onChange?: (value: number) => void\n options?: ReadonlyArray<RatingScaleOption>\n className?: string\n}\n\nexport function RatingScale({ value = null, onChange, options = DEFAULT_OPTIONS, className }: RatingScaleProps) {\n return (\n <div className={cn('flex items-start justify-between', className)}>\n {options.map((option, index) => {\n const itemValue = index + 1\n const selected = value === itemValue\n return (\n <button\n key={itemValue}\n type=\"button\"\n onClick={() => onChange?.(itemValue)}\n className=\"flex w-[60px] flex-col items-center gap-2\"\n aria-pressed={selected}\n >\n <div\n className={cn(\n 'flex size-[60px] items-center justify-center overflow-hidden rounded-full p-[8px] transition-colors',\n selected\n ? 'bg-marian-blue-600'\n : 'border border-marian-blue-200 bg-marian-blue-50 dark:border-midnight-500 dark:bg-midnight-700'\n )}\n >\n <span className=\"select-none text-[38px] leading-none\">{option.emoji}</span>\n </div>\n <div className=\"flex w-full flex-col items-center gap-[11px]\">\n <span\n className={cn(\n 'w-full whitespace-pre-line text-center text-[12px] leading-[1.3] tracking-[0.06px]',\n selected\n ? 'font-bold text-marian-blue-600'\n : 'font-medium text-marian-blue-900 dark:text-marian-blue-100'\n )}\n >\n {option.label}\n </span>\n <span className=\"text-[10px] font-semibold leading-none tracking-[0.8px] text-gray-500\">\n {itemValue}\n </span>\n </div>\n </button>\n )\n })}\n </div>\n )\n}\n"],"mappings":"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","names":["jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs"]}