@sbkbs/ui 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@ export interface ParagraphProps extends React.HTMLAttributes<HTMLParagraphElemen
3
3
  align?: 'left' | 'center' | 'right' | 'justify';
4
4
  as?: 'p' | 'span' | 'div';
5
5
  children: React.ReactNode;
6
+ italic?: boolean;
6
7
  muted?: boolean;
7
8
  size?: 'xs' | 'sm' | 'md' | 'lg';
8
9
  weight?: 'light' | 'normal' | 'medium';
@@ -3,6 +3,7 @@ export interface SubtitleProps extends React.HTMLAttributes<HTMLParagraphElement
3
3
  align?: 'left' | 'center' | 'right';
4
4
  as?: 'p' | 'span' | 'div';
5
5
  children: React.ReactNode;
6
+ italic?: boolean;
6
7
  muted?: boolean;
7
8
  size?: 'xs' | 'sm' | 'md' | 'lg';
8
9
  weight?: 'normal' | 'medium' | 'semibold';
@@ -4,6 +4,7 @@ export interface TitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
4
4
  as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
5
5
  children: React.ReactNode;
6
6
  gradient?: boolean;
7
+ italic?: boolean;
7
8
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
8
9
  weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';
9
10
  }
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&display=swap";@import"https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700;800;900&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.left-\[var\(--spacing-md\)\]{left:var(--spacing-md)}.right-\[var\(--spacing-md\)\]{right:var(--spacing-md)}.top-0{top:0}.z-\[1000\]{z-index:1000}.z-\[1\]{z-index:1}.z-\[var\(--z-index-modal\)\]{z-index:var(--z-index-modal)}.z-\[var\(--z-index-modal-backdrop\)\]{z-index:var(--z-index-modal-backdrop)}.m-0{margin:0}.m-auto{margin:auto}.mb-\[var\(--spacing-xs\)\]{margin-bottom:var(--spacing-xs)}.ml-1{margin-left:.25rem}.mr-1{margin-right:.25rem}.mt-0{margin-top:0}.mt-\[var\(--spacing-xs\)\]{margin-top:var(--spacing-xs)}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\[1\.125rem\]{height:1.125rem}.h-\[1em\]{height:1em}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-11{min-height:2.75rem}.min-h-12{min-height:3rem}.min-h-14{min-height:3.5rem}.min-h-8{min-height:2rem}.min-h-9{min-height:2.25rem}.min-h-\[1\.75rem\]{min-height:1.75rem}.min-h-\[100dvh\]{min-height:100dvh}.min-h-\[2\.375rem\]{min-height:2.375rem}.min-h-\[2\.625rem\]{min-height:2.625rem}.w-16{width:4rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-\[1\.125rem\]{width:1.125rem}.w-\[1em\]{width:1em}.w-auto{width:auto}.w-full{width:100%}.min-w-11{min-width:2.75rem}.min-w-12{min-width:3rem}.min-w-14{min-width:3.5rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[1\.75rem\]{min-width:1.75rem}.min-w-\[2\.375rem\]{min-width:2.375rem}.min-w-\[2\.625rem\]{min-width:2.625rem}.max-w-\[25rem\]{max-width:25rem}.max-w-\[31\.25rem\]{max-width:31.25rem}.max-w-\[43\.75rem\]{max-width:43.75rem}.max-w-\[56\.25rem\]{max-width:56.25rem}.max-w-\[90vw\]{max-width:90vw}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-\[0\.3125rem\]{gap:.3125rem}.gap-\[0\.4375rem\]{gap:.4375rem}.gap-\[0\.5625rem\]{gap:.5625rem}.gap-\[var\(--spacing-lg\)\]{gap:var(--spacing-lg)}.gap-\[var\(--spacing-md\)\]{gap:var(--spacing-md)}.gap-\[var\(--spacing-xs\)\]{gap:var(--spacing-xs)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-\[var\(--border-radius-2xl\)\]{border-radius:var(--border-radius-2xl)}.rounded-\[var\(--border-radius-lg\)\]{border-radius:var(--border-radius-lg)}.rounded-\[var\(--border-radius-md\)\]{border-radius:var(--border-radius-md)}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-\[var\(--border-color\)\]{border-color:var(--border-color)}.border-\[var\(--md-error\)\]{border-color:var(--md-error)}.border-\[var\(--md-outline-variant\)\]{border-color:var(--md-outline-variant)}.border-transparent{border-color:transparent}.bg-\[var\(--bg-secondary\)\]{background-color:var(--bg-secondary)}.bg-\[var\(--info-color\)\]{background-color:var(--info-color)}.bg-\[var\(--md-error\)\]{background-color:var(--md-error)}.bg-\[var\(--md-primary\)\]{background-color:var(--md-primary)}.bg-\[var\(--md-secondary\)\]{background-color:var(--md-secondary)}.bg-\[var\(--md-surface\)\]{background-color:var(--md-surface)}.bg-\[var\(--md-surface-container-high\)\]{background-color:var(--md-surface-container-high)}.bg-\[var\(--neutral-color\)\]{background-color:var(--neutral-color)}.bg-\[var\(--success-color\)\]{background-color:var(--success-color)}.bg-\[var\(--warning-color\)\]{background-color:var(--warning-color)}.bg-black\/50{background-color:#00000080}.bg-transparent{background-color:transparent}.bg-\[linear-gradient\(135deg\,var\(--text-primary\)_0\%\,var\(--primary-color\)_50\%\,var\(--secondary-color\)_100\%\)\]{background-image:linear-gradient(135deg,var(--text-primary) 0%,var(--primary-color) 50%,var(--secondary-color) 100%)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-\[var\(--spacing-2xl\)\]{padding:var(--spacing-2xl)}.p-\[var\(--spacing-lg\)\]{padding:var(--spacing-lg)}.p-\[var\(--spacing-md\)\]{padding:var(--spacing-md)}.p-\[var\(--spacing-xl\)\]{padding:var(--spacing-xl)}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[var\(--spacing-2xl\)\]{padding-left:var(--spacing-2xl);padding-right:var(--spacing-2xl)}.px-\[var\(--spacing-lg\)\]{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg)}.px-\[var\(--spacing-md\)\]{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.px-\[var\(--spacing-xl\)\]{padding-left:var(--spacing-xl);padding-right:var(--spacing-xl)}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-\[0\.5625rem\]{padding-top:.5625rem;padding-bottom:.5625rem}.py-\[var\(--spacing-lg\)\]{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-lg)}.py-\[var\(--spacing-md\)\]{padding-top:var(--spacing-md);padding-bottom:var(--spacing-md)}.py-\[var\(--spacing-sm\)\]{padding-top:var(--spacing-sm);padding-bottom:var(--spacing-sm)}.pl-10{padding-left:2.5rem}.pr-10{padding-right:2.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.375rem\]{font-size:1.375rem}.text-\[3rem\]{font-size:3rem}.text-base{font-size:1rem;line-height:1.5rem}.font-\[var\(--font-weight-bold\)\]{font-weight:var(--font-weight-bold)}.font-\[var\(--font-weight-light\)\]{font-weight:var(--font-weight-light)}.font-\[var\(--font-weight-medium\)\]{font-weight:var(--font-weight-medium)}.font-\[var\(--font-weight-normal\)\]{font-weight:var(--font-weight-normal)}.font-\[var\(--font-weight-semibold\)\]{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-\[1\.2\]{line-height:1.2}.leading-\[var\(--line-height-loose\)\]{line-height:var(--line-height-loose)}.leading-\[var\(--line-height-normal\)\]{line-height:var(--line-height-normal)}.leading-\[var\(--line-height-relaxed\)\]{line-height:var(--line-height-relaxed)}.leading-\[var\(--line-height-tight\)\]{line-height:var(--line-height-tight)}.leading-none{line-height:1}.tracking-\[0\.01em\]{letter-spacing:.01em}.tracking-\[0\.05em\]{letter-spacing:.05em}.tracking-\[0\.1em\]{letter-spacing:.1em}.text-\[var\(--font-size-2xl\)\]{color:var(--font-size-2xl)}.text-\[var\(--font-size-3xl\)\]{color:var(--font-size-3xl)}.text-\[var\(--font-size-4xl\)\]{color:var(--font-size-4xl)}.text-\[var\(--font-size-base\)\]{color:var(--font-size-base)}.text-\[var\(--font-size-lg\)\]{color:var(--font-size-lg)}.text-\[var\(--font-size-sm\)\]{color:var(--font-size-sm)}.text-\[var\(--font-size-xl\)\]{color:var(--font-size-xl)}.text-\[var\(--font-size-xs\)\]{color:var(--font-size-xs)}.text-\[var\(--md-error\)\]{color:var(--md-error)}.text-\[var\(--md-on-error\)\]{color:var(--md-on-error)}.text-\[var\(--md-on-primary\)\]{color:var(--md-on-primary)}.text-\[var\(--md-on-secondary\)\]{color:var(--md-on-secondary)}.text-\[var\(--md-on-surface\)\]{color:var(--md-on-surface)}.text-\[var\(--md-on-surface-variant\)\]{color:var(--md-on-surface-variant)}.text-\[var\(--md-primary\)\]{color:var(--md-primary)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-80{opacity:.8}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[var\(--shadow-2xl\)\]{--tw-shadow-color: var(--shadow-2xl);--tw-shadow: var(--tw-shadow-colored)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow-color: var(--shadow-lg);--tw-shadow: var(--tw-shadow-colored)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow-color: var(--shadow-sm);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[12px\]{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[8px\]{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-\[all_var\(--transition-base\)\]{transition-property:all var(--transition-base);transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[var\(--transition-all\)\]{transition-property:var(--transition-all);transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[var\(--transition-colors\)\]{transition-property:var(--transition-colors);transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.placeholder\:text-\[var\(--md-on-surface-variant\)\]::-moz-placeholder{color:var(--md-on-surface-variant)}.placeholder\:text-\[var\(--md-on-surface-variant\)\]::placeholder{color:var(--md-on-surface-variant)}.placeholder\:opacity-70::-moz-placeholder{opacity:.7}.placeholder\:opacity-70::placeholder{opacity:.7}.hover\:translate-y-\[-0\.125rem\]:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-\[var\(--border-color-hover\)\]:hover{border-color:var(--border-color-hover)}.hover\:bg-\[color\:color-mix\(in_srgb\,var\(--md-error\)_15\%\,var\(--md-surface\)\)\]:hover{background-color:color-mix(in srgb,var(--md-error) 15%,var(--md-surface))}.hover\:bg-\[var\(--bg-hover\)\]:hover{background-color:var(--bg-hover)}.hover\:bg-\[var\(--error-color-light\)\]:hover{background-color:var(--error-color-light)}.hover\:bg-\[var\(--info-color-light\)\]:hover{background-color:var(--info-color-light)}.hover\:bg-\[var\(--neutral-color-light\)\]:hover{background-color:var(--neutral-color-light)}.hover\:bg-\[var\(--primary-color-hover\)\]:hover{background-color:var(--primary-color-hover)}.hover\:bg-\[var\(--secondary-color-light\)\]:hover{background-color:var(--secondary-color-light)}.hover\:bg-\[var\(--success-color-light\)\]:hover{background-color:var(--success-color-light)}.hover\:bg-\[var\(--warning-color-light\)\]:hover{background-color:var(--warning-color-light)}.hover\:text-\[var\(--md-error\)\]:hover{color:var(--md-error)}.hover\:text-\[var\(--md-primary\)\]:hover{color:var(--md-primary)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[var\(--shadow-md\)\]:hover{--tw-shadow-color: var(--shadow-md);--tw-shadow: var(--tw-shadow-colored)}.focus\:border-\[var\(--border-color-focus\)\]:focus{border-color:var(--border-color-focus)}.focus\:border-\[var\(--md-error\)\]:focus{border-color:var(--md-error)}.focus\:\[box-shadow\:0_0_0_0\.1875rem_rgba\(186\,26\,26\,0\.2\)\]:focus{box-shadow:0 0 0 .1875rem #ba1a1a33}.focus\:\[box-shadow\:0_0_0_0\.1875rem_rgba\(47\,93\,140\,0\.15\)\]:focus{box-shadow:0 0 0 .1875rem #2f5d8c26}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[var\(--md-primary\)\]:focus-visible{outline-color:var(--md-primary)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[var\(--md-surface-container-high\)\]:disabled{background-color:var(--md-surface-container-high)}.disabled\:opacity-60:disabled{opacity:.6}.group:focus-within .group-focus-within\:text-\[var\(--md-primary\)\]{color:var(--md-primary)}@media not all and (min-width:768px){.max-md\:w-full{width:100%}.max-md\:flex-col{flex-direction:column}.max-md\:flex-wrap{flex-wrap:wrap}.max-md\:justify-between{justify-content:space-between}.max-md\:gap-3{gap:.75rem}.max-md\:px-4{padding-left:1rem;padding-right:1rem}.max-md\:py-3{padding-top:.75rem;padding-bottom:.75rem}.max-md\:text-xl{font-size:1.25rem;line-height:1.75rem}.max-md\:text-xs{font-size:.75rem;line-height:1rem}}.\[\&_\.btn__content\]\:opacity-0 .btn content{opacity:0}.\[\&_svg\]\:h-\[1\.125rem\] svg{height:1.125rem}.\[\&_svg\]\:w-\[1\.125rem\] svg{width:1.125rem}:root{--brand-verde-vibrante: #01b2aa;--brand-verde-profundo: #1f3a3a;--brand-grafite-azulado: #0f2f3a;--brand-azul-acinzentado: #5f7b8d;--brand-cinza-medio: #4b4b4b;--brand-cinza-escuro: #24262d;--brand-off-white: #ffffff;--brand-neutral-75: rgba(255, 255, 255, .75);--brand-branco: #ffffff;--brand-preto: #000000;--brand-cinza: #989495;--brand-azul-lavanda: #777dac;--brand-azul-intenso: #132c3b;--brand-cinza-azulado: #b4c2c7;--brand-verde-lima: #cffe40;--brand-off-white-criador: #e4e4e4;--brand-azul-escuro: #071a5c}:root{--font-primary: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-secondary: "Plus Jakarta Sans", var(--font-primary);--font-heading: var(--font-primary);--font-body: var(--font-primary)}html{font-family:var(--font-body);font-size:1rem}:root{--primary-color: var(--brand-verde-vibrante);--primary-color-dark: var(--brand-verde-profundo);--primary-color-light: color-mix( in srgb, var(--brand-verde-vibrante) 84%, white );--primary-color-hover: var(--brand-verde-profundo);--md-primary: var(--brand-verde-vibrante);--md-on-primary: #ffffff;--md-primary-container: color-mix( in srgb, var(--brand-verde-vibrante) 18%, white );--md-on-primary-container: var(--brand-grafite-azulado);--secondary-color: var(--brand-grafite-azulado);--color-primary: var(--primary-color);--color-on-primary: var(--md-on-primary);--color-secondary: var(--secondary-color);--color-on-secondary: var(--md-on-secondary);--color-surface: var(--md-surface);--color-on-surface: var(--md-on-surface);--color-contrast: var(--brand-verde-lima);--md-secondary: var(--brand-grafite-azulado);--md-on-secondary: #ffffff;--md-outline: var(--brand-azul-acinzentado);--md-outline-variant: color-mix( in srgb, var(--brand-azul-acinzentado) 35%, white );--success-color: #22c55e;--success-color-light: #4ade80;--error-color: #ef4444;--error-color-light: #f87171;--md-error: #ba1a1a;--md-on-error: #ffffff;--warning-color: #f59e0b;--warning-color-light: #fbbe24;--info-color: #3b82f6;--info-color-light: #60a5fa;--neutral-color: var(--brand-cinza-medio);--neutral-color-light: var(--brand-azul-acinzentado);--secondary-color-light: var(--brand-azul-acinzentado);--bg-hover: color-mix(in srgb, var(--brand-grafite-azulado) 8%, white);--bg-active: color-mix(in srgb, var(--brand-grafite-azulado) 14%, white);--md-on-surface: var(--brand-grafite-azulado);--accent-color: var(--primary-color);--accent-color-hover: var(--primary-color-hover);--bg-primary: var(--brand-neutral-75);--bg-secondary: #ffffff;--bg-tertiary: color-mix(in srgb, var(--brand-azul-acinzentado) 14%, white);--md-surface: #ffffff;--md-surface-container: var(--brand-neutral-75);--md-surface-container-high: color-mix( in srgb, var(--brand-azul-acinzentado) 14%, white );--border-color-hover: color-mix( in srgb, var(--brand-grafite-azulado) 32%, white );--bg-card: #ffffff;--bg-card-hover: color-mix(in srgb, var(--brand-azul-acinzentado) 8%, white);--bg-card-border: color-mix( in srgb, var(--brand-azul-acinzentado) 28%, white );--text-primary: var(--brand-grafite-azulado);--text-secondary: var(--brand-cinza-escuro);--text-tertiary: var(--brand-cinza-medio);--text-muted: var(--brand-cinza-medio);--text-on-primary: #ffffff;--border-color: color-mix(in srgb, var(--brand-azul-acinzentado) 30%, white);--border-color-focus: color-mix( in srgb, var(--brand-verde-vibrante) 52%, transparent );--shadow-xs: 0 .0625rem .125rem rgba(0, 0, 0, .05);--shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .08);--shadow-md: 0 .25rem .75rem rgba(0, 0, 0, .1);--shadow-lg: 0 .5rem 1.5rem rgba(0, 0, 0, .12);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-normal: 1.5;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--border-radius-sm: .375rem;--border-radius-md: .5rem;--border-radius-lg: .75rem;--border-width-thin: .0625rem;--transition-base: .3s ease;--transition-all: all var(--transition-base);--transition-colors: color var(--transition-base), background-color var(--transition-base), border-color var(--transition-base);--z-index-dropdown: 1000;--z-index-modal-backdrop: 1040;--z-index-modal: 1050;--border-radius-2xl: 1.25rem;--shadow-2xl: 0 1.25rem 3.75rem rgba(0, 0, 0, .2);--font-size-2xl: 1.75rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-weight-light: 300;--line-height-tight: 1.2;--line-height-relaxed: 1.6;--line-height-loose: 1.8;--md-on-surface-variant: #44474e;--spacing-3xl: 2.5rem}[data-theme=dark],.theme-dark{--bg-primary: #0f141a;--bg-secondary: #161b22;--bg-card: #161b22;--bg-card-hover: #1e2630;--bg-card-border: #2f3a46;--md-surface: #161b22;--md-on-surface: #e6e8eb;--md-on-surface-variant: #c2c7cf;--md-outline-variant: #44474e;--md-primary: var(--brand-verde-vibrante);--md-on-primary: #062126;--primary-color: var(--brand-verde-vibrante);--primary-color-light: color-mix( in srgb, var(--brand-verde-vibrante) 85%, white );--primary-color-hover: var(--brand-verde-profundo);--secondary-color: var(--brand-azul-acinzentado);--color-primary: var(--primary-color);--color-on-primary: var(--md-on-primary);--color-secondary: var(--secondary-color);--color-on-secondary: var(--md-on-secondary);--color-surface: var(--md-surface);--color-on-surface: var(--md-on-surface);--color-contrast: var(--brand-off-white);--text-primary: #e6e8eb;--text-secondary: #d1d5db;--text-muted: #9ca3af;--border-color: #2f3a46;--shadow-sm: 0 .125rem .25rem 0 rgba(0, 0, 0, .4);--shadow-md: 0 .25rem .5rem 0 rgba(0, 0, 0, .5);--shadow-lg: 0 .5rem 1rem 0 rgba(0, 0, 0, .6)}[data-button-palette=verde-vibrante],.btn--palette-verde-vibrante.btn--primary,[data-button-palette=verde-vibrante] .btn--primary{--md-primary: var(--brand-verde-vibrante);--primary-color-hover: var(--brand-verde-profundo)}[data-button-palette=verde-profundo],.btn--palette-verde-profundo.btn--primary,[data-button-palette=verde-profundo] .btn--primary{--md-primary: var(--brand-verde-profundo);--primary-color-hover: var(--brand-grafite-azulado)}[data-button-palette=grafite-azulado],.btn--palette-grafite-azulado.btn--primary,[data-button-palette=grafite-azulado] .btn--primary{--md-primary: var(--brand-grafite-azulado);--primary-color-hover: var(--brand-cinza-escuro)}[data-button-palette=azul-acinzentado],.btn--palette-azul-acinzentado.btn--primary,[data-button-palette=azul-acinzentado] .btn--primary{--md-primary: var(--brand-azul-acinzentado);--primary-color-hover: var(--brand-grafite-azulado)}[data-button-palette=cinza-medio],.btn--palette-cinza-medio.btn--primary,[data-button-palette=cinza-medio] .btn--primary{--md-primary: var(--brand-cinza-medio);--primary-color-hover: var(--brand-cinza-escuro)}[data-button-palette=cinza-escuro],.btn--palette-cinza-escuro.btn--primary,[data-button-palette=cinza-escuro] .btn--primary{--md-primary: var(--brand-cinza-escuro);--primary-color-hover: var(--brand-preto)}[data-button-palette=off-white],.btn--palette-off-white.btn--primary,[data-button-palette=off-white] .btn--primary{--md-primary: var(--brand-off-white);--md-on-primary: var(--brand-grafite-azulado);--primary-color-hover: var(--brand-branco)}
1
+ @import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&display=swap";@import"https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700;800;900&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.left-\[var\(--spacing-md\)\]{left:var(--spacing-md)}.right-\[var\(--spacing-md\)\]{right:var(--spacing-md)}.top-0{top:0}.z-\[1000\]{z-index:1000}.z-\[1\]{z-index:1}.z-\[var\(--z-index-modal\)\]{z-index:var(--z-index-modal)}.z-\[var\(--z-index-modal-backdrop\)\]{z-index:var(--z-index-modal-backdrop)}.m-0{margin:0}.m-auto{margin:auto}.mb-\[var\(--spacing-xs\)\]{margin-bottom:var(--spacing-xs)}.ml-1{margin-left:.25rem}.mr-1{margin-right:.25rem}.mt-0{margin-top:0}.mt-\[var\(--spacing-xs\)\]{margin-top:var(--spacing-xs)}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\[1\.125rem\]{height:1.125rem}.h-\[1em\]{height:1em}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-11{min-height:2.75rem}.min-h-12{min-height:3rem}.min-h-14{min-height:3.5rem}.min-h-8{min-height:2rem}.min-h-9{min-height:2.25rem}.min-h-\[1\.75rem\]{min-height:1.75rem}.min-h-\[100dvh\]{min-height:100dvh}.min-h-\[2\.375rem\]{min-height:2.375rem}.min-h-\[2\.625rem\]{min-height:2.625rem}.w-16{width:4rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-\[1\.125rem\]{width:1.125rem}.w-\[1em\]{width:1em}.w-auto{width:auto}.w-full{width:100%}.min-w-11{min-width:2.75rem}.min-w-12{min-width:3rem}.min-w-14{min-width:3.5rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[1\.75rem\]{min-width:1.75rem}.min-w-\[2\.375rem\]{min-width:2.375rem}.min-w-\[2\.625rem\]{min-width:2.625rem}.min-w-\[34rem\]{min-width:34rem}.max-w-\[25rem\]{max-width:25rem}.max-w-\[31\.25rem\]{max-width:31.25rem}.max-w-\[43\.75rem\]{max-width:43.75rem}.max-w-\[56\.25rem\]{max-width:56.25rem}.max-w-\[90vw\]{max-width:90vw}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-\[0\.3125rem\]{gap:.3125rem}.gap-\[0\.4375rem\]{gap:.4375rem}.gap-\[0\.5625rem\]{gap:.5625rem}.gap-\[var\(--spacing-lg\)\]{gap:var(--spacing-lg)}.gap-\[var\(--spacing-md\)\]{gap:var(--spacing-md)}.gap-\[var\(--spacing-xs\)\]{gap:var(--spacing-xs)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-\[var\(--border-radius-2xl\)\]{border-radius:var(--border-radius-2xl)}.rounded-\[var\(--border-radius-lg\)\]{border-radius:var(--border-radius-lg)}.rounded-\[var\(--border-radius-md\)\]{border-radius:var(--border-radius-md)}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-\[var\(--border-color\)\]{border-color:var(--border-color)}.border-\[var\(--md-error\)\]{border-color:var(--md-error)}.border-\[var\(--md-outline-variant\)\]{border-color:var(--md-outline-variant)}.border-transparent{border-color:transparent}.bg-\[var\(--bg-secondary\)\]{background-color:var(--bg-secondary)}.bg-\[var\(--bg-tertiary\)\]{background-color:var(--bg-tertiary)}.bg-\[var\(--info-color\)\]{background-color:var(--info-color)}.bg-\[var\(--md-error\)\]{background-color:var(--md-error)}.bg-\[var\(--md-primary\)\]{background-color:var(--md-primary)}.bg-\[var\(--md-secondary\)\]{background-color:var(--md-secondary)}.bg-\[var\(--md-surface\)\]{background-color:var(--md-surface)}.bg-\[var\(--md-surface-container-high\)\]{background-color:var(--md-surface-container-high)}.bg-\[var\(--neutral-color\)\]{background-color:var(--neutral-color)}.bg-\[var\(--success-color\)\]{background-color:var(--success-color)}.bg-\[var\(--warning-color\)\]{background-color:var(--warning-color)}.bg-black\/50{background-color:#00000080}.bg-transparent{background-color:transparent}.bg-\[linear-gradient\(135deg\,var\(--text-primary\)_0\%\,var\(--primary-color\)_50\%\,var\(--secondary-color\)_100\%\)\]{background-image:linear-gradient(135deg,var(--text-primary) 0%,var(--primary-color) 50%,var(--secondary-color) 100%)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-\[var\(--spacing-2xl\)\]{padding:var(--spacing-2xl)}.p-\[var\(--spacing-lg\)\]{padding:var(--spacing-lg)}.p-\[var\(--spacing-md\)\]{padding:var(--spacing-md)}.p-\[var\(--spacing-xl\)\]{padding:var(--spacing-xl)}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[var\(--spacing-2xl\)\]{padding-left:var(--spacing-2xl);padding-right:var(--spacing-2xl)}.px-\[var\(--spacing-lg\)\]{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg)}.px-\[var\(--spacing-md\)\]{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.px-\[var\(--spacing-xl\)\]{padding-left:var(--spacing-xl);padding-right:var(--spacing-xl)}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-\[0\.5625rem\]{padding-top:.5625rem;padding-bottom:.5625rem}.py-\[var\(--spacing-lg\)\]{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-lg)}.py-\[var\(--spacing-md\)\]{padding-top:var(--spacing-md);padding-bottom:var(--spacing-md)}.py-\[var\(--spacing-sm\)\]{padding-top:var(--spacing-sm);padding-bottom:var(--spacing-sm)}.pl-10{padding-left:2.5rem}.pr-10{padding-right:2.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.375rem\]{font-size:1.375rem}.text-\[3rem\]{font-size:3rem}.text-base{font-size:1rem;line-height:1.5rem}.font-\[var\(--font-weight-bold\)\]{font-weight:var(--font-weight-bold)}.font-\[var\(--font-weight-light\)\]{font-weight:var(--font-weight-light)}.font-\[var\(--font-weight-medium\)\]{font-weight:var(--font-weight-medium)}.font-\[var\(--font-weight-normal\)\]{font-weight:var(--font-weight-normal)}.font-\[var\(--font-weight-semibold\)\]{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.not-italic{font-style:normal}.leading-\[1\.2\]{line-height:1.2}.leading-\[var\(--line-height-loose\)\]{line-height:var(--line-height-loose)}.leading-\[var\(--line-height-normal\)\]{line-height:var(--line-height-normal)}.leading-\[var\(--line-height-relaxed\)\]{line-height:var(--line-height-relaxed)}.leading-\[var\(--line-height-tight\)\]{line-height:var(--line-height-tight)}.leading-none{line-height:1}.tracking-\[0\.01em\]{letter-spacing:.01em}.tracking-\[0\.05em\]{letter-spacing:.05em}.tracking-\[0\.1em\]{letter-spacing:.1em}.text-\[var\(--font-size-2xl\)\]{color:var(--font-size-2xl)}.text-\[var\(--font-size-3xl\)\]{color:var(--font-size-3xl)}.text-\[var\(--font-size-4xl\)\]{color:var(--font-size-4xl)}.text-\[var\(--font-size-base\)\]{color:var(--font-size-base)}.text-\[var\(--font-size-lg\)\]{color:var(--font-size-lg)}.text-\[var\(--font-size-sm\)\]{color:var(--font-size-sm)}.text-\[var\(--font-size-xl\)\]{color:var(--font-size-xl)}.text-\[var\(--font-size-xs\)\]{color:var(--font-size-xs)}.text-\[var\(--md-error\)\]{color:var(--md-error)}.text-\[var\(--md-on-error\)\]{color:var(--md-on-error)}.text-\[var\(--md-on-primary\)\]{color:var(--md-on-primary)}.text-\[var\(--md-on-secondary\)\]{color:var(--md-on-secondary)}.text-\[var\(--md-on-surface\)\]{color:var(--md-on-surface)}.text-\[var\(--md-on-surface-variant\)\]{color:var(--md-on-surface-variant)}.text-\[var\(--md-primary\)\]{color:var(--md-primary)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-80{opacity:.8}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[var\(--shadow-2xl\)\]{--tw-shadow-color: var(--shadow-2xl);--tw-shadow: var(--tw-shadow-colored)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow-color: var(--shadow-lg);--tw-shadow: var(--tw-shadow-colored)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow-color: var(--shadow-sm);--tw-shadow: var(--tw-shadow-colored)}.shadow-\[var\(--shadow-xs\)\]{--tw-shadow-color: var(--shadow-xs);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[12px\]{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[8px\]{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-\[all_var\(--transition-base\)\]{transition-property:all var(--transition-base);transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[var\(--transition-all\)\]{transition-property:var(--transition-all);transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[var\(--transition-colors\)\]{transition-property:var(--transition-colors);transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.placeholder\:text-\[var\(--md-on-surface-variant\)\]::-moz-placeholder{color:var(--md-on-surface-variant)}.placeholder\:text-\[var\(--md-on-surface-variant\)\]::placeholder{color:var(--md-on-surface-variant)}.placeholder\:opacity-70::-moz-placeholder{opacity:.7}.placeholder\:opacity-70::placeholder{opacity:.7}.hover\:translate-y-\[-0\.125rem\]:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-\[var\(--border-color-hover\)\]:hover{border-color:var(--border-color-hover)}.hover\:bg-\[color\:color-mix\(in_srgb\,var\(--md-error\)_15\%\,var\(--md-surface\)\)\]:hover{background-color:color-mix(in srgb,var(--md-error) 15%,var(--md-surface))}.hover\:bg-\[var\(--bg-hover\)\]:hover{background-color:var(--bg-hover)}.hover\:bg-\[var\(--error-color-light\)\]:hover{background-color:var(--error-color-light)}.hover\:bg-\[var\(--info-color-light\)\]:hover{background-color:var(--info-color-light)}.hover\:bg-\[var\(--neutral-color-light\)\]:hover{background-color:var(--neutral-color-light)}.hover\:bg-\[var\(--primary-color-hover\)\]:hover{background-color:var(--primary-color-hover)}.hover\:bg-\[var\(--secondary-color-light\)\]:hover{background-color:var(--secondary-color-light)}.hover\:bg-\[var\(--success-color-light\)\]:hover{background-color:var(--success-color-light)}.hover\:bg-\[var\(--warning-color-light\)\]:hover{background-color:var(--warning-color-light)}.hover\:text-\[var\(--md-error\)\]:hover{color:var(--md-error)}.hover\:text-\[var\(--md-primary\)\]:hover{color:var(--md-primary)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[var\(--shadow-md\)\]:hover{--tw-shadow-color: var(--shadow-md);--tw-shadow: var(--tw-shadow-colored)}.focus\:border-\[var\(--border-color-focus\)\]:focus{border-color:var(--border-color-focus)}.focus\:border-\[var\(--md-error\)\]:focus{border-color:var(--md-error)}.focus\:\[box-shadow\:0_0_0_0\.1875rem_rgba\(186\,26\,26\,0\.2\)\]:focus{box-shadow:0 0 0 .1875rem #ba1a1a33}.focus\:\[box-shadow\:0_0_0_0\.1875rem_rgba\(47\,93\,140\,0\.15\)\]:focus{box-shadow:0 0 0 .1875rem #2f5d8c26}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[var\(--md-primary\)\]:focus-visible{outline-color:var(--md-primary)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[var\(--md-surface-container-high\)\]:disabled{background-color:var(--md-surface-container-high)}.disabled\:opacity-60:disabled{opacity:.6}.group:focus-within .group-focus-within\:text-\[var\(--md-primary\)\]{color:var(--md-primary)}@media not all and (min-width:768px){.max-md\:w-full{width:100%}.max-md\:flex-col{flex-direction:column}.max-md\:flex-wrap{flex-wrap:wrap}.max-md\:justify-between{justify-content:space-between}.max-md\:gap-3{gap:.75rem}.max-md\:px-4{padding-left:1rem;padding-right:1rem}.max-md\:py-3{padding-top:.75rem;padding-bottom:.75rem}.max-md\:text-xl{font-size:1.25rem;line-height:1.75rem}.max-md\:text-xs{font-size:.75rem;line-height:1rem}}.\[\&_svg\]\:h-\[1\.125rem\] svg{height:1.125rem}.\[\&_svg\]\:w-\[1\.125rem\] svg{width:1.125rem}:root{--brand-verde-vibrante: #01b2aa;--brand-verde-profundo: #1f3a3a;--brand-grafite-azulado: #0f2f3a;--brand-azul-acinzentado: #5f7b8d;--brand-cinza-medio: #4b4b4b;--brand-cinza-escuro: #24262d;--brand-off-white: #ffffff;--brand-neutral-75: rgba(255, 255, 255, .75);--brand-branco: #ffffff;--brand-preto: #000000;--brand-cinza: #989495;--brand-azul-lavanda: #777dac;--brand-azul-intenso: #132c3b;--brand-cinza-azulado: #b4c2c7;--brand-verde-lima: #cffe40;--brand-off-white-criador: #e4e4e4;--brand-azul-escuro: #071a5c}:root{--font-primary: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-secondary: "Plus Jakarta Sans", var(--font-primary);--font-heading: var(--font-primary);--font-body: var(--font-primary)}html{font-family:var(--font-body);font-size:1rem}:root{--primary-color: var(--brand-verde-vibrante);--primary-color-dark: var(--brand-verde-profundo);--primary-color-light: color-mix( in srgb, var(--brand-verde-vibrante) 84%, white );--primary-color-hover: var(--brand-verde-profundo);--md-primary: var(--brand-verde-vibrante);--md-on-primary: #ffffff;--md-primary-container: color-mix( in srgb, var(--brand-verde-vibrante) 18%, white );--md-on-primary-container: var(--brand-grafite-azulado);--secondary-color: var(--brand-grafite-azulado);--color-primary: var(--primary-color);--color-on-primary: var(--md-on-primary);--color-secondary: var(--secondary-color);--color-on-secondary: var(--md-on-secondary);--color-surface: var(--md-surface);--color-on-surface: var(--md-on-surface);--color-contrast: var(--brand-verde-lima);--md-secondary: var(--brand-grafite-azulado);--md-on-secondary: #ffffff;--md-outline: var(--brand-azul-acinzentado);--md-outline-variant: color-mix( in srgb, var(--brand-azul-acinzentado) 35%, white );--success-color: #22c55e;--success-color-light: #4ade80;--error-color: #ef4444;--error-color-light: #f87171;--md-error: #ba1a1a;--md-on-error: #ffffff;--warning-color: #f59e0b;--warning-color-light: #fbbe24;--info-color: #3b82f6;--info-color-light: #60a5fa;--neutral-color: var(--brand-cinza-medio);--neutral-color-light: var(--brand-azul-acinzentado);--secondary-color-light: var(--brand-azul-acinzentado);--bg-hover: color-mix(in srgb, var(--brand-grafite-azulado) 8%, white);--bg-active: color-mix(in srgb, var(--brand-grafite-azulado) 14%, white);--md-on-surface: var(--brand-grafite-azulado);--accent-color: var(--primary-color);--accent-color-hover: var(--primary-color-hover);--bg-primary: var(--brand-neutral-75);--bg-secondary: #ffffff;--bg-tertiary: color-mix(in srgb, var(--brand-azul-acinzentado) 14%, white);--md-surface: #ffffff;--md-surface-container: var(--brand-neutral-75);--md-surface-container-high: color-mix( in srgb, var(--brand-azul-acinzentado) 14%, white );--border-color-hover: color-mix( in srgb, var(--brand-grafite-azulado) 32%, white );--bg-card: #ffffff;--bg-card-hover: color-mix(in srgb, var(--brand-azul-acinzentado) 8%, white);--bg-card-border: color-mix( in srgb, var(--brand-azul-acinzentado) 28%, white );--text-primary: var(--brand-grafite-azulado);--text-secondary: var(--brand-cinza-escuro);--text-tertiary: var(--brand-cinza-medio);--text-muted: var(--brand-cinza-medio);--text-on-primary: #ffffff;--border-color: color-mix(in srgb, var(--brand-azul-acinzentado) 30%, white);--border-color-focus: color-mix( in srgb, var(--brand-verde-vibrante) 52%, transparent );--shadow-xs: 0 .0625rem .125rem rgba(0, 0, 0, .05);--shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .08);--shadow-md: 0 .25rem .75rem rgba(0, 0, 0, .1);--shadow-lg: 0 .5rem 1.5rem rgba(0, 0, 0, .12);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-normal: 1.5;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--border-radius-sm: .375rem;--border-radius-md: .5rem;--border-radius-lg: .75rem;--border-width-thin: .0625rem;--transition-base: .3s ease;--transition-all: all var(--transition-base);--transition-colors: color var(--transition-base), background-color var(--transition-base), border-color var(--transition-base);--z-index-dropdown: 1000;--z-index-modal-backdrop: 1040;--z-index-modal: 1050;--border-radius-2xl: 1.25rem;--shadow-2xl: 0 1.25rem 3.75rem rgba(0, 0, 0, .2);--font-size-2xl: 1.75rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-weight-light: 300;--line-height-tight: 1.2;--line-height-relaxed: 1.6;--line-height-loose: 1.8;--md-on-surface-variant: #44474e;--spacing-3xl: 2.5rem}[data-theme=dark],.theme-dark{--bg-primary: #0f141a;--bg-secondary: #161b22;--bg-card: #161b22;--bg-card-hover: #1e2630;--bg-card-border: #2f3a46;--md-surface: #161b22;--md-on-surface: #e6e8eb;--md-on-surface-variant: #c2c7cf;--md-outline-variant: #44474e;--md-primary: var(--brand-verde-vibrante);--md-on-primary: #062126;--primary-color: var(--brand-verde-vibrante);--primary-color-light: color-mix( in srgb, var(--brand-verde-vibrante) 85%, white );--primary-color-hover: var(--brand-verde-profundo);--secondary-color: var(--brand-azul-acinzentado);--color-primary: var(--primary-color);--color-on-primary: var(--md-on-primary);--color-secondary: var(--secondary-color);--color-on-secondary: var(--md-on-secondary);--color-surface: var(--md-surface);--color-on-surface: var(--md-on-surface);--color-contrast: var(--brand-off-white);--text-primary: #e6e8eb;--text-secondary: #d1d5db;--text-muted: #9ca3af;--border-color: #2f3a46;--shadow-sm: 0 .125rem .25rem 0 rgba(0, 0, 0, .4);--shadow-md: 0 .25rem .5rem 0 rgba(0, 0, 0, .5);--shadow-lg: 0 .5rem 1rem 0 rgba(0, 0, 0, .6)}[data-button-palette=verde-vibrante],.btn--palette-verde-vibrante.btn--primary,[data-button-palette=verde-vibrante] .btn--primary{--md-primary: var(--brand-verde-vibrante);--primary-color-hover: var(--brand-verde-profundo)}[data-button-palette=verde-profundo],.btn--palette-verde-profundo.btn--primary,[data-button-palette=verde-profundo] .btn--primary{--md-primary: var(--brand-verde-profundo);--primary-color-hover: var(--brand-grafite-azulado)}[data-button-palette=grafite-azulado],.btn--palette-grafite-azulado.btn--primary,[data-button-palette=grafite-azulado] .btn--primary{--md-primary: var(--brand-grafite-azulado);--primary-color-hover: var(--brand-cinza-escuro)}[data-button-palette=azul-acinzentado],.btn--palette-azul-acinzentado.btn--primary,[data-button-palette=azul-acinzentado] .btn--primary{--md-primary: var(--brand-azul-acinzentado);--primary-color-hover: var(--brand-grafite-azulado)}[data-button-palette=cinza-medio],.btn--palette-cinza-medio.btn--primary,[data-button-palette=cinza-medio] .btn--primary{--md-primary: var(--brand-cinza-medio);--primary-color-hover: var(--brand-cinza-escuro)}[data-button-palette=cinza-escuro],.btn--palette-cinza-escuro.btn--primary,[data-button-palette=cinza-escuro] .btn--primary{--md-primary: var(--brand-cinza-escuro);--primary-color-hover: var(--brand-preto)}[data-button-palette=off-white],.btn--palette-off-white.btn--primary,[data-button-palette=off-white] .btn--primary{--md-primary: var(--brand-off-white);--md-on-primary: var(--brand-grafite-azulado);--primary-color-hover: var(--brand-branco)}
@@ -1,6 +1,6 @@
1
1
  import { jsxs as v, jsx as e } from "react/jsx-runtime";
2
- import { useState as y, useEffect as p, useContext as B, createContext as $ } from "react";
3
- const T = ({
2
+ import { useState as z, useEffect as b, useContext as $, createContext as P } from "react";
3
+ const W = ({
4
4
  variant: t = "primary",
5
5
  size: a = "md",
6
6
  compact: r = !1,
@@ -15,13 +15,13 @@ const T = ({
15
15
  style: f,
16
16
  ...m
17
17
  }) => {
18
- const u = "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)]", z = "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]", N = "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60", x = n ? "w-full" : "", g = o ? "[&_.btn__content]:opacity-0" : "", M = {
18
+ 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)]", p = "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]", N = "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60", u = n ? "w-full" : "", g = "", M = l === "off-white" && t === "primary" ? "border-[var(--border-color)]" : "", _ = {
19
19
  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)]",
20
20
  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)]",
21
21
  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)]",
22
22
  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)]",
23
23
  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)]"
24
- }, _ = {
24
+ }, E = {
25
25
  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)]",
26
26
  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)]",
27
27
  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)]",
@@ -29,14 +29,14 @@ const T = ({
29
29
  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)]",
30
30
  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)]",
31
31
  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)]",
32
- 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)]"
32
+ 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)]"
33
33
  }, C = {
34
34
  xs: r ? "h-3 w-3" : "h-3.5 w-3.5",
35
35
  sm: r ? "h-3.5 w-3.5" : "h-4 w-4",
36
36
  md: "h-[1.125rem] w-[1.125rem]",
37
37
  lg: "h-5 w-5",
38
38
  xl: "h-5 w-5"
39
- }, b = {
39
+ }, w = {
40
40
  "verde-vibrante": {
41
41
  primary: "var(--brand-verde-vibrante)",
42
42
  hover: "var(--brand-verde-profundo)"
@@ -66,24 +66,25 @@ const T = ({
66
66
  hover: "var(--brand-branco)",
67
67
  onPrimary: "var(--brand-grafite-azulado)"
68
68
  }
69
- }, w = {};
70
- l && t === "primary" && (w["--md-primary"] = b[l].primary, w["--primary-color-hover"] = b[l].hover, b[l].onPrimary && (w["--md-on-primary"] = b[l].onPrimary));
71
- const E = [
72
- u,
73
- z,
74
- N,
75
- M[a],
76
- _[t],
69
+ }, y = {};
70
+ l && t === "primary" && (y["--md-primary"] = w[l].primary, y["--primary-color-hover"] = w[l].hover, w[l].onPrimary && (y["--md-on-primary"] = w[l].onPrimary));
71
+ const B = [
77
72
  x,
73
+ p,
74
+ N,
75
+ _[a],
76
+ E[t],
77
+ M,
78
+ u,
78
79
  g,
79
80
  h
80
81
  ].filter(Boolean).join(" ");
81
82
  return /* @__PURE__ */ v(
82
83
  "button",
83
84
  {
84
- className: E,
85
+ className: B,
85
86
  disabled: c || o,
86
- style: { ...w, ...f },
87
+ style: { ...y, ...f },
87
88
  ...m,
88
89
  children: [
89
90
  o && /* @__PURE__ */ e(
@@ -104,7 +105,7 @@ const T = ({
104
105
  children: s
105
106
  }
106
107
  ),
107
- /* @__PURE__ */ e("span", { className: "btn__content inline-flex items-center justify-center", children: d }),
108
+ !o && /* @__PURE__ */ e("span", { className: "btn__content inline-flex items-center justify-center", children: d }),
108
109
  !o && i && /* @__PURE__ */ e(
109
110
  "span",
110
111
  {
@@ -142,14 +143,14 @@ const T = ({
142
143
  o
143
144
  ].filter(Boolean).join(" ");
144
145
  return /* @__PURE__ */ e("div", { className: l, ...s, children: n });
145
- }, W = ({
146
+ }, A = ({
146
147
  poweredByText: t = "Powered by",
147
148
  logoSrc: a,
148
149
  logoAlt: r = "Logo",
149
150
  logoFallbackText: n,
150
151
  className: o = ""
151
152
  }) => {
152
- const [s, i] = y(!0);
153
+ const [s, i] = z(!0);
153
154
  return /* @__PURE__ */ e(
154
155
  "footer",
155
156
  {
@@ -189,7 +190,7 @@ const T = ({
189
190
  ] })
190
191
  }
191
192
  );
192
- }, k = () => typeof document > "u" ? "light" : document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light", A = ({
193
+ }, k = () => typeof document > "u" ? "light" : document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light", V = ({
193
194
  logoSrc: t,
194
195
  logoDarkSrc: a,
195
196
  logoAlt: r = "Logo",
@@ -200,28 +201,28 @@ const T = ({
200
201
  rightContent: d,
201
202
  className: h = ""
202
203
  }) => {
203
- const [c, l] = y(!1), [f, m] = y(
204
+ const [c, l] = z(!1), [f, m] = z(
204
205
  () => s ?? k()
205
- ), u = f === "dark" && a ? a : t;
206
- p(() => {
207
- const x = () => l(window.scrollY > 10);
208
- return window.addEventListener("scroll", x, { passive: !0 }), () => window.removeEventListener("scroll", x);
209
- }, []), p(() => {
206
+ ), x = f === "dark" && a ? a : t;
207
+ b(() => {
208
+ const u = () => l(window.scrollY > 10);
209
+ return window.addEventListener("scroll", u, { passive: !0 }), () => window.removeEventListener("scroll", u);
210
+ }, []), b(() => {
210
211
  if (s) {
211
212
  m(s);
212
213
  return;
213
214
  }
214
- const x = () => m(k());
215
- if (x(), typeof MutationObserver > "u")
215
+ const u = () => m(k());
216
+ if (u(), typeof MutationObserver > "u")
216
217
  return;
217
- const g = new MutationObserver(x);
218
+ const g = new MutationObserver(u);
218
219
  return g.observe(document.documentElement, {
219
220
  attributes: !0,
220
221
  attributeFilter: ["data-theme"]
221
222
  }), () => g.disconnect();
222
223
  }, [s]);
223
- const z = () => i?.(), N = (x) => {
224
- x.key === "Enter" && i?.();
224
+ const p = () => i?.(), N = (u) => {
225
+ u.key === "Enter" && i?.();
225
226
  };
226
227
  return /* @__PURE__ */ v(
227
228
  "header",
@@ -246,23 +247,23 @@ const T = ({
246
247
  "div",
247
248
  {
248
249
  className: "flex cursor-pointer items-center gap-3 transition-opacity duration-200 ease-in-out hover:opacity-80",
249
- onClick: i ? z : void 0,
250
+ onClick: i ? p : void 0,
250
251
  onKeyDown: i ? N : void 0,
251
252
  role: i ? "button" : void 0,
252
253
  tabIndex: i ? 0 : void 0,
253
254
  children: [
254
- u && /* @__PURE__ */ v("div", { className: "flex h-16 w-16 shrink-0 items-center justify-center", children: [
255
+ x && /* @__PURE__ */ v("div", { className: "flex h-16 w-16 shrink-0 items-center justify-center", children: [
255
256
  /* @__PURE__ */ e(
256
257
  "img",
257
258
  {
258
259
  alt: r,
259
260
  className: "h-full w-full object-contain",
260
- onError: (x) => {
261
- x.target.style.display = "none";
262
- const g = x.target.nextElementSibling;
261
+ onError: (u) => {
262
+ u.target.style.display = "none";
263
+ const g = u.target.nextElementSibling;
263
264
  g && (g.style.display = "block");
264
265
  },
265
- src: u
266
+ src: x
266
267
  }
267
268
  ),
268
269
  /* @__PURE__ */ v(
@@ -301,7 +302,7 @@ const T = ({
301
302
  ]
302
303
  }
303
304
  );
304
- }, V = ({
305
+ }, K = ({
305
306
  label: t,
306
307
  error: a,
307
308
  helperText: r,
@@ -313,7 +314,7 @@ const T = ({
313
314
  id: h,
314
315
  ...c
315
316
  }) => {
316
- const l = h || `input-${Math.random().toString(36).substring(2, 9)}`, f = !!a, u = [
317
+ const l = h || `input-${Math.random().toString(36).substring(2, 9)}`, f = !!a, x = [
317
318
  "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",
318
319
  f ? "border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]" : "",
319
320
  n ? "pl-10" : "",
@@ -341,7 +342,7 @@ const T = ({
341
342
  {
342
343
  "aria-describedby": a ? `${l}-error` : r ? `${l}-helper` : void 0,
343
344
  "aria-invalid": f ? !0 : void 0,
344
- className: u,
345
+ className: x,
345
346
  id: l,
346
347
  ...c
347
348
  }
@@ -366,7 +367,7 @@ const T = ({
366
367
  }
367
368
  )
368
369
  ] });
369
- }, K = ({
370
+ }, R = ({
370
371
  isOpen: t,
371
372
  onClose: a,
372
373
  title: r,
@@ -377,11 +378,11 @@ const T = ({
377
378
  closeOnOverlayClick: d = !0,
378
379
  className: h = ""
379
380
  }) => {
380
- if (p(() => (t ? document.body.style.overflow = "hidden" : document.body.style.overflow = "", () => {
381
+ if (b(() => (t ? document.body.style.overflow = "hidden" : document.body.style.overflow = "", () => {
381
382
  document.body.style.overflow = "";
382
- }), [t]), p(() => {
383
- const m = (u) => {
384
- u.key === "Escape" && t && a();
383
+ }), [t]), b(() => {
384
+ const m = (x) => {
385
+ x.key === "Escape" && t && a();
385
386
  };
386
387
  return t && document.addEventListener("keydown", m), () => document.removeEventListener("keydown", m);
387
388
  }, [t, a]), !t)
@@ -448,82 +449,87 @@ const T = ({
448
449
  ] })
449
450
  }
450
451
  );
451
- }, R = ({
452
+ }, D = ({
452
453
  as: t = "p",
453
454
  size: a = "md",
454
455
  weight: r = "normal",
455
456
  align: n = "left",
456
457
  muted: o = !1,
457
- children: s,
458
- className: i = "",
459
- ...d
458
+ italic: s = !1,
459
+ children: i,
460
+ className: d = "",
461
+ ...h
460
462
  }) => {
461
- const h = t, c = {
463
+ const c = t, l = {
462
464
  xs: "text-[var(--font-size-xs)] leading-[var(--line-height-normal)]",
463
465
  sm: "text-[var(--font-size-sm)] leading-[var(--line-height-normal)]",
464
466
  md: "text-[var(--font-size-base)] leading-[var(--line-height-relaxed)]",
465
467
  lg: "text-[var(--font-size-lg)] leading-[var(--line-height-loose)]"
466
- }, l = {
468
+ }, f = {
467
469
  light: "font-[var(--font-weight-light)]",
468
470
  normal: "font-[var(--font-weight-normal)]",
469
471
  medium: "font-[var(--font-weight-medium)]"
470
- }, f = {
472
+ }, m = {
471
473
  left: "text-left",
472
474
  center: "text-center",
473
475
  right: "text-right",
474
476
  justify: "text-justify"
475
- }, m = [
477
+ }, x = [
476
478
  "m-0 text-[var(--text-primary)] transition-[var(--transition-colors)]",
477
- c[a],
478
- l[r],
479
- f[n],
479
+ l[a],
480
+ f[r],
481
+ m[n],
482
+ s ? "italic" : "not-italic",
480
483
  o ? "text-[var(--text-muted)]" : "",
481
- i
484
+ d
482
485
  ].filter(Boolean).join(" ");
483
- return /* @__PURE__ */ e(h, { className: m, ...d, children: s });
484
- }, D = ({
486
+ return /* @__PURE__ */ e(c, { className: x, ...h, children: i });
487
+ }, H = ({
485
488
  as: t = "p",
486
489
  size: a = "md",
487
490
  weight: r = "normal",
488
491
  align: n = "left",
489
492
  muted: o = !1,
490
- children: s,
491
- className: i = "",
492
- ...d
493
+ italic: s = !1,
494
+ children: i,
495
+ className: d = "",
496
+ ...h
493
497
  }) => {
494
- const h = t, c = {
498
+ const c = t, l = {
495
499
  xs: "text-[var(--font-size-xs)]",
496
500
  sm: "text-[var(--font-size-sm)]",
497
501
  md: "text-[var(--font-size-base)]",
498
502
  lg: "text-[var(--font-size-lg)]"
499
- }, l = {
503
+ }, f = {
500
504
  normal: "font-[var(--font-weight-normal)]",
501
505
  medium: "font-[var(--font-weight-medium)]",
502
506
  semibold: "font-[var(--font-weight-semibold)]"
503
- }, f = {
507
+ }, m = {
504
508
  left: "text-left",
505
509
  center: "text-center",
506
510
  right: "text-right"
507
- }, m = [
511
+ }, x = [
508
512
  "m-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]",
509
- c[a],
510
- l[r],
511
- f[n],
513
+ l[a],
514
+ f[r],
515
+ m[n],
516
+ s ? "italic" : "not-italic",
512
517
  o ? "text-[var(--text-muted)] opacity-80" : "",
513
- i
518
+ d
514
519
  ].filter(Boolean).join(" ");
515
- return /* @__PURE__ */ e(h, { className: m, ...d, children: s });
516
- }, H = ({
520
+ return /* @__PURE__ */ e(c, { className: x, ...h, children: i });
521
+ }, O = ({
517
522
  as: t = "h1",
518
523
  size: a = "2xl",
519
524
  weight: r = "bold",
520
525
  align: n = "left",
521
526
  gradient: o = !1,
522
- children: s,
523
- className: i = "",
524
- ...d
527
+ italic: s = !1,
528
+ children: i,
529
+ className: d = "",
530
+ ...h
525
531
  }) => {
526
- const h = t, c = {
532
+ const c = t, l = {
527
533
  xs: "text-[var(--font-size-sm)]",
528
534
  sm: "text-[var(--font-size-base)]",
529
535
  md: "text-[var(--font-size-lg)]",
@@ -532,37 +538,38 @@ const T = ({
532
538
  "2xl": "text-[var(--font-size-3xl)]",
533
539
  "3xl": "text-[var(--font-size-4xl)]",
534
540
  "4xl": "text-[3rem]"
535
- }, l = {
541
+ }, f = {
536
542
  light: "font-[var(--font-weight-light)]",
537
543
  normal: "font-[var(--font-weight-normal)]",
538
544
  medium: "font-[var(--font-weight-medium)]",
539
545
  semibold: "font-[var(--font-weight-semibold)]",
540
546
  bold: "font-[var(--font-weight-bold)]",
541
547
  extrabold: "font-extrabold"
542
- }, f = {
548
+ }, m = {
543
549
  left: "text-left",
544
550
  center: "text-center",
545
551
  right: "text-right"
546
- }, m = o ? "bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent" : "", u = [
552
+ }, x = o ? "bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent" : "", p = [
547
553
  "m-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]",
548
- c[a],
549
- l[r],
550
- f[n],
551
- m,
552
- i
554
+ l[a],
555
+ f[r],
556
+ m[n],
557
+ s ? "italic" : "not-italic",
558
+ x,
559
+ d
553
560
  ].filter(Boolean).join(" ");
554
- return /* @__PURE__ */ e(h, { className: u, ...d, children: s });
555
- }, j = $(void 0), O = () => {
556
- const t = B(j);
561
+ return /* @__PURE__ */ e(c, { className: p, ...h, children: i });
562
+ }, j = P(void 0), Y = () => {
563
+ const t = $(j);
557
564
  if (!t)
558
565
  throw new Error("useTheme must be used within a ThemeProvider");
559
566
  return t;
560
- }, Y = ({
567
+ }, q = ({
561
568
  children: t,
562
569
  defaultTheme: a = "light"
563
570
  }) => {
564
- const [r, n] = y(() => typeof window > "u" ? a : window.localStorage.getItem("theme") || a);
565
- p(() => {
571
+ const [r, n] = z(() => typeof window > "u" ? a : window.localStorage.getItem("theme") || a);
572
+ b(() => {
566
573
  typeof window > "u" || (window.localStorage.setItem("theme", r), document.documentElement.setAttribute("data-theme", r));
567
574
  }, [r]);
568
575
  const o = () => {
@@ -571,16 +578,16 @@ const T = ({
571
578
  return /* @__PURE__ */ e(j.Provider, { value: { theme: r, toggleTheme: o }, children: t });
572
579
  };
573
580
  export {
574
- T as Button,
581
+ W as Button,
575
582
  F as Card,
576
- W as Footer,
577
- A as Header,
578
- V as Input,
579
- K as Modal,
580
- R as Paragraph,
581
- D as Subtitle,
582
- Y as ThemeProvider,
583
- H as Title,
584
- O as useTheme
583
+ A as Footer,
584
+ V as Header,
585
+ K as Input,
586
+ R as Modal,
587
+ D as Paragraph,
588
+ H as Subtitle,
589
+ q as ThemeProvider,
590
+ O as Title,
591
+ Y as useTheme
585
592
  };
586
593
  //# sourceMappingURL=oficios-ui.js.map
@@ -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/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 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';\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 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';\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';\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 {\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","offWhiteBorderClass","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","italic","Component","weightClassMap","alignClassMap","Subtitle","Title","gradient","gradientClass","ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","defaultTheme","setTheme","toggleTheme","prev"],"mappings":"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"}
@@ -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(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,b){"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:f="",disabled:v,palette:l,style:h,...m})=>{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)]",u="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",g=o?"w-full":"",p="",A=l==="off-white"&&t==="primary"?"border-[var(--border-color)]":"",O={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)]"},V={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)]"},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"},w={"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)"}},y={};l&&t==="primary"&&(y["--md-primary"]=w[l].primary,y["--primary-color-hover"]=w[l].hover,w[l].onPrimary&&(y["--md-on-primary"]=w[l].onPrimary));const q=[x,u,z,O[a],V[t],A,g,p,f].filter(Boolean).join(" ");return e.jsxs("button",{className:q,disabled:v||s,style:{...y,...h},...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}),!s&&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"},f={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],f[a],v,s].filter(Boolean).join(" ");return e.jsx("div",{className:l,...n,children:o})},E=({poweredByText:t="Powered by",logoSrc:a,logoAlt:r="Logo",logoFallbackText:o,className:s=""})=>{const[n,i]=b.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",_=({logoSrc:t,logoDarkSrc:a,logoAlt:r="Logo",title:o,subtitle:s,theme:n,onLogoClick:i,rightContent:c,className:f=""})=>{const[v,l]=b.useState(!1),[h,m]=b.useState(()=>n??N()),x=h==="dark"&&a?a:t;b.useEffect(()=>{const g=()=>l(window.scrollY>10);return window.addEventListener("scroll",g,{passive:!0}),()=>window.removeEventListener("scroll",g)},[]),b.useEffect(()=>{if(n){m(n);return}const g=()=>m(N());if(g(),typeof MutationObserver>"u")return;const p=new MutationObserver(g);return p.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>p.disconnect()},[n]);const u=()=>i?.(),z=g=>{g.key==="Enter"&&i?.()};return e.jsxs("header",{className:["fixed inset-x-0 top-0 z-[1000] w-full backdrop-blur-[12px]",f].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?u:void 0,onKeyDown:i?z:void 0,role:i?"button":void 0,tabIndex:i?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:r,className:"h-full w-full object-contain",onError:g=>{g.target.style.display="none";const p=g.target.nextElementSibling;p&&(p.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"})]})]}),(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})]})]})},B=({label:t,error:a,helperText:r,leftIcon:o,rightIcon:s,fullWidth:n=!1,size:i="md",className:c="",id:f,...v})=>{const l=f||`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)]":"",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":h?!0:void 0,className:x,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})]})},S=({isOpen:t,onClose:a,title:r,subtitle:o,children:s,size:n="md",showCloseButton:i=!0,closeOnOverlayClick:c=!0,className:f=""})=>{if(b.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t]),b.useEffect(()=>{const m=x=>{x.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()},h=["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],f].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:h,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,italic:n=!1,children:i,className:c="",...f})=>{const v=t,l={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)]"},m={left:"text-left",center:"text-center",right:"text-right",justify:"text-justify"},x=["m-0 text-[var(--text-primary)] transition-[var(--transition-colors)]",l[a],h[r],m[o],n?"italic":"not-italic",s?"text-[var(--text-muted)]":"",c].filter(Boolean).join(" ");return e.jsx(v,{className:x,...f,children:i})},P=({as:t="p",size:a="md",weight:r="normal",align:o="left",muted:s=!1,italic:n=!1,children:i,className:c="",...f})=>{const v=t,l={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)]"},m={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)]",l[a],h[r],m[o],n?"italic":"not-italic",s?"text-[var(--text-muted)] opacity-80":"",c].filter(Boolean).join(" ");return e.jsx(v,{className:x,...f,children:i})},$=({as:t="h1",size:a="2xl",weight:r="bold",align:o="left",gradient:s=!1,italic:n=!1,children:i,className:c="",...f})=>{const v=t,l={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"},m={left:"text-left",center:"text-center",right:"text-right"},x=s?"bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent":"",u=["m-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]",l[a],h[r],m[o],n?"italic":"not-italic",x,c].filter(Boolean).join(" ");return e.jsx(v,{className:u,...f,children:i})},C=b.createContext(void 0),F=()=>{const t=b.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]=b.useState(()=>typeof window>"u"?a:window.localStorage.getItem("theme")||a);b.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=E,d.Header=_,d.Input=B,d.Modal=S,d.Paragraph=T,d.Subtitle=P,d.ThemeProvider=W,d.Title=$,d.useTheme=F,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=oficios-ui.umd.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"oficios-ui.umd.cjs","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.umd.cjs","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 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';\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 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';\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';\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 {\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","offWhiteBorderClass","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","italic","Component","weightClassMap","alignClassMap","Subtitle","Title","gradient","gradientClass","ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","defaultTheme","setTheme","toggleTheme","prev"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sbkbs/ui",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Biblioteca de componentes UI SBK BS",
5
5
  "type": "module",
6
6
  "main": "./dist/oficios-ui.umd.cjs",