@sbkbs/ui 1.0.1 → 1.0.3
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 +13 -10
- package/dist/components/Accordion/Accordion.d.ts +11 -0
- package/dist/components/Alert/Alert.d.ts +6 -0
- package/dist/components/Badge/Badge.d.ts +6 -0
- package/dist/components/Button/Button.stories.d.ts +7 -0
- package/dist/components/Checkbox/Checkbox.d.ts +6 -0
- package/dist/components/Chip/Chip.d.ts +5 -0
- package/dist/components/Divider/Divider.d.ts +5 -0
- package/dist/components/EmptyState/EmptyState.d.ts +8 -0
- package/dist/components/Feedback/Feedback.stories.d.ts +5 -0
- package/dist/components/Layout/Layout.d.ts +14 -0
- package/dist/components/Navigation/Navigation.d.ts +7 -0
- package/dist/components/PageHeader/PageHeader.d.ts +7 -0
- package/dist/components/Pagination/Pagination.d.ts +7 -0
- package/dist/components/Paragraph/Paragraph.d.ts +1 -0
- package/dist/components/Popover/Popover.d.ts +7 -0
- package/dist/components/Radio/Radio.d.ts +6 -0
- package/dist/components/SectionHeader/SectionHeader.d.ts +7 -0
- package/dist/components/Select/Select.d.ts +13 -0
- package/dist/components/Skeleton/Skeleton.d.ts +7 -0
- package/dist/components/Subtitle/Subtitle.d.ts +1 -0
- package/dist/components/Switch/Switch.d.ts +7 -0
- package/dist/components/Table/Table.d.ts +4 -0
- package/dist/components/Tabs/Tabs.d.ts +11 -0
- package/dist/components/Tag/Tag.d.ts +5 -0
- package/dist/components/Textarea/Textarea.d.ts +7 -0
- package/dist/components/Title/Title.d.ts +1 -0
- package/dist/components/Toast/Toast.d.ts +26 -0
- package/dist/components/Tooltip/Tooltip.d.ts +7 -0
- package/dist/index.d.ts +23 -0
- package/dist/oficios-ui.css +1 -1
- package/dist/oficios-ui.js +1048 -248
- package/dist/oficios-ui.js.map +1 -1
- package/dist/oficios-ui.umd.cjs +1 -1
- package/dist/oficios-ui.umd.cjs.map +1 -1
- package/dist/theme.css +6 -0
- package/dist/utils/cn.d.ts +1 -0
- package/package.json +19 -3
package/dist/oficios-ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oficios-ui.js","sources":["../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Footer/Footer.tsx","../src/components/Header/Header.tsx","../src/components/Input/Input.tsx","../src/components/Modal/Modal.tsx","../src/components/Paragraph/Paragraph.tsx","../src/components/Subtitle/Subtitle.tsx","../src/components/Title/Title.tsx","../src/theme/ThemeProvider.tsx"],"sourcesContent":["import type React from 'react';\nimport type { CSSProperties } from 'react';\n\n/** Paletas do guia de marca (só afeta variant primary). Use para escolher o modelo de cor do botão. */\nexport type ButtonPalette =\n | 'verde-vibrante'\n | 'verde-profundo'\n | 'grafite-azulado'\n | 'azul-acinzentado'\n | 'cinza-medio'\n | 'cinza-escuro'\n | 'off-white';\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n compact?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n /** Paleta de cor do guia de marca (aplica-se ao primary). Ignorado em outros variants. */\n palette?: ButtonPalette;\n rightIcon?: React.ReactNode;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n variant?:\n | 'primary'\n | 'secondary'\n | 'success'\n | 'error'\n | 'warning'\n | 'info'\n | 'neutral'\n | 'ghost';\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n compact = false,\n fullWidth = false,\n isLoading = false,\n leftIcon,\n rightIcon,\n children,\n className = '',\n disabled,\n palette,\n style,\n ...props\n}) => {\n const baseClass =\n 'relative inline-flex select-none items-center justify-center overflow-hidden whitespace-nowrap border border-transparent font-semibold leading-none tracking-[0.01em] transition-[all_var(--transition-base)]';\n const focusClass =\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]';\n const disabledClass = 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n const fullWidthClass = fullWidth ? 'w-full' : '';\n const loadingClass = isLoading ? '[&_.btn__content]:opacity-0' : '';\n\n const sizeClassMap: Record<NonNullable<ButtonProps['size']>, string> = {\n xs: compact\n ? 'min-h-[1.75rem] min-w-[1.75rem] gap-1 px-2 py-1 text-[var(--font-size-xs)]'\n : 'min-h-8 min-w-8 gap-1.5 px-3 py-1.5 text-[var(--font-size-xs)]',\n sm: compact\n ? 'min-h-8 min-w-8 gap-[0.3125rem] px-2.5 py-1.5 text-[var(--font-size-sm)]'\n : 'min-h-9 min-w-9 gap-[0.4375rem] px-3.5 py-2 text-[var(--font-size-sm)]',\n md: compact\n ? 'min-h-[2.375rem] min-w-[2.375rem] gap-1.5 px-3 py-2 text-[var(--font-size-base)]'\n : 'min-h-11 min-w-11 gap-2 px-4 py-2.5 text-[var(--font-size-base)]',\n lg: compact\n ? 'min-h-[2.625rem] min-w-[2.625rem] gap-[0.4375rem] px-3.5 py-[0.5625rem] text-[var(--font-size-lg)]'\n : 'min-h-12 min-w-12 gap-[0.5625rem] px-6 py-4 text-[var(--font-size-lg)]',\n xl: compact\n ? 'min-h-12 min-w-12 gap-2 px-4 py-3 text-[var(--font-size-xl)]'\n : 'min-h-14 min-w-14 gap-2.5 px-8 py-6 text-[var(--font-size-xl)]',\n };\n\n const variantClassMap: Record<NonNullable<ButtonProps['variant']>, string> = {\n primary:\n 'bg-[var(--md-primary)] text-[var(--md-on-primary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--primary-color-hover)] hover:shadow-[var(--shadow-md)]',\n secondary:\n 'bg-[var(--md-secondary)] text-[var(--md-on-secondary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--secondary-color-light)] hover:shadow-[var(--shadow-md)]',\n success:\n 'bg-[var(--success-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--success-color-light)] hover:shadow-[var(--shadow-md)]',\n error:\n 'bg-[var(--md-error)] text-[var(--md-on-error)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--error-color-light)] hover:shadow-[var(--shadow-md)]',\n warning:\n 'bg-[var(--warning-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--warning-color-light)] hover:shadow-[var(--shadow-md)]',\n info: 'bg-[var(--info-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--info-color-light)] hover:shadow-[var(--shadow-md)]',\n neutral:\n 'bg-[var(--neutral-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--neutral-color-light)] hover:shadow-[var(--shadow-md)]',\n ghost:\n 'border-[var(--md-outline-variant)] bg-transparent text-[var(--md-on-surface)] hover:bg-[var(--bg-hover)] hover:text-[var(--md-primary)] hover:border-[var(--border-color-hover)]',\n };\n\n const iconSizeClassMap: Record<NonNullable<ButtonProps['size']>, string> = {\n xs: compact ? 'h-3 w-3' : 'h-3.5 w-3.5',\n sm: compact ? 'h-3.5 w-3.5' : 'h-4 w-4',\n md: 'h-[1.125rem] w-[1.125rem]',\n lg: 'h-5 w-5',\n xl: 'h-5 w-5',\n };\n\n const paletteVars: Record<\n ButtonPalette,\n { primary: string; hover: string; onPrimary?: string }\n > = {\n 'verde-vibrante': {\n primary: 'var(--brand-verde-vibrante)',\n hover: 'var(--brand-verde-profundo)',\n },\n 'verde-profundo': {\n primary: 'var(--brand-verde-profundo)',\n hover: 'var(--brand-grafite-azulado)',\n },\n 'grafite-azulado': {\n primary: 'var(--brand-grafite-azulado)',\n hover: 'var(--brand-cinza-escuro)',\n },\n 'azul-acinzentado': {\n primary: 'var(--brand-azul-acinzentado)',\n hover: 'var(--brand-grafite-azulado)',\n },\n 'cinza-medio': {\n primary: 'var(--brand-cinza-medio)',\n hover: 'var(--brand-cinza-escuro)',\n },\n 'cinza-escuro': {\n primary: 'var(--brand-cinza-escuro)',\n hover: 'var(--brand-preto)',\n },\n 'off-white': {\n primary: 'var(--brand-off-white)',\n hover: 'var(--brand-branco)',\n onPrimary: 'var(--brand-grafite-azulado)',\n },\n };\n\n type ButtonCssVars = CSSProperties & {\n '--md-primary'?: string;\n '--primary-color-hover'?: string;\n '--md-on-primary'?: string;\n };\n const paletteStyle: ButtonCssVars = {};\n if (palette && variant === 'primary') {\n paletteStyle['--md-primary'] = paletteVars[palette].primary;\n paletteStyle['--primary-color-hover'] = paletteVars[palette].hover;\n if (paletteVars[palette].onPrimary) {\n paletteStyle['--md-on-primary'] = paletteVars[palette].onPrimary;\n }\n }\n\n const combinedClass = [\n baseClass,\n focusClass,\n disabledClass,\n sizeClassMap[size],\n variantClassMap[variant],\n fullWidthClass,\n loadingClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={combinedClass}\n disabled={disabled || isLoading}\n style={{ ...paletteStyle, ...style }}\n {...props}\n >\n {isLoading && (\n <span\n aria-hidden=\"true\"\n className=\"absolute inline-flex h-[1em] w-[1em] animate-spin items-center justify-center\"\n >\n <svg fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" strokeOpacity=\"0.25\" />\n <path d=\"M12 2 A10 10 0 0 1 22 12\" strokeLinecap=\"round\" />\n </svg>\n </span>\n )}\n {!isLoading && leftIcon && (\n <span\n className={`mr-1 inline-flex shrink-0 items-center justify-center leading-none ${iconSizeClassMap[size]}`}\n >\n {leftIcon}\n </span>\n )}\n <span className=\"btn__content inline-flex items-center justify-center\">\n {children}\n </span>\n {!isLoading && rightIcon && (\n <span\n className={`ml-1 inline-flex shrink-0 items-center justify-center leading-none ${iconSizeClassMap[size]}`}\n >\n {rightIcon}\n </span>\n )}\n </button>\n );\n};\n","import type React from 'react';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n hoverable?: boolean;\n padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n variant?: 'default' | 'elevated' | 'outlined' | 'flat';\n}\n\nexport const Card: React.FC<CardProps> = ({\n variant = 'default',\n padding = 'md',\n hoverable = false,\n children,\n className = '',\n ...props\n}) => {\n const baseClass =\n 'relative overflow-hidden rounded-[var(--border-radius-lg)] transition-[var(--transition-all)]';\n const variantClassMap: Record<NonNullable<CardProps['variant']>, string> = {\n default:\n 'bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-sm)]',\n elevated:\n 'bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-lg)]',\n outlined: 'bg-transparent border border-[var(--md-outline-variant)] shadow-none',\n flat: 'bg-[var(--md-surface)] border-0 shadow-none',\n };\n const paddingClassMap: Record<NonNullable<CardProps['padding']>, string> = {\n none: 'p-0',\n sm: 'p-[var(--spacing-md)]',\n md: 'p-[var(--spacing-lg)]',\n lg: 'p-[var(--spacing-xl)]',\n xl: 'p-[var(--spacing-2xl)]',\n };\n const hoverableClass = hoverable ? 'hover:shadow-[var(--shadow-md)]' : '';\n const combinedClass = [\n baseClass,\n variantClassMap[variant],\n paddingClassMap[padding],\n hoverableClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={combinedClass} {...props}>\n {children}\n </div>\n );\n};\n","import type React from 'react';\nimport { useState } from 'react';\n\nexport interface FooterProps {\n /** Classe CSS adicional */\n className?: string;\n /** Texto alternativo do logo */\n logoAlt?: string;\n /** Texto exibido se a imagem do logo falhar (ex.: \"SBK\") */\n logoFallbackText?: string;\n /** URL da imagem do logo */\n logoSrc?: string;\n /** Texto antes do logo (ex.: \"Powered by\") */\n poweredByText?: string;\n}\n\nexport const Footer: React.FC<FooterProps> = ({\n poweredByText = 'Powered by',\n logoSrc,\n logoAlt = 'Logo',\n logoFallbackText,\n className = '',\n}) => {\n const [logoVisible, setLogoVisible] = useState(true);\n return (\n <footer\n className={[\n 'relative z-[1] flex w-full shrink-0 items-center justify-center border-t border-[var(--border-color)] bg-[var(--bg-secondary)] px-[var(--spacing-2xl)] py-[var(--spacing-lg)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className=\"flex items-center gap-[var(--spacing-md)]\">\n {poweredByText && (\n <span className=\"text-[0.95rem] font-normal text-[var(--text-secondary)]\">\n {poweredByText}\n </span>\n )}\n {(logoSrc || logoFallbackText) && (\n <div className=\"flex items-center\">\n {logoSrc && logoVisible && (\n <img\n alt={logoAlt}\n className=\"h-6 w-auto object-contain\"\n onError={(e) => {\n setLogoVisible(false);\n }}\n src={logoSrc}\n style={{\n filter: 'brightness(0)',\n }}\n />\n )}\n {logoFallbackText && (\n <span\n className=\"flex items-center text-base font-bold tracking-[0.1em] text-[var(--md-primary)]\"\n style={{\n display: logoSrc && logoVisible ? 'none' : 'flex',\n fontFamily: '\"Orbitron\", sans-serif',\n }}\n >\n {logoFallbackText}\n </span>\n )}\n </div>\n )}\n </div>\n </footer>\n );\n};\n","import type React from 'react';\nimport { useEffect, useState } from 'react';\nimport type { Theme } from '../../theme/ThemeProvider';\n\nexport interface HeaderProps {\n /** Classe CSS adicional */\n className?: string;\n /** Texto alternativo do logo */\n logoAlt?: string;\n /** URL da imagem do logo (tema escuro). Se não informado, usa logoSrc. */\n logoDarkSrc?: string;\n /** URL da imagem do logo (tema claro) */\n logoSrc?: string;\n /** Callback ao clicar na área do logo/título */\n onLogoClick?: () => void;\n /** Conteúdo da área direita (ex.: seletor de idioma, toggle tema, menu usuário) */\n rightContent?: React.ReactNode;\n /** Subtítulo abaixo do título */\n subtitle?: React.ReactNode;\n /** Tema opcional para escolher o logo correto sem depender do ThemeProvider do UI */\n theme?: Theme;\n /** Título exibido ao lado do logo (ex.: \"OFÍCIO.IA\") */\n title?: React.ReactNode;\n}\n\nconst detectTheme = (): Theme => {\n if (typeof document === 'undefined') {\n return 'light';\n }\n\n return document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'light';\n};\n\nexport const Header: React.FC<HeaderProps> = ({\n logoSrc,\n logoDarkSrc,\n logoAlt = 'Logo',\n title,\n subtitle,\n theme,\n onLogoClick,\n rightContent,\n className = '',\n}) => {\n const [isScrolled, setIsScrolled] = useState(false);\n const [resolvedTheme, setResolvedTheme] = useState<Theme>(\n () => theme ?? detectTheme()\n );\n\n const logoSrcResolved =\n resolvedTheme === 'dark' && logoDarkSrc ? logoDarkSrc : logoSrc;\n\n useEffect(() => {\n const handleScroll = () => setIsScrolled(window.scrollY > 10);\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n useEffect(() => {\n if (theme) {\n setResolvedTheme(theme);\n return;\n }\n\n const syncTheme = () => setResolvedTheme(detectTheme());\n syncTheme();\n\n if (typeof MutationObserver === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver(syncTheme);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme'],\n });\n\n return () => observer.disconnect();\n }, [theme]);\n\n const handleClick = () => onLogoClick?.();\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n onLogoClick?.();\n }\n };\n\n return (\n <header\n className={[\n 'fixed inset-x-0 top-0 z-[1000] w-full backdrop-blur-[12px]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className=\"h-0.5 w-full bg-[var(--md-primary)]\" />\n <div\n className=\"flex items-center justify-between px-6 py-2 shadow-[var(--shadow-sm)] max-md:flex-col max-md:gap-3 max-md:px-4 max-md:py-3\"\n style={{\n color: 'var(--md-on-surface)',\n background: `color-mix(in srgb, var(--md-surface) ${\n isScrolled ? '14%' : '18%'\n }, transparent)`,\n borderBottom: `1px solid color-mix(in srgb, var(--md-outline-variant) ${\n isScrolled ? '22%' : '30%'\n }, transparent)`,\n }}\n >\n <div\n className=\"flex cursor-pointer items-center gap-3 transition-opacity duration-200 ease-in-out hover:opacity-80\"\n onClick={onLogoClick ? handleClick : undefined}\n onKeyDown={onLogoClick ? handleKeyDown : undefined}\n role={onLogoClick ? 'button' : undefined}\n tabIndex={onLogoClick ? 0 : undefined}\n >\n {logoSrcResolved && (\n <div className=\"flex h-16 w-16 shrink-0 items-center justify-center\">\n <img\n alt={logoAlt}\n className=\"h-full w-full object-contain\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n const next = (e.target as HTMLElement)\n .nextElementSibling as HTMLElement;\n if (next) {\n next.style.display = 'block';\n }\n }}\n src={logoSrcResolved}\n />\n <svg\n className=\"hidden h-full w-full\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 2L2 7l10 5 10-5-10-5z\" />\n <path d=\"M2 17l10 5 10-5M2 12l10 5 10-5\" />\n </svg>\n </div>\n )}\n {(title || subtitle) && (\n <div className=\"flex flex-col gap-1\">\n {title && (\n <h1\n className=\"m-0 inline-flex items-baseline text-[1.375rem] font-bold leading-[1.2] tracking-[0.05em] text-[var(--md-on-surface)] max-md:text-xl\"\n style={{ fontFamily: '\"Orbitron\", sans-serif' }}\n >\n {title}\n </h1>\n )}\n {subtitle && (\n <p className=\"m-0 text-[0.8125rem] font-normal text-[var(--md-on-surface-variant)] max-md:text-xs\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n </div>\n {rightContent && (\n <div className=\"flex shrink-0 items-center gap-3 max-md:w-full max-md:flex-wrap max-md:justify-between\">\n {rightContent}\n </div>\n )}\n </div>\n </header>\n );\n};\n","import type React from 'react';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n error?: string;\n fullWidth?: boolean;\n helperText?: string;\n label?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n error,\n helperText,\n leftIcon,\n rightIcon,\n fullWidth = false,\n size = 'md',\n className = '',\n id,\n ...props\n}) => {\n const inputId = id || `input-${Math.random().toString(36).substring(2, 9)}`;\n const hasError = !!error;\n const sizeClassMap: Record<NonNullable<InputProps['size']>, string> = {\n sm: 'min-h-8 px-[var(--spacing-md)] py-[var(--spacing-sm)] text-[var(--font-size-sm)]',\n md: 'min-h-10 px-[var(--spacing-lg)] py-[var(--spacing-md)] text-[var(--font-size-base)]',\n lg: 'min-h-12 px-[var(--spacing-xl)] py-[var(--spacing-lg)] text-[var(--font-size-lg)]',\n };\n const combinedClass = [\n 'w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] font-inherit text-[var(--md-on-surface)] outline-none transition-[var(--transition-all)] placeholder:text-[var(--md-on-surface-variant)] placeholder:opacity-70 hover:not-disabled:not-focus:border-[var(--border-color-hover)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)] disabled:cursor-not-allowed disabled:bg-[var(--md-surface-container-high)] disabled:opacity-60',\n hasError\n ? 'border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]'\n : '',\n leftIcon ? 'pl-10' : '',\n rightIcon ? 'pr-10' : '',\n sizeClassMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={`flex flex-col gap-[var(--spacing-xs)] ${fullWidth ? 'w-full' : ''}`}>\n {label && (\n <label\n className=\"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]\"\n htmlFor={inputId}\n >\n {label}\n </label>\n )}\n <div className=\"group relative flex w-full items-center\">\n {leftIcon && (\n <span className=\"pointer-events-none absolute left-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]\">\n {leftIcon}\n </span>\n )}\n <input\n aria-describedby={\n error\n ? `${inputId}-error`\n : helperText\n ? `${inputId}-helper`\n : undefined\n }\n aria-invalid={hasError ? true : undefined}\n className={combinedClass}\n id={inputId}\n {...props}\n />\n {rightIcon && (\n <span className=\"pointer-events-none absolute right-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]\">\n {rightIcon}\n </span>\n )}\n </div>\n {error && (\n <span\n className=\"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-error)]\"\n id={`${inputId}-error`}\n role=\"alert\"\n >\n {error}\n </span>\n )}\n {helperText && !error && (\n <span\n className=\"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-on-surface-variant)]\"\n id={`${inputId}-helper`}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n};\n","import type React from 'react';\nimport { useEffect } from 'react';\n\nexport interface ModalProps {\n children: React.ReactNode;\n className?: string;\n closeOnOverlayClick?: boolean;\n isOpen: boolean;\n onClose: () => void;\n showCloseButton?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n subtitle?: string;\n title?: string | React.ReactNode;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n subtitle,\n children,\n size = 'md',\n showCloseButton = true,\n closeOnOverlayClick = true,\n className = '',\n}) => {\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n }\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, onClose]);\n\n if (!isOpen) {\n return null;\n }\n\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n const sizeClassMap: Record<NonNullable<ModalProps['size']>, string> = {\n sm: 'max-w-[25rem]',\n md: 'max-w-[31.25rem]',\n lg: 'max-w-[43.75rem]',\n xl: 'max-w-[56.25rem]',\n full: 'max-h-[90vh] max-w-[90vw]',\n };\n const combinedClass = [\n 'relative z-[var(--z-index-modal)] m-auto flex w-full max-h-[90vh] max-w-full flex-col overflow-hidden rounded-[var(--border-radius-2xl)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] shadow-[var(--shadow-2xl)]',\n sizeClassMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n aria-labelledby={title ? 'modal-title' : undefined}\n aria-modal=\"true\"\n className=\"fixed inset-0 z-[var(--z-index-modal-backdrop)] flex min-h-[100dvh] items-center justify-center overflow-y-auto bg-black/50 p-[var(--spacing-lg)] backdrop-blur-[8px]\"\n onClick={handleOverlayClick}\n role=\"dialog\"\n >\n <div className={combinedClass}>\n {(title || subtitle || showCloseButton) && (\n <div className=\"flex shrink-0 items-start justify-between gap-[var(--spacing-lg)] border-b border-[var(--md-outline-variant)] p-[var(--spacing-2xl)]\">\n {(title || subtitle) && (\n <div className=\"flex-1\">\n {title && (\n <h2\n className=\"mb-[var(--spacing-xs)] mt-0 text-[var(--font-size-2xl)] font-[var(--font-weight-semibold)] leading-[var(--line-height-tight)] text-[var(--md-on-surface)]\"\n id=\"modal-title\"\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"m-0 text-[var(--font-size-base)] leading-[var(--line-height-normal)] text-[var(--md-on-surface-variant)]\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n {showCloseButton && (\n <button\n aria-label=\"Fechar modal\"\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--border-radius-md)] border-0 bg-[var(--md-surface-container-high)] text-[var(--md-on-surface)] transition-[var(--transition-all)] hover:bg-[color:color-mix(in_srgb,var(--md-error)_15%,var(--md-surface))] hover:text-[var(--md-error)]\"\n onClick={onClose}\n type=\"button\"\n >\n <svg\n fill=\"none\"\n className=\"h-5 w-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\" />\n <line x1=\"6\" x2=\"18\" y1=\"6\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n )}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto p-[var(--spacing-2xl)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n","import type React from 'react';\n\nexport interface ParagraphProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right' | 'justify';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'light' | 'normal' | 'medium';\n}\n\nexport const Paragraph: React.FC<ParagraphProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<ParagraphProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)] leading-[var(--line-height-normal)]',\n sm: 'text-[var(--font-size-sm)] leading-[var(--line-height-normal)]',\n md: 'text-[var(--font-size-base)] leading-[var(--line-height-relaxed)]',\n lg: 'text-[var(--font-size-lg)] leading-[var(--line-height-loose)]',\n };\n const weightClassMap: Record<NonNullable<ParagraphProps['weight']>, string> = {\n light: 'font-[var(--font-weight-light)]',\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n };\n const alignClassMap: Record<NonNullable<ParagraphProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n };\n const combinedClass = [\n 'm-0 text-[var(--text-primary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n muted ? 'text-[var(--text-muted)]' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\n\nexport interface SubtitleProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'normal' | 'medium' | 'semibold';\n}\n\nexport const Subtitle: React.FC<SubtitleProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<SubtitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)]',\n sm: 'text-[var(--font-size-sm)]',\n md: 'text-[var(--font-size-base)]',\n lg: 'text-[var(--font-size-lg)]',\n };\n const weightClassMap: Record<NonNullable<SubtitleProps['weight']>, string> = {\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n };\n const alignClassMap: Record<NonNullable<SubtitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const combinedClass = [\n 'm-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n muted ? 'text-[var(--text-muted)] opacity-80' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\n\nexport interface TitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n children: React.ReactNode;\n gradient?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';\n}\n\nexport const Title: React.FC<TitleProps> = ({\n as = 'h1',\n size = '2xl',\n weight = 'bold',\n align = 'left',\n gradient = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<TitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-sm)]',\n sm: 'text-[var(--font-size-base)]',\n md: 'text-[var(--font-size-lg)]',\n lg: 'text-[var(--font-size-xl)]',\n xl: 'text-[var(--font-size-2xl)]',\n '2xl': 'text-[var(--font-size-3xl)]',\n '3xl': 'text-[var(--font-size-4xl)]',\n '4xl': 'text-[3rem]',\n };\n const weightClassMap: Record<NonNullable<TitleProps['weight']>, string> = {\n light: 'font-[var(--font-weight-light)]',\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n bold: 'font-[var(--font-weight-bold)]',\n extrabold: 'font-extrabold',\n };\n const alignClassMap: Record<NonNullable<TitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const gradientClass = gradient\n ? 'bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent'\n : '';\n const combinedClass = [\n 'm-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n gradientClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import {\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nexport type Theme = 'light' | 'dark';\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: Theme;\n}\n\nexport const ThemeProvider = ({\n children,\n defaultTheme = 'light',\n}: ThemeProviderProps) => {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const saved = window.localStorage.getItem('theme');\n return (saved as Theme) || defaultTheme;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n window.localStorage.setItem('theme', theme);\n document.documentElement.setAttribute('data-theme', theme);\n }, [theme]);\n\n const toggleTheme = (): void => {\n setTheme((prev) => (prev === 'dark' ? 'light' : 'dark'));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n"],"names":["Button","variant","size","compact","fullWidth","isLoading","leftIcon","rightIcon","children","className","disabled","palette","style","props","baseClass","focusClass","disabledClass","fullWidthClass","loadingClass","sizeClassMap","variantClassMap","iconSizeClassMap","paletteVars","paletteStyle","combinedClass","jsxs","jsx","Card","padding","hoverable","paddingClassMap","hoverableClass","Footer","poweredByText","logoSrc","logoAlt","logoFallbackText","logoVisible","setLogoVisible","useState","e","detectTheme","Header","logoDarkSrc","title","subtitle","theme","onLogoClick","rightContent","isScrolled","setIsScrolled","resolvedTheme","setResolvedTheme","logoSrcResolved","useEffect","handleScroll","syncTheme","observer","handleClick","handleKeyDown","next","Input","label","error","helperText","id","inputId","hasError","Modal","isOpen","onClose","showCloseButton","closeOnOverlayClick","handleEscape","handleOverlayClick","Paragraph","as","weight","align","muted","Component","weightClassMap","alignClassMap","Subtitle","Title","gradient","gradientClass","ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","defaultTheme","setTheme","toggleTheme","prev"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oficios-ui.js","sources":["../src/utils/cn.ts","../src/components/Accordion/Accordion.tsx","../src/components/Button/Button.tsx","../src/components/Alert/Alert.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Divider/Divider.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Footer/Footer.tsx","../src/components/Header/Header.tsx","../src/components/Input/Input.tsx","../src/components/Layout/Layout.tsx","../src/components/Modal/Modal.tsx","../src/components/Navigation/Navigation.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Paragraph/Paragraph.tsx","../src/components/PageHeader/PageHeader.tsx","../src/components/Popover/Popover.tsx","../src/components/Radio/Radio.tsx","../src/components/SectionHeader/SectionHeader.tsx","../src/components/Select/Select.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Subtitle/Subtitle.tsx","../src/components/Switch/Switch.tsx","../src/components/Tag/Tag.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Table/Table.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toast/Toast.tsx","../src/components/Title/Title.tsx","../src/components/Tooltip/Tooltip.tsx","../src/theme/ThemeProvider.tsx"],"sourcesContent":["export const cn = (...classes: Array<string | false | null | undefined>) =>\n classes.filter(Boolean).join(' ');\n\n","import type React from 'react';\nimport { useRef, useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AccordionItem {\n content: React.ReactNode;\n id: string;\n title: React.ReactNode;\n}\n\nexport interface AccordionProps {\n defaultOpenId?: string;\n items: AccordionItem[];\n}\n\nexport const Accordion: React.FC<AccordionProps> = ({ items, defaultOpenId }) => {\n const [openId, setOpenId] = useState<string | null>(defaultOpenId ?? null);\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <div className=\"grid gap-2\" ref={rootRef}>\n {items.map((item) => {\n const isOpen = openId === item.id;\n const triggerId = `accordion-trigger-${item.id}`;\n const panelId = `accordion-panel-${item.id}`;\n return (\n <div\n className=\"overflow-hidden rounded-[var(--border-radius-md)] border border-[var(--border-color)]\"\n key={item.id}\n >\n <button\n aria-controls={panelId}\n aria-expanded={isOpen}\n className=\"flex w-full items-center justify-between bg-[var(--bg-secondary)] px-4 py-3 text-left text-sm font-medium text-[var(--text-primary)] hover:bg-[var(--bg-hover)]\"\n id={triggerId}\n onKeyDown={(event) => {\n if (!rootRef.current) {\n return;\n }\n const buttons = Array.from(\n rootRef.current.querySelectorAll<HTMLButtonElement>(\n '[id^=\"accordion-trigger-\"]'\n )\n );\n const currentIndex = buttons.findIndex((btn) => btn.id === triggerId);\n if (currentIndex === -1 || buttons.length === 0) {\n return;\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n buttons[(currentIndex + 1) % buttons.length]?.focus();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n buttons[(currentIndex - 1 + buttons.length) % buttons.length]?.focus();\n } else if (event.key === 'Home') {\n event.preventDefault();\n buttons[0]?.focus();\n } else if (event.key === 'End') {\n event.preventDefault();\n buttons[buttons.length - 1]?.focus();\n }\n }}\n onClick={() => setOpenId((prev) => (prev === item.id ? null : item.id))}\n type=\"button\"\n >\n {item.title}\n <span className={cn('transition', isOpen ? 'rotate-180' : '')}>⌄</span>\n </button>\n {isOpen && (\n <div\n aria-labelledby={triggerId}\n className=\"bg-[var(--bg-tertiary)] px-4 py-3 text-sm text-[var(--text-secondary)]\"\n id={panelId}\n role=\"region\"\n >\n {item.content}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\n","import type React from 'react';\nimport type { CSSProperties } from 'react';\n\n/** Paletas do guia de marca (só afeta variant primary). Use para escolher o modelo de cor do botão. */\nexport type ButtonPalette =\n | 'verde-vibrante'\n | 'verde-profundo'\n | 'grafite-azulado'\n | 'azul-acinzentado'\n | 'cinza-medio'\n | 'cinza-escuro'\n | 'off-white';\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n compact?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n /** Paleta de cor do guia de marca (aplica-se ao primary). Ignorado em outros variants. */\n palette?: ButtonPalette;\n rightIcon?: React.ReactNode;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n variant?:\n | 'primary'\n | 'secondary'\n | 'success'\n | 'error'\n | 'warning'\n | 'info'\n | 'neutral'\n | 'ghost';\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n compact = false,\n fullWidth = false,\n isLoading = false,\n leftIcon,\n rightIcon,\n children,\n className = '',\n disabled,\n palette,\n style,\n ...props\n}) => {\n const baseClass =\n 'relative inline-flex select-none items-center justify-center overflow-hidden whitespace-nowrap rounded-[var(--border-radius-md)] border border-transparent font-semibold leading-none tracking-[0.01em] transition-[all_var(--transition-base)]';\n const focusClass =\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]';\n const disabledClass = 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n const fullWidthClass = fullWidth ? 'w-full' : '';\n const loadingClass = '';\n const offWhiteBorderClass =\n palette === 'off-white' && variant === 'primary'\n ? 'border-[var(--border-color)]'\n : '';\n\n const sizeClassMap: Record<NonNullable<ButtonProps['size']>, string> = {\n xs: compact\n ? 'min-h-[1.75rem] min-w-[1.75rem] gap-1 px-2 py-1 text-[var(--font-size-xs)]'\n : 'min-h-8 min-w-8 gap-1.5 px-3 py-1.5 text-[var(--font-size-xs)]',\n sm: compact\n ? 'min-h-8 min-w-8 gap-[0.3125rem] px-2.5 py-1.5 text-[var(--font-size-sm)]'\n : 'min-h-9 min-w-9 gap-[0.4375rem] px-3.5 py-2 text-[var(--font-size-sm)]',\n md: compact\n ? 'min-h-[2.375rem] min-w-[2.375rem] gap-1.5 px-3 py-2 text-[var(--font-size-base)]'\n : 'min-h-11 min-w-11 gap-2 px-4 py-2.5 text-[var(--font-size-base)]',\n lg: compact\n ? 'min-h-[2.625rem] min-w-[2.625rem] gap-[0.4375rem] px-3.5 py-[0.5625rem] text-[var(--font-size-lg)]'\n : 'min-h-12 min-w-12 gap-[0.5625rem] px-6 py-4 text-[var(--font-size-lg)]',\n xl: compact\n ? 'min-h-12 min-w-12 gap-2 px-4 py-3 text-[var(--font-size-xl)]'\n : 'min-h-14 min-w-14 gap-2.5 px-8 py-6 text-[var(--font-size-xl)]',\n };\n\n const variantClassMap: Record<NonNullable<ButtonProps['variant']>, string> = {\n primary:\n 'bg-[var(--md-primary)] text-[var(--md-on-primary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--primary-color-hover)] hover:shadow-[var(--shadow-md)]',\n secondary:\n 'bg-[var(--md-secondary)] text-[var(--md-on-secondary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--secondary-color-light)] hover:shadow-[var(--shadow-md)]',\n success:\n 'bg-[var(--success-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--success-color-light)] hover:shadow-[var(--shadow-md)]',\n error:\n 'bg-[var(--md-error)] text-[var(--md-on-error)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--error-color-light)] hover:shadow-[var(--shadow-md)]',\n warning:\n 'bg-[var(--warning-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--warning-color-light)] hover:shadow-[var(--shadow-md)]',\n info: 'bg-[var(--info-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--info-color-light)] hover:shadow-[var(--shadow-md)]',\n neutral:\n 'bg-[var(--neutral-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--neutral-color-light)] hover:shadow-[var(--shadow-md)]',\n ghost:\n 'border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--md-on-surface)] shadow-[var(--shadow-xs)] hover:bg-[var(--bg-hover)] hover:text-[var(--md-primary)] hover:border-[var(--border-color-hover)]',\n };\n\n const iconSizeClassMap: Record<NonNullable<ButtonProps['size']>, string> = {\n xs: compact ? 'h-3 w-3' : 'h-3.5 w-3.5',\n sm: compact ? 'h-3.5 w-3.5' : 'h-4 w-4',\n md: 'h-[1.125rem] w-[1.125rem]',\n lg: 'h-5 w-5',\n xl: 'h-5 w-5',\n };\n\n const paletteVars: Record<\n ButtonPalette,\n { primary: string; hover: string; onPrimary?: string }\n > = {\n 'verde-vibrante': {\n primary: 'var(--brand-verde-vibrante)',\n hover: 'var(--brand-verde-profundo)',\n },\n 'verde-profundo': {\n primary: 'var(--brand-verde-profundo)',\n hover: 'var(--brand-grafite-azulado)',\n },\n 'grafite-azulado': {\n primary: 'var(--brand-grafite-azulado)',\n hover: 'var(--brand-cinza-escuro)',\n },\n 'azul-acinzentado': {\n primary: 'var(--brand-azul-acinzentado)',\n hover: 'var(--brand-grafite-azulado)',\n },\n 'cinza-medio': {\n primary: 'var(--brand-cinza-medio)',\n hover: 'var(--brand-cinza-escuro)',\n },\n 'cinza-escuro': {\n primary: 'var(--brand-cinza-escuro)',\n hover: 'var(--brand-preto)',\n },\n 'off-white': {\n primary: 'var(--brand-off-white)',\n hover: 'var(--brand-branco)',\n onPrimary: 'var(--brand-grafite-azulado)',\n },\n };\n\n type ButtonCssVars = CSSProperties & {\n '--md-primary'?: string;\n '--primary-color-hover'?: string;\n '--md-on-primary'?: string;\n };\n const paletteStyle: ButtonCssVars = {};\n if (palette && variant === 'primary') {\n paletteStyle['--md-primary'] = paletteVars[palette].primary;\n paletteStyle['--primary-color-hover'] = paletteVars[palette].hover;\n if (paletteVars[palette].onPrimary) {\n paletteStyle['--md-on-primary'] = paletteVars[palette].onPrimary;\n }\n }\n\n const combinedClass = [\n baseClass,\n focusClass,\n disabledClass,\n sizeClassMap[size],\n variantClassMap[variant],\n offWhiteBorderClass,\n fullWidthClass,\n loadingClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={combinedClass}\n disabled={disabled || isLoading}\n style={{ ...paletteStyle, ...style }}\n {...props}\n >\n {isLoading && (\n <span\n aria-hidden=\"true\"\n className=\"absolute inline-flex h-[1em] w-[1em] animate-spin items-center justify-center\"\n >\n <svg fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" strokeOpacity=\"0.25\" />\n <path d=\"M12 2 A10 10 0 0 1 22 12\" strokeLinecap=\"round\" />\n </svg>\n </span>\n )}\n {!isLoading && leftIcon && (\n <span\n className={`mr-1 inline-flex shrink-0 items-center justify-center leading-none ${iconSizeClassMap[size]}`}\n >\n {leftIcon}\n </span>\n )}\n {!isLoading && (\n <span className=\"btn__content inline-flex items-center justify-center\">\n {children}\n </span>\n )}\n {!isLoading && rightIcon && (\n <span\n className={`ml-1 inline-flex shrink-0 items-center justify-center leading-none ${iconSizeClassMap[size]}`}\n >\n {rightIcon}\n </span>\n )}\n </button>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string;\n tone?: 'info' | 'success' | 'warning' | 'error';\n}\n\nexport const Alert: React.FC<AlertProps> = ({\n title,\n tone = 'info',\n children,\n className,\n ...props\n}) => {\n const toneClass = {\n info: 'border-[var(--info-color)]/40 bg-[var(--info-color)]/10 text-[var(--text-primary)]',\n success:\n 'border-[var(--success-color)]/40 bg-[var(--success-color)]/10 text-[var(--text-primary)]',\n warning:\n 'border-[var(--warning-color)]/40 bg-[var(--warning-color)]/10 text-[var(--text-primary)]',\n error: 'border-[var(--md-error)]/40 bg-[var(--md-error)]/10 text-[var(--text-primary)]',\n }[tone];\n\n return (\n <div\n className={cn(\n 'rounded-[var(--border-radius-md)] border p-4',\n toneClass,\n className\n )}\n role=\"alert\"\n {...props}\n >\n {title && <p className=\"mb-1 text-sm font-semibold\">{title}</p>}\n <div className=\"text-sm leading-relaxed\">{children}</div>\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: 'sm' | 'md';\n tone?: 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'info';\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n size = 'md',\n tone = 'neutral',\n className,\n children,\n ...props\n}) => {\n const toneClass = {\n neutral: 'bg-[var(--bg-tertiary)] text-[var(--text-secondary)]',\n primary: 'bg-[var(--md-primary)] text-[var(--md-on-primary)]',\n success: 'bg-[var(--success-color)] text-white',\n warning: 'bg-[var(--warning-color)] text-white',\n error: 'bg-[var(--md-error)] text-[var(--md-on-error)]',\n info: 'bg-[var(--info-color)] text-white',\n }[tone];\n\n const sizeClass =\n size === 'sm' ? 'px-2 py-0.5 text-[0.6875rem]' : 'px-2.5 py-1 text-xs';\n\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-full font-medium leading-none',\n toneClass,\n sizeClass,\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n};\n\n","import type React from 'react';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n hoverable?: boolean;\n padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n variant?: 'default' | 'elevated' | 'outlined' | 'flat';\n}\n\nexport const Card: React.FC<CardProps> = ({\n variant = 'default',\n padding = 'md',\n hoverable = false,\n children,\n className = '',\n ...props\n}) => {\n const baseClass =\n 'relative overflow-hidden rounded-[var(--border-radius-lg)] transition-[var(--transition-all)]';\n const variantClassMap: Record<NonNullable<CardProps['variant']>, string> = {\n default:\n 'bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-sm)]',\n elevated:\n 'bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-lg)]',\n outlined: 'bg-transparent border border-[var(--md-outline-variant)] shadow-none',\n flat: 'bg-[var(--md-surface)] border-0 shadow-none',\n };\n const paddingClassMap: Record<NonNullable<CardProps['padding']>, string> = {\n none: 'p-0',\n sm: 'p-[var(--spacing-md)]',\n md: 'p-[var(--spacing-lg)]',\n lg: 'p-[var(--spacing-xl)]',\n xl: 'p-[var(--spacing-2xl)]',\n };\n const hoverableClass = hoverable ? 'hover:shadow-[var(--shadow-md)]' : '';\n const combinedClass = [\n baseClass,\n variantClassMap[variant],\n paddingClassMap[padding],\n hoverableClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={combinedClass} {...props}>\n {children}\n </div>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n helperText?: string;\n label?: string;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n helperText,\n className,\n id,\n ...props\n}) => {\n const inputId = id || `checkbox-${Math.random().toString(36).slice(2, 9)}`;\n return (\n <label className={cn('inline-flex cursor-pointer items-start gap-2', className)} htmlFor={inputId}>\n <input\n className=\"mt-0.5 h-4 w-4 rounded border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--md-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--border-color-focus)]\"\n id={inputId}\n type=\"checkbox\"\n {...props}\n />\n <span className=\"grid gap-0.5\">\n {label && <span className=\"text-sm text-[var(--text-primary)]\">{label}</span>}\n {helperText && <span className=\"text-xs text-[var(--text-muted)]\">{helperText}</span>}\n </span>\n </label>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ChipProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n selected?: boolean;\n}\n\nexport const Chip: React.FC<ChipProps> = ({\n selected = false,\n className,\n children,\n ...props\n}) => {\n return (\n <button\n className={cn(\n 'inline-flex items-center rounded-full border px-3 py-1.5 text-sm transition',\n selected\n ? 'border-[var(--md-primary)] bg-[color:color-mix(in_srgb,var(--md-primary)_16%,transparent)] text-[var(--md-on-surface)]'\n : 'border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]',\n className\n )}\n type=\"button\"\n {...props}\n >\n {children}\n </button>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = 'horizontal',\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n 'bg-[var(--border-color)]',\n orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px',\n className\n )}\n role=\"separator\"\n {...props}\n />\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface EmptyStateProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n action?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n title: React.ReactNode;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n 'grid justify-items-center gap-3 rounded-[var(--border-radius-lg)] border border-dashed border-[var(--border-color)] bg-[var(--bg-secondary)] p-6 text-center',\n className\n )}\n {...props}\n >\n {icon && <div className=\"text-[var(--text-muted)]\">{icon}</div>}\n <h3 className=\"m-0 text-lg font-semibold text-[var(--text-primary)]\">{title}</h3>\n {description && (\n <p className=\"m-0 max-w-[30rem] text-sm text-[var(--text-secondary)]\">\n {description}\n </p>\n )}\n {action && <div className=\"mt-1\">{action}</div>}\n </div>\n );\n};\n\n","import type React from 'react';\nimport { useState } from 'react';\n\nexport interface FooterProps {\n /** Classe CSS adicional */\n className?: string;\n /** Texto alternativo do logo */\n logoAlt?: string;\n /** Texto exibido se a imagem do logo falhar (ex.: \"SBK\") */\n logoFallbackText?: string;\n /** URL da imagem do logo */\n logoSrc?: string;\n /** Texto antes do logo (ex.: \"Powered by\") */\n poweredByText?: string;\n}\n\nexport const Footer: React.FC<FooterProps> = ({\n poweredByText = 'Powered by',\n logoSrc,\n logoAlt = 'Logo',\n logoFallbackText,\n className = '',\n}) => {\n const [logoVisible, setLogoVisible] = useState(true);\n return (\n <footer\n className={[\n 'relative z-[1] flex w-full shrink-0 items-center justify-center border-t border-[var(--border-color)] bg-[var(--bg-secondary)] px-[var(--spacing-2xl)] py-[var(--spacing-lg)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className=\"flex items-center gap-[var(--spacing-md)]\">\n {poweredByText && (\n <span className=\"text-[0.95rem] font-normal text-[var(--text-secondary)]\">\n {poweredByText}\n </span>\n )}\n {(logoSrc || logoFallbackText) && (\n <div className=\"flex items-center\">\n {logoSrc && logoVisible && (\n <img\n alt={logoAlt}\n className=\"h-6 w-auto object-contain\"\n onError={(e) => {\n setLogoVisible(false);\n }}\n src={logoSrc}\n style={{\n filter: 'brightness(0)',\n }}\n />\n )}\n {logoFallbackText && (\n <span\n className=\"flex items-center text-base font-bold tracking-[0.1em] text-[var(--md-primary)]\"\n style={{\n display: logoSrc && logoVisible ? 'none' : 'flex',\n fontFamily: '\"Orbitron\", sans-serif',\n }}\n >\n {logoFallbackText}\n </span>\n )}\n </div>\n )}\n </div>\n </footer>\n );\n};\n","import type React from 'react';\nimport { useEffect, useState } from 'react';\nimport type { Theme } from '../../theme/ThemeProvider';\n\nexport interface HeaderProps {\n /** Classe CSS adicional */\n className?: string;\n /** Texto alternativo do logo */\n logoAlt?: string;\n /** URL da imagem do logo (tema escuro). Se não informado, usa logoSrc. */\n logoDarkSrc?: string;\n /** URL da imagem do logo (tema claro) */\n logoSrc?: string;\n /** Callback ao clicar na área do logo/título */\n onLogoClick?: () => void;\n /** Conteúdo da área direita (ex.: seletor de idioma, toggle tema, menu usuário) */\n rightContent?: React.ReactNode;\n /** Subtítulo abaixo do título */\n subtitle?: React.ReactNode;\n /** Tema opcional para escolher o logo correto sem depender do ThemeProvider do UI */\n theme?: Theme;\n /** Título exibido ao lado do logo (ex.: \"OFÍCIO.IA\") */\n title?: React.ReactNode;\n}\n\nconst detectTheme = (): Theme => {\n if (typeof document === 'undefined') {\n return 'light';\n }\n\n return document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'light';\n};\n\nexport const Header: React.FC<HeaderProps> = ({\n logoSrc,\n logoDarkSrc,\n logoAlt = 'Logo',\n title,\n subtitle,\n theme,\n onLogoClick,\n rightContent,\n className = '',\n}) => {\n const [isScrolled, setIsScrolled] = useState(false);\n const [resolvedTheme, setResolvedTheme] = useState<Theme>(\n () => theme ?? detectTheme()\n );\n\n const logoSrcResolved =\n resolvedTheme === 'dark' && logoDarkSrc ? logoDarkSrc : logoSrc;\n\n useEffect(() => {\n const handleScroll = () => setIsScrolled(window.scrollY > 10);\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n useEffect(() => {\n if (theme) {\n setResolvedTheme(theme);\n return;\n }\n\n const syncTheme = () => setResolvedTheme(detectTheme());\n syncTheme();\n\n if (typeof MutationObserver === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver(syncTheme);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme'],\n });\n\n return () => observer.disconnect();\n }, [theme]);\n\n const handleClick = () => onLogoClick?.();\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n onLogoClick?.();\n }\n };\n\n return (\n <header\n className={[\n 'fixed inset-x-0 top-0 z-[1000] w-full backdrop-blur-[12px]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className=\"h-0.5 w-full bg-[var(--md-primary)]\" />\n <div\n className=\"flex items-center justify-between px-6 py-2 shadow-[var(--shadow-sm)] max-md:flex-col max-md:gap-3 max-md:px-4 max-md:py-3\"\n style={{\n color: 'var(--md-on-surface)',\n background: `color-mix(in srgb, var(--md-surface) ${\n isScrolled ? '14%' : '18%'\n }, transparent)`,\n borderBottom: `1px solid color-mix(in srgb, var(--md-outline-variant) ${\n isScrolled ? '22%' : '30%'\n }, transparent)`,\n }}\n >\n <div\n className=\"flex cursor-pointer items-center gap-3 transition-opacity duration-200 ease-in-out hover:opacity-80\"\n onClick={onLogoClick ? handleClick : undefined}\n onKeyDown={onLogoClick ? handleKeyDown : undefined}\n role={onLogoClick ? 'button' : undefined}\n tabIndex={onLogoClick ? 0 : undefined}\n >\n {logoSrcResolved && (\n <div className=\"flex h-16 w-16 shrink-0 items-center justify-center\">\n <img\n alt={logoAlt}\n className=\"h-full w-full object-contain\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n const next = (e.target as HTMLElement)\n .nextElementSibling as HTMLElement;\n if (next) {\n next.style.display = 'block';\n }\n }}\n src={logoSrcResolved}\n />\n <svg\n className=\"hidden h-full w-full\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 2L2 7l10 5 10-5-10-5z\" />\n <path d=\"M2 17l10 5 10-5M2 12l10 5 10-5\" />\n </svg>\n </div>\n )}\n {(title || subtitle) && (\n <div className=\"flex flex-col gap-1\">\n {title && (\n <h1\n className=\"m-0 inline-flex items-baseline text-[1.375rem] font-bold leading-[1.2] tracking-[0.05em] text-[var(--md-on-surface)] max-md:text-xl\"\n style={{ fontFamily: '\"Orbitron\", sans-serif' }}\n >\n {title}\n </h1>\n )}\n {subtitle && (\n <p className=\"m-0 text-[0.8125rem] font-normal text-[var(--md-on-surface-variant)] max-md:text-xs\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n </div>\n {rightContent && (\n <div className=\"flex shrink-0 items-center gap-3 max-md:w-full max-md:flex-wrap max-md:justify-between\">\n {rightContent}\n </div>\n )}\n </div>\n </header>\n );\n};\n","import type React from 'react';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n error?: string;\n fullWidth?: boolean;\n helperText?: string;\n label?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n error,\n helperText,\n leftIcon,\n rightIcon,\n fullWidth = false,\n size = 'md',\n className = '',\n id,\n ...props\n}) => {\n const inputId = id || `input-${Math.random().toString(36).substring(2, 9)}`;\n const hasError = !!error;\n const sizeClassMap: Record<NonNullable<InputProps['size']>, string> = {\n sm: 'min-h-8 px-[var(--spacing-md)] py-[var(--spacing-sm)] text-[var(--font-size-sm)]',\n md: 'min-h-10 px-[var(--spacing-lg)] py-[var(--spacing-md)] text-[var(--font-size-base)]',\n lg: 'min-h-12 px-[var(--spacing-xl)] py-[var(--spacing-lg)] text-[var(--font-size-lg)]',\n };\n const combinedClass = [\n 'w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] font-inherit text-[var(--md-on-surface)] outline-none transition-[var(--transition-all)] placeholder:text-[var(--md-on-surface-variant)] placeholder:opacity-70 hover:not-disabled:not-focus:border-[var(--border-color-hover)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)] disabled:cursor-not-allowed disabled:bg-[var(--md-surface-container-high)] disabled:opacity-60',\n hasError\n ? 'border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]'\n : '',\n leftIcon ? 'pl-10' : '',\n rightIcon ? 'pr-10' : '',\n sizeClassMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={`flex flex-col gap-[var(--spacing-xs)] ${fullWidth ? 'w-full' : ''}`}>\n {label && (\n <label\n className=\"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]\"\n htmlFor={inputId}\n >\n {label}\n </label>\n )}\n <div className=\"group relative flex w-full items-center\">\n {leftIcon && (\n <span className=\"pointer-events-none absolute left-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]\">\n {leftIcon}\n </span>\n )}\n <input\n aria-describedby={\n error\n ? `${inputId}-error`\n : helperText\n ? `${inputId}-helper`\n : undefined\n }\n aria-invalid={hasError ? true : undefined}\n className={combinedClass}\n id={inputId}\n {...props}\n />\n {rightIcon && (\n <span className=\"pointer-events-none absolute right-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]\">\n {rightIcon}\n </span>\n )}\n </div>\n {error && (\n <span\n className=\"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-error)]\"\n id={`${inputId}-error`}\n role=\"alert\"\n >\n {error}\n </span>\n )}\n {helperText && !error && (\n <span\n className=\"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-on-surface-variant)]\"\n id={`${inputId}-helper`}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nexport const Container: React.FC<ContainerProps> = ({\n size = 'lg',\n className,\n ...props\n}) => {\n const sizeClass = {\n sm: 'max-w-2xl',\n md: 'max-w-4xl',\n lg: 'max-w-6xl',\n xl: 'max-w-7xl',\n full: 'max-w-none',\n }[size];\n return <div className={cn('mx-auto w-full px-4', sizeClass, className)} {...props} />;\n};\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n gap?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Stack: React.FC<StackProps> = ({\n gap = 'md',\n className,\n ...props\n}) => {\n const gapClass = {\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n }[gap];\n return <div className={cn('flex flex-col', gapClass, className)} {...props} />;\n};\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n cols?: 1 | 2 | 3 | 4;\n gap?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Grid: React.FC<GridProps> = ({\n cols = 2,\n gap = 'md',\n className,\n ...props\n}) => {\n const colsClass = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n }[cols];\n const gapClass = {\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n }[gap];\n return <div className={cn('grid', colsClass, gapClass, className)} {...props} />;\n};\n\n","import type React from 'react';\nimport { useEffect, useRef } from 'react';\n\nexport interface ModalProps {\n children: React.ReactNode;\n className?: string;\n closeOnOverlayClick?: boolean;\n isOpen: boolean;\n onClose: () => void;\n showCloseButton?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n subtitle?: string;\n title?: string | React.ReactNode;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n subtitle,\n children,\n size = 'md',\n showCloseButton = true,\n closeOnOverlayClick = true,\n className = '',\n}) => {\n const dialogRef = useRef<HTMLDivElement | null>(null);\n const lastFocusedElementRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (isOpen) {\n lastFocusedElementRef.current = document.activeElement as HTMLElement | null;\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus();\n }\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n const handleTabTrap = (e: KeyboardEvent) => {\n if (e.key !== 'Tab' || !dialogRef.current || !isOpen) {\n return;\n }\n\n const focusable = dialogRef.current.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusable.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n document.addEventListener('keydown', handleTabTrap);\n requestAnimationFrame(() => {\n const initialTarget =\n dialogRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n ) ?? dialogRef.current;\n initialTarget?.focus();\n });\n }\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.removeEventListener('keydown', handleTabTrap);\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) {\n return null;\n }\n\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n const sizeClassMap: Record<NonNullable<ModalProps['size']>, string> = {\n sm: 'max-w-[25rem]',\n md: 'max-w-[31.25rem]',\n lg: 'max-w-[43.75rem]',\n xl: 'max-w-[56.25rem]',\n full: 'max-h-[90vh] max-w-[90vw]',\n };\n const combinedClass = [\n 'relative z-[var(--z-index-modal)] m-auto flex w-full max-h-[90vh] max-w-full flex-col overflow-hidden rounded-[var(--border-radius-2xl)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] shadow-[var(--shadow-2xl)]',\n sizeClassMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n aria-labelledby={title ? 'modal-title' : undefined}\n aria-modal=\"true\"\n className=\"fixed inset-0 z-[var(--z-index-modal-backdrop)] flex min-h-[100dvh] items-center justify-center overflow-y-auto bg-black/50 p-[var(--spacing-lg)] backdrop-blur-[8px]\"\n onClick={handleOverlayClick}\n role=\"dialog\"\n >\n <div className={combinedClass} ref={dialogRef} tabIndex={-1}>\n {(title || subtitle || showCloseButton) && (\n <div className=\"flex shrink-0 items-start justify-between gap-[var(--spacing-lg)] border-b border-[var(--md-outline-variant)] p-[var(--spacing-2xl)]\">\n {(title || subtitle) && (\n <div className=\"flex-1\">\n {title && (\n <h2\n className=\"mb-[var(--spacing-xs)] mt-0 text-[var(--font-size-2xl)] font-[var(--font-weight-semibold)] leading-[var(--line-height-tight)] text-[var(--md-on-surface)]\"\n id=\"modal-title\"\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"m-0 text-[var(--font-size-base)] leading-[var(--line-height-normal)] text-[var(--md-on-surface-variant)]\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n {showCloseButton && (\n <button\n aria-label=\"Fechar modal\"\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--border-radius-md)] border-0 bg-[var(--md-surface-container-high)] text-[var(--md-on-surface)] transition-[var(--transition-all)] hover:bg-[color:color-mix(in_srgb,var(--md-error)_15%,var(--md-surface))] hover:text-[var(--md-error)]\"\n onClick={onClose}\n type=\"button\"\n >\n <svg\n fill=\"none\"\n className=\"h-5 w-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\" />\n <line x1=\"6\" x2=\"18\" y1=\"6\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n )}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto p-[var(--spacing-2xl)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {}\nexport const Sidebar: React.FC<SidebarProps> = ({ className, ...props }) => (\n <aside\n className={cn(\n 'h-full rounded-[var(--border-radius-lg)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-4',\n className\n )}\n {...props}\n />\n);\n\nexport interface TopbarProps extends React.HTMLAttributes<HTMLElement> {}\nexport const Topbar: React.FC<TopbarProps> = ({ className, ...props }) => (\n <header\n className={cn(\n 'flex min-h-14 items-center justify-between border-b border-[var(--border-color)] bg-[var(--bg-secondary)] px-4',\n className\n )}\n {...props}\n />\n);\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PaginationProps {\n currentPage: number;\n onPageChange: (page: number) => void;\n totalPages: number;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n}) => {\n if (totalPages <= 1) {\n return null;\n }\n\n const pages = Array.from({ length: totalPages }, (_, i) => i + 1);\n\n return (\n <nav aria-label=\"Paginação\" className=\"flex flex-wrap items-center gap-1\">\n <button\n className=\"rounded-[var(--border-radius-sm)] border border-[var(--border-color)] px-2 py-1 text-sm disabled:opacity-50\"\n disabled={currentPage === 1}\n onClick={() => onPageChange(Math.max(currentPage - 1, 1))}\n type=\"button\"\n >\n Anterior\n </button>\n {pages.map((page) => (\n <button\n className={cn(\n 'rounded-[var(--border-radius-sm)] border px-2.5 py-1 text-sm',\n page === currentPage\n ? 'border-[var(--md-primary)] bg-[var(--md-primary)] text-[var(--md-on-primary)]'\n : 'border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]'\n )}\n key={page}\n onClick={() => onPageChange(page)}\n type=\"button\"\n >\n {page}\n </button>\n ))}\n <button\n className=\"rounded-[var(--border-radius-sm)] border border-[var(--border-color)] px-2 py-1 text-sm disabled:opacity-50\"\n disabled={currentPage === totalPages}\n onClick={() => onPageChange(Math.min(currentPage + 1, totalPages))}\n type=\"button\"\n >\n Próxima\n </button>\n </nav>\n );\n};\n\n","import type React from 'react';\n\nexport interface ParagraphProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right' | 'justify';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n italic?: boolean;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'light' | 'normal' | 'medium';\n}\n\nexport const Paragraph: React.FC<ParagraphProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<ParagraphProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)] leading-[var(--line-height-normal)]',\n sm: 'text-[var(--font-size-sm)] leading-[var(--line-height-normal)]',\n md: 'text-[var(--font-size-base)] leading-[var(--line-height-relaxed)]',\n lg: 'text-[var(--font-size-lg)] leading-[var(--line-height-loose)]',\n };\n const weightClassMap: Record<NonNullable<ParagraphProps['weight']>, string> = {\n light: 'font-[var(--font-weight-light)]',\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n };\n const alignClassMap: Record<NonNullable<ParagraphProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n };\n const combinedClass = [\n 'm-0 text-[var(--text-primary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n muted ? 'text-[var(--text-muted)]' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PageHeaderProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n actions?: React.ReactNode;\n subtitle?: React.ReactNode;\n title: React.ReactNode;\n}\n\nexport const PageHeader: React.FC<PageHeaderProps> = ({\n title,\n subtitle,\n actions,\n className,\n ...props\n}) => {\n return (\n <header\n className={cn(\n 'grid gap-3 rounded-[var(--border-radius-lg)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-5 shadow-[var(--shadow-sm)]',\n className\n )}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"grid gap-1\">\n <h1 className=\"m-0 text-2xl font-bold text-[var(--text-primary)]\">{title}</h1>\n {subtitle && <p className=\"m-0 text-sm text-[var(--text-secondary)]\">{subtitle}</p>}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n </header>\n );\n};\n\n","import type React from 'react';\nimport { useEffect, useId, useRef, useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PopoverProps {\n children: React.ReactNode;\n content: React.ReactNode;\n defaultOpen?: boolean;\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n content,\n defaultOpen = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const panelRef = useRef<HTMLDivElement | null>(null);\n const popoverId = useId();\n\n useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (!containerRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener('mousedown', onClickOutside);\n return () => document.removeEventListener('mousedown', onClickOutside);\n }, []);\n\n useEffect(() => {\n if (!open || !panelRef.current) {\n return;\n }\n\n const focusable = panelRef.current.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n }, [open]);\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n if (open) {\n document.addEventListener('keydown', onKeyDown);\n }\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [open]);\n\n return (\n <div className=\"relative inline-flex\" ref={containerRef}>\n <button\n aria-controls={open ? popoverId : undefined}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n className=\"inline-flex\"\n onClick={() => setOpen((prev) => !prev)}\n ref={triggerRef}\n type=\"button\"\n >\n {children}\n </button>\n {open && (\n <div\n className={cn(\n 'absolute left-1/2 top-full z-30 mt-2 w-max -translate-x-1/2 rounded-[var(--border-radius-md)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-3 shadow-[var(--shadow-md)]'\n )}\n id={popoverId}\n ref={panelRef}\n role=\"dialog\"\n tabIndex={-1}\n >\n {content}\n </div>\n )}\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n helperText?: string;\n label?: string;\n}\n\nexport const Radio: React.FC<RadioProps> = ({\n label,\n helperText,\n className,\n id,\n ...props\n}) => {\n const inputId = id || `radio-${Math.random().toString(36).slice(2, 9)}`;\n return (\n <label className={cn('inline-flex cursor-pointer items-start gap-2', className)} htmlFor={inputId}>\n <input\n className=\"mt-0.5 h-4 w-4 border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--md-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--border-color-focus)]\"\n id={inputId}\n type=\"radio\"\n {...props}\n />\n <span className=\"grid gap-0.5\">\n {label && <span className=\"text-sm text-[var(--text-primary)]\">{label}</span>}\n {helperText && <span className=\"text-xs text-[var(--text-muted)]\">{helperText}</span>}\n </span>\n </label>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SectionHeaderProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n actions?: React.ReactNode;\n subtitle?: React.ReactNode;\n title: React.ReactNode;\n}\n\nexport const SectionHeader: React.FC<SectionHeaderProps> = ({\n title,\n subtitle,\n actions,\n className,\n ...props\n}) => {\n return (\n <div className={cn('flex items-start justify-between gap-4', className)} {...props}>\n <div className=\"grid gap-1\">\n <h2 className=\"m-0 text-xl font-semibold text-[var(--text-primary)]\">{title}</h2>\n {subtitle && <p className=\"m-0 text-sm text-[var(--text-secondary)]\">{subtitle}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nexport interface SelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n error?: string;\n helperText?: string;\n label?: string;\n options: SelectOption[];\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Select: React.FC<SelectProps> = ({\n label,\n helperText,\n error,\n options,\n size = 'md',\n className,\n id,\n ...props\n}) => {\n const selectId = id || `select-${Math.random().toString(36).slice(2, 9)}`;\n const sizeClass = {\n sm: 'min-h-8 px-3 py-1.5 text-sm',\n md: 'min-h-10 px-3.5 py-2 text-base',\n lg: 'min-h-12 px-4 py-3 text-lg',\n }[size];\n\n return (\n <div className=\"grid gap-1\">\n {label && (\n <label\n className=\"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]\"\n htmlFor={selectId}\n >\n {label}\n </label>\n )}\n <select\n className={cn(\n 'w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--md-on-surface)] outline-none transition focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)]',\n error ? 'border-[var(--md-error)]' : '',\n sizeClass,\n className\n )}\n id={selectId}\n {...props}\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n {error ? (\n <span className=\"text-xs text-[var(--md-error)]\">{error}</span>\n ) : (\n helperText && (\n <span className=\"text-xs text-[var(--md-on-surface-variant)]\">\n {helperText}\n </span>\n )\n )}\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n circle?: boolean;\n height?: string;\n width?: string;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n circle = false,\n width,\n height,\n className,\n style,\n ...props\n}) => {\n return (\n <div\n className={cn(\n 'animate-pulse bg-[var(--md-surface-container-high)]',\n circle ? 'rounded-full' : 'rounded-[var(--border-radius-sm)]',\n className\n )}\n style={{ width, height, ...style }}\n {...props}\n />\n );\n};\n\n","import type React from 'react';\n\nexport interface SubtitleProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n italic?: boolean;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'normal' | 'medium' | 'semibold';\n}\n\nexport const Subtitle: React.FC<SubtitleProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<SubtitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)]',\n sm: 'text-[var(--font-size-sm)]',\n md: 'text-[var(--font-size-base)]',\n lg: 'text-[var(--font-size-lg)]',\n };\n const weightClassMap: Record<NonNullable<SubtitleProps['weight']>, string> = {\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n };\n const alignClassMap: Record<NonNullable<SubtitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const combinedClass = [\n 'm-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n muted ? 'text-[var(--text-muted)] opacity-80' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SwitchProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked = false,\n onCheckedChange,\n label,\n className,\n ...props\n}) => {\n return (\n <div className={cn('inline-flex items-center gap-2', className)}>\n <button\n aria-checked={checked}\n className={cn(\n 'relative inline-flex h-6 w-11 items-center rounded-full border transition focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]',\n checked\n ? 'border-[var(--md-primary)] bg-[var(--md-primary)]'\n : 'border-[var(--md-outline)] bg-[var(--md-surface-container-high)]'\n )}\n onClick={() => onCheckedChange?.(!checked)}\n role=\"switch\"\n type=\"button\"\n {...props}\n >\n <span\n className={cn(\n 'inline-block h-5 w-5 rounded-full bg-[var(--md-surface)] shadow transition',\n checked ? 'translate-x-5' : 'translate-x-0.5'\n )}\n />\n </button>\n {label && <span className=\"text-sm text-[var(--text-primary)]\">{label}</span>}\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n onRemove?: () => void;\n}\n\nexport const Tag: React.FC<TagProps> = ({\n className,\n children,\n onRemove,\n ...props\n}) => {\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-[var(--border-radius-sm)] border border-[var(--border-color)] bg-[var(--bg-secondary)] px-2.5 py-1 text-xs text-[var(--text-secondary)]',\n className\n )}\n {...props}\n >\n {children}\n {onRemove && (\n <button\n aria-label=\"Remover tag\"\n className=\"inline-flex h-4 w-4 items-center justify-center rounded-full text-[var(--text-muted)] transition hover:bg-[var(--bg-hover)] hover:text-[var(--text-primary)]\"\n onClick={onRemove}\n type=\"button\"\n >\n ×\n </button>\n )}\n </span>\n );\n};\n\n","import type React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TabItem {\n content: React.ReactNode;\n id: string;\n label: string;\n}\n\nexport interface TabsProps {\n defaultTabId?: string;\n items: TabItem[];\n}\n\nexport const Tabs: React.FC<TabsProps> = ({ items, defaultTabId }) => {\n const [activeTab, setActiveTab] = useState(defaultTabId ?? items[0]?.id);\n const selected = items.find((item) => item.id === activeTab) ?? items[0];\n const selectedIndex = Math.max(\n 0,\n items.findIndex((item) => item.id === selected?.id)\n );\n\n const moveFocus = (nextIndex: number) => {\n const item = items[nextIndex];\n if (!item) {\n return;\n }\n setActiveTab(item.id);\n const tab = document.getElementById(`tab-${item.id}`);\n tab?.focus();\n };\n\n return (\n <div className=\"grid gap-3\">\n <div\n aria-orientation=\"horizontal\"\n className=\"inline-flex flex-wrap gap-1 rounded-[var(--border-radius-md)] bg-[var(--bg-tertiary)] p-1\"\n role=\"tablist\"\n >\n {items.map((item, index) => (\n <button\n aria-controls={`panel-${item.id}`}\n aria-selected={activeTab === item.id}\n className={cn(\n 'rounded-[var(--border-radius-sm)] px-3 py-1.5 text-sm transition',\n activeTab === item.id\n ? 'bg-[var(--bg-secondary)] text-[var(--text-primary)] shadow-[var(--shadow-xs)]'\n : 'text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]'\n )}\n id={`tab-${item.id}`}\n key={item.id}\n onClick={() => setActiveTab(item.id)}\n onKeyDown={(e) => {\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n moveFocus((index + 1) % items.length);\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n moveFocus((index - 1 + items.length) % items.length);\n } else if (e.key === 'Home') {\n e.preventDefault();\n moveFocus(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n moveFocus(items.length - 1);\n }\n }}\n role=\"tab\"\n tabIndex={index === selectedIndex ? 0 : -1}\n type=\"button\"\n >\n {item.label}\n </button>\n ))}\n </div>\n <div\n aria-labelledby={`tab-${selected?.id ?? ''}`}\n className=\"rounded-[var(--border-radius-md)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-4\"\n id={`panel-${selected?.id ?? ''}`}\n role=\"tabpanel\"\n >\n {selected?.content}\n </div>\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {}\n\nexport const Table: React.FC<TableProps> = ({ className, children, ...props }) => {\n return (\n <div className=\"overflow-x-auto rounded-[var(--border-radius-md)] border border-[var(--border-color)]\">\n <table\n className={cn(\n 'w-full min-w-[36rem] border-collapse bg-[var(--bg-secondary)] text-left',\n className\n )}\n {...props}\n >\n {children}\n </table>\n </div>\n );\n};\n\n","import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: string;\n helperText?: string;\n label?: string;\n}\n\nexport const Textarea: React.FC<TextareaProps> = ({\n label,\n helperText,\n error,\n className,\n id,\n ...props\n}) => {\n const textareaId = id || `textarea-${Math.random().toString(36).slice(2, 9)}`;\n return (\n <div className=\"grid gap-1\">\n {label && (\n <label\n className=\"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]\"\n htmlFor={textareaId}\n >\n {label}\n </label>\n )}\n <textarea\n className={cn(\n 'min-h-24 w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] px-3.5 py-2 text-[var(--md-on-surface)] outline-none transition placeholder:text-[var(--md-on-surface-variant)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)]',\n error\n ? 'border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]'\n : '',\n className\n )}\n id={textareaId}\n {...props}\n />\n {error ? (\n <span className=\"text-xs text-[var(--md-error)]\">{error}</span>\n ) : (\n helperText && (\n <span className=\"text-xs text-[var(--md-on-surface-variant)]\">\n {helperText}\n </span>\n )\n )}\n </div>\n );\n};\n\n","import type React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n id?: string;\n description?: React.ReactNode;\n onDismiss?: () => void;\n title: React.ReactNode;\n tone?: 'info' | 'success' | 'warning' | 'error';\n}\n\nexport const Toast: React.FC<ToastProps> = ({\n tone = 'info',\n title,\n description,\n onDismiss,\n className,\n ...props\n}) => {\n const toneClass = {\n info: 'border-[var(--info-color)]/40',\n success: 'border-[var(--success-color)]/40',\n warning: 'border-[var(--warning-color)]/40',\n error: 'border-[var(--md-error)]/40',\n }[tone];\n const liveMode = tone === 'error' || tone === 'warning' ? 'assertive' : 'polite';\n const role = tone === 'error' || tone === 'warning' ? 'alert' : 'status';\n\n return (\n <div\n className={cn(\n 'w-[22rem] rounded-[var(--border-radius-md)] border bg-[var(--bg-secondary)] p-3 shadow-[var(--shadow-lg)]',\n toneClass,\n className\n )}\n aria-atomic=\"true\"\n aria-live={liveMode}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n onDismiss?.();\n }\n }}\n role={role}\n tabIndex={0}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"m-0 text-sm font-semibold text-[var(--text-primary)]\">{title}</p>\n {onDismiss && (\n <button\n aria-label=\"Fechar notificação\"\n className=\"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--border-radius-sm)] text-[var(--text-secondary)] transition hover:bg-[var(--bg-hover)] hover:text-[var(--text-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]\"\n onClick={onDismiss}\n type=\"button\"\n >\n <span aria-hidden>×</span>\n </button>\n )}\n </div>\n {description && (\n <p className=\"mt-1 text-sm text-[var(--text-secondary)]\">{description}</p>\n )}\n </div>\n );\n};\n\ninterface ToastContextValue {\n dismissToast: (id: string) => void;\n pushToast: (toast: Omit<ToastProps, 'id'> & { id?: string }) => void;\n toasts: Array<ToastProps & { id: string }>;\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined);\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n durationMs?: number;\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n durationMs = 4000,\n}) => {\n const [toasts, setToasts] = useState<Array<ToastProps & { id: string }>>([]);\n const timeoutIdsRef = useRef<Map<string, number>>(new Map());\n\n const dismissToast = useCallback((id: string) => {\n const timeoutId = timeoutIdsRef.current.get(id);\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n timeoutIdsRef.current.delete(id);\n }\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const pushToast = useCallback(\n (toast: Omit<ToastProps, 'id'> & { id?: string }) => {\n const id = toast.id ?? `toast-${Math.random().toString(36).slice(2, 9)}`;\n setToasts((prev) => [...prev, { ...toast, id }]);\n const timeoutId = window.setTimeout(() => dismissToast(id), durationMs);\n timeoutIdsRef.current.set(id, timeoutId);\n },\n [dismissToast, durationMs]\n );\n\n useEffect(() => {\n return () => {\n timeoutIdsRef.current.forEach((timeoutId) => window.clearTimeout(timeoutId));\n timeoutIdsRef.current.clear();\n };\n }, []);\n\n const value = useMemo(\n () => ({ toasts, pushToast, dismissToast }),\n [toasts, pushToast, dismissToast]\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastViewport />\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = (): ToastContextValue => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used inside ToastProvider');\n }\n return context;\n};\n\nexport const ToastViewport: React.FC = () => {\n const context = useContext(ToastContext);\n if (!context || context.toasts.length === 0) {\n return null;\n }\n return (\n <div\n aria-label=\"Notificações\"\n className=\"pointer-events-none fixed bottom-4 right-4 z-[1200] grid gap-2\"\n role=\"region\"\n >\n {context.toasts.map((toast) => (\n <Toast\n key={toast.id}\n {...toast}\n className=\"pointer-events-auto\"\n onDismiss={() => context.dismissToast(toast.id)}\n />\n ))}\n </div>\n );\n};\n\n","import type React from 'react';\n\nexport interface TitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n children: React.ReactNode;\n gradient?: boolean;\n italic?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';\n}\n\nexport const Title: React.FC<TitleProps> = ({\n as = 'h1',\n size = '2xl',\n weight = 'bold',\n align = 'left',\n gradient = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<TitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-sm)]',\n sm: 'text-[var(--font-size-base)]',\n md: 'text-[var(--font-size-lg)]',\n lg: 'text-[var(--font-size-xl)]',\n xl: 'text-[var(--font-size-2xl)]',\n '2xl': 'text-[var(--font-size-3xl)]',\n '3xl': 'text-[var(--font-size-4xl)]',\n '4xl': 'text-[3rem]',\n };\n const weightClassMap: Record<NonNullable<TitleProps['weight']>, string> = {\n light: 'font-[var(--font-weight-light)]',\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n bold: 'font-[var(--font-weight-bold)]',\n extrabold: 'font-extrabold',\n };\n const alignClassMap: Record<NonNullable<TitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const gradientClass = gradient\n ? 'bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent'\n : '';\n const combinedClass = [\n 'm-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n gradientClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\nimport { isValidElement, useId, useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n side?: 'top' | 'bottom';\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n content,\n side = 'top',\n}) => {\n const [open, setOpen] = useState(false);\n const tooltipId = useId();\n const sideClass =\n side === 'top'\n ? 'bottom-full mb-2 left-1/2 -translate-x-1/2'\n : 'top-full mt-2 left-1/2 -translate-x-1/2';\n\n const triggerProps = {\n 'aria-describedby': tooltipId,\n onBlur: () => setOpen(false),\n onFocus: () => setOpen(true),\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n },\n onMouseEnter: () => setOpen(true),\n onMouseLeave: () => setOpen(false),\n };\n\n const trigger = isValidElement(children) ? (\n <span className=\"inline-flex\" {...triggerProps}>\n {children}\n </span>\n ) : (\n <span className=\"inline-flex\" tabIndex={0} {...triggerProps}>\n {children}\n </span>\n );\n\n return (\n <span className=\"relative inline-flex\">\n {trigger}\n <span\n aria-hidden={!open}\n className={cn(\n 'pointer-events-none absolute z-20 whitespace-nowrap rounded bg-[var(--brand-cinza-escuro)] px-2 py-1 text-xs text-white shadow-[var(--shadow-sm)] transition',\n open ? 'opacity-100' : 'opacity-0',\n sideClass\n )}\n id={tooltipId}\n role=\"tooltip\"\n >\n {content}\n </span>\n </span>\n );\n};\n\n","import {\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nexport type Theme = 'light' | 'dark';\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: Theme;\n}\n\nexport const ThemeProvider = ({\n children,\n defaultTheme = 'light',\n}: ThemeProviderProps) => {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const saved = window.localStorage.getItem('theme');\n return (saved as Theme) || defaultTheme;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n window.localStorage.setItem('theme', theme);\n document.documentElement.setAttribute('data-theme', theme);\n }, [theme]);\n\n const toggleTheme = (): void => {\n setTheme((prev) => (prev === 'dark' ? 'light' : 'dark'));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n"],"names":["cn","classes","Accordion","items","defaultOpenId","openId","setOpenId","useState","rootRef","useRef","jsx","item","isOpen","triggerId","panelId","jsxs","event","buttons","currentIndex","btn","_a","_b","_c","_d","prev","Button","variant","size","compact","fullWidth","isLoading","leftIcon","rightIcon","children","className","disabled","palette","style","props","baseClass","focusClass","disabledClass","fullWidthClass","loadingClass","offWhiteBorderClass","sizeClassMap","variantClassMap","iconSizeClassMap","paletteVars","paletteStyle","combinedClass","Alert","title","tone","toneClass","Badge","Card","padding","hoverable","paddingClassMap","hoverableClass","Checkbox","label","helperText","id","inputId","Chip","selected","Divider","orientation","EmptyState","icon","description","action","Footer","poweredByText","logoSrc","logoAlt","logoFallbackText","logoVisible","setLogoVisible","e","detectTheme","Header","logoDarkSrc","subtitle","theme","onLogoClick","rightContent","isScrolled","setIsScrolled","resolvedTheme","setResolvedTheme","logoSrcResolved","useEffect","handleScroll","syncTheme","observer","handleClick","handleKeyDown","next","Input","error","hasError","Container","sizeClass","Stack","gap","gapClass","Grid","cols","colsClass","Modal","onClose","showCloseButton","closeOnOverlayClick","dialogRef","lastFocusedElementRef","handleEscape","handleTabTrap","focusable","first","last","active","initialTarget","handleOverlayClick","Sidebar","Topbar","Pagination","currentPage","totalPages","onPageChange","pages","_","i","page","Paragraph","as","weight","align","muted","italic","Component","weightClassMap","alignClassMap","PageHeader","actions","Popover","content","defaultOpen","open","setOpen","containerRef","triggerRef","panelRef","popoverId","useId","onClickOutside","onKeyDown","Radio","SectionHeader","Select","options","selectId","option","Skeleton","circle","width","height","Subtitle","Switch","checked","onCheckedChange","Tag","onRemove","Tabs","defaultTabId","activeTab","setActiveTab","selectedIndex","moveFocus","nextIndex","tab","index","Table","Textarea","textareaId","Toast","onDismiss","liveMode","role","ToastContext","createContext","ToastProvider","durationMs","toasts","setToasts","timeoutIdsRef","dismissToast","useCallback","timeoutId","toast","pushToast","value","useMemo","ToastViewport","useToast","context","useContext","Title","gradient","gradientClass","Tooltip","side","tooltipId","sideClass","triggerProps","trigger","isValidElement","ThemeContext","useTheme","ThemeProvider","defaultTheme","setTheme","toggleTheme"],"mappings":"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"}
|
package/dist/oficios-ui.umd.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(d,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],e):(d=typeof globalThis<"u"?globalThis:d||self,e(d.OficiosUI={},d.jsxRuntime,d.React))})(this,(function(d,e,g){"use strict";const k=({variant:t="primary",size:a="md",compact:r=!1,fullWidth:o=!1,isLoading:s=!1,leftIcon:n,rightIcon:i,children:c,className:h="",disabled:v,palette:l,style:f,...m})=>{const p="relative inline-flex select-none items-center justify-center overflow-hidden whitespace-nowrap border border-transparent font-semibold leading-none tracking-[0.01em] transition-[all_var(--transition-base)]",y="focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]",z="disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60",x=o?"w-full":"",b=s?"[&_.btn__content]:opacity-0":"",A={xs:r?"min-h-[1.75rem] min-w-[1.75rem] gap-1 px-2 py-1 text-[var(--font-size-xs)]":"min-h-8 min-w-8 gap-1.5 px-3 py-1.5 text-[var(--font-size-xs)]",sm:r?"min-h-8 min-w-8 gap-[0.3125rem] px-2.5 py-1.5 text-[var(--font-size-sm)]":"min-h-9 min-w-9 gap-[0.4375rem] px-3.5 py-2 text-[var(--font-size-sm)]",md:r?"min-h-[2.375rem] min-w-[2.375rem] gap-1.5 px-3 py-2 text-[var(--font-size-base)]":"min-h-11 min-w-11 gap-2 px-4 py-2.5 text-[var(--font-size-base)]",lg:r?"min-h-[2.625rem] min-w-[2.625rem] gap-[0.4375rem] px-3.5 py-[0.5625rem] text-[var(--font-size-lg)]":"min-h-12 min-w-12 gap-[0.5625rem] px-6 py-4 text-[var(--font-size-lg)]",xl:r?"min-h-12 min-w-12 gap-2 px-4 py-3 text-[var(--font-size-xl)]":"min-h-14 min-w-14 gap-2.5 px-8 py-6 text-[var(--font-size-xl)]"},O={primary:"bg-[var(--md-primary)] text-[var(--md-on-primary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--primary-color-hover)] hover:shadow-[var(--shadow-md)]",secondary:"bg-[var(--md-secondary)] text-[var(--md-on-secondary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--secondary-color-light)] hover:shadow-[var(--shadow-md)]",success:"bg-[var(--success-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--success-color-light)] hover:shadow-[var(--shadow-md)]",error:"bg-[var(--md-error)] text-[var(--md-on-error)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--error-color-light)] hover:shadow-[var(--shadow-md)]",warning:"bg-[var(--warning-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--warning-color-light)] hover:shadow-[var(--shadow-md)]",info:"bg-[var(--info-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--info-color-light)] hover:shadow-[var(--shadow-md)]",neutral:"bg-[var(--neutral-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--neutral-color-light)] hover:shadow-[var(--shadow-md)]",ghost:"border-[var(--md-outline-variant)] bg-transparent text-[var(--md-on-surface)] hover:bg-[var(--bg-hover)] hover:text-[var(--md-primary)] hover:border-[var(--border-color-hover)]"},j={xs:r?"h-3 w-3":"h-3.5 w-3.5",sm:r?"h-3.5 w-3.5":"h-4 w-4",md:"h-[1.125rem] w-[1.125rem]",lg:"h-5 w-5",xl:"h-5 w-5"},u={"verde-vibrante":{primary:"var(--brand-verde-vibrante)",hover:"var(--brand-verde-profundo)"},"verde-profundo":{primary:"var(--brand-verde-profundo)",hover:"var(--brand-grafite-azulado)"},"grafite-azulado":{primary:"var(--brand-grafite-azulado)",hover:"var(--brand-cinza-escuro)"},"azul-acinzentado":{primary:"var(--brand-azul-acinzentado)",hover:"var(--brand-grafite-azulado)"},"cinza-medio":{primary:"var(--brand-cinza-medio)",hover:"var(--brand-cinza-escuro)"},"cinza-escuro":{primary:"var(--brand-cinza-escuro)",hover:"var(--brand-preto)"},"off-white":{primary:"var(--brand-off-white)",hover:"var(--brand-branco)",onPrimary:"var(--brand-grafite-azulado)"}},w={};l&&t==="primary"&&(w["--md-primary"]=u[l].primary,w["--primary-color-hover"]=u[l].hover,u[l].onPrimary&&(w["--md-on-primary"]=u[l].onPrimary));const V=[p,y,z,A[a],O[t],x,b,h].filter(Boolean).join(" ");return e.jsxs("button",{className:V,disabled:v||s,style:{...w,...f},...m,children:[s&&e.jsx("span",{"aria-hidden":"true",className:"absolute inline-flex h-[1em] w-[1em] animate-spin items-center justify-center",children:e.jsxs("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10",strokeOpacity:"0.25"}),e.jsx("path",{d:"M12 2 A10 10 0 0 1 22 12",strokeLinecap:"round"})]})}),!s&&n&&e.jsx("span",{className:`mr-1 inline-flex shrink-0 items-center justify-center leading-none ${j[a]}`,children:n}),e.jsx("span",{className:"btn__content inline-flex items-center justify-center",children:c}),!s&&i&&e.jsx("span",{className:`ml-1 inline-flex shrink-0 items-center justify-center leading-none ${j[a]}`,children:i})]})},M=({variant:t="default",padding:a="md",hoverable:r=!1,children:o,className:s="",...n})=>{const i="relative overflow-hidden rounded-[var(--border-radius-lg)] transition-[var(--transition-all)]",c={default:"bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-sm)]",elevated:"bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-lg)]",outlined:"bg-transparent border border-[var(--md-outline-variant)] shadow-none",flat:"bg-[var(--md-surface)] border-0 shadow-none"},h={none:"p-0",sm:"p-[var(--spacing-md)]",md:"p-[var(--spacing-lg)]",lg:"p-[var(--spacing-xl)]",xl:"p-[var(--spacing-2xl)]"},v=r?"hover:shadow-[var(--shadow-md)]":"",l=[i,c[t],h[a],v,s].filter(Boolean).join(" ");return e.jsx("div",{className:l,...n,children:o})},_=({poweredByText:t="Powered by",logoSrc:a,logoAlt:r="Logo",logoFallbackText:o,className:s=""})=>{const[n,i]=g.useState(!0);return e.jsx("footer",{className:["relative z-[1] flex w-full shrink-0 items-center justify-center border-t border-[var(--border-color)] bg-[var(--bg-secondary)] px-[var(--spacing-2xl)] py-[var(--spacing-lg)]",s].filter(Boolean).join(" "),children:e.jsxs("div",{className:"flex items-center gap-[var(--spacing-md)]",children:[t&&e.jsx("span",{className:"text-[0.95rem] font-normal text-[var(--text-secondary)]",children:t}),(a||o)&&e.jsxs("div",{className:"flex items-center",children:[a&&n&&e.jsx("img",{alt:r,className:"h-6 w-auto object-contain",onError:c=>{i(!1)},src:a,style:{filter:"brightness(0)"}}),o&&e.jsx("span",{className:"flex items-center text-base font-bold tracking-[0.1em] text-[var(--md-primary)]",style:{display:a&&n?"none":"flex",fontFamily:'"Orbitron", sans-serif'},children:o})]})]})})},N=()=>typeof document>"u"?"light":document.documentElement.getAttribute("data-theme")==="dark"?"dark":"light",E=({logoSrc:t,logoDarkSrc:a,logoAlt:r="Logo",title:o,subtitle:s,theme:n,onLogoClick:i,rightContent:c,className:h=""})=>{const[v,l]=g.useState(!1),[f,m]=g.useState(()=>n??N()),p=f==="dark"&&a?a:t;g.useEffect(()=>{const x=()=>l(window.scrollY>10);return window.addEventListener("scroll",x,{passive:!0}),()=>window.removeEventListener("scroll",x)},[]),g.useEffect(()=>{if(n){m(n);return}const x=()=>m(N());if(x(),typeof MutationObserver>"u")return;const b=new MutationObserver(x);return b.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>b.disconnect()},[n]);const y=()=>i?.(),z=x=>{x.key==="Enter"&&i?.()};return e.jsxs("header",{className:["fixed inset-x-0 top-0 z-[1000] w-full backdrop-blur-[12px]",h].filter(Boolean).join(" "),children:[e.jsx("div",{className:"h-0.5 w-full bg-[var(--md-primary)]"}),e.jsxs("div",{className:"flex items-center justify-between px-6 py-2 shadow-[var(--shadow-sm)] max-md:flex-col max-md:gap-3 max-md:px-4 max-md:py-3",style:{color:"var(--md-on-surface)",background:`color-mix(in srgb, var(--md-surface) ${v?"14%":"18%"}, transparent)`,borderBottom:`1px solid color-mix(in srgb, var(--md-outline-variant) ${v?"22%":"30%"}, transparent)`},children:[e.jsxs("div",{className:"flex cursor-pointer items-center gap-3 transition-opacity duration-200 ease-in-out hover:opacity-80",onClick:i?y:void 0,onKeyDown:i?z:void 0,role:i?"button":void 0,tabIndex:i?0:void 0,children:[p&&e.jsxs("div",{className:"flex h-16 w-16 shrink-0 items-center justify-center",children:[e.jsx("img",{alt:r,className:"h-full w-full object-contain",onError:x=>{x.target.style.display="none";const b=x.target.nextElementSibling;b&&(b.style.display="block")},src:p}),e.jsxs("svg",{className:"hidden h-full w-full",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e.jsx("path",{d:"M2 17l10 5 10-5M2 12l10 5 10-5"})]})]}),(o||s)&&e.jsxs("div",{className:"flex flex-col gap-1",children:[o&&e.jsx("h1",{className:"m-0 inline-flex items-baseline text-[1.375rem] font-bold leading-[1.2] tracking-[0.05em] text-[var(--md-on-surface)] max-md:text-xl",style:{fontFamily:'"Orbitron", sans-serif'},children:o}),s&&e.jsx("p",{className:"m-0 text-[0.8125rem] font-normal text-[var(--md-on-surface-variant)] max-md:text-xs",children:s})]})]}),c&&e.jsx("div",{className:"flex shrink-0 items-center gap-3 max-md:w-full max-md:flex-wrap max-md:justify-between",children:c})]})]})},S=({label:t,error:a,helperText:r,leftIcon:o,rightIcon:s,fullWidth:n=!1,size:i="md",className:c="",id:h,...v})=>{const l=h||`input-${Math.random().toString(36).substring(2,9)}`,f=!!a,p=["w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] font-inherit text-[var(--md-on-surface)] outline-none transition-[var(--transition-all)] placeholder:text-[var(--md-on-surface-variant)] placeholder:opacity-70 hover:not-disabled:not-focus:border-[var(--border-color-hover)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)] disabled:cursor-not-allowed disabled:bg-[var(--md-surface-container-high)] disabled:opacity-60",f?"border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]":"",o?"pl-10":"",s?"pr-10":"",{sm:"min-h-8 px-[var(--spacing-md)] py-[var(--spacing-sm)] text-[var(--font-size-sm)]",md:"min-h-10 px-[var(--spacing-lg)] py-[var(--spacing-md)] text-[var(--font-size-base)]",lg:"min-h-12 px-[var(--spacing-xl)] py-[var(--spacing-lg)] text-[var(--font-size-lg)]"}[i],c].filter(Boolean).join(" ");return e.jsxs("div",{className:`flex flex-col gap-[var(--spacing-xs)] ${n?"w-full":""}`,children:[t&&e.jsx("label",{className:"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]",htmlFor:l,children:t}),e.jsxs("div",{className:"group relative flex w-full items-center",children:[o&&e.jsx("span",{className:"pointer-events-none absolute left-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]",children:o}),e.jsx("input",{"aria-describedby":a?`${l}-error`:r?`${l}-helper`:void 0,"aria-invalid":f?!0:void 0,className:p,id:l,...v}),s&&e.jsx("span",{className:"pointer-events-none absolute right-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]",children:s})]}),a&&e.jsx("span",{className:"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-error)]",id:`${l}-error`,role:"alert",children:a}),r&&!a&&e.jsx("span",{className:"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-on-surface-variant)]",id:`${l}-helper`,children:r})]})},B=({isOpen:t,onClose:a,title:r,subtitle:o,children:s,size:n="md",showCloseButton:i=!0,closeOnOverlayClick:c=!0,className:h=""})=>{if(g.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t]),g.useEffect(()=>{const m=p=>{p.key==="Escape"&&t&&a()};return t&&document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[t,a]),!t)return null;const v=m=>{c&&m.target===m.currentTarget&&a()},f=["relative z-[var(--z-index-modal)] m-auto flex w-full max-h-[90vh] max-w-full flex-col overflow-hidden rounded-[var(--border-radius-2xl)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] shadow-[var(--shadow-2xl)]",{sm:"max-w-[25rem]",md:"max-w-[31.25rem]",lg:"max-w-[43.75rem]",xl:"max-w-[56.25rem]",full:"max-h-[90vh] max-w-[90vw]"}[n],h].filter(Boolean).join(" ");return e.jsx("div",{"aria-labelledby":r?"modal-title":void 0,"aria-modal":"true",className:"fixed inset-0 z-[var(--z-index-modal-backdrop)] flex min-h-[100dvh] items-center justify-center overflow-y-auto bg-black/50 p-[var(--spacing-lg)] backdrop-blur-[8px]",onClick:v,role:"dialog",children:e.jsxs("div",{className:f,children:[(r||o||i)&&e.jsxs("div",{className:"flex shrink-0 items-start justify-between gap-[var(--spacing-lg)] border-b border-[var(--md-outline-variant)] p-[var(--spacing-2xl)]",children:[(r||o)&&e.jsxs("div",{className:"flex-1",children:[r&&e.jsx("h2",{className:"mb-[var(--spacing-xs)] mt-0 text-[var(--font-size-2xl)] font-[var(--font-weight-semibold)] leading-[var(--line-height-tight)] text-[var(--md-on-surface)]",id:"modal-title",children:r}),o&&e.jsx("p",{className:"m-0 text-[var(--font-size-base)] leading-[var(--line-height-normal)] text-[var(--md-on-surface-variant)]",children:o})]}),i&&e.jsx("button",{"aria-label":"Fechar modal",className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--border-radius-md)] border-0 bg-[var(--md-surface-container-high)] text-[var(--md-on-surface)] transition-[var(--transition-all)] hover:bg-[color:color-mix(in_srgb,var(--md-error)_15%,var(--md-surface))] hover:text-[var(--md-error)]",onClick:a,type:"button",children:e.jsxs("svg",{fill:"none",className:"h-5 w-5",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("line",{x1:"18",x2:"6",y1:"6",y2:"18"}),e.jsx("line",{x1:"6",x2:"18",y1:"6",y2:"18"})]})})]}),e.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto p-[var(--spacing-2xl)]",children:s})]})})},T=({as:t="p",size:a="md",weight:r="normal",align:o="left",muted:s=!1,children:n,className:i="",...c})=>{const h=t,v={xs:"text-[var(--font-size-xs)] leading-[var(--line-height-normal)]",sm:"text-[var(--font-size-sm)] leading-[var(--line-height-normal)]",md:"text-[var(--font-size-base)] leading-[var(--line-height-relaxed)]",lg:"text-[var(--font-size-lg)] leading-[var(--line-height-loose)]"},l={light:"font-[var(--font-weight-light)]",normal:"font-[var(--font-weight-normal)]",medium:"font-[var(--font-weight-medium)]"},f={left:"text-left",center:"text-center",right:"text-right",justify:"text-justify"},m=["m-0 text-[var(--text-primary)] transition-[var(--transition-colors)]",v[a],l[r],f[o],s?"text-[var(--text-muted)]":"",i].filter(Boolean).join(" ");return e.jsx(h,{className:m,...c,children:n})},P=({as:t="p",size:a="md",weight:r="normal",align:o="left",muted:s=!1,children:n,className:i="",...c})=>{const h=t,v={xs:"text-[var(--font-size-xs)]",sm:"text-[var(--font-size-sm)]",md:"text-[var(--font-size-base)]",lg:"text-[var(--font-size-lg)]"},l={normal:"font-[var(--font-weight-normal)]",medium:"font-[var(--font-weight-medium)]",semibold:"font-[var(--font-weight-semibold)]"},f={left:"text-left",center:"text-center",right:"text-right"},m=["m-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]",v[a],l[r],f[o],s?"text-[var(--text-muted)] opacity-80":"",i].filter(Boolean).join(" ");return e.jsx(h,{className:m,...c,children:n})},$=({as:t="h1",size:a="2xl",weight:r="bold",align:o="left",gradient:s=!1,children:n,className:i="",...c})=>{const h=t,v={xs:"text-[var(--font-size-sm)]",sm:"text-[var(--font-size-base)]",md:"text-[var(--font-size-lg)]",lg:"text-[var(--font-size-xl)]",xl:"text-[var(--font-size-2xl)]","2xl":"text-[var(--font-size-3xl)]","3xl":"text-[var(--font-size-4xl)]","4xl":"text-[3rem]"},l={light:"font-[var(--font-weight-light)]",normal:"font-[var(--font-weight-normal)]",medium:"font-[var(--font-weight-medium)]",semibold:"font-[var(--font-weight-semibold)]",bold:"font-[var(--font-weight-bold)]",extrabold:"font-extrabold"},f={left:"text-left",center:"text-center",right:"text-right"},m=s?"bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent":"",p=["m-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]",v[a],l[r],f[o],m,i].filter(Boolean).join(" ");return e.jsx(h,{className:p,...c,children:n})},C=g.createContext(void 0),F=()=>{const t=g.useContext(C);if(!t)throw new Error("useTheme must be used within a ThemeProvider");return t},W=({children:t,defaultTheme:a="light"})=>{const[r,o]=g.useState(()=>typeof window>"u"?a:window.localStorage.getItem("theme")||a);g.useEffect(()=>{typeof window>"u"||(window.localStorage.setItem("theme",r),document.documentElement.setAttribute("data-theme",r))},[r]);const s=()=>{o(n=>n==="dark"?"light":"dark")};return e.jsx(C.Provider,{value:{theme:r,toggleTheme:s},children:t})};d.Button=k,d.Card=M,d.Footer=_,d.Header=E,d.Input=S,d.Modal=B,d.Paragraph=T,d.Subtitle=P,d.ThemeProvider=W,d.Title=$,d.useTheme=F,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(v,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],e):(v=typeof globalThis<"u"?globalThis:v||self,e(v.OficiosUI={},v.jsxRuntime,v.React))})(this,(function(v,e,f){"use strict";const b=(...r)=>r.filter(Boolean).join(" "),$=({items:r,defaultOpenId:a})=>{const[t,s]=f.useState(a??null),o=f.useRef(null);return e.jsx("div",{className:"grid gap-2",ref:o,children:r.map(n=>{const d=t===n.id,m=`accordion-trigger-${n.id}`,c=`accordion-panel-${n.id}`;return e.jsxs("div",{className:"overflow-hidden rounded-[var(--border-radius-md)] border border-[var(--border-color)]",children:[e.jsxs("button",{"aria-controls":c,"aria-expanded":d,className:"flex w-full items-center justify-between bg-[var(--bg-secondary)] px-4 py-3 text-left text-sm font-medium text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",id:m,onKeyDown:l=>{var p,x,y,w;if(!o.current)return;const i=Array.from(o.current.querySelectorAll('[id^="accordion-trigger-"]')),h=i.findIndex(u=>u.id===m);h===-1||i.length===0||(l.key==="ArrowDown"?(l.preventDefault(),(p=i[(h+1)%i.length])==null||p.focus()):l.key==="ArrowUp"?(l.preventDefault(),(x=i[(h-1+i.length)%i.length])==null||x.focus()):l.key==="Home"?(l.preventDefault(),(y=i[0])==null||y.focus()):l.key==="End"&&(l.preventDefault(),(w=i[i.length-1])==null||w.focus()))},onClick:()=>s(l=>l===n.id?null:n.id),type:"button",children:[n.title,e.jsx("span",{className:b("transition",d?"rotate-180":""),children:"⌄"})]}),d&&e.jsx("div",{"aria-labelledby":m,className:"bg-[var(--bg-tertiary)] px-4 py-3 text-sm text-[var(--text-secondary)]",id:c,role:"region",children:n.content})]},n.id)})})},B=({variant:r="primary",size:a="md",compact:t=!1,fullWidth:s=!1,isLoading:o=!1,leftIcon:n,rightIcon:d,children:m,className:c="",disabled:l,palette:i,style:h,...p})=>{const x="relative inline-flex select-none items-center justify-center overflow-hidden whitespace-nowrap rounded-[var(--border-radius-md)] border border-transparent font-semibold leading-none tracking-[0.01em] transition-[all_var(--transition-base)]",y="focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]",w="disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60",u=s?"w-full":"",g="",N=i==="off-white"&&r==="primary"?"border-[var(--border-color)]":"",z={xs:t?"min-h-[1.75rem] min-w-[1.75rem] gap-1 px-2 py-1 text-[var(--font-size-xs)]":"min-h-8 min-w-8 gap-1.5 px-3 py-1.5 text-[var(--font-size-xs)]",sm:t?"min-h-8 min-w-8 gap-[0.3125rem] px-2.5 py-1.5 text-[var(--font-size-sm)]":"min-h-9 min-w-9 gap-[0.4375rem] px-3.5 py-2 text-[var(--font-size-sm)]",md:t?"min-h-[2.375rem] min-w-[2.375rem] gap-1.5 px-3 py-2 text-[var(--font-size-base)]":"min-h-11 min-w-11 gap-2 px-4 py-2.5 text-[var(--font-size-base)]",lg:t?"min-h-[2.625rem] min-w-[2.625rem] gap-[0.4375rem] px-3.5 py-[0.5625rem] text-[var(--font-size-lg)]":"min-h-12 min-w-12 gap-[0.5625rem] px-6 py-4 text-[var(--font-size-lg)]",xl:t?"min-h-12 min-w-12 gap-2 px-4 py-3 text-[var(--font-size-xl)]":"min-h-14 min-w-14 gap-2.5 px-8 py-6 text-[var(--font-size-xl)]"},k={primary:"bg-[var(--md-primary)] text-[var(--md-on-primary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--primary-color-hover)] hover:shadow-[var(--shadow-md)]",secondary:"bg-[var(--md-secondary)] text-[var(--md-on-secondary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--secondary-color-light)] hover:shadow-[var(--shadow-md)]",success:"bg-[var(--success-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--success-color-light)] hover:shadow-[var(--shadow-md)]",error:"bg-[var(--md-error)] text-[var(--md-on-error)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--error-color-light)] hover:shadow-[var(--shadow-md)]",warning:"bg-[var(--warning-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--warning-color-light)] hover:shadow-[var(--shadow-md)]",info:"bg-[var(--info-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--info-color-light)] hover:shadow-[var(--shadow-md)]",neutral:"bg-[var(--neutral-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--neutral-color-light)] hover:shadow-[var(--shadow-md)]",ghost:"border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--md-on-surface)] shadow-[var(--shadow-xs)] hover:bg-[var(--bg-hover)] hover:text-[var(--md-primary)] hover:border-[var(--border-color-hover)]"},I={xs:t?"h-3 w-3":"h-3.5 w-3.5",sm:t?"h-3.5 w-3.5":"h-4 w-4",md:"h-[1.125rem] w-[1.125rem]",lg:"h-5 w-5",xl:"h-5 w-5"},C={"verde-vibrante":{primary:"var(--brand-verde-vibrante)",hover:"var(--brand-verde-profundo)"},"verde-profundo":{primary:"var(--brand-verde-profundo)",hover:"var(--brand-grafite-azulado)"},"grafite-azulado":{primary:"var(--brand-grafite-azulado)",hover:"var(--brand-cinza-escuro)"},"azul-acinzentado":{primary:"var(--brand-azul-acinzentado)",hover:"var(--brand-grafite-azulado)"},"cinza-medio":{primary:"var(--brand-cinza-medio)",hover:"var(--brand-cinza-escuro)"},"cinza-escuro":{primary:"var(--brand-cinza-escuro)",hover:"var(--brand-preto)"},"off-white":{primary:"var(--brand-off-white)",hover:"var(--brand-branco)",onPrimary:"var(--brand-grafite-azulado)"}},E={};i&&r==="primary"&&(E["--md-primary"]=C[i].primary,E["--primary-color-hover"]=C[i].hover,C[i].onPrimary&&(E["--md-on-primary"]=C[i].onPrimary));const xe=[x,y,w,z[a],k[r],N,u,g,c].filter(Boolean).join(" ");return e.jsxs("button",{className:xe,disabled:l||o,style:{...E,...h},...p,children:[o&&e.jsx("span",{"aria-hidden":"true",className:"absolute inline-flex h-[1em] w-[1em] animate-spin items-center justify-center",children:e.jsxs("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10",strokeOpacity:"0.25"}),e.jsx("path",{d:"M12 2 A10 10 0 0 1 22 12",strokeLinecap:"round"})]})}),!o&&n&&e.jsx("span",{className:`mr-1 inline-flex shrink-0 items-center justify-center leading-none ${I[a]}`,children:n}),!o&&e.jsx("span",{className:"btn__content inline-flex items-center justify-center",children:m}),!o&&d&&e.jsx("span",{className:`ml-1 inline-flex shrink-0 items-center justify-center leading-none ${I[a]}`,children:d})]})},A=({title:r,tone:a="info",children:t,className:s,...o})=>{const n={info:"border-[var(--info-color)]/40 bg-[var(--info-color)]/10 text-[var(--text-primary)]",success:"border-[var(--success-color)]/40 bg-[var(--success-color)]/10 text-[var(--text-primary)]",warning:"border-[var(--warning-color)]/40 bg-[var(--warning-color)]/10 text-[var(--text-primary)]",error:"border-[var(--md-error)]/40 bg-[var(--md-error)]/10 text-[var(--text-primary)]"}[a];return e.jsxs("div",{className:b("rounded-[var(--border-radius-md)] border p-4",n,s),role:"alert",...o,children:[r&&e.jsx("p",{className:"mb-1 text-sm font-semibold",children:r}),e.jsx("div",{className:"text-sm leading-relaxed",children:t})]})},D=({size:r="md",tone:a="neutral",className:t,children:s,...o})=>{const n={neutral:"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",primary:"bg-[var(--md-primary)] text-[var(--md-on-primary)]",success:"bg-[var(--success-color)] text-white",warning:"bg-[var(--warning-color)] text-white",error:"bg-[var(--md-error)] text-[var(--md-on-error)]",info:"bg-[var(--info-color)] text-white"}[a],d=r==="sm"?"px-2 py-0.5 text-[0.6875rem]":"px-2.5 py-1 text-xs";return e.jsx("span",{className:b("inline-flex items-center rounded-full font-medium leading-none",n,d,t),...o,children:s})},P=({variant:r="default",padding:a="md",hoverable:t=!1,children:s,className:o="",...n})=>{const d="relative overflow-hidden rounded-[var(--border-radius-lg)] transition-[var(--transition-all)]",m={default:"bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-sm)]",elevated:"bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-lg)]",outlined:"bg-transparent border border-[var(--md-outline-variant)] shadow-none",flat:"bg-[var(--md-surface)] border-0 shadow-none"},c={none:"p-0",sm:"p-[var(--spacing-md)]",md:"p-[var(--spacing-lg)]",lg:"p-[var(--spacing-xl)]",xl:"p-[var(--spacing-2xl)]"},l=t?"hover:shadow-[var(--shadow-md)]":"",i=[d,m[r],c[a],l,o].filter(Boolean).join(" ");return e.jsx("div",{className:i,...n,children:s})},F=({label:r,helperText:a,className:t,id:s,...o})=>{const n=s||`checkbox-${Math.random().toString(36).slice(2,9)}`;return e.jsxs("label",{className:b("inline-flex cursor-pointer items-start gap-2",t),htmlFor:n,children:[e.jsx("input",{className:"mt-0.5 h-4 w-4 rounded border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--md-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--border-color-focus)]",id:n,type:"checkbox",...o}),e.jsxs("span",{className:"grid gap-0.5",children:[r&&e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:r}),a&&e.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:a})]})]})},K=({selected:r=!1,className:a,children:t,...s})=>e.jsx("button",{className:b("inline-flex items-center rounded-full border px-3 py-1.5 text-sm transition",r?"border-[var(--md-primary)] bg-[color:color-mix(in_srgb,var(--md-primary)_16%,transparent)] text-[var(--md-on-surface)]":"border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",a),type:"button",...s,children:t}),H=({orientation:r="horizontal",className:a,...t})=>e.jsx("div",{className:b("bg-[var(--border-color)]",r==="horizontal"?"h-px w-full":"h-full w-px",a),role:"separator",...t}),q=({icon:r,title:a,description:t,action:s,className:o,...n})=>e.jsxs("div",{className:b("grid justify-items-center gap-3 rounded-[var(--border-radius-lg)] border border-dashed border-[var(--border-color)] bg-[var(--bg-secondary)] p-6 text-center",o),...n,children:[r&&e.jsx("div",{className:"text-[var(--text-muted)]",children:r}),e.jsx("h3",{className:"m-0 text-lg font-semibold text-[var(--text-primary)]",children:a}),t&&e.jsx("p",{className:"m-0 max-w-[30rem] text-sm text-[var(--text-secondary)]",children:t}),s&&e.jsx("div",{className:"mt-1",children:s})]}),O=({poweredByText:r="Powered by",logoSrc:a,logoAlt:t="Logo",logoFallbackText:s,className:o=""})=>{const[n,d]=f.useState(!0);return e.jsx("footer",{className:["relative z-[1] flex w-full shrink-0 items-center justify-center border-t border-[var(--border-color)] bg-[var(--bg-secondary)] px-[var(--spacing-2xl)] py-[var(--spacing-lg)]",o].filter(Boolean).join(" "),children:e.jsxs("div",{className:"flex items-center gap-[var(--spacing-md)]",children:[r&&e.jsx("span",{className:"text-[0.95rem] font-normal text-[var(--text-secondary)]",children:r}),(a||s)&&e.jsxs("div",{className:"flex items-center",children:[a&&n&&e.jsx("img",{alt:t,className:"h-6 w-auto object-contain",onError:m=>{d(!1)},src:a,style:{filter:"brightness(0)"}}),s&&e.jsx("span",{className:"flex items-center text-base font-bold tracking-[0.1em] text-[var(--md-primary)]",style:{display:a&&n?"none":"flex",fontFamily:'"Orbitron", sans-serif'},children:s})]})]})})},j=()=>typeof document>"u"?"light":document.documentElement.getAttribute("data-theme")==="dark"?"dark":"light",V=({logoSrc:r,logoDarkSrc:a,logoAlt:t="Logo",title:s,subtitle:o,theme:n,onLogoClick:d,rightContent:m,className:c=""})=>{const[l,i]=f.useState(!1),[h,p]=f.useState(()=>n??j()),x=h==="dark"&&a?a:r;f.useEffect(()=>{const u=()=>i(window.scrollY>10);return window.addEventListener("scroll",u,{passive:!0}),()=>window.removeEventListener("scroll",u)},[]),f.useEffect(()=>{if(n){p(n);return}const u=()=>p(j());if(u(),typeof MutationObserver>"u")return;const g=new MutationObserver(u);return g.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>g.disconnect()},[n]);const y=()=>d==null?void 0:d(),w=u=>{u.key==="Enter"&&(d==null||d())};return e.jsxs("header",{className:["fixed inset-x-0 top-0 z-[1000] w-full backdrop-blur-[12px]",c].filter(Boolean).join(" "),children:[e.jsx("div",{className:"h-0.5 w-full bg-[var(--md-primary)]"}),e.jsxs("div",{className:"flex items-center justify-between px-6 py-2 shadow-[var(--shadow-sm)] max-md:flex-col max-md:gap-3 max-md:px-4 max-md:py-3",style:{color:"var(--md-on-surface)",background:`color-mix(in srgb, var(--md-surface) ${l?"14%":"18%"}, transparent)`,borderBottom:`1px solid color-mix(in srgb, var(--md-outline-variant) ${l?"22%":"30%"}, transparent)`},children:[e.jsxs("div",{className:"flex cursor-pointer items-center gap-3 transition-opacity duration-200 ease-in-out hover:opacity-80",onClick:d?y:void 0,onKeyDown:d?w:void 0,role:d?"button":void 0,tabIndex:d?0:void 0,children:[x&&e.jsxs("div",{className:"flex h-16 w-16 shrink-0 items-center justify-center",children:[e.jsx("img",{alt:t,className:"h-full w-full object-contain",onError:u=>{u.target.style.display="none";const g=u.target.nextElementSibling;g&&(g.style.display="block")},src:x}),e.jsxs("svg",{className:"hidden h-full w-full",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e.jsx("path",{d:"M2 17l10 5 10-5M2 12l10 5 10-5"})]})]}),(s||o)&&e.jsxs("div",{className:"flex flex-col gap-1",children:[s&&e.jsx("h1",{className:"m-0 inline-flex items-baseline text-[1.375rem] font-bold leading-[1.2] tracking-[0.05em] text-[var(--md-on-surface)] max-md:text-xl",style:{fontFamily:'"Orbitron", sans-serif'},children:s}),o&&e.jsx("p",{className:"m-0 text-[0.8125rem] font-normal text-[var(--md-on-surface-variant)] max-md:text-xs",children:o})]})]}),m&&e.jsx("div",{className:"flex shrink-0 items-center gap-3 max-md:w-full max-md:flex-wrap max-md:justify-between",children:m})]})]})},W=({label:r,error:a,helperText:t,leftIcon:s,rightIcon:o,fullWidth:n=!1,size:d="md",className:m="",id:c,...l})=>{const i=c||`input-${Math.random().toString(36).substring(2,9)}`,h=!!a,x=["w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] font-inherit text-[var(--md-on-surface)] outline-none transition-[var(--transition-all)] placeholder:text-[var(--md-on-surface-variant)] placeholder:opacity-70 hover:not-disabled:not-focus:border-[var(--border-color-hover)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)] disabled:cursor-not-allowed disabled:bg-[var(--md-surface-container-high)] disabled:opacity-60",h?"border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]":"",s?"pl-10":"",o?"pr-10":"",{sm:"min-h-8 px-[var(--spacing-md)] py-[var(--spacing-sm)] text-[var(--font-size-sm)]",md:"min-h-10 px-[var(--spacing-lg)] py-[var(--spacing-md)] text-[var(--font-size-base)]",lg:"min-h-12 px-[var(--spacing-xl)] py-[var(--spacing-lg)] text-[var(--font-size-lg)]"}[d],m].filter(Boolean).join(" ");return e.jsxs("div",{className:`flex flex-col gap-[var(--spacing-xs)] ${n?"w-full":""}`,children:[r&&e.jsx("label",{className:"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]",htmlFor:i,children:r}),e.jsxs("div",{className:"group relative flex w-full items-center",children:[s&&e.jsx("span",{className:"pointer-events-none absolute left-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]",children:s}),e.jsx("input",{"aria-describedby":a?`${i}-error`:t?`${i}-helper`:void 0,"aria-invalid":h?!0:void 0,className:x,id:i,...l}),o&&e.jsx("span",{className:"pointer-events-none absolute right-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]",children:o})]}),a&&e.jsx("span",{className:"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-error)]",id:`${i}-error`,role:"alert",children:a}),t&&!a&&e.jsx("span",{className:"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-on-surface-variant)]",id:`${i}-helper`,children:t})]})},G=({size:r="lg",className:a,...t})=>{const s={sm:"max-w-2xl",md:"max-w-4xl",lg:"max-w-6xl",xl:"max-w-7xl",full:"max-w-none"}[r];return e.jsx("div",{className:b("mx-auto w-full px-4",s,a),...t})},U=({gap:r="md",className:a,...t})=>{const s={xs:"gap-1",sm:"gap-2",md:"gap-3",lg:"gap-4",xl:"gap-6"}[r];return e.jsx("div",{className:b("flex flex-col",s,a),...t})},Y=({cols:r=2,gap:a="md",className:t,...s})=>{const o={1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4"}[r],n={xs:"gap-1",sm:"gap-2",md:"gap-3",lg:"gap-4",xl:"gap-6"}[a];return e.jsx("div",{className:b("grid",o,n,t),...s})},J=({isOpen:r,onClose:a,title:t,subtitle:s,children:o,size:n="md",showCloseButton:d=!0,closeOnOverlayClick:m=!0,className:c=""})=>{const l=f.useRef(null),i=f.useRef(null);if(f.useEffect(()=>(r?(i.current=document.activeElement,document.body.style.overflow="hidden"):document.body.style.overflow="",()=>{document.body.style.overflow="",i.current&&i.current.focus()}),[r]),f.useEffect(()=>{const y=u=>{u.key==="Escape"&&r&&a()},w=u=>{if(u.key!=="Tab"||!l.current||!r)return;const g=l.current.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(g.length===0){u.preventDefault();return}const N=g[0],z=g[g.length-1],k=document.activeElement;u.shiftKey&&k===N?(u.preventDefault(),z.focus()):!u.shiftKey&&k===z&&(u.preventDefault(),N.focus())};return r&&(document.addEventListener("keydown",y),document.addEventListener("keydown",w),requestAnimationFrame(()=>{var g;const u=((g=l.current)==null?void 0:g.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'))??l.current;u==null||u.focus()})),()=>{document.removeEventListener("keydown",y),document.removeEventListener("keydown",w)}},[r,a]),!r)return null;const h=y=>{m&&y.target===y.currentTarget&&a()},x=["relative z-[var(--z-index-modal)] m-auto flex w-full max-h-[90vh] max-w-full flex-col overflow-hidden rounded-[var(--border-radius-2xl)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] shadow-[var(--shadow-2xl)]",{sm:"max-w-[25rem]",md:"max-w-[31.25rem]",lg:"max-w-[43.75rem]",xl:"max-w-[56.25rem]",full:"max-h-[90vh] max-w-[90vw]"}[n],c].filter(Boolean).join(" ");return e.jsx("div",{"aria-labelledby":t?"modal-title":void 0,"aria-modal":"true",className:"fixed inset-0 z-[var(--z-index-modal-backdrop)] flex min-h-[100dvh] items-center justify-center overflow-y-auto bg-black/50 p-[var(--spacing-lg)] backdrop-blur-[8px]",onClick:h,role:"dialog",children:e.jsxs("div",{className:x,ref:l,tabIndex:-1,children:[(t||s||d)&&e.jsxs("div",{className:"flex shrink-0 items-start justify-between gap-[var(--spacing-lg)] border-b border-[var(--md-outline-variant)] p-[var(--spacing-2xl)]",children:[(t||s)&&e.jsxs("div",{className:"flex-1",children:[t&&e.jsx("h2",{className:"mb-[var(--spacing-xs)] mt-0 text-[var(--font-size-2xl)] font-[var(--font-weight-semibold)] leading-[var(--line-height-tight)] text-[var(--md-on-surface)]",id:"modal-title",children:t}),s&&e.jsx("p",{className:"m-0 text-[var(--font-size-base)] leading-[var(--line-height-normal)] text-[var(--md-on-surface-variant)]",children:s})]}),d&&e.jsx("button",{"aria-label":"Fechar modal",className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--border-radius-md)] border-0 bg-[var(--md-surface-container-high)] text-[var(--md-on-surface)] transition-[var(--transition-all)] hover:bg-[color:color-mix(in_srgb,var(--md-error)_15%,var(--md-surface))] hover:text-[var(--md-error)]",onClick:a,type:"button",children:e.jsxs("svg",{fill:"none",className:"h-5 w-5",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("line",{x1:"18",x2:"6",y1:"6",y2:"18"}),e.jsx("line",{x1:"6",x2:"18",y1:"6",y2:"18"})]})})]}),e.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto p-[var(--spacing-2xl)]",children:o})]})})},L=({className:r,...a})=>e.jsx("aside",{className:b("h-full rounded-[var(--border-radius-lg)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-4",r),...a}),Q=({className:r,...a})=>e.jsx("header",{className:b("flex min-h-14 items-center justify-between border-b border-[var(--border-color)] bg-[var(--bg-secondary)] px-4",r),...a}),X=({currentPage:r,totalPages:a,onPageChange:t})=>{if(a<=1)return null;const s=Array.from({length:a},(o,n)=>n+1);return e.jsxs("nav",{"aria-label":"Paginação",className:"flex flex-wrap items-center gap-1",children:[e.jsx("button",{className:"rounded-[var(--border-radius-sm)] border border-[var(--border-color)] px-2 py-1 text-sm disabled:opacity-50",disabled:r===1,onClick:()=>t(Math.max(r-1,1)),type:"button",children:"Anterior"}),s.map(o=>e.jsx("button",{className:b("rounded-[var(--border-radius-sm)] border px-2.5 py-1 text-sm",o===r?"border-[var(--md-primary)] bg-[var(--md-primary)] text-[var(--md-on-primary)]":"border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"),onClick:()=>t(o),type:"button",children:o},o)),e.jsx("button",{className:"rounded-[var(--border-radius-sm)] border border-[var(--border-color)] px-2 py-1 text-sm disabled:opacity-50",disabled:r===a,onClick:()=>t(Math.min(r+1,a)),type:"button",children:"Próxima"})]})},Z=({as:r="p",size:a="md",weight:t="normal",align:s="left",muted:o=!1,italic:n=!1,children:d,className:m="",...c})=>{const l=r,i={xs:"text-[var(--font-size-xs)] leading-[var(--line-height-normal)]",sm:"text-[var(--font-size-sm)] leading-[var(--line-height-normal)]",md:"text-[var(--font-size-base)] leading-[var(--line-height-relaxed)]",lg:"text-[var(--font-size-lg)] leading-[var(--line-height-loose)]"},h={light:"font-[var(--font-weight-light)]",normal:"font-[var(--font-weight-normal)]",medium:"font-[var(--font-weight-medium)]"},p={left:"text-left",center:"text-center",right:"text-right",justify:"text-justify"},x=["m-0 text-[var(--text-primary)] transition-[var(--transition-colors)]",i[a],h[t],p[s],n?"italic":"not-italic",o?"text-[var(--text-muted)]":"",m].filter(Boolean).join(" ");return e.jsx(l,{className:x,...c,children:d})},R=({title:r,subtitle:a,actions:t,className:s,...o})=>e.jsx("header",{className:b("grid gap-3 rounded-[var(--border-radius-lg)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-5 shadow-[var(--shadow-sm)]",s),...o,children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"grid gap-1",children:[e.jsx("h1",{className:"m-0 text-2xl font-bold text-[var(--text-primary)]",children:r}),a&&e.jsx("p",{className:"m-0 text-sm text-[var(--text-secondary)]",children:a})]}),t&&e.jsx("div",{className:"flex items-center gap-2",children:t})]})}),ee=({children:r,content:a,defaultOpen:t=!1})=>{const[s,o]=f.useState(t),n=f.useRef(null),d=f.useRef(null),m=f.useRef(null),c=f.useId();return f.useEffect(()=>{const l=i=>{var h;(h=n.current)!=null&&h.contains(i.target)||o(!1)};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[]),f.useEffect(()=>{if(!s||!m.current)return;const l=m.current.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');l==null||l.focus()},[s]),f.useEffect(()=>{const l=i=>{var h;i.key==="Escape"&&(o(!1),(h=d.current)==null||h.focus())};return s&&document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[s]),e.jsxs("div",{className:"relative inline-flex",ref:n,children:[e.jsx("button",{"aria-controls":s?c:void 0,"aria-expanded":s,"aria-haspopup":"dialog",className:"inline-flex",onClick:()=>o(l=>!l),ref:d,type:"button",children:r}),s&&e.jsx("div",{className:b("absolute left-1/2 top-full z-30 mt-2 w-max -translate-x-1/2 rounded-[var(--border-radius-md)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-3 shadow-[var(--shadow-md)]"),id:c,ref:m,role:"dialog",tabIndex:-1,children:a})]})},re=({label:r,helperText:a,className:t,id:s,...o})=>{const n=s||`radio-${Math.random().toString(36).slice(2,9)}`;return e.jsxs("label",{className:b("inline-flex cursor-pointer items-start gap-2",t),htmlFor:n,children:[e.jsx("input",{className:"mt-0.5 h-4 w-4 border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--md-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--border-color-focus)]",id:n,type:"radio",...o}),e.jsxs("span",{className:"grid gap-0.5",children:[r&&e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:r}),a&&e.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:a})]})]})},ae=({title:r,subtitle:a,actions:t,className:s,...o})=>e.jsxs("div",{className:b("flex items-start justify-between gap-4",s),...o,children:[e.jsxs("div",{className:"grid gap-1",children:[e.jsx("h2",{className:"m-0 text-xl font-semibold text-[var(--text-primary)]",children:r}),a&&e.jsx("p",{className:"m-0 text-sm text-[var(--text-secondary)]",children:a})]}),t&&e.jsx("div",{className:"flex shrink-0 items-center gap-2",children:t})]}),te=({label:r,helperText:a,error:t,options:s,size:o="md",className:n,id:d,...m})=>{const c=d||`select-${Math.random().toString(36).slice(2,9)}`,l={sm:"min-h-8 px-3 py-1.5 text-sm",md:"min-h-10 px-3.5 py-2 text-base",lg:"min-h-12 px-4 py-3 text-lg"}[o];return e.jsxs("div",{className:"grid gap-1",children:[r&&e.jsx("label",{className:"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]",htmlFor:c,children:r}),e.jsx("select",{className:b("w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--md-on-surface)] outline-none transition focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)]",t?"border-[var(--md-error)]":"",l,n),id:c,...m,children:s.map(i=>e.jsx("option",{value:i.value,children:i.label},i.value))}),t?e.jsx("span",{className:"text-xs text-[var(--md-error)]",children:t}):a&&e.jsx("span",{className:"text-xs text-[var(--md-on-surface-variant)]",children:a})]})},oe=({circle:r=!1,width:a,height:t,className:s,style:o,...n})=>e.jsx("div",{className:b("animate-pulse bg-[var(--md-surface-container-high)]",r?"rounded-full":"rounded-[var(--border-radius-sm)]",s),style:{width:a,height:t,...o},...n}),se=({as:r="p",size:a="md",weight:t="normal",align:s="left",muted:o=!1,italic:n=!1,children:d,className:m="",...c})=>{const l=r,i={xs:"text-[var(--font-size-xs)]",sm:"text-[var(--font-size-sm)]",md:"text-[var(--font-size-base)]",lg:"text-[var(--font-size-lg)]"},h={normal:"font-[var(--font-weight-normal)]",medium:"font-[var(--font-weight-medium)]",semibold:"font-[var(--font-weight-semibold)]"},p={left:"text-left",center:"text-center",right:"text-right"},x=["m-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]",i[a],h[t],p[s],n?"italic":"not-italic",o?"text-[var(--text-muted)] opacity-80":"",m].filter(Boolean).join(" ");return e.jsx(l,{className:x,...c,children:d})},ne=({checked:r=!1,onCheckedChange:a,label:t,className:s,...o})=>e.jsxs("div",{className:b("inline-flex items-center gap-2",s),children:[e.jsx("button",{"aria-checked":r,className:b("relative inline-flex h-6 w-11 items-center rounded-full border transition focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]",r?"border-[var(--md-primary)] bg-[var(--md-primary)]":"border-[var(--md-outline)] bg-[var(--md-surface-container-high)]"),onClick:()=>a==null?void 0:a(!r),role:"switch",type:"button",...o,children:e.jsx("span",{className:b("inline-block h-5 w-5 rounded-full bg-[var(--md-surface)] shadow transition",r?"translate-x-5":"translate-x-0.5")})}),t&&e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:t})]}),le=({className:r,children:a,onRemove:t,...s})=>e.jsxs("span",{className:b("inline-flex items-center gap-1 rounded-[var(--border-radius-sm)] border border-[var(--border-color)] bg-[var(--bg-secondary)] px-2.5 py-1 text-xs text-[var(--text-secondary)]",r),...s,children:[a,t&&e.jsx("button",{"aria-label":"Remover tag",className:"inline-flex h-4 w-4 items-center justify-center rounded-full text-[var(--text-muted)] transition hover:bg-[var(--bg-hover)] hover:text-[var(--text-primary)]",onClick:t,type:"button",children:"×"})]}),ie=({items:r,defaultTabId:a})=>{var m;const[t,s]=f.useState(a??((m=r[0])==null?void 0:m.id)),o=r.find(c=>c.id===t)??r[0],n=Math.max(0,r.findIndex(c=>c.id===(o==null?void 0:o.id))),d=c=>{const l=r[c];if(!l)return;s(l.id);const i=document.getElementById(`tab-${l.id}`);i==null||i.focus()};return e.jsxs("div",{className:"grid gap-3",children:[e.jsx("div",{"aria-orientation":"horizontal",className:"inline-flex flex-wrap gap-1 rounded-[var(--border-radius-md)] bg-[var(--bg-tertiary)] p-1",role:"tablist",children:r.map((c,l)=>e.jsx("button",{"aria-controls":`panel-${c.id}`,"aria-selected":t===c.id,className:b("rounded-[var(--border-radius-sm)] px-3 py-1.5 text-sm transition",t===c.id?"bg-[var(--bg-secondary)] text-[var(--text-primary)] shadow-[var(--shadow-xs)]":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"),id:`tab-${c.id}`,onClick:()=>s(c.id),onKeyDown:i=>{i.key==="ArrowRight"?(i.preventDefault(),d((l+1)%r.length)):i.key==="ArrowLeft"?(i.preventDefault(),d((l-1+r.length)%r.length)):i.key==="Home"?(i.preventDefault(),d(0)):i.key==="End"&&(i.preventDefault(),d(r.length-1))},role:"tab",tabIndex:l===n?0:-1,type:"button",children:c.label},c.id))}),e.jsx("div",{"aria-labelledby":`tab-${(o==null?void 0:o.id)??""}`,className:"rounded-[var(--border-radius-md)] border border-[var(--border-color)] bg-[var(--bg-secondary)] p-4",id:`panel-${(o==null?void 0:o.id)??""}`,role:"tabpanel",children:o==null?void 0:o.content})]})},de=({className:r,children:a,...t})=>e.jsx("div",{className:"overflow-x-auto rounded-[var(--border-radius-md)] border border-[var(--border-color)]",children:e.jsx("table",{className:b("w-full min-w-[36rem] border-collapse bg-[var(--bg-secondary)] text-left",r),...t,children:a})}),ce=({label:r,helperText:a,error:t,className:s,id:o,...n})=>{const d=o||`textarea-${Math.random().toString(36).slice(2,9)}`;return e.jsxs("div",{className:"grid gap-1",children:[r&&e.jsx("label",{className:"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]",htmlFor:d,children:r}),e.jsx("textarea",{className:b("min-h-24 w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] px-3.5 py-2 text-[var(--md-on-surface)] outline-none transition placeholder:text-[var(--md-on-surface-variant)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)]",t?"border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]":"",s),id:d,...n}),t?e.jsx("span",{className:"text-xs text-[var(--md-error)]",children:t}):a&&e.jsx("span",{className:"text-xs text-[var(--md-on-surface-variant)]",children:a})]})},S=({tone:r="info",title:a,description:t,onDismiss:s,className:o,...n})=>{const d={info:"border-[var(--info-color)]/40",success:"border-[var(--success-color)]/40",warning:"border-[var(--warning-color)]/40",error:"border-[var(--md-error)]/40"}[r],m=r==="error"||r==="warning"?"assertive":"polite",c=r==="error"||r==="warning"?"alert":"status";return e.jsxs("div",{className:b("w-[22rem] rounded-[var(--border-radius-md)] border bg-[var(--bg-secondary)] p-3 shadow-[var(--shadow-lg)]",d,o),"aria-atomic":"true","aria-live":m,onKeyDown:l=>{l.key==="Escape"&&(s==null||s())},role:c,tabIndex:0,...n,children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("p",{className:"m-0 text-sm font-semibold text-[var(--text-primary)]",children:a}),s&&e.jsx("button",{"aria-label":"Fechar notificação",className:"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--border-radius-sm)] text-[var(--text-secondary)] transition hover:bg-[var(--bg-hover)] hover:text-[var(--text-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]",onClick:s,type:"button",children:e.jsx("span",{"aria-hidden":!0,children:"×"})})]}),t&&e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:t})]})},T=f.createContext(void 0),ve=({children:r,durationMs:a=4e3})=>{const[t,s]=f.useState([]),o=f.useRef(new Map),n=f.useCallback(c=>{const l=o.current.get(c);l&&(window.clearTimeout(l),o.current.delete(c)),s(i=>i.filter(h=>h.id!==c))},[]),d=f.useCallback(c=>{const l=c.id??`toast-${Math.random().toString(36).slice(2,9)}`;s(h=>[...h,{...c,id:l}]);const i=window.setTimeout(()=>n(l),a);o.current.set(l,i)},[n,a]);f.useEffect(()=>()=>{o.current.forEach(c=>window.clearTimeout(c)),o.current.clear()},[]);const m=f.useMemo(()=>({toasts:t,pushToast:d,dismissToast:n}),[t,d,n]);return e.jsxs(T.Provider,{value:m,children:[r,e.jsx(M,{})]})},me=()=>{const r=f.useContext(T);if(!r)throw new Error("useToast must be used inside ToastProvider");return r},M=()=>{const r=f.useContext(T);return!r||r.toasts.length===0?null:e.jsx("div",{"aria-label":"Notificações",className:"pointer-events-none fixed bottom-4 right-4 z-[1200] grid gap-2",role:"region",children:r.toasts.map(a=>e.jsx(S,{...a,className:"pointer-events-auto",onDismiss:()=>r.dismissToast(a.id)},a.id))})},fe=({as:r="h1",size:a="2xl",weight:t="bold",align:s="left",gradient:o=!1,italic:n=!1,children:d,className:m="",...c})=>{const l=r,i={xs:"text-[var(--font-size-sm)]",sm:"text-[var(--font-size-base)]",md:"text-[var(--font-size-lg)]",lg:"text-[var(--font-size-xl)]",xl:"text-[var(--font-size-2xl)]","2xl":"text-[var(--font-size-3xl)]","3xl":"text-[var(--font-size-4xl)]","4xl":"text-[3rem]"},h={light:"font-[var(--font-weight-light)]",normal:"font-[var(--font-weight-normal)]",medium:"font-[var(--font-weight-medium)]",semibold:"font-[var(--font-weight-semibold)]",bold:"font-[var(--font-weight-bold)]",extrabold:"font-extrabold"},p={left:"text-left",center:"text-center",right:"text-right"},x=o?"bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent":"",y=["m-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]",i[a],h[t],p[s],n?"italic":"not-italic",x,m].filter(Boolean).join(" ");return e.jsx(l,{className:y,...c,children:d})},be=({children:r,content:a,side:t="top"})=>{const[s,o]=f.useState(!1),n=f.useId(),d=t==="top"?"bottom-full mb-2 left-1/2 -translate-x-1/2":"top-full mt-2 left-1/2 -translate-x-1/2",m={"aria-describedby":n,onBlur:()=>o(!1),onFocus:()=>o(!0),onKeyDown:l=>{l.key==="Escape"&&o(!1)},onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1)},c=f.isValidElement(r)?e.jsx("span",{className:"inline-flex",...m,children:r}):e.jsx("span",{className:"inline-flex",tabIndex:0,...m,children:r});return e.jsxs("span",{className:"relative inline-flex",children:[c,e.jsx("span",{"aria-hidden":!s,className:b("pointer-events-none absolute z-20 whitespace-nowrap rounded bg-[var(--brand-cinza-escuro)] px-2 py-1 text-xs text-white shadow-[var(--shadow-sm)] transition",s?"opacity-100":"opacity-0",d),id:n,role:"tooltip",children:a})]})},_=f.createContext(void 0),he=()=>{const r=f.useContext(_);if(!r)throw new Error("useTheme must be used within a ThemeProvider");return r},ue=({children:r,defaultTheme:a="light"})=>{const[t,s]=f.useState(()=>typeof window>"u"?a:window.localStorage.getItem("theme")||a);f.useEffect(()=>{typeof window>"u"||(window.localStorage.setItem("theme",t),document.documentElement.setAttribute("data-theme",t))},[t]);const o=()=>{s(n=>n==="dark"?"light":"dark")};return e.jsx(_.Provider,{value:{theme:t,toggleTheme:o},children:r})};v.Accordion=$,v.Alert=A,v.Badge=D,v.Button=B,v.Card=P,v.Checkbox=F,v.Chip=K,v.Container=G,v.Divider=H,v.EmptyState=q,v.Footer=O,v.Grid=Y,v.Header=V,v.Input=W,v.Modal=J,v.PageHeader=R,v.Pagination=X,v.Paragraph=Z,v.Popover=ee,v.Radio=re,v.SectionHeader=ae,v.Select=te,v.Sidebar=L,v.Skeleton=oe,v.Stack=U,v.Subtitle=se,v.Switch=ne,v.Table=de,v.Tabs=ie,v.Tag=le,v.Textarea=ce,v.ThemeProvider=ue,v.Title=fe,v.Toast=S,v.ToastProvider=ve,v.ToastViewport=M,v.Tooltip=be,v.Topbar=Q,v.useTheme=he,v.useToast=me,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=oficios-ui.umd.cjs.map
|