spine-framework 0.3.124 → 0.3.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
// CIL[BEGIN chunk_id="DataListPage_module_header_1783929048" type="module_header" identity="imports" parent="none"]
|
|
4
|
+
// CIL[DOC-MACRO purpose="Import dependencies for entity list page component"]
|
|
5
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage imports for hooks and components"]
|
|
6
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
7
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imports" errors="none" side_effects="none"]
|
|
8
|
+
// CIL[DOC-MICRO logic_summary="Imports routing, hooks, and runtime components" notable_decisions="[]"]
|
|
9
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
10
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
11
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
12
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
13
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
14
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
15
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
16
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
17
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
1
18
|
import { useParams } from 'react-router-dom'
|
|
2
19
|
import { useListSchema } from '../../hooks/useListSchema'
|
|
3
20
|
import { useEntityList } from '../../hooks/useEntityList'
|
|
@@ -5,17 +22,76 @@ import { DataHeader } from './DataHeader'
|
|
|
5
22
|
import { DataStats } from './DataStats'
|
|
6
23
|
import { DataFilters } from './DataFilters'
|
|
7
24
|
import { DataTable } from './DataTable'
|
|
25
|
+
import { PageInstructions } from '../admin/PageInstructions'
|
|
8
26
|
import { Card, CardContent } from '../ui/card'
|
|
9
27
|
import { Skeleton } from '../ui/skeleton'
|
|
10
|
-
|
|
28
|
+
// CIL[END chunk_id="DataListPage_module_header_1783929048"]
|
|
29
|
+
// CIL[BEGIN chunk_id="DataListPage_datalistpage_1783929048" type="function" identity="DataListPage" parent="none"]
|
|
30
|
+
// CIL[DOC-MACRO purpose="Render main list page with all components"]
|
|
31
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display complete entity management interface"]
|
|
32
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/table-primitives.tsx\"]"]
|
|
33
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX list page" errors="none" side_effects="none"]
|
|
34
|
+
// CIL[DOC-MICRO logic_summary="Render header, stats, filters, and table with config data" notable_decisions="[]"]
|
|
35
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
36
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
37
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/table-primitives.tsx."]
|
|
38
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
39
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
40
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
41
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
42
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
11
43
|
export function DataListPage() {
|
|
44
|
+
// CIL[BEGIN chunk_id="DataListPage_params_1783929048" type="variable_declaration" identity="params" parent="DataListPage_datalistpage_1783929048"]
|
|
45
|
+
// CIL[DOC-MACRO purpose="Extract URL parameters for entity and type"]
|
|
46
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle params"]
|
|
47
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
48
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="entity:string,typeSlug?:string" errors="none" side_effects="none"]
|
|
49
|
+
// CIL[DOC-MICRO logic_summary="Extract entity and optional typeSlug from React Router params" notable_decisions="[]"]
|
|
50
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
51
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
52
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/025_retype_threads_messages.sql, .framework/functions/_shared/schema-utils.ts, \."]
|
|
53
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
54
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
55
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
56
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
57
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
12
58
|
const { entity, typeSlug } = useParams<{ entity: string; typeSlug?: string }>()
|
|
59
|
+
// CIL[END chunk_id="DataListPage_params_1783929048"]
|
|
13
60
|
|
|
61
|
+
// CIL[BEGIN chunk_id="DataListPage_schema_1783929048" type="variable_declaration" identity="schema" parent="DataListPage_datalistpage_1783929048"]
|
|
62
|
+
// CIL[DOC-MACRO purpose="Fetch entity schema and view configuration"]
|
|
63
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle schema"]
|
|
64
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
65
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="schema,view,loading,error" errors="none" side_effects="API call"]
|
|
66
|
+
// CIL[DOC-MICRO logic_summary="Call useListSchema hook to get entity schema and view config" notable_decisions="[]"]
|
|
67
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
68
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
69
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
70
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 3."]
|
|
71
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
72
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
73
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
74
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
14
75
|
const { schema, view, loading: schemaLoading, error: schemaError } = useListSchema({
|
|
15
76
|
entity: entity || '',
|
|
16
77
|
viewSlug: 'default_list'
|
|
17
78
|
})
|
|
79
|
+
// CIL[END chunk_id="DataListPage_schema_1783929048"]
|
|
18
80
|
|
|
81
|
+
// CIL[BEGIN chunk_id="DataListPage_config_1783929048" type="variable_declaration" identity="config" parent="DataListPage_datalistpage_1783929048"]
|
|
82
|
+
// CIL[DOC-MACRO purpose="Build configuration object from schema and view"]
|
|
83
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle config"]
|
|
84
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
85
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="config:object|null" errors="none" side_effects="none"]
|
|
86
|
+
// CIL[DOC-MICRO logic_summary="Merge schema and view data into config for list components" notable_decisions="[]"]
|
|
87
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
88
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
89
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
90
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
91
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
92
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
93
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
94
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
19
95
|
const config = view && schema ? {
|
|
20
96
|
entity: entity || '',
|
|
21
97
|
typeSlug: typeSlug || undefined,
|
|
@@ -36,7 +112,22 @@ export function DataListPage() {
|
|
|
36
112
|
}))
|
|
37
113
|
}
|
|
38
114
|
} : null
|
|
115
|
+
// CIL[END chunk_id="DataListPage_config_1783929048"]
|
|
39
116
|
|
|
117
|
+
// CIL[BEGIN chunk_id="DataListPage_entitylist_1783929048" type="variable_declaration" identity="entityList" parent="DataListPage_datalistpage_1783929048"]
|
|
118
|
+
// CIL[DOC-MACRO purpose="Fetch entity data and list management functions"]
|
|
119
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle entityList"]
|
|
120
|
+
// CIL[DOC-CONTEXT module="entityList" layer="unknown" related_files="[]"]
|
|
121
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
122
|
+
// CIL[DOC-MICRO logic_summary="Implements entityList" notable_decisions="[]"]
|
|
123
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
124
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
125
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
126
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
127
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
128
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
129
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
130
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
40
131
|
const {
|
|
41
132
|
data,
|
|
42
133
|
loading,
|
|
@@ -47,7 +138,22 @@ export function DataListPage() {
|
|
|
47
138
|
sort,
|
|
48
139
|
setSort
|
|
49
140
|
} = useEntityList(entity!, config)
|
|
141
|
+
// CIL[END chunk_id="DataListPage_entitylist_1783929048"]
|
|
50
142
|
|
|
143
|
+
// CIL[BEGIN chunk_id="DataListPage_loadingstate_1783929048" type="render_block" identity="loadingState" parent="DataListPage_datalistpage_1783929048"]
|
|
144
|
+
// CIL[DOC-MACRO purpose="Render loading skeleton for schema fetching"]
|
|
145
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle loadingState"]
|
|
146
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[]"]
|
|
147
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX loading skeleton" errors="none" side_effects="none"]
|
|
148
|
+
// CIL[DOC-MICRO logic_summary="Show skeleton placeholders for header, stats, and table" notable_decisions="[]"]
|
|
149
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
150
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
151
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
152
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
153
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
154
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
155
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
156
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
51
157
|
if (schemaLoading) {
|
|
52
158
|
return (
|
|
53
159
|
<div className="space-y-6">
|
|
@@ -73,7 +179,22 @@ export function DataListPage() {
|
|
|
73
179
|
</div>
|
|
74
180
|
)
|
|
75
181
|
}
|
|
182
|
+
// CIL[END chunk_id="DataListPage_loadingstate_1783929048"]
|
|
76
183
|
|
|
184
|
+
// CIL[BEGIN chunk_id="DataListPage_errorstate_1783929048" type="render_block" identity="errorState" parent="DataListPage_datalistpage_1783929048"]
|
|
185
|
+
// CIL[DOC-MACRO purpose="Render error state for schema loading failures"]
|
|
186
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle errorState"]
|
|
187
|
+
// CIL[DOC-CONTEXT module="errorState" layer="unknown" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\"]"]
|
|
188
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
189
|
+
// CIL[DOC-MICRO logic_summary="Implements errorState" notable_decisions="[]"]
|
|
190
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
191
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
192
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts."]
|
|
193
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
194
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
195
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
196
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
197
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
77
198
|
if (schemaError || !config) {
|
|
78
199
|
return (
|
|
79
200
|
<Card>
|
|
@@ -84,7 +205,22 @@ export function DataListPage() {
|
|
|
84
205
|
</Card>
|
|
85
206
|
)
|
|
86
207
|
}
|
|
208
|
+
// CIL[END chunk_id="DataListPage_errorstate_1783929048"]
|
|
87
209
|
|
|
210
|
+
// CIL[BEGIN chunk_id="DataListPage_mainrender_1783929048" type="render_block" identity="mainRender" parent="DataListPage_datalistpage_1783929048"]
|
|
211
|
+
// CIL[DOC-MACRO purpose="Render main list page with all components"]
|
|
212
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle mainRender"]
|
|
213
|
+
// CIL[DOC-CONTEXT module="mainRender" layer="unknown" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/table-primitives.tsx\"]"]
|
|
214
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
215
|
+
// CIL[DOC-MICRO logic_summary="Implements mainRender" notable_decisions="[]"]
|
|
216
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
217
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
218
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/table-primitives.tsx."]
|
|
219
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
220
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
221
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
222
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
223
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
88
224
|
return (
|
|
89
225
|
<div className="space-y-6">
|
|
90
226
|
<DataHeader
|
|
@@ -93,7 +229,28 @@ export function DataListPage() {
|
|
|
93
229
|
description={`Manage ${config.entity}`}
|
|
94
230
|
newButtonHref={`/spine-framework/admin/runtime/${entity}/new`}
|
|
95
231
|
/>
|
|
96
|
-
|
|
232
|
+
|
|
233
|
+
<PageInstructions
|
|
234
|
+
sections={[
|
|
235
|
+
{
|
|
236
|
+
title: 'What this page is for',
|
|
237
|
+
content: `This page is a schema-driven list for ${config.entity} records. It displays the records stored in the system, their field values, and current status based on the type definition.`,
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
title: 'How to find records',
|
|
241
|
+
content: `Use the filters above the table to narrow results. Click any column header to sort ascending or descending. The available columns and filters are defined by the type schema.`,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
title: 'How to create, view, and edit records',
|
|
245
|
+
content: `Click the New button in the top-right to create a new ${config.entity}. Click any row to open its detail view. From the detail view you can edit field values or delete the record. Some records may have restricted permissions based on your role.`,
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
title: 'Understanding the stats',
|
|
249
|
+
content: `The cards above the table show summary counts and key metrics for this record type. Use them to quickly assess volume and status before drilling into the list.`,
|
|
250
|
+
},
|
|
251
|
+
]}
|
|
252
|
+
/>
|
|
253
|
+
|
|
97
254
|
<DataStats
|
|
98
255
|
stats={config.list.stats}
|
|
99
256
|
data={data}
|
|
@@ -121,4 +278,6 @@ export function DataListPage() {
|
|
|
121
278
|
/>
|
|
122
279
|
</div>
|
|
123
280
|
)
|
|
281
|
+
// CIL[END chunk_id="DataListPage_mainrender_1783929048"]
|
|
124
282
|
}
|
|
283
|
+
// CIL[END chunk_id="DataListPage_datalistpage_1783929048"]
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
// CIL[BEGIN chunk_id="DataStats_module_header_1783929048" type="module_header" identity="imports_and_types" parent="none"]
|
|
4
|
+
// CIL[DOC-MACRO purpose="Import dependencies and define types for stats component"]
|
|
5
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage imports, interfaces, and color constants"]
|
|
6
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
7
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="types_and_constants" errors="none" side_effects="none"]
|
|
8
|
+
// CIL[DOC-MICRO logic_summary="Imports EntityStat type, UI components, and defines color mapping" notable_decisions="[]"]
|
|
9
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
10
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
11
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
12
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
13
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
14
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
15
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
16
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
17
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
1
18
|
import { EntityStat } from '../../types/types'
|
|
2
19
|
import { Card, CardContent } from '../ui/card'
|
|
3
20
|
import * as Icons from 'lucide-react'
|
|
@@ -16,8 +33,36 @@ const colorMap: Record<string, string> = {
|
|
|
16
33
|
purple: 'bg-purple-500/10 text-purple-500',
|
|
17
34
|
gray: 'bg-muted text-muted-foreground'
|
|
18
35
|
}
|
|
19
|
-
|
|
36
|
+
// CIL[END chunk_id="DataStats_module_header_1783929048"]
|
|
37
|
+
// CIL[BEGIN chunk_id="DataStats_datastats_1783929048" type="function" identity="DataStats" parent="none"]
|
|
38
|
+
// CIL[DOC-MACRO purpose="Calculate statistic value based on type and data"]
|
|
39
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Compute count or filter-based statistics"]
|
|
40
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
41
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="number" errors="none" side_effects="none"]
|
|
42
|
+
// CIL[DOC-MICRO logic_summary="Switch on stat type, handle count vs filter_count with nested object access" notable_decisions="[]"]
|
|
43
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
44
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
45
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/025_retype_threads_messages.sql, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
46
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
47
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
48
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
49
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
50
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
20
51
|
export function DataStats({ stats, data, loading }: DataStatsProps) {
|
|
52
|
+
// CIL[BEGIN chunk_id="DataStats_calculatestat_1783929048" type="function" identity="calculateStat" parent="DataStats_datastats_1783929048"]
|
|
53
|
+
// CIL[DOC-MACRO purpose="Calculate statistic value based on type and data"]
|
|
54
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle calculateStat"]
|
|
55
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
56
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="number" errors="none" side_effects="none"]
|
|
57
|
+
// CIL[DOC-MICRO logic_summary="Switch on stat type, handle count vs filter_count with nested object access" notable_decisions="[]"]
|
|
58
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
59
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
60
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 1. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/025_retype_threads_messages.sql, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
61
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
62
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
63
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
64
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
65
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
21
66
|
const calculateStat = (stat: EntityStat): number => {
|
|
22
67
|
if (!data) return 0
|
|
23
68
|
|
|
@@ -38,6 +83,7 @@ export function DataStats({ stats, data, loading }: DataStatsProps) {
|
|
|
38
83
|
return 0
|
|
39
84
|
}
|
|
40
85
|
}
|
|
86
|
+
// CIL[END chunk_id="DataStats_calculatestat_1783929048"]
|
|
41
87
|
|
|
42
88
|
return (
|
|
43
89
|
<div className="grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-4">
|
|
@@ -68,3 +114,4 @@ export function DataStats({ stats, data, loading }: DataStatsProps) {
|
|
|
68
114
|
</div>
|
|
69
115
|
)
|
|
70
116
|
}
|
|
117
|
+
// CIL[END chunk_id="DataStats_datastats_1783929048"]
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
// CIL[BEGIN chunk_id="DataTable_module_header_1783929048" type="module_header" identity="imports_and_types" parent="none"]
|
|
4
|
+
// CIL[DOC-MACRO purpose="Import dependencies and define table component types"]
|
|
5
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage imports, interfaces for data table"]
|
|
6
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
7
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="types_and_constants" errors="none" side_effects="none"]
|
|
8
|
+
// CIL[DOC-MICRO logic_summary="Imports React, routing, types, UI components for table" notable_decisions="[]"]
|
|
9
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
10
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
11
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
12
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
13
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
14
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
15
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
16
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
17
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
1
18
|
import React from 'react'
|
|
2
19
|
import { useNavigate } from 'react-router-dom'
|
|
3
20
|
import { EntityColumn } from '../../types/types'
|
|
@@ -28,7 +45,21 @@ interface DataTableProps {
|
|
|
28
45
|
emptyMessage: string
|
|
29
46
|
emptyIcon: string
|
|
30
47
|
}
|
|
31
|
-
|
|
48
|
+
// CIL[END chunk_id="DataTable_module_header_1783929048"]
|
|
49
|
+
// CIL[BEGIN chunk_id="DataTable_datatable_1783929048" type="function" identity="DataTable" parent="none"]
|
|
50
|
+
// CIL[DOC-MACRO purpose="Render main table with sortable headers and clickable rows"]
|
|
51
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display data table with full functionality"]
|
|
52
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\"]"]
|
|
53
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX table component" errors="none" side_effects="none"]
|
|
54
|
+
// CIL[DOC-MICRO logic_summary="Render table header with sort icons, data rows with click handlers" notable_decisions="[]"]
|
|
55
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
56
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
57
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts."]
|
|
58
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
59
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
60
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
61
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
62
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
32
63
|
export function DataTable({
|
|
33
64
|
columns,
|
|
34
65
|
data,
|
|
@@ -44,6 +75,20 @@ export function DataTable({
|
|
|
44
75
|
const navigate = useNavigate()
|
|
45
76
|
const EmptyIconComponent = (Icons as Record<string, React.ComponentType<{ className?: string }>>)[emptyIcon] || Icons.Box
|
|
46
77
|
|
|
78
|
+
// CIL[BEGIN chunk_id="DataTable_handlesort_1783929048" type="function" identity="handleSort" parent="DataTable_datatable_1783929048"]
|
|
79
|
+
// CIL[DOC-MACRO purpose="Handle column sorting with toggle direction"]
|
|
80
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle handleSort"]
|
|
81
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
82
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="calls onSort"]
|
|
83
|
+
// CIL[DOC-MICRO logic_summary="Toggle sort direction or set new field with asc default" notable_decisions="[]"]
|
|
84
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
85
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
86
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
87
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
88
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
89
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
90
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
91
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
47
92
|
const handleSort = (key: string) => {
|
|
48
93
|
if (sort.field === key) {
|
|
49
94
|
onSort({
|
|
@@ -54,7 +99,22 @@ export function DataTable({
|
|
|
54
99
|
onSort({ field: key, direction: 'asc' })
|
|
55
100
|
}
|
|
56
101
|
}
|
|
102
|
+
// CIL[END chunk_id="DataTable_handlesort_1783929048"]
|
|
57
103
|
|
|
104
|
+
// CIL[BEGIN chunk_id="DataTable_getsorticon_1783929048" type="function" identity="getSortIcon" parent="DataTable_datatable_1783929048"]
|
|
105
|
+
// CIL[DOC-MACRO purpose="Return appropriate sort icon for column state"]
|
|
106
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle getSortIcon"]
|
|
107
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
108
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX icon" errors="none" side_effects="none"]
|
|
109
|
+
// CIL[DOC-MICRO logic_summary="Return up/down arrow or neutral based on current sort" notable_decisions="[]"]
|
|
110
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
111
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
112
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
113
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
|
|
114
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
115
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
116
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
117
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
58
118
|
const getSortIcon = (key: string) => {
|
|
59
119
|
if (sort.field !== key) {
|
|
60
120
|
return <Icons.ArrowUpDown className="h-4 w-4 text-muted-foreground" />
|
|
@@ -63,7 +123,22 @@ export function DataTable({
|
|
|
63
123
|
? <Icons.ArrowUp className="h-4 w-4 text-primary" />
|
|
64
124
|
: <Icons.ArrowDown className="h-4 w-4 text-primary" />
|
|
65
125
|
}
|
|
126
|
+
// CIL[END chunk_id="DataTable_getsorticon_1783929048"]
|
|
66
127
|
|
|
128
|
+
// CIL[BEGIN chunk_id="DataTable_rendercell_1783929048" type="function" identity="renderCell" parent="DataTable_datatable_1783929048"]
|
|
129
|
+
// CIL[DOC-MACRO purpose="Format and render table cell based on column type"]
|
|
130
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle renderCell"]
|
|
131
|
+
// CIL[DOC-CONTEXT module="renderCell" layer="unknown" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
132
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
133
|
+
// CIL[DOC-MICRO logic_summary="Implements renderCell" notable_decisions="[]"]
|
|
134
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
135
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
136
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 2. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/025_retype_threads_messages.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, \."]
|
|
137
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
|
|
138
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
139
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
140
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
141
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
67
142
|
const renderCell = (column: EntityColumn, row: any) => {
|
|
68
143
|
const value = column.key.includes('.')
|
|
69
144
|
? column.key.split('.').reduce((obj, k) => obj?.[k], row)
|
|
@@ -88,11 +163,41 @@ export function DataTable({
|
|
|
88
163
|
|
|
89
164
|
return value?.toString() || '-'
|
|
90
165
|
}
|
|
166
|
+
// CIL[END chunk_id="DataTable_rendercell_1783929048"]
|
|
91
167
|
|
|
168
|
+
// CIL[BEGIN chunk_id="DataTable_handlerowclick_1783929048" type="function" identity="handleRowClick" parent="DataTable_datatable_1783929048"]
|
|
169
|
+
// CIL[DOC-MACRO purpose="Navigate to detail page when row is clicked"]
|
|
170
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle handleRowClick"]
|
|
171
|
+
// CIL[DOC-CONTEXT module="handleRowClick" layer="unknown" related_files="[]"]
|
|
172
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
173
|
+
// CIL[DOC-MICRO logic_summary="Implements handleRowClick" notable_decisions="[]"]
|
|
174
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
175
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
176
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
177
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
178
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
179
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
180
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
181
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
92
182
|
const handleRowClick = (row: any) => {
|
|
93
183
|
navigate(`/spine-framework/admin/runtime/${entity}/${row.id}`)
|
|
94
184
|
}
|
|
185
|
+
// CIL[END chunk_id="DataTable_handlerowclick_1783929048"]
|
|
95
186
|
|
|
187
|
+
// CIL[BEGIN chunk_id="DataTable_loadingstate_1783929048" type="render_block" identity="loadingState" parent="DataTable_datatable_1783929048"]
|
|
188
|
+
// CIL[DOC-MACRO purpose="Render loading skeleton state for table"]
|
|
189
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle loadingState"]
|
|
190
|
+
// CIL[DOC-CONTEXT module="loadingState" layer="unknown" related_files="[]"]
|
|
191
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
192
|
+
// CIL[DOC-MICRO logic_summary="Implements loadingState" notable_decisions="[]"]
|
|
193
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
194
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
195
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
196
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
197
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
198
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
199
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
200
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
96
201
|
if (loading) {
|
|
97
202
|
return (
|
|
98
203
|
<Card>
|
|
@@ -104,7 +209,22 @@ export function DataTable({
|
|
|
104
209
|
</Card>
|
|
105
210
|
)
|
|
106
211
|
}
|
|
212
|
+
// CIL[END chunk_id="DataTable_loadingstate_1783929048"]
|
|
107
213
|
|
|
214
|
+
// CIL[BEGIN chunk_id="DataTable_errorstate_1783929048" type="render_block" identity="errorState" parent="DataTable_datatable_1783929048"]
|
|
215
|
+
// CIL[DOC-MACRO purpose="Render error state with retry option"]
|
|
216
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle errorState"]
|
|
217
|
+
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[]"]
|
|
218
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX error display" errors="none" side_effects="calls onRetry"]
|
|
219
|
+
// CIL[DOC-MICRO logic_summary="Show error message centered in card with optional retry" notable_decisions="[]"]
|
|
220
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
221
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
222
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
223
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
224
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
225
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
226
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
227
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
108
228
|
if (error) {
|
|
109
229
|
return (
|
|
110
230
|
<Card>
|
|
@@ -119,7 +239,22 @@ export function DataTable({
|
|
|
119
239
|
</Card>
|
|
120
240
|
)
|
|
121
241
|
}
|
|
242
|
+
// CIL[END chunk_id="DataTable_errorstate_1783929048"]
|
|
122
243
|
|
|
244
|
+
// CIL[BEGIN chunk_id="DataTable_emptystate_1783929048" type="render_block" identity="emptyState" parent="DataTable_datatable_1783929048"]
|
|
245
|
+
// CIL[DOC-MACRO purpose="Render empty state with icon and message"]
|
|
246
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle emptyState"]
|
|
247
|
+
// CIL[DOC-CONTEXT module="emptyState" layer="unknown" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
|
|
248
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
249
|
+
// CIL[DOC-MICRO logic_summary="Implements emptyState" notable_decisions="[]"]
|
|
250
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
251
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
252
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/migrations/025_retype_threads_messages.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
253
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
254
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
255
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
256
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
257
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
123
258
|
if (!data || data.length === 0) {
|
|
124
259
|
return (
|
|
125
260
|
<Card>
|
|
@@ -133,7 +268,22 @@ export function DataTable({
|
|
|
133
268
|
</Card>
|
|
134
269
|
)
|
|
135
270
|
}
|
|
271
|
+
// CIL[END chunk_id="DataTable_emptystate_1783929048"]
|
|
136
272
|
|
|
273
|
+
// CIL[BEGIN chunk_id="DataTable_maintable_1783929048" type="render_block" identity="mainTable" parent="DataTable_datatable_1783929048"]
|
|
274
|
+
// CIL[DOC-MACRO purpose="Render main table with sortable headers and clickable rows"]
|
|
275
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle mainTable"]
|
|
276
|
+
// CIL[DOC-CONTEXT module="mainTable" layer="unknown" related_files="[]"]
|
|
277
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
278
|
+
// CIL[DOC-MICRO logic_summary="Implements mainTable" notable_decisions="[]"]
|
|
279
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
280
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
281
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
282
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
283
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
284
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
285
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
286
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
137
287
|
return (
|
|
138
288
|
<Card>
|
|
139
289
|
<Table>
|
|
@@ -171,4 +321,6 @@ export function DataTable({
|
|
|
171
321
|
</Table>
|
|
172
322
|
</Card>
|
|
173
323
|
)
|
|
324
|
+
// CIL[END chunk_id="DataTable_maintable_1783929048"]
|
|
174
325
|
}
|
|
326
|
+
// CIL[END chunk_id="DataTable_datatable_1783929048"]
|