{ "summary": { "filesScanned": 120, "elementsParsed": 10219, "vstackUses": 1425, "hstackUses": 853 }, "sections": [ { "title": "Layout idiom census — exact VStack/HStack/Card/Grid/Section configs (≥ 3 uses, ≥ 2 files)", "rows": [ { "signature": "VStack(gap=1)", "count": 464, "files": 34, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/pages/ProfileSettingsPage.tsx, src/features/dispatch/ProjectDispatch.tsx, src/features/organizations/containers/InvitationContainer.tsx, src/features/organizations/containers/OrganizationSettingsContainer.tsx … (+29 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:194" }, { "signature": "VStack(gap=0)", "count": 360, "files": 34, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/containers/UserProfileMenu.tsx, src/features/auth/pages/ProfileSettingsPage.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/organizations/components/MemberTable.tsx … (+29 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:174" }, { "signature": "HStack(gap=2,vAlign=center)", "count": 204, "files": 26, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/conversations/WorkspaceToolsPanel.tsx, src/features/playbooks/PlaybookDiagram.tsx, src/features/tasks/TaskKanbanBoard.tsx, src/pages/AgentDetails.tsx … (+21 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:166" }, { "signature": "Card(padding=4)", "count": 160, "files": 16, "filesList": "src/features/dispatch/IntegrationCard.tsx, src/pages/AgentPluginDetails.tsx, src/pages/AgentPlugins.tsx, src/pages/ConnectorDetails.tsx, src/pages/Connectors.tsx … (+11 more)", "example": "src/features/dispatch/IntegrationCard.tsx:40" }, { "signature": "StackItem(size=fill)", "count": 150, "files": 20, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/conversations/WorkspaceToolsPanel.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/playbooks/PlaybookDiagram.tsx, src/features/playbooks/PlaybookFlow.tsx … (+15 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:173" }, { "signature": "HStack(gap=3,vAlign=center)", "count": 138, "files": 33, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/components/AuthLayout.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/organizations/components/MemberTable.tsx, src/features/organizations/containers/OrganizationInvitationsContainer.tsx … (+28 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:370" }, { "signature": "VStack(gap=3)", "count": 128, "files": 30, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/organizations/pages/OrganizationCreatePage.tsx, src/features/playbooks/PlaybookDiagram.tsx, src/features/playbooks/PlaybookFlow.tsx … (+25 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:193" }, { "signature": "VStack(gap=4)", "count": 114, "files": 19, "filesList": "src/features/auth/pages/LoginPage.tsx, src/features/auth/pages/SignupPage.tsx, src/features/organizations/components/OrganizationForm.tsx, src/pages/AgentDetails.tsx, src/pages/AgentPlugins.tsx … (+14 more)", "example": "src/features/auth/pages/LoginPage.tsx:115" }, { "signature": "VStack(gap=2)", "count": 96, "files": 20, "filesList": "src/features/agent-backends/AcpLaunchInstructions.tsx, src/features/artifacts/ArtifactViewer.tsx, src/features/auth/components/AuthLayout.tsx, src/features/auth/containers/UserProfileMenu.tsx, src/features/dispatch/IntegrationCard.tsx … (+15 more)", "example": "src/features/agent-backends/AcpLaunchInstructions.tsx:31" }, { "signature": "Grid(columns=expr,gap=4)", "count": 93, "files": 22, "filesList": "src/features/auth/pages/ProfileSettingsPage.tsx, src/features/auth/pages/SignupPage.tsx, src/pages/AgentDetails.tsx, src/pages/AgentPluginDetails.tsx, src/pages/AgentPlugins.tsx … (+17 more)", "example": "src/features/auth/pages/ProfileSettingsPage.tsx:129" } ], "total": 81 }, { "title": "Repeated JSX structure fingerprints (≥ 3 occurrences, ≥ 2 files)", "rows": [ { "signature": "Text(color:s,type:s)[#t1]", "count": 1255, "files": 47, "filesList": "src/features/agent-backends/AcpLaunchInstructions.tsx, src/features/artifacts/ArtifactViewer.tsx, src/features/auth/components/AuthLayout.tsx, src/features/auth/pages/ProfileSettingsPage.tsx, src/features/conversations/WorkspaceToolsPanel.tsx … (+42 more)", "example": "src/features/agent-backends/AcpLaunchInstructions.tsx:24" }, { "signature": "Heading(level:s)[#t1]", "count": 837, "files": 42, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/pages/ProfileSettingsPage.tsx, src/features/dispatch/ProjectDispatch.tsx, src/features/organizations/containers/InvitationContainer.tsx, src/features/organizations/containers/OrganizationInvitationsContainer.tsx … (+37 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:156" }, { "signature": "Icon(color:s,icon:s,size:s)[]", "count": 347, "files": 40, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/containers/UserProfileMenu.tsx, src/features/conversations/WorkspaceToolsPanel.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/dispatch/ProjectDispatch.tsx … (+35 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:126" }, { "signature": "Text(type:s,weight:s)[#t1]", "count": 314, "files": 31, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/pages/ProfileSettingsPage.tsx, src/features/conversations/WorkspaceToolsPanel.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/organizations/containers/OrganizationSettingsContainer.tsx … (+26 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:175" }, { "signature": "Badge(label:s,variant:s)[]", "count": 256, "files": 37, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/dispatch/ProjectDispatch.tsx, src/features/git-providers/GitProviderSelector.tsx, src/features/organizations/components/InvitationTable.tsx … (+32 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:387" }, { "signature": "VStack(gap:s)[Heading(level:s)[#t1];Text(color:s,type:s)[#t1]]", "count": 218, "files": 28, "filesList": "src/features/auth/pages/ProfileSettingsPage.tsx, src/features/dispatch/ProjectDispatch.tsx, src/features/organizations/containers/OrganizationSettingsContainer.tsx, src/pages/AgentDetails.tsx, src/pages/AgentPluginDetails.tsx … (+23 more)", "example": "src/features/auth/pages/ProfileSettingsPage.tsx:93" }, { "signature": "Text(type:s)[#t1]", "count": 182, "files": 25, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/containers/UserProfileMenu.tsx, src/features/dispatch/IntegrationCard.tsx, src/features/organizations/pages/OrganizationCreatePage.tsx, src/features/playbooks/PlaybookFlow.tsx … (+20 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:267" }, { "signature": "Icon(icon:s,size:s)[]", "count": 170, "files": 47, "filesList": "src/features/artifacts/ArtifactViewer.tsx, src/features/auth/containers/UserProfileMenu.tsx, src/features/auth/pages/LoginPage.tsx, src/features/auth/pages/SignupPage.tsx, src/features/connectors/EnvironmentLabels.tsx … (+42 more)", "example": "src/features/artifacts/ArtifactViewer.tsx:244" }, { "signature": "Button(label:s,onClick:s,variant:s)[]", "count": 149, "files": 28, "filesList": "src/features/conversations/WorkspaceToolsPanel.tsx, src/features/dispatch/ProjectDispatch.tsx, src/features/organizations/containers/InvitationContainer.tsx, src/features/organizations/containers/OrganizationInvitationsContainer.tsx, src/features/organizations/containers/OrganizationPeopleContainer.tsx … (+23 more)", "example": "src/features/conversations/WorkspaceToolsPanel.tsx:224" }, { "signature": "VStack(gap:s)[Text(color:s,type:s)[#t1];Heading(level:s)[#t1];Text(color:s,type:s)[#t1]]", "count": 136, "files": 13, "filesList": "src/pages/AgentPluginDetails.tsx, src/pages/AgentPlugins.tsx, src/pages/ConnectorDetails.tsx, src/pages/Connectors.tsx, src/pages/GitProviderDetails.tsx … (+8 more)", "example": "src/pages/AgentPluginDetails.tsx:235" } ], "total": 220 }, { "title": "Known hand-rolled idioms — extraction candidates", "rows": [ { "idiom": "Label+description pair (VStack gap=0: Text + supporting Text)", "key": "labelPair", "count": 64, "files": 18, "examples": [ "src/features/artifacts/ArtifactViewer.tsx:174", "src/features/auth/containers/UserProfileMenu.tsx:88", "src/features/auth/pages/ProfileSettingsPage.tsx:108" ] }, { "idiom": "Section header (VStack gap=0: Heading + supporting Text)", "key": "sectionHeader", "count": 163, "files": 25, "examples": [ "src/features/organizations/containers/InvitationContainer.tsx:184", "src/features/playbooks/PlaybookDiagram.tsx:105", "src/features/playbooks/PlaybookFlow.tsx:35" ] }, { "idiom": "Stat card (Card padding>=3 > VStack gap=1: 2 supporting Texts + Heading)", "key": "statCard", "count": 138, "files": 13, "examples": [ "src/pages/AgentPluginDetails.tsx:234", "src/pages/AgentPlugins.tsx:240", "src/pages/ConnectorDetails.tsx:175" ] }, { "idiom": "Icon + text row (HStack vAlign=center: Icon + VStack)", "key": "iconTextRow", "count": 54, "files": 14, "examples": [ "src/pages/AgentPluginDetails.tsx:123", "src/pages/AgentPlugins.tsx:124", "src/pages/GitProviderDetails.tsx:111" ] }, { "idiom": "Form action row (HStack gap=2: 2+ Buttons)", "key": "formActions", "count": 43, "files": 13, "examples": [ "src/features/artifacts/ArtifactViewer.tsx:216", "src/pages/AgentDetails.tsx:806", "src/pages/Agents.tsx:783" ] }, { "idiom": "Wizard progress (HStack wrap=wrap of Badge+Text steps)", "key": "wizardProgress", "count": 0, "files": 0, "examples": [] } ], "total": 6 }, { "title": "Most similar page pairs (Jaccard over structure fingerprints)", "rows": [ { "pair": "src/pages/GitProviders.tsx ↔ src/pages/Integrations.tsx", "jaccard": "0.76", "shared": 22 }, { "pair": "src/pages/NewIntegration.tsx ↔ src/pages/NewIssueProvider.tsx", "jaccard": "0.58", "shared": 38 }, { "pair": "src/pages/NewGitProvider.tsx ↔ src/pages/NewIssueProvider.tsx", "jaccard": "0.57", "shared": 37 }, { "pair": "src/pages/GitProviderDetails.tsx ↔ src/pages/IntegrationDetails.tsx", "jaccard": "0.54", "shared": 40 }, { "pair": "src/pages/NewGitProvider.tsx ↔ src/pages/NewIntegration.tsx", "jaccard": "0.54", "shared": 36 }, { "pair": "src/pages/Integrations.tsx ↔ src/pages/IssueProviders.tsx", "jaccard": "0.47", "shared": 18 }, { "pair": "src/pages/Integrations.tsx ↔ src/pages/Playbooks.tsx", "jaccard": "0.47", "shared": 18 }, { "pair": "src/pages/GitProviders.tsx ↔ src/pages/IssueProviders.tsx", "jaccard": "0.46", "shared": 18 }, { "pair": "src/features/organizations/containers/OrganizationInvitationsContainer.tsx ↔ src/features/organizations/containers/OrganizationPeopleContainer.tsx", "jaccard": "0.43", "shared": 12 }, { "pair": "src/pages/GitProviders.tsx ↔ src/pages/Playbooks.tsx", "jaccard": "0.42", "shared": 17 } ], "total": 22 }, { "title": "Most co-imported @astryxdesign/core modules (signals composite components to extract)", "rows": [ { "modules": "/Layout|@astryxdesign/core/Text", "count": 46, "files": 46 }, { "modules": "/Icon|@astryxdesign/core/Layout", "count": 45, "files": 45 }, { "modules": "/Button|@astryxdesign/core/Layout", "count": 43, "files": 43 }, { "modules": "/Icon|@astryxdesign/core/Text", "count": 42, "files": 42 }, { "modules": "/Button|@astryxdesign/core/Text", "count": 39, "files": 39 }, { "modules": "/Button|@astryxdesign/core/Icon", "count": 38, "files": 38 }, { "modules": "/Badge|@astryxdesign/core/Icon", "count": 33, "files": 33 }, { "modules": "/Badge|@astryxdesign/core/Layout", "count": 33, "files": 33 }, { "modules": "/Badge|@astryxdesign/core/Text", "count": 32, "files": 32 }, { "modules": "/Card|@astryxdesign/core/Layout", "count": 30, "files": 30 } ], "total": 211 } ] }