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.
Files changed (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5067 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,3 +1,13 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
+ // CIL[DOC-AUDIENCE audience="frontend-developers"]
3
+ // CIL[DOC-MACRO purpose="Collects sidebar dependencies, shared configuration, context types, and exports the public sidebar API"]
4
+ // CIL[DOC-RESPONSIBILITY responsibility="Import shared dependencies and declare module-level sidebar constants and types"]
5
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
6
+ // CIL[DOC-CONTRACT inputs="none" outputs="none (side effects at module level)" errors="none" side_effects="creates React context and defines module constants"]
7
+ // CIL[DOC-MICRO logic_summary="Imports React, cva, radix-ui Slot, project hooks, local utilities, and sibling UI components" notable_decisions="[]"]
8
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
9
+ // CIL[DOC-STABILITY stability="stable"]
10
+
1
11
 
2
12
 
3
13
 
@@ -28,21 +38,6 @@
28
38
 
29
39
 
30
40
 
31
- // CIL[BEGIN chunk_id="sidebar_module_header_1783758409" type="module_header" identity="imports" parent="none"]
32
- // CIL[DOC-MACRO purpose="Import dependencies for sidebar component library"]
33
- // CIL[DOC-RESPONSIBILITY responsibility="Import external React UI primitives and utilities"]
34
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\"\\\"]"]
35
- // CIL[DOC-CONTRACT inputs="none" outputs="React, CVA, hooks, UI components, icons" errors="none" side_effects="Module imports"]
36
- // CIL[DOC-MICRO logic_summary="Imports React, CVA, hooks, UI components and icons for sidebar functionality" notable_decisions="[]"]
37
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
38
- // CIL[DOC-STABILITY stability="stable"]
39
- // CIL[DOC-AUDIENCE audience="developer"]
40
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, \."]
41
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
42
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
43
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
44
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
45
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
46
41
  import * as React from "react"
47
42
  import { cva, type VariantProps } from "class-variance-authority"
48
43
  import { Slot } from "radix-ui"
@@ -66,42 +61,28 @@ import {
66
61
  TooltipTrigger,
67
62
  } from "@/components/ui/tooltip"
68
63
  import { PanelLeftIcon } from "lucide-react"
69
- // CIL[END chunk_id="sidebar_module_header_1783758409"]
70
- // CIL[BEGIN chunk_id="sidebar_constants_1783758409" type="constants" identity="constants" parent="none"]
71
- // CIL[DOC-MACRO purpose="Define sidebar configuration constants"]
72
- // CIL[DOC-RESPONSIBILITY responsibility="Provide sidebar state and styling configuration values"]
73
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
74
- // CIL[DOC-CONTRACT inputs="none" outputs="Constants" errors="none" side_effects="Constants definition"]
75
- // CIL[DOC-MICRO logic_summary="Defines cookie name, max age, width values and keyboard shortcut for sidebar" notable_decisions="[]"]
76
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
77
- // CIL[DOC-STABILITY stability="stable"]
78
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
79
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
80
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
81
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
64
+ // CIL[DOC-VECTOR type="context" content="purpose='Collects sidebar dependencies, shared configuration, context types, and exports the public sidebar API'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
65
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
66
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
67
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
82
68
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
83
69
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
70
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:module_header:module_header"]
71
+
72
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:sidebar_config:config" type="config" identity="sidebar_config" parent="none"]
73
+ // CIL[DOC-MACRO purpose="Defines sidebar layout constants, cookie name, keyboard shortcut, and the React context type"]
74
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide reusable layout values and the typed sidebar context"]
75
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
76
+ // CIL[DOC-CONTRACT inputs="none" outputs="constants, types, and context" errors="none" side_effects="none"]
77
+ // CIL[DOC-MICRO logic_summary="Declares cookie and width constants and a typed context for provider state" notable_decisions="[]"]
78
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
79
+ // CIL[DOC-STABILITY stability="stable"]
84
80
  const SIDEBAR_COOKIE_NAME = "sidebar_state"
85
81
  const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
86
82
  const SIDEBAR_WIDTH = "16rem"
87
83
  const SIDEBAR_WIDTH_MOBILE = "18rem"
88
84
  const SIDEBAR_WIDTH_ICON = "3rem"
89
85
  const SIDEBAR_KEYBOARD_SHORTCUT = "b"
90
- // CIL[END chunk_id="sidebar_constants_1783758409"]
91
- // CIL[BEGIN chunk_id="sidebar_types_1783758409" type="types" identity="SidebarContextProps" parent="none"]
92
- // CIL[DOC-MACRO purpose="Define sidebar context interface"]
93
- // CIL[DOC-RESPONSIBILITY responsibility="Provide TypeScript interface for sidebar context"]
94
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
95
- // CIL[DOC-CONTRACT inputs="none" outputs="TypeScript interface" errors="none" side_effects="Type definition"]
96
- // CIL[DOC-MICRO logic_summary="Defines interface with state, open/close functions, mobile detection and toggle" notable_decisions="[]"]
97
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
98
- // CIL[DOC-STABILITY stability="stable"]
99
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
100
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
101
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
102
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
103
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
104
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
105
86
  type SidebarContextProps = {
106
87
  state: "expanded" | "collapsed"
107
88
  open: boolean
@@ -111,37 +92,23 @@ type SidebarContextProps = {
111
92
  isMobile: boolean
112
93
  toggleSidebar: () => void
113
94
  }
114
- // CIL[END chunk_id="sidebar_types_1783758409"]
115
- // CIL[BEGIN chunk_id="sidebar_context_1783758409" type="context" identity="SidebarContext" parent="none"]
116
- // CIL[DOC-MACRO purpose="Create React context for sidebar state"]
117
- // CIL[DOC-RESPONSIBILITY responsibility="Provide context for sharing sidebar state across components"]
118
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
119
- // CIL[DOC-CONTRACT inputs="none" outputs="React Context" errors="none" side_effects="React context creation"]
120
- // CIL[DOC-MICRO logic_summary="Creates React context with SidebarContextProps type and null default" notable_decisions="[]"]
121
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
122
- // CIL[DOC-STABILITY stability="stable"]
123
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
124
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
125
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
126
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
127
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
128
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
129
95
  const SidebarContext = React.createContext<SidebarContextProps | null>(null)
130
- // CIL[END chunk_id="sidebar_context_1783758409"]
131
- // CIL[BEGIN chunk_id="sidebar_usesidebar_1783758409" type="function" identity="useSidebar" parent="none"]
132
- // CIL[DOC-MACRO purpose="Hook to access sidebar context"]
133
- // CIL[DOC-RESPONSIBILITY responsibility="Provide safe access to sidebar context with error handling"]
134
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
135
- // CIL[DOC-CONTRACT inputs="none" outputs="SidebarContextProps" errors="Throws if context missing" side_effects="React context access"]
136
- // CIL[DOC-MICRO logic_summary="Accesses React context with error throwing for missing provider" notable_decisions="[]"]
137
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
138
- // CIL[DOC-STABILITY stability="stable"]
139
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
140
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
141
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
142
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
96
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines sidebar layout constants, cookie name, keyboard shortcut, and the React context type'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
97
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
98
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
99
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
143
100
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
144
101
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
102
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:sidebar_config:config"]
103
+
104
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:useSidebar:hook" type="hook" identity="useSidebar" parent="none"]
105
+ // CIL[DOC-MACRO purpose="Provides the sidebar state hook used by consumers within a SidebarProvider"]
106
+ // CIL[DOC-RESPONSIBILITY responsibility="Return the current sidebar context or throw if the provider is missing"]
107
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
108
+ // CIL[DOC-CONTRACT inputs="none" outputs="SidebarContextProps object" errors="throws if called outside a SidebarProvider" side_effects="none"]
109
+ // CIL[DOC-MICRO logic_summary="Reads context and throws when null" notable_decisions="[]"]
110
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
111
+ // CIL[DOC-STABILITY stability="stable"]
145
112
  function useSidebar() {
146
113
  const context = React.useContext(SidebarContext)
147
114
  if (!context) {
@@ -150,21 +117,22 @@ function useSidebar() {
150
117
 
151
118
  return context
152
119
  }
153
- // CIL[END chunk_id="sidebar_usesidebar_1783758409"]
154
- // CIL[BEGIN chunk_id="sidebar_sidebarprovider_1783758409" type="function" identity="SidebarProvider" parent="none"]
155
- // CIL[DOC-MACRO purpose="Provider component for sidebar state management"]
156
- // CIL[DOC-RESPONSIBILITY responsibility="Manage sidebar state, persistence, keyboard shortcuts and mobile detection"]
157
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
158
- // CIL[DOC-CONTRACT inputs="none" outputs="Context provider" errors="none" side_effects="State management, cookie storage, keyboard events"]
159
- // CIL[DOC-MICRO logic_summary="Manages sidebar state with cookie persistence, keyboard shortcuts, mobile detection and context provision" notable_decisions="[]"]
160
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
161
- // CIL[DOC-STABILITY stability="stable"]
162
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
163
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
164
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
165
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
120
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the sidebar state hook used by consumers within a SidebarProvider'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
121
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
122
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
123
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
166
124
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
167
125
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
126
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:useSidebar:hook"]
127
+
128
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarProvider:component" type="component" identity="SidebarProvider" parent="none"]
129
+ // CIL[DOC-MACRO purpose="Manages sidebar open state, mobile sheet state, cookie persistence, and keyboard toggle"]
130
+ // CIL[DOC-RESPONSIBILITY responsibility="Own sidebar state, cookie persistence, keyboard shortcut, and context value"]
131
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
132
+ // CIL[DOC-CONTRACT inputs="defaultOpen, open, onOpenChange, className, style, children, props" outputs="JSX element" errors="none" side_effects="sets document.cookie and attaches a window keydown listener"]
133
+ // CIL[DOC-MICRO logic_summary="Initializes open state, syncs props, persists state to a cookie, and toggles via keyboard" notable_decisions="[]"]
134
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
135
+ // CIL[DOC-STABILITY stability="stable"]
168
136
  function SidebarProvider({
169
137
  defaultOpen = true,
170
138
  open: openProp,
@@ -253,21 +221,22 @@ function SidebarProvider({
253
221
  </SidebarContext.Provider>
254
222
  )
255
223
  }
256
- // CIL[END chunk_id="sidebar_sidebarprovider_1783758409"]
257
- // CIL[BEGIN chunk_id="sidebar_sidebar_1783758409" type="function" identity="Sidebar" parent="none"]
258
- // CIL[DOC-MACRO purpose="Main sidebar component with responsive behavior"]
259
- // CIL[DOC-RESPONSIBILITY responsibility="Render sidebar panel with mobile/desktop variants and positioning"]
260
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
261
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled sidebar panel" errors="none" side_effects="DOM rendering"]
262
- // CIL[DOC-MICRO logic_summary="Creates responsive sidebar with mobile sheet, desktop panel, gap handling and animations" notable_decisions="[]"]
263
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
264
- // CIL[DOC-STABILITY stability="stable"]
265
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
266
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
267
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
268
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
224
+ // CIL[DOC-VECTOR type="context" content="purpose='Manages sidebar open state, mobile sheet state, cookie persistence, and keyboard toggle'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
225
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
226
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
227
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
269
228
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
270
229
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
230
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarProvider:component"]
231
+
232
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:Sidebar:component" type="component" identity="Sidebar" parent="none"]
233
+ // CIL[DOC-MACRO purpose="Renders the main sidebar container with responsive offcanvas, floating, or inset variants"]
234
+ // CIL[DOC-RESPONSIBILITY responsibility="Render the correct sidebar layout for desktop or mobile contexts"]
235
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
236
+ // CIL[DOC-CONTRACT inputs="side, variant, collapsible, className, children, dir, props" outputs="JSX element" errors="none" side_effects="none"]
237
+ // CIL[DOC-MICRO logic_summary="Chooses between a static container, a mobile Sheet, or a desktop peer layout based on props and screen" notable_decisions="[]"]
238
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
239
+ // CIL[DOC-STABILITY stability="stable"]
271
240
  function Sidebar({
272
241
  side = "left",
273
242
  variant = "sidebar",
@@ -323,7 +292,6 @@ function Sidebar({
323
292
  </Sheet>
324
293
  )
325
294
  }
326
-
327
295
  return (
328
296
  <div
329
297
  className="group peer hidden text-sidebar-foreground md:block"
@@ -368,21 +336,22 @@ function Sidebar({
368
336
  </div>
369
337
  )
370
338
  }
371
- // CIL[END chunk_id="sidebar_sidebar_1783758409"]
372
- // CIL[BEGIN chunk_id="sidebar_sidebartrigger_1783758409" type="function" identity="SidebarTrigger" parent="none"]
373
- // CIL[DOC-MACRO purpose="Button to toggle sidebar open/closed state"]
374
- // CIL[DOC-RESPONSIBILITY responsibility="Handle sidebar toggle with button styling and icon"]
375
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
376
- // CIL[DOC-CONTRACT inputs="none" outputs="Toggle button" errors="none" side_effects="State change, DOM events"]
377
- // CIL[DOC-MICRO logic_summary="Creates button with PanelLeftIcon that toggles sidebar state on click" notable_decisions="[]"]
378
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
379
- // CIL[DOC-STABILITY stability="stable"]
380
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
381
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
382
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
383
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
339
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the main sidebar container with responsive offcanvas, floating, or inset variants'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
340
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
341
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
342
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
384
343
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
385
344
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
345
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:Sidebar:component"]
346
+
347
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarTrigger:component" type="component" identity="SidebarTrigger" parent="none"]
348
+ // CIL[DOC-MACRO purpose="Renders a button that toggles the sidebar open/closed state"]
349
+ // CIL[DOC-RESPONSIBILITY responsibility="Toggle sidebar state when activated by user interaction"]
350
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
351
+ // CIL[DOC-CONTRACT inputs="className, onClick, props" outputs="JSX element" errors="none" side_effects="calls toggleSidebar on click"]
352
+ // CIL[DOC-MICRO logic_summary="Wraps Button and calls toggleSidebar when clicked" notable_decisions="[]"]
353
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
354
+ // CIL[DOC-STABILITY stability="stable"]
386
355
  function SidebarTrigger({
387
356
  className,
388
357
  onClick,
@@ -408,21 +377,22 @@ function SidebarTrigger({
408
377
  </Button>
409
378
  )
410
379
  }
411
- // CIL[END chunk_id="sidebar_sidebartrigger_1783758409"]
412
- // CIL[BEGIN chunk_id="sidebar_sidebarrail_1783758409" type="function" identity="SidebarRail" parent="none"]
413
- // CIL[DOC-MACRO purpose="Rail handle for manual sidebar resizing"]
414
- // CIL[DOC-RESPONSIBILITY responsibility="Provide draggable rail with resize cursor and visual feedback"]
415
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
416
- // CIL[DOC-CONTRACT inputs="none" outputs="Rail button" errors="none" side_effects="DOM events"]
417
- // CIL[DOC-MICRO logic_summary="Creates draggable rail with resize cursor, hover states and visual divider" notable_decisions="[]"]
418
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
419
- // CIL[DOC-STABILITY stability="stable"]
420
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
421
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
422
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
423
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
380
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a button that toggles the sidebar open/closed state'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
381
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
382
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
383
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
424
384
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
425
385
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
386
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarTrigger:component"]
387
+
388
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarRail:component" type="component" identity="SidebarRail" parent="none"]
389
+ // CIL[DOC-MACRO purpose="Renders a collapsible rail area that toggles the sidebar when clicked"]
390
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a clickable rail to collapse or expand the sidebar"]
391
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
392
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="calls toggleSidebar on click"]
393
+ // CIL[DOC-MICRO logic_summary="Renders an absolute hover/click rail to toggle the sidebar" notable_decisions="[]"]
394
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
395
+ // CIL[DOC-STABILITY stability="stable"]
426
396
  function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
427
397
  const { toggleSidebar } = useSidebar()
428
398
 
@@ -447,21 +417,22 @@ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
447
417
  />
448
418
  )
449
419
  }
450
- // CIL[END chunk_id="sidebar_sidebarrail_1783758409"]
451
- // CIL[BEGIN chunk_id="sidebar_sidebarinset_1783758409" type="function" identity="SidebarInset" parent="none"]
452
- // CIL[DOC-MACRO purpose="Main content area with sidebar inset spacing"]
453
- // CIL[DOC-RESPONSIBILITY responsibility="Provide main container with responsive margin for sidebar"]
454
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
455
- // CIL[DOC-CONTRACT inputs="none" outputs="Main content area" errors="none" side_effects="DOM rendering"]
456
- // CIL[DOC-MICRO logic_summary="Creates main content area with responsive margins when sidebar is present" notable_decisions="[]"]
457
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
458
- // CIL[DOC-STABILITY stability="stable"]
459
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
460
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
461
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
462
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
420
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a collapsible rail area that toggles the sidebar when clicked'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
421
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
422
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
423
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
463
424
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
464
425
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
426
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarRail:component"]
427
+
428
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarInset:component" type="component" identity="SidebarInset" parent="none"]
429
+ // CIL[DOC-MACRO purpose="Renders the main content area that adapts to the sidebar variant"]
430
+ // CIL[DOC-RESPONSIBILITY responsibility="Display main page content with correct margins for the active sidebar variant"]
431
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
432
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
433
+ // CIL[DOC-MICRO logic_summary="Renders main content with inset-aware margins" notable_decisions="[]"]
434
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
435
+ // CIL[DOC-STABILITY stability="stable"]
465
436
  function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
466
437
  return (
467
438
  <main
@@ -474,21 +445,22 @@ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
474
445
  />
475
446
  )
476
447
  }
477
- // CIL[END chunk_id="sidebar_sidebarinset_1783758409"]
478
- // CIL[BEGIN chunk_id="sidebar_sidebarinput_1783758409" type="function" identity="SidebarInput" parent="none"]
479
- // CIL[DOC-MACRO purpose="Input field styled for sidebar context"]
480
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled input with sidebar-specific styling"]
481
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
482
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled input" errors="none" side_effects="DOM rendering"]
483
- // CIL[DOC-MICRO logic_summary="Creates input with fixed height, background color and sidebar styling" notable_decisions="[]"]
484
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
485
- // CIL[DOC-STABILITY stability="stable"]
486
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
487
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
488
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
489
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
448
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the main content area that adapts to the sidebar variant'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
449
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
450
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
451
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
490
452
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
491
453
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
454
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarInset:component"]
455
+
456
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarInput:component" type="component" identity="SidebarInput" parent="none"]
457
+ // CIL[DOC-MACRO purpose="Renders a compact input styled for use inside the sidebar"]
458
+ // CIL[DOC-RESPONSIBILITY responsibility="Render an input field visually adapted to the sidebar"]
459
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
460
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
461
+ // CIL[DOC-MICRO logic_summary="Forwards to Input with sidebar-specific styling" notable_decisions="[]"]
462
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
463
+ // CIL[DOC-STABILITY stability="stable"]
492
464
  function SidebarInput({
493
465
  className,
494
466
  ...props
@@ -505,21 +477,22 @@ function SidebarInput({
505
477
  />
506
478
  )
507
479
  }
508
- // CIL[END chunk_id="sidebar_sidebarinput_1783758409"]
509
- // CIL[BEGIN chunk_id="sidebar_sidebarheader_1783758409" type="function" identity="SidebarHeader" parent="none"]
510
- // CIL[DOC-MACRO purpose="Header section container for sidebar"]
511
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled header container with spacing"]
512
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
513
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled header div" errors="none" side_effects="DOM rendering"]
514
- // CIL[DOC-MICRO logic_summary="Creates flex column header with gap and padding using Tailwind classes" notable_decisions="[]"]
515
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
516
- // CIL[DOC-STABILITY stability="stable"]
517
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
518
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
519
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
520
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
480
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a compact input styled for use inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
481
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
482
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
483
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
521
484
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
522
485
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
486
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarInput:component"]
487
+
488
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarHeader:component" type="component" identity="SidebarHeader" parent="none"]
489
+ // CIL[DOC-MACRO purpose="Renders a header section inside the sidebar"]
490
+ // CIL[DOC-RESPONSIBILITY responsibility="Contain header-level children inside the sidebar layout"]
491
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
492
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
493
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled div" notable_decisions="[]"]
494
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
495
+ // CIL[DOC-STABILITY stability="stable"]
523
496
  function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
524
497
  return (
525
498
  <div
@@ -530,21 +503,22 @@ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
530
503
  />
531
504
  )
532
505
  }
533
- // CIL[END chunk_id="sidebar_sidebarheader_1783758409"]
534
- // CIL[BEGIN chunk_id="sidebar_sidebarfooter_1783758409" type="function" identity="SidebarFooter" parent="none"]
535
- // CIL[DOC-MACRO purpose="Footer section container for sidebar"]
536
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled footer container with auto margin"]
537
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
538
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled footer div" errors="none" side_effects="DOM rendering"]
539
- // CIL[DOC-MICRO logic_summary="Creates flex column footer with auto margin, gap and padding using Tailwind" notable_decisions="[]"]
540
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
541
- // CIL[DOC-STABILITY stability="stable"]
542
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
543
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
544
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
545
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
506
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a header section inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
507
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
508
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
509
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
546
510
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
547
511
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
512
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarHeader:component"]
513
+
514
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarFooter:component" type="component" identity="SidebarFooter" parent="none"]
515
+ // CIL[DOC-MACRO purpose="Renders a footer section inside the sidebar"]
516
+ // CIL[DOC-RESPONSIBILITY responsibility="Contain footer-level children inside the sidebar layout"]
517
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
518
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
519
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled div" notable_decisions="[]"]
520
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
521
+ // CIL[DOC-STABILITY stability="stable"]
548
522
  function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
549
523
  return (
550
524
  <div
@@ -555,21 +529,22 @@ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
555
529
  />
556
530
  )
557
531
  }
558
- // CIL[END chunk_id="sidebar_sidebarfooter_1783758409"]
559
- // CIL[BEGIN chunk_id="sidebar_sidebarseparator_1783758409" type="function" identity="SidebarSeparator" parent="none"]
560
- // CIL[DOC-MACRO purpose="Visual separator for sidebar content"]
561
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled horizontal divider for sidebar sections"]
562
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
563
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled separator" errors="none" side_effects="DOM rendering"]
564
- // CIL[DOC-MICRO logic_summary="Creates horizontal divider with border color and negative margins" notable_decisions="[]"]
565
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
566
- // CIL[DOC-STABILITY stability="stable"]
567
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
568
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
569
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
570
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
532
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a footer section inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
533
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
534
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
535
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
571
536
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
572
537
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
538
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarFooter:component"]
539
+
540
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarSeparator:component" type="component" identity="SidebarSeparator" parent="none"]
541
+ // CIL[DOC-MACRO purpose="Renders a horizontal separator line inside the sidebar"]
542
+ // CIL[DOC-RESPONSIBILITY responsibility="Visually separate groups of sidebar items"]
543
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
544
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
545
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled Separator" notable_decisions="[]"]
546
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
547
+ // CIL[DOC-STABILITY stability="stable"]
573
548
  function SidebarSeparator({
574
549
  className,
575
550
  ...props
@@ -583,21 +558,22 @@ function SidebarSeparator({
583
558
  />
584
559
  )
585
560
  }
586
- // CIL[END chunk_id="sidebar_sidebarseparator_1783758409"]
587
- // CIL[BEGIN chunk_id="sidebar_sidebarcontent_1783758409" type="function" identity="SidebarContent" parent="none"]
588
- // CIL[DOC-MACRO purpose="Main content area for sidebar items"]
589
- // CIL[DOC-RESPONSIBILITY responsibility="Handle SidebarContent"]
590
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
591
- // CIL[DOC-CONTRACT inputs="none" outputs="Scrollable content area" errors="none" side_effects="DOM rendering"]
592
- // CIL[DOC-MICRO logic_summary="Creates scrollable flex column container with overflow handling" notable_decisions="[]"]
593
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
594
- // CIL[DOC-STABILITY stability="stable"]
595
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
596
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
597
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
598
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
561
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a horizontal separator line inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
562
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
563
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
564
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
599
565
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
600
566
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
567
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarSeparator:component"]
568
+
569
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarContent:component" type="component" identity="SidebarContent" parent="none"]
570
+ // CIL[DOC-MACRO purpose="Renders the scrollable content area of the sidebar"]
571
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the scrollable primary content region of the sidebar"]
572
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
573
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
574
+ // CIL[DOC-MICRO logic_summary="Forwards to a scrollable flex div" notable_decisions="[]"]
575
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
576
+ // CIL[DOC-STABILITY stability="stable"]
601
577
  function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
602
578
  return (
603
579
  <div
@@ -611,21 +587,22 @@ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
611
587
  />
612
588
  )
613
589
  }
614
- // CIL[END chunk_id="sidebar_sidebarcontent_1783758409"]
615
- // CIL[BEGIN chunk_id="sidebar_sidebargroup_1783758409" type="function" identity="SidebarGroup" parent="none"]
616
- // CIL[DOC-MACRO purpose="Group container for sidebar items"]
617
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled container for grouping sidebar content"]
618
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
619
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled group container" errors="none" side_effects="DOM rendering"]
620
- // CIL[DOC-MICRO logic_summary="Creates flex column container with min-width and padding for sidebar groups" notable_decisions="[]"]
621
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
622
- // CIL[DOC-STABILITY stability="stable"]
623
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
624
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
625
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
626
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
590
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the scrollable content area of the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
591
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
592
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
593
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
627
594
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
628
595
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
596
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarContent:component"]
597
+
598
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroup:component" type="component" identity="SidebarGroup" parent="none"]
599
+ // CIL[DOC-MACRO purpose="Renders a grouping container for sidebar menu items"]
600
+ // CIL[DOC-RESPONSIBILITY responsibility="Group related items and labels inside the sidebar"]
601
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
602
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
603
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled div" notable_decisions="[]"]
604
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
605
+ // CIL[DOC-STABILITY stability="stable"]
629
606
  function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
630
607
  return (
631
608
  <div
@@ -639,21 +616,22 @@ function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
639
616
  />
640
617
  )
641
618
  }
642
- // CIL[END chunk_id="sidebar_sidebargroup_1783758409"]
643
- // CIL[BEGIN chunk_id="sidebar_sidebargrouplabel_1783758409" type="function" identity="SidebarGroupLabel" parent="none"]
644
- // CIL[DOC-MACRO purpose="Label for sidebar groups"]
645
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled label with optional slot rendering"]
646
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
647
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled label" errors="none" side_effects="DOM rendering"]
648
- // CIL[DOC-MICRO logic_summary="Creates label with optional slot rendering, styling and collapse behavior" notable_decisions="[]"]
649
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
650
- // CIL[DOC-STABILITY stability="stable"]
651
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
652
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
653
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
654
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
619
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a grouping container for sidebar menu items'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
620
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
621
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
622
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
655
623
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
656
624
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
625
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroup:component"]
626
+
627
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroupLabel:component" type="component" identity="SidebarGroupLabel" parent="none"]
628
+ // CIL[DOC-MACRO purpose="Renders a label for a sidebar group with collapse behavior"]
629
+ // CIL[DOC-RESPONSIBILITY responsibility="Display the group heading and hide it in collapsed icon mode"]
630
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
631
+ // CIL[DOC-CONTRACT inputs="className, asChild, props" outputs="JSX element" errors="none" side_effects="none"]
632
+ // CIL[DOC-MICRO logic_summary="Uses Slot.Root or div and hides on icon-only sidebar" notable_decisions="[]"]
633
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
634
+ // CIL[DOC-STABILITY stability="stable"]
657
635
  function SidebarGroupLabel({
658
636
  className,
659
637
  asChild = false,
@@ -673,21 +651,22 @@ function SidebarGroupLabel({
673
651
  />
674
652
  )
675
653
  }
676
- // CIL[END chunk_id="sidebar_sidebargrouplabel_1783758409"]
677
- // CIL[BEGIN chunk_id="sidebar_sidebargroupaction_1783758409" type="function" identity="SidebarGroupAction" parent="none"]
678
- // CIL[DOC-MACRO purpose="Action button for sidebar groups"]
679
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled action button with optional slot rendering"]
680
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
681
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled action button" errors="none" side_effects="DOM events"]
682
- // CIL[DOC-MICRO logic_summary="Creates action button with optional slot rendering and hover states" notable_decisions="[]"]
683
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
684
- // CIL[DOC-STABILITY stability="stable"]
685
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
686
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
687
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
688
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
654
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a label for a sidebar group with collapse behavior'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
655
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
656
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
657
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
689
658
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
690
659
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
660
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroupLabel:component"]
661
+
662
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroupAction:component" type="component" identity="SidebarGroupAction" parent="none"]
663
+ // CIL[DOC-MACRO purpose="Renders an action button for a sidebar group"]
664
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose a small action button on a group header"]
665
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
666
+ // CIL[DOC-CONTRACT inputs="className, asChild, props" outputs="JSX element" errors="none" side_effects="none"]
667
+ // CIL[DOC-MICRO logic_summary="Uses Slot.Root or button and positions absolutely in the group header" notable_decisions="[]"]
668
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
669
+ // CIL[DOC-STABILITY stability="stable"]
691
670
  function SidebarGroupAction({
692
671
  className,
693
672
  asChild = false,
@@ -707,21 +686,22 @@ function SidebarGroupAction({
707
686
  />
708
687
  )
709
688
  }
710
- // CIL[END chunk_id="sidebar_sidebargroupaction_1783758409"]
711
- // CIL[BEGIN chunk_id="sidebar_sidebargroupcontent_1783758409" type="function" identity="SidebarGroupContent" parent="none"]
712
- // CIL[DOC-MACRO purpose="Content area for sidebar groups"]
713
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled container for group content items"]
714
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
715
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled content container" errors="none" side_effects="DOM rendering"]
716
- // CIL[DOC-MICRO logic_summary="Creates flex column container with full width and small text styling" notable_decisions="[]"]
717
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
718
- // CIL[DOC-STABILITY stability="stable"]
719
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
720
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
721
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
722
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
689
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders an action button for a sidebar group'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
690
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
691
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
692
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
723
693
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
724
694
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
695
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroupAction:component"]
696
+
697
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroupContent:component" type="component" identity="SidebarGroupContent" parent="none"]
698
+ // CIL[DOC-MACRO purpose="Renders the content wrapper for a sidebar group"]
699
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap the children of a sidebar group"]
700
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
701
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
702
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled div" notable_decisions="[]"]
703
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
704
+ // CIL[DOC-STABILITY stability="stable"]
725
705
  function SidebarGroupContent({
726
706
  className,
727
707
  ...props
@@ -735,21 +715,22 @@ function SidebarGroupContent({
735
715
  />
736
716
  )
737
717
  }
738
- // CIL[END chunk_id="sidebar_sidebargroupcontent_1783758409"]
739
- // CIL[BEGIN chunk_id="sidebar_sidebarmenu_1783758409" type="function" identity="SidebarMenu" parent="none"]
740
- // CIL[DOC-MACRO purpose="Menu container for sidebar navigation"]
741
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled list container for menu items"]
742
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
743
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled menu list" errors="none" side_effects="DOM rendering"]
744
- // CIL[DOC-MICRO logic_summary="Creates flex column list with full width and gap between items" notable_decisions="[]"]
745
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
746
- // CIL[DOC-STABILITY stability="stable"]
747
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
748
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
749
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
750
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
718
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the content wrapper for a sidebar group'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
719
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
720
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
721
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
751
722
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
752
723
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
724
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarGroupContent:component"]
725
+
726
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenu:component" type="component" identity="SidebarMenu" parent="none"]
727
+ // CIL[DOC-MACRO purpose="Renders a menu list inside the sidebar"]
728
+ // CIL[DOC-RESPONSIBILITY responsibility="Render the unordered menu list of sidebar items"]
729
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
730
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
731
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled ul" notable_decisions="[]"]
732
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
733
+ // CIL[DOC-STABILITY stability="stable"]
753
734
  function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
754
735
  return (
755
736
  <ul
@@ -760,21 +741,22 @@ function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
760
741
  />
761
742
  )
762
743
  }
763
- // CIL[END chunk_id="sidebar_sidebarmenu_1783758409"]
764
- // CIL[BEGIN chunk_id="sidebar_sidebarmenuitem_1783758409" type="function" identity="SidebarMenuItem" parent="none"]
765
- // CIL[DOC-MACRO purpose="Menu item container for sidebar navigation"]
766
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled list item for menu entries"]
767
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
768
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled menu item" errors="none" side_effects="DOM rendering"]
769
- // CIL[DOC-MICRO logic_summary="Creates list item with relative positioning and group styling" notable_decisions="[]"]
770
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
771
- // CIL[DOC-STABILITY stability="stable"]
772
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
773
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
774
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
775
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
744
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a menu list inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
745
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
746
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
747
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
776
748
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
777
749
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
750
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenu:component"]
751
+
752
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuItem:component" type="component" identity="SidebarMenuItem" parent="none"]
753
+ // CIL[DOC-MACRO purpose="Renders a menu item wrapper inside the sidebar"]
754
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap a single entry in the sidebar menu"]
755
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
756
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
757
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled li" notable_decisions="[]"]
758
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
759
+ // CIL[DOC-STABILITY stability="stable"]
778
760
  function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
779
761
  return (
780
762
  <li
@@ -785,21 +767,23 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
785
767
  />
786
768
  )
787
769
  }
788
- // CIL[END chunk_id="sidebar_sidebarmenuitem_1783758409"]
789
- // CIL[BEGIN chunk_id="sidebar_sidebarmenubuttonvariants_1783758409" type="variants" identity="sidebarMenuButtonVariants" parent="none"]
790
- // CIL[DOC-MACRO purpose="Define variants for sidebar menu button styling"]
791
- // CIL[DOC-RESPONSIBILITY responsibility="Provide CVA configuration for menu button variants"]
792
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
793
- // CIL[DOC-CONTRACT inputs="none" outputs="CVA variants" errors="none" side_effects="Variant definition"]
794
- // CIL[DOC-MICRO logic_summary="Defines base styles and variants for outline/default and size options" notable_decisions="[]"]
795
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
796
- // CIL[DOC-STABILITY stability="stable"]
797
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
798
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
799
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
800
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
770
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a menu item wrapper inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
771
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
772
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
773
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
801
774
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
802
775
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
776
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuItem:component"]
777
+
778
+
779
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:sidebarMenuButtonVariants:constant" type="constant" identity="sidebarMenuButtonVariants" parent="none"]
780
+ // CIL[DOC-MACRO purpose="Defines the class-variance-authority variants for sidebar menu buttons"]
781
+ // CIL[DOC-RESPONSIBILITY responsibility="Compute CSS class variants for menu button sizes and styles"]
782
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
783
+ // CIL[DOC-CONTRACT inputs="none" outputs="cva variant function" errors="none" side_effects="none"]
784
+ // CIL[DOC-MICRO logic_summary="Builds cva variants for default and outline styles plus sizes" notable_decisions="[]"]
785
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
786
+ // CIL[DOC-STABILITY stability="stable"]
803
787
  const sidebarMenuButtonVariants = cva(
804
788
  "peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",
805
789
  {
@@ -821,21 +805,22 @@ const sidebarMenuButtonVariants = cva(
821
805
  },
822
806
  }
823
807
  )
824
- // CIL[END chunk_id="sidebar_sidebarmenubuttonvariants_1783758409"]
825
- // CIL[BEGIN chunk_id="sidebar_sidebarmenubutton_1783758409" type="function" identity="SidebarMenuButton" parent="none"]
826
- // CIL[DOC-MACRO purpose="Menu button with tooltip support for sidebar"]
827
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled menu button with optional tooltip and variants"]
828
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
829
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled menu button" errors="none" side_effects="DOM events"]
830
- // CIL[DOC-MICRO logic_summary="Creates menu button with variants, tooltip support and responsive styling" notable_decisions="[]"]
831
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
832
- // CIL[DOC-STABILITY stability="stable"]
833
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
834
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
835
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
836
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
808
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the class-variance-authority variants for sidebar menu buttons'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
809
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
810
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
811
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
837
812
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
838
813
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
814
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:sidebarMenuButtonVariants:constant"]
815
+
816
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuButton:component" type="component" identity="SidebarMenuButton" parent="none"]
817
+ // CIL[DOC-MACRO purpose="Renders an interactive sidebar menu button with optional tooltip"]
818
+ // CIL[DOC-RESPONSIBILITY responsibility="Render the interactive menu button and optional collapsed tooltip"]
819
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
820
+ // CIL[DOC-CONTRACT inputs="asChild, isActive, variant, size, tooltip, className, props" outputs="JSX element" errors="none" side_effects="none"]
821
+ // CIL[DOC-MICRO logic_summary="Renders the cva-styled button and wraps with tooltip when collapsed" notable_decisions="[]"]
822
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
823
+ // CIL[DOC-STABILITY stability="stable"]
839
824
  function SidebarMenuButton({
840
825
  asChild = false,
841
826
  isActive = false,
@@ -885,21 +870,22 @@ function SidebarMenuButton({
885
870
  </Tooltip>
886
871
  )
887
872
  }
888
- // CIL[END chunk_id="sidebar_sidebarmenubutton_1783758409"]
889
- // CIL[BEGIN chunk_id="sidebar_sidebarmenuaction_1783758409" type="function" identity="SidebarMenuAction" parent="none"]
890
- // CIL[DOC-MACRO purpose="Action button for sidebar menu items"]
891
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled action button with optional slot rendering"]
892
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
893
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled action button" errors="none" side_effects="DOM events"]
894
- // CIL[DOC-MICRO logic_summary="Creates action button with optional slot rendering and hover visibility" notable_decisions="[]"]
895
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
896
- // CIL[DOC-STABILITY stability="stable"]
897
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
898
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
899
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
900
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
873
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders an interactive sidebar menu button with optional tooltip'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
874
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
875
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
876
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
901
877
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
902
878
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
879
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuButton:component"]
880
+
881
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuAction:component" type="component" identity="SidebarMenuAction" parent="none"]
882
+ // CIL[DOC-MACRO purpose="Renders an action button attached to a sidebar menu item"]
883
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a small action attached to a menu item, with hover reveal"]
884
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
885
+ // CIL[DOC-CONTRACT inputs="className, asChild, showOnHover, props" outputs="JSX element" errors="none" side_effects="none"]
886
+ // CIL[DOC-MICRO logic_summary="Renders an optional child or button and reveals on hover" notable_decisions="[]"]
887
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
888
+ // CIL[DOC-STABILITY stability="stable"]
903
889
  function SidebarMenuAction({
904
890
  className,
905
891
  asChild = false,
@@ -925,21 +911,22 @@ function SidebarMenuAction({
925
911
  />
926
912
  )
927
913
  }
928
- // CIL[END chunk_id="sidebar_sidebarmenuaction_1783758409"]
929
- // CIL[BEGIN chunk_id="sidebar_sidebarmenubadge_1783758409" type="function" identity="SidebarMenuBadge" parent="none"]
930
- // CIL[DOC-MACRO purpose="Badge indicator for sidebar menu items"]
931
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled badge with positioning and styling"]
932
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
933
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled badge" errors="none" side_effects="DOM rendering"]
934
- // CIL[DOC-MICRO logic_summary="Creates badge with absolute positioning, size and tabular number styling" notable_decisions="[]"]
935
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
936
- // CIL[DOC-STABILITY stability="stable"]
937
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
938
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
939
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
940
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
914
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders an action button attached to a sidebar menu item'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
915
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
916
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
917
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
941
918
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
942
919
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
920
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuAction:component"]
921
+
922
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuBadge:component" type="component" identity="SidebarMenuBadge" parent="none"]
923
+ // CIL[DOC-MACRO purpose="Renders a badge indicator for a sidebar menu item"]
924
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a numeric or status badge next to a menu item"]
925
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
926
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
927
+ // CIL[DOC-MICRO logic_summary="Renders a small badge with dynamic hover colors" notable_decisions="[]"]
928
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
929
+ // CIL[DOC-STABILITY stability="stable"]
943
930
  function SidebarMenuBadge({
944
931
  className,
945
932
  ...props
@@ -956,21 +943,22 @@ function SidebarMenuBadge({
956
943
  />
957
944
  )
958
945
  }
959
- // CIL[END chunk_id="sidebar_sidebarmenubadge_1783758409"]
960
- // CIL[BEGIN chunk_id="sidebar_sidebarmenuskeleton_1783758409" type="function" identity="SidebarMenuSkeleton" parent="none"]
961
- // CIL[DOC-MACRO purpose="Skeleton loader for sidebar menu items"]
962
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled skeleton with optional icon and random width"]
963
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
964
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled skeleton" errors="none" side_effects="DOM rendering"]
965
- // CIL[DOC-MICRO logic_summary="Creates skeleton with optional icon and random width between 50-90%" notable_decisions="[]"]
966
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
967
- // CIL[DOC-STABILITY stability="stable"]
968
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
969
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
970
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
971
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
946
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a badge indicator for a sidebar menu item'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
947
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
948
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
949
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
972
950
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
973
951
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
952
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuBadge:component"]
953
+
954
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSkeleton:component" type="component" identity="SidebarMenuSkeleton" parent="none"]
955
+ // CIL[DOC-MACRO purpose="Renders a placeholder skeleton loading row for sidebar menu items"]
956
+ // CIL[DOC-RESPONSIBILITY responsibility="Show a loading placeholder for a menu item"]
957
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
958
+ // CIL[DOC-CONTRACT inputs="className, showIcon, props" outputs="JSX element" errors="none" side_effects="uses Math.random to pick a skeleton width on mount"]
959
+ // CIL[DOC-MICRO logic_summary="Renders icon and text skeletons with a randomized width" notable_decisions="[]"]
960
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
961
+ // CIL[DOC-STABILITY stability="stable"]
974
962
  function SidebarMenuSkeleton({
975
963
  className,
976
964
  showIcon = false,
@@ -1007,21 +995,22 @@ function SidebarMenuSkeleton({
1007
995
  </div>
1008
996
  )
1009
997
  }
1010
- // CIL[END chunk_id="sidebar_sidebarmenuskeleton_1783758409"]
1011
- // CIL[BEGIN chunk_id="sidebar_sidebarmenusub_1783758409" type="function" identity="SidebarMenuSub" parent="none"]
1012
- // CIL[DOC-MACRO purpose="Sub-menu container for nested sidebar navigation"]
1013
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled sub-menu with border and indentation"]
1014
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
1015
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled sub-menu" errors="none" side_effects="DOM rendering"]
1016
- // CIL[DOC-MICRO logic_summary="Creates sub-menu with left border, padding and collapsed visibility" notable_decisions="[]"]
1017
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1018
- // CIL[DOC-STABILITY stability="stable"]
1019
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
1020
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
1021
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
1022
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
998
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a placeholder skeleton loading row for sidebar menu items'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
999
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
1000
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
1001
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
1023
1002
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1024
1003
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1004
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSkeleton:component"]
1005
+
1006
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSub:component" type="component" identity="SidebarMenuSub" parent="none"]
1007
+ // CIL[DOC-MACRO purpose="Renders a collapsible sub-menu list inside the sidebar"]
1008
+ // CIL[DOC-RESPONSIBILITY responsibility="Render an indented sub-menu list"]
1009
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
1010
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
1011
+ // CIL[DOC-MICRO logic_summary="Renders an indented bordered sub-list" notable_decisions="[]"]
1012
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
1013
+ // CIL[DOC-STABILITY stability="stable"]
1025
1014
  function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
1026
1015
  return (
1027
1016
  <ul
@@ -1035,21 +1024,22 @@ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
1035
1024
  />
1036
1025
  )
1037
1026
  }
1038
- // CIL[END chunk_id="sidebar_sidebarmenusub_1783758409"]
1039
- // CIL[BEGIN chunk_id="sidebar_sidebarmenusubitem_1783758409" type="function" identity="SidebarMenuSubItem" parent="none"]
1040
- // CIL[DOC-MACRO purpose="Sub-menu item container for nested navigation"]
1041
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled list item for sub-menu entries"]
1042
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
1043
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled sub-menu item" errors="none" side_effects="DOM rendering"]
1044
- // CIL[DOC-MICRO logic_summary="Creates list item with relative positioning and sub-menu styling" notable_decisions="[]"]
1045
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1046
- // CIL[DOC-STABILITY stability="stable"]
1047
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
1048
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
1049
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
1050
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
1027
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a collapsible sub-menu list inside the sidebar'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
1028
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
1029
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
1030
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
1051
1031
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1052
1032
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1033
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSub:component"]
1034
+
1035
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSubItem:component" type="component" identity="SidebarMenuSubItem" parent="none"]
1036
+ // CIL[DOC-MACRO purpose="Renders a sub-menu item wrapper"]
1037
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap a single sub-menu entry"]
1038
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
1039
+ // CIL[DOC-CONTRACT inputs="className, props" outputs="JSX element" errors="none" side_effects="none"]
1040
+ // CIL[DOC-MICRO logic_summary="Forwards to a styled li" notable_decisions="[]"]
1041
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
1042
+ // CIL[DOC-STABILITY stability="stable"]
1053
1043
  function SidebarMenuSubItem({
1054
1044
  className,
1055
1045
  ...props
@@ -1063,21 +1053,22 @@ function SidebarMenuSubItem({
1063
1053
  />
1064
1054
  )
1065
1055
  }
1066
- // CIL[END chunk_id="sidebar_sidebarmenusubitem_1783758409"]
1067
- // CIL[BEGIN chunk_id="sidebar_sidebarmenusubbutton_1783758409" type="function" identity="SidebarMenuSubButton" parent="none"]
1068
- // CIL[DOC-MACRO purpose="Sub-menu button for nested sidebar navigation"]
1069
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled sub-menu button with size and active states"]
1070
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
1071
- // CIL[DOC-CONTRACT inputs="none" outputs="Styled sub-menu button" errors="none" side_effects="DOM events"]
1072
- // CIL[DOC-MICRO logic_summary="Creates sub-menu button with size variants, active states and responsive styling" notable_decisions="[]"]
1073
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1074
- // CIL[DOC-STABILITY stability="stable"]
1075
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
1076
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
1077
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
1078
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
1056
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a sub-menu item wrapper'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
1057
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
1058
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
1059
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
1079
1060
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1080
1061
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1062
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSubItem:component"]
1063
+
1064
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSubButton:component" type="component" identity="SidebarMenuSubButton" parent="none"]
1065
+ // CIL[DOC-MACRO purpose="Renders a button for a sub-menu item"]
1066
+ // CIL[DOC-RESPONSIBILITY responsibility="Render an anchor-like sub-menu button"]
1067
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
1068
+ // CIL[DOC-CONTRACT inputs="asChild, size, isActive, className, props" outputs="JSX element" errors="none" side_effects="none"]
1069
+ // CIL[DOC-MICRO logic_summary="Renders an anchor or child with size/active states" notable_decisions="[]"]
1070
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
1071
+ // CIL[DOC-STABILITY stability="stable"]
1081
1072
  function SidebarMenuSubButton({
1082
1073
  asChild = false,
1083
1074
  size = "md",
@@ -1105,21 +1096,21 @@ function SidebarMenuSubButton({
1105
1096
  />
1106
1097
  )
1107
1098
  }
1108
- // CIL[END chunk_id="sidebar_sidebarmenusubbutton_1783758409"]
1109
- // CIL[BEGIN chunk_id="sidebar_exports_1783758409" type="exports" identity="exports" parent="none"]
1110
- // CIL[DOC-MACRO purpose="Export all sidebar components for public API"]
1111
- // CIL[DOC-RESPONSIBILITY responsibility="Provide module exports for sidebar component library"]
1112
- // CIL[DOC-CONTEXT module="sidebar" layer="ui_components" related_files="[]"]
1113
- // CIL[DOC-CONTRACT inputs="none" outputs="Component exports" errors="none" side_effects="Module exports"]
1114
- // CIL[DOC-MICRO logic_summary="Exports all sidebar components: Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar" notable_decisions="[]"]
1115
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1116
- // CIL[DOC-STABILITY stability="stable"]
1117
- // CIL[DOC-VECTOR type="context" content="Layer: ui_components. Direct callers: 0. Direct calls: 0. Related files: none."]
1118
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
1119
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
1120
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
1099
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a button for a sub-menu item'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
1100
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
1101
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
1102
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
1121
1103
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1122
1104
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1105
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:SidebarMenuSubButton:component"]
1106
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/sidebar.tsx:module_exports:export" type="export" identity="module_exports" parent="none"]
1107
+ // CIL[DOC-MACRO purpose="Re-exports all public sidebar components, hooks, and helpers"]
1108
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose all public sidebar symbols to consumers"]
1109
+ // CIL[DOC-CONTEXT module="sidebar" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/separator.tsx,.framework/src/components/ui/sheet.tsx,.framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts"]
1110
+ // CIL[DOC-CONTRACT inputs="none" outputs="none (module re-exports)" errors="none" side_effects="none"]
1111
+ // CIL[DOC-MICRO logic_summary="Lists every public component and hook in a single export block" notable_decisions="[]"]
1112
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
1113
+ // CIL[DOC-STABILITY stability="stable"]
1123
1114
  export {
1124
1115
  Sidebar,
1125
1116
  SidebarContent,
@@ -1146,4 +1137,10 @@ export {
1146
1137
  SidebarTrigger,
1147
1138
  useSidebar,
1148
1139
  }
1149
- // CIL[END chunk_id="sidebar_exports_1783758409"]
1140
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-exports all public sidebar components, hooks, and helpers'; No verified external callers; imports: .framework/src/hooks/use-mobile.ts,.framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
1141
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
1142
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
1143
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
1144
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1145
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1146
+ // CIL[END stable_id="~/.framework/src/components/ui/sidebar.tsx:module_exports:export"]