spine-framework 0.3.124 → 0.3.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/.framework/cli/commands/agents.ts +35 -37
  2. package/.framework/cli/commands/auth.ts +35 -34
  3. package/.framework/cli/commands/create-app.ts +104 -40
  4. package/.framework/cli/commands/dev.ts +104 -69
  5. package/.framework/cli/commands/doctor.ts +179 -69
  6. package/.framework/cli/commands/generate.ts +83 -143
  7. package/.framework/cli/commands/init.ts +72 -34
  8. package/.framework/cli/commands/install-app.ts +260 -125
  9. package/.framework/cli/commands/items.ts +33 -44
  10. package/.framework/cli/commands/migrate.ts +122 -40
  11. package/.framework/cli/commands/migrations.ts +33 -40
  12. package/.framework/cli/commands/pipelines.ts +31 -39
  13. package/.framework/cli/commands/status.ts +47 -23
  14. package/.framework/cli/commands/system.ts +47 -37
  15. package/.framework/cli/commands/test.ts +112 -68
  16. package/.framework/cli/commands/validate-app.ts +215 -121
  17. package/.framework/cli/context.ts +112 -130
  18. package/.framework/cli/env-loader.ts +47 -18
  19. package/.framework/cli/index.ts +81 -42
  20. package/.framework/docs/runtime-types.md +1024 -0
  21. package/.framework/functions/_shared/agent-runner.ts +1296 -961
  22. package/.framework/functions/_shared/app-manifest.ts +82 -68
  23. package/.framework/functions/_shared/audit.ts +135 -83
  24. package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
  25. package/.framework/functions/_shared/db.ts +80 -126
  26. package/.framework/functions/_shared/hash-api-key.ts +63 -0
  27. package/.framework/functions/_shared/index.ts +224 -335
  28. package/.framework/functions/_shared/kb.ts +319 -0
  29. package/.framework/functions/_shared/llm.ts +92 -0
  30. package/.framework/functions/_shared/logging.ts +288 -0
  31. package/.framework/functions/_shared/middleware.ts +329 -365
  32. package/.framework/functions/_shared/outcomes.ts +36 -0
  33. package/.framework/functions/_shared/permissions.ts +359 -643
  34. package/.framework/functions/_shared/pipeline-runner.ts +243 -316
  35. package/.framework/functions/_shared/principal.ts +376 -468
  36. package/.framework/functions/_shared/resolve-credentials.ts +102 -0
  37. package/.framework/functions/_shared/resolve-ids.ts +188 -16
  38. package/.framework/functions/_shared/retry-deliveries.ts +104 -0
  39. package/.framework/functions/_shared/schema-utils.ts +611 -373
  40. package/.framework/functions/_shared/testing.ts +207 -137
  41. package/.framework/functions/_shared/tracing.ts +276 -0
  42. package/.framework/functions/_shared/trigger-engine.ts +159 -211
  43. package/.framework/functions/_shared/webhook-registration.ts +95 -81
  44. package/.framework/functions/_shared/webhook-registry.ts +153 -75
  45. package/.framework/functions/account-nodes.ts +31 -53
  46. package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
  47. package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
  48. package/.framework/functions/adapters/openai-outbound.ts +40 -0
  49. package/.framework/functions/admin-data.ts +685 -537
  50. package/.framework/functions/admin-funnel.ts +31 -20
  51. package/.framework/functions/admin-install-funnel.ts +47 -28
  52. package/.framework/functions/admin-signals.ts +47 -29
  53. package/.framework/functions/ai-agents.ts +122 -147
  54. package/.framework/functions/ai-interactions.ts +180 -90
  55. package/.framework/functions/api-keys.ts +250 -192
  56. package/.framework/functions/apps.ts +203 -197
  57. package/.framework/functions/auth.ts +98 -91
  58. package/.framework/functions/cil-agent-ingest.ts +773 -0
  59. package/.framework/functions/cil-agent.ts +592 -0
  60. package/.framework/functions/cil-callmap.ts +1227 -0
  61. package/.framework/functions/cil-config.ts +583 -0
  62. package/.framework/functions/cil-context.ts +445 -0
  63. package/.framework/functions/cil-doc.ts +1752 -0
  64. package/.framework/functions/cil-embeddings.ts +1202 -0
  65. package/.framework/functions/cil-graph.ts +585 -0
  66. package/.framework/functions/cil-ingest.ts +2416 -0
  67. package/.framework/functions/cil-pipeline.ts +318 -0
  68. package/.framework/functions/cil-project.ts +499 -0
  69. package/.framework/functions/cil-validate.ts +469 -0
  70. package/.framework/functions/debug-auth.ts +73 -53
  71. package/.framework/functions/deliveries.ts +117 -0
  72. package/.framework/functions/embeddings.ts +528 -516
  73. package/.framework/functions/eval-harness.ts +158 -106
  74. package/.framework/functions/integration-outbound.ts +311 -0
  75. package/.framework/functions/integration-routes.ts +240 -466
  76. package/.framework/functions/integrations.ts +132 -140
  77. package/.framework/functions/invites.ts +401 -201
  78. package/.framework/functions/item-progress.ts +113 -53
  79. package/.framework/functions/kb.ts +28 -0
  80. package/.framework/functions/logs.ts +239 -222
  81. package/.framework/functions/observability.ts +308 -259
  82. package/.framework/functions/pipeline-executions.ts +179 -235
  83. package/.framework/functions/pipelines.ts +163 -205
  84. package/.framework/functions/prompt-configs.ts +109 -156
  85. package/.framework/functions/roles.ts +97 -147
  86. package/.framework/functions/system-cron.ts +132 -218
  87. package/.framework/functions/system.ts +112 -52
  88. package/.framework/functions/tests.ts +32 -28
  89. package/.framework/functions/timers.ts +162 -210
  90. package/.framework/functions/triggers.ts +282 -346
  91. package/.framework/functions/types.ts +283 -400
  92. package/.framework/migrations/001_core_schema.sql +630 -0
  93. package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
  94. package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
  95. package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
  96. package/.framework/migrations/005_core_observability.sql +598 -0
  97. package/.framework/migrations/006_security_hardening_rls.sql +97 -0
  98. package/.framework/migrations/007_kb_article_list.sql +237 -0
  99. package/.framework/migrations/008_items_target.sql +8 -0
  100. package/.framework/migrations/009_roles_slug_unique.sql +11 -0
  101. package/.framework/public/spine.config.json +91 -0
  102. package/.framework/scripts/app-install-cli.ts +112 -98
  103. package/.framework/src/App.tsx +67 -20
  104. package/.framework/src/apps/admin/index.tsx +97 -27
  105. package/.framework/src/components/AppWrapper.tsx +50 -11
  106. package/.framework/src/components/CustomAppLoader.tsx +131 -22
  107. package/.framework/src/components/admin/AdminListPage.tsx +75 -8
  108. package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
  109. package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
  110. package/.framework/src/components/admin/PageInstructions.tsx +49 -0
  111. package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
  112. package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
  113. package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
  114. package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
  115. package/.framework/src/components/app-sidebar.tsx +50 -3
  116. package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
  117. package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
  118. package/.framework/src/components/kb/KBArticleList.tsx +557 -0
  119. package/.framework/src/components/layout/AppShell.tsx +54 -16
  120. package/.framework/src/components/layout/Header.tsx +50 -38
  121. package/.framework/src/components/layout/Layout.tsx +48 -32
  122. package/.framework/src/components/layout/Sidebar.tsx +167 -16
  123. package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
  124. package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
  125. package/.framework/src/components/runtime/DataFilters.tsx +78 -1
  126. package/.framework/src/components/runtime/DataHeader.tsx +32 -29
  127. package/.framework/src/components/runtime/DataListPage.tsx +161 -2
  128. package/.framework/src/components/runtime/DataStats.tsx +48 -1
  129. package/.framework/src/components/runtime/DataTable.tsx +153 -1
  130. package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
  131. package/.framework/src/components/runtime/index.ts +16 -9
  132. package/.framework/src/components/search-form.tsx +33 -1
  133. package/.framework/src/components/shared/AgentView.tsx +48 -51
  134. package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
  135. package/.framework/src/components/shared/InviteManager.tsx +113 -52
  136. package/.framework/src/components/shared/MemberList.tsx +182 -0
  137. package/.framework/src/components/shared/SchemaFields.tsx +96 -78
  138. package/.framework/src/components/ui/DataTable.tsx +86 -56
  139. package/.framework/src/components/ui/Form.tsx +188 -109
  140. package/.framework/src/components/ui/ItemCard.tsx +86 -58
  141. package/.framework/src/components/ui/ItemListView.tsx +88 -61
  142. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
  143. package/.framework/src/components/ui/Modal.tsx +81 -4
  144. package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
  145. package/.framework/src/components/ui/accordion.tsx +97 -5
  146. package/.framework/src/components/ui/alert-dialog.tsx +225 -13
  147. package/.framework/src/components/ui/alert.tsx +113 -6
  148. package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
  149. package/.framework/src/components/ui/avatar.tsx +129 -7
  150. package/.framework/src/components/ui/badge.tsx +65 -3
  151. package/.framework/src/components/ui/breadcrumb.tsx +145 -8
  152. package/.framework/src/components/ui/button-group.tsx +81 -4
  153. package/.framework/src/components/ui/button.tsx +49 -2
  154. package/.framework/src/components/ui/calendar.tsx +65 -3
  155. package/.framework/src/components/ui/card.tsx +145 -8
  156. package/.framework/src/components/ui/carousel.tsx +129 -7
  157. package/.framework/src/components/ui/chart.tsx +161 -10
  158. package/.framework/src/components/ui/checkbox.tsx +49 -2
  159. package/.framework/src/components/ui/collapsible.tsx +81 -5
  160. package/.framework/src/components/ui/combobox.tsx +305 -20
  161. package/.framework/src/components/ui/command.tsx +177 -11
  162. package/.framework/src/components/ui/context-menu.tsx +273 -17
  163. package/.framework/src/components/ui/dialog.tsx +209 -27
  164. package/.framework/src/components/ui/direction.tsx +64 -4
  165. package/.framework/src/components/ui/drawer.tsx +193 -12
  166. package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
  167. package/.framework/src/components/ui/empty.tsx +145 -9
  168. package/.framework/src/components/ui/field.tsx +209 -14
  169. package/.framework/src/components/ui/hover-card.tsx +81 -4
  170. package/.framework/src/components/ui/input-group.tsx +162 -10
  171. package/.framework/src/components/ui/input-otp.tsx +98 -5
  172. package/.framework/src/components/ui/input.tsx +49 -2
  173. package/.framework/src/components/ui/item.tsx +225 -13
  174. package/.framework/src/components/ui/kbd.tsx +65 -3
  175. package/.framework/src/components/ui/label.tsx +49 -2
  176. package/.framework/src/components/ui/menubar.tsx +289 -17
  177. package/.framework/src/components/ui/native-select.tsx +97 -5
  178. package/.framework/src/components/ui/navigation-menu.tsx +177 -10
  179. package/.framework/src/components/ui/pagination.tsx +161 -9
  180. package/.framework/src/components/ui/popover.tsx +145 -8
  181. package/.framework/src/components/ui/progress.tsx +49 -2
  182. package/.framework/src/components/ui/radio-group.tsx +65 -3
  183. package/.framework/src/components/ui/resizable.tsx +82 -4
  184. package/.framework/src/components/ui/scroll-area.tsx +65 -3
  185. package/.framework/src/components/ui/select.tsx +193 -11
  186. package/.framework/src/components/ui/separator.tsx +49 -2
  187. package/.framework/src/components/ui/sheet.tsx +193 -11
  188. package/.framework/src/components/ui/sidebar.tsx +481 -38
  189. package/.framework/src/components/ui/skeleton.tsx +49 -2
  190. package/.framework/src/components/ui/slider.tsx +49 -2
  191. package/.framework/src/components/ui/sonner.tsx +49 -2
  192. package/.framework/src/components/ui/spinner.tsx +49 -2
  193. package/.framework/src/components/ui/switch.tsx +49 -2
  194. package/.framework/src/components/ui/table-primitives.tsx +160 -33
  195. package/.framework/src/components/ui/table.tsx +161 -9
  196. package/.framework/src/components/ui/tabs.tsx +113 -6
  197. package/.framework/src/components/ui/textarea.tsx +49 -2
  198. package/.framework/src/components/ui/toggle-group.tsx +81 -4
  199. package/.framework/src/components/ui/toggle.tsx +65 -3
  200. package/.framework/src/components/ui/tooltip.tsx +97 -5
  201. package/.framework/src/contexts/AppContext.tsx +129 -45
  202. package/.framework/src/contexts/AuthContext.tsx +187 -144
  203. package/.framework/src/hooks/use-mobile.ts +48 -2
  204. package/.framework/src/hooks/useApi.ts +208 -159
  205. package/.framework/src/hooks/useAppPath.ts +32 -23
  206. package/.framework/src/hooks/useApps.ts +51 -20
  207. package/.framework/src/hooks/useEntityList.ts +32 -78
  208. package/.framework/src/hooks/useEntityRecord.ts +35 -96
  209. package/.framework/src/hooks/useForm.ts +32 -92
  210. package/.framework/src/hooks/useListSchema.ts +49 -78
  211. package/.framework/src/hooks/useSchemaRecord.ts +114 -105
  212. package/.framework/src/lib/api.ts +195 -116
  213. package/.framework/src/lib/supabase.ts +98 -64
  214. package/.framework/src/lib/utils.ts +287 -151
  215. package/.framework/src/main.tsx +49 -3
  216. package/.framework/src/pages/DashboardPage.tsx +52 -29
  217. package/.framework/src/pages/NotFoundPage.tsx +32 -10
  218. package/.framework/src/pages/SetupPage.tsx +32 -12
  219. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
  220. package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
  221. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
  222. package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
  223. package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
  224. package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
  225. package/.framework/src/pages/admin/AppsPage.tsx +49 -2
  226. package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
  227. package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
  228. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
  229. package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
  230. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
  231. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
  232. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
  233. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
  234. package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
  235. package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
  236. package/.framework/src/pages/admin/LogsPage.tsx +422 -75
  237. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
  238. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
  239. package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
  240. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
  241. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
  242. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
  243. package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
  244. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
  245. package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
  246. package/.framework/src/pages/admin/RolesPage.tsx +171 -18
  247. package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
  248. package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
  249. package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
  250. package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
  251. package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
  252. package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
  253. package/.framework/src/pages/admin/TimersPage.tsx +48 -20
  254. package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
  255. package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
  256. package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
  257. package/.framework/src/pages/admin/TypesPage.tsx +48 -20
  258. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
  259. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
  260. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
  261. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
  262. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
  263. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
  264. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
  265. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
  266. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
  267. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  268. package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
  269. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
  270. package/.framework/src/pages/auth/LoginPage.tsx +50 -23
  271. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
  272. package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
  273. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
  274. package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
  275. package/.framework/src/types/auth.ts +128 -71
  276. package/.framework/src/types/types.ts +373 -157
  277. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
  278. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
  279. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
  280. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
  281. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
  282. package/docs/README.md +9 -130
  283. package/netlify.toml +5 -2
  284. package/package.json +13 -25
  285. package/scripts/kb-ingest-docs.ts +203 -0
  286. package/spine.config.json +65 -4
  287. package/.framework/migrations/001_schema.sql +0 -425
  288. package/.framework/migrations/002_rls_and_functions.sql +0 -763
  289. package/.framework/migrations/004_enhancements.sql +0 -43
  290. package/.framework/migrations/005_auth_user_trigger.sql +0 -105
  291. package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
  292. package/.framework/migrations/016_invites.sql +0 -27
  293. package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
  294. package/.framework/migrations/018_apps_required_roles.sql +0 -17
  295. package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
  296. package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
  297. package/.framework/migrations/021_app_domains.sql +0 -112
  298. package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
  299. package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
  300. package/.framework/migrations/024_messages_account_id.sql +0 -9
  301. package/.framework/migrations/025_retype_threads_messages.sql +0 -240
  302. package/.framework/migrations/026_fix_rls_policies.sql +0 -47
  303. package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
  304. package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
  305. package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
  306. package/.framework/migrations/030_messages_updated_by.sql +0 -6
  307. package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
  308. package/docs/APPS.md +0 -232
  309. package/docs/ARCHITECTURE.md +0 -246
  310. package/docs/INSTALL.md +0 -155
  311. package/docs/design-schema-spec.md +0 -1837
  312. package/docs/dev-guides/01-create-an-app.md +0 -183
  313. package/docs/dev-guides/02-create-a-function.md +0 -178
  314. package/docs/dev-guides/03-create-a-component.md +0 -178
  315. package/docs/dev-guides/04-webhook-handlers.md +0 -129
  316. package/docs/dev-guides/05-testing.md +0 -168
  317. package/docs/dev-guides/README.md +0 -40
  318. package/docs/npm-packages-plan.md +0 -288
  319. package/docs/spine-core--api-reference.md +0 -822
@@ -1,3 +1,48 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
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"]
1
46
  import * as React from "react"
2
47
  import { cva, type VariantProps } from "class-variance-authority"
3
48
  import { Slot } from "radix-ui"
@@ -21,14 +66,42 @@ import {
21
66
  TooltipTrigger,
22
67
  } from "@/components/ui/tooltip"
23
68
  import { PanelLeftIcon } from "lucide-react"
24
-
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."]
82
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
83
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
25
84
  const SIDEBAR_COOKIE_NAME = "sidebar_state"
26
85
  const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
27
86
  const SIDEBAR_WIDTH = "16rem"
28
87
  const SIDEBAR_WIDTH_MOBILE = "18rem"
29
88
  const SIDEBAR_WIDTH_ICON = "3rem"
30
89
  const SIDEBAR_KEYBOARD_SHORTCUT = "b"
31
-
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"]
32
105
  type SidebarContextProps = {
33
106
  state: "expanded" | "collapsed"
34
107
  open: boolean
@@ -38,9 +111,37 @@ type SidebarContextProps = {
38
111
  isMobile: boolean
39
112
  toggleSidebar: () => void
40
113
  }
41
-
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"]
42
129
  const SidebarContext = React.createContext<SidebarContextProps | null>(null)
43
-
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."]
143
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
144
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
44
145
  function useSidebar() {
45
146
  const context = React.useContext(SidebarContext)
46
147
  if (!context) {
@@ -49,7 +150,21 @@ function useSidebar() {
49
150
 
50
151
  return context
51
152
  }
52
-
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."]
166
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
167
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
53
168
  function SidebarProvider({
54
169
  defaultOpen = true,
55
170
  open: openProp,
@@ -66,8 +181,6 @@ function SidebarProvider({
66
181
  const isMobile = useIsMobile()
67
182
  const [openMobile, setOpenMobile] = React.useState(false)
68
183
 
69
- // This is the internal state of the sidebar.
70
- // We use openProp and setOpenProp for control from outside the component.
71
184
  const [_open, _setOpen] = React.useState(defaultOpen)
72
185
  const open = openProp ?? _open
73
186
  const setOpen = React.useCallback(
@@ -79,18 +192,15 @@ function SidebarProvider({
79
192
  _setOpen(openState)
80
193
  }
81
194
 
82
- // This sets the cookie to keep the sidebar state.
83
195
  document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`
84
196
  },
85
197
  [setOpenProp, open]
86
198
  )
87
199
 
88
- // Helper to toggle the sidebar.
89
200
  const toggleSidebar = React.useCallback(() => {
90
201
  return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)
91
202
  }, [isMobile, setOpen, setOpenMobile])
92
203
 
93
- // Adds a keyboard shortcut to toggle the sidebar.
94
204
  React.useEffect(() => {
95
205
  const handleKeyDown = (event: KeyboardEvent) => {
96
206
  if (
@@ -106,8 +216,6 @@ function SidebarProvider({
106
216
  return () => window.removeEventListener("keydown", handleKeyDown)
107
217
  }, [toggleSidebar])
108
218
 
109
- // We add a state so that we can do data-state="expanded" or "collapsed".
110
- // This makes it easier to style the sidebar with Tailwind classes.
111
219
  const state = open ? "expanded" : "collapsed"
112
220
 
113
221
  const contextValue = React.useMemo<SidebarContextProps>(
@@ -145,7 +253,21 @@ function SidebarProvider({
145
253
  </SidebarContext.Provider>
146
254
  )
147
255
  }
148
-
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."]
269
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
270
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
149
271
  function Sidebar({
150
272
  side = "left",
151
273
  variant = "sidebar",
@@ -228,7 +350,6 @@ function Sidebar({
228
350
  data-side={side}
229
351
  className={cn(
230
352
  "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
231
- // Adjust the padding for floating and inset variants.
232
353
  variant === "floating" || variant === "inset"
233
354
  ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
234
355
  : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
@@ -247,7 +368,21 @@ function Sidebar({
247
368
  </div>
248
369
  )
249
370
  }
250
-
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."]
384
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
385
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
251
386
  function SidebarTrigger({
252
387
  className,
253
388
  onClick,
@@ -273,7 +408,21 @@ function SidebarTrigger({
273
408
  </Button>
274
409
  )
275
410
  }
276
-
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."]
424
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
425
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
277
426
  function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
278
427
  const { toggleSidebar } = useSidebar()
279
428
 
@@ -298,7 +447,21 @@ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
298
447
  />
299
448
  )
300
449
  }
301
-
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."]
463
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
464
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
302
465
  function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
303
466
  return (
304
467
  <main
@@ -311,7 +474,21 @@ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
311
474
  />
312
475
  )
313
476
  }
314
-
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."]
490
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
491
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
315
492
  function SidebarInput({
316
493
  className,
317
494
  ...props
@@ -328,7 +505,21 @@ function SidebarInput({
328
505
  />
329
506
  )
330
507
  }
331
-
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."]
521
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
522
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
332
523
  function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
333
524
  return (
334
525
  <div
@@ -339,7 +530,21 @@ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
339
530
  />
340
531
  )
341
532
  }
342
-
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."]
546
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
547
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
343
548
  function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
344
549
  return (
345
550
  <div
@@ -350,7 +555,21 @@ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
350
555
  />
351
556
  )
352
557
  }
353
-
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."]
571
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
572
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
354
573
  function SidebarSeparator({
355
574
  className,
356
575
  ...props
@@ -364,7 +583,21 @@ function SidebarSeparator({
364
583
  />
365
584
  )
366
585
  }
367
-
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."]
599
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
600
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
368
601
  function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
369
602
  return (
370
603
  <div
@@ -378,7 +611,21 @@ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
378
611
  />
379
612
  )
380
613
  }
381
-
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."]
627
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
628
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
382
629
  function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
383
630
  return (
384
631
  <div
@@ -392,7 +639,21 @@ function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
392
639
  />
393
640
  )
394
641
  }
395
-
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."]
655
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
656
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
396
657
  function SidebarGroupLabel({
397
658
  className,
398
659
  asChild = false,
@@ -412,7 +673,21 @@ function SidebarGroupLabel({
412
673
  />
413
674
  )
414
675
  }
415
-
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."]
689
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
690
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
416
691
  function SidebarGroupAction({
417
692
  className,
418
693
  asChild = false,
@@ -432,7 +707,21 @@ function SidebarGroupAction({
432
707
  />
433
708
  )
434
709
  }
435
-
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."]
723
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
724
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
436
725
  function SidebarGroupContent({
437
726
  className,
438
727
  ...props
@@ -446,7 +735,21 @@ function SidebarGroupContent({
446
735
  />
447
736
  )
448
737
  }
449
-
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."]
751
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
752
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
450
753
  function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
451
754
  return (
452
755
  <ul
@@ -457,7 +760,21 @@ function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
457
760
  />
458
761
  )
459
762
  }
460
-
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."]
776
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
777
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
461
778
  function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
462
779
  return (
463
780
  <li
@@ -468,7 +785,21 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
468
785
  />
469
786
  )
470
787
  }
471
-
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."]
801
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
802
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
472
803
  const sidebarMenuButtonVariants = cva(
473
804
  "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",
474
805
  {
@@ -490,7 +821,21 @@ const sidebarMenuButtonVariants = cva(
490
821
  },
491
822
  }
492
823
  )
493
-
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."]
837
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
838
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
494
839
  function SidebarMenuButton({
495
840
  asChild = false,
496
841
  isActive = false,
@@ -540,7 +885,21 @@ function SidebarMenuButton({
540
885
  </Tooltip>
541
886
  )
542
887
  }
543
-
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."]
901
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
902
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
544
903
  function SidebarMenuAction({
545
904
  className,
546
905
  asChild = false,
@@ -566,7 +925,21 @@ function SidebarMenuAction({
566
925
  />
567
926
  )
568
927
  }
569
-
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."]
941
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
942
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
570
943
  function SidebarMenuBadge({
571
944
  className,
572
945
  ...props
@@ -583,7 +956,21 @@ function SidebarMenuBadge({
583
956
  />
584
957
  )
585
958
  }
586
-
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."]
972
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
973
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
587
974
  function SidebarMenuSkeleton({
588
975
  className,
589
976
  showIcon = false,
@@ -591,7 +978,6 @@ function SidebarMenuSkeleton({
591
978
  }: React.ComponentProps<"div"> & {
592
979
  showIcon?: boolean
593
980
  }) {
594
- // Random width between 50 to 90%.
595
981
  const [width] = React.useState(() => {
596
982
  return `${Math.floor(Math.random() * 40) + 50}%`
597
983
  })
@@ -621,7 +1007,21 @@ function SidebarMenuSkeleton({
621
1007
  </div>
622
1008
  )
623
1009
  }
624
-
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."]
1023
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1024
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
625
1025
  function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
626
1026
  return (
627
1027
  <ul
@@ -635,7 +1035,21 @@ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
635
1035
  />
636
1036
  )
637
1037
  }
638
-
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."]
1051
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1052
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
639
1053
  function SidebarMenuSubItem({
640
1054
  className,
641
1055
  ...props
@@ -649,7 +1063,21 @@ function SidebarMenuSubItem({
649
1063
  />
650
1064
  )
651
1065
  }
652
-
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."]
1079
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1080
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
653
1081
  function SidebarMenuSubButton({
654
1082
  asChild = false,
655
1083
  size = "md",
@@ -677,7 +1105,21 @@ function SidebarMenuSubButton({
677
1105
  />
678
1106
  )
679
1107
  }
680
-
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."]
1121
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1122
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
681
1123
  export {
682
1124
  Sidebar,
683
1125
  SidebarContent,
@@ -704,3 +1146,4 @@ export {
704
1146
  SidebarTrigger,
705
1147
  useSidebar,
706
1148
  }
1149
+ // CIL[END chunk_id="sidebar_exports_1783758409"]