{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "igreen", "homepage": "https://igreen-registry.vercel.app", "items": [ { "name": "choropleth-map", "type": "registry:ui", "title": "ChoroplethMap", "description": "Mapa coroplético data-driven: colore regiões de uma topologia (GeoJSON ou TopoJSON) por valor, com rampa sequencial derivada de token do DS, legenda, tooltip e clique para drill-down. Para mapa FIXO do Brasil por UF prefira a receita de paths inline (sem dependência) — ver USAGE.", "registryDependencies": [ "@igreen/tooltip", "@igreen/tv" ], "dependencies": [ "d3-geo@^3.1.1", "topojson-client@^3.1.0", "@types/d3-geo@^3.1.0", "@types/geojson@^7946.0.14", "@types/topojson-specification@^1.0.5" ], "files": [ { "path": "src/components/ui/ChoroplethMap/USAGE.md", "type": "registry:file", "target": "components/ui/ChoroplethMap/USAGE.md" }, { "path": "src/components/ui/ChoroplethMap/choropleth-map.styles.ts", "type": "registry:ui", "target": "components/ui/ChoroplethMap/choropleth-map.styles.ts" }, { "path": "src/components/ui/ChoroplethMap/choropleth-map.tsx", "type": "registry:ui", "target": "components/ui/ChoroplethMap/choropleth-map.tsx" }, { "path": "src/components/ui/ChoroplethMap/choropleth-map.types.ts", "type": "registry:ui", "target": "components/ui/ChoroplethMap/choropleth-map.types.ts" }, { "path": "src/components/ui/ChoroplethMap/index.ts", "type": "registry:ui", "target": "components/ui/ChoroplethMap/index.ts" } ], "meta": { "stamp": "igreen-ds · choropleth-map · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-gantt", "type": "registry:ui", "title": "Exemplo — Cronograma (Gantt com vínculos, showcase real)", "description": "A tela completa do `Gantt`: 20 linhas em 4 níveis, 16 vínculos dos 4 tipos, 2 conflitos de prazo, os 4 gestos aplicando de verdade, filtro nos 6 kind, painel de detalhe e drawer de nova tarefa. Extração 1:1 do showcase do DS — é a referência de COMPORTAMENTO do componente, não um toy.", "files": [ { "path": "src/examples/gantt/_gantt-data.tsx", "type": "registry:ui", "target": "examples/gantt/_gantt-data.tsx" }, { "path": "src/examples/gantt/gantt-screen.tsx", "type": "registry:ui", "target": "examples/gantt/gantt-screen.tsx" }, { "path": "src/examples/gantt/index.ts", "type": "registry:ui", "target": "examples/gantt/index.ts" } ], "registryDependencies": [ "@igreen/gantt", "@igreen/button", "@igreen/chip", "@igreen/avatar-ig", "@igreen/floating-panel", "@igreen/form-field", "@igreen/page-header" ], "meta": { "stamp": "igreen-ds · example-gantt · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "gantt", "type": "registry:ui", "title": "Gantt", "description": "Cronograma de projeto com vínculos entre tarefas. Hierarquia com collapse e summary derivado à esquerda, eixo de tempo em 4 escalas à direita, e os 4 tipos de dependência (FS/SS/FF/SF) com lag desenhados como setas ortogonais. Marcos em losango, progresso na barra, detecção de conflito e caminho crítico opt-in. Dumb sobre mutação: emite onBarMove/onLinkViolations e nunca reagenda. Não confundir com Scheduler (eventos) nem com Calendar/DatePicker (escolher data).", "registryDependencies": [ "@igreen/button", "@igreen/checkbox", "@igreen/dropdown-menu", "@igreen/floating-panel", "@igreen/popover", "@igreen/radio-group", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "date-fns@^4.1.0", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Gantt/gantt.styles.ts", "type": "registry:ui", "target": "components/ui/Gantt/gantt.styles.ts" }, { "path": "src/components/ui/Gantt/gantt.tsx", "type": "registry:ui", "target": "components/ui/Gantt/gantt.tsx" }, { "path": "src/components/ui/Gantt/gantt.types.ts", "type": "registry:ui", "target": "components/ui/Gantt/gantt.types.ts" }, { "path": "src/components/ui/Gantt/hooks/layout.ts", "type": "registry:ui", "target": "components/ui/Gantt/hooks/layout.ts" }, { "path": "src/components/ui/Gantt/hooks/links.ts", "type": "registry:ui", "target": "components/ui/Gantt/hooks/links.ts" }, { "path": "src/components/ui/Gantt/index.ts", "type": "registry:ui", "target": "components/ui/Gantt/index.ts" }, { "path": "src/components/ui/Gantt/parts/gantt-bar.tsx", "type": "registry:ui", "target": "components/ui/Gantt/parts/gantt-bar.tsx" }, { "path": "src/components/ui/Gantt/parts/gantt-filter-panel.tsx", "type": "registry:ui", "target": "components/ui/Gantt/parts/gantt-filter-panel.tsx" }, { "path": "src/components/ui/Gantt/parts/gantt-grid.tsx", "type": "registry:ui", "target": "components/ui/Gantt/parts/gantt-grid.tsx" }, { "path": "src/components/ui/Gantt/parts/gantt-skeleton.tsx", "type": "registry:ui", "target": "components/ui/Gantt/parts/gantt-skeleton.tsx" }, { "path": "src/components/ui/Gantt/parts/gantt-links-layer.tsx", "type": "registry:ui", "target": "components/ui/Gantt/parts/gantt-links-layer.tsx" }, { "path": "src/components/ui/Gantt/parts/gantt-toolbar.tsx", "type": "registry:ui", "target": "components/ui/Gantt/parts/gantt-toolbar.tsx" }, { "path": "src/components/ui/Gantt/USAGE.md", "type": "registry:file", "target": "components/ui/Gantt/USAGE.md" }, { "path": "src/components/ui/Gantt/views/timeline.tsx", "type": "registry:ui", "target": "components/ui/Gantt/views/timeline.tsx" }, { "path": "src/components/ui/Gantt/parts/gantt-applied-filters.tsx", "type": "registry:component" }, { "path": "src/components/ui/Gantt/hooks/filters.ts", "type": "registry:component" }, { "path": "src/components/ui/Gantt/hooks/drag.ts", "type": "registry:component" }, { "path": "src/components/ui/Gantt/views/calendar.tsx", "type": "registry:component" }, { "path": "src/components/ui/Gantt/hooks/week-segments.ts", "type": "registry:component" }, { "path": "src/components/ui/Gantt/views/list.tsx", "type": "registry:component" } ], "meta": { "stamp": "igreen-ds · gantt · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "scheduler", "type": "registry:ui", "title": "Scheduler", "description": "Calendário de EVENTOS com 4 modos de visualização (mês · semana · dia · lista), toolbar embutida com busca e filtros declarativos, painel-coluna de filtro, drag & drop por ponteiro e roving tabindex. Não confundir com Calendar, que é o seletor de data de formulário.", "registryDependencies": [ "@igreen/button", "@igreen/checkbox", "@igreen/dropdown-menu", "@igreen/floating-panel", "@igreen/popover", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "@dnd-kit/core@^6.3.1", "date-fns@^4.1.0", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Scheduler/USAGE.md", "type": "registry:file", "target": "components/ui/Scheduler/USAGE.md" }, { "path": "src/components/ui/Scheduler/hooks/layout.ts", "type": "registry:ui", "target": "components/ui/Scheduler/hooks/layout.ts" }, { "path": "src/components/ui/Scheduler/hooks/use-media-query.ts", "type": "registry:ui", "target": "components/ui/Scheduler/hooks/use-media-query.ts" }, { "path": "src/components/ui/Scheduler/hooks/use-scheduler-dnd.ts", "type": "registry:ui", "target": "components/ui/Scheduler/hooks/use-scheduler-dnd.ts" }, { "path": "src/components/ui/Scheduler/hooks/use-scheduler-filter.ts", "type": "registry:ui", "target": "components/ui/Scheduler/hooks/use-scheduler-filter.ts" }, { "path": "src/components/ui/Scheduler/hooks/use-scheduler-keyboard.ts", "type": "registry:ui", "target": "components/ui/Scheduler/hooks/use-scheduler-keyboard.ts" }, { "path": "src/components/ui/Scheduler/hooks/use-scheduler-state.ts", "type": "registry:ui", "target": "components/ui/Scheduler/hooks/use-scheduler-state.ts" }, { "path": "src/components/ui/Scheduler/index.ts", "type": "registry:ui", "target": "components/ui/Scheduler/index.ts" }, { "path": "src/components/ui/Scheduler/parts/draggable-event.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/parts/draggable-event.tsx" }, { "path": "src/components/ui/Scheduler/parts/mini-month.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/parts/mini-month.tsx" }, { "path": "src/components/ui/Scheduler/parts/scheduler-event.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/parts/scheduler-event.tsx" }, { "path": "src/components/ui/Scheduler/parts/scheduler-filter-panel.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/parts/scheduler-filter-panel.tsx" }, { "path": "src/components/ui/Scheduler/parts/scheduler-toolbar.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/parts/scheduler-toolbar.tsx" }, { "path": "src/components/ui/Scheduler/scheduler.styles.ts", "type": "registry:ui", "target": "components/ui/Scheduler/scheduler.styles.ts" }, { "path": "src/components/ui/Scheduler/scheduler.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/scheduler.tsx" }, { "path": "src/components/ui/Scheduler/scheduler.types.ts", "type": "registry:ui", "target": "components/ui/Scheduler/scheduler.types.ts" }, { "path": "src/components/ui/Scheduler/views/list.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/views/list.tsx" }, { "path": "src/components/ui/Scheduler/views/month.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/views/month.tsx" }, { "path": "src/components/ui/Scheduler/views/time-grid.tsx", "type": "registry:ui", "target": "components/ui/Scheduler/views/time-grid.tsx" } ], "meta": { "stamp": "igreen-ds · scheduler · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "tabs-navigation", "type": "registry:ui", "title": "TabsNavigation", "description": "Abas de NAVEGAÇÃO estilo navegador: cada aba é uma sessão aberta (conversa, chamado, registro) com identidade, status e ações próprias. Controlado; o conteúdo pode morar fora do componente.", "registryDependencies": [ "@igreen/button", "@igreen/dropdown-menu", "@igreen/hover-card", "@igreen/tv" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/TabsNavigation/index.ts", "type": "registry:ui", "target": "components/ui/TabsNavigation/index.ts" }, { "path": "src/components/ui/TabsNavigation/tabs-navigation-context.ts", "type": "registry:ui", "target": "components/ui/TabsNavigation/tabs-navigation-context.ts" }, { "path": "src/components/ui/TabsNavigation/tabs-navigation.styles.ts", "type": "registry:ui", "target": "components/ui/TabsNavigation/tabs-navigation.styles.ts" }, { "path": "src/components/ui/TabsNavigation/tabs-navigation.tsx", "type": "registry:ui", "target": "components/ui/TabsNavigation/tabs-navigation.tsx" }, { "path": "src/components/ui/TabsNavigation/tabs-navigation.types.ts", "type": "registry:ui", "target": "components/ui/TabsNavigation/tabs-navigation.types.ts" }, { "path": "src/components/ui/TabsNavigation/USAGE.md", "type": "registry:file", "target": "components/ui/TabsNavigation/USAGE.md" }, { "path": "src/components/ui/TabsNavigation/use-arrastar-para-rolar.ts", "type": "registry:ui", "target": "components/ui/TabsNavigation/use-arrastar-para-rolar.ts" } ], "meta": { "stamp": "igreen-ds · tabs-navigation · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "utils", "type": "registry:file", "title": "cn (tailwind-merge configurado p/ DS)", "description": "cn() com extendTailwindMerge: presets tipograficos como font-size (L-016) + prefixos DS (pad/sp/gp/radius/sh/form) resolvidos como conflitantes. NAO e o cn padrao do shadcn.", "dependencies": [ "clsx@^2.1.1", "tailwind-merge@^3.0.0" ], "files": [ { "path": "src/lib/utils.ts", "type": "registry:file", "target": "src/lib/utils.ts" } ], "meta": { "stamp": "igreen-ds · utils · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "tv", "type": "registry:file", "title": "tv (tailwind-variants + twMergeConfig DS)", "description": "tv() que injeta os 27 presets tipograficos no classGroup font-size do tailwind-merge (L-016). Sem ele, text-body-* e tratado como cor e removido.", "dependencies": [ "tailwind-variants@^3.0.0" ], "files": [ { "path": "src/utils/tv.ts", "type": "registry:file", "target": "src/utils/tv.ts" } ], "meta": { "stamp": "igreen-ds · tv · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "theme", "type": "registry:file", "title": "Tema iGreen (Tailwind v4 @theme)", "description": "CSS @theme gerado dos tokens OKLCH. Importar DEPOIS de tailwindcss + tw-animate-css e ANTES dos componentes, senao gap-gp-*/rounded-radius-* ficam orfas. Traz tambem: @font-face do Geist (copie os .woff2 pro seu public/fonts/), --font-sans/--font-mono, @custom-variant dark, regras de html/body/button e as utilities outline-float e scrollbar-thin/default. NAO redeclare nenhuma delas no seu CSS: classe comum vence @utility e a SEGUNDA declaracao de @custom-variant vence a primeira.", "dependencies": [ "tw-animate-css@^1.4.0" ], "files": [ { "path": "src/styles/theme/tailwind-theme.css", "type": "registry:file", "target": "src/styles/theme/tailwind-theme.css" } ], "meta": { "importOrder": "tailwindcss -> tw-animate-css -> ./theme/tailwind-theme.css -> componentes", "stamp": "igreen-ds · theme · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "theme-blue", "type": "registry:file", "title": "Tema Azul", "description": "Overlay de marca escopado em [data-theme=\"blue\"]. Sobrescreve SO as cores que diferem do tema-base — nao substitui o item `theme`, complementa. Importar DEPOIS do tailwind-theme.css e por data-theme=\"blue\" no ; sem o atributo o CSS fica inerte.", "files": [ { "path": "src/styles/theme/brand-blue.css", "type": "registry:file", "target": "src/styles/theme/brand-blue.css" } ], "meta": { "stamp": "igreen-ds · theme-blue · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "theme-green", "type": "registry:file", "title": "Tema Verde (grass)", "description": "Overlay de marca escopado em [data-theme=\"green\"]. Sobrescreve SO as cores que diferem do tema-base — nao substitui o item `theme`, complementa. Importar DEPOIS do tailwind-theme.css e por data-theme=\"green\" no ; sem o atributo o CSS fica inerte.", "files": [ { "path": "src/styles/theme/brand-green.css", "type": "registry:file", "target": "src/styles/theme/brand-green.css" } ], "meta": { "stamp": "igreen-ds · theme-green · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "theme-pay", "type": "registry:file", "title": "Tema iGreen Pay (verde vivo)", "description": "Overlay de marca escopado em [data-theme=\"pay\"]. Sobrescreve SO as cores que diferem do tema-base — nao substitui o item `theme`, complementa. Importar DEPOIS do tailwind-theme.css e por data-theme=\"pay\" no ; sem o atributo o CSS fica inerte.", "files": [ { "path": "src/styles/theme/brand-pay.css", "type": "registry:file", "target": "src/styles/theme/brand-pay.css" } ], "meta": { "stamp": "igreen-ds · theme-pay · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "theme-vibrant", "type": "registry:file", "title": "Tema iGreen Vibrant (verde fluorescente #0fff00)", "description": "Overlay de marca escopado em [data-theme=\"vibrant\"]. Sobrescreve SO as cores que diferem do tema-base — nao substitui o item `theme`, complementa. Importar DEPOIS do tailwind-theme.css e por data-theme=\"vibrant\" no ; sem o atributo o CSS fica inerte.", "files": [ { "path": "src/styles/theme/brand-vibrant.css", "type": "registry:file", "target": "src/styles/theme/brand-vibrant.css" } ], "meta": { "stamp": "igreen-ds · theme-vibrant · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Botao iGreen (tv()). 5 cores x 4 variants x sizes, shape, fullWidth, disabled.", "registryDependencies": [ "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/Button/button.tsx", "type": "registry:ui", "target": "components/ui/Button/button.tsx" }, { "path": "src/components/ui/Button/button.styles.ts", "type": "registry:ui", "target": "components/ui/Button/button.styles.ts" }, { "path": "src/components/ui/Button/button.types.ts", "type": "registry:ui", "target": "components/ui/Button/button.types.ts" }, { "path": "src/components/ui/Button/index.ts", "type": "registry:ui", "target": "components/ui/Button/index.ts" }, { "path": "src/components/ui/Button/USAGE.md", "type": "registry:file", "target": "components/ui/Button/USAGE.md" } ], "meta": { "stamp": "igreen-ds · button · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "input", "type": "registry:ui", "title": "Input", "description": "Input adaptado aos tokens DS (cva). Origem interna shadcn/ - nao vaza.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/input.tsx", "type": "registry:ui", "target": "components/ui/input.tsx" } ], "meta": { "stamp": "igreen-ds · input · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "label", "type": "registry:ui", "title": "Label", "description": "Label acessivel (Radix) adaptado aos tokens DS. Base de FormField e forms.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-label@^2.1.8", "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/label.tsx", "type": "registry:ui", "target": "components/ui/label.tsx" } ], "meta": { "stamp": "igreen-ds · label · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "textarea", "type": "registry:ui", "title": "Textarea", "description": "Textarea (cva) com tokens DS e focus animado. Completa o trio de inputs do FormField.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/textarea.tsx", "type": "registry:ui", "target": "components/ui/textarea.tsx" } ], "meta": { "stamp": "igreen-ds · textarea · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "select", "type": "registry:ui", "title": "Select", "description": "Select (Radix) adaptado aos tokens DS. Forms e filtros. Origem interna shadcn/ - nao vaza.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-select@^2.2.6", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/select.tsx", "type": "registry:ui", "target": "components/ui/select.tsx" } ], "meta": { "stamp": "igreen-ds · select · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "card", "type": "registry:ui", "title": "Card", "description": "Card + Header/Footer/Title/Description/Content. Tokens DS. KPIs/billing/dashboard.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [], "files": [ { "path": "src/components/shadcn/card.tsx", "type": "registry:ui", "target": "components/ui/card.tsx" } ], "meta": { "stamp": "igreen-ds · card · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "Badge (tv()) - 5 cores x 4 variants x 3 sizes. Status/tags em tabelas e dashboards.", "registryDependencies": [ "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/shadcn/badge.tsx", "type": "registry:ui", "target": "components/ui/badge.tsx" } ], "meta": { "stamp": "igreen-ds · badge · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "separator", "type": "registry:ui", "title": "Separator", "description": "Separator (Radix) horizontal/vertical com token de borda DS. Divisoria de secoes.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-separator@^1.1.8" ], "files": [ { "path": "src/components/shadcn/separator.tsx", "type": "registry:ui", "target": "components/ui/separator.tsx" } ], "meta": { "stamp": "igreen-ds · separator · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "checkbox", "type": "registry:ui", "title": "Checkbox", "description": "Checkbox (Radix) com estado checked/indeterminate e tokens DS. Forms e selecao de tabela.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-checkbox@^1.3.3", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/checkbox.tsx", "type": "registry:ui", "target": "components/ui/checkbox.tsx" } ], "meta": { "stamp": "igreen-ds · checkbox · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "accordion", "type": "registry:ui", "title": "Accordion", "description": "Accordion (Radix) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-accordion@^1.2.12", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/accordion.tsx", "type": "registry:ui", "target": "components/ui/accordion.tsx" } ], "meta": { "stamp": "igreen-ds · accordion · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "alert", "type": "registry:ui", "title": "Alert", "description": "Alert (cva) - feedback inline com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/alert.tsx", "type": "registry:ui", "target": "components/ui/alert.tsx" } ], "meta": { "stamp": "igreen-ds · alert · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "alert-dialog", "type": "registry:ui", "title": "AlertDialog", "description": "AlertDialog (Radix) - confirmacao destrutiva.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-alert-dialog@^1.1.15" ], "files": [ { "path": "src/components/shadcn/alert-dialog.tsx", "type": "registry:ui", "target": "components/ui/alert-dialog.tsx" } ], "meta": { "stamp": "igreen-ds · alert-dialog · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "avatar", "type": "registry:ui", "title": "Avatar", "description": "Avatar (Radix) Image/Fallback com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-avatar@^1.1.11" ], "files": [ { "path": "src/components/shadcn/avatar.tsx", "type": "registry:ui", "target": "components/ui/avatar.tsx" } ], "meta": { "stamp": "igreen-ds · avatar · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "breadcrumb", "type": "registry:ui", "title": "Breadcrumb", "description": "Caminho de navegação (breadcrumb) + a variação BreadcrumbSwitcher: em página de detalhe, o item do registro aberto vira gatilho e abre uma lista com busca pra trocar de registro.", "registryDependencies": [ "@igreen/command", "@igreen/popover", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "@radix-ui/react-slot@^1.2.4", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/breadcrumb.tsx", "type": "registry:ui", "target": "components/ui/breadcrumb.tsx" }, { "path": "src/components/ui/Breadcrumb/breadcrumb-switcher.styles.ts", "type": "registry:ui", "target": "components/ui/Breadcrumb/breadcrumb-switcher.styles.ts" }, { "path": "src/components/ui/Breadcrumb/breadcrumb-switcher.tsx", "type": "registry:ui", "target": "components/ui/Breadcrumb/breadcrumb-switcher.tsx" }, { "path": "src/components/ui/Breadcrumb/breadcrumb-switcher.types.ts", "type": "registry:ui", "target": "components/ui/Breadcrumb/breadcrumb-switcher.types.ts" }, { "path": "src/components/ui/Breadcrumb/breadcrumb.styles.ts", "type": "registry:ui", "target": "components/ui/Breadcrumb/breadcrumb.styles.ts" }, { "path": "src/components/ui/Breadcrumb/breadcrumb.tsx", "type": "registry:ui", "target": "components/ui/Breadcrumb/breadcrumb.tsx" }, { "path": "src/components/ui/Breadcrumb/breadcrumb.types.ts", "type": "registry:ui", "target": "components/ui/Breadcrumb/breadcrumb.types.ts" }, { "path": "src/components/ui/Breadcrumb/index.ts", "type": "registry:ui", "target": "components/ui/Breadcrumb/index.ts" }, { "path": "src/components/ui/Breadcrumb/USAGE.md", "type": "registry:file", "target": "components/ui/Breadcrumb/USAGE.md" } ], "meta": { "stamp": "igreen-ds · breadcrumb · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "calendar", "type": "registry:ui", "title": "Calendar", "description": "Calendar (react-day-picker) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "lucide-react@^1.7.0", "react-day-picker@^9.14.0" ], "files": [ { "path": "src/components/shadcn/calendar.tsx", "type": "registry:ui", "target": "components/ui/calendar.tsx" } ], "meta": { "stamp": "igreen-ds · calendar · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "command", "type": "registry:ui", "title": "Command", "description": "Command palette (cmdk) com tokens DS. Usa o Dialog do DS.", "registryDependencies": [ "@igreen/utils", "@igreen/dialog" ], "dependencies": [ "@radix-ui/react-dialog@^1.1.15", "cmdk@^1.1.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/command.tsx", "type": "registry:ui", "target": "components/ui/command.tsx" } ], "meta": { "stamp": "igreen-ds · command · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "dialog", "type": "registry:ui", "title": "Dialog", "description": "Dialog (Radix) modal centrado com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-dialog@^1.1.15", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/dialog.tsx", "type": "registry:ui", "target": "components/ui/dialog.tsx" } ], "meta": { "stamp": "igreen-ds · dialog · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "dropdown-menu", "type": "registry:ui", "title": "DropdownMenu", "description": "DropdownMenu (Radix) com sub/checkbox/radio e tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-dropdown-menu@^2.1.16", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/dropdown-menu.tsx", "type": "registry:ui", "target": "components/ui/dropdown-menu.tsx" } ], "meta": { "stamp": "igreen-ds · dropdown-menu · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "input-group", "type": "registry:ui", "title": "InputGroup", "description": "InputGroup (cva) - input com addons/botoes.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/input-group.tsx", "type": "registry:ui", "target": "components/ui/input-group.tsx" } ], "meta": { "stamp": "igreen-ds · input-group · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "pagination", "type": "registry:ui", "title": "Pagination", "description": "Pagination (cva) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "class-variance-authority@^0.7.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/pagination.tsx", "type": "registry:ui", "target": "components/ui/pagination.tsx" } ], "meta": { "stamp": "igreen-ds · pagination · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "popover", "type": "registry:ui", "title": "Popover", "description": "Popover (Radix) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-popover@^1.1.15" ], "files": [ { "path": "src/components/shadcn/popover.tsx", "type": "registry:ui", "target": "components/ui/popover.tsx" } ], "meta": { "stamp": "igreen-ds · popover · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "progress", "type": "registry:ui", "title": "Progress", "description": "Progress (Radix) barra com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-progress@^1.1.8" ], "files": [ { "path": "src/components/shadcn/progress.tsx", "type": "registry:ui", "target": "components/ui/progress.tsx" } ], "meta": { "stamp": "igreen-ds · progress · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "radio-group", "type": "registry:ui", "title": "RadioGroup", "description": "RadioGroup (Radix) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-radio-group@^1.3.8" ], "files": [ { "path": "src/components/shadcn/radio-group.tsx", "type": "registry:ui", "target": "components/ui/radio-group.tsx" } ], "meta": { "stamp": "igreen-ds · radio-group · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "sheet", "type": "registry:ui", "title": "Sheet", "description": "Sheet (Radix Dialog) drawer lateral com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-dialog@^1.1.15", "class-variance-authority@^0.7.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/sheet.tsx", "type": "registry:ui", "target": "components/ui/sheet.tsx" } ], "meta": { "stamp": "igreen-ds · sheet · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "slider", "type": "registry:ui", "title": "Slider", "description": "Slider (Radix) single/range com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-slider@^1.3.6" ], "files": [ { "path": "src/components/shadcn/slider.tsx", "type": "registry:ui", "target": "components/ui/slider.tsx" } ], "meta": { "stamp": "igreen-ds · slider · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "switch", "type": "registry:ui", "title": "Switch", "description": "Switch (Radix) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-switch@^1.2.6" ], "files": [ { "path": "src/components/shadcn/switch.tsx", "type": "registry:ui", "target": "components/ui/switch.tsx" } ], "meta": { "stamp": "igreen-ds · switch · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "Tabs (Radix) com tokens DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-tabs@^1.1.13" ], "files": [ { "path": "src/components/shadcn/tabs.tsx", "type": "registry:ui", "target": "components/ui/tabs.tsx" } ], "meta": { "stamp": "igreen-ds · tabs · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "form-field", "type": "registry:ui", "title": "FormField", "description": "FormField composite OBRIGATORIO (L-023): label+input/select/textarea/checkbox/switch + estados.", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/checkbox", "@igreen/input", "@igreen/input-group", "@igreen/select", "@igreen/switch", "@igreen/textarea" ], "dependencies": [ "@radix-ui/react-checkbox@^1.3.3", "@radix-ui/react-switch@^1.2.6" ], "files": [ { "path": "src/components/ui/FormField/USAGE.md", "type": "registry:file", "target": "components/ui/FormField/USAGE.md" }, { "path": "src/components/ui/FormField/form-field-checkbox.tsx", "type": "registry:ui", "target": "components/ui/FormField/form-field-checkbox.tsx" }, { "path": "src/components/ui/FormField/form-field-input.tsx", "type": "registry:ui", "target": "components/ui/FormField/form-field-input.tsx" }, { "path": "src/components/ui/FormField/form-field-select.tsx", "type": "registry:ui", "target": "components/ui/FormField/form-field-select.tsx" }, { "path": "src/components/ui/FormField/form-field-switch.tsx", "type": "registry:ui", "target": "components/ui/FormField/form-field-switch.tsx" }, { "path": "src/components/ui/FormField/form-field-textarea.tsx", "type": "registry:ui", "target": "components/ui/FormField/form-field-textarea.tsx" }, { "path": "src/components/ui/FormField/form-field.styles.ts", "type": "registry:ui", "target": "components/ui/FormField/form-field.styles.ts" }, { "path": "src/components/ui/FormField/form-field.tsx", "type": "registry:ui", "target": "components/ui/FormField/form-field.tsx" }, { "path": "src/components/ui/FormField/form-field.types.ts", "type": "registry:ui", "target": "components/ui/FormField/form-field.types.ts" }, { "path": "src/components/ui/FormField/index.ts", "type": "registry:ui", "target": "components/ui/FormField/index.ts" } ], "meta": { "stamp": "igreen-ds · form-field · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "alert-modal", "type": "registry:ui", "title": "AlertModal", "description": "Modal de confirmacao destrutiva (tone danger/warning/success/neutral).", "registryDependencies": [ "@igreen/tv", "@igreen/button", "@igreen/alert-dialog" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/AlertModal/USAGE.md", "type": "registry:file", "target": "components/ui/AlertModal/USAGE.md" }, { "path": "src/components/ui/AlertModal/alert-modal.styles.ts", "type": "registry:ui", "target": "components/ui/AlertModal/alert-modal.styles.ts" }, { "path": "src/components/ui/AlertModal/alert-modal.tsx", "type": "registry:ui", "target": "components/ui/AlertModal/alert-modal.tsx" }, { "path": "src/components/ui/AlertModal/alert-modal.types.ts", "type": "registry:ui", "target": "components/ui/AlertModal/alert-modal.types.ts" }, { "path": "src/components/ui/AlertModal/index.ts", "type": "registry:ui", "target": "components/ui/AlertModal/index.ts" } ], "meta": { "stamp": "igreen-ds · alert-modal · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "button-group", "type": "registry:ui", "title": "ButtonGroup", "description": "Split button (Primary + Chevron) com Popover. forwardRef p/ anchor Radix (L-021/022).", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/button", "@igreen/popover" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/ButtonGroup/USAGE.md", "type": "registry:file", "target": "components/ui/ButtonGroup/USAGE.md" }, { "path": "src/components/ui/ButtonGroup/button-group.styles.ts", "type": "registry:ui", "target": "components/ui/ButtonGroup/button-group.styles.ts" }, { "path": "src/components/ui/ButtonGroup/button-group.tsx", "type": "registry:ui", "target": "components/ui/ButtonGroup/button-group.tsx" }, { "path": "src/components/ui/ButtonGroup/button-group.types.ts", "type": "registry:ui", "target": "components/ui/ButtonGroup/button-group.types.ts" }, { "path": "src/components/ui/ButtonGroup/index.ts", "type": "registry:ui", "target": "components/ui/ButtonGroup/index.ts" } ], "meta": { "stamp": "igreen-ds · button-group · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "floating-panel", "type": "registry:ui", "title": "FloatingPanel", "description": "Drawer non-modal resizable/maximizavel + sheet mobile.", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/button" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/FloatingPanel/USAGE.md", "type": "registry:file", "target": "components/ui/FloatingPanel/USAGE.md" }, { "path": "src/components/ui/FloatingPanel/floating-panel-parts.tsx", "type": "registry:ui", "target": "components/ui/FloatingPanel/floating-panel-parts.tsx" }, { "path": "src/components/ui/FloatingPanel/floating-panel.styles.ts", "type": "registry:ui", "target": "components/ui/FloatingPanel/floating-panel.styles.ts" }, { "path": "src/components/ui/FloatingPanel/floating-panel.tsx", "type": "registry:ui", "target": "components/ui/FloatingPanel/floating-panel.tsx" }, { "path": "src/components/ui/FloatingPanel/floating-panel.types.ts", "type": "registry:ui", "target": "components/ui/FloatingPanel/floating-panel.types.ts" }, { "path": "src/components/ui/FloatingPanel/index.ts", "type": "registry:ui", "target": "components/ui/FloatingPanel/index.ts" }, { "path": "src/components/ui/FloatingPanel/use-floating-panel-resize.ts", "type": "registry:ui", "target": "components/ui/FloatingPanel/use-floating-panel-resize.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · floating-panel · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "modal", "type": "registry:ui", "title": "Modal", "description": "Dialog modal centrado (header icon+title+desc, body, footer actions). Teto de altura + body com scroll próprio: conteúdo longo rola dentro do modal, header e footer fixos.", "registryDependencies": [ "@igreen/tv", "@igreen/button", "@igreen/dialog" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Modal/USAGE.md", "type": "registry:file", "target": "components/ui/Modal/USAGE.md" }, { "path": "src/components/ui/Modal/index.ts", "type": "registry:ui", "target": "components/ui/Modal/index.ts" }, { "path": "src/components/ui/Modal/modal.styles.ts", "type": "registry:ui", "target": "components/ui/Modal/modal.styles.ts" }, { "path": "src/components/ui/Modal/modal.tsx", "type": "registry:ui", "target": "components/ui/Modal/modal.tsx" } ], "meta": { "stamp": "igreen-ds · modal · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "panel", "type": "registry:ui", "title": "Panel", "description": "Drawer flutuante lateral (header+body scroll+footer sticky).", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/sheet" ], "dependencies": [ "@radix-ui/react-dialog@^1.1.15", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Panel/USAGE.md", "type": "registry:file", "target": "components/ui/Panel/USAGE.md" }, { "path": "src/components/ui/Panel/index.ts", "type": "registry:ui", "target": "components/ui/Panel/index.ts" }, { "path": "src/components/ui/Panel/panel-body.tsx", "type": "registry:ui", "target": "components/ui/Panel/panel-body.tsx" }, { "path": "src/components/ui/Panel/panel-footer.tsx", "type": "registry:ui", "target": "components/ui/Panel/panel-footer.tsx" }, { "path": "src/components/ui/Panel/panel-header.tsx", "type": "registry:ui", "target": "components/ui/Panel/panel-header.tsx" }, { "path": "src/components/ui/Panel/panel.styles.ts", "type": "registry:ui", "target": "components/ui/Panel/panel.styles.ts" }, { "path": "src/components/ui/Panel/panel.tsx", "type": "registry:ui", "target": "components/ui/Panel/panel.tsx" }, { "path": "src/components/ui/Panel/panel.types.ts", "type": "registry:ui", "target": "components/ui/Panel/panel.types.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · panel · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "footer-table", "type": "registry:ui", "title": "FooterTable", "description": "Footer de tabela: paginacao + page-size + range + selection count.", "registryDependencies": [ "@igreen/utils", "@igreen/pagination", "@igreen/select" ], "dependencies": [], "files": [ { "path": "src/components/ui/FooterTable/USAGE.md", "type": "registry:file", "target": "components/ui/FooterTable/USAGE.md" }, { "path": "src/components/ui/FooterTable/footer-table.tsx", "type": "registry:ui", "target": "components/ui/FooterTable/footer-table.tsx" }, { "path": "src/components/ui/FooterTable/footer-table.types.ts", "type": "registry:ui", "target": "components/ui/FooterTable/footer-table.types.ts" }, { "path": "src/components/ui/FooterTable/index.ts", "type": "registry:ui", "target": "components/ui/FooterTable/index.ts" } ], "meta": { "stamp": "igreen-ds · footer-table · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "kanban", "type": "registry:ui", "title": "Kanban", "description": "Board kanban dumb (columns+cards via props) com dnd-kit.", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/button", "@igreen/checkbox", "@igreen/dropdown-menu" ], "dependencies": [ "@dnd-kit/core@^6.3.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Kanban/USAGE.md", "type": "registry:file", "target": "components/ui/Kanban/USAGE.md" }, { "path": "src/components/ui/Kanban/hooks/use-kanban-dnd.ts", "type": "registry:ui", "target": "components/ui/Kanban/hooks/use-kanban-dnd.ts" }, { "path": "src/components/ui/Kanban/index.ts", "type": "registry:ui", "target": "components/ui/Kanban/index.ts" }, { "path": "src/components/ui/Kanban/kanban.styles.ts", "type": "registry:ui", "target": "components/ui/Kanban/kanban.styles.ts" }, { "path": "src/components/ui/Kanban/kanban.tsx", "type": "registry:ui", "target": "components/ui/Kanban/kanban.tsx" }, { "path": "src/components/ui/Kanban/kanban.types.ts", "type": "registry:ui", "target": "components/ui/Kanban/kanban.types.ts" } ], "meta": { "stamp": "igreen-ds · kanban · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "list", "type": "registry:ui", "title": "List", "description": "Listagem em cards: standard, grouped (drag-and-drop) e hierarchical (árvore-como-lista). Card por slots ou renderItem. Primitivo burro (como Table).", "registryDependencies": [ "@igreen/button", "@igreen/checkbox", "@igreen/dropdown-menu", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "@hello-pangea/dnd@^18.0.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/List/USAGE.md", "type": "registry:file", "target": "components/ui/List/USAGE.md" }, { "path": "src/components/ui/List/index.ts", "type": "registry:ui", "target": "components/ui/List/index.ts" }, { "path": "src/components/ui/List/list.tsx", "type": "registry:ui", "target": "components/ui/List/list.tsx" }, { "path": "src/components/ui/List/list-item.tsx", "type": "registry:ui", "target": "components/ui/List/list-item.tsx" }, { "path": "src/components/ui/List/list.styles.ts", "type": "registry:ui", "target": "components/ui/List/list.styles.ts" }, { "path": "src/components/ui/List/list.types.ts", "type": "registry:ui", "target": "components/ui/List/list.types.ts" }, { "path": "src/components/ui/List/hooks/use-disclosure-set.ts", "type": "registry:ui", "target": "components/ui/List/hooks/use-disclosure-set.ts" }, { "path": "src/components/ui/List/hooks/use-selection-set.ts", "type": "registry:ui", "target": "components/ui/List/hooks/use-selection-set.ts" }, { "path": "src/components/ui/List/layouts/_sortable-item.tsx", "type": "registry:ui", "target": "components/ui/List/layouts/_sortable-item.tsx" }, { "path": "src/components/ui/List/layouts/standard-layout.tsx", "type": "registry:ui", "target": "components/ui/List/layouts/standard-layout.tsx" }, { "path": "src/components/ui/List/layouts/grouped-layout.tsx", "type": "registry:ui", "target": "components/ui/List/layouts/grouped-layout.tsx" }, { "path": "src/components/ui/List/layouts/hierarchical-layout.tsx", "type": "registry:ui", "target": "components/ui/List/layouts/hierarchical-layout.tsx" }, { "path": "src/components/ui/List/utils/group-items.ts", "type": "registry:ui", "target": "components/ui/List/utils/group-items.ts" }, { "path": "src/components/ui/List/utils/flatten-tree.ts", "type": "registry:ui", "target": "components/ui/List/utils/flatten-tree.ts" } ], "meta": { "stamp": "igreen-ds · list · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "data-list", "type": "registry:ui", "title": "DataList", "description": "Componente inteligente sobre o List (como DataTable é sobre o Table): toolbar enxuta (visões em abas · busca · filtros por campos · ⋯) + chips de filtro aplicado + saved-views + persistência + seleção/bulk + server/async + virtualização ⊕ infinite-scroll + fillHeight (scroll no container) + branchHighlight no hierarchical. Reusa o TableToolbar e o FilterModel da tabela.", "registryDependencies": [ "@igreen/button", "@igreen/data-table", "@igreen/dropdown-menu", "@igreen/list", "@igreen/utils" ], "dependencies": [ "@tanstack/react-virtual@^3.13.24", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/DataList/USAGE.md", "type": "registry:file", "target": "components/ui/DataList/USAGE.md" }, { "path": "src/components/ui/DataList/data-list.tsx", "type": "registry:ui", "target": "components/ui/DataList/data-list.tsx" }, { "path": "src/components/ui/DataList/data-list.types.ts", "type": "registry:ui", "target": "components/ui/DataList/data-list.types.ts" }, { "path": "src/components/ui/DataList/hooks/use-data-list.ts", "type": "registry:ui", "target": "components/ui/DataList/hooks/use-data-list.ts" }, { "path": "src/components/ui/DataList/index.ts", "type": "registry:ui", "target": "components/ui/DataList/index.ts" }, { "path": "src/components/ui/DataList/parts/data-list-infinite.tsx", "type": "registry:ui", "target": "components/ui/DataList/parts/data-list-infinite.tsx" }, { "path": "src/components/ui/DataList/parts/data-list-toolbar.tsx", "type": "registry:ui", "target": "components/ui/DataList/parts/data-list-toolbar.tsx" }, { "path": "src/components/ui/DataList/parts/data-list-virtualized.tsx", "type": "registry:ui", "target": "components/ui/DataList/parts/data-list-virtualized.tsx" }, { "path": "src/components/ui/DataList/utils/apply-filter-model.ts", "type": "registry:ui", "target": "components/ui/DataList/utils/apply-filter-model.ts" } ], "meta": { "stamp": "igreen-ds · data-list · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "combobox", "type": "registry:ui", "title": "Combobox", "description": "Select com busca (autocomplete) — Popover+Command (cmdk).", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/command", "@igreen/popover" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Combobox/USAGE.md", "type": "registry:file", "target": "components/ui/Combobox/USAGE.md" }, { "path": "src/components/ui/Combobox/combobox.styles.ts", "type": "registry:ui", "target": "components/ui/Combobox/combobox.styles.ts" }, { "path": "src/components/ui/Combobox/combobox.tsx", "type": "registry:ui", "target": "components/ui/Combobox/combobox.tsx" }, { "path": "src/components/ui/Combobox/combobox.types.ts", "type": "registry:ui", "target": "components/ui/Combobox/combobox.types.ts" }, { "path": "src/components/ui/Combobox/index.ts", "type": "registry:ui", "target": "components/ui/Combobox/index.ts" } ], "meta": { "stamp": "igreen-ds · combobox · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "card-checkbox", "type": "registry:ui", "title": "CardCheckbox", "description": "Checkbox apresentado como card clicavel (label+description).", "registryDependencies": [ "@igreen/card-option", "@igreen/checkbox", "@igreen/tv" ], "dependencies": [ "@radix-ui/react-checkbox@^1.3.3" ], "files": [ { "path": "src/components/ui/CardCheckbox/USAGE.md", "type": "registry:file", "target": "components/ui/CardCheckbox/USAGE.md" }, { "path": "src/components/ui/CardCheckbox/card-checkbox.styles.ts", "type": "registry:ui", "target": "components/ui/CardCheckbox/card-checkbox.styles.ts" }, { "path": "src/components/ui/CardCheckbox/card-checkbox.tsx", "type": "registry:ui", "target": "components/ui/CardCheckbox/card-checkbox.tsx" }, { "path": "src/components/ui/CardCheckbox/index.ts", "type": "registry:ui", "target": "components/ui/CardCheckbox/index.ts" } ], "meta": { "stamp": "igreen-ds · card-checkbox · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "card-option", "type": "registry:ui", "title": "CardOption", "description": "Checkbox, radio ou switch apresentado como card clicável (label + descrição). Grupo com modo lista.", "registryDependencies": [ "@igreen/checkbox", "@igreen/radio-group", "@igreen/switch", "@igreen/tv", "@igreen/utils" ], "dependencies": [], "files": [ { "path": "src/components/ui/CardOption/USAGE.md", "type": "registry:file", "target": "components/ui/CardOption/USAGE.md" }, { "path": "src/components/ui/CardOption/card-option.styles.ts", "type": "registry:ui", "target": "components/ui/CardOption/card-option.styles.ts" }, { "path": "src/components/ui/CardOption/card-option.tsx", "type": "registry:ui", "target": "components/ui/CardOption/card-option.tsx" }, { "path": "src/components/ui/CardOption/card-option.types.ts", "type": "registry:ui", "target": "components/ui/CardOption/card-option.types.ts" }, { "path": "src/components/ui/CardOption/index.ts", "type": "registry:ui", "target": "components/ui/CardOption/index.ts" } ], "meta": { "stamp": "igreen-ds · card-option · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "chip", "type": "registry:ui", "title": "Chip", "description": "Pilula compacta (status/tags/filtros), span ou button + ChipGroup.", "registryDependencies": [ "@igreen/utils", "@igreen/tv" ], "dependencies": [ "@radix-ui/react-toggle-group@^1.1.11" ], "files": [ { "path": "src/components/ui/Chip/USAGE.md", "type": "registry:file", "target": "components/ui/Chip/USAGE.md" }, { "path": "src/components/ui/Chip/chip-group.tsx", "type": "registry:ui", "target": "components/ui/Chip/chip-group.tsx" }, { "path": "src/components/ui/Chip/chip.styles.ts", "type": "registry:ui", "target": "components/ui/Chip/chip.styles.ts" }, { "path": "src/components/ui/Chip/chip.tsx", "type": "registry:ui", "target": "components/ui/Chip/chip.tsx" }, { "path": "src/components/ui/Chip/index.ts", "type": "registry:ui", "target": "components/ui/Chip/index.ts" } ], "meta": { "stamp": "igreen-ds · chip · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "icon", "type": "registry:ui", "title": "Icon", "description": "Biblioteca de icones propria iGreen (SVG por prop name).", "registryDependencies": [ "@igreen/utils", "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/Icon/USAGE.md", "type": "registry:file", "target": "components/ui/Icon/USAGE.md" }, { "path": "src/components/ui/Icon/icon.styles.ts", "type": "registry:ui", "target": "components/ui/Icon/icon.styles.ts" }, { "path": "src/components/ui/Icon/icon.tsx", "type": "registry:ui", "target": "components/ui/Icon/icon.tsx" }, { "path": "src/components/ui/Icon/icon.types.ts", "type": "registry:ui", "target": "components/ui/Icon/icon.types.ts" }, { "path": "src/components/ui/Icon/icons.ts", "type": "registry:ui", "target": "components/ui/Icon/icons.ts" }, { "path": "src/components/ui/Icon/index.ts", "type": "registry:ui", "target": "components/ui/Icon/index.ts" } ], "meta": { "stamp": "igreen-ds · icon · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "page-header", "type": "registry:ui", "title": "PageHeader", "description": "Title+description+badge+actions+slot (tabs/filtros). Template.", "registryDependencies": [ "@igreen/utils", "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/PageHeader/USAGE.md", "type": "registry:file", "target": "components/ui/PageHeader/USAGE.md" }, { "path": "src/components/ui/PageHeader/index.ts", "type": "registry:ui", "target": "components/ui/PageHeader/index.ts" }, { "path": "src/components/ui/PageHeader/page-header.styles.ts", "type": "registry:ui", "target": "components/ui/PageHeader/page-header.styles.ts" }, { "path": "src/components/ui/PageHeader/page-header.tsx", "type": "registry:ui", "target": "components/ui/PageHeader/page-header.tsx" }, { "path": "src/components/ui/PageHeader/page-header.types.ts", "type": "registry:ui", "target": "components/ui/PageHeader/page-header.types.ts" } ], "meta": { "stamp": "igreen-ds · page-header · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "avatar-ig", "type": "registry:ui", "title": "Avatar (iGreen)", "description": "Avatar iGreen: size/color presets + colorHex com contraste WCAG (L-027). Distinto do primitivo @igreen/avatar.", "registryDependencies": [ "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/avatar-ig/avatar-group-context.ts", "type": "registry:component" }, { "path": "src/components/ui/avatar-ig/avatar-group.tsx", "type": "registry:component" }, { "path": "src/components/ui/avatar-ig/avatar.styles.ts", "type": "registry:ui", "target": "components/ui/avatar-ig/avatar.styles.ts" }, { "path": "src/components/ui/avatar-ig/avatar.tsx", "type": "registry:ui", "target": "components/ui/avatar-ig/avatar.tsx" }, { "path": "src/components/ui/avatar-ig/avatar.types.ts", "type": "registry:ui", "target": "components/ui/avatar-ig/avatar.types.ts" }, { "path": "src/components/ui/avatar-ig/index.ts", "type": "registry:ui", "target": "components/ui/avatar-ig/index.ts" }, { "path": "src/components/ui/avatar-ig/USAGE.md", "type": "registry:file", "target": "components/ui/avatar-ig/USAGE.md" }, { "path": "src/utils/color-contrast.ts", "type": "registry:file", "target": "src/utils/color-contrast.ts" } ], "meta": { "stamp": "igreen-ds · avatar-ig · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "chart", "type": "registry:ui", "title": "Chart", "description": "Wrapper Recharts 3 com paleta/grid via tokens DS (ChartContainer/Tooltip/Legend).", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "recharts@^3.8.1" ], "files": [ { "path": "src/components/ui/Chart/USAGE.md", "type": "registry:file", "target": "components/ui/Chart/USAGE.md" }, { "path": "src/components/ui/Chart/chart.tsx", "type": "registry:ui", "target": "components/ui/Chart/chart.tsx" }, { "path": "src/components/ui/Chart/index.ts", "type": "registry:ui", "target": "components/ui/Chart/index.ts" } ], "meta": { "stamp": "igreen-ds · chart · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "table", "type": "registry:ui", "title": "Table", "description": "Primitive de tabela (grid): Head/Body/Row/Cell, density, sticky, pin, resize.", "registryDependencies": [ "@igreen/utils", "@igreen/tv" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Table/USAGE.md", "type": "registry:file", "target": "components/ui/Table/USAGE.md" }, { "path": "src/components/ui/Table/index.ts", "type": "registry:ui", "target": "components/ui/Table/index.ts" }, { "path": "src/components/ui/Table/table-card-row.tsx", "type": "registry:ui", "target": "components/ui/Table/table-card-row.tsx" }, { "path": "src/components/ui/Table/table.constants.ts", "type": "registry:ui", "target": "components/ui/Table/table.constants.ts" }, { "path": "src/components/ui/Table/table.styles.ts", "type": "registry:ui", "target": "components/ui/Table/table.styles.ts" }, { "path": "src/components/ui/Table/table.tsx", "type": "registry:ui", "target": "components/ui/Table/table.tsx" }, { "path": "src/components/ui/Table/table.types.ts", "type": "registry:ui", "target": "components/ui/Table/table.types.ts" }, { "path": "src/components/ui/Table/use-column-resize.ts", "type": "registry:ui", "target": "components/ui/Table/use-column-resize.ts" }, { "path": "src/components/ui/Table/use-column-widths.ts", "type": "registry:ui", "target": "components/ui/Table/use-column-widths.ts" }, { "path": "src/components/ui/MenuSidebar/use-media-query.ts", "type": "registry:file", "target": "components/ui/MenuSidebar/use-media-query.ts" } ], "meta": { "stamp": "igreen-ds · table · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "menu-sidebar", "type": "registry:ui", "title": "MenuSidebar", "description": "Sidebar composto: rail 64px + panel 264px colapsável.", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/dropdown-menu" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/MenuSidebar/index.ts", "type": "registry:ui", "target": "components/ui/MenuSidebar/index.ts" }, { "path": "src/components/ui/MenuSidebar/menu-sidebar.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/menu-sidebar.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar-brand.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-brand.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar-item.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-item.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar-panel.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-panel.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar-rail.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-rail.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar-section.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-section.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar-subgroup.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-subgroup.tsx" }, { "path": "src/components/ui/MenuSidebar/sidebar.styles.ts", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar.styles.ts" }, { "path": "src/components/ui/MenuSidebar/sidebar.types.ts", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar.types.ts" }, { "path": "src/components/ui/MenuSidebar/USAGE.md", "type": "registry:file", "target": "components/ui/MenuSidebar/USAGE.md" }, { "path": "src/components/ui/MenuSidebar/use-media-query.ts", "type": "registry:ui", "target": "components/ui/MenuSidebar/use-media-query.ts" }, { "path": "src/components/ui/MenuSidebar/use-sidebar-state.ts", "type": "registry:ui", "target": "components/ui/MenuSidebar/use-sidebar-state.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" }, { "path": "src/utils/nav-link.ts", "type": "registry:file", "target": "src/utils/nav-link.ts" } ], "meta": { "stamp": "igreen-ds · menu-sidebar · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "single-menu-sidebar", "type": "registry:ui", "title": "SingleMenuSidebar", "description": "Sidebar de nível único: categoria → sub-itens em accordion; toggle + hover-to-expand, módulos com menu próprio, busca via Command. Responsivo (100% no mobile). Sem variantes.", "registryDependencies": [ "@igreen/collapsible", "@igreen/command", "@igreen/dropdown-menu", "@igreen/tooltip", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/MenuSidebar/sidebar-brand.tsx", "type": "registry:ui", "target": "components/ui/MenuSidebar/sidebar-brand.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/category.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/category.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/command.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/command.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/footer.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/footer.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/header.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/header.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/index.ts", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/index.ts" }, { "path": "src/components/ui/SingleMenuSidebar/menu-item.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/menu-item.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/module-selector.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/module-selector.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/search.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/search.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/single-menu-sidebar.styles.ts", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/single-menu-sidebar.styles.ts" }, { "path": "src/components/ui/SingleMenuSidebar/single-menu-sidebar.tsx", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/single-menu-sidebar.tsx" }, { "path": "src/components/ui/SingleMenuSidebar/single-menu-sidebar.types.ts", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/single-menu-sidebar.types.ts" }, { "path": "src/components/ui/SingleMenuSidebar/USAGE.md", "type": "registry:file", "target": "components/ui/SingleMenuSidebar/USAGE.md" }, { "path": "src/components/ui/SingleMenuSidebar/use-single-menu-sidebar.ts", "type": "registry:ui", "target": "components/ui/SingleMenuSidebar/use-single-menu-sidebar.ts" }, { "path": "src/utils/nav-link.ts", "type": "registry:file", "target": "src/utils/nav-link.ts" } ], "meta": { "stamp": "igreen-ds · single-menu-sidebar · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "kpi", "type": "registry:ui", "title": "Kpi", "description": "Primitivos composáveis de KPI: Kpi (card) + KpiGroup (layout columns/divided) + KpiDelta (pílula de variação). Theme-aware; sparkline via slot.", "registryDependencies": [ "@igreen/chip", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Kpi/USAGE.md", "type": "registry:file", "target": "components/ui/Kpi/USAGE.md" }, { "path": "src/components/ui/Kpi/index.ts", "type": "registry:ui", "target": "components/ui/Kpi/index.ts" }, { "path": "src/components/ui/Kpi/kpi-delta.tsx", "type": "registry:ui", "target": "components/ui/Kpi/kpi-delta.tsx" }, { "path": "src/components/ui/Kpi/kpi-group.tsx", "type": "registry:ui", "target": "components/ui/Kpi/kpi-group.tsx" }, { "path": "src/components/ui/Kpi/kpi.styles.ts", "type": "registry:ui", "target": "components/ui/Kpi/kpi.styles.ts" }, { "path": "src/components/ui/Kpi/kpi.tsx", "type": "registry:ui", "target": "components/ui/Kpi/kpi.tsx" }, { "path": "src/components/ui/Kpi/kpi.types.ts", "type": "registry:ui", "target": "components/ui/Kpi/kpi.types.ts" } ], "meta": { "stamp": "igreen-ds · kpi · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "header", "type": "registry:ui", "title": "Header", "description": "Barra superior fixa: breadcrumb + search/theme/notifications/user.", "registryDependencies": [ "@igreen/breadcrumb", "@igreen/button", "@igreen/chip", "@igreen/command", "@igreen/dropdown-menu", "@igreen/input-group", "@igreen/popover", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/Header/USAGE.md", "type": "registry:file", "target": "components/ui/Header/USAGE.md" }, { "path": "src/components/ui/Header/header-breadcrumb.tsx", "type": "registry:ui", "target": "components/ui/Header/header-breadcrumb.tsx" }, { "path": "src/components/ui/Header/header-messages.tsx", "type": "registry:ui", "target": "components/ui/Header/header-messages.tsx" }, { "path": "src/components/ui/Header/header-notifications.tsx", "type": "registry:ui", "target": "components/ui/Header/header-notifications.tsx" }, { "path": "src/components/ui/Header/header-search.tsx", "type": "registry:ui", "target": "components/ui/Header/header-search.tsx" }, { "path": "src/components/ui/Header/header-theme-switcher.tsx", "type": "registry:ui", "target": "components/ui/Header/header-theme-switcher.tsx" }, { "path": "src/components/ui/Header/header.styles.ts", "type": "registry:ui", "target": "components/ui/Header/header.styles.ts" }, { "path": "src/components/ui/Header/header.tsx", "type": "registry:ui", "target": "components/ui/Header/header.tsx" }, { "path": "src/components/ui/Header/header.types.ts", "type": "registry:ui", "target": "components/ui/Header/header.types.ts" }, { "path": "src/components/ui/Header/index.ts", "type": "registry:ui", "target": "components/ui/Header/index.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · header · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "app-shell", "type": "registry:ui", "title": "AppShell", "description": "Template de app: MenuSidebar + Header + body. UserMenu, layout, tema. Responsivo: padding do body 18/24/32px por breakpoint (corte em 2xl = 1536px) e o menu NASCE COLAPSADO abaixo de 1536px — pra manter sempre aberto passe defaultMenuCollapsed={false} explicito (so no mount, nao reage a resize).", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/header", "@igreen/menu-sidebar", "@igreen/single-menu-sidebar", "@igreen/avatar", "@igreen/dropdown-menu" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/AppShell/USAGE.md", "type": "registry:file", "target": "components/ui/AppShell/USAGE.md" }, { "path": "src/components/ui/AppShell/app-shell.styles.ts", "type": "registry:ui", "target": "components/ui/AppShell/app-shell.styles.ts" }, { "path": "src/components/ui/AppShell/app-shell.tsx", "type": "registry:ui", "target": "components/ui/AppShell/app-shell.tsx" }, { "path": "src/components/ui/AppShell/app-shell.types.ts", "type": "registry:ui", "target": "components/ui/AppShell/app-shell.types.ts" }, { "path": "src/components/ui/AppShell/index.ts", "type": "registry:ui", "target": "components/ui/AppShell/index.ts" }, { "path": "src/components/ui/AppShell/user-menu.tsx", "type": "registry:ui", "target": "components/ui/AppShell/user-menu.tsx" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · app-shell · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "data-table", "type": "registry:ui", "title": "DataTable + TableToolbar", "description": "Tabela densa completa: client/server, filtros visual+SQL, saved views, column types, kanban, virtualização, export. Bundla DataTable + TableToolbar (acoplamento circular) num item.", "registryDependencies": [ "@igreen/utils", "@igreen/tv", "@igreen/button", "@igreen/checkbox", "@igreen/dropdown-menu", "@igreen/input", "@igreen/select", "@igreen/popover", "@igreen/calendar", "@igreen/switch", "@igreen/dialog", "@igreen/table", "@igreen/kanban", "@igreen/list", "@igreen/chip", "@igreen/avatar-ig", "@igreen/footer-table", "@igreen/combobox", "@igreen/alert-modal", "@igreen/floating-panel", "@igreen/form-field", "@igreen/button-group" ], "dependencies": [ "@dnd-kit/core@^6.3.1", "@dnd-kit/sortable@^10.0.0", "@dnd-kit/utilities@^3.2.2", "@tanstack/react-virtual@^3.13.24", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/DataTable/USAGE.md", "type": "registry:file", "target": "components/ui/DataTable/USAGE.md" }, { "path": "src/components/ui/DataTable/builders/column-builders.ts", "type": "registry:ui", "target": "components/ui/DataTable/builders/column-builders.ts" }, { "path": "src/components/ui/DataTable/builders/preset-view.ts", "type": "registry:ui", "target": "components/ui/DataTable/builders/preset-view.ts" }, { "path": "src/components/ui/DataTable/column-types/_filter-field.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/_filter-field.tsx" }, { "path": "src/components/ui/DataTable/column-types/_shared.ts", "type": "registry:ui", "target": "components/ui/DataTable/column-types/_shared.ts" }, { "path": "src/components/ui/DataTable/column-types/column-type-registry.ts", "type": "registry:ui", "target": "components/ui/DataTable/column-types/column-type-registry.ts" }, { "path": "src/components/ui/DataTable/column-types/column-types.types.ts", "type": "registry:ui", "target": "components/ui/DataTable/column-types/column-types.types.ts" }, { "path": "src/components/ui/DataTable/column-types/definitions/badge-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/badge-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/boolean-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/boolean-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/currency-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/currency-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/date-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/date-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/datetime-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/datetime-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/email-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/email-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/multi-select-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/multi-select-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/number-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/number-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/percentage-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/percentage-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/phone-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/phone-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/select-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/select-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/tags-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/tags-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/text-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/text-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/url-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/url-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/definitions/user-column-type.tsx", "type": "registry:ui", "target": "components/ui/DataTable/column-types/definitions/user-column-type.tsx" }, { "path": "src/components/ui/DataTable/column-types/index.ts", "type": "registry:ui", "target": "components/ui/DataTable/column-types/index.ts" }, { "path": "src/components/ui/DataTable/context/data-table-context.tsx", "type": "registry:ui", "target": "components/ui/DataTable/context/data-table-context.tsx" }, { "path": "src/components/ui/DataTable/data-table.constants.ts", "type": "registry:ui", "target": "components/ui/DataTable/data-table.constants.ts" }, { "path": "src/components/ui/DataTable/data-table.styles.ts", "type": "registry:ui", "target": "components/ui/DataTable/data-table.styles.ts" }, { "path": "src/components/ui/DataTable/data-table.tsx", "type": "registry:ui", "target": "components/ui/DataTable/data-table.tsx" }, { "path": "src/components/ui/DataTable/data-table.types.ts", "type": "registry:ui", "target": "components/ui/DataTable/data-table.types.ts" }, { "path": "src/components/ui/DataTable/hooks/state-persistence-utils.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/state-persistence-utils.ts" }, { "path": "src/components/ui/DataTable/hooks/use-cols-popover-adapter.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-cols-popover-adapter.ts" }, { "path": "src/components/ui/DataTable/hooks/use-column-auto-width.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-column-auto-width.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-columns.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-columns.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-controller.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-controller.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-density.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-density.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-export.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-export.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-filters.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-filters.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-pagination.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-pagination.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-processor.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-processor.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-query.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-query.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-saved-views.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-saved-views.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-search.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-search.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-selection.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-selection.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-sort.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-sort.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-state-persistence.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-state-persistence.ts" }, { "path": "src/components/ui/DataTable/hooks/use-data-table-view-mode.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-data-table-view-mode.ts" }, { "path": "src/components/ui/DataTable/hooks/use-filter-popover-adapter.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-filter-popover-adapter.ts" }, { "path": "src/components/ui/DataTable/hooks/use-grab-to-scroll.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-grab-to-scroll.ts" }, { "path": "src/components/ui/DataTable/hooks/use-sort-popover-adapter.ts", "type": "registry:ui", "target": "components/ui/DataTable/hooks/use-sort-popover-adapter.ts" }, { "path": "src/components/ui/DataTable/index.ts", "type": "registry:ui", "target": "components/ui/DataTable/index.ts" }, { "path": "src/components/ui/DataTable/parts/data-table-actions-cell.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-actions-cell.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-cell-addons.styles.ts", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-cell-addons.styles.ts" }, { "path": "src/components/ui/DataTable/parts/data-table-cell-addons.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-cell-addons.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-column-menu.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-column-menu.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-edit-cell.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-edit-cell.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-empty.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-empty.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-floating-bulk-bar.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-floating-bulk-bar.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-group-content-row.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-group-content-row.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-group-header-row.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-group-header-row.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-loading.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-loading.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-no-results.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-no-results.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-row-expansion.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-row-expansion.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-row.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-row.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-totalizer-row.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-totalizer-row.tsx" }, { "path": "src/components/ui/DataTable/parts/data-table-tree-toggle.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/data-table-tree-toggle.tsx" }, { "path": "src/components/ui/DataTable/parts/sortable-head-cell.tsx", "type": "registry:ui", "target": "components/ui/DataTable/parts/sortable-head-cell.tsx" }, { "path": "src/components/ui/DataTable/services/saved-views-mock-service.ts", "type": "registry:ui", "target": "components/ui/DataTable/services/saved-views-mock-service.ts" }, { "path": "src/components/ui/DataTable/services/saved-views.types.ts", "type": "registry:ui", "target": "components/ui/DataTable/services/saved-views.types.ts" }, { "path": "src/components/ui/DataTable/utils/action-slots.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/action-slots.ts" }, { "path": "src/components/ui/DataTable/utils/aggregate.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/aggregate.ts" }, { "path": "src/components/ui/DataTable/utils/calculate-column-widths.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/calculate-column-widths.ts" }, { "path": "src/components/ui/DataTable/utils/expand-rows.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/expand-rows.ts" }, { "path": "src/components/ui/DataTable/utils/filter-ops.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/filter-ops.ts" }, { "path": "src/components/ui/DataTable/utils/group-rows.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/group-rows.ts" }, { "path": "src/components/ui/DataTable/utils/measure-text.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/measure-text.ts" }, { "path": "src/components/ui/DataTable/utils/resolve-value.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/resolve-value.ts" }, { "path": "src/components/ui/DataTable/utils/tree-rows.ts", "type": "registry:ui", "target": "components/ui/DataTable/utils/tree-rows.ts" }, { "path": "src/components/ui/TableToolbar/USAGE.md", "type": "registry:file", "target": "components/ui/TableToolbar/USAGE.md" }, { "path": "src/components/ui/TableToolbar/hooks/use-toolbar-filter-control.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/hooks/use-toolbar-filter-control.ts" }, { "path": "src/components/ui/TableToolbar/hooks/use-toolbar-filters.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/hooks/use-toolbar-filters.ts" }, { "path": "src/components/ui/TableToolbar/hooks/use-toolbar-sort.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/hooks/use-toolbar-sort.ts" }, { "path": "src/components/ui/TableToolbar/index.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/index.ts" }, { "path": "src/components/ui/TableToolbar/parts/bulk-actions-bar.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/bulk-actions-bar.tsx" }, { "path": "src/components/ui/TableToolbar/parts/table-toolbar-views.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/table-toolbar-views.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-actions.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-actions.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-filter-button.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-filter-button.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-applied.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-applied.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-divider.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-divider.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-filter-control.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-filter-control.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-mobile-sheet.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-mobile-sheet.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-search.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-search.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-segmented.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-segmented.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-settings-menu.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-settings-menu.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-simple-filter-drawer.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-simple-filter-drawer.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-tabs.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-tabs.tsx" }, { "path": "src/components/ui/TableToolbar/parts/toolbar-tool-button.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/parts/toolbar-tool-button.tsx" }, { "path": "src/components/ui/TableToolbar/popovers/add-view-modal.styles.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/add-view-modal.styles.ts" }, { "path": "src/components/ui/TableToolbar/popovers/add-view-modal.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/add-view-modal.tsx" }, { "path": "src/components/ui/TableToolbar/popovers/cols-popover.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/cols-popover.tsx" }, { "path": "src/components/ui/TableToolbar/popovers/filter-popover.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/filter-popover.tsx" }, { "path": "src/components/ui/TableToolbar/popovers/filter-sql-parser.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/filter-sql-parser.ts" }, { "path": "src/components/ui/TableToolbar/popovers/more-menu.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/more-menu.tsx" }, { "path": "src/components/ui/TableToolbar/popovers/sort-popover.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/sort-popover.tsx" }, { "path": "src/components/ui/TableToolbar/popovers/views-popover.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/popovers/views-popover.tsx" }, { "path": "src/components/ui/TableToolbar/table-toolbar.styles.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/table-toolbar.styles.ts" }, { "path": "src/components/ui/TableToolbar/table-toolbar.tsx", "type": "registry:ui", "target": "components/ui/TableToolbar/table-toolbar.tsx" }, { "path": "src/components/ui/TableToolbar/table-toolbar.types.ts", "type": "registry:ui", "target": "components/ui/TableToolbar/table-toolbar.types.ts" }, { "path": "src/components/ui/MenuSidebar/use-media-query.ts", "type": "registry:file", "target": "components/ui/MenuSidebar/use-media-query.ts" } ], "meta": { "stamp": "igreen-ds · data-table · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-clientes", "type": "registry:ui", "title": "Exemplo — Clientes (CRUD, showcase real)", "description": "Extração 1:1 do showcase ClientesShowcase: DataTable (busca, sort, filtros, seleção, ações em massa, totalizador), PageHeader com badge, NovoClienteDrawer, DetailDrawer e AlertModal de confirmação. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/data-table", "@igreen/button", "@igreen/chip", "@igreen/page-header", "@igreen/alert-modal", "@igreen/panel", "@igreen/form-field", "@igreen/floating-panel", "@igreen/avatar" ], "dependencies": [], "files": [ { "path": "src/examples/clientes/clientes-screen.tsx", "type": "registry:ui", "target": "examples/clientes/clientes-screen.tsx" }, { "path": "src/examples/clientes/clientes-showcase-mocks.ts", "type": "registry:ui", "target": "examples/clientes/clientes-showcase-mocks.ts" }, { "path": "src/examples/clientes/clientes-showcase.styles.ts", "type": "registry:ui", "target": "examples/clientes/clientes-showcase.styles.ts" }, { "path": "src/examples/clientes/clientes-showcase.types.ts", "type": "registry:ui", "target": "examples/clientes/clientes-showcase.types.ts" }, { "path": "src/examples/clientes/components/DetailDrawer/detail-drawer.styles.ts", "type": "registry:ui", "target": "examples/clientes/components/DetailDrawer/detail-drawer.styles.ts" }, { "path": "src/examples/clientes/components/DetailDrawer/detail-drawer.tsx", "type": "registry:ui", "target": "examples/clientes/components/DetailDrawer/detail-drawer.tsx" }, { "path": "src/examples/clientes/components/DetailDrawer/detail-drawer.types.ts", "type": "registry:ui", "target": "examples/clientes/components/DetailDrawer/detail-drawer.types.ts" }, { "path": "src/examples/clientes/components/DetailDrawer/index.ts", "type": "registry:ui", "target": "examples/clientes/components/DetailDrawer/index.ts" }, { "path": "src/examples/clientes/components/NovoClienteDrawer/index.ts", "type": "registry:ui", "target": "examples/clientes/components/NovoClienteDrawer/index.ts" }, { "path": "src/examples/clientes/components/NovoClienteDrawer/novo-cliente-drawer.tsx", "type": "registry:ui", "target": "examples/clientes/components/NovoClienteDrawer/novo-cliente-drawer.tsx" }, { "path": "src/examples/clientes/index.ts", "type": "registry:ui", "target": "examples/clientes/index.ts" }, { "path": "src/examples/clientes/_table-data.ts", "type": "registry:ui", "target": "examples/clientes/_table-data.ts" } ], "meta": { "stamp": "igreen-ds · example-clientes · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-finance", "type": "registry:ui", "title": "Exemplo — Financeiro (CRUD + Kanban, showcase real)", "description": "Extração 1:1 do showcase ClientesFinanceiro: DataTable completa (avatar de banco, inline-edit de comissão, saque-auto toggle, totalizador), Kanban por situação, preset views, SacarDialog, EditarFinanceDrawer, NovoClienteDrawer, FinanceDetailPanel e ExtratoExpansion. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/data-table", "@igreen/kanban", "@igreen/page-header", "@igreen/button", "@igreen/avatar-ig", "@igreen/chip", "@igreen/panel", "@igreen/modal", "@igreen/floating-panel", "@igreen/form-field", "@igreen/card-checkbox", "@igreen/switch", "@igreen/tabs" ], "dependencies": [], "files": [ { "path": "src/examples/finance/clientes-financeiro-mocks.ts", "type": "registry:ui", "target": "examples/finance/clientes-financeiro-mocks.ts" }, { "path": "src/examples/finance/clientes-financeiro.types.ts", "type": "registry:ui", "target": "examples/finance/clientes-financeiro.types.ts" }, { "path": "src/examples/finance/clientes-showcase-mocks.ts", "type": "registry:ui", "target": "examples/finance/clientes-showcase-mocks.ts" }, { "path": "src/examples/finance/clientes-showcase.styles.ts", "type": "registry:ui", "target": "examples/finance/clientes-showcase.styles.ts" }, { "path": "src/examples/finance/clientes-showcase.types.ts", "type": "registry:ui", "target": "examples/finance/clientes-showcase.types.ts" }, { "path": "src/examples/finance/components/EditarFinanceDrawer/editar-finance-drawer.tsx", "type": "registry:ui", "target": "examples/finance/components/EditarFinanceDrawer/editar-finance-drawer.tsx" }, { "path": "src/examples/finance/components/EditarFinanceDrawer/index.ts", "type": "registry:ui", "target": "examples/finance/components/EditarFinanceDrawer/index.ts" }, { "path": "src/examples/finance/components/ExtratoExpansion/extrato-expansion.tsx", "type": "registry:ui", "target": "examples/finance/components/ExtratoExpansion/extrato-expansion.tsx" }, { "path": "src/examples/finance/components/ExtratoExpansion/index.ts", "type": "registry:ui", "target": "examples/finance/components/ExtratoExpansion/index.ts" }, { "path": "src/examples/finance/components/FinanceDetailPanel/finance-detail-panel.tsx", "type": "registry:ui", "target": "examples/finance/components/FinanceDetailPanel/finance-detail-panel.tsx" }, { "path": "src/examples/finance/components/FinanceDetailPanel/index.ts", "type": "registry:ui", "target": "examples/finance/components/FinanceDetailPanel/index.ts" }, { "path": "src/examples/finance/components/NovoClienteDrawer/index.ts", "type": "registry:ui", "target": "examples/finance/components/NovoClienteDrawer/index.ts" }, { "path": "src/examples/finance/components/NovoClienteDrawer/novo-cliente-drawer.tsx", "type": "registry:ui", "target": "examples/finance/components/NovoClienteDrawer/novo-cliente-drawer.tsx" }, { "path": "src/examples/finance/components/SacarDialog/index.ts", "type": "registry:ui", "target": "examples/finance/components/SacarDialog/index.ts" }, { "path": "src/examples/finance/components/SacarDialog/sacar-dialog.tsx", "type": "registry:ui", "target": "examples/finance/components/SacarDialog/sacar-dialog.tsx" }, { "path": "src/examples/finance/finance-screen.tsx", "type": "registry:ui", "target": "examples/finance/finance-screen.tsx" }, { "path": "src/examples/finance/index.ts", "type": "registry:ui", "target": "examples/finance/index.ts" }, { "path": "src/examples/finance/_table-data.ts", "type": "registry:ui", "target": "examples/finance/_table-data.ts" } ], "meta": { "stamp": "igreen-ds · example-finance · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-mapa-rede", "type": "registry:ui", "title": "Exemplo — Mapa de Rede (DataList hierárquico)", "description": "Extração 1:1 do showcase Mapa de Rede: árvore de consultores por níveis (Você → N1 → N2…) com DataList layout='hierarchical' + branchHighlight (painéis aninhados) + fillHeight. Card por consultor (graduação, GP próprio, clientes, agregado da subárvore, PRO), PageHeader, painel de detalhe (FloatingPanel) e AlertModal de remoção. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/data-list", "@igreen/page-header", "@igreen/button", "@igreen/chip", "@igreen/floating-panel", "@igreen/alert-modal" ], "dependencies": [], "files": [ { "path": "src/examples/mapa-rede/mapa-de-rede.types.ts", "type": "registry:ui", "target": "examples/mapa-rede/mapa-de-rede.types.ts" }, { "path": "src/examples/mapa-rede/mapa-de-rede-mocks.ts", "type": "registry:ui", "target": "examples/mapa-rede/mapa-de-rede-mocks.ts" }, { "path": "src/examples/mapa-rede/components/ConsultorDetailPanel/consultor-detail-panel.tsx", "type": "registry:ui", "target": "examples/mapa-rede/components/ConsultorDetailPanel/consultor-detail-panel.tsx" }, { "path": "src/examples/mapa-rede/components/ConsultorDetailPanel/index.ts", "type": "registry:ui", "target": "examples/mapa-rede/components/ConsultorDetailPanel/index.ts" }, { "path": "src/examples/mapa-rede/mapa-rede-screen.tsx", "type": "registry:ui", "target": "examples/mapa-rede/mapa-rede-screen.tsx" }, { "path": "src/examples/mapa-rede/index.ts", "type": "registry:ui", "target": "examples/mapa-rede/index.ts" } ], "meta": { "stamp": "igreen-ds · example-mapa-rede · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-login", "type": "registry:ui", "title": "Exemplo — Login (split, variantes de painel)", "description": "Tela de login split, fullscreen, mockada. Painel direito configurável por `rightVariant`: \"image\" (default) · \"image-text\" · \"text\" (marca 100% por tokens, sem asset). Props: `logo` (default iGreen), `image`, `ambient` (fundo destacado), `panelTitle`/`panelSubtitle`. Sem `image`, cai no painel de texto (nunca quebra). Renderize e troque logo/imagem/handler de auth.", "registryDependencies": [ "@igreen/button", "@igreen/form-field", "@igreen/menu-sidebar" ], "dependencies": [], "files": [ { "path": "src/examples/login/login-screen.tsx", "type": "registry:ui", "target": "examples/login/login-screen.tsx" }, { "path": "src/examples/login/index.ts", "type": "registry:ui", "target": "examples/login/index.ts" } ], "meta": { "stamp": "igreen-ds · example-login · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-app-shell", "type": "registry:ui", "title": "Exemplo — Esqueleto de app (AppShell + navegação + rotas)", "description": "Esqueleto runnable de aplicação: AppShell (rail de módulos + Header com breadcrumb/⌘K/notificações/tema/user) + nav-data (contextos/itens + helpers) + mapa de ROTAS declarativo (href→tela, não if-chain). Conteúdo de cada tela vem dos builders (crud/list/dashboard); aqui é só o chassi. Renderize . Adapte nav-data + routes.", "registryDependencies": [ "@igreen/app-shell", "@igreen/page-header" ], "dependencies": [], "files": [ { "path": "src/examples/app-shell/nav-data.ts", "type": "registry:ui", "target": "examples/app-shell/nav-data.ts" }, { "path": "src/examples/app-shell/routes.tsx", "type": "registry:ui", "target": "examples/app-shell/routes.tsx" }, { "path": "src/examples/app-shell/app-shell-example.tsx", "type": "registry:ui", "target": "examples/app-shell/app-shell-example.tsx" }, { "path": "src/examples/app-shell/index.ts", "type": "registry:ui", "target": "examples/app-shell/index.ts" } ], "meta": { "stamp": "igreen-ds · example-app-shell · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-edit-page", "type": "registry:ui", "title": "Exemplo — Edição multi-step (showcase real)", "description": "Extração 1:1 do showcase OrderEditShowcase: formulário multi-step com StepNav lateral, FormField (input/select), ChipGroup e cards de seção. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/button", "@igreen/chip", "@igreen/page-header", "@igreen/form-field", "@igreen/input", "@igreen/select" ], "dependencies": [], "files": [ { "path": "src/examples/edit-page/components/section-card.tsx", "type": "registry:ui", "target": "examples/edit-page/components/section-card.tsx" }, { "path": "src/examples/edit-page/components/StepNav.tsx", "type": "registry:ui", "target": "examples/edit-page/components/StepNav.tsx" }, { "path": "src/examples/edit-page/edit-page-screen.tsx", "type": "registry:ui", "target": "examples/edit-page/edit-page-screen.tsx" }, { "path": "src/examples/edit-page/index.ts", "type": "registry:ui", "target": "examples/edit-page/index.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · example-edit-page · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-order-detail", "type": "registry:ui", "title": "Exemplo — Detalhamento de pedido (showcase real)", "description": "Extração 1:1 do showcase OrderDetailShowcase: PageHeader + Tabs (visão geral, detalhes, atividade, comentários, anexos) com cards de seção. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/button", "@igreen/chip", "@igreen/page-header", "@igreen/avatar-ig", "@igreen/tabs", "@igreen/textarea" ], "dependencies": [], "files": [ { "path": "src/examples/order-detail/components/ActivityTab.tsx", "type": "registry:ui", "target": "examples/order-detail/components/ActivityTab.tsx" }, { "path": "src/examples/order-detail/components/AttachmentsTab.tsx", "type": "registry:ui", "target": "examples/order-detail/components/AttachmentsTab.tsx" }, { "path": "src/examples/order-detail/components/CommentsTab.tsx", "type": "registry:ui", "target": "examples/order-detail/components/CommentsTab.tsx" }, { "path": "src/examples/order-detail/components/DetailsTab.tsx", "type": "registry:ui", "target": "examples/order-detail/components/DetailsTab.tsx" }, { "path": "src/examples/order-detail/components/OverviewTab.tsx", "type": "registry:ui", "target": "examples/order-detail/components/OverviewTab.tsx" }, { "path": "src/examples/order-detail/components/section-card.tsx", "type": "registry:ui", "target": "examples/order-detail/components/section-card.tsx" }, { "path": "src/examples/order-detail/index.ts", "type": "registry:ui", "target": "examples/order-detail/index.ts" }, { "path": "src/examples/order-detail/order-detail-screen.tsx", "type": "registry:ui", "target": "examples/order-detail/order-detail-screen.tsx" }, { "path": "src/examples/order-detail/order-mocks.ts", "type": "registry:ui", "target": "examples/order-detail/order-mocks.ts" }, { "path": "src/examples/order-detail/order.types.ts", "type": "registry:ui", "target": "examples/order-detail/order.types.ts" } ], "meta": { "stamp": "igreen-ds · example-order-detail · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-dashboard", "type": "registry:ui", "title": "Exemplo — Dashboard (showcase real)", "description": "Extração 1:1 do showcase DashboardShowcase: KPI-group \"Painel do Líder\" (Kpi/KpiGroup divided), gráficos (barras/pizza/radial via Recharts), KPIs evolutivos (sparkline), card dividido em 2 com mapa do Brasil, regiões/canais e tabela. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/button", "@igreen/chip", "@igreen/page-header", "@igreen/avatar", "@igreen/kpi" ], "dependencies": [ "recharts@^3.8.1" ], "files": [ { "path": "src/examples/dashboard/dashboard-screen.tsx", "type": "registry:ui", "target": "examples/dashboard/dashboard-screen.tsx" }, { "path": "src/examples/dashboard/dashboard-brazil-map.ts", "type": "registry:ui", "target": "examples/dashboard/dashboard-brazil-map.ts" }, { "path": "src/examples/dashboard/index.ts", "type": "registry:ui", "target": "examples/dashboard/index.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · example-dashboard · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "example-chat", "type": "registry:ui", "title": "Exemplo — Chat / Inbox (showcase real)", "description": "Extração 1:1 do showcase ChatV2: inbox de atendimento com coluna de filas/filtros, lista de conversas, thread de mensagens (bubbles), painel de detalhe redimensionável e menu de ações. Conteúdo da página (sem shell). Renderize .", "registryDependencies": [ "@igreen/button", "@igreen/chip", "@igreen/avatar", "@igreen/dropdown-menu", "@igreen/input" ], "dependencies": [], "files": [ { "path": "src/examples/chat/chat-screen.tsx", "type": "registry:ui", "target": "examples/chat/chat-screen.tsx" }, { "path": "src/examples/chat/chat-v2-mocks.ts", "type": "registry:ui", "target": "examples/chat/chat-v2-mocks.ts" }, { "path": "src/examples/chat/chat-v2.styles.ts", "type": "registry:ui", "target": "examples/chat/chat-v2.styles.ts" }, { "path": "src/examples/chat/chat-v2.types.ts", "type": "registry:ui", "target": "examples/chat/chat-v2.types.ts" }, { "path": "src/examples/chat/components/ChannelDot/channel-dot.tsx", "type": "registry:ui", "target": "examples/chat/components/ChannelDot/channel-dot.tsx" }, { "path": "src/examples/chat/components/ConversationActionsMenu/conversation-actions-menu.tsx", "type": "registry:ui", "target": "examples/chat/components/ConversationActionsMenu/conversation-actions-menu.tsx" }, { "path": "src/examples/chat/components/ConversationActionsMenu/index.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationActionsMenu/index.ts" }, { "path": "src/examples/chat/components/ConversationColumn/conversation-column.styles.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationColumn/conversation-column.styles.ts" }, { "path": "src/examples/chat/components/ConversationColumn/conversation-column.tsx", "type": "registry:ui", "target": "examples/chat/components/ConversationColumn/conversation-column.tsx" }, { "path": "src/examples/chat/components/ConversationColumn/conversation-column.types.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationColumn/conversation-column.types.ts" }, { "path": "src/examples/chat/components/ConversationColumn/index.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationColumn/index.ts" }, { "path": "src/examples/chat/components/ConversationListItem/conversation-list-item.styles.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationListItem/conversation-list-item.styles.ts" }, { "path": "src/examples/chat/components/ConversationListItem/conversation-list-item.tsx", "type": "registry:ui", "target": "examples/chat/components/ConversationListItem/conversation-list-item.tsx" }, { "path": "src/examples/chat/components/ConversationListItem/conversation-list-item.types.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationListItem/conversation-list-item.types.ts" }, { "path": "src/examples/chat/components/ConversationListItem/index.ts", "type": "registry:ui", "target": "examples/chat/components/ConversationListItem/index.ts" }, { "path": "src/examples/chat/components/DateSeparator/date-separator.tsx", "type": "registry:ui", "target": "examples/chat/components/DateSeparator/date-separator.tsx" }, { "path": "src/examples/chat/components/DetailField/detail-field.tsx", "type": "registry:ui", "target": "examples/chat/components/DetailField/detail-field.tsx" }, { "path": "src/examples/chat/components/DetailsColumn/details-column.styles.ts", "type": "registry:ui", "target": "examples/chat/components/DetailsColumn/details-column.styles.ts" }, { "path": "src/examples/chat/components/DetailsColumn/details-column.tsx", "type": "registry:ui", "target": "examples/chat/components/DetailsColumn/details-column.tsx" }, { "path": "src/examples/chat/components/DetailsColumn/details-column.types.ts", "type": "registry:ui", "target": "examples/chat/components/DetailsColumn/details-column.types.ts" }, { "path": "src/examples/chat/components/DetailsColumn/index.ts", "type": "registry:ui", "target": "examples/chat/components/DetailsColumn/index.ts" }, { "path": "src/examples/chat/components/DetailSection/detail-section.tsx", "type": "registry:ui", "target": "examples/chat/components/DetailSection/detail-section.tsx" }, { "path": "src/examples/chat/components/DetailSection/index.ts", "type": "registry:ui", "target": "examples/chat/components/DetailSection/index.ts" }, { "path": "src/examples/chat/components/FilterRow/filter-row.styles.ts", "type": "registry:ui", "target": "examples/chat/components/FilterRow/filter-row.styles.ts" }, { "path": "src/examples/chat/components/FilterRow/filter-row.tsx", "type": "registry:ui", "target": "examples/chat/components/FilterRow/filter-row.tsx" }, { "path": "src/examples/chat/components/FilterRow/index.ts", "type": "registry:ui", "target": "examples/chat/components/FilterRow/index.ts" }, { "path": "src/examples/chat/components/FiltersColumn/filters-column.styles.ts", "type": "registry:ui", "target": "examples/chat/components/FiltersColumn/filters-column.styles.ts" }, { "path": "src/examples/chat/components/FiltersColumn/filters-column.tsx", "type": "registry:ui", "target": "examples/chat/components/FiltersColumn/filters-column.tsx" }, { "path": "src/examples/chat/components/FiltersColumn/filters-column.types.ts", "type": "registry:ui", "target": "examples/chat/components/FiltersColumn/filters-column.types.ts" }, { "path": "src/examples/chat/components/FiltersColumn/filters-rail.tsx", "type": "registry:ui", "target": "examples/chat/components/FiltersColumn/filters-rail.tsx" }, { "path": "src/examples/chat/components/FiltersColumn/index.ts", "type": "registry:ui", "target": "examples/chat/components/FiltersColumn/index.ts" }, { "path": "src/examples/chat/components/MessageBubble/index.ts", "type": "registry:ui", "target": "examples/chat/components/MessageBubble/index.ts" }, { "path": "src/examples/chat/components/MessageBubble/message-bubble.styles.ts", "type": "registry:ui", "target": "examples/chat/components/MessageBubble/message-bubble.styles.ts" }, { "path": "src/examples/chat/components/MessageBubble/message-bubble.tsx", "type": "registry:ui", "target": "examples/chat/components/MessageBubble/message-bubble.tsx" }, { "path": "src/examples/chat/components/MessageBubble/message-bubble.types.ts", "type": "registry:ui", "target": "examples/chat/components/MessageBubble/message-bubble.types.ts" }, { "path": "src/examples/chat/components/PersonAvatar/index.ts", "type": "registry:ui", "target": "examples/chat/components/PersonAvatar/index.ts" }, { "path": "src/examples/chat/components/PersonAvatar/person-avatar.tsx", "type": "registry:ui", "target": "examples/chat/components/PersonAvatar/person-avatar.tsx" }, { "path": "src/examples/chat/components/QueueColumn/index.ts", "type": "registry:ui", "target": "examples/chat/components/QueueColumn/index.ts" }, { "path": "src/examples/chat/components/QueueColumn/queue-column.styles.ts", "type": "registry:ui", "target": "examples/chat/components/QueueColumn/queue-column.styles.ts" }, { "path": "src/examples/chat/components/QueueColumn/queue-column.tsx", "type": "registry:ui", "target": "examples/chat/components/QueueColumn/queue-column.tsx" }, { "path": "src/examples/chat/components/QueueColumn/queue-column.types.ts", "type": "registry:ui", "target": "examples/chat/components/QueueColumn/queue-column.types.ts" }, { "path": "src/examples/chat/components/RailItem/index.ts", "type": "registry:ui", "target": "examples/chat/components/RailItem/index.ts" }, { "path": "src/examples/chat/components/RailItem/rail-item.styles.ts", "type": "registry:ui", "target": "examples/chat/components/RailItem/rail-item.styles.ts" }, { "path": "src/examples/chat/components/RailItem/rail-item.tsx", "type": "registry:ui", "target": "examples/chat/components/RailItem/rail-item.tsx" }, { "path": "src/examples/chat/hooks/use-resizable.ts", "type": "registry:ui", "target": "examples/chat/hooks/use-resizable.ts" }, { "path": "src/examples/chat/index.ts", "type": "registry:ui", "target": "examples/chat/index.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · example-chat · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "Tooltip on-hover/focus (Radix) tokenizado. Requer TooltipProvider no root.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-tooltip@^1.2.10" ], "files": [ { "path": "src/components/shadcn/tooltip.tsx", "type": "registry:ui", "target": "components/ui/tooltip.tsx" } ], "meta": { "stamp": "igreen-ds · tooltip · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "skeleton", "type": "registry:ui", "title": "Skeleton", "description": "Placeholder de carregamento (pulse) com tokens do DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [], "files": [ { "path": "src/components/shadcn/skeleton.tsx", "type": "registry:ui", "target": "components/ui/skeleton.tsx" } ], "meta": { "stamp": "igreen-ds · skeleton · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "sonner", "type": "registry:ui", "title": "Sonner", "description": "Toaster/toasts (Sonner) tokenizado e self-contained (segue o tema via .dark).", "registryDependencies": [], "dependencies": [ "lucide-react@^1.7.0", "sonner@^2.0.7" ], "files": [ { "path": "src/components/shadcn/sonner.tsx", "type": "registry:ui", "target": "components/ui/sonner.tsx" } ], "meta": { "stamp": "igreen-ds · sonner · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "toast", "type": "registry:ui", "title": "Toast", "description": "Card de notificação sobre o Sonner — status no icon-chip (bg fraco + ícone forte), props ergonômicas (title/description/icon/action/cancel/onClose/meta). Mantém o nativo do Sonner.", "registryDependencies": [ "@igreen/button", "@igreen/sonner", "@igreen/tv" ], "dependencies": [ "lucide-react@^1.7.0", "sonner@^2.0.7" ], "files": [ { "path": "src/components/ui/Toast/USAGE.md", "type": "registry:file", "target": "components/ui/Toast/USAGE.md" }, { "path": "src/components/ui/Toast/index.ts", "type": "registry:ui", "target": "components/ui/Toast/index.ts" }, { "path": "src/components/ui/Toast/toast-card.tsx", "type": "registry:ui", "target": "components/ui/Toast/toast-card.tsx" }, { "path": "src/components/ui/Toast/toast.styles.ts", "type": "registry:ui", "target": "components/ui/Toast/toast.styles.ts" }, { "path": "src/components/ui/Toast/toast.tsx", "type": "registry:ui", "target": "components/ui/Toast/toast.tsx" } ], "meta": { "stamp": "igreen-ds · toast · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "collapsible", "type": "registry:ui", "title": "Collapsible", "description": "Mostra/esconde uma seção (Radix). Trigger + conteúdo expansível.", "registryDependencies": [], "dependencies": [ "@radix-ui/react-collapsible@^1.1.14" ], "files": [ { "path": "src/components/shadcn/collapsible.tsx", "type": "registry:ui", "target": "components/ui/collapsible.tsx" } ], "meta": { "stamp": "igreen-ds · collapsible · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "scroll-area", "type": "registry:ui", "title": "Scroll Area", "description": "Área rolável com scrollbar estilizada (Radix), thumb tokenizado.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-scroll-area@^1.2.12" ], "files": [ { "path": "src/components/shadcn/scroll-area.tsx", "type": "registry:ui", "target": "components/ui/scroll-area.tsx" } ], "meta": { "stamp": "igreen-ds · scroll-area · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "toggle", "type": "registry:ui", "title": "Toggle", "description": "Botão de dois estados (Radix), tokenizado; ativo em brand-subtle.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-toggle@^1.1.12", "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/toggle.tsx", "type": "registry:ui", "target": "components/ui/toggle.tsx" } ], "meta": { "stamp": "igreen-ds · toggle · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "toggle-group", "type": "registry:ui", "title": "Toggle Group", "description": "Grupo de toggles (segmented), single/multiple.", "registryDependencies": [ "@igreen/toggle", "@igreen/utils" ], "dependencies": [ "@radix-ui/react-toggle-group@^1.1.13", "class-variance-authority@^0.7.1" ], "files": [ { "path": "src/components/shadcn/toggle-group.tsx", "type": "registry:ui", "target": "components/ui/toggle-group.tsx" } ], "meta": { "stamp": "igreen-ds · toggle-group · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "input-otp", "type": "registry:ui", "title": "Input OTP", "description": "Entrada de código OTP/2FA com slots individuais, tokenizado.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "input-otp@^1.4.2", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/input-otp.tsx", "type": "registry:ui", "target": "components/ui/input-otp.tsx" } ], "meta": { "stamp": "igreen-ds · input-otp · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "context-menu", "type": "registry:ui", "title": "Context Menu", "description": "Menu de clique-direito (Radix) na receita de superfície do DS.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-context-menu@^2.3.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/context-menu.tsx", "type": "registry:ui", "target": "components/ui/context-menu.tsx" } ], "meta": { "stamp": "igreen-ds · context-menu · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "hover-card", "type": "registry:ui", "title": "Hover Card", "description": "Prévia em card on-hover (Radix), tokenizado (openDelay 200).", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-hover-card@^1.1.17" ], "files": [ { "path": "src/components/shadcn/hover-card.tsx", "type": "registry:ui", "target": "components/ui/hover-card.tsx" } ], "meta": { "stamp": "igreen-ds · hover-card · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "menubar", "type": "registry:ui", "title": "Menubar", "description": "Barra de menus estilo app desktop (Radix), tokenizado.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-menubar@^1.1.18", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/menubar.tsx", "type": "registry:ui", "target": "components/ui/menubar.tsx" } ], "meta": { "stamp": "igreen-ds · menubar · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "navigation-menu", "type": "registry:ui", "title": "Navigation Menu", "description": "Navegação com painéis/mega-menu (Radix), tokenizado.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "@radix-ui/react-navigation-menu@^1.2.16", "class-variance-authority@^0.7.1", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/navigation-menu.tsx", "type": "registry:ui", "target": "components/ui/navigation-menu.tsx" } ], "meta": { "stamp": "igreen-ds · navigation-menu · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "carousel", "type": "registry:ui", "title": "Carousel", "description": "Slides navegáveis (Embla); controles usam o Button do DS.", "registryDependencies": [ "@igreen/button", "@igreen/utils" ], "dependencies": [ "embla-carousel-react@^8.6.0", "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/shadcn/carousel.tsx", "type": "registry:ui", "target": "components/ui/carousel.tsx" } ], "meta": { "stamp": "igreen-ds · carousel · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "aspect-ratio", "type": "registry:ui", "title": "Aspect Ratio", "description": "Mantém uma proporção fixa do conteúdo (Radix).", "registryDependencies": [], "dependencies": [ "@radix-ui/react-aspect-ratio@^1.1.10" ], "files": [ { "path": "src/components/shadcn/aspect-ratio.tsx", "type": "registry:ui", "target": "components/ui/aspect-ratio.tsx" } ], "meta": { "stamp": "igreen-ds · aspect-ratio · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "drawer", "type": "registry:ui", "title": "Drawer", "description": "Painel deslizante com gesto de arrastar (Vaul), tokenizado.", "registryDependencies": [ "@igreen/utils" ], "dependencies": [ "vaul@^1.1.2" ], "files": [ { "path": "src/components/shadcn/drawer.tsx", "type": "registry:ui", "target": "components/ui/drawer.tsx" } ], "meta": { "stamp": "igreen-ds · drawer · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "date-picker", "type": "registry:ui", "title": "Date Picker", "description": "Seletor de data(s) (Popover + Calendar) com trigger no estilo input do DS (mesmos tokens do SelectTrigger). `mode`: single (default), range ou multiple — união discriminada, o modo troca o TIPO de `value`.", "registryDependencies": [ "@igreen/calendar", "@igreen/popover", "@igreen/utils" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/DatePicker/USAGE.md", "type": "registry:file", "target": "components/ui/DatePicker/USAGE.md" }, { "path": "src/components/ui/DatePicker/datepicker.tsx", "type": "registry:ui", "target": "components/ui/DatePicker/datepicker.tsx" }, { "path": "src/components/ui/DatePicker/index.ts", "type": "registry:ui", "target": "components/ui/DatePicker/index.ts" } ], "meta": { "stamp": "igreen-ds · date-picker · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "spinner", "type": "registry:ui", "title": "Spinner", "description": "Indicador de carregamento circular (sizes + tom); use inline em botões.", "registryDependencies": [ "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/Spinner/USAGE.md", "type": "registry:file", "target": "components/ui/Spinner/USAGE.md" }, { "path": "src/components/ui/Spinner/index.ts", "type": "registry:ui", "target": "components/ui/Spinner/index.ts" }, { "path": "src/components/ui/Spinner/spinner.styles.ts", "type": "registry:ui", "target": "components/ui/Spinner/spinner.styles.ts" }, { "path": "src/components/ui/Spinner/spinner.tsx", "type": "registry:ui", "target": "components/ui/Spinner/spinner.tsx" }, { "path": "src/components/ui/Spinner/spinner.types.ts", "type": "registry:ui", "target": "components/ui/Spinner/spinner.types.ts" } ], "meta": { "stamp": "igreen-ds · spinner · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "empty-state", "type": "registry:ui", "title": "EmptyState", "description": "Estado vazio: ícone/ilustração + título + descrição + ação (CTA).", "registryDependencies": [ "@igreen/button", "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/EmptyState/USAGE.md", "type": "registry:file", "target": "components/ui/EmptyState/USAGE.md" }, { "path": "src/components/ui/EmptyState/empty-state.styles.ts", "type": "registry:ui", "target": "components/ui/EmptyState/empty-state.styles.ts" }, { "path": "src/components/ui/EmptyState/empty-state.tsx", "type": "registry:ui", "target": "components/ui/EmptyState/empty-state.tsx" }, { "path": "src/components/ui/EmptyState/empty-state.types.ts", "type": "registry:ui", "target": "components/ui/EmptyState/empty-state.types.ts" }, { "path": "src/components/ui/EmptyState/index.ts", "type": "registry:ui", "target": "components/ui/EmptyState/index.ts" }, { "path": "src/lib/lucide-types.ts", "type": "registry:file", "target": "src/lib/lucide-types.ts" } ], "meta": { "stamp": "igreen-ds · empty-state · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "screen-loader", "type": "registry:ui", "title": "ScreenLoader", "description": "Loading de página/área que preenche o container pai — variantes spinner (centrado + título/descrição) e skeleton (silhueta genérica: page/dashboard/kpis).", "registryDependencies": [ "@igreen/skeleton", "@igreen/spinner", "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/ScreenLoader/USAGE.md", "type": "registry:file", "target": "components/ui/ScreenLoader/USAGE.md" }, { "path": "src/components/ui/ScreenLoader/index.ts", "type": "registry:ui", "target": "components/ui/ScreenLoader/index.ts" }, { "path": "src/components/ui/ScreenLoader/screen-loader.styles.ts", "type": "registry:ui", "target": "components/ui/ScreenLoader/screen-loader.styles.ts" }, { "path": "src/components/ui/ScreenLoader/screen-loader.tsx", "type": "registry:ui", "target": "components/ui/ScreenLoader/screen-loader.tsx" }, { "path": "src/components/ui/ScreenLoader/screen-loader.types.ts", "type": "registry:ui", "target": "components/ui/ScreenLoader/screen-loader.types.ts" } ], "meta": { "stamp": "igreen-ds · screen-loader · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "markdown-text", "type": "registry:ui", "title": "MarkdownText", "description": "Renderiza um subset de markdown (negrito/itálico/code/links) como texto estilizado.", "registryDependencies": [ "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/MarkdownText/USAGE.md", "type": "registry:file", "target": "components/ui/MarkdownText/USAGE.md" }, { "path": "src/components/ui/MarkdownText/index.ts", "type": "registry:ui", "target": "components/ui/MarkdownText/index.ts" }, { "path": "src/components/ui/MarkdownText/markdown-text.styles.ts", "type": "registry:ui", "target": "components/ui/MarkdownText/markdown-text.styles.ts" }, { "path": "src/components/ui/MarkdownText/markdown-text.tsx", "type": "registry:ui", "target": "components/ui/MarkdownText/markdown-text.tsx" }, { "path": "src/components/ui/MarkdownText/markdown-text.types.ts", "type": "registry:ui", "target": "components/ui/MarkdownText/markdown-text.types.ts" } ], "meta": { "stamp": "igreen-ds · markdown-text · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "file-upload-field", "type": "registry:ui", "title": "FileUploadField", "description": "Campo de upload de arquivo (dropzone + accept/tamanho + preview + estados).", "registryDependencies": [ "@igreen/button", "@igreen/chip", "@igreen/form-field", "@igreen/icon", "@igreen/tv" ], "dependencies": [], "files": [ { "path": "src/components/ui/FileUploadField/USAGE.md", "type": "registry:file", "target": "components/ui/FileUploadField/USAGE.md" }, { "path": "src/components/ui/FileUploadField/file-upload-field.styles.ts", "type": "registry:ui", "target": "components/ui/FileUploadField/file-upload-field.styles.ts" }, { "path": "src/components/ui/FileUploadField/file-upload-field.tsx", "type": "registry:ui", "target": "components/ui/FileUploadField/file-upload-field.tsx" }, { "path": "src/components/ui/FileUploadField/file-upload-field.types.ts", "type": "registry:ui", "target": "components/ui/FileUploadField/file-upload-field.types.ts" }, { "path": "src/components/ui/FileUploadField/index.ts", "type": "registry:ui", "target": "components/ui/FileUploadField/index.ts" } ], "meta": { "stamp": "igreen-ds · file-upload-field · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "month-year-picker", "type": "registry:ui", "title": "MonthYearPicker", "description": "Seletor de mês/ano em popover (min/max, controlado).", "registryDependencies": [ "@igreen/popover", "@igreen/tv" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/MonthYearPicker/USAGE.md", "type": "registry:file", "target": "components/ui/MonthYearPicker/USAGE.md" }, { "path": "src/components/ui/MonthYearPicker/index.ts", "type": "registry:ui", "target": "components/ui/MonthYearPicker/index.ts" }, { "path": "src/components/ui/MonthYearPicker/month-year-picker.styles.ts", "type": "registry:ui", "target": "components/ui/MonthYearPicker/month-year-picker.styles.ts" }, { "path": "src/components/ui/MonthYearPicker/month-year-picker.tsx", "type": "registry:ui", "target": "components/ui/MonthYearPicker/month-year-picker.tsx" }, { "path": "src/components/ui/MonthYearPicker/month-year-picker.types.ts", "type": "registry:ui", "target": "components/ui/MonthYearPicker/month-year-picker.types.ts" } ], "meta": { "stamp": "igreen-ds · month-year-picker · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "color-picker", "type": "registry:ui", "title": "ColorPicker", "description": "Seletor de cor hex com paleta de presets + input livre; normaliza #RRGGBB.", "registryDependencies": [ "@igreen/button", "@igreen/form-field", "@igreen/input", "@igreen/popover", "@igreen/separator", "@igreen/tv" ], "dependencies": [ "lucide-react@^1.7.0" ], "files": [ { "path": "src/components/ui/ColorPicker/USAGE.md", "type": "registry:file", "target": "components/ui/ColorPicker/USAGE.md" }, { "path": "src/components/ui/ColorPicker/color-picker.presets.ts", "type": "registry:ui", "target": "components/ui/ColorPicker/color-picker.presets.ts" }, { "path": "src/components/ui/ColorPicker/color-picker.styles.ts", "type": "registry:ui", "target": "components/ui/ColorPicker/color-picker.styles.ts" }, { "path": "src/components/ui/ColorPicker/color-picker.tsx", "type": "registry:ui", "target": "components/ui/ColorPicker/color-picker.tsx" }, { "path": "src/components/ui/ColorPicker/color-picker.types.ts", "type": "registry:ui", "target": "components/ui/ColorPicker/color-picker.types.ts" }, { "path": "src/components/ui/ColorPicker/index.ts", "type": "registry:ui", "target": "components/ui/ColorPicker/index.ts" }, { "path": "src/utils/color-contrast.ts", "type": "registry:file", "target": "src/utils/color-contrast.ts" } ], "meta": { "stamp": "igreen-ds · color-picker · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "dsgreen-chart-1", "type": "registry:block", "title": "Bloco dsgreen-chart-1 — Donut de distribuição com rateio", "description": "Donut com total no centro + lista das fatias abaixo, onde a cor liga linha e setor. Para distribuição de um total por 3–5 categorias nomeadas.", "registryDependencies": [ "@igreen/card", "@igreen/chart", "@igreen/chip", "@igreen/tabs", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "recharts" ], "files": [ { "path": "src/blocks/chart/budget-breakdown.tsx", "type": "registry:block", "target": "blocks/chart/budget-breakdown.tsx" } ], "meta": { "stamp": "igreen-ds · dsgreen-chart-1 · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "dsgreen-paneldetail-1", "type": "registry:block", "title": "Bloco dsgreen-paneldetail-1 — Painel de detalhe do registro", "description": "Painel lateral aberto a partir de uma linha de tabela: header com avatar + nome + código e status, ações de ícone e maximizar; métricas em cards compactos; e os dados em seções colapsáveis — inclusive as que não são label:valor (conta bancária com marca, métodos em chips, e-mail e telefone acionáveis, gestor com avatar). Ação primária no footer. Mesmo padrão dos painéis de detalhe do Virtual Office e do CRUD de clientes.", "registryDependencies": [ "@igreen/avatar-ig", "@igreen/button", "@igreen/chip", "@igreen/floating-panel", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "lucide-react" ], "files": [ { "path": "src/blocks/paneldetail/detalhe-do-registro.tsx", "type": "registry:block", "target": "blocks/paneldetail/detalhe-do-registro.tsx" } ], "meta": { "stamp": "igreen-ds · dsgreen-paneldetail-1 · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "dsgreen-paneldetail-2", "type": "registry:block", "title": "Bloco dsgreen-paneldetail-2 — Detalhe de tarefa com abas", "description": "Painel de detalhe de uma TAREFA: contexto (projeto/coluna) no header, título grande no corpo, propriedades em lista plana com ícone à esquerda e valor à direita, descrição, e abas pros conteúdos que crescem — subtarefas, anexos, comentários e atividade.", "registryDependencies": [ "@igreen/avatar-ig", "@igreen/button", "@igreen/chip", "@igreen/floating-panel", "@igreen/input", "@igreen/tabs", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "lucide-react" ], "files": [ { "path": "src/blocks/paneldetail/detalhe-de-tarefa-com-abas.tsx", "type": "registry:block", "target": "blocks/paneldetail/detalhe-de-tarefa-com-abas.tsx" } ], "meta": { "stamp": "igreen-ds · dsgreen-paneldetail-2 · v0.66.0 · 5f7edda · 2026-09-16" } }, { "name": "dsgreen-paneldetail-3", "type": "registry:block", "title": "Bloco dsgreen-paneldetail-3 — Detalhe largo com métricas e tabela", "description": "Painel de detalhe LARGO (720px): identidade e propriedades em duas colunas no topo, faixa de métricas do período, e uma tabela curta escopada no registro (últimos lançamentos) com navegação de período e exportar. Pra quando o detalhe inclui uma série de linhas — em 560px isso viraria scroll horizontal.", "registryDependencies": [ "@igreen/avatar-ig", "@igreen/button", "@igreen/chip", "@igreen/floating-panel", "@igreen/table", "@igreen/tv", "@igreen/utils" ], "dependencies": [ "lucide-react" ], "files": [ { "path": "src/blocks/paneldetail/detalhe-com-tabela.tsx", "type": "registry:block", "target": "blocks/paneldetail/detalhe-com-tabela.tsx" } ], "meta": { "stamp": "igreen-ds · dsgreen-paneldetail-3 · v0.66.0 · 5f7edda · 2026-09-16" } } ] }