{"_id":"@core-tecnologias-empresariales/core-dashboard","_rev":"2-f522f17137130c5053ee48398633ba7a","name":"@core-tecnologias-empresariales/core-dashboard","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@core-tecnologias-empresariales/core-dashboard","version":"0.1.0","license":"UNLICENSED","_id":"@core-tecnologias-empresariales/core-dashboard@0.1.0","maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"dist":{"shasum":"1f8f89c19ffef10608106dd216c557beed75e0f1","tarball":"https://registry.npmjs.org/@core-tecnologias-empresariales/core-dashboard/-/core-dashboard-0.1.0.tgz","fileCount":4,"integrity":"sha512-9hULK5uuaiHXPEJDI9JuWD9eFJiyZy1VhehhWnHz4xAeQDxV/7RfofJdIWho+clDleLHuxdT+XuZpL8u5WGHdg==","signatures":[{"sig":"MEQCIDVaYMPAb6nQOhS4Ru2GEQJ0D+/EHJxCYzHDhkV/IDSAAiABClNnCCGiTeSWIB9DCacbrAMZA7043PDYfZgV9rzs5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25973},"main":"./dist/index.js","type":"module","_from":"file:core-tecnologias-empresariales-core-dashboard-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"balamchac","email":"marcelosazop@gmail.com"},"_resolved":"C:\\Users\\Administrador\\AppData\\Local\\Temp\\d80446f57f31324f771ca74eba64946c\\core-tecnologias-empresariales-core-dashboard-0.1.0.tgz","_integrity":"sha512-9hULK5uuaiHXPEJDI9JuWD9eFJiyZy1VhehhWnHz4xAeQDxV/7RfofJdIWho+clDleLHuxdT+XuZpL8u5WGHdg==","_npmVersion":"11.11.0","description":"Infraestructura transversal de dashboards, widgets, KPIs, tablas y filtros para el ecosistema Core Tecnología Empresarial. Sin lógica de negocio: los productos aportan datos, Core Dashboard aporta presentación e interacción.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@core-tecnologias-empresariales/core-ui":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^25.0.1","react":"^18.3.1","vitest":"^2.1.8","react-dom":"^18.3.1","typescript":"^5.7.0","@types/node":"^20.14.0","@types/react":"^18.3.12","lucide-react":"^0.468.0","@types/react-dom":"^18.3.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":">=18","react-dom":">=18","lucide-react":">=0.400.0"},"_npmOperationalInternal":{"tmp":"tmp/core-dashboard_0.1.0_1788054569733_0.7096098635310792","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@core-tecnologias-empresariales/core-dashboard","version":"0.2.0","description":"Infraestructura transversal de dashboards, widgets, KPIs, tablas y filtros para el ecosistema Core Tecnología Empresarial. Sin lógica de negocio: los productos aportan datos, Core Dashboard aporta presentación e interacción.","license":"UNLICENSED","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"dependencies":{"recharts":"^2.15.1","@core-tecnologias-empresariales/core-ui":"0.2.0"},"peerDependencies":{"lucide-react":">=0.400.0","react":">=18","react-dom":">=18"},"devDependencies":{"@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.1.0","@testing-library/user-event":"^14.5.2","@types/node":"^20.14.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","jsdom":"^25.0.1","lucide-react":"^0.468.0","react":"^18.3.1","react-dom":"^18.3.1","tsup":"^8.3.5","typescript":"^5.7.0","vitest":"^2.1.8"},"scripts":{"build":"tsup","test":"vitest run","typecheck":"tsc --noEmit -p tsconfig.json"},"_id":"@core-tecnologias-empresariales/core-dashboard@0.2.0","_integrity":"sha512-bJZ2jIf4waLMWeP7iTrBpxqA7JvsU9GpZY4CIACGNReSdjGIgzS4iZ19JARorNPD4FklL5YH939pm20vSXX7GQ==","_resolved":"C:\\Users\\Administrador\\AppData\\Local\\Temp\\11764f72ea625585b85f94689d6f0e15\\core-tecnologias-empresariales-core-dashboard-0.2.0.tgz","_from":"file:core-tecnologias-empresariales-core-dashboard-0.2.0.tgz","_nodeVersion":"20.20.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-bJZ2jIf4waLMWeP7iTrBpxqA7JvsU9GpZY4CIACGNReSdjGIgzS4iZ19JARorNPD4FklL5YH939pm20vSXX7GQ==","shasum":"08aaf593c930842318e76370895fef1e05c81af2","tarball":"https://registry.npmjs.org/@core-tecnologias-empresariales/core-dashboard/-/core-dashboard-0.2.0.tgz","fileCount":4,"unpackedSize":35127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEDnAezjhuL17jfjQWgN1lHDyfizsR1dHc6dP+ENeY3kAiBBVZ2ljCe5oqXgKz+sXNumasz/A7V17stCe0WuwFXagA=="}]},"_npmUser":{"name":"balamchac","email":"marcelosazop@gmail.com"},"directories":{},"maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core-dashboard_0.2.0_1788055305257_0.1896609145575674"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T01:49:29.557Z","modified":"2026-08-30T02:01:45.643Z","0.1.0":"2026-08-30T01:49:29.873Z","0.2.0":"2026-08-30T02:01:45.424Z"},"license":"UNLICENSED","description":"Infraestructura transversal de dashboards, widgets, KPIs, tablas y filtros para el ecosistema Core Tecnología Empresarial. Sin lógica de negocio: los productos aportan datos, Core Dashboard aporta presentación e interacción.","maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"readme":"# @core-tecnologias-empresariales/core-dashboard\n\nInfraestructura transversal de dashboards, widgets, KPIs, tablas y filtros para el ecosistema Core Tecnología Empresarial. Ver CLAUDE.md §23.\n\n## Para qué sirve\n\nNingún producto implementa su propio motor de dashboard, gráficos, tablas ni paginación. Este paquete aporta presentación, layout, interacción y estados; **el producto aporta datos, métricas, filtros, permisos y contexto**. Se monta dentro del `Content` de `core-shell` y compone las primitivas de `core-ui` (Card, Select, Button, EmptyState, ErrorState, Skeleton) — nunca duplica su sistema de diseño.\n\n## Para qué NO sirve\n\nNo decide qué es un cliente/producto/sucursal (esas opciones las trae el producto), no aplica autorización real (`Widget state=\"unauthorized\"` es UX — el backend decide qué datos llegan), no reemplaza `core-export` (los gráficos/tablas en pantalla son de acá; el archivo exportado es de `core-export`).\n\n## Instalación\n\n```bash\npnpm add @core-tecnologias-empresariales/core-dashboard @core-tecnologias-empresariales/core-ui\n```\n\n## Uso\n\n```tsx\nimport { LayoutGrid, Widget, KpiWidget, DataTable, FilterBar, type DashboardWidget } from \"@core-tecnologias-empresariales/core-dashboard\";\n\nconst widgets: DashboardWidget[] = [\n  { id: \"sales-kpi\", type: \"kpi\", position: { row: 1, col: 1 }, size: { width: 4 } },\n];\n\n<LayoutGrid\n  widgets={widgets}\n  renderWidget={(w) => (\n    <Widget state=\"loaded\" title=\"Ventas del mes\">\n      <KpiWidget data={{ label: \"Total\", value: \"$4.200.000\", change: { value: 8, label: \"vs. mes anterior\" }, status: \"positive\" }} />\n    </Widget>\n  )}\n/>;\n```\n\n## Piezas\n\n- **`Widget`** — wrapper de estados obligatorios (`loading`/`loaded`/`empty`/`error`/`unauthorized`/`unavailable`). Cualquier `WidgetType` nuevo se compone adentro sin tocar el motor.\n- **`KpiWidget`** — valor principal/secundario, variación, comparación, estado semántico (`positive`/`negative`/`neutral`/`warning`/`critical`/`info`).\n- **`LayoutGrid`** — grid responsivo 12/6/1 columnas (desktop/tablet/mobile) ordenado por `position`.\n- **`DataTable`** — orden y paginación (client o server-side vía `pagination`/`onPageChange`). Sobre `<table>` nativo: `core-ui` aún no publica un `DataTable` propio (ver su README); esto se migra a componerlo el día que exista.\n- **`FilterBar`** — filtros principales + chips activos removibles + \"Limpiar filtros\". Los `options` de cada `FilterDefinition` siempre los trae el producto.\n- **`sortRows`/`topBottomN`** — orden múltiple con `Intl.Collator` (correcto con acentos/mayúsculas), Top/Bottom N.\n- **`paginate`/`pageCount`/`clampPage`** — helpers puros para paginación client-side. Volúmenes grandes: paginar en el backend y pasar `pagination.total` real.\n\n## Chart Engine\n\nSobre **Recharts** (`^2.15`, la mayor estable compatible con React 18 — se evitó la v3, recién publicada, hasta que el ecosistema React 19 sea el estándar acá). `<Chart config={...} />` cubre el set MVP del §23: `line, bar, column, area, pie, donut, stacked, grouped, radial, gauge, ranking`. Colores por defecto ciclan sobre los tokens de `core-ui` (`var(--primary-100)`, etc.) — nunca hex fijos.\n\n```tsx\nimport { Chart } from \"@core-tecnologias-empresariales/core-dashboard\";\n\n<Chart\n  config={{\n    type: \"bar\",\n    title: \"Ventas por mes\",\n    data: [{ month: \"Ene\", total: 120 }, { month: \"Feb\", total: 150 }],\n    xAxis: \"month\",\n    series: [{ field: \"total\", label: \"Ventas\" }],\n  }}\n/>;\n```\n\nLos gráficos **en pantalla** son de acá; los gráficos **dentro de un archivo** (Excel/PDF) son de `core-export` — comparten `ChartConfig`, no el renderizador.\n\n## Deferido (sin consumidor real todavía)\n\n- Chart types de segunda etapa (§23): scatter, bubble, radar, heatmap, treemap, waterfall, funnel, combo, sparkline — se agregan como un `case` nuevo en `chart.tsx` sin tocar el resto del motor.\n- Drag & drop / resize de widgets, `DashboardPreference` por usuario — segunda etapa explícita en §23.\n- Filtros de rango numérico/fecha y jerárquicos (`Región → Comuna → Sucursal`) en `FilterBar` — hoy solo soporta texto y select de opciones planas.\n- Ranking/Progress/Gauge/Timeline/Activity/Alert/Comparison/Statistic/Calendar como componentes dedicados — se arman hoy componiendo `Widget` + contenido propio; se extraen si un producto repite el patrón.\n\n## Seguridad\n\n`state=\"unauthorized\"` solo cambia lo que se muestra. **La autorización real se aplica en el backend** — Core Dashboard nunca es la frontera de seguridad (CLAUDE.md §23, §26).\n","readmeFilename":"README.md"}