spine-framework 0.3.145 → 0.4.1
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/.env.example +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5067 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Provides reusable form, field, section, row and column UI primitives"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Aggregate form-building components and their prop types for the shared UI library"]
|
|
4
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports React, local types, FieldRenderer, Button and utility classes; exports five related components" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="UI component consumers and form authors"]
|
|
10
|
+
|
|
1
11
|
|
|
2
12
|
|
|
3
13
|
|
|
@@ -21,41 +31,27 @@
|
|
|
21
31
|
|
|
22
32
|
|
|
23
33
|
|
|
24
|
-
// CIL[BEGIN chunk_id="Form_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
|
|
25
|
-
// CIL[DOC-MACRO purpose="Import React and form dependencies"]
|
|
26
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for form components"]
|
|
27
|
-
// CIL[DOC-CONTEXT module="Form" 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\",\"\\\"]"]
|
|
28
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="React, FieldDefinition, FieldRenderer, Button, cn" errors="none" side_effects="none"]
|
|
29
|
-
// CIL[DOC-MICRO logic_summary="Imports React, types, field renderer, button component, and utility function" notable_decisions="[]"]
|
|
30
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
31
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
32
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
33
|
-
// 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, \."]
|
|
34
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
35
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
36
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
37
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
38
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
39
34
|
import React from 'react'
|
|
40
35
|
import { FieldDefinition } from '../../types/types'
|
|
41
36
|
import { FieldRenderer } from '../shared/FieldRenderer'
|
|
42
37
|
import { Button } from './button'
|
|
43
38
|
import { cn } from '../../lib/utils'
|
|
44
|
-
// CIL[
|
|
45
|
-
// CIL[
|
|
46
|
-
// CIL[DOC-
|
|
47
|
-
// CIL[DOC-
|
|
48
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
49
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FormProps interface" errors="none" side_effects="none"]
|
|
50
|
-
// CIL[DOC-MICRO logic_summary="Comprehensive props for fields, data, validation, and form actions" notable_decisions="[]"]
|
|
51
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
52
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
53
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
54
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
55
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
56
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
39
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provides reusable form, field, section, row and column UI primitives'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
40
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
41
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
42
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
57
43
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
58
44
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
45
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:module_header:module_header"]
|
|
46
|
+
|
|
47
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormProps:interface" type="interface" identity="FormProps" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
48
|
+
// CIL[DOC-MACRO purpose="Defines the prop contract for the Form component"]
|
|
49
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare configurable form state, handlers and action labels"]
|
|
50
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
51
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
|
|
52
|
+
// CIL[DOC-MICRO logic_summary="Fields, data, errors, touched, onChange, onBlur, onSubmit, isSubmitting, submit/cancel controls, disabled and className" notable_decisions="[]"]
|
|
53
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
54
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
59
55
|
interface FormProps {
|
|
60
56
|
fields: FieldDefinition[]
|
|
61
57
|
data: Record<string, any>
|
|
@@ -72,21 +68,22 @@ interface FormProps {
|
|
|
72
68
|
disabled?: boolean
|
|
73
69
|
className?: string
|
|
74
70
|
}
|
|
75
|
-
// CIL[
|
|
76
|
-
// CIL[
|
|
77
|
-
// CIL[DOC-
|
|
78
|
-
// CIL[DOC-
|
|
79
|
-
// CIL[DOC-CONTEXT module="Form" 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\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
|
|
80
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Form element" errors="none" side_effects="Calls onSubmit, onChange, onBlur callbacks"]
|
|
81
|
-
// CIL[DOC-MICRO logic_summary="Maps fields to FieldRenderer, shows errors only for touched fields" notable_decisions="[]"]
|
|
82
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
83
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
84
|
-
// 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, .framework/src/components/ui/table-primitives.tsx, \."]
|
|
85
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
86
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
87
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
71
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines the prop contract for the Form component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
72
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
73
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
74
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
88
75
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
89
76
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
77
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormProps:interface"]
|
|
78
|
+
|
|
79
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:Form:component" type="component" identity="Form" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
80
|
+
// CIL[DOC-MACRO purpose="Renders a dynamic form from FieldDefinition objects with validation and action buttons"]
|
|
81
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Map fields to FieldRenderer, manage submit and cancel actions, and apply layout classes"]
|
|
82
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
83
|
+
// CIL[DOC-CONTRACT inputs="fields, data, errors, touched, onChange, onBlur, onSubmit, isSubmitting, submitText, cancelText, onCancel, showCancel, disabled, className" outputs="JSX form element" errors="None" side_effects="Calls onChange, onBlur, onSubmit and onCancel callbacks"]
|
|
84
|
+
// CIL[DOC-MICRO logic_summary="Filters unnamed fields, delegates per-field rendering to FieldRenderer, and renders submit/cancel buttons in a flex action row" notable_decisions="[]"]
|
|
85
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
86
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
90
87
|
export function Form({
|
|
91
88
|
fields,
|
|
92
89
|
data,
|
|
@@ -157,21 +154,22 @@ export function Form({
|
|
|
157
154
|
</form>
|
|
158
155
|
)
|
|
159
156
|
}
|
|
160
|
-
// CIL[
|
|
161
|
-
// CIL[
|
|
162
|
-
// CIL[DOC-
|
|
163
|
-
// CIL[DOC-
|
|
164
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
165
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FormFieldProps interface" errors="none" side_effects="none"]
|
|
166
|
-
// CIL[DOC-MICRO logic_summary="Props for field definition, value, error state, and callbacks" notable_decisions="[]"]
|
|
167
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
168
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
169
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
170
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
171
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
172
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
157
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Renders a dynamic form from FieldDefinition objects with validation and action buttons'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
158
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
159
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
160
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
173
161
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
174
162
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
163
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:Form:component"]
|
|
164
|
+
|
|
165
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormFieldProps:interface" type="interface" identity="FormFieldProps" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
166
|
+
// CIL[DOC-MACRO purpose="Defines the per-field prop contract for the FormField wrapper"]
|
|
167
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Describe the inputs consumed by a single FormField instance"]
|
|
168
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
169
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
|
|
170
|
+
// CIL[DOC-MICRO logic_summary="Single field definition, value, optional error, touched flag, onChange, onBlur and readonly flag" notable_decisions="[]"]
|
|
171
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
172
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
175
173
|
interface FormFieldProps {
|
|
176
174
|
field: FieldDefinition
|
|
177
175
|
value: any
|
|
@@ -181,21 +179,22 @@ interface FormFieldProps {
|
|
|
181
179
|
onBlur?: () => void
|
|
182
180
|
readonly?: boolean
|
|
183
181
|
}
|
|
184
|
-
// CIL[
|
|
185
|
-
// CIL[
|
|
186
|
-
// CIL[DOC-
|
|
187
|
-
// CIL[DOC-
|
|
188
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/db.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
189
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FieldRenderer component" errors="none" side_effects="Delegates to onChange/onBlur"]
|
|
190
|
-
// CIL[DOC-MICRO logic_summary="Passes error to FieldRenderer only when field has been touched" notable_decisions="[]"]
|
|
191
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
192
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
193
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/db.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
194
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
195
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
196
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
182
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines the per-field prop contract for the FormField wrapper'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
183
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
184
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
185
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
197
186
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
198
187
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
188
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormFieldProps:interface"]
|
|
189
|
+
|
|
190
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormField:component" type="component" identity="FormField" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
191
|
+
// CIL[DOC-MACRO purpose="Wraps FieldRenderer for a single form field value"]
|
|
192
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Forward field props to FieldRenderer with touched-gated error display"]
|
|
193
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
194
|
+
// CIL[DOC-CONTRACT inputs="field, value, error, touched, onChange, onBlur, readonly" outputs="JSX field rendering" errors="None" side_effects="None"]
|
|
195
|
+
// CIL[DOC-MICRO logic_summary="Renders a FieldRenderer and suppresses the error text until the field is touched" notable_decisions="[]"]
|
|
196
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
197
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
199
198
|
export function FormField({
|
|
200
199
|
field,
|
|
201
200
|
value,
|
|
@@ -216,42 +215,44 @@ export function FormField({
|
|
|
216
215
|
/>
|
|
217
216
|
)
|
|
218
217
|
}
|
|
219
|
-
// CIL[
|
|
220
|
-
// CIL[
|
|
221
|
-
// CIL[DOC-
|
|
222
|
-
// CIL[DOC-
|
|
223
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[]"]
|
|
224
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FormSectionProps interface" errors="none" side_effects="none"]
|
|
225
|
-
// CIL[DOC-MICRO logic_summary="Props for optional title, description, children, and styling" notable_decisions="[]"]
|
|
226
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
227
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
228
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
229
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
230
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
231
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
218
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Wraps FieldRenderer for a single form field value'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
219
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
220
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
221
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
232
222
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
233
223
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
224
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormField:component"]
|
|
225
|
+
|
|
226
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormSectionProps:interface" type="interface" identity="FormSectionProps" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
227
|
+
// CIL[DOC-MACRO purpose="Defines props for a titled form section wrapper"]
|
|
228
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare title, description, children and optional className"]
|
|
229
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
230
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
|
|
231
|
+
// CIL[DOC-MICRO logic_summary="Optional section title, optional description, child content and layout className" notable_decisions="[]"]
|
|
232
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
233
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
234
234
|
interface FormSectionProps {
|
|
235
235
|
title?: string
|
|
236
236
|
description?: string
|
|
237
237
|
children: React.ReactNode
|
|
238
238
|
className?: string
|
|
239
239
|
}
|
|
240
|
-
// CIL[
|
|
241
|
-
// CIL[
|
|
242
|
-
// CIL[DOC-
|
|
243
|
-
// CIL[DOC-
|
|
244
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[]"]
|
|
245
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Styled div container" errors="none" side_effects="none"]
|
|
246
|
-
// CIL[DOC-MICRO logic_summary="Conditionally renders header section when title or description provided" notable_decisions="[]"]
|
|
247
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
248
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
249
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
250
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
251
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
252
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
240
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines props for a titled form section wrapper'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
241
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
242
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
243
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
253
244
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
254
245
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
246
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormSectionProps:interface"]
|
|
247
|
+
|
|
248
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormSection:component" type="component" identity="FormSection" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
249
|
+
// CIL[DOC-MACRO purpose="Renders a container with an optional title and description"]
|
|
250
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Group child fields under a heading with consistent vertical spacing"]
|
|
251
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
252
|
+
// CIL[DOC-CONTRACT inputs="title, description, children, className" outputs="JSX section div" errors="None" side_effects="None"]
|
|
253
|
+
// CIL[DOC-MICRO logic_summary="Conditionally renders a heading and paragraph, then children inside a spaced div" notable_decisions="[]"]
|
|
254
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
255
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
255
256
|
export function FormSection({ title, description, children, className }: FormSectionProps) {
|
|
256
257
|
return (
|
|
257
258
|
<div className={cn('space-y-4', className)}>
|
|
@@ -269,40 +270,42 @@ export function FormSection({ title, description, children, className }: FormSec
|
|
|
269
270
|
</div>
|
|
270
271
|
)
|
|
271
272
|
}
|
|
272
|
-
// CIL[
|
|
273
|
-
// CIL[
|
|
274
|
-
// CIL[DOC-
|
|
275
|
-
// CIL[DOC-
|
|
276
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[]"]
|
|
277
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FormRowProps interface" errors="none" side_effects="none"]
|
|
278
|
-
// CIL[DOC-MICRO logic_summary="Props for children content and optional styling classes" 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: frontend-component. 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."]
|
|
273
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Renders a container with an optional title and description'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
274
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
275
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
276
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
285
277
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
286
278
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
279
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormSection:component"]
|
|
280
|
+
|
|
281
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormRowProps:interface" type="interface" identity="FormRowProps" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
282
|
+
// CIL[DOC-MACRO purpose="Defines props for a responsive form row layout"]
|
|
283
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare children and optional className for a grid row"]
|
|
284
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
285
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
|
|
286
|
+
// CIL[DOC-MICRO logic_summary="Children to render and an optional className override" notable_decisions="[]"]
|
|
287
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
288
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
287
289
|
interface FormRowProps {
|
|
288
290
|
children: React.ReactNode
|
|
289
291
|
className?: string
|
|
290
292
|
}
|
|
291
|
-
// CIL[
|
|
292
|
-
// CIL[
|
|
293
|
-
// CIL[DOC-
|
|
294
|
-
// CIL[DOC-
|
|
295
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[]"]
|
|
296
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Grid div container" errors="none" side_effects="none"]
|
|
297
|
-
// CIL[DOC-MICRO logic_summary="Uses Tailwind grid classes for responsive two-column layout" notable_decisions="[]"]
|
|
298
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
299
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
300
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
301
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
302
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
303
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
293
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines props for a responsive form row layout'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
294
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
295
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
296
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
304
297
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
305
298
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
299
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormRowProps:interface"]
|
|
300
|
+
|
|
301
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormRow:component" type="component" identity="FormRow" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
302
|
+
// CIL[DOC-MACRO purpose="Provides a responsive grid row for laying out form columns"]
|
|
303
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render children in a one or two column grid with a gap"]
|
|
304
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
305
|
+
// CIL[DOC-CONTRACT inputs="children, className" outputs="JSX grid div" errors="None" side_effects="None"]
|
|
306
|
+
// CIL[DOC-MICRO logic_summary="Uses a single column on small screens and two columns on the sm breakpoint" notable_decisions="[]"]
|
|
307
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
308
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
306
309
|
export function FormRow({ children, className }: FormRowProps) {
|
|
307
310
|
return (
|
|
308
311
|
<div className={cn('grid grid-cols-1 sm:grid-cols-2 gap-4', className)}>
|
|
@@ -310,41 +313,43 @@ export function FormRow({ children, className }: FormRowProps) {
|
|
|
310
313
|
</div>
|
|
311
314
|
)
|
|
312
315
|
}
|
|
313
|
-
// CIL[
|
|
314
|
-
// CIL[
|
|
315
|
-
// CIL[DOC-
|
|
316
|
-
// CIL[DOC-
|
|
317
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[]"]
|
|
318
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FormColumnProps interface" errors="none" side_effects="none"]
|
|
319
|
-
// CIL[DOC-MICRO logic_summary="Props for children, column span (1 or 2), and styling" notable_decisions="[]"]
|
|
320
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
321
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
322
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
323
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
324
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
325
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
316
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provides a responsive grid row for laying out form columns'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
317
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
318
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
319
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
326
320
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
327
321
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
322
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormRow:component"]
|
|
323
|
+
|
|
324
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormColumnProps:interface" type="interface" identity="FormColumnProps" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
325
|
+
// CIL[DOC-MACRO purpose="Defines props for a grid column with span control"]
|
|
326
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare children, span and optional className for a column"]
|
|
327
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
328
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
|
|
329
|
+
// CIL[DOC-MICRO logic_summary="Children, optional span value of 1 or 2, and layout className" notable_decisions="[]"]
|
|
330
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
331
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
328
332
|
interface FormColumnProps {
|
|
329
333
|
children: React.ReactNode
|
|
330
334
|
span?: 1 | 2
|
|
331
335
|
className?: string
|
|
332
336
|
}
|
|
333
|
-
// CIL[
|
|
334
|
-
// CIL[
|
|
335
|
-
// CIL[DOC-
|
|
336
|
-
// CIL[DOC-
|
|
337
|
-
// CIL[DOC-CONTEXT module="Form" layer="frontend-component" related_files="[]"]
|
|
338
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Column div with span classes" errors="none" side_effects="none"]
|
|
339
|
-
// CIL[DOC-MICRO logic_summary="Maps span values to Tailwind col-span classes for grid layout" notable_decisions="[]"]
|
|
340
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
341
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
342
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
343
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
344
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
345
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
337
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines props for a grid column with span control'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
338
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
339
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
340
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
346
341
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
347
342
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
343
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormColumnProps:interface"]
|
|
344
|
+
|
|
345
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/Form.tsx:FormColumn:component" type="component" identity="FormColumn" parent="~/.framework/src/components/ui/Form.tsx"]
|
|
346
|
+
// CIL[DOC-MACRO purpose="Renders a grid column with a configurable col-span"]
|
|
347
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Apply the requested tailwind column span class to children"]
|
|
348
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/Form.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
349
|
+
// CIL[DOC-CONTRACT inputs="children, span, className" outputs="JSX column div" errors="None" side_effects="None"]
|
|
350
|
+
// CIL[DOC-MICRO logic_summary="Maps span to a tailwind col-span class via a lookup and merges an optional className" notable_decisions="[]"]
|
|
351
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
352
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
348
353
|
export function FormColumn({ children, span = 1, className }: FormColumnProps) {
|
|
349
354
|
const spanClasses = {
|
|
350
355
|
1: 'col-span-1',
|
|
@@ -357,4 +362,10 @@ export function FormColumn({ children, span = 1, className }: FormColumnProps) {
|
|
|
357
362
|
</div>
|
|
358
363
|
)
|
|
359
364
|
}
|
|
360
|
-
// CIL[
|
|
365
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Renders a grid column with a configurable col-span'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/ui/button.tsx"]
|
|
366
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
367
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
368
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
369
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
370
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
371
|
+
// CIL[END stable_id="~/.framework/src/components/ui/Form.tsx:FormColumn:component"]
|