@vector-business-services/cristal-ds-web 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AutoComplete/AutoComplete.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Divider/Divider.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Input/Input.tsx","../src/components/Menu/Menu.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Menubar/Menubar.tsx","../src/components/Tag/Tag.tsx","../src/components/MenuPrincipal/MenuPrincipal.tsx","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Panel/Panel.tsx","../src/components/Radio/Radio.tsx","../src/components/ScrollPanel/ScrollPanel.tsx","../src/components/SegmentControl/SegmentControl.tsx","../src/components/Select/Select.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/Tabs.tsx"],"names":["forwardRef","AutoComplete","useId","jsxs","jsx","PrimeAutoComplete","WarningCircle","Info","Badge","useRef","useImperativeHandle","PrimeBadge","Button","PrimeButton","Card","PrimeCard","Checkbox","useCallback","useEffect","PrimeCheckbox","Check","Chip","X","PrimeChip","Divider","PrimeDivider","IconButton","useState","Sidebar","ArrowLeft","Input","InputText","Menu","useContext","PrimeReactContext","CircleNotch","menu","PrimeMenu","PrimeReactProvider","PrimeTooltip","Fragment","PrimeAvatar","Menubar","List","MagnifyingGlass","PrimeMenubar","Tag","PrimeTag","MenuPrincipal","DribbbleLogo","Dialog","Question","MultiSelect","options","PrimeMultiSelect","CaretDown","Panel","PrimePanel","Radio","RadioButton","ScrollPanel","PrimeScrollPanel","SegmentControl","SelectButton","Select","Dropdown","CaretUp","Switch","InputSwitch","Tabs","Children","isValidElement","cloneElement","TabView","PrimeTabPanel"],"mappings":"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","file":"index.cjs","sourcesContent":["import { forwardRef, useId } from 'react';\nimport {\n AutoComplete as PrimeAutoComplete,\n type AutoCompleteProps as PrimeAutoCompleteProps,\n} from 'primereact/autocomplete';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport type { InputSize, InputVariant } from '../Input';\nimport '../Input/Input.css';\nimport './AutoComplete.css';\n\nexport type AutoCompleteVariant = InputVariant;\nexport type AutoCompleteSize = InputSize;\n\nexport interface AutoCompleteProps extends Omit<\n PrimeAutoCompleteProps,\n // Fora do Figma (seleção múltipla, botão de dropdown, mensagem de vazio, carregando) ou\n // controlados pelo Cristal (visual, rótulo, erro).\n | 'size'\n | 'variant'\n | 'invalid'\n | 'multiple'\n | 'selectionLimit'\n | 'selectedItemTemplate'\n | 'removeTokenIcon'\n | 'dropdown'\n | 'dropdownAriaLabel'\n | 'dropdownAutoFocus'\n | 'dropdownIcon'\n | 'dropdownMode'\n | 'showEmptyMessage'\n | 'emptyMessage'\n | 'loadingIcon'\n | 'inputClassName'\n | 'panelClassName'\n | 'scrollHeight'\n | 'inputRef'\n | 'pt'\n | 'ptOptions'\n | 'unstyled'\n | 'children'\n> {\n /** Type no Figma: Outline (com borda) e Filled (com fundo). */\n variant?: AutoCompleteVariant;\n /** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\n size?: AutoCompleteSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Dica abaixo do campo (Hint no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: AutoComplete do PrimeReact no modo unstyled (busca, lista, teclado e ARIA de combobox do\n// Prime, espelhando o p-autoComplete do PrimeNG da produção). O rótulo e a dica são os do Input\n// (.cr-field). O campo do AutoComplete no Figma não tem ícones, então o próprio <input> é a caixa\n// do campo: assim o painel, que o Prime alinha pelo <input>, fica na largura e na borda do campo.\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(function AutoComplete(\n {\n variant = 'outline',\n size = 'large',\n label,\n hint,\n error,\n inputId,\n required,\n disabled,\n className,\n style,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const id = inputId ?? autoId;\n const hintId = `${id}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n 'cr-autocomplete',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={id}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeAutoComplete\n unstyled\n inputRef={ref}\n inputId={id}\n required={required}\n disabled={disabled}\n // 5 itens visíveis, como no Figma (5 × 37px).\n scrollHeight=\"185px\"\n pt={{\n root: { className: 'cr-autocomplete__root' },\n input: {\n root: {\n className: 'cr-field__control cr-autocomplete__input',\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n },\n },\n // O Prime mostra um spinner próprio enquanto busca; o Figma não define esse estado.\n loadingIcon: { className: 'cr-autocomplete__loader' },\n panel: { className: 'cr-autocomplete__panel' },\n list: { className: 'cr-autocomplete__list' },\n item: { className: 'cr-autocomplete__item' },\n }}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Badge as PrimeBadge } from 'primereact/badge';\nimport './Badge.css';\n\n/** State no Figma. */\nexport type BadgeVariant = 'default' | 'error' | 'warning' | 'success' | 'disabled';\n/** Size no Figma: large = 24px, medium = 16px, small = ponto de 8px sem número. */\nexport type BadgeSize = 'large' | 'medium' | 'small';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Valor do badge (Badge Value no Figma). Ignorado no `small`. */\n children?: ReactNode;\n}\n\n// Base: Badge do PrimeReact no modo unstyled; o visual vem todo do Badge.css. No small o\n// conteúdo é descartado: é um indicador sem número (para ele ser anunciado, passe role=\"img\" e\n// aria-label).\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant = 'default', size = 'large', className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeBadge>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-badge', `cr-badge--${variant}`, `cr-badge--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeBadge\n unstyled\n ref={primeRef}\n className={classes}\n value={size === 'small' ? null : children}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './Button.css';\n\n/** Hierarchy no Figma: Primary (Filled), Secondary (Tonal) e Tertiary (Outlined). */\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n/** Size no Figma: 32, 36, 42 e 48px de altura. */\nexport type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). */\n trailingIcon?: ReactNode;\n}\n\n// Base: Button do PrimeReact no modo unstyled. O comportamento é o do Prime (espelhando o PrimeNG\n// da produção) e o visual vem todo do Button.css. O Prime aceita um ícone só (`icon`); como o\n// Figma permite os dois juntos, os ícones vão como conteúdo do botão.\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'large',\n leadingIcon,\n trailingIcon,\n type = 'button',\n className,\n children,\n ...props\n },\n ref,\n) {\n const classes = ['cr-button', `cr-button--${variant}`, `cr-button--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n {leadingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n {children}\n {trailingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {trailingIcon}\n </span>\n )}\n </PrimeButton>\n );\n});\n","import { forwardRef, type HTMLAttributes, type Ref } from 'react';\nimport { Card as PrimeCard } from 'primereact/card';\nimport './Card.css';\n\n/** Padding no Figma: X-Small (8px), Small (12px), Medium (16px), Large (20px) e X-Large (24px). */\nexport type CardPadding = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n padding?: CardPadding;\n /** Outline no Figma: borda de 1px em stroke/neutral/base. */\n outline?: boolean;\n}\n\n// Base: Card do PrimeReact no modo unstyled (o p-card do PrimeNG da produção). No Figma o Card é\n// só o contêiner, com o conteúdo num slot: o Cristal não repassa header, title, subTitle nem\n// footer do Prime, e o conteúdo vai em children. O visual vem do Card.css.\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { padding = 'xsmall', outline = false, className, style, children, ...props },\n ref,\n) {\n const classes = ['cr-card', `cr-card--${padding}`, outline && 'cr-card--outline', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeCard\n unstyled\n // O Card do Prime é um forwardRef que entrega o próprio <div>, mas o tipo o declara como classe.\n ref={ref as unknown as Ref<PrimeCard>}\n // No unstyled, className e style do Card do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n body: { className: 'cr-card__body' },\n content: { className: 'cr-card__content' },\n }}\n {...props}\n >\n {children}\n </PrimeCard>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { Checkbox as PrimeCheckbox, type CheckboxChangeEvent } from 'primereact/checkbox';\nimport { Check } from '@phosphor-icons/react';\nimport './Checkbox.css';\n\n/** Label Position no Figma: lado da caixa em relação ao rótulo. */\nexport type CheckboxPosition = 'left' | 'right';\n/** Label Type no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type CheckboxLabelSize = 'default' | 'full';\n\nexport interface CheckboxProps {\n /** Texto ao lado da caixa (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Lado da caixa. Padrão: left. */\n position?: CheckboxPosition;\n /** Padrão: default. */\n labelSize?: CheckboxLabelSize;\n checked?: boolean;\n /** Type=Indeterminate no Figma: traço no lugar do check; o leitor de tela anuncia \"misto\". */\n indeterminate?: boolean;\n onChange?: (event: CheckboxChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: unknown;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: Checkbox do PrimeReact no modo unstyled (o p-checkbox do PrimeNG da produção), com o\n// <input type=\"checkbox\"> nativo por cima da caixa. O Prime não tem o estado indeterminado: o\n// Cristal liga a propriedade nativa do input e desenha o traço no CSS. O rótulo é um <label>\n// ligado ao input. A ref entrega o <input>.\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n label,\n showLabel = true,\n position = 'left',\n labelSize = 'default',\n checked = false,\n indeterminate = false,\n onChange,\n disabled,\n required,\n name,\n value,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n // O Cristal também precisa do <input> (para o indeterminado): a ref de callback guarda os dois.\n const inputRef = useRef<HTMLInputElement | null>(null);\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n inputRef.current = input;\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n // Com o indeterminado ligado, o leitor de tela anuncia \"misto\" no lugar de marcado/desmarcado.\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = indeterminate && !checked;\n }, [indeterminate, checked]);\n\n const classes = [\n 'cr-checkbox',\n `cr-checkbox--${position}`,\n `cr-checkbox--label-${labelSize}`,\n indeterminate && !checked && 'cr-checkbox--indeterminate',\n disabled && 'cr-checkbox--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <PrimeCheckbox\n unstyled\n inputRef={setInputRef}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n icon={<Check size={16} />}\n pt={{\n root: { className: 'cr-checkbox__control' },\n input: { className: 'cr-checkbox__input' },\n box: { className: 'cr-checkbox__box' },\n icon: { className: 'cr-checkbox__icon', 'aria-hidden': true },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-checkbox__label${showLabel ? '' : ' cr-checkbox__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from '@phosphor-icons/react';\nimport { Chip as PrimeChip, type ChipRemoveEvent } from 'primereact/chip';\nimport './Chip.css';\n\n/** Type no Figma. */\nexport type ChipVariant =\n | 'default'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'highlight'\n | 'inverse'\n | 'outline'\n | 'neutral'\n | 'on-image';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type ChipSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Texto do chip (Label no Figma). */\n label: string;\n variant?: ChipVariant;\n size?: ChipSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). Com `onRemove`, o padrão é o X do Figma. */\n trailingIcon?: ReactNode;\n disabled?: boolean;\n /**\n * Torna o ícone da direita o botão de remover do PrimeReact (clique, Enter ou Backspace).\n * Como no Prime, o chip se esconde depois; retorne `false` para controlar a remoção por fora.\n */\n onRemove?: (event: ChipRemoveEvent) => boolean | void;\n /** Nome acessível do botão de remover. */\n removeLabel?: string;\n}\n\n// Base: Chip do PrimeReact no modo unstyled; o visual vem todo do Chip.css. O Prime aceita só um\n// ícone à esquerda e, à direita, só o de remover: os ícones vão como funções, que o Prime chama\n// com as props dele (role, tabIndex e teclado do remover). Sem onRemove (ou desabilitado), o ícone\n// da direita é só visual.\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n label,\n variant = 'default',\n size = 'small',\n leadingIcon,\n trailingIcon,\n disabled = false,\n onRemove,\n removeLabel = 'Remover',\n className,\n ...props\n },\n ref,\n) {\n const classes = [\n 'cr-chip',\n `cr-chip--${variant}`,\n `cr-chip--${size}`,\n disabled && 'cr-chip--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const removable = Boolean(onRemove) && !disabled;\n const trailing = trailingIcon ?? (onRemove ? <X /> : null);\n\n return (\n <PrimeChip\n unstyled\n // O Prime remonta o <div> a cada render interno (troca a key), então a ref vai pelo\n // pass-through da raiz, que acompanha cada montagem. O aria-label que o Prime põe na raiz\n // sai: num <div> sem role ele é proibido (axe), e o texto já está visível no chip.\n pt={{ root: { ref, 'aria-label': undefined } }}\n className={classes}\n label={label}\n aria-disabled={disabled || undefined}\n icon={\n leadingIcon\n ? () => (\n <span className=\"cr-chip__icon cr-chip__icon--leading\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )\n : undefined\n }\n removable={Boolean(trailing)}\n removeIcon={(options) => {\n if (!removable) {\n return (\n <span className=\"cr-chip__icon cr-chip__icon--trailing\" aria-hidden=\"true\">\n {trailing}\n </span>\n );\n }\n const { role, tabIndex, onClick, onKeyDown } =\n options.iconProps as HTMLAttributes<HTMLSpanElement>;\n return (\n <span\n role={role}\n tabIndex={tabIndex}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className=\"cr-chip__icon cr-chip__icon--trailing cr-chip__remove\"\n aria-label={removeLabel}\n >\n {trailing}\n </span>\n );\n }}\n onRemove={onRemove ? (event) => onRemove(event) !== false : undefined}\n {...props}\n />\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Divider as PrimeDivider } from 'primereact/divider';\nimport './Divider.css';\n\n/** Horizontal Divider e Vertical Divider no Figma. */\nexport type DividerOrientation = 'horizontal' | 'vertical';\n/** Style no Figma: Solid (Default no vertical) e Dashed. */\nexport type DividerVariant = 'solid' | 'dashed';\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n}\n\n// Base: Divider do PrimeReact no modo unstyled (role=\"separator\" e aria-orientation do Prime).\n// O visual vem todo do Divider.css. O Figma não tem conteúdo no meio da linha, então o Cristal\n// não repassa children.\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', variant = 'solid', className, style, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimeDivider>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-divider', `cr-divider--${orientation}`, `cr-divider--${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeDivider\n unstyled\n ref={primeRef}\n layout={orientation}\n // No unstyled, className e style do Divider do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n content: { className: 'cr-divider__content' },\n }}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './IconButton.css';\n\n/**\n * Hierarchy no Figma: Primary (Filled), Secondary (Tonal), Tertiary (Outlined) e Other (Icon),\n * que aqui é `ghost`: só o ícone, com fundo no hover.\n */\nexport type IconButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\n/** Size no Figma: 32, 36, 42 e 48px. */\nexport type IconButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n variant?: IconButtonVariant;\n size?: IconButtonSize;\n /** Ícone do botão (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Obrigatório: o botão não tem texto, então é isso que o leitor de tela anuncia. */\n 'aria-label': string;\n}\n\n// Base: Button do PrimeReact no modo unstyled, só com ícone (o `p-button-icon-only` do PrimeNG).\n// O comportamento é o do Prime e o visual vem todo do IconButton.css.\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { variant = 'primary', size = 'large', icon, type = 'button', className, ...props },\n ref,\n) {\n const classes = [\n 'cr-icon-button',\n `cr-icon-button--${variant}`,\n `cr-icon-button--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n <span className=\"cr-icon-button__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n </PrimeButton>\n );\n});\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Sidebar, type SidebarPassThroughTransitionType } from 'primereact/sidebar';\nimport { ArrowLeft, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Drawer.css';\n\n/** Side no Figma: de que lado da tela a gaveta abre. */\nexport type DrawerSide = 'right' | 'left';\n/**\n * Behavior no Figma: Full Body (tudo rola junto) ou Fixed Body (cabeçalho e rodapé fixos, só o\n * corpo rola).\n */\nexport type DrawerBehavior = 'full' | 'fixed';\n\nexport interface DrawerProps {\n visible: boolean;\n /** Pedido para fechar (X, Esc ou clique no overlay). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível da gaveta. */\n title: string;\n /** Subtítulo descritivo, até 2 linhas. */\n subtitle?: ReactNode;\n /** Padrão: right. */\n side?: DrawerSide;\n /** Padrão: full. */\n behavior?: DrawerBehavior;\n /**\n * Com overlay (padrão): a gaveta é modal, a página atrás fica bloqueada e o clique no overlay\n * fecha. Sem overlay (`false`): a página continua rolando e clicável, e só o X e o Esc fecham.\n */\n modal?: boolean;\n /** Mostra o botão de voltar antes do título. */\n onBack?: () => void;\n backLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, alinhados à direita. */\n footer?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\nconst FOCAVEIS =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n// Base: Sidebar do PrimeReact no modo unstyled (o p-sidebar/p-drawer do PrimeNG da produção):\n// overlay, Esc, clique fora, bloqueio da rolagem da página, o foco no X ao abrir e a transição de\n// entrada e saída (300ms) são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. O Sidebar do Prime marca a gaveta como role=complementary e não\n// segura o foco; com overlay ela é modal, então o Cristal a marca como dialog (aria-modal),\n// mantém o Tab dentro dela e devolve o foco a quem a abriu. Sem overlay (modal={false}) ela é um\n// dialog não modal: a página continua usável, o Tab sai dela e o clique fora não fecha.\nexport function Drawer({\n visible,\n onHide,\n title,\n subtitle,\n side = 'right',\n behavior = 'full',\n modal = true,\n onBack,\n backLabel = 'Voltar',\n closeLabel = 'Fechar',\n footer,\n children,\n id,\n className,\n}: DrawerProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n const subtitleId = `${autoId}-subtitle`;\n const panelRef = useRef<HTMLDivElement>(null);\n const retorno = useRef<HTMLElement | null>(null);\n\n // Ao abrir, guarda quem tinha o foco; ao fechar, devolve.\n useEffect(() => {\n if (visible) {\n retorno.current = document.activeElement as HTMLElement | null;\n return;\n }\n retorno.current?.focus();\n retorno.current = null;\n }, [visible]);\n\n // Quem rola (o corpo no fixed, a gaveta toda no full) entra no Tab só quando rola, para a\n // rolagem pelo teclado. O Prime só monta o conteúdo depois de abrir: a ref de callback começa a\n // medir quando ele existe.\n const [rolagem, setRolagem] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!rolagem) return;\n const medir = () => setRolavel(rolagem.scrollHeight > rolagem.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(rolagem);\n [...rolagem.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [rolagem, children]);\n\n // Com overlay, o Tab e o Shift+Tab ciclam dentro da gaveta.\n const prenderFoco = (event: KeyboardEvent) => {\n if (!modal || event.key !== 'Tab' || !panelRef.current) return;\n const focaveis = [...panelRef.current.querySelectorAll<HTMLElement>(FOCAVEIS)];\n const primeiro = focaveis[0];\n const ultimo = focaveis[focaveis.length - 1];\n if (!primeiro || !ultimo) return;\n if (event.shiftKey && document.activeElement === primeiro) {\n event.preventDefault();\n ultimo.focus();\n } else if (!event.shiftKey && document.activeElement === ultimo) {\n event.preventDefault();\n primeiro.focus();\n }\n };\n\n const classes = ['cr-drawer', `cr-drawer--${side}`, `cr-drawer--${behavior}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Sidebar\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n position={side}\n modal={modal}\n blockScroll={modal}\n // Sem overlay, o Prime fecharia com qualquer clique na página: só o X e o Esc fecham.\n dismissable={modal}\n pt={{\n mask: {\n className: `cr-drawer__mask cr-drawer__mask--${side}${modal ? '' : ' cr-drawer__mask--sem-overlay'}`,\n },\n root: {\n className: classes,\n role: 'dialog',\n 'aria-modal': modal || undefined,\n 'aria-labelledby': titleId,\n 'aria-describedby': subtitle ? subtitleId : undefined,\n onKeyDown: prenderFoco,\n },\n // No unstyled o Prime não põe classes na transição: o Cristal dá as dele (Drawer.css).\n // O tipo do Prime exige o addEndListener do react-transition-group, que aqui não se usa.\n transition: {\n classNames: {\n enter: 'cr-drawer--enter',\n enterActive: 'cr-drawer--enter-active',\n exitActive: 'cr-drawer--exit-active',\n },\n } as SidebarPassThroughTransitionType,\n }}\n content={({ closeIconRef, hide }) => (\n <div\n ref={(element) => {\n panelRef.current = element;\n if (behavior === 'full') setRolagem(element);\n }}\n className=\"cr-drawer__panel\"\n tabIndex={behavior === 'full' && rolavel ? 0 : undefined}\n >\n <div className=\"cr-drawer__header\">\n <div className=\"cr-drawer__title-row\">\n {onBack && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<ArrowLeft />}\n aria-label={backLabel}\n onClick={onBack}\n />\n )}\n <h2 id={titleId} className=\"cr-drawer__title\">\n {title}\n </h2>\n </div>\n {subtitle && (\n <p id={subtitleId} className=\"cr-drawer__subtitle\">\n {subtitle}\n </p>\n )}\n </div>\n <div\n ref={behavior === 'fixed' ? setRolagem : undefined}\n className=\"cr-drawer__body\"\n tabIndex={behavior === 'fixed' && rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {footer && <div className=\"cr-drawer__footer\">{footer}</div>}\n <IconButton\n ref={closeIconRef as unknown as Ref<HTMLButtonElement>}\n className=\"cr-drawer__close\"\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n )}\n />\n );\n}\n","import { forwardRef, useId, type InputHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { InputText } from 'primereact/inputtext';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport './Input.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type InputVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type InputSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface InputProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'value' | 'children'\n> {\n variant?: InputVariant;\n size?: InputSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Valor do campo (controlado). */\n value?: string;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone ou botão depois do texto (Trailing Icon no Figma), por exemplo mostrar a senha. */\n trailingIcon?: ReactNode;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: InputText do PrimeReact no modo unstyled (o <input>, com o comportamento do Prime,\n// espelhando o pInputText do PrimeNG da produção). O rótulo, a caixa do campo, os ícones e a dica\n// são do Cristal, com as classes .cr-field reaproveitadas pelos outros campos (AutoComplete,\n// MultiSelect).\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n variant = 'outline',\n size = 'large',\n label,\n leadingIcon,\n trailingIcon,\n hint,\n error,\n id,\n required,\n disabled,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"cr-field__control\">\n {leadingIcon && (\n <span className=\"cr-field__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n <InputText\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <input> nela.\n ref={ref as unknown as Ref<HTMLInputElement>}\n id={inputId}\n className=\"cr-field__input\"\n required={required}\n disabled={disabled}\n invalid={Boolean(error)}\n aria-invalid={error ? true : undefined}\n aria-describedby={supportText ? hintId : undefined}\n {...props}\n />\n {trailingIcon && <span className=\"cr-field__icon\">{trailingIcon}</span>}\n </div>\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { CircleNotch } from '@phosphor-icons/react';\nimport './Menu.css';\n\n/** Density no Figma: Normal (itens de 37px) e Compacted (29px). */\nexport type MenuDensity = 'normal' | 'compact';\n\n/** Um item da lista (.Dropdown Item no Figma). */\nexport interface MenuItem {\n label: string;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Estado Selected do Figma: texto e ícone em brand, fundo selected/subtlest. */\n selected?: boolean;\n disabled?: boolean;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\nexport interface MenuProps {\n model: MenuItem[];\n density?: MenuDensity;\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Alinhamento do popup com o elemento que o abriu. */\n popupAlignment?: 'left' | 'right';\n /** Estado Loading do Figma: troca os itens pelo indicador de carregamento. */\n loading?: boolean;\n /** O que o leitor de tela anuncia no carregamento. */\n loadingLabel?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção). No Figma é o Dropdown List, usado nos menus do\n// Menubar; o visual vem do Menu.css. A ref expõe toggle/show/hide do Prime para abrir o popup.\nexport const Menu = forwardRef<MenuHandle, MenuProps>(function Menu(\n {\n model,\n density = 'normal',\n popup = false,\n popupAlignment = 'left',\n loading = false,\n loadingLabel = 'Carregando',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => primeRef.current?.toggle(event),\n show: (event) => primeRef.current?.show(event),\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const items: PrimeMenuItem[] = loading\n ? [\n {\n label: loadingLabel,\n disabled: true,\n template: () => (\n <div className=\"cr-menu__loading\">\n <CircleNotch className=\"cr-menu__spinner\" aria-hidden=\"true\" />\n </div>\n ),\n },\n ]\n : model.map((item) => ({\n id: item.id,\n label: item.label,\n icon: item.icon ? (\n <span className=\"cr-menu__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : undefined,\n disabled: item.disabled,\n command: item.command,\n url: item.url,\n target: item.target,\n className: [item.selected && 'cr-menu__item--selected', item.className]\n .filter(Boolean)\n .join(' '),\n data: { selected: item.selected },\n }));\n\n const classes = ['cr-menu', `cr-menu--${density}`, popup && 'cr-menu--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n // O nome acessível vai na lista (role=menu); o Prime lê `ariaLabel`, mas não o declara no tipo.\n menu: {\n className: 'cr-menu__list',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-busy': loading || undefined,\n },\n menuitem: (options) => {\n const item = (options as { context?: { item?: PrimeMenuItem } })?.context?.item;\n return {\n className: 'cr-menu__item',\n 'aria-current': item?.data?.selected ? 'true' : undefined,\n };\n },\n content: { className: 'cr-menu__content' },\n action: { className: 'cr-menu__action' },\n label: { className: 'cr-menu__label' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n model={items}\n popup={popup}\n popupAlignment={popupAlignment}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // O Menu do Prime lê o PrimeReactContext sem checar se ele existe: sem um PrimeReactProvider\n // na aplicação, o clique fora dá erro e o popup não fecha. Se a aplicação já tiver um, vale o\n // dela.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n});\n","import { useEffect, useId, type ReactNode, type RefObject } from 'react';\nimport { Tooltip as PrimeTooltip, type TooltipPassThroughOptions } from 'primereact/tooltip';\nimport './Tooltip.css';\n\n/** Type no Figma: Plain (rótulo curto, uma linha) e Rich (texto de até 300px, quebra linha). */\nexport type TooltipType = 'plain' | 'rich';\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TooltipProps {\n /** Elemento que mostra o tooltip: ref, elemento ou seletor CSS. */\n target: RefObject<HTMLElement | null> | HTMLElement | string;\n /** Texto do tooltip (Label no Plain, Text no Rich). */\n content: ReactNode;\n type?: TooltipType;\n /** Lado do alvo. O Prime inverte o lado se faltar espaço na tela. */\n position?: TooltipPosition;\n /** O que abre o tooltip; o padrão abre no hover e no foco do teclado. */\n event?: 'hover' | 'focus' | 'both';\n showDelay?: number;\n hideDelay?: number;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\nconst resolveTargets = (target: TooltipProps['target']): HTMLElement[] => {\n if (typeof target === 'string') return Array.from(document.querySelectorAll<HTMLElement>(target));\n if (target instanceof HTMLElement) return [target];\n return target.current ? [target.current] : [];\n};\n\n// Base: Tooltip do PrimeReact no modo unstyled (abrir/fechar, atraso, Esc e posicionamento com\n// troca de lado do Prime, espelhando o pTooltip do PrimeNG da produção). O visual vem do\n// Tooltip.css; o Figma não tem seta. Dois ajustes de acessibilidade: o Prime marca o tooltip\n// aberto com aria-hidden=\"true\", e não liga o alvo ao texto; aqui o alvo ganha aria-describedby.\nexport function Tooltip({\n target,\n content,\n type = 'plain',\n position = 'bottom',\n event = 'both',\n showDelay,\n hideDelay,\n disabled,\n id,\n className,\n}: TooltipProps) {\n const autoId = useId();\n const tooltipId = id ?? autoId;\n\n useEffect(() => {\n const elements = resolveTargets(target);\n elements.forEach((element) => element.setAttribute('aria-describedby', tooltipId));\n return () => elements.forEach((element) => element.removeAttribute('aria-describedby'));\n }, [target, tooltipId]);\n\n const classes = ['cr-tooltip', `cr-tooltip--${type}`, className].filter(Boolean).join(' ');\n\n const pt: TooltipPassThroughOptions = {\n root: (options) => {\n const side = (options as { state?: { position?: string } })?.state?.position ?? position;\n return { className: `${classes} cr-tooltip--${side}`, 'aria-hidden': false };\n },\n arrow: { className: 'cr-tooltip__arrow' },\n text: { className: 'cr-tooltip__text' },\n };\n\n return (\n <PrimeTooltip\n unstyled\n id={tooltipId}\n target={target as never}\n position={position}\n event={event}\n showDelay={showDelay}\n hideDelay={hideDelay}\n disabled={disabled}\n pt={pt}\n >\n {content}\n </PrimeTooltip>\n );\n}\n","import {\n forwardRef,\n useId,\n useRef,\n useState,\n type FormEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Menubar as PrimeMenubar, type MenubarPassThroughOptions } from 'primereact/menubar';\nimport { Button as PrimeButton } from 'primereact/button';\nimport { InputText } from 'primereact/inputtext';\nimport { Avatar as PrimeAvatar } from 'primereact/avatar';\nimport { List, MagnifyingGlass } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport { Menu, type MenuHandle, type MenuItem } from '../Menu';\nimport { Tooltip } from '../Tooltip';\nimport logoSimbolo from './assets/vector-logo-simbolo.svg';\nimport logoTexto from './assets/vector-logo-texto.svg';\nimport './Menubar.css';\n\n/** Um botão de ferramenta (.Menubar Tools Button no Figma). */\nexport interface MenubarTool {\n /** Nome do botão: vira o aria-label e o texto do tooltip. */\n label: string;\n /** Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Contador sobre o ícone (Show Badge no Figma). */\n badge?: ReactNode;\n /** Como o leitor de tela lê o contador (padrão: o próprio valor). */\n badgeLabel?: string;\n /** Itens do menu que o botão abre (Dropdown List no Figma). */\n menu?: MenuItem[];\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Continua visível no tablet (768px), como o sino no Figma. */\n showOnTablet?: boolean;\n}\n\n/** Usuário logado (.Menubar Profile no Figma). */\nexport interface MenubarUser {\n name: string;\n /** Perfil de acesso, abaixo do nome. */\n role?: string;\n /** URL da foto. Sem foto, o avatar mostra a inicial do nome (Type=No Image). */\n avatar?: string;\n}\n\nexport interface MenubarProps {\n /** Logo à esquerda (.Nav Logo no Figma); o padrão é o logo da Vector. */\n logo?: ReactNode;\n /** Menu principal aberto: deixa o botão de menu no estado Active. */\n menuOpen?: boolean;\n /** Clique no botão de menu (abre o Menu Principal). */\n onMenuToggle?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Nome acessível do botão de menu. */\n menuLabel?: string;\n /** Mostra a busca no centro (só no desktop). */\n showSearch?: boolean;\n searchPlaceholder?: string;\n /** Valor da busca (controlado). Sem ele, a busca guarda o próprio valor. */\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n /** Envio da busca (Enter ou lupa). */\n onSearch?: (value: string) => void;\n /** Nome acessível da lupa. */\n searchButtonLabel?: string;\n /** Botões de ferramenta à direita (.Nav Tools no Figma). */\n tools?: MenubarTool[];\n user?: MenubarUser;\n /** Itens do menu do perfil. Sem eles, o perfil não é clicável. */\n userMenu?: MenuItem[];\n id?: string;\n className?: string;\n}\n\nfunction VectorLogo() {\n return (\n <span className=\"cr-menubar__logo\" role=\"img\" aria-label=\"Vector\">\n <img className=\"cr-menubar__logo-texto\" src={logoTexto} alt=\"\" />\n <img className=\"cr-menubar__logo-simbolo\" src={logoSimbolo} alt=\"\" />\n </span>\n );\n}\n\nfunction ToolButton({ tool }: { tool: MenubarTool }) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(tool.menu?.length);\n const hasBadge = tool.badge !== undefined && tool.badge !== null;\n const name = hasBadge ? `${tool.label}, ${tool.badgeLabel ?? String(tool.badge)}` : tool.label;\n\n const classes = [\n 'cr-menubar__tool',\n tool.showOnTablet && 'cr-menubar__tool--tablet',\n open && 'cr-menubar__tool--active',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={buttonRef as unknown as Ref<PrimeButton>}\n type=\"button\"\n className={classes}\n aria-label={name}\n aria-haspopup={hasMenu ? 'menu' : undefined}\n aria-expanded={hasMenu ? open : undefined}\n aria-controls={hasMenu && open ? menuId : undefined}\n onClick={(event) => {\n tool.onClick?.(event);\n if (hasMenu) menuRef.current?.toggle(event);\n }}\n >\n <span className=\"cr-menubar__tool-icon\" aria-hidden=\"true\">\n {tool.icon}\n </span>\n {hasBadge && (\n <Badge className=\"cr-menubar__badge\" aria-hidden=\"true\">\n {tool.badge}\n </Badge>\n )}\n </PrimeButton>\n {/* No Figma o tooltip aparece no Hover e some com o menu aberto (Active). */}\n <Tooltip target={buttonRef} content={tool.label} disabled={open} />\n {hasMenu && (\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={tool.menu ?? []}\n aria-label={tool.label}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n )}\n </>\n );\n}\n\nfunction Profile({ user, menu }: { user: MenubarUser; menu?: MenuItem[] }) {\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(menu?.length);\n\n const content = (\n <>\n <span className=\"cr-menubar__profile-text\">\n <span className=\"cr-menubar__profile-name\">{user.name}</span>\n {user.role && <span className=\"cr-menubar__profile-role\">{user.role}</span>}\n </span>\n {/* O nome já está no texto ao lado: o avatar é só visual. */}\n <PrimeAvatar\n unstyled\n aria-hidden=\"true\"\n className={`cr-menubar__avatar${user.avatar ? '' : ' cr-menubar__avatar--initial'}`}\n image={user.avatar}\n imageAlt=\"\"\n label={user.avatar ? undefined : user.name.trim().charAt(0).toUpperCase()}\n shape=\"circle\"\n pt={{ image: { className: 'cr-menubar__avatar-image' } }}\n />\n </>\n );\n\n if (!hasMenu) return <div className=\"cr-menubar__profile\">{content}</div>;\n\n return (\n <>\n <PrimeButton\n unstyled\n type=\"button\"\n className=\"cr-menubar__profile cr-menubar__profile--button\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n onClick={(event) => menuRef.current?.toggle(event)}\n >\n {content}\n </PrimeButton>\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={menu ?? []}\n aria-label={user.name}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n </>\n );\n}\n\n// Base: Menubar do PrimeReact no modo unstyled, espelhando o p-menubar do PrimeNG da produção. A\n// navegação do Vector fica no Menu Principal (aberto pelo botão de menu), então o Menubar não\n// tem itens próprios: usa só as áreas start e end do Prime. Os botões são Buttons do Prime, a\n// busca é um InputText, o avatar é o Avatar e os menus e tooltips são o Menu e o Tooltip do\n// Cristal. O layout responsivo (1360, 768 e 360px no Figma) vem de container queries no\n// Menubar.css, pela largura do próprio Menubar.\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(function Menubar(\n {\n logo,\n menuOpen = false,\n onMenuToggle,\n menuLabel = 'Menu principal',\n showSearch = true,\n searchPlaceholder = 'Buscar no Vector',\n searchValue,\n onSearchChange,\n onSearch,\n searchButtonLabel = 'Buscar',\n tools = [],\n user,\n userMenu,\n id,\n className,\n },\n ref,\n) {\n const [innerSearch, setInnerSearch] = useState('');\n const search = searchValue ?? innerSearch;\n\n const submitSearch = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n onSearch?.(search);\n };\n\n const classes = ['cr-menubar', !showSearch && 'cr-menubar--no-search', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenubarPassThroughOptions = {\n // A área start some do layout (display: contents): o início e a busca viram colunas do grid.\n start: { className: 'cr-menubar__start' },\n end: { className: 'cr-menubar__end' },\n // Sem itens, a lista do Prime (role=menubar) ficaria vazia e focável: fica escondida.\n menu: { hidden: true },\n };\n\n const start = (\n <>\n <div className=\"cr-menubar__init\">\n <PrimeButton\n unstyled\n type=\"button\"\n className={`cr-menubar__menu-button${menuOpen ? ' cr-menubar__menu-button--active' : ''}`}\n aria-label={menuLabel}\n aria-expanded={menuOpen}\n onClick={onMenuToggle}\n >\n <span className=\"cr-menubar__menu-icon\" aria-hidden=\"true\">\n <List />\n </span>\n </PrimeButton>\n {logo ?? <VectorLogo />}\n </div>\n {showSearch && (\n <form role=\"search\" className=\"cr-menubar__search\" onSubmit={submitSearch}>\n <InputText\n unstyled\n className=\"cr-menubar__search-input\"\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n value={search}\n onChange={(event) => {\n setInnerSearch(event.target.value);\n onSearchChange?.(event.target.value);\n }}\n />\n <PrimeButton\n unstyled\n type=\"submit\"\n className=\"cr-menubar__search-button\"\n aria-label={searchButtonLabel}\n >\n <span className=\"cr-menubar__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n </PrimeButton>\n </form>\n )}\n </>\n );\n\n const end =\n tools.length > 0 || user ? (\n <>\n {tools.length > 0 && (\n <div className=\"cr-menubar__tools\">\n {tools.map((tool) => (\n <ToolButton key={tool.label} tool={tool} />\n ))}\n </div>\n )}\n {user && <Profile user={user} menu={userMenu} />}\n </>\n ) : null;\n\n return (\n <div ref={ref} id={id} className={classes}>\n <PrimeMenubar\n unstyled\n className=\"cr-menubar__bar\"\n model={[]}\n start={start}\n end={end}\n pt={pt}\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Tag as PrimeTag } from 'primereact/tag';\nimport './Tag.css';\n\n/** Type no Figma. */\nexport type TagVariant =\n 'default' | 'success' | 'warning' | 'danger' | 'info' | 'purple' | 'gray' | 'inverse' | 'outline';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type TagSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: TagVariant;\n size?: TagSize;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Texto da tag (Label no Figma). */\n children: ReactNode;\n}\n\n// Base: Tag do PrimeReact no modo unstyled; o visual vem todo do Tag.css. Rótulo de status\n// estático (sem interação); para contador ou bolinha de notificação, use o Badge.\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\n { variant = 'default', size = 'small', icon, className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeTag>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-tag', `cr-tag--${variant}`, `cr-tag--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeTag\n unstyled\n ref={primeRef}\n className={classes}\n // Como função, o ícone é renderizado pelo Cristal (o Prime só repassa props a funções).\n icon={\n icon\n ? () => (\n <span className=\"cr-tag__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )\n : undefined\n }\n value={children}\n {...props}\n />\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { DribbbleLogo } from '@phosphor-icons/react';\nimport { Tag } from '../Tag';\nimport './MenuPrincipal.css';\n\n/** Um produto do menu (.Menu Principal / Item no Figma). */\nexport interface MenuPrincipalItem {\n /** Nome do produto (Item Label no Figma). */\n label: string;\n /** Texto de apoio abaixo do nome, até 2 linhas. */\n description?: string;\n /** Ícone no círculo à esquerda. Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Texto da tag no canto (Show Tag no Figma, onde é \"Experimente\"). */\n tag?: string;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\n/** Um grupo de produtos com título (Product Group no Figma). */\nexport interface MenuPrincipalGroup {\n /** Título do grupo, acima dos itens. */\n label: string;\n items: MenuPrincipalItem[];\n id?: string;\n}\n\nexport type MenuPrincipalEntry = MenuPrincipalItem | MenuPrincipalGroup;\n\nexport interface MenuPrincipalProps {\n /** Itens soltos e grupos, na ordem; o divisor tracejado entra antes e depois de cada grupo. */\n model: MenuPrincipalEntry[];\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Nome acessível do menu. */\n 'aria-label'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuPrincipalHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\nconst isGroup = (entry: MenuPrincipalEntry): entry is MenuPrincipalGroup => 'items' in entry;\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção), como o Menu do Cristal; os grupos são os\n// submenus do Prime e os divisores, os separadores. No Figma é o Menu Principal (página Menu\n// Suspenso), aberto pelo botão de menu do Menubar. O item é um template do Prime, com o ícone,\n// o nome, a descrição e a tag; o visual vem do MenuPrincipal.css.\nexport const MenuPrincipal = forwardRef<MenuPrincipalHandle, MenuPrincipalProps>(\n function MenuPrincipal(\n {\n model,\n popup = false,\n 'aria-label': ariaLabel = 'Menu principal',\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => primeRef.current?.toggle(event),\n show: (event) => primeRef.current?.show(event),\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const toPrime = (item: MenuPrincipalItem): PrimeMenuItem => ({\n id: item.id,\n // Sem label no Prime: ele viraria o aria-label do item, só com parte do texto visível. O\n // nome vem do conteúdo: o nome, a descrição e a tag. Os espaços entre eles não aparecem\n // (estão em flex), mas separam as palavras no nome (\"Início Tela inicial\", não colado).\n command: item.command,\n url: item.url,\n target: item.target,\n className: item.className,\n // O <a> leva o data-pc-section do Prime: o Enter do teclado clica nele (e segue o link).\n template: () => (\n <a\n className=\"cr-menu-principal__action\"\n data-pc-section=\"action\"\n href={item.url ?? '#'}\n target={item.target}\n tabIndex={-1}\n >\n <span className=\"cr-menu-principal__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n <span className=\"cr-menu-principal__text\">\n <span className=\"cr-menu-principal__label\">{item.label}</span>{' '}\n {item.description && (\n <span className=\"cr-menu-principal__description\">{item.description}</span>\n )}\n </span>{' '}\n {item.tag && (\n <Tag className=\"cr-menu-principal__tag\" variant=\"warning\" icon={<DribbbleLogo />}>\n {item.tag}\n </Tag>\n )}\n </a>\n ),\n });\n\n // Divisor antes e depois de cada grupo (entre dois itens soltos, não).\n const items: PrimeMenuItem[] = [];\n let anterior: MenuPrincipalEntry | undefined;\n model.forEach((entry) => {\n if (anterior && (isGroup(entry) || isGroup(anterior))) items.push({ separator: true });\n items.push(\n isGroup(entry)\n ? { id: entry.id, label: entry.label, items: entry.items.map(toPrime) }\n : toPrime(entry),\n );\n anterior = entry;\n });\n\n const classes = ['cr-menu-principal', popup && 'cr-menu-principal--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n menu: { className: 'cr-menu-principal__list', 'aria-label': ariaLabel },\n submenuHeader: { className: 'cr-menu-principal__group' },\n separator: { className: 'cr-menu-principal__separator' },\n menuitem: { className: 'cr-menu-principal__item' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n model={items}\n popup={popup}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // Como no Menu: sem um PrimeReactProvider na aplicação, o clique fora dá erro no Prime.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n },\n);\n","import { useEffect, useId, useState, type ReactNode, type Ref } from 'react';\nimport { Dialog } from 'primereact/dialog';\nimport { Question, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Modal.css';\n\n/**\n * Size no Figma: Small (520px), Medium (768px) e Large (1200 x 720px; abaixo de 768px de tela\n * vira tela cheia, como o Responsive=360 do Figma).\n */\nexport type ModalSize = 'small' | 'medium' | 'large';\n\nexport interface ModalProps {\n visible: boolean;\n /** Pedido para fechar (X ou Esc). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível do modal. */\n title: string;\n /** Padrão: large. */\n size?: ModalSize;\n /** Mostra o botão de ajuda (QuestionMark) ao lado do X, no small e no medium. */\n onHelp?: () => void;\n helpLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, à direita. */\n footer?: ReactNode;\n /** Conteúdo do rodapé à esquerda (ex.: o botão secundário dos Two/Tree Buttons do Figma). */\n footerStart?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: Dialog do PrimeReact no modo unstyled (o p-dialog do PrimeNG da produção): overlay,\n// role=dialog com aria-modal, Esc, foco preso no modal e devolvido a quem o abriu, e o bloqueio\n// da rolagem da página são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. Quando o corpo rola, o rodapé ganha a sombra do Figma (\"Shadow (Up\n// content scrollable)\").\nexport function Modal({\n visible,\n onHide,\n title,\n size = 'large',\n onHelp,\n helpLabel = 'Ajuda',\n closeLabel = 'Fechar',\n footer,\n footerStart,\n children,\n id,\n className,\n}: ModalProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n // O Prime só monta o conteúdo depois de abrir: a ref de callback começa a medir quando o corpo\n // existe. Quando ele rola (conteúdo maior que a altura), o rodapé ganha sombra.\n const [body, setBody] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!body) return;\n const medir = () => setRolavel(body.scrollHeight > body.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(body);\n [...body.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [body, children]);\n\n const classes = ['cr-modal', `cr-modal--${size}`, rolavel && 'cr-modal--scrollable', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Dialog\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n draggable={false}\n resizable={false}\n blockScroll\n pt={{\n mask: { className: 'cr-modal__mask' },\n root: {\n className: classes,\n 'aria-labelledby': titleId,\n 'aria-describedby': undefined,\n },\n }}\n content={({ hide, closeRef }) => (\n <>\n <div className=\"cr-modal__header\">\n <h2 id={titleId} className=\"cr-modal__title\">\n {title}\n </h2>\n <div className=\"cr-modal__tools\">\n {onHelp && size !== 'large' && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<Question />}\n aria-label={helpLabel}\n onClick={onHelp}\n />\n )}\n <IconButton\n ref={closeRef as unknown as Ref<HTMLButtonElement>}\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n </div>\n <div\n ref={setBody}\n className=\"cr-modal__body\"\n // Quando rola, o corpo entra na ordem do Tab para a rolagem pelo teclado (o axe exige\n // que uma área com rolagem seja focável).\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {(footer || footerStart) && (\n <div className=\"cr-modal__footer\">\n <div className=\"cr-modal__footer-start\">{footerStart}</div>\n <div className=\"cr-modal__footer-end\">{footer}</div>\n </div>\n )}\n </>\n )}\n />\n );\n}\n","import { forwardRef, useId, type Ref } from 'react';\nimport {\n MultiSelect as PrimeMultiSelect,\n type MultiSelectPassThroughOptions,\n} from 'primereact/multiselect';\nimport type { ChipRemoveEvent } from 'primereact/chip';\nimport { CaretDown, Check, Info, MagnifyingGlass, WarningCircle } from '@phosphor-icons/react';\nimport { Chip } from '../Chip';\nimport '../Input/Input.css';\nimport './MultiSelect.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type MultiSelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type MultiSelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n/** Density da lista no Figma: itens de 40px (normal) ou 32px (compact). */\nexport type MultiSelectDensity = 'normal' | 'compact';\n\nexport interface MultiSelectProps {\n variant?: MultiSelectVariant;\n size?: MultiSelectSize;\n density?: MultiSelectDensity;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valores selecionados (controlado). */\n value?: unknown[];\n onChange?: (value: unknown[]) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Mostra a busca no topo da lista (Search Filter no Figma). */\n filter?: boolean;\n filterPlaceholder?: string;\n /**\n * Quantos chips aparecem no campo; acima disso, um chip só com o resumo (Chip Group\n * \"4 itens selecionados\" no Figma), cujo X limpa a seleção.\n */\n maxChips?: number;\n /** Texto do resumo; `{0}` vira a quantidade. */\n selectedItemsLabel?: string;\n /** Nome acessível do checkbox de selecionar todos. */\n selectAllLabel?: string;\n /** Texto da lista quando a busca não encontra nada. */\n emptyFilterMessage?: string;\n /** Nome acessível do X dos chips. */\n removeLabel?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: MultiSelect do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção, filtro e\n// \"selecionar todos\" do Prime, espelhando o p-multiSelect do PrimeNG da produção). O rótulo, a\n// caixa e a dica reaproveitam o campo do Input (.cr-field); os selecionados viram Chips do Cristal\n// pelo selectedItemTemplate, porque o Prime mostra o resumo acima do limite só como texto, e o\n// Figma o mostra como chip. A ref vai para o <input> (combobox) do Prime, que recebe o foco.\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(function MultiSelect(\n {\n variant = 'outline',\n size = 'large',\n density = 'normal',\n label,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecionar opção',\n filter = false,\n filterPlaceholder = 'Pesquisar',\n maxChips = 3,\n selectedItemsLabel = '{0} itens selecionados',\n removeLabel = 'Remover',\n selectAllLabel = 'Selecionar todos',\n emptyFilterMessage = 'Nenhum resultado encontrado',\n hint,\n error,\n required,\n disabled,\n id,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n const selected = value ?? [];\n const overflow = selected.length > maxChips;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-multiselect',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const valueOf = (option: unknown) =>\n optionValue ? (option as Record<string, unknown>)[optionValue] : option;\n const labelOf = (item: unknown) => {\n const option = options.find((o) => valueOf(o) === item) ?? item;\n const text = (option as Record<string, unknown> | null)?.[optionLabel];\n return String(text ?? item);\n };\n\n // O X do chip não pode abrir/fechar a lista (o clique subiria até o campo do Prime).\n const remove = (event: ChipRemoveEvent, next: unknown[]) => {\n event.originalEvent.stopPropagation();\n onChange?.(next);\n return false;\n };\n\n const renderSelected = (item?: unknown) => {\n if (item === undefined) {\n return <span className=\"cr-multiselect__placeholder\">{placeholder}</span>;\n }\n if (overflow) {\n if (selected.indexOf(item) !== 0) return null;\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={selectedItemsLabel.replace('{0}', String(selected.length))}\n disabled={disabled}\n onRemove={disabled ? undefined : (event) => remove(event, [])}\n removeLabel={removeLabel}\n />\n );\n }\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={labelOf(item)}\n disabled={disabled}\n onRemove={\n disabled\n ? undefined\n : (event) =>\n remove(\n event,\n selected.filter((v) => v !== item),\n )\n }\n removeLabel={`${removeLabel} ${labelOf(item)}`}\n />\n );\n };\n\n const checkbox = {\n root: { className: 'cr-multiselect__checkbox' },\n box: { className: 'cr-multiselect__checkbox-box' },\n input: { className: 'cr-multiselect__checkbox-input' },\n };\n\n const pt: MultiSelectPassThroughOptions = {\n // Com a lista aberta o foco vai para a busca (no body), fora da caixa: o estado Focused do\n // Figma vem do estado do Prime.\n root: (options) => {\n const open = (options as { state?: { overlayVisible?: boolean } })?.state?.overlayVisible;\n return {\n className: `cr-field__control cr-multiselect__control${open ? ' cr-multiselect__control--open' : ''}`,\n };\n },\n hiddenInputWrapper: { className: 'cr-multiselect__hidden' },\n input: {\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n 'aria-required': required || undefined,\n },\n labelContainer: { className: 'cr-multiselect__value' },\n label: { className: 'cr-multiselect__chips' },\n trigger: { className: 'cr-field__icon cr-multiselect__trigger' },\n panel: { className: `cr-multiselect__panel cr-multiselect__panel--${density}` },\n header: { className: 'cr-multiselect__header' },\n headerCheckboxContainer: { className: 'cr-multiselect__select-all' },\n // O Prime repete role=checkbox na <div> em volta do <input>: o leitor de tela veria dois.\n headerCheckbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined },\n input: { ...checkbox.input, 'aria-label': selectAllLabel },\n },\n filterContainer: { className: 'cr-multiselect__search' },\n // O filtro é um InputText do Prime, que lê o pass-through da raiz (a tipagem do Prime diverge).\n filterInput: {\n root: { className: 'cr-multiselect__search-input', 'aria-label': filterPlaceholder },\n } as never,\n closeButton: { className: 'cr-multiselect__close' },\n wrapper: { className: 'cr-multiselect__wrapper' },\n list: { className: 'cr-multiselect__list' },\n item: (options) => {\n const context = (options as { context?: { focusedIndex?: number; index?: number } })?.context;\n const focused = context !== undefined && context.focusedIndex === context.index;\n return {\n className: `cr-multiselect__item${focused ? ' cr-multiselect__item--focused' : ''}`,\n };\n },\n checkboxContainer: { className: 'cr-multiselect__item-checkbox' },\n // O item (role=option) já diz se está selecionado; o checkbox é só visual para o leitor de tela.\n // O item (role=option) já diz se está selecionado. O checkbox do Prime fica só visual: inert\n // tira o <input> do foco e do leitor de tela (tabindex=-1 e aria-hidden não bastam dentro de\n // um option), e o clique cai no item.\n checkbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined, inert: true },\n },\n emptyMessage: { className: 'cr-multiselect__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeMultiSelect\n unstyled\n inputId={inputId}\n inputRef={ref as Ref<HTMLSelectElement>}\n value={selected}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value as unknown[])}\n disabled={disabled}\n invalid={Boolean(error)}\n placeholder={placeholder}\n selectedItemTemplate={renderSelected}\n filter={filter}\n filterPlaceholder={filterPlaceholder}\n // 7 itens visíveis antes da rolagem, como no Figma (40px no normal, 32px no compact).\n scrollHeight={density === 'compact' ? '224px' : '280px'}\n emptyFilterMessage={emptyFilterMessage}\n filterIcon={\n <span className=\"cr-multiselect__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n }\n dropdownIcon={<CaretDown aria-hidden=\"true\" />}\n checkboxIcon={<Check aria-hidden=\"true\" />}\n itemCheckboxIcon={<Check aria-hidden=\"true\" />}\n pt={pt}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Panel as PrimePanel } from 'primereact/panel';\nimport './Panel.css';\n\n// O onToggle nativo da <div> colide com o do Panel do Prime, que o Figma não usa.\nexport type PanelProps = Omit<HTMLAttributes<HTMLDivElement>, 'onToggle'>;\n\n// Base: Panel do PrimeReact no modo unstyled (o p-panel do PrimeNG da produção). No Figma o Panel é\n// só o contêiner da seção da página, com o conteúdo num slot e sem cabeçalho: o Cristal não repassa\n// header, toggleable nem footer do Prime, e o conteúdo vai em children. Sem cabeçalho, o Prime\n// deixaria a região de conteúdo apontando para um título que não existe: o Cristal tira o role e o\n// aria-labelledby (para nomear o Panel como região, passe role=\"region\" e aria-label).\nexport const Panel = forwardRef<HTMLDivElement, PanelProps>(function Panel(\n { className, style, children, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimePanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n return (\n <PrimePanel\n unstyled\n ref={primeRef}\n // No unstyled, className e style do Panel do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: ['cr-panel', className].filter(Boolean).join(' '), style },\n toggleableContent: {\n className: 'cr-panel__body',\n role: undefined,\n 'aria-labelledby': undefined,\n },\n content: { className: 'cr-panel__content' },\n }}\n {...props}\n >\n {children}\n </PrimePanel>\n );\n});\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { RadioButton, type RadioButtonChangeEvent } from 'primereact/radiobutton';\nimport './Radio.css';\n\n/** Label Size no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type RadioLabelSize = 'default' | 'full';\n\nexport interface RadioProps {\n /** Texto ao lado do controle (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: default. */\n labelSize?: RadioLabelSize;\n checked?: boolean;\n /** Valor da opção, devolvido no `onChange`. */\n value?: unknown;\n /** Nome do grupo: radios com o mesmo `name` se excluem e navegam pelas setas. */\n name?: string;\n onChange?: (event: RadioButtonChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: RadioButton do PrimeReact no modo unstyled (o p-radioButton do PrimeNG da produção), com\n// o <input type=\"radio\"> nativo por cima do círculo: o grupo pelo `name` e as setas do teclado são\n// do navegador. O rótulo é um <label> ligado ao input. A ref entrega o <input>.\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n label,\n showLabel = true,\n labelSize = 'default',\n checked = false,\n value,\n name,\n onChange,\n disabled,\n required,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-radio',\n `cr-radio--label-${labelSize}`,\n disabled && 'cr-radio--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <RadioButton\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n value={value}\n name={name}\n onChange={onChange}\n disabled={disabled}\n required={required}\n pt={{\n root: { className: 'cr-radio__control' },\n input: { className: 'cr-radio__input' },\n box: { className: 'cr-radio__box' },\n icon: { className: 'cr-radio__icon' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-radio__label${showLabel ? '' : ' cr-radio__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type UIEvent,\n} from 'react';\nimport { ScrollPanel as PrimeScrollPanel } from 'primereact/scrollpanel';\nimport './ScrollPanel.css';\n\nexport interface ScrollPanelProps {\n children?: ReactNode;\n /** O que a área mostra, para o leitor de tela (ex.: \"Histórico da carga\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n /** Dê uma altura (ou max-height) para a área rolar. */\n style?: CSSProperties;\n id?: string;\n className?: string;\n}\n\nconst porcentagem = (posicao: number, total: number, visivel: number) =>\n total > visivel ? Math.round((posicao / (total - visivel)) * 100) : 0;\n\n// Base: ScrollPanel do PrimeReact no modo unstyled (o p-scrollPanel do PrimeNG da produção): o\n// Prime esconde a barra nativa e desenha as dele, que acompanham a rolagem e podem ser arrastadas.\n// Visual da Scrollbar do Figma: 8px, polegar fill/neutral/subtle, trilho transparente. O Prime\n// deixa as barras apontando (aria-controls) para um id que o conteúdo não tem, com os valores\n// trocados e em pixels, e o conteúdo que rola fora do Tab: o Cristal dá o foco ao conteúdo (que\n// rola pelo teclado como qualquer área nativa) e deixa as barras só para o mouse, com os valores\n// em porcentagem. A ref entrega a raiz.\nexport const ScrollPanel = forwardRef<HTMLDivElement, ScrollPanelProps>(function ScrollPanel(\n { children, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, style, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeScrollPanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n const contentId = `${useId()}-content`;\n const [posicao, setPosicao] = useState({ x: 0, y: 0 });\n\n const aoRolar = (event: UIEvent<HTMLDivElement>) => {\n const el = event.currentTarget;\n setPosicao({\n x: porcentagem(el.scrollLeft, el.scrollWidth, el.clientWidth),\n y: porcentagem(el.scrollTop, el.scrollHeight, el.clientHeight),\n });\n };\n\n const barra = (orientacao: 'horizontal' | 'vertical', valor: number) => ({\n className: `cr-scrollpanel__bar cr-scrollpanel__bar--${orientacao}`,\n tabIndex: -1,\n 'aria-controls': contentId,\n 'aria-valuenow': valor,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n });\n\n // No unstyled, className e style do ScrollPanel do Prime não chegam ao elemento; vão pelo pt.\n // O Prime lê as barras como `barx` e `bary`, mas a tipagem dele as chama de barX e barY: o objeto\n // fica numa constante para o TypeScript aceitar as chaves que o Prime de fato usa.\n const pt = {\n root: { className: ['cr-scrollpanel', className].filter(Boolean).join(' '), style },\n wrapper: { className: 'cr-scrollpanel__wrapper' },\n content: {\n id: contentId,\n className: 'cr-scrollpanel__content',\n tabIndex: 0,\n role: 'region',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onScroll: aoRolar,\n },\n barx: barra('horizontal', posicao.x),\n bary: barra('vertical', posicao.y),\n };\n\n return (\n <PrimeScrollPanel unstyled ref={primeRef} id={id} pt={pt}>\n {children}\n </PrimeScrollPanel>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type KeyboardEvent, type ReactNode } from 'react';\nimport { SelectButton } from 'primereact/selectbutton';\nimport './SegmentControl.css';\n\n/**\n * No Figma: Primary é o Header Segment Control (pílula em fill/brand/subtlest) e Secondary é o\n * Segment Control (cinza, com ícones).\n */\nexport type SegmentControlVariant = 'primary' | 'secondary';\n\nexport interface SegmentControlOption {\n label: string;\n value: string | number;\n /** Ícone de 16px antes do texto (o Secondary do Figma usa). */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentControlProps {\n options: SegmentControlOption[];\n /** Valor do segmento ativo (controlado). */\n value?: string | number;\n onChange?: (value: string | number) => void;\n variant?: SegmentControlVariant;\n /** O que o grupo controla, para o leitor de tela (ex.: \"Visualização\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\n// Base: SelectButton do PrimeReact no modo unstyled (o p-selectButton do PrimeNG da produção):\n// grupo de botões com aria-pressed e as setas do teclado do Prime; o Cristal soma o Enter à barra\n// de espaço. Sempre há um segmento ativo (allowEmpty desligado). O visual vem do\n// SegmentControl.css. A ref entrega o grupo.\nexport const SegmentControl = forwardRef<HTMLDivElement, SegmentControlProps>(\n function SegmentControl(\n {\n options,\n value,\n onChange,\n variant = 'primary',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n disabled,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<SelectButton>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-segment', `cr-segment--${variant}`, className].filter(Boolean).join(' ');\n\n return (\n <SelectButton\n unstyled\n ref={primeRef}\n id={id}\n options={options}\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n value={value}\n onChange={(event) => {\n if (event.value != null) onChange?.(event.value as string | number);\n }}\n allowEmpty={false}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n itemTemplate={(option: SegmentControlOption) => (\n <>\n {option.icon && (\n <span className=\"cr-segment__icon\" aria-hidden=\"true\">\n {option.icon}\n </span>\n )}\n <span className=\"cr-segment__label\">{option.label}</span>\n </>\n )}\n pt={{\n root: { className: classes },\n button: {\n className: 'cr-segment__item',\n // O Prime só ativa com a barra de espaço; um role=button responde também ao Enter.\n onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') event.currentTarget.click();\n },\n },\n }}\n />\n );\n },\n);\n","import { forwardRef, useCallback, useId, useState, type Ref } from 'react';\nimport { Dropdown, type DropdownPassThroughOptions } from 'primereact/dropdown';\nimport { CaretDown, CaretUp, Info, WarningCircle } from '@phosphor-icons/react';\nimport '../Input/Input.css';\nimport './Select.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type SelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type SelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface SelectProps {\n variant?: SelectVariant;\n size?: SelectSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valor selecionado (controlado). */\n value?: unknown;\n onChange?: (value: unknown) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n /** Vai no campo (combobox). */\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: Dropdown do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção e posição da\n// lista do Prime, espelhando o p-dropdown do PrimeNG da produção). O rótulo, a caixa e a dica\n// reaproveitam o campo do Input (.cr-field) e a lista segue a Dropdown List do Menu. O Dropdown do\n// Prime não marca o campo como combobox: o Cristal completa (role, aria-expanded e aria-controls).\n// Pelo teclado, o Prime leva o foco para o item (role=option), que o leitor de tela anuncia. A\n// ref vai para o campo, que recebe o foco.\nexport const Select = forwardRef<HTMLInputElement, SelectProps>(function Select(\n {\n variant = 'outline',\n size = 'large',\n label,\n 'aria-label': ariaLabel,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecione uma opção',\n hint,\n error,\n required,\n disabled,\n id,\n name,\n className,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const listId = `${inputId}-list`;\n const supportText = error ?? hint;\n const [open, setOpen] = useState(false);\n\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n input?.setAttribute('role', 'combobox');\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-select',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const pt: DropdownPassThroughOptions = {\n root: {\n className: `cr-field__control cr-select__control${open ? ' cr-select__control--open' : ''}`,\n // O Prime aponta para um item mesmo sem destaque (dropdownItem_-1); o foco vai no item.\n 'aria-activedescendant': undefined,\n },\n // O <select> escondido do Prime só existe para formulários: fora da árvore de acessibilidade.\n select: { 'aria-hidden': true },\n hiddenSelectedMessage: { className: 'cr-select__hidden' },\n // O Prime usa a mesma chave no texto do campo e no combobox escondido.\n input: { className: 'cr-select__value' },\n trigger: { className: 'cr-field__icon cr-select__trigger', 'aria-hidden': true },\n panel: { className: 'cr-select__panel' },\n wrapper: { className: 'cr-select__wrapper' },\n list: { className: 'cr-select__list', id: listId },\n item: { className: 'cr-select__item' },\n emptyMessage: { className: 'cr-select__item cr-select__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <Dropdown\n unstyled\n inputId={inputId}\n focusInputRef={setInputRef as unknown as Ref<HTMLInputElement>}\n value={value}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value)}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n disabled={disabled}\n required={required}\n name={name}\n invalid={Boolean(error)}\n placeholder={placeholder}\n valueTemplate={(option: unknown) =>\n option == null ? (\n <span className=\"cr-select__placeholder\">{placeholder}</span>\n ) : (\n String((option as Record<string, unknown>)[optionLabel] ?? option)\n )\n }\n // 5 itens visíveis antes da rolagem, como no Figma (itens de 37px).\n scrollHeight=\"185px\"\n dropdownIcon={<CaretDown />}\n collapseIcon={<CaretUp />}\n aria-label={label ? undefined : ariaLabel}\n aria-expanded={open}\n aria-controls={open ? listId : undefined}\n aria-describedby={supportText ? hintId : undefined}\n aria-invalid={error ? true : undefined}\n aria-required={required || undefined}\n pt={pt}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { InputSwitch, type InputSwitchChangeEvent } from 'primereact/inputswitch';\nimport './Switch.css';\n\n/** Size no Figma: Medium (48x28) e Small (32x20). */\nexport type SwitchSize = 'medium' | 'small';\n/** Label Position no Figma: lado do rótulo em relação ao switch. */\nexport type SwitchLabelPosition = 'right' | 'left';\n\nexport interface SwitchProps {\n /** Texto ao lado do switch (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: right. */\n labelPosition?: SwitchLabelPosition;\n /** Padrão: medium. */\n size?: SwitchSize;\n checked?: boolean;\n onChange?: (event: InputSwitchChangeEvent) => void;\n disabled?: boolean;\n name?: string;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: InputSwitch do PrimeReact no modo unstyled (o p-inputSwitch do PrimeNG da produção), com o\n// <input role=\"switch\"> nativo por cima do trilho. O Prime também põe role=\"checkbox\" na div de\n// fora, o que aninha dois controles: o Cristal tira esse role. O rótulo é um <label> ligado ao\n// input. A ref entrega o <input>.\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n {\n label,\n showLabel = true,\n labelPosition = 'right',\n size = 'medium',\n checked = false,\n onChange,\n disabled,\n name,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-switch',\n `cr-switch--${size}`,\n `cr-switch--label-${labelPosition}`,\n disabled && 'cr-switch--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <InputSwitch\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n name={name}\n pt={{\n root: { className: 'cr-switch__control', role: undefined, 'aria-checked': undefined },\n input: { className: 'cr-switch__input' },\n slider: { className: 'cr-switch__track' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-switch__label${showLabel ? '' : ' cr-switch__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n TabView,\n TabPanel as PrimeTabPanel,\n type TabPanelHeaderTemplateOptions,\n} from 'primereact/tabview';\nimport { X } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport './Tabs.css';\n\n/** Uma aba (.Tab Item no Figma) e o conteúdo dela. */\nexport interface TabPanelProps {\n /** Texto da aba (Label no Figma). */\n header: string;\n /** Ícone antes do texto (Leading Icon no Figma). */\n leftIcon?: ReactNode;\n /** Contador depois do texto (Badge no Figma). */\n badge?: ReactNode;\n /** Mostra o X (Tab Btn no Figma) e é chamado ao fechar a aba (clique no X ou Delete na aba). */\n onClose?: () => void;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/** Só descreve a aba: quem desenha é o Tabs. */\nexport function TabPanel(_props: TabPanelProps): null {\n return null;\n}\n\nexport interface TabsProps {\n /** Aba ativa (controlado). Sem ela, o Tabs controla sozinho. */\n activeIndex?: number;\n onTabChange?: (index: number) => void;\n /** As abas, como `<TabPanel>`. */\n children: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: TabView do PrimeReact no modo unstyled (o p-tabView do PrimeNG da produção): tablist, abas,\n// painéis e o teclado (setas, Home e End) do Prime. Cada aba vem de um <TabPanel> do Cristal, que\n// vira o TabPanel do Prime com o desenho do Figma (ícone, texto, Badge e X) pelo headerTemplate. O\n// X do Prime fica dentro do role=tab como um segundo controle; o do Cristal é só visual (clique) e,\n// pelo teclado, a aba fecha com Delete (anunciado pelo aria-keyshortcuts). A ref entrega a raiz.\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { activeIndex, onTabChange, children, id, className },\n ref,\n) {\n const primeRef = useRef<TabView>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n // Com onTabChange o Prime trata a aba ativa como controlada: sem activeIndex, o Tabs guarda.\n const [interno, setInterno] = useState(0);\n const ativa = activeIndex ?? interno;\n\n const panels = Children.toArray(children).filter((child): child is ReactElement<TabPanelProps> =>\n isValidElement(child),\n );\n\n const header = (panel: TabPanelProps) =>\n function TabHeader(options: TabPanelHeaderTemplateOptions) {\n const element = options.element as ReactElement<{\n onKeyDown?: (event: KeyboardEvent) => void;\n }>;\n const close = panel.onClose;\n return cloneElement(\n element,\n {\n 'aria-keyshortcuts': close ? 'Delete' : undefined,\n onKeyDown: (event: KeyboardEvent) => {\n if (close && event.key === 'Delete') close();\n else element.props.onKeyDown?.(event);\n },\n } as object,\n <>\n {panel.leftIcon && (\n <span className=\"cr-tabs__icon\" aria-hidden=\"true\">\n {panel.leftIcon}\n </span>\n )}\n <span className=\"cr-tabs__label\">{panel.header}</span>\n {panel.badge !== undefined && <Badge className=\"cr-tabs__badge\">{panel.badge}</Badge>}\n {close && (\n // O X é só para o mouse: pelo teclado a aba fecha com Delete (aria-keyshortcuts).\n <span\n className=\"cr-tabs__close\"\n aria-hidden=\"true\"\n onClick={(event: MouseEvent) => {\n event.stopPropagation();\n close();\n }}\n >\n <X />\n </span>\n )}\n </>,\n );\n };\n\n return (\n <TabView\n unstyled\n ref={primeRef}\n id={id}\n activeIndex={ativa}\n onTabChange={(event) => {\n setInterno(event.index);\n onTabChange?.(event.index);\n }}\n pt={{\n root: { className: ['cr-tabs', className].filter(Boolean).join(' ') },\n navContainer: { className: 'cr-tabs__nav-container' },\n navContent: { className: 'cr-tabs__nav-content' },\n nav: { className: 'cr-tabs__nav' },\n inkbar: { className: 'cr-tabs__inkbar' },\n panelContainer: { className: 'cr-tabs__panels' },\n }}\n >\n {panels.map((panel, index) => (\n <PrimeTabPanel\n key={panel.key ?? index}\n header={panel.props.header}\n disabled={panel.props.disabled}\n headerTemplate={header(panel.props)}\n pt={{\n header: { className: 'cr-tabs__item' },\n headerAction: { className: 'cr-tabs__tab' },\n content: { className: 'cr-tabs__panel' },\n }}\n >\n {panel.props.children}\n </PrimeTabPanel>\n ))}\n </TabView>\n );\n});\n"]}
1
+ {"version":3,"sources":["../src/components/AutoComplete/AutoComplete.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Divider/Divider.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Input/Input.tsx","../src/components/Menu/Menu.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Menubar/Menubar.tsx","../src/components/Tag/Tag.tsx","../src/components/MenuPrincipal/MenuPrincipal.tsx","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Panel/Panel.tsx","../src/components/Radio/Radio.tsx","../src/components/ScrollPanel/ScrollPanel.tsx","../src/components/SegmentControl/SegmentControl.tsx","../src/components/Select/Select.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/Tabs.tsx"],"names":["forwardRef","AutoComplete","useId","jsxs","jsx","PrimeAutoComplete","WarningCircle","Info","Badge","useRef","useImperativeHandle","PrimeBadge","Button","PrimeButton","Card","PrimeCard","Checkbox","useCallback","useEffect","PrimeCheckbox","Check","Chip","X","PrimeChip","Divider","PrimeDivider","IconButton","useState","Sidebar","ArrowLeft","Input","InputText","Menu","useContext","PrimeReactContext","CircleNotch","menu","PrimeMenu","PrimeReactProvider","PrimeTooltip","Fragment","PrimeAvatar","Menubar","List","MagnifyingGlass","PrimeMenubar","Tag","PrimeTag","MenuPrincipal","DribbbleLogo","Dialog","Question","MultiSelect","options","PrimeMultiSelect","CaretDown","Panel","PrimePanel","Radio","RadioButton","ScrollPanel","PrimeScrollPanel","SegmentControl","SelectButton","Select","Dropdown","CaretUp","Switch","InputSwitch","Tabs","Children","isValidElement","cloneElement","TabView","PrimeTabPanel"],"mappings":"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","file":"index.cjs","sourcesContent":["import { forwardRef, useId } from 'react';\nimport {\n AutoComplete as PrimeAutoComplete,\n type AutoCompleteProps as PrimeAutoCompleteProps,\n} from 'primereact/autocomplete';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport type { InputSize, InputVariant } from '../Input';\nimport '../Input/Input.css';\nimport './AutoComplete.css';\n\nexport type AutoCompleteVariant = InputVariant;\nexport type AutoCompleteSize = InputSize;\n\nexport interface AutoCompleteProps extends Omit<\n PrimeAutoCompleteProps,\n // Fora do Figma (seleção múltipla, botão de dropdown, mensagem de vazio, carregando) ou\n // controlados pelo Cristal (visual, rótulo, erro).\n | 'size'\n | 'variant'\n | 'invalid'\n | 'multiple'\n | 'selectionLimit'\n | 'selectedItemTemplate'\n | 'removeTokenIcon'\n | 'dropdown'\n | 'dropdownAriaLabel'\n | 'dropdownAutoFocus'\n | 'dropdownIcon'\n | 'dropdownMode'\n | 'showEmptyMessage'\n | 'emptyMessage'\n | 'loadingIcon'\n | 'inputClassName'\n | 'panelClassName'\n | 'scrollHeight'\n | 'inputRef'\n | 'pt'\n | 'ptOptions'\n | 'unstyled'\n | 'children'\n> {\n /** Type no Figma: Outline (com borda) e Filled (com fundo). */\n variant?: AutoCompleteVariant;\n /** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\n size?: AutoCompleteSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Dica abaixo do campo (Hint no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: AutoComplete do PrimeReact no modo unstyled (busca, lista, teclado e ARIA de combobox do\n// Prime, espelhando o p-autoComplete do PrimeNG da produção). O rótulo e a dica são os do Input\n// (.cr-field). O campo do AutoComplete no Figma não tem ícones, então o próprio <input> é a caixa\n// do campo: assim o painel, que o Prime alinha pelo <input>, fica na largura e na borda do campo.\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(function AutoComplete(\n {\n variant = 'outline',\n size = 'large',\n label,\n hint,\n error,\n inputId,\n required,\n disabled,\n className,\n style,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const id = inputId ?? autoId;\n const hintId = `${id}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n 'cr-autocomplete',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={id}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeAutoComplete\n unstyled\n inputRef={ref}\n inputId={id}\n required={required}\n disabled={disabled}\n // 5 itens visíveis, como no Figma (5 × 37px).\n scrollHeight=\"185px\"\n pt={{\n root: { className: 'cr-autocomplete__root' },\n input: {\n root: {\n className: 'cr-field__control cr-autocomplete__input',\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n },\n },\n // O Prime mostra um spinner próprio enquanto busca; o Figma não define esse estado.\n loadingIcon: { className: 'cr-autocomplete__loader' },\n panel: { className: 'cr-autocomplete__panel' },\n list: { className: 'cr-autocomplete__list' },\n item: { className: 'cr-autocomplete__item' },\n }}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Badge as PrimeBadge } from 'primereact/badge';\nimport './Badge.css';\n\n/** State no Figma. */\nexport type BadgeVariant = 'default' | 'error' | 'warning' | 'success' | 'disabled';\n/** Size no Figma: large = 24px, medium = 16px, small = ponto de 8px sem número. */\nexport type BadgeSize = 'large' | 'medium' | 'small';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Valor do badge (Badge Value no Figma). Ignorado no `small`. */\n children?: ReactNode;\n}\n\n// Base: Badge do PrimeReact no modo unstyled; o visual vem todo do Badge.css. No small o\n// conteúdo é descartado: é um indicador sem número (para ele ser anunciado, passe role=\"img\" e\n// aria-label).\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant = 'default', size = 'large', className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeBadge>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-badge', `cr-badge--${variant}`, `cr-badge--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeBadge\n unstyled\n ref={primeRef}\n className={classes}\n value={size === 'small' ? null : children}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './Button.css';\n\n/** Hierarchy no Figma: Primary (Filled), Secondary (Tonal) e Tertiary (Outlined). */\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n/** Size no Figma: 32, 36, 42 e 48px de altura. */\nexport type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). */\n trailingIcon?: ReactNode;\n}\n\n// Base: Button do PrimeReact no modo unstyled. O comportamento é o do Prime (espelhando o PrimeNG\n// da produção) e o visual vem todo do Button.css. O Prime aceita um ícone só (`icon`); como o\n// Figma permite os dois juntos, os ícones vão como conteúdo do botão.\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'large',\n leadingIcon,\n trailingIcon,\n type = 'button',\n className,\n children,\n ...props\n },\n ref,\n) {\n const classes = ['cr-button', `cr-button--${variant}`, `cr-button--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n {leadingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n {children}\n {trailingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {trailingIcon}\n </span>\n )}\n </PrimeButton>\n );\n});\n","import { forwardRef, type HTMLAttributes, type Ref } from 'react';\nimport { Card as PrimeCard } from 'primereact/card';\nimport './Card.css';\n\n/** Padding no Figma: X-Small (8px), Small (12px), Medium (16px), Large (20px) e X-Large (24px). */\nexport type CardPadding = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n padding?: CardPadding;\n /** Outline no Figma: borda de 1px em stroke/neutral/base. */\n outline?: boolean;\n}\n\n// Base: Card do PrimeReact no modo unstyled (o p-card do PrimeNG da produção). No Figma o Card é\n// só o contêiner, com o conteúdo num slot: o Cristal não repassa header, title, subTitle nem\n// footer do Prime, e o conteúdo vai em children. O visual vem do Card.css.\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { padding = 'xsmall', outline = false, className, style, children, ...props },\n ref,\n) {\n const classes = ['cr-card', `cr-card--${padding}`, outline && 'cr-card--outline', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeCard\n unstyled\n // O Card do Prime é um forwardRef que entrega o próprio <div>, mas o tipo o declara como classe.\n ref={ref as unknown as Ref<PrimeCard>}\n // No unstyled, className e style do Card do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n body: { className: 'cr-card__body' },\n content: { className: 'cr-card__content' },\n }}\n {...props}\n >\n {children}\n </PrimeCard>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { Checkbox as PrimeCheckbox, type CheckboxChangeEvent } from 'primereact/checkbox';\nimport { Check } from '@phosphor-icons/react';\nimport './Checkbox.css';\n\n/** Label Position no Figma: lado da caixa em relação ao rótulo. */\nexport type CheckboxPosition = 'left' | 'right';\n/** Label Type no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type CheckboxLabelSize = 'default' | 'full';\n\nexport interface CheckboxProps {\n /** Texto ao lado da caixa (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Lado da caixa. Padrão: left. */\n position?: CheckboxPosition;\n /** Padrão: default. */\n labelSize?: CheckboxLabelSize;\n checked?: boolean;\n /** Type=Indeterminate no Figma: traço no lugar do check; o leitor de tela anuncia \"misto\". */\n indeterminate?: boolean;\n onChange?: (event: CheckboxChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: unknown;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: Checkbox do PrimeReact no modo unstyled (o p-checkbox do PrimeNG da produção), com o\n// <input type=\"checkbox\"> nativo por cima da caixa. O Prime não tem o estado indeterminado: o\n// Cristal liga a propriedade nativa do input e desenha o traço no CSS. O rótulo é um <label>\n// ligado ao input. A ref entrega o <input>.\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n label,\n showLabel = true,\n position = 'left',\n labelSize = 'default',\n checked = false,\n indeterminate = false,\n onChange,\n disabled,\n required,\n name,\n value,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n // O Cristal também precisa do <input> (para o indeterminado): a ref de callback guarda os dois.\n const inputRef = useRef<HTMLInputElement | null>(null);\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n inputRef.current = input;\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n // Com o indeterminado ligado, o leitor de tela anuncia \"misto\" no lugar de marcado/desmarcado.\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = indeterminate && !checked;\n }, [indeterminate, checked]);\n\n const classes = [\n 'cr-checkbox',\n `cr-checkbox--${position}`,\n `cr-checkbox--label-${labelSize}`,\n indeterminate && !checked && 'cr-checkbox--indeterminate',\n disabled && 'cr-checkbox--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <PrimeCheckbox\n unstyled\n inputRef={setInputRef}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n icon={<Check size={16} />}\n pt={{\n root: { className: 'cr-checkbox__control' },\n input: { className: 'cr-checkbox__input' },\n box: { className: 'cr-checkbox__box' },\n icon: { className: 'cr-checkbox__icon', 'aria-hidden': true },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-checkbox__label${showLabel ? '' : ' cr-checkbox__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from '@phosphor-icons/react';\nimport { Chip as PrimeChip, type ChipRemoveEvent } from 'primereact/chip';\nimport './Chip.css';\n\n/** Type no Figma. */\nexport type ChipVariant =\n | 'default'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'highlight'\n | 'inverse'\n | 'outline'\n | 'neutral'\n | 'on-image';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type ChipSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Texto do chip (Label no Figma). */\n label: string;\n variant?: ChipVariant;\n size?: ChipSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). Com `onRemove`, o padrão é o X do Figma. */\n trailingIcon?: ReactNode;\n disabled?: boolean;\n /**\n * Torna o ícone da direita o botão de remover do PrimeReact (clique, Enter ou Backspace).\n * Como no Prime, o chip se esconde depois; retorne `false` para controlar a remoção por fora.\n */\n onRemove?: (event: ChipRemoveEvent) => boolean | void;\n /** Nome acessível do botão de remover. */\n removeLabel?: string;\n}\n\n// Base: Chip do PrimeReact no modo unstyled; o visual vem todo do Chip.css. O Prime aceita só um\n// ícone à esquerda e, à direita, só o de remover: os ícones vão como funções, que o Prime chama\n// com as props dele (role, tabIndex e teclado do remover). Sem onRemove (ou desabilitado), o ícone\n// da direita é só visual.\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n label,\n variant = 'default',\n size = 'small',\n leadingIcon,\n trailingIcon,\n disabled = false,\n onRemove,\n removeLabel = 'Remover',\n className,\n ...props\n },\n ref,\n) {\n const classes = [\n 'cr-chip',\n `cr-chip--${variant}`,\n `cr-chip--${size}`,\n disabled && 'cr-chip--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const removable = Boolean(onRemove) && !disabled;\n const trailing = trailingIcon ?? (onRemove ? <X /> : null);\n\n return (\n <PrimeChip\n unstyled\n // O Prime remonta o <div> a cada render interno (troca a key), então a ref vai pelo\n // pass-through da raiz, que acompanha cada montagem. O aria-label que o Prime põe na raiz\n // sai: num <div> sem role ele é proibido (axe), e o texto já está visível no chip.\n pt={{ root: { ref, 'aria-label': undefined } }}\n className={classes}\n label={label}\n aria-disabled={disabled || undefined}\n icon={\n leadingIcon\n ? () => (\n <span className=\"cr-chip__icon cr-chip__icon--leading\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )\n : undefined\n }\n removable={Boolean(trailing)}\n removeIcon={(options) => {\n if (!removable) {\n return (\n <span className=\"cr-chip__icon cr-chip__icon--trailing\" aria-hidden=\"true\">\n {trailing}\n </span>\n );\n }\n const { role, tabIndex, onClick, onKeyDown } =\n options.iconProps as HTMLAttributes<HTMLSpanElement>;\n return (\n <span\n role={role}\n tabIndex={tabIndex}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className=\"cr-chip__icon cr-chip__icon--trailing cr-chip__remove\"\n aria-label={removeLabel}\n >\n {trailing}\n </span>\n );\n }}\n onRemove={onRemove ? (event) => onRemove(event) !== false : undefined}\n {...props}\n />\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Divider as PrimeDivider } from 'primereact/divider';\nimport './Divider.css';\n\n/** Horizontal Divider e Vertical Divider no Figma. */\nexport type DividerOrientation = 'horizontal' | 'vertical';\n/** Style no Figma: Solid (Default no vertical) e Dashed. */\nexport type DividerVariant = 'solid' | 'dashed';\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n}\n\n// Base: Divider do PrimeReact no modo unstyled (role=\"separator\" e aria-orientation do Prime).\n// O visual vem todo do Divider.css. O Figma não tem conteúdo no meio da linha, então o Cristal\n// não repassa children.\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', variant = 'solid', className, style, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimeDivider>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-divider', `cr-divider--${orientation}`, `cr-divider--${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeDivider\n unstyled\n ref={primeRef}\n layout={orientation}\n // No unstyled, className e style do Divider do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n content: { className: 'cr-divider__content' },\n }}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './IconButton.css';\n\n/**\n * Hierarchy no Figma: Primary (Filled), Secondary (Tonal), Tertiary (Outlined) e Other (Icon),\n * que aqui é `ghost`: só o ícone, com fundo no hover.\n */\nexport type IconButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\n/** Size no Figma: 32, 36, 42 e 48px. */\nexport type IconButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n variant?: IconButtonVariant;\n size?: IconButtonSize;\n /** Ícone do botão (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Obrigatório: o botão não tem texto, então é isso que o leitor de tela anuncia. */\n 'aria-label': string;\n}\n\n// Base: Button do PrimeReact no modo unstyled, só com ícone (o `p-button-icon-only` do PrimeNG).\n// O comportamento é o do Prime e o visual vem todo do IconButton.css.\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { variant = 'primary', size = 'large', icon, type = 'button', className, ...props },\n ref,\n) {\n const classes = [\n 'cr-icon-button',\n `cr-icon-button--${variant}`,\n `cr-icon-button--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n <span className=\"cr-icon-button__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n </PrimeButton>\n );\n});\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Sidebar, type SidebarPassThroughTransitionType } from 'primereact/sidebar';\nimport { ArrowLeft, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Drawer.css';\n\n/** Side no Figma: de que lado da tela a gaveta abre. */\nexport type DrawerSide = 'right' | 'left';\n/**\n * Behavior no Figma: Full Body (tudo rola junto) ou Fixed Body (cabeçalho e rodapé fixos, só o\n * corpo rola).\n */\nexport type DrawerBehavior = 'full' | 'fixed';\n/**\n * Largura da gaveta. O Figma só tem a de 340px (small); medium (480px), large (720px) e full (a\n * tela toda) são do Cristal, nas faixas usuais de drawer.\n */\nexport type DrawerSize = 'small' | 'medium' | 'large' | 'full';\n\nexport interface DrawerProps {\n visible: boolean;\n /** Pedido para fechar (X, Esc ou clique no overlay). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível da gaveta. */\n title: string;\n /** Subtítulo descritivo, até 2 linhas. */\n subtitle?: ReactNode;\n /** Padrão: right. */\n side?: DrawerSide;\n /** Padrão: full. */\n behavior?: DrawerBehavior;\n /** Padrão: small (340px, a do Figma). */\n size?: DrawerSize;\n /**\n * Com overlay (padrão): a gaveta é modal, a página atrás fica bloqueada e o clique no overlay\n * fecha. Sem overlay (`false`): a página continua rolando e clicável, e só o X e o Esc fecham.\n */\n modal?: boolean;\n /** Mostra o botão de voltar antes do título. */\n onBack?: () => void;\n backLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, alinhados à direita. */\n footer?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\nconst FOCAVEIS =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n// Base: Sidebar do PrimeReact no modo unstyled (o p-sidebar/p-drawer do PrimeNG da produção):\n// overlay, Esc, clique fora, bloqueio da rolagem da página, o foco no X ao abrir e a transição de\n// entrada e saída (300ms) são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. O Sidebar do Prime marca a gaveta como role=complementary e não\n// segura o foco; com overlay ela é modal, então o Cristal a marca como dialog (aria-modal),\n// mantém o Tab dentro dela e devolve o foco a quem a abriu. Sem overlay (modal={false}) ela é um\n// dialog não modal: a página continua usável, o Tab sai dela e o clique fora não fecha.\nexport function Drawer({\n visible,\n onHide,\n title,\n subtitle,\n side = 'right',\n behavior = 'full',\n size = 'small',\n modal = true,\n onBack,\n backLabel = 'Voltar',\n closeLabel = 'Fechar',\n footer,\n children,\n id,\n className,\n}: DrawerProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n const subtitleId = `${autoId}-subtitle`;\n const panelRef = useRef<HTMLDivElement>(null);\n const retorno = useRef<HTMLElement | null>(null);\n\n // Ao abrir, guarda quem tinha o foco; ao fechar, devolve.\n useEffect(() => {\n if (visible) {\n retorno.current = document.activeElement as HTMLElement | null;\n return;\n }\n retorno.current?.focus();\n retorno.current = null;\n }, [visible]);\n\n // Quem rola (o corpo no fixed, a gaveta toda no full) entra no Tab só quando rola, para a\n // rolagem pelo teclado. O Prime só monta o conteúdo depois de abrir: a ref de callback começa a\n // medir quando ele existe.\n const [rolagem, setRolagem] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!rolagem) return;\n const medir = () => setRolavel(rolagem.scrollHeight > rolagem.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(rolagem);\n [...rolagem.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [rolagem, children]);\n\n // Com overlay, o Tab e o Shift+Tab ciclam dentro da gaveta.\n const prenderFoco = (event: KeyboardEvent) => {\n if (!modal || event.key !== 'Tab' || !panelRef.current) return;\n const focaveis = [...panelRef.current.querySelectorAll<HTMLElement>(FOCAVEIS)];\n const primeiro = focaveis[0];\n const ultimo = focaveis[focaveis.length - 1];\n if (!primeiro || !ultimo) return;\n if (event.shiftKey && document.activeElement === primeiro) {\n event.preventDefault();\n ultimo.focus();\n } else if (!event.shiftKey && document.activeElement === ultimo) {\n event.preventDefault();\n primeiro.focus();\n }\n };\n\n const classes = [\n 'cr-drawer',\n `cr-drawer--${side}`,\n `cr-drawer--${behavior}`,\n `cr-drawer--size-${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Sidebar\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n position={side}\n modal={modal}\n blockScroll={modal}\n // Sem overlay, o Prime fecharia com qualquer clique na página: só o X e o Esc fecham.\n dismissable={modal}\n pt={{\n mask: {\n className: `cr-drawer__mask cr-drawer__mask--${side}${modal ? '' : ' cr-drawer__mask--sem-overlay'}`,\n },\n root: {\n className: classes,\n role: 'dialog',\n 'aria-modal': modal || undefined,\n 'aria-labelledby': titleId,\n 'aria-describedby': subtitle ? subtitleId : undefined,\n onKeyDown: prenderFoco,\n },\n // No unstyled o Prime não põe classes na transição: o Cristal dá as dele (Drawer.css).\n // O tipo do Prime exige o addEndListener do react-transition-group, que aqui não se usa.\n transition: {\n classNames: {\n enter: 'cr-drawer--enter',\n enterActive: 'cr-drawer--enter-active',\n exitActive: 'cr-drawer--exit-active',\n },\n } as SidebarPassThroughTransitionType,\n }}\n content={({ closeIconRef, hide }) => (\n <div\n ref={(element) => {\n panelRef.current = element;\n if (behavior === 'full') setRolagem(element);\n }}\n className=\"cr-drawer__panel\"\n tabIndex={behavior === 'full' && rolavel ? 0 : undefined}\n >\n <div className=\"cr-drawer__header\">\n <div className=\"cr-drawer__title-row\">\n {onBack && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<ArrowLeft />}\n aria-label={backLabel}\n onClick={onBack}\n />\n )}\n <h2 id={titleId} className=\"cr-drawer__title\">\n {title}\n </h2>\n </div>\n {subtitle && (\n <p id={subtitleId} className=\"cr-drawer__subtitle\">\n {subtitle}\n </p>\n )}\n </div>\n <div\n ref={behavior === 'fixed' ? setRolagem : undefined}\n className=\"cr-drawer__body\"\n tabIndex={behavior === 'fixed' && rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {footer && <div className=\"cr-drawer__footer\">{footer}</div>}\n <IconButton\n ref={closeIconRef as unknown as Ref<HTMLButtonElement>}\n className=\"cr-drawer__close\"\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n )}\n />\n );\n}\n","import { forwardRef, useId, type InputHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { InputText } from 'primereact/inputtext';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport './Input.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type InputVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type InputSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface InputProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'value' | 'children'\n> {\n variant?: InputVariant;\n size?: InputSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Valor do campo (controlado). */\n value?: string;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone ou botão depois do texto (Trailing Icon no Figma), por exemplo mostrar a senha. */\n trailingIcon?: ReactNode;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: InputText do PrimeReact no modo unstyled (o <input>, com o comportamento do Prime,\n// espelhando o pInputText do PrimeNG da produção). O rótulo, a caixa do campo, os ícones e a dica\n// são do Cristal, com as classes .cr-field reaproveitadas pelos outros campos (AutoComplete,\n// MultiSelect).\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n variant = 'outline',\n size = 'large',\n label,\n leadingIcon,\n trailingIcon,\n hint,\n error,\n id,\n required,\n disabled,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"cr-field__control\">\n {leadingIcon && (\n <span className=\"cr-field__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n <InputText\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <input> nela.\n ref={ref as unknown as Ref<HTMLInputElement>}\n id={inputId}\n className=\"cr-field__input\"\n required={required}\n disabled={disabled}\n invalid={Boolean(error)}\n aria-invalid={error ? true : undefined}\n aria-describedby={supportText ? hintId : undefined}\n {...props}\n />\n {trailingIcon && <span className=\"cr-field__icon\">{trailingIcon}</span>}\n </div>\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { CircleNotch } from '@phosphor-icons/react';\nimport './Menu.css';\n\n/** Density no Figma: Normal (itens de 37px) e Compacted (29px). */\nexport type MenuDensity = 'normal' | 'compact';\n\n/** Um item da lista (.Dropdown Item no Figma). */\nexport interface MenuItem {\n label: string;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Estado Selected do Figma: texto e ícone em brand, fundo selected/subtlest. */\n selected?: boolean;\n disabled?: boolean;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\nexport interface MenuProps {\n model: MenuItem[];\n density?: MenuDensity;\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Alinhamento do popup com o elemento que o abriu. */\n popupAlignment?: 'left' | 'right';\n /** Estado Loading do Figma: troca os itens pelo indicador de carregamento. */\n loading?: boolean;\n /** O que o leitor de tela anuncia no carregamento. */\n loadingLabel?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção). No Figma é o Dropdown List, usado nos menus do\n// Menubar; o visual vem do Menu.css. A ref expõe toggle/show/hide do Prime para abrir o popup.\nexport const Menu = forwardRef<MenuHandle, MenuProps>(function Menu(\n {\n model,\n density = 'normal',\n popup = false,\n popupAlignment = 'left',\n loading = false,\n loadingLabel = 'Carregando',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => primeRef.current?.toggle(event),\n show: (event) => primeRef.current?.show(event),\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const items: PrimeMenuItem[] = loading\n ? [\n {\n label: loadingLabel,\n disabled: true,\n template: () => (\n <div className=\"cr-menu__loading\">\n <CircleNotch className=\"cr-menu__spinner\" aria-hidden=\"true\" />\n </div>\n ),\n },\n ]\n : model.map((item) => ({\n id: item.id,\n label: item.label,\n icon: item.icon ? (\n <span className=\"cr-menu__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : undefined,\n disabled: item.disabled,\n command: item.command,\n url: item.url,\n target: item.target,\n className: [item.selected && 'cr-menu__item--selected', item.className]\n .filter(Boolean)\n .join(' '),\n data: { selected: item.selected },\n }));\n\n const classes = ['cr-menu', `cr-menu--${density}`, popup && 'cr-menu--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n // O nome acessível vai na lista (role=menu); o Prime lê `ariaLabel`, mas não o declara no tipo.\n menu: {\n className: 'cr-menu__list',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-busy': loading || undefined,\n },\n menuitem: (options) => {\n const item = (options as { context?: { item?: PrimeMenuItem } })?.context?.item;\n return {\n className: 'cr-menu__item',\n 'aria-current': item?.data?.selected ? 'true' : undefined,\n };\n },\n content: { className: 'cr-menu__content' },\n action: { className: 'cr-menu__action' },\n label: { className: 'cr-menu__label' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n model={items}\n popup={popup}\n popupAlignment={popupAlignment}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // O Menu do Prime lê o PrimeReactContext sem checar se ele existe: sem um PrimeReactProvider\n // na aplicação, o clique fora dá erro e o popup não fecha. Se a aplicação já tiver um, vale o\n // dela.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n});\n","import { useEffect, useId, type ReactNode, type RefObject } from 'react';\nimport { Tooltip as PrimeTooltip, type TooltipPassThroughOptions } from 'primereact/tooltip';\nimport './Tooltip.css';\n\n/** Type no Figma: Plain (rótulo curto, uma linha) e Rich (texto de até 300px, quebra linha). */\nexport type TooltipType = 'plain' | 'rich';\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TooltipProps {\n /** Elemento que mostra o tooltip: ref, elemento ou seletor CSS. */\n target: RefObject<HTMLElement | null> | HTMLElement | string;\n /** Texto do tooltip (Label no Plain, Text no Rich). */\n content: ReactNode;\n type?: TooltipType;\n /** Lado do alvo. O Prime inverte o lado se faltar espaço na tela. */\n position?: TooltipPosition;\n /** O que abre o tooltip; o padrão abre no hover e no foco do teclado. */\n event?: 'hover' | 'focus' | 'both';\n showDelay?: number;\n hideDelay?: number;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\nconst resolveTargets = (target: TooltipProps['target']): HTMLElement[] => {\n if (typeof target === 'string') return Array.from(document.querySelectorAll<HTMLElement>(target));\n if (target instanceof HTMLElement) return [target];\n return target.current ? [target.current] : [];\n};\n\n// Base: Tooltip do PrimeReact no modo unstyled (abrir/fechar, atraso, Esc e posicionamento com\n// troca de lado do Prime, espelhando o pTooltip do PrimeNG da produção). O visual vem do\n// Tooltip.css; o Figma não tem seta. Dois ajustes de acessibilidade: o Prime marca o tooltip\n// aberto com aria-hidden=\"true\", e não liga o alvo ao texto; aqui o alvo ganha aria-describedby.\nexport function Tooltip({\n target,\n content,\n type = 'plain',\n position = 'bottom',\n event = 'both',\n showDelay,\n hideDelay,\n disabled,\n id,\n className,\n}: TooltipProps) {\n const autoId = useId();\n const tooltipId = id ?? autoId;\n\n useEffect(() => {\n const elements = resolveTargets(target);\n elements.forEach((element) => element.setAttribute('aria-describedby', tooltipId));\n return () => elements.forEach((element) => element.removeAttribute('aria-describedby'));\n }, [target, tooltipId]);\n\n const classes = ['cr-tooltip', `cr-tooltip--${type}`, className].filter(Boolean).join(' ');\n\n const pt: TooltipPassThroughOptions = {\n root: (options) => {\n const side = (options as { state?: { position?: string } })?.state?.position ?? position;\n return { className: `${classes} cr-tooltip--${side}`, 'aria-hidden': false };\n },\n arrow: { className: 'cr-tooltip__arrow' },\n text: { className: 'cr-tooltip__text' },\n };\n\n return (\n <PrimeTooltip\n unstyled\n id={tooltipId}\n target={target as never}\n position={position}\n event={event}\n showDelay={showDelay}\n hideDelay={hideDelay}\n disabled={disabled}\n pt={pt}\n >\n {content}\n </PrimeTooltip>\n );\n}\n","import {\n forwardRef,\n useId,\n useRef,\n useState,\n type FormEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Menubar as PrimeMenubar, type MenubarPassThroughOptions } from 'primereact/menubar';\nimport { Button as PrimeButton } from 'primereact/button';\nimport { InputText } from 'primereact/inputtext';\nimport { Avatar as PrimeAvatar } from 'primereact/avatar';\nimport { List, MagnifyingGlass } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport { Menu, type MenuHandle, type MenuItem } from '../Menu';\nimport { Tooltip } from '../Tooltip';\nimport logoSimbolo from './assets/vector-logo-simbolo.svg';\nimport logoTexto from './assets/vector-logo-texto.svg';\nimport './Menubar.css';\n\n/** Um botão de ferramenta (.Menubar Tools Button no Figma). */\nexport interface MenubarTool {\n /** Nome do botão: vira o aria-label e o texto do tooltip. */\n label: string;\n /** Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Contador sobre o ícone (Show Badge no Figma). */\n badge?: ReactNode;\n /** Como o leitor de tela lê o contador (padrão: o próprio valor). */\n badgeLabel?: string;\n /** Itens do menu que o botão abre (Dropdown List no Figma). */\n menu?: MenuItem[];\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Continua visível no tablet (768px), como o sino no Figma. */\n showOnTablet?: boolean;\n}\n\n/** Usuário logado (.Menubar Profile no Figma). */\nexport interface MenubarUser {\n name: string;\n /** Perfil de acesso, abaixo do nome. */\n role?: string;\n /** URL da foto. Sem foto, o avatar mostra a inicial do nome (Type=No Image). */\n avatar?: string;\n}\n\nexport interface MenubarProps {\n /** Logo à esquerda (.Nav Logo no Figma); o padrão é o logo da Vector. */\n logo?: ReactNode;\n /** Menu principal aberto: deixa o botão de menu no estado Active. */\n menuOpen?: boolean;\n /** Clique no botão de menu (abre o Menu Principal). */\n onMenuToggle?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Nome acessível do botão de menu. */\n menuLabel?: string;\n /** Mostra a busca no centro (só no desktop). */\n showSearch?: boolean;\n searchPlaceholder?: string;\n /** Valor da busca (controlado). Sem ele, a busca guarda o próprio valor. */\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n /** Envio da busca (Enter ou lupa). */\n onSearch?: (value: string) => void;\n /** Nome acessível da lupa. */\n searchButtonLabel?: string;\n /** Botões de ferramenta à direita (.Nav Tools no Figma). */\n tools?: MenubarTool[];\n user?: MenubarUser;\n /** Itens do menu do perfil. Sem eles, o perfil não é clicável. */\n userMenu?: MenuItem[];\n id?: string;\n className?: string;\n}\n\nfunction VectorLogo() {\n return (\n <span className=\"cr-menubar__logo\" role=\"img\" aria-label=\"Vector\">\n <img className=\"cr-menubar__logo-texto\" src={logoTexto} alt=\"\" />\n <img className=\"cr-menubar__logo-simbolo\" src={logoSimbolo} alt=\"\" />\n </span>\n );\n}\n\nfunction ToolButton({ tool }: { tool: MenubarTool }) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(tool.menu?.length);\n const hasBadge = tool.badge !== undefined && tool.badge !== null;\n const name = hasBadge ? `${tool.label}, ${tool.badgeLabel ?? String(tool.badge)}` : tool.label;\n\n const classes = [\n 'cr-menubar__tool',\n tool.showOnTablet && 'cr-menubar__tool--tablet',\n open && 'cr-menubar__tool--active',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={buttonRef as unknown as Ref<PrimeButton>}\n type=\"button\"\n className={classes}\n aria-label={name}\n aria-haspopup={hasMenu ? 'menu' : undefined}\n aria-expanded={hasMenu ? open : undefined}\n aria-controls={hasMenu && open ? menuId : undefined}\n onClick={(event) => {\n tool.onClick?.(event);\n if (hasMenu) menuRef.current?.toggle(event);\n }}\n >\n <span className=\"cr-menubar__tool-icon\" aria-hidden=\"true\">\n {tool.icon}\n </span>\n {hasBadge && (\n <Badge className=\"cr-menubar__badge\" aria-hidden=\"true\">\n {tool.badge}\n </Badge>\n )}\n </PrimeButton>\n {/* No Figma o tooltip aparece no Hover e some com o menu aberto (Active). */}\n <Tooltip target={buttonRef} content={tool.label} disabled={open} />\n {hasMenu && (\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={tool.menu ?? []}\n aria-label={tool.label}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n )}\n </>\n );\n}\n\nfunction Profile({ user, menu }: { user: MenubarUser; menu?: MenuItem[] }) {\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(menu?.length);\n\n const content = (\n <>\n <span className=\"cr-menubar__profile-text\">\n <span className=\"cr-menubar__profile-name\">{user.name}</span>\n {user.role && <span className=\"cr-menubar__profile-role\">{user.role}</span>}\n </span>\n {/* O nome já está no texto ao lado: o avatar é só visual. */}\n <PrimeAvatar\n unstyled\n aria-hidden=\"true\"\n className={`cr-menubar__avatar${user.avatar ? '' : ' cr-menubar__avatar--initial'}`}\n image={user.avatar}\n imageAlt=\"\"\n label={user.avatar ? undefined : user.name.trim().charAt(0).toUpperCase()}\n shape=\"circle\"\n pt={{ image: { className: 'cr-menubar__avatar-image' } }}\n />\n </>\n );\n\n if (!hasMenu) return <div className=\"cr-menubar__profile\">{content}</div>;\n\n return (\n <>\n <PrimeButton\n unstyled\n type=\"button\"\n className=\"cr-menubar__profile cr-menubar__profile--button\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n onClick={(event) => menuRef.current?.toggle(event)}\n >\n {content}\n </PrimeButton>\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={menu ?? []}\n aria-label={user.name}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n </>\n );\n}\n\n// Base: Menubar do PrimeReact no modo unstyled, espelhando o p-menubar do PrimeNG da produção. A\n// navegação do Vector fica no Menu Principal (aberto pelo botão de menu), então o Menubar não\n// tem itens próprios: usa só as áreas start e end do Prime. Os botões são Buttons do Prime, a\n// busca é um InputText, o avatar é o Avatar e os menus e tooltips são o Menu e o Tooltip do\n// Cristal. O layout responsivo (1360, 768 e 360px no Figma) vem de container queries no\n// Menubar.css, pela largura do próprio Menubar.\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(function Menubar(\n {\n logo,\n menuOpen = false,\n onMenuToggle,\n menuLabel = 'Menu principal',\n showSearch = true,\n searchPlaceholder = 'Buscar no Vector',\n searchValue,\n onSearchChange,\n onSearch,\n searchButtonLabel = 'Buscar',\n tools = [],\n user,\n userMenu,\n id,\n className,\n },\n ref,\n) {\n const [innerSearch, setInnerSearch] = useState('');\n const search = searchValue ?? innerSearch;\n\n const submitSearch = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n onSearch?.(search);\n };\n\n const classes = ['cr-menubar', !showSearch && 'cr-menubar--no-search', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenubarPassThroughOptions = {\n // A área start some do layout (display: contents): o início e a busca viram colunas do grid.\n start: { className: 'cr-menubar__start' },\n end: { className: 'cr-menubar__end' },\n // Sem itens, a lista do Prime (role=menubar) ficaria vazia e focável: fica escondida.\n menu: { hidden: true },\n };\n\n const start = (\n <>\n <div className=\"cr-menubar__init\">\n <PrimeButton\n unstyled\n type=\"button\"\n className={`cr-menubar__menu-button${menuOpen ? ' cr-menubar__menu-button--active' : ''}`}\n aria-label={menuLabel}\n aria-expanded={menuOpen}\n onClick={onMenuToggle}\n >\n <span className=\"cr-menubar__menu-icon\" aria-hidden=\"true\">\n <List />\n </span>\n </PrimeButton>\n {logo ?? <VectorLogo />}\n </div>\n {showSearch && (\n <form role=\"search\" className=\"cr-menubar__search\" onSubmit={submitSearch}>\n <InputText\n unstyled\n className=\"cr-menubar__search-input\"\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n value={search}\n onChange={(event) => {\n setInnerSearch(event.target.value);\n onSearchChange?.(event.target.value);\n }}\n />\n <PrimeButton\n unstyled\n type=\"submit\"\n className=\"cr-menubar__search-button\"\n aria-label={searchButtonLabel}\n >\n <span className=\"cr-menubar__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n </PrimeButton>\n </form>\n )}\n </>\n );\n\n const end =\n tools.length > 0 || user ? (\n <>\n {tools.length > 0 && (\n <div className=\"cr-menubar__tools\">\n {tools.map((tool) => (\n <ToolButton key={tool.label} tool={tool} />\n ))}\n </div>\n )}\n {user && <Profile user={user} menu={userMenu} />}\n </>\n ) : null;\n\n return (\n <div ref={ref} id={id} className={classes}>\n <PrimeMenubar\n unstyled\n className=\"cr-menubar__bar\"\n model={[]}\n start={start}\n end={end}\n pt={pt}\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Tag as PrimeTag } from 'primereact/tag';\nimport './Tag.css';\n\n/** Type no Figma. */\nexport type TagVariant =\n 'default' | 'success' | 'warning' | 'danger' | 'info' | 'purple' | 'gray' | 'inverse' | 'outline';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type TagSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: TagVariant;\n size?: TagSize;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Texto da tag (Label no Figma). */\n children: ReactNode;\n}\n\n// Base: Tag do PrimeReact no modo unstyled; o visual vem todo do Tag.css. Rótulo de status\n// estático (sem interação); para contador ou bolinha de notificação, use o Badge.\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\n { variant = 'default', size = 'small', icon, className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeTag>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-tag', `cr-tag--${variant}`, `cr-tag--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeTag\n unstyled\n ref={primeRef}\n className={classes}\n // Como função, o ícone é renderizado pelo Cristal (o Prime só repassa props a funções).\n icon={\n icon\n ? () => (\n <span className=\"cr-tag__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )\n : undefined\n }\n value={children}\n {...props}\n />\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { DribbbleLogo } from '@phosphor-icons/react';\nimport { Tag } from '../Tag';\nimport './MenuPrincipal.css';\n\n/** Um produto do menu (.Menu Principal / Item no Figma). */\nexport interface MenuPrincipalItem {\n /** Nome do produto (Item Label no Figma). */\n label: string;\n /** Texto de apoio abaixo do nome, até 2 linhas. */\n description?: string;\n /** Ícone no círculo à esquerda. Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Texto da tag no canto (Show Tag no Figma, onde é \"Experimente\"). */\n tag?: string;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\n/** Um grupo de produtos com título (Product Group no Figma). */\nexport interface MenuPrincipalGroup {\n /** Título do grupo, acima dos itens. */\n label: string;\n items: MenuPrincipalItem[];\n id?: string;\n}\n\nexport type MenuPrincipalEntry = MenuPrincipalItem | MenuPrincipalGroup;\n\nexport interface MenuPrincipalProps {\n /** Itens soltos e grupos, na ordem; o divisor tracejado entra antes e depois de cada grupo. */\n model: MenuPrincipalEntry[];\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Nome acessível do menu. */\n 'aria-label'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuPrincipalHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\nconst isGroup = (entry: MenuPrincipalEntry): entry is MenuPrincipalGroup => 'items' in entry;\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção), como o Menu do Cristal; os grupos são os\n// submenus do Prime e os divisores, os separadores. No Figma é o Menu Principal (página Menu\n// Suspenso), aberto pelo botão de menu do Menubar. O item é um template do Prime, com o ícone,\n// o nome, a descrição e a tag; o visual vem do MenuPrincipal.css.\nexport const MenuPrincipal = forwardRef<MenuPrincipalHandle, MenuPrincipalProps>(\n function MenuPrincipal(\n {\n model,\n popup = false,\n 'aria-label': ariaLabel = 'Menu principal',\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => primeRef.current?.toggle(event),\n show: (event) => primeRef.current?.show(event),\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const toPrime = (item: MenuPrincipalItem): PrimeMenuItem => ({\n id: item.id,\n // Sem label no Prime: ele viraria o aria-label do item, só com parte do texto visível. O\n // nome vem do conteúdo: o nome, a descrição e a tag. Os espaços entre eles não aparecem\n // (estão em flex), mas separam as palavras no nome (\"Início Tela inicial\", não colado).\n command: item.command,\n url: item.url,\n target: item.target,\n className: item.className,\n // O <a> leva o data-pc-section do Prime: o Enter do teclado clica nele (e segue o link).\n template: () => (\n <a\n className=\"cr-menu-principal__action\"\n data-pc-section=\"action\"\n href={item.url ?? '#'}\n target={item.target}\n tabIndex={-1}\n >\n <span className=\"cr-menu-principal__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n <span className=\"cr-menu-principal__text\">\n <span className=\"cr-menu-principal__label\">{item.label}</span>{' '}\n {item.description && (\n <span className=\"cr-menu-principal__description\">{item.description}</span>\n )}\n </span>{' '}\n {item.tag && (\n <Tag className=\"cr-menu-principal__tag\" variant=\"warning\" icon={<DribbbleLogo />}>\n {item.tag}\n </Tag>\n )}\n </a>\n ),\n });\n\n // Divisor antes e depois de cada grupo (entre dois itens soltos, não).\n const items: PrimeMenuItem[] = [];\n let anterior: MenuPrincipalEntry | undefined;\n model.forEach((entry) => {\n if (anterior && (isGroup(entry) || isGroup(anterior))) items.push({ separator: true });\n items.push(\n isGroup(entry)\n ? { id: entry.id, label: entry.label, items: entry.items.map(toPrime) }\n : toPrime(entry),\n );\n anterior = entry;\n });\n\n const classes = ['cr-menu-principal', popup && 'cr-menu-principal--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n menu: { className: 'cr-menu-principal__list', 'aria-label': ariaLabel },\n submenuHeader: { className: 'cr-menu-principal__group' },\n separator: { className: 'cr-menu-principal__separator' },\n menuitem: { className: 'cr-menu-principal__item' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n model={items}\n popup={popup}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // Como no Menu: sem um PrimeReactProvider na aplicação, o clique fora dá erro no Prime.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n },\n);\n","import { useEffect, useId, useState, type ReactNode, type Ref } from 'react';\nimport { Dialog } from 'primereact/dialog';\nimport { Question, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Modal.css';\n\n/**\n * Size no Figma: Small (520px), Medium (768px) e Large (1200 x 720px; abaixo de 768px de tela\n * vira tela cheia, como o Responsive=360 do Figma).\n */\nexport type ModalSize = 'small' | 'medium' | 'large';\n\nexport interface ModalProps {\n visible: boolean;\n /** Pedido para fechar (X ou Esc). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível do modal. */\n title: string;\n /** Padrão: large. */\n size?: ModalSize;\n /** Mostra o botão de ajuda (QuestionMark) ao lado do X, no small e no medium. */\n onHelp?: () => void;\n helpLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, à direita. */\n footer?: ReactNode;\n /** Conteúdo do rodapé à esquerda (ex.: o botão secundário dos Two/Tree Buttons do Figma). */\n footerStart?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: Dialog do PrimeReact no modo unstyled (o p-dialog do PrimeNG da produção): overlay,\n// role=dialog com aria-modal, Esc, foco preso no modal e devolvido a quem o abriu, e o bloqueio\n// da rolagem da página são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. Quando o corpo rola, o rodapé ganha a sombra do Figma (\"Shadow (Up\n// content scrollable)\").\nexport function Modal({\n visible,\n onHide,\n title,\n size = 'large',\n onHelp,\n helpLabel = 'Ajuda',\n closeLabel = 'Fechar',\n footer,\n footerStart,\n children,\n id,\n className,\n}: ModalProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n // O Prime só monta o conteúdo depois de abrir: a ref de callback começa a medir quando o corpo\n // existe. Quando ele rola (conteúdo maior que a altura), o rodapé ganha sombra.\n const [body, setBody] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!body) return;\n const medir = () => setRolavel(body.scrollHeight > body.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(body);\n [...body.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [body, children]);\n\n const classes = ['cr-modal', `cr-modal--${size}`, rolavel && 'cr-modal--scrollable', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Dialog\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n draggable={false}\n resizable={false}\n blockScroll\n pt={{\n mask: { className: 'cr-modal__mask' },\n root: {\n className: classes,\n 'aria-labelledby': titleId,\n 'aria-describedby': undefined,\n },\n }}\n content={({ hide, closeRef }) => (\n <>\n <div className=\"cr-modal__header\">\n <h2 id={titleId} className=\"cr-modal__title\">\n {title}\n </h2>\n <div className=\"cr-modal__tools\">\n {onHelp && size !== 'large' && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<Question />}\n aria-label={helpLabel}\n onClick={onHelp}\n />\n )}\n <IconButton\n ref={closeRef as unknown as Ref<HTMLButtonElement>}\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n </div>\n <div\n ref={setBody}\n className=\"cr-modal__body\"\n // Quando rola, o corpo entra na ordem do Tab para a rolagem pelo teclado (o axe exige\n // que uma área com rolagem seja focável).\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {(footer || footerStart) && (\n <div className=\"cr-modal__footer\">\n <div className=\"cr-modal__footer-start\">{footerStart}</div>\n <div className=\"cr-modal__footer-end\">{footer}</div>\n </div>\n )}\n </>\n )}\n />\n );\n}\n","import { forwardRef, useId, type Ref } from 'react';\nimport {\n MultiSelect as PrimeMultiSelect,\n type MultiSelectPassThroughOptions,\n} from 'primereact/multiselect';\nimport type { ChipRemoveEvent } from 'primereact/chip';\nimport { CaretDown, Check, Info, MagnifyingGlass, WarningCircle } from '@phosphor-icons/react';\nimport { Chip } from '../Chip';\nimport '../Input/Input.css';\nimport './MultiSelect.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type MultiSelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type MultiSelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n/** Density da lista no Figma: itens de 40px (normal) ou 32px (compact). */\nexport type MultiSelectDensity = 'normal' | 'compact';\n\nexport interface MultiSelectProps {\n variant?: MultiSelectVariant;\n size?: MultiSelectSize;\n density?: MultiSelectDensity;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valores selecionados (controlado). */\n value?: unknown[];\n onChange?: (value: unknown[]) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Mostra a busca no topo da lista (Search Filter no Figma). */\n filter?: boolean;\n filterPlaceholder?: string;\n /**\n * Quantos chips aparecem no campo; acima disso, um chip só com o resumo (Chip Group\n * \"4 itens selecionados\" no Figma), cujo X limpa a seleção.\n */\n maxChips?: number;\n /** Texto do resumo; `{0}` vira a quantidade. */\n selectedItemsLabel?: string;\n /** Nome acessível do checkbox de selecionar todos. */\n selectAllLabel?: string;\n /** Texto da lista quando a busca não encontra nada. */\n emptyFilterMessage?: string;\n /** Nome acessível do X dos chips. */\n removeLabel?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: MultiSelect do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção, filtro e\n// \"selecionar todos\" do Prime, espelhando o p-multiSelect do PrimeNG da produção). O rótulo, a\n// caixa e a dica reaproveitam o campo do Input (.cr-field); os selecionados viram Chips do Cristal\n// pelo selectedItemTemplate, porque o Prime mostra o resumo acima do limite só como texto, e o\n// Figma o mostra como chip. A ref vai para o <input> (combobox) do Prime, que recebe o foco.\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(function MultiSelect(\n {\n variant = 'outline',\n size = 'large',\n density = 'normal',\n label,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecionar opção',\n filter = false,\n filterPlaceholder = 'Pesquisar',\n maxChips = 3,\n selectedItemsLabel = '{0} itens selecionados',\n removeLabel = 'Remover',\n selectAllLabel = 'Selecionar todos',\n emptyFilterMessage = 'Nenhum resultado encontrado',\n hint,\n error,\n required,\n disabled,\n id,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n const selected = value ?? [];\n const overflow = selected.length > maxChips;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-multiselect',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const valueOf = (option: unknown) =>\n optionValue ? (option as Record<string, unknown>)[optionValue] : option;\n const labelOf = (item: unknown) => {\n const option = options.find((o) => valueOf(o) === item) ?? item;\n const text = (option as Record<string, unknown> | null)?.[optionLabel];\n return String(text ?? item);\n };\n\n // O X do chip não pode abrir/fechar a lista (o clique subiria até o campo do Prime).\n const remove = (event: ChipRemoveEvent, next: unknown[]) => {\n event.originalEvent.stopPropagation();\n onChange?.(next);\n return false;\n };\n\n const renderSelected = (item?: unknown) => {\n if (item === undefined) {\n return <span className=\"cr-multiselect__placeholder\">{placeholder}</span>;\n }\n if (overflow) {\n if (selected.indexOf(item) !== 0) return null;\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={selectedItemsLabel.replace('{0}', String(selected.length))}\n disabled={disabled}\n onRemove={disabled ? undefined : (event) => remove(event, [])}\n removeLabel={removeLabel}\n />\n );\n }\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={labelOf(item)}\n disabled={disabled}\n onRemove={\n disabled\n ? undefined\n : (event) =>\n remove(\n event,\n selected.filter((v) => v !== item),\n )\n }\n removeLabel={`${removeLabel} ${labelOf(item)}`}\n />\n );\n };\n\n const checkbox = {\n root: { className: 'cr-multiselect__checkbox' },\n box: { className: 'cr-multiselect__checkbox-box' },\n input: { className: 'cr-multiselect__checkbox-input' },\n };\n\n const pt: MultiSelectPassThroughOptions = {\n // Com a lista aberta o foco vai para a busca (no body), fora da caixa: o estado Focused do\n // Figma vem do estado do Prime.\n root: (options) => {\n const open = (options as { state?: { overlayVisible?: boolean } })?.state?.overlayVisible;\n return {\n className: `cr-field__control cr-multiselect__control${open ? ' cr-multiselect__control--open' : ''}`,\n };\n },\n hiddenInputWrapper: { className: 'cr-multiselect__hidden' },\n input: {\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n 'aria-required': required || undefined,\n },\n labelContainer: { className: 'cr-multiselect__value' },\n label: { className: 'cr-multiselect__chips' },\n trigger: { className: 'cr-field__icon cr-multiselect__trigger' },\n panel: { className: `cr-multiselect__panel cr-multiselect__panel--${density}` },\n header: { className: 'cr-multiselect__header' },\n headerCheckboxContainer: { className: 'cr-multiselect__select-all' },\n // O Prime repete role=checkbox na <div> em volta do <input>: o leitor de tela veria dois.\n headerCheckbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined },\n input: { ...checkbox.input, 'aria-label': selectAllLabel },\n },\n filterContainer: { className: 'cr-multiselect__search' },\n // O filtro é um InputText do Prime, que lê o pass-through da raiz (a tipagem do Prime diverge).\n filterInput: {\n root: { className: 'cr-multiselect__search-input', 'aria-label': filterPlaceholder },\n } as never,\n closeButton: { className: 'cr-multiselect__close' },\n wrapper: { className: 'cr-multiselect__wrapper' },\n list: { className: 'cr-multiselect__list' },\n item: (options) => {\n const context = (options as { context?: { focusedIndex?: number; index?: number } })?.context;\n const focused = context !== undefined && context.focusedIndex === context.index;\n return {\n className: `cr-multiselect__item${focused ? ' cr-multiselect__item--focused' : ''}`,\n };\n },\n checkboxContainer: { className: 'cr-multiselect__item-checkbox' },\n // O item (role=option) já diz se está selecionado; o checkbox é só visual para o leitor de tela.\n // O item (role=option) já diz se está selecionado. O checkbox do Prime fica só visual: inert\n // tira o <input> do foco e do leitor de tela (tabindex=-1 e aria-hidden não bastam dentro de\n // um option), e o clique cai no item.\n checkbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined, inert: true },\n },\n emptyMessage: { className: 'cr-multiselect__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeMultiSelect\n unstyled\n inputId={inputId}\n inputRef={ref as Ref<HTMLSelectElement>}\n value={selected}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value as unknown[])}\n disabled={disabled}\n invalid={Boolean(error)}\n placeholder={placeholder}\n selectedItemTemplate={renderSelected}\n filter={filter}\n filterPlaceholder={filterPlaceholder}\n // 7 itens visíveis antes da rolagem, como no Figma (40px no normal, 32px no compact).\n scrollHeight={density === 'compact' ? '224px' : '280px'}\n emptyFilterMessage={emptyFilterMessage}\n filterIcon={\n <span className=\"cr-multiselect__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n }\n dropdownIcon={<CaretDown aria-hidden=\"true\" />}\n checkboxIcon={<Check aria-hidden=\"true\" />}\n itemCheckboxIcon={<Check aria-hidden=\"true\" />}\n pt={pt}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Panel as PrimePanel } from 'primereact/panel';\nimport './Panel.css';\n\n// O onToggle nativo da <div> colide com o do Panel do Prime, que o Figma não usa.\nexport type PanelProps = Omit<HTMLAttributes<HTMLDivElement>, 'onToggle'>;\n\n// Base: Panel do PrimeReact no modo unstyled (o p-panel do PrimeNG da produção). No Figma o Panel é\n// só o contêiner da seção da página, com o conteúdo num slot e sem cabeçalho: o Cristal não repassa\n// header, toggleable nem footer do Prime, e o conteúdo vai em children. Sem cabeçalho, o Prime\n// deixaria a região de conteúdo apontando para um título que não existe: o Cristal tira o role e o\n// aria-labelledby (para nomear o Panel como região, passe role=\"region\" e aria-label).\nexport const Panel = forwardRef<HTMLDivElement, PanelProps>(function Panel(\n { className, style, children, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimePanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n return (\n <PrimePanel\n unstyled\n ref={primeRef}\n // No unstyled, className e style do Panel do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: ['cr-panel', className].filter(Boolean).join(' '), style },\n toggleableContent: {\n className: 'cr-panel__body',\n role: undefined,\n 'aria-labelledby': undefined,\n },\n content: { className: 'cr-panel__content' },\n }}\n {...props}\n >\n {children}\n </PrimePanel>\n );\n});\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { RadioButton, type RadioButtonChangeEvent } from 'primereact/radiobutton';\nimport './Radio.css';\n\n/** Label Size no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type RadioLabelSize = 'default' | 'full';\n\nexport interface RadioProps {\n /** Texto ao lado do controle (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: default. */\n labelSize?: RadioLabelSize;\n checked?: boolean;\n /** Valor da opção, devolvido no `onChange`. */\n value?: unknown;\n /** Nome do grupo: radios com o mesmo `name` se excluem e navegam pelas setas. */\n name?: string;\n onChange?: (event: RadioButtonChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: RadioButton do PrimeReact no modo unstyled (o p-radioButton do PrimeNG da produção), com\n// o <input type=\"radio\"> nativo por cima do círculo: o grupo pelo `name` e as setas do teclado são\n// do navegador. O rótulo é um <label> ligado ao input. A ref entrega o <input>.\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n label,\n showLabel = true,\n labelSize = 'default',\n checked = false,\n value,\n name,\n onChange,\n disabled,\n required,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-radio',\n `cr-radio--label-${labelSize}`,\n disabled && 'cr-radio--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <RadioButton\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n value={value}\n name={name}\n onChange={onChange}\n disabled={disabled}\n required={required}\n pt={{\n root: { className: 'cr-radio__control' },\n input: { className: 'cr-radio__input' },\n box: { className: 'cr-radio__box' },\n icon: { className: 'cr-radio__icon' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-radio__label${showLabel ? '' : ' cr-radio__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type UIEvent,\n} from 'react';\nimport { ScrollPanel as PrimeScrollPanel } from 'primereact/scrollpanel';\nimport './ScrollPanel.css';\n\nexport interface ScrollPanelProps {\n children?: ReactNode;\n /** O que a área mostra, para o leitor de tela (ex.: \"Histórico da carga\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n /** Dê uma altura (ou max-height) para a área rolar. */\n style?: CSSProperties;\n id?: string;\n className?: string;\n}\n\nconst porcentagem = (posicao: number, total: number, visivel: number) =>\n total > visivel ? Math.round((posicao / (total - visivel)) * 100) : 0;\n\n// Base: ScrollPanel do PrimeReact no modo unstyled (o p-scrollPanel do PrimeNG da produção): o\n// Prime esconde a barra nativa e desenha as dele, que acompanham a rolagem e podem ser arrastadas.\n// Visual da Scrollbar do Figma: 8px, polegar fill/neutral/subtle, trilho transparente. O Prime\n// deixa as barras apontando (aria-controls) para um id que o conteúdo não tem, com os valores\n// trocados e em pixels, e o conteúdo que rola fora do Tab: o Cristal dá o foco ao conteúdo (que\n// rola pelo teclado como qualquer área nativa) e deixa as barras só para o mouse, com os valores\n// em porcentagem. A ref entrega a raiz.\nexport const ScrollPanel = forwardRef<HTMLDivElement, ScrollPanelProps>(function ScrollPanel(\n { children, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, style, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeScrollPanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n const contentId = `${useId()}-content`;\n const [posicao, setPosicao] = useState({ x: 0, y: 0 });\n\n const aoRolar = (event: UIEvent<HTMLDivElement>) => {\n const el = event.currentTarget;\n setPosicao({\n x: porcentagem(el.scrollLeft, el.scrollWidth, el.clientWidth),\n y: porcentagem(el.scrollTop, el.scrollHeight, el.clientHeight),\n });\n };\n\n const barra = (orientacao: 'horizontal' | 'vertical', valor: number) => ({\n className: `cr-scrollpanel__bar cr-scrollpanel__bar--${orientacao}`,\n tabIndex: -1,\n 'aria-controls': contentId,\n 'aria-valuenow': valor,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n });\n\n // No unstyled, className e style do ScrollPanel do Prime não chegam ao elemento; vão pelo pt.\n // O Prime lê as barras como `barx` e `bary`, mas a tipagem dele as chama de barX e barY: o objeto\n // fica numa constante para o TypeScript aceitar as chaves que o Prime de fato usa.\n const pt = {\n root: { className: ['cr-scrollpanel', className].filter(Boolean).join(' '), style },\n wrapper: { className: 'cr-scrollpanel__wrapper' },\n content: {\n id: contentId,\n className: 'cr-scrollpanel__content',\n tabIndex: 0,\n role: 'region',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onScroll: aoRolar,\n },\n barx: barra('horizontal', posicao.x),\n bary: barra('vertical', posicao.y),\n };\n\n return (\n <PrimeScrollPanel unstyled ref={primeRef} id={id} pt={pt}>\n {children}\n </PrimeScrollPanel>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type KeyboardEvent, type ReactNode } from 'react';\nimport { SelectButton } from 'primereact/selectbutton';\nimport './SegmentControl.css';\n\n/**\n * No Figma: Primary é o Header Segment Control (pílula em fill/brand/subtlest) e Secondary é o\n * Segment Control (cinza, com ícones).\n */\nexport type SegmentControlVariant = 'primary' | 'secondary';\n\nexport interface SegmentControlOption {\n label: string;\n value: string | number;\n /** Ícone de 16px antes do texto (o Secondary do Figma usa). */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentControlProps {\n options: SegmentControlOption[];\n /** Valor do segmento ativo (controlado). */\n value?: string | number;\n onChange?: (value: string | number) => void;\n variant?: SegmentControlVariant;\n /** O que o grupo controla, para o leitor de tela (ex.: \"Visualização\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\n// Base: SelectButton do PrimeReact no modo unstyled (o p-selectButton do PrimeNG da produção):\n// grupo de botões com aria-pressed e as setas do teclado do Prime; o Cristal soma o Enter à barra\n// de espaço. Sempre há um segmento ativo (allowEmpty desligado). O visual vem do\n// SegmentControl.css. A ref entrega o grupo.\nexport const SegmentControl = forwardRef<HTMLDivElement, SegmentControlProps>(\n function SegmentControl(\n {\n options,\n value,\n onChange,\n variant = 'primary',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n disabled,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<SelectButton>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-segment', `cr-segment--${variant}`, className].filter(Boolean).join(' ');\n\n return (\n <SelectButton\n unstyled\n ref={primeRef}\n id={id}\n options={options}\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n value={value}\n onChange={(event) => {\n if (event.value != null) onChange?.(event.value as string | number);\n }}\n allowEmpty={false}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n itemTemplate={(option: SegmentControlOption) => (\n <>\n {option.icon && (\n <span className=\"cr-segment__icon\" aria-hidden=\"true\">\n {option.icon}\n </span>\n )}\n <span className=\"cr-segment__label\">{option.label}</span>\n </>\n )}\n pt={{\n root: { className: classes },\n button: {\n className: 'cr-segment__item',\n // O Prime só ativa com a barra de espaço; um role=button responde também ao Enter.\n onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') event.currentTarget.click();\n },\n },\n }}\n />\n );\n },\n);\n","import { forwardRef, useCallback, useId, useState, type Ref } from 'react';\nimport { Dropdown, type DropdownPassThroughOptions } from 'primereact/dropdown';\nimport { CaretDown, CaretUp, Info, WarningCircle } from '@phosphor-icons/react';\nimport '../Input/Input.css';\nimport './Select.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type SelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type SelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface SelectProps {\n variant?: SelectVariant;\n size?: SelectSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valor selecionado (controlado). */\n value?: unknown;\n onChange?: (value: unknown) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n /** Vai no campo (combobox). */\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: Dropdown do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção e posição da\n// lista do Prime, espelhando o p-dropdown do PrimeNG da produção). O rótulo, a caixa e a dica\n// reaproveitam o campo do Input (.cr-field) e a lista segue a Dropdown List do Menu. O Dropdown do\n// Prime não marca o campo como combobox: o Cristal completa (role, aria-expanded e aria-controls).\n// Pelo teclado, o Prime leva o foco para o item (role=option), que o leitor de tela anuncia. A\n// ref vai para o campo, que recebe o foco.\nexport const Select = forwardRef<HTMLInputElement, SelectProps>(function Select(\n {\n variant = 'outline',\n size = 'large',\n label,\n 'aria-label': ariaLabel,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecione uma opção',\n hint,\n error,\n required,\n disabled,\n id,\n name,\n className,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const listId = `${inputId}-list`;\n const supportText = error ?? hint;\n const [open, setOpen] = useState(false);\n\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n input?.setAttribute('role', 'combobox');\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-select',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const pt: DropdownPassThroughOptions = {\n root: {\n className: `cr-field__control cr-select__control${open ? ' cr-select__control--open' : ''}`,\n // O Prime aponta para um item mesmo sem destaque (dropdownItem_-1); o foco vai no item.\n 'aria-activedescendant': undefined,\n },\n // O <select> escondido do Prime só existe para formulários: fora da árvore de acessibilidade.\n select: { 'aria-hidden': true },\n hiddenSelectedMessage: { className: 'cr-select__hidden' },\n // O Prime usa a mesma chave no texto do campo e no combobox escondido.\n input: { className: 'cr-select__value' },\n trigger: { className: 'cr-field__icon cr-select__trigger', 'aria-hidden': true },\n panel: { className: 'cr-select__panel' },\n wrapper: { className: 'cr-select__wrapper' },\n list: { className: 'cr-select__list', id: listId },\n item: { className: 'cr-select__item' },\n emptyMessage: { className: 'cr-select__item cr-select__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <Dropdown\n unstyled\n inputId={inputId}\n focusInputRef={setInputRef as unknown as Ref<HTMLInputElement>}\n value={value}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value)}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n disabled={disabled}\n required={required}\n name={name}\n invalid={Boolean(error)}\n placeholder={placeholder}\n valueTemplate={(option: unknown) =>\n option == null ? (\n <span className=\"cr-select__placeholder\">{placeholder}</span>\n ) : (\n String((option as Record<string, unknown>)[optionLabel] ?? option)\n )\n }\n // 5 itens visíveis antes da rolagem, como no Figma (itens de 37px).\n scrollHeight=\"185px\"\n dropdownIcon={<CaretDown />}\n collapseIcon={<CaretUp />}\n aria-label={label ? undefined : ariaLabel}\n aria-expanded={open}\n aria-controls={open ? listId : undefined}\n aria-describedby={supportText ? hintId : undefined}\n aria-invalid={error ? true : undefined}\n aria-required={required || undefined}\n pt={pt}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { InputSwitch, type InputSwitchChangeEvent } from 'primereact/inputswitch';\nimport './Switch.css';\n\n/** Size no Figma: Medium (48x28) e Small (32x20). */\nexport type SwitchSize = 'medium' | 'small';\n/** Label Position no Figma: lado do rótulo em relação ao switch. */\nexport type SwitchLabelPosition = 'right' | 'left';\n\nexport interface SwitchProps {\n /** Texto ao lado do switch (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: right. */\n labelPosition?: SwitchLabelPosition;\n /** Padrão: medium. */\n size?: SwitchSize;\n checked?: boolean;\n onChange?: (event: InputSwitchChangeEvent) => void;\n disabled?: boolean;\n name?: string;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: InputSwitch do PrimeReact no modo unstyled (o p-inputSwitch do PrimeNG da produção), com o\n// <input role=\"switch\"> nativo por cima do trilho. O Prime também põe role=\"checkbox\" na div de\n// fora, o que aninha dois controles: o Cristal tira esse role. O rótulo é um <label> ligado ao\n// input. A ref entrega o <input>.\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n {\n label,\n showLabel = true,\n labelPosition = 'right',\n size = 'medium',\n checked = false,\n onChange,\n disabled,\n name,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-switch',\n `cr-switch--${size}`,\n `cr-switch--label-${labelPosition}`,\n disabled && 'cr-switch--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <InputSwitch\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n name={name}\n pt={{\n root: { className: 'cr-switch__control', role: undefined, 'aria-checked': undefined },\n input: { className: 'cr-switch__input' },\n slider: { className: 'cr-switch__track' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-switch__label${showLabel ? '' : ' cr-switch__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n TabView,\n TabPanel as PrimeTabPanel,\n type TabPanelHeaderTemplateOptions,\n} from 'primereact/tabview';\nimport { X } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport './Tabs.css';\n\n/** Uma aba (.Tab Item no Figma) e o conteúdo dela. */\nexport interface TabPanelProps {\n /** Texto da aba (Label no Figma). */\n header: string;\n /** Ícone antes do texto (Leading Icon no Figma). */\n leftIcon?: ReactNode;\n /** Contador depois do texto (Badge no Figma). */\n badge?: ReactNode;\n /** Mostra o X (Tab Btn no Figma) e é chamado ao fechar a aba (clique no X ou Delete na aba). */\n onClose?: () => void;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/** Só descreve a aba: quem desenha é o Tabs. */\nexport function TabPanel(_props: TabPanelProps): null {\n return null;\n}\n\nexport interface TabsProps {\n /** Aba ativa (controlado). Sem ela, o Tabs controla sozinho. */\n activeIndex?: number;\n onTabChange?: (index: number) => void;\n /** As abas, como `<TabPanel>`. */\n children: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: TabView do PrimeReact no modo unstyled (o p-tabView do PrimeNG da produção): tablist, abas,\n// painéis e o teclado (setas, Home e End) do Prime. Cada aba vem de um <TabPanel> do Cristal, que\n// vira o TabPanel do Prime com o desenho do Figma (ícone, texto, Badge e X) pelo headerTemplate. O\n// X do Prime fica dentro do role=tab como um segundo controle; o do Cristal é só visual (clique) e,\n// pelo teclado, a aba fecha com Delete (anunciado pelo aria-keyshortcuts). A ref entrega a raiz.\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { activeIndex, onTabChange, children, id, className },\n ref,\n) {\n const primeRef = useRef<TabView>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n // Com onTabChange o Prime trata a aba ativa como controlada: sem activeIndex, o Tabs guarda.\n const [interno, setInterno] = useState(0);\n const ativa = activeIndex ?? interno;\n\n const panels = Children.toArray(children).filter((child): child is ReactElement<TabPanelProps> =>\n isValidElement(child),\n );\n\n const header = (panel: TabPanelProps) =>\n function TabHeader(options: TabPanelHeaderTemplateOptions) {\n const element = options.element as ReactElement<{\n onKeyDown?: (event: KeyboardEvent) => void;\n }>;\n const close = panel.onClose;\n return cloneElement(\n element,\n {\n 'aria-keyshortcuts': close ? 'Delete' : undefined,\n onKeyDown: (event: KeyboardEvent) => {\n if (close && event.key === 'Delete') close();\n else element.props.onKeyDown?.(event);\n },\n } as object,\n <>\n {panel.leftIcon && (\n <span className=\"cr-tabs__icon\" aria-hidden=\"true\">\n {panel.leftIcon}\n </span>\n )}\n <span className=\"cr-tabs__label\">{panel.header}</span>\n {panel.badge !== undefined && <Badge className=\"cr-tabs__badge\">{panel.badge}</Badge>}\n {close && (\n // O X é só para o mouse: pelo teclado a aba fecha com Delete (aria-keyshortcuts).\n <span\n className=\"cr-tabs__close\"\n aria-hidden=\"true\"\n onClick={(event: MouseEvent) => {\n event.stopPropagation();\n close();\n }}\n >\n <X />\n </span>\n )}\n </>,\n );\n };\n\n return (\n <TabView\n unstyled\n ref={primeRef}\n id={id}\n activeIndex={ativa}\n onTabChange={(event) => {\n setInterno(event.index);\n onTabChange?.(event.index);\n }}\n pt={{\n root: { className: ['cr-tabs', className].filter(Boolean).join(' ') },\n navContainer: { className: 'cr-tabs__nav-container' },\n navContent: { className: 'cr-tabs__nav-content' },\n nav: { className: 'cr-tabs__nav' },\n inkbar: { className: 'cr-tabs__inkbar' },\n panelContainer: { className: 'cr-tabs__panels' },\n }}\n >\n {panels.map((panel, index) => (\n <PrimeTabPanel\n key={panel.key ?? index}\n header={panel.props.header}\n disabled={panel.props.disabled}\n headerTemplate={header(panel.props)}\n pt={{\n header: { className: 'cr-tabs__item' },\n headerAction: { className: 'cr-tabs__tab' },\n content: { className: 'cr-tabs__panel' },\n }}\n >\n {panel.props.children}\n </PrimeTabPanel>\n ))}\n </TabView>\n );\n});\n"]}