{"_id":"@core-tecnologias-empresariales/core-shell","name":"@core-tecnologias-empresariales/core-shell","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@core-tecnologias-empresariales/core-shell","version":"0.1.0","description":"Estructura general de aplicaciones (AppShell, Header, Sidebar, Breadcrumb, PageHeader) para el ecosistema Core Tecnología Empresarial. Compone core-ui, filtra navegación con core-permissions.","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":{"@core-tecnologias-empresariales/core-ui":"0.2.0","@core-tecnologias-empresariales/core-permissions":"0.1.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-shell@0.1.0","_integrity":"sha512-475Sz39JUMrQ0CTlODYkIh6TFoF6ghlypvV35FkM8/diEQjQqcDuq9RUK9uR0jSMe6X3sMWVfk+okCBIibWTJQ==","_resolved":"C:\\Users\\Administrador\\AppData\\Local\\Temp\\68ac3d5d69e4514a56a7b2ee93220976\\core-tecnologias-empresariales-core-shell-0.1.0.tgz","_from":"file:core-tecnologias-empresariales-core-shell-0.1.0.tgz","_nodeVersion":"20.20.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-475Sz39JUMrQ0CTlODYkIh6TFoF6ghlypvV35FkM8/diEQjQqcDuq9RUK9uR0jSMe6X3sMWVfk+okCBIibWTJQ==","shasum":"df16fdb5a907d8eb50eec1e7a03bd36bc4d57705","tarball":"https://registry.npmjs.org/@core-tecnologias-empresariales/core-shell/-/core-shell-0.1.0.tgz","fileCount":4,"unpackedSize":20882,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDwsGzK4gLmNSc851SX5Z7CiPZ9eK5VIrzHlx8q7JOFzAiB7qoaxUHUvMAE9Hay7Pc6Qtn32H9eH8uXgbCi1TQ4MlQ=="}]},"_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-shell_0.1.0_1788054564465_0.5590534714403956"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T01:49:24.319Z","0.1.0":"2026-08-30T01:49:24.596Z","modified":"2026-08-30T01:49:24.819Z"},"maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"description":"Estructura general de aplicaciones (AppShell, Header, Sidebar, Breadcrumb, PageHeader) para el ecosistema Core Tecnología Empresarial. Compone core-ui, filtra navegación con core-permissions.","license":"UNLICENSED","readme":"# @core-tecnologias-empresariales/core-shell\n\nEstructura general de las aplicaciones del ecosistema Core Tecnología Empresarial: `AppShell`, `Header`, `Sidebar` (con Drawer mobile), `Breadcrumb`, `PageHeader`, `EnvironmentIndicator`. Ver CLAUDE.md §24.\n\n## Para qué sirve\n\nNingún producto (CorePyme, Core Tributario, Core Contador) implementa su propio `AppShell`, `Sidebar`, `Header` ni `Breadcrumb`. Este paquete compone las primitivas de `core-ui` (Button, Sheet) y filtra la navegación con `core-permissions` — nunca es la frontera de seguridad, solo UX; la autorización real vive en el backend.\n\n## Para qué NO sirve\n\nNo define rutas, no sabe qué es un módulo de negocio, no reemplaza `core-dashboard` (que se monta *dentro* del `Content` del Shell) ni `core-export` (Shell da el botón `[Exportar ▾]`, pero no genera archivos).\n\n## Instalación\n\n```bash\npnpm add @core-tecnologias-empresariales/core-shell @core-tecnologias-empresariales/core-ui @core-tecnologias-empresariales/core-permissions\n```\n\n## Uso\n\n```tsx\nimport { AppShell, EnvironmentIndicator, type NavigationItem } from \"@core-tecnologias-empresariales/core-shell\";\nimport { LayoutDashboard, ShoppingCart } from \"lucide-react\";\n\nconst items: NavigationItem[] = [\n  { id: \"dashboard\", label: \"Dashboard\", href: \"/dashboard\", icon: LayoutDashboard },\n  {\n    id: \"sales\",\n    label: \"Ventas\",\n    icon: ShoppingCart,\n    permission: \"sales.read\",\n    children: [{ id: \"sales-list\", label: \"Documentos\", href: \"/ventas/documentos\", permission: \"sales.read\" }],\n  },\n];\n\n<AppShell\n  header={{\n    brand: <span className=\"font-semibold\">CorePyme</span>,\n    indicator: <EnvironmentIndicator environment=\"sandbox\" />,\n  }}\n  sidebar={{ items, currentPath: \"/ventas/documentos\", hasPermission: (p) => userPermissions.has(p) }}\n>\n  <PageHeader title=\"Documentos de venta\" />\n  {/* contenido de la página */}\n</AppShell>;\n```\n\n## Componentes\n\n- **`AppShell`** — layout `Header / Sidebar / Content / Footer`, cada pieza opcional. Coordina el Drawer mobile del Sidebar (el trigger vive en el Header).\n- **`Header`** — slots (`brand`, `actions`, `indicator`), sin variantes cerradas: el producto compone lo que necesita.\n- **`Sidebar` / `MobileSidebar`** — navegación declarativa (`NavigationItem`), filtrada por `hasPermission`, con submenús colapsables. `MobileSidebar` reutiliza `Sheet` de `core-ui`.\n- **`Breadcrumb`** — ruta completa en desktop/tablet, `‹ anterior` en mobile.\n- **`PageHeader`** — título, descripción, icono, breadcrumb, acciones.\n- **`EnvironmentIndicator`** — no renderiza nada en `production`; badge visible en `sandbox`/`certification`.\n- **`filterNavigation` / `isActiveRoute`** — helpers puros, reutilizables fuera de `Sidebar` si un producto arma su propia navegación.\n\n## Deferido (sin consumidor real todavía)\n\n- Layouts de página reutilizables (`Standard/Dashboard/List/Detail/Form/Split Page`) — se agregan cuando `core-dashboard` y el primer producto los necesiten.\n- Expand-on-hover animado del Sidebar en modo `collapsed` (tablet) — hoy es estático, lo controla el producto.\n- `Header` con selector de empresa/tenant, búsqueda global, menú de usuario como sub-componentes propios — cada producto los arma con `core-ui` y los pasa vía `actions`.\n\n## Seguridad\n\nEl `permission` en `NavigationItem` solo oculta el item en el Sidebar. **Nunca reemplaza la autorización del backend** — es UX, no seguridad (CLAUDE.md §24, §26).\n","readmeFilename":"README.md","_rev":"1-5489641edf14f0bd3d0083faed2f3805"}