@cat-factory/app 0.302.1 → 0.303.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/app/app.config.ts +19 -10
- package/app/assets/css/main.css +13 -13
- package/app/assets/css/prose.css +22 -22
- package/app/assets/css/tokens.css +298 -0
- package/app/components/assistant/AssistantModal.vue +22 -22
- package/app/components/auth/AuthGate.vue +1 -1
- package/app/components/auth/BackendMisconfiguredScreen.vue +10 -10
- package/app/components/auth/LoginScreen.vue +34 -36
- package/app/components/auth/ResetPasswordScreen.vue +12 -12
- package/app/components/auth/UserMenu.vue +4 -4
- package/app/components/binaryCandidates/BinaryCandidatesWindow.vue +27 -25
- package/app/components/binaryOutput/BinaryOutputReport.vue +15 -15
- package/app/components/binaryOutput/StoredAssetView.vue +5 -5
- package/app/components/board/AddTaskModal.vue +17 -20
- package/app/components/board/AgentFailureCard.vue +11 -11
- package/app/components/board/AgentFailureHistory.vue +2 -2
- package/app/components/board/BoardCanvas.vue +6 -5
- package/app/components/board/CreateInitiativeModal.vue +8 -10
- package/app/components/board/DependencyConnectOverlay.vue +1 -1
- package/app/components/board/FailureHistoryList.vue +7 -7
- package/app/components/board/RecurringPipelineModal.vue +17 -17
- package/app/components/board/ReviewFrictionDialog.vue +6 -6
- package/app/components/board/StepExecutionHistory.vue +13 -13
- package/app/components/board/TaskDependencyEdges.vue +8 -8
- package/app/components/board/nodes/AgentChip.vue +10 -10
- package/app/components/board/nodes/BlockNode.vue +29 -29
- package/app/components/board/nodes/DecisionBadge.vue +2 -2
- package/app/components/board/nodes/EpicNode.vue +14 -10
- package/app/components/board/nodes/FrameSwimlanes.vue +7 -9
- package/app/components/board/nodes/InitiativeCard.vue +8 -8
- package/app/components/board/nodes/LaneGroup.vue +1 -1
- package/app/components/board/nodes/LaneTask.vue +2 -2
- package/app/components/board/nodes/ResizeGrips.vue +4 -4
- package/app/components/board/nodes/TaskCard.vue +18 -18
- package/app/components/board/nodes/TaskLane.vue +5 -5
- package/app/components/board/nodes/TaskPipelineMini.vue +18 -18
- package/app/components/bootstrap/AdoptionReviewModal.vue +29 -26
- package/app/components/bootstrap/BootstrapModal.vue +21 -23
- package/app/components/bootstrap/BootstrapRunSteps.vue +1 -1
- package/app/components/brainstorm/BrainstormWindow.vue +30 -33
- package/app/components/bugFishing/BugFishingWindow.vue +49 -49
- package/app/components/clarity/ClarityReviewWindow.vue +30 -30
- package/app/components/common/AsyncViewError.vue +5 -5
- package/app/components/common/ClarificationItem.vue +8 -13
- package/app/components/common/ConfirmDialog.vue +4 -2
- package/app/components/common/DescriptorFields.vue +1 -1
- package/app/components/common/EmptyState.vue +3 -3
- package/app/components/common/InterviewGateNotice.vue +7 -7
- package/app/components/common/KeyboardShortcutsHelp.vue +1 -1
- package/app/components/common/MarkdownProse.vue +14 -13
- package/app/components/consensus/ConsensusSessionWindow.vue +26 -26
- package/app/components/context/ContextAttachmentFields.vue +17 -17
- package/app/components/docs/DocInterviewWindow.vue +14 -14
- package/app/components/documents/ContextDocumentPicker.vue +17 -17
- package/app/components/documents/DocumentImportModal.vue +7 -7
- package/app/components/documents/DocumentSourceConnectModal.vue +3 -3
- package/app/components/documents/DocumentSyncState.vue +5 -5
- package/app/components/documents/DocumentTemplatesModal.vue +15 -15
- package/app/components/documents/RepoContextDocPicker.vue +5 -5
- package/app/components/documents/SpawnPreviewModal.vue +12 -12
- package/app/components/documents/StartFromDesignModal.vue +11 -11
- package/app/components/documents/TaskContextDocs.vue +5 -5
- package/app/components/environments/EnvSetupStepper.vue +6 -6
- package/app/components/environments/EnvironmentStatusPanel.vue +17 -17
- package/app/components/environments/steps/EnvPickStep.vue +3 -3
- package/app/components/environments/steps/EnvPreflightStep.vue +9 -9
- package/app/components/environments/steps/EnvReviewStep.vue +25 -22
- package/app/components/environments/steps/EnvSaveStep.vue +7 -5
- package/app/components/environments/steps/JourneyStepNav.vue +1 -1
- package/app/components/focus/BlockFocusView.vue +17 -19
- package/app/components/followUp/FollowUpWindow.vue +23 -23
- package/app/components/forkDecision/ForkDecisionWindow.vue +37 -39
- package/app/components/foundational/FoundationalContractSummary.vue +7 -7
- package/app/components/foundational/FoundationalServiceCatalogList.vue +11 -11
- package/app/components/foundational/FoundationalServiceManager.vue +1 -1
- package/app/components/foundational/FoundationalServiceRegistry.vue +13 -13
- package/app/components/foundational/FoundationalServiceSources.vue +13 -13
- package/app/components/foundational/FoundationalSuppressions.vue +7 -7
- package/app/components/foundational/ServiceCatalogConnection.vue +10 -10
- package/app/components/fragments/FragmentLibraryManager.vue +41 -44
- package/app/components/fragments/FragmentSelector.vue +13 -13
- package/app/components/fragments/GitHubDocUrlImport.vue +1 -1
- package/app/components/gates/GateFailingCheckList.vue +5 -5
- package/app/components/gates/GateResultView.vue +50 -47
- package/app/components/github/AddServiceFromRepoModal.vue +14 -14
- package/app/components/github/BranchProtectionPreflight.vue +13 -13
- package/app/components/github/GitHubConnect.vue +7 -7
- package/app/components/github/GitHubOnboarding.vue +7 -7
- package/app/components/github/GitHubPanel.vue +37 -40
- package/app/components/github/RepoTreeBrowser.vue +18 -18
- package/app/components/humanTest/HumanTestWindow.vue +30 -33
- package/app/components/initiative/InitiativePlanNotice.vue +5 -5
- package/app/components/initiative/InitiativePlanReview.vue +27 -29
- package/app/components/initiative/InitiativePlanningWindow.vue +10 -10
- package/app/components/initiative/InitiativeTrackerWindow.vue +71 -65
- package/app/components/inputGate/InputGateNotice.vue +2 -4
- package/app/components/judge/JudgeResultView.vue +30 -32
- package/app/components/kaizen/KaizenPanel.vue +40 -36
- package/app/components/kaizen/KaizenStepStatus.vue +21 -21
- package/app/components/layout/AccountAuditLog.vue +10 -10
- package/app/components/layout/AccountDeploymentSettings.vue +20 -20
- package/app/components/layout/AccountFailureKindRules.vue +13 -13
- package/app/components/layout/AccountFoundationalSettings.vue +1 -1
- package/app/components/layout/AccountFragmentSettings.vue +1 -1
- package/app/components/layout/AccountModelPolicySettings.vue +9 -9
- package/app/components/layout/AccountPlatformAlertSettings.vue +11 -11
- package/app/components/layout/AccountRiskPolicySettings.vue +2 -2
- package/app/components/layout/AccountRunCredentialSettings.vue +5 -5
- package/app/components/layout/AccountSkillSettings.vue +1 -1
- package/app/components/layout/AccountTeamSettings.vue +23 -15
- package/app/components/layout/AiProvidersBanner.vue +11 -8
- package/app/components/layout/AppearanceSwitcher.vue +108 -0
- package/app/components/layout/BoardSwitcher.vue +8 -11
- package/app/components/layout/BoardToolbar.vue +3 -3
- package/app/components/layout/CommandBar.vue +7 -9
- package/app/components/layout/ConnectionStatusBanner.vue +2 -2
- package/app/components/layout/DefaultTestEnvBanner.vue +5 -5
- package/app/components/layout/GitHubPatBanner.vue +5 -5
- package/app/components/layout/GitHubPatPermissionsBanner.vue +16 -10
- package/app/components/layout/InfraSetupBanner.vue +6 -6
- package/app/components/layout/IntegrationsHub.vue +15 -15
- package/app/components/layout/LanguageSwitcher.vue +5 -5
- package/app/components/layout/ModelProvidersHub.vue +13 -16
- package/app/components/layout/NotificationsInbox.vue +10 -10
- package/app/components/layout/PersonalSetupModal.vue +8 -8
- package/app/components/layout/ProviderConfigBanner.vue +4 -4
- package/app/components/layout/RolePrompt.vue +7 -7
- package/app/components/layout/SideBar.vue +6 -4
- package/app/components/layout/SpendWarningBanner.vue +17 -14
- package/app/components/layout/TranslationWarningBanner.vue +4 -4
- package/app/components/layout/UiModeSwitcher.vue +13 -13
- package/app/components/layout/UiRoleSwitcher.vue +8 -8
- package/app/components/layout/WorkspaceMembersSettings.vue +15 -11
- package/app/components/media/ArtifactLightbox.vue +13 -13
- package/app/components/media/ImageCompare.vue +31 -24
- package/app/components/merge/MergeEffortChips.vue +2 -2
- package/app/components/notifications/NotificationSettingsPanel.vue +14 -12
- package/app/components/observability/OutcomeFilterChips.vue +6 -6
- package/app/components/observability/RunFailureSummary.vue +28 -25
- package/app/components/observability/StepMetricsBar.vue +26 -28
- package/app/components/observability/StepModelActivity.vue +2 -2
- package/app/components/observability/ToolCallList.vue +24 -24
- package/app/components/outcome/OutcomeSummaryWindow.vue +47 -47
- package/app/components/palettes/AgentPalette.vue +8 -8
- package/app/components/palettes/AgentTierSelect.vue +1 -1
- package/app/components/palettes/PipelinePurposeSelect.vue +1 -1
- package/app/components/panels/AgentStepDetail.vue +52 -51
- package/app/components/panels/AttemptEntryHeader.vue +4 -6
- package/app/components/panels/DecisionModal.vue +7 -7
- package/app/components/panels/GenericStructuredResultView.vue +7 -7
- package/app/components/panels/InspectorPanel.vue +17 -17
- package/app/components/panels/MergerResultView.vue +19 -19
- package/app/components/panels/ObservabilityPanel.vue +115 -123
- package/app/components/panels/OperatorDashboardPanel.vue +89 -97
- package/app/components/panels/ReportsPanel.vue +69 -66
- package/app/components/panels/ReportsSpendBreakdown.vue +9 -9
- package/app/components/panels/ResultWindowShell.vue +38 -38
- package/app/components/panels/RunDetailLoadState.vue +2 -2
- package/app/components/panels/StepContainerStatus.vue +9 -9
- package/app/components/panels/StepDelegatedStatus.logic.spec.ts +135 -0
- package/app/components/panels/StepDelegatedStatus.logic.ts +160 -0
- package/app/components/panels/StepDelegatedStatus.vue +181 -0
- package/app/components/panels/StepEffortReport.vue +16 -15
- package/app/components/panels/StepFragmentAdherence.vue +14 -10
- package/app/components/panels/StepMetadataCard.vue +74 -45
- package/app/components/panels/StepReproductionReport.vue +25 -21
- package/app/components/panels/StepRunMeta.vue +20 -20
- package/app/components/panels/StepTestReport.logic.spec.ts +8 -3
- package/app/components/panels/StepTestReport.logic.ts +4 -4
- package/app/components/panels/StepTestReport.vue +28 -28
- package/app/components/panels/StepToolServers.vue +14 -11
- package/app/components/panels/StepValidationReport.vue +7 -7
- package/app/components/panels/inspector/ContainerSummary.vue +9 -9
- package/app/components/panels/inspector/DocReferenceRepos.vue +3 -3
- package/app/components/panels/inspector/EnvProbeReport.vue +24 -27
- package/app/components/panels/inspector/EpicChildren.vue +8 -12
- package/app/components/panels/inspector/FrontendBindingsResolved.vue +11 -11
- package/app/components/panels/inspector/FrontendConfig.vue +37 -41
- package/app/components/panels/inspector/InitiativeInspector.vue +3 -3
- package/app/components/panels/inspector/InspectorSection.vue +6 -6
- package/app/components/panels/inspector/RecurringScheduleSettings.vue +16 -19
- package/app/components/panels/inspector/ServiceConnections.vue +2 -2
- package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +2 -2
- package/app/components/panels/inspector/ServiceSelfTests.vue +21 -17
- package/app/components/panels/inspector/ServiceTestConfig.vue +51 -59
- package/app/components/panels/inspector/ServiceTestSecrets.vue +5 -5
- package/app/components/panels/inspector/ServiceTestingContext.vue +3 -3
- package/app/components/panels/inspector/ServiceValidationConfig.vue +2 -2
- package/app/components/panels/inspector/TaskAgentConfig.vue +3 -3
- package/app/components/panels/inspector/TaskAprioriBranches.vue +8 -5
- package/app/components/panels/inspector/TaskDependencies.vue +1 -1
- package/app/components/panels/inspector/TaskEstimateBadge.vue +11 -11
- package/app/components/panels/inspector/TaskExecution.vue +17 -17
- package/app/components/panels/inspector/TaskReviewTarget.vue +2 -2
- package/app/components/panels/inspector/TaskRunSettings.vue +35 -37
- package/app/components/panels/inspector/TaskStructure.vue +3 -3
- package/app/components/pipeline/AgentKindIcon.vue +1 -1
- package/app/components/pipeline/AgentPromptEditor.vue +17 -17
- package/app/components/pipeline/BinaryOutputStepPicker.vue +42 -56
- package/app/components/pipeline/EstimateThresholdFields.vue +4 -4
- package/app/components/pipeline/GateConfigFields.vue +13 -10
- package/app/components/pipeline/IterationCapPrompt.vue +4 -2
- package/app/components/pipeline/PipelineBuilder.vue +47 -55
- package/app/components/pipeline/PipelineHealthModal.vue +27 -29
- package/app/components/pipeline/PipelinePicker.vue +10 -10
- package/app/components/pipeline/PipelinePreview.vue +10 -10
- package/app/components/pipeline/PipelineProgress.vue +64 -67
- package/app/components/prReview/PrReviewPhaseBadge.vue +7 -7
- package/app/components/prReview/PrReviewWindow.vue +75 -77
- package/app/components/providers/AiPresetMismatchDialog.vue +5 -5
- package/app/components/providers/AiProviderOnboardingModal.vue +9 -9
- package/app/components/providers/ApiKeysSection.vue +13 -13
- package/app/components/providers/PersonalCredentialModal.vue +2 -2
- package/app/components/providers/PersonalSubscriptionSection.vue +10 -10
- package/app/components/providers/SignInRequiredNotice.vue +1 -1
- package/app/components/providers/VendorCredentialsModal.vue +10 -10
- package/app/components/provisioning/ProvisioningLogsDrawer.vue +13 -13
- package/app/components/ralph/RalphLoopResultView.vue +28 -30
- package/app/components/recurring/RecurrenceEditor.vue +2 -2
- package/app/components/requirements/RequirementsReviewWindow.vue +51 -58
- package/app/components/riskPolicy/RiskPolicyPicker.vue +12 -15
- package/app/components/riskPolicy/RiskPolicyPreview.vue +14 -14
- package/app/components/sandbox/SandboxPanel.vue +58 -59
- package/app/components/settings/AccountSettingsPanel.vue +1 -1
- package/app/components/settings/ApiTokensPanel.vue +10 -10
- package/app/components/settings/BudgetSettings.vue +18 -22
- package/app/components/settings/CapabilityCredentialsPanel.vue +15 -15
- package/app/components/settings/CloudflareHandlerSection.vue +20 -20
- package/app/components/settings/ComposeEnvironmentSetupSection.vue +13 -13
- package/app/components/settings/ConnectionTestVerdict.vue +3 -3
- package/app/components/settings/ConnectionWarnings.vue +1 -1
- package/app/components/settings/ConsensusGroupsSection.vue +27 -35
- package/app/components/settings/CustomManifestTypeEditor.vue +10 -10
- package/app/components/settings/DefaultProvisionTypeSection.vue +6 -6
- package/app/components/settings/InfraHandlersConfigurator.vue +24 -22
- package/app/components/settings/InfrastructureBackendPicker.vue +6 -6
- package/app/components/settings/InfrastructureWindow.vue +5 -5
- package/app/components/settings/IssueTrackerPanel.vue +29 -23
- package/app/components/settings/KubernetesEngineForm.vue +11 -11
- package/app/components/settings/KubernetesEnvironmentForm.vue +4 -4
- package/app/components/settings/LocalContainerPoolSettings.vue +6 -11
- package/app/components/settings/LocalModelEndpointsPanel.vue +20 -18
- package/app/components/settings/McpAuthorizeScreen.vue +13 -15
- package/app/components/settings/McpOAuthCallbackScreen.vue +16 -10
- package/app/components/settings/MergeClassRulesEditor.vue +6 -9
- package/app/components/settings/MergeRolePolicyEditor.vue +16 -16
- package/app/components/settings/ModelConfigurationPanel.vue +23 -30
- package/app/components/settings/ModelPresetHealthModal.vue +15 -13
- package/app/components/settings/ObservabilityConnectionPanel.vue +4 -4
- package/app/components/settings/OpenRouterCatalogPanel.vue +23 -19
- package/app/components/settings/PackageRegistriesPanel.vue +8 -8
- package/app/components/settings/ProviderConnectionTab.vue +8 -11
- package/app/components/settings/ProviderManifestEditor.vue +9 -9
- package/app/components/settings/ProviderPreferenceEditor.vue +8 -8
- package/app/components/settings/RiskPolicyCreateForm.vue +10 -10
- package/app/components/settings/RiskPolicyEditorRow.vue +14 -14
- package/app/components/settings/RiskPolicyHealthModal.vue +15 -13
- package/app/components/settings/RiskPolicyInheritedRow.vue +1 -1
- package/app/components/settings/RiskPolicyPanel.vue +10 -15
- package/app/components/settings/ServiceFragmentDefaultsPanel.vue +7 -7
- package/app/components/settings/SharedStacksPanel.vue +9 -12
- package/app/components/settings/TaskSourceCard.vue +4 -4
- package/app/components/settings/TaskTypeSuppressionsPanel.vue +6 -6
- package/app/components/settings/ToolServerChecklist.vue +36 -29
- package/app/components/settings/UsageSettings.vue +15 -15
- package/app/components/settings/UserSecretsSection.vue +9 -12
- package/app/components/settings/WorkspaceMetadataSettings.vue +5 -5
- package/app/components/settings/WorkspaceSettingsPanel.vue +47 -47
- package/app/components/skills/ReviewSkillQueue.vue +10 -10
- package/app/components/skills/SkillLibraryManager.vue +23 -20
- package/app/components/slack/SlackPanel.vue +13 -17
- package/app/components/spec/ServiceSpecWindow.vue +45 -42
- package/app/components/tasks/BugHuntModal.vue +24 -27
- package/app/components/tasks/ContextIssuePicker.vue +11 -11
- package/app/components/tasks/TaskContextIssues.vue +3 -3
- package/app/components/tasks/TaskImportModal.vue +7 -7
- package/app/components/tasks/TaskSourceConnectModal.vue +10 -8
- package/app/components/testing/TestReportWindow.vue +99 -82
- package/app/components/theme/ThemeImportModal.vue +115 -0
- package/app/components/tutorial/TutorialCatalogue.vue +9 -9
- package/app/components/tutorial/TutorialNudge.vue +5 -5
- package/app/components/tutorial/TutorialOverlay.vue +12 -12
- package/app/components/tutorial/TutorialPrompt.vue +6 -9
- package/app/components/vcs/GitLabConnect.vue +4 -4
- package/app/components/vcs/VcsConnectSurfaces.vue +2 -2
- package/app/components/visualConfirm/VisualConfirmationWindow.vue +36 -36
- package/app/composables/api/client.ts +6 -1
- package/app/composables/usePipelineErrorToast.ts +17 -0
- package/app/modular/agent-kinds.ts +24 -0
- package/app/pages/index.vue +5 -5
- package/app/plugins/theme.client.ts +125 -0
- package/app/spa-loading-template.html +52 -14
- package/app/stores/agents.ts +1 -1
- package/app/stores/theme.spec.ts +56 -0
- package/app/stores/theme.ts +87 -0
- package/app/types/domain.ts +19 -0
- package/app/types/execution.ts +4 -0
- package/app/utils/agentOutput.ts +1 -1
- package/app/utils/binaryOutput.ts +6 -6
- package/app/utils/bootstrapSteps.ts +14 -14
- package/app/utils/catalog.ts +87 -83
- package/app/utils/colorTint.ts +10 -0
- package/app/utils/failureKinds.ts +1 -0
- package/app/utils/observability.ts +3 -3
- package/app/utils/pipelineRender.ts +13 -17
- package/app/utils/swimlanes.ts +4 -4
- package/app/utils/theme/bootPalette.spec.ts +54 -0
- package/app/utils/theme/bootPalette.ts +108 -0
- package/app/utils/theme/builtins.spec.ts +38 -0
- package/app/utils/theme/builtins.ts +55 -0
- package/app/utils/theme/css.ts +162 -0
- package/app/utils/theme/doc.ts +353 -0
- package/app/utils/theme/link.ts +93 -0
- package/app/utils/theme/presets.ts +509 -0
- package/app/utils/theme/theme.spec.ts +224 -0
- package/i18n/locales/de.json +61 -4
- package/i18n/locales/en.json +70 -4
- package/i18n/locales/es.json +61 -4
- package/i18n/locales/fr.json +61 -4
- package/i18n/locales/he.json +61 -4
- package/i18n/locales/it.json +61 -4
- package/i18n/locales/ja.json +61 -4
- package/i18n/locales/pl.json +61 -4
- package/i18n/locales/tr.json +61 -4
- package/i18n/locales/uk.json +61 -4
- package/nuxt.config.ts +37 -11
- package/package.json +10 -9
|
@@ -63,20 +63,20 @@ async function restore(serviceId: string) {
|
|
|
63
63
|
data-testid="foundational-suppressions"
|
|
64
64
|
>
|
|
65
65
|
<p class="text-sm font-medium">{{ title[props.kind] }}</p>
|
|
66
|
-
<p class="text-xs text-
|
|
66
|
+
<p class="text-xs text-dimmed">{{ intro[props.kind] }}</p>
|
|
67
67
|
<div
|
|
68
68
|
v-for="s in catalog.suppressions"
|
|
69
69
|
:key="s.id"
|
|
70
|
-
class="flex items-center gap-2 rounded-md border border-
|
|
70
|
+
class="flex items-center gap-2 rounded-md border border-default bg-default/40 p-3"
|
|
71
71
|
>
|
|
72
|
-
<UIcon name="i-lucide-eye-off" class="h-4 w-4 shrink-0 text-
|
|
72
|
+
<UIcon name="i-lucide-eye-off" class="h-4 w-4 shrink-0 text-dimmed" />
|
|
73
73
|
<div class="min-w-0 flex-1">
|
|
74
|
-
<p class="truncate text-sm text-
|
|
74
|
+
<p class="truncate text-sm text-toned">
|
|
75
75
|
{{ s.name || s.id }}
|
|
76
|
-
<code v-if="s.name" class="ms-1 text-[11px] text-
|
|
76
|
+
<code v-if="s.name" class="ms-1 text-[11px] text-dimmed">{{ s.id }}</code>
|
|
77
77
|
</p>
|
|
78
|
-
<p v-if="s.summary" class="text-xs text-
|
|
79
|
-
<p v-if="!s.inherited" class="text-[11px] text-
|
|
78
|
+
<p v-if="s.summary" class="text-xs text-dimmed">{{ s.summary }}</p>
|
|
79
|
+
<p v-if="!s.inherited" class="text-[11px] text-dimmed">
|
|
80
80
|
{{ t('foundational.suppressions.shadowsNothing') }}
|
|
81
81
|
</p>
|
|
82
82
|
</div>
|
|
@@ -219,30 +219,30 @@ async function disconnect() {
|
|
|
219
219
|
<!-- Unwired is stated, never offered as a form that would fail with a raw 503. -->
|
|
220
220
|
<div
|
|
221
221
|
v-if="catalog.serviceCatalogAvailable === false"
|
|
222
|
-
class="rounded-md border border-
|
|
222
|
+
class="rounded-md border border-default bg-default/40 p-3 text-sm text-muted"
|
|
223
223
|
>
|
|
224
224
|
{{ t('serviceCatalog.unavailable') }}
|
|
225
225
|
</div>
|
|
226
226
|
|
|
227
227
|
<template v-else>
|
|
228
|
-
<p class="text-sm text-
|
|
228
|
+
<p class="text-sm text-muted">{{ t('serviceCatalog.intro') }}</p>
|
|
229
229
|
|
|
230
230
|
<!-- The CONNECTED state, with what the last import concluded. `lastSyncMessage` is the
|
|
231
231
|
load-bearing line: it is what says a catalog is a PREFIX of the portal's estate. -->
|
|
232
232
|
<div
|
|
233
233
|
v-if="connection"
|
|
234
|
-
class="flex flex-col gap-2 rounded-md border border-
|
|
234
|
+
class="flex flex-col gap-2 rounded-md border border-default bg-default/40 p-3"
|
|
235
235
|
data-testid="service-catalog-connected"
|
|
236
236
|
>
|
|
237
237
|
<div class="flex flex-wrap items-center gap-2">
|
|
238
238
|
<UBadge :color="syncStatusColor" variant="subtle">{{ statusLabel }}</UBadge>
|
|
239
|
-
<span class="font-mono text-xs text-
|
|
240
|
-
<span class="text-xs text-
|
|
241
|
-
<span v-if="connection.lastSyncedAt" class="text-xs text-
|
|
239
|
+
<span class="font-mono text-xs text-toned">{{ connection.baseUrl }}</span>
|
|
240
|
+
<span class="text-xs text-dimmed">{{ authModeLabel(connection.authMode) }}</span>
|
|
241
|
+
<span v-if="connection.lastSyncedAt" class="text-xs text-dimmed">
|
|
242
242
|
{{ d(new Date(connection.lastSyncedAt), 'short') }}
|
|
243
243
|
</span>
|
|
244
244
|
</div>
|
|
245
|
-
<p class="text-xs text-
|
|
245
|
+
<p class="text-xs text-muted">
|
|
246
246
|
{{
|
|
247
247
|
t('serviceCatalog.summary', {
|
|
248
248
|
filter: connection.entityFilter.join(', '),
|
|
@@ -250,7 +250,7 @@ async function disconnect() {
|
|
|
250
250
|
})
|
|
251
251
|
}}
|
|
252
252
|
</p>
|
|
253
|
-
<p v-if="connection.lastSyncMessage" class="text-xs text-
|
|
253
|
+
<p v-if="connection.lastSyncMessage" class="text-xs text-app-warning-400">
|
|
254
254
|
{{ connection.lastSyncMessage }}
|
|
255
255
|
</p>
|
|
256
256
|
<div class="flex gap-2">
|
|
@@ -272,8 +272,8 @@ async function disconnect() {
|
|
|
272
272
|
|
|
273
273
|
<!-- The connect / re-connect form. Shown alongside a live connection too, because rotating
|
|
274
274
|
a token is the routine reason to come here. -->
|
|
275
|
-
<div class="flex flex-col gap-3 rounded-md border border-
|
|
276
|
-
<h4 class="text-sm font-medium text-
|
|
275
|
+
<div class="flex flex-col gap-3 rounded-md border border-default p-3">
|
|
276
|
+
<h4 class="text-sm font-medium text-default">
|
|
277
277
|
{{ connection ? t('serviceCatalog.form.replace') : t('serviceCatalog.form.connect') }}
|
|
278
278
|
</h4>
|
|
279
279
|
|
|
@@ -592,13 +592,13 @@ async function unlinkSource(id: string) {
|
|
|
592
592
|
would fail with a raw 503 — say so instead (any entry point lands here). -->
|
|
593
593
|
<div
|
|
594
594
|
v-if="library.available === false"
|
|
595
|
-
class="rounded-md border border-
|
|
595
|
+
class="rounded-md border border-default bg-default/40 p-3 text-sm text-muted"
|
|
596
596
|
>
|
|
597
597
|
{{ t('fragments.unavailable') }}
|
|
598
598
|
</div>
|
|
599
599
|
|
|
600
600
|
<template v-else>
|
|
601
|
-
<p class="text-sm text-
|
|
601
|
+
<p class="text-sm text-muted">
|
|
602
602
|
<template v-if="isWorkspace">
|
|
603
603
|
{{ t('fragments.intro.workspace') }}
|
|
604
604
|
</template>
|
|
@@ -626,7 +626,7 @@ async function unlinkSource(id: string) {
|
|
|
626
626
|
|
|
627
627
|
<!-- Resolved (merged) catalog — workspace scope only -->
|
|
628
628
|
<div v-if="tab === 'catalog'" class="flex flex-col gap-2">
|
|
629
|
-
<p class="text-xs text-
|
|
629
|
+
<p class="text-xs text-dimmed">
|
|
630
630
|
{{
|
|
631
631
|
t(
|
|
632
632
|
'fragments.catalog.summary',
|
|
@@ -638,10 +638,10 @@ async function unlinkSource(id: string) {
|
|
|
638
638
|
<div
|
|
639
639
|
v-for="f in library.resolved"
|
|
640
640
|
:key="f.id"
|
|
641
|
-
class="rounded-md border border-
|
|
641
|
+
class="rounded-md border border-default bg-default/60 p-3"
|
|
642
642
|
>
|
|
643
643
|
<div class="flex items-center gap-2">
|
|
644
|
-
<span class="font-medium text-
|
|
644
|
+
<span class="font-medium text-app-100">{{ f.title }}</span>
|
|
645
645
|
<UBadge size="xs" :color="tierColor[f.tier]" variant="subtle">
|
|
646
646
|
{{ tierLabel[f.tier] }}
|
|
647
647
|
</UBadge>
|
|
@@ -654,9 +654,9 @@ async function unlinkSource(id: string) {
|
|
|
654
654
|
>
|
|
655
655
|
{{ t('fragments.catalog.live', { source: f.documentRef.source }) }}
|
|
656
656
|
</UBadge>
|
|
657
|
-
<span class="ms-auto font-mono text-[11px] text-
|
|
657
|
+
<span class="ms-auto font-mono text-[11px] text-dimmed">{{ f.id }}</span>
|
|
658
658
|
</div>
|
|
659
|
-
<p class="mt-1 text-sm text-
|
|
659
|
+
<p class="mt-1 text-sm text-muted">{{ f.summary }}</p>
|
|
660
660
|
<div v-if="f.tags?.length" class="mt-1 flex flex-wrap gap-1">
|
|
661
661
|
<UBadge v-for="tag in f.tags" :key="tag" size="xs" variant="outline" color="neutral">
|
|
662
662
|
{{ tag }}
|
|
@@ -670,7 +670,7 @@ async function unlinkSource(id: string) {
|
|
|
670
670
|
<div
|
|
671
671
|
v-for="f in library.fragments"
|
|
672
672
|
:key="f.id"
|
|
673
|
-
class="rounded-md border border-
|
|
673
|
+
class="rounded-md border border-default bg-default/60 p-3"
|
|
674
674
|
>
|
|
675
675
|
<!-- Inline editor (hand-authored fragments): title / summary / body / tags, with the
|
|
676
676
|
same auto-generate-title button as the create form. -->
|
|
@@ -716,7 +716,7 @@ async function unlinkSource(id: string) {
|
|
|
716
716
|
:placeholder="t('fragments.authored.briefPlaceholder')"
|
|
717
717
|
:rows="2"
|
|
718
718
|
/>
|
|
719
|
-
<p class="text-xs text-
|
|
719
|
+
<p class="text-xs text-dimmed">{{ t('fragments.authored.briefHint') }}</p>
|
|
720
720
|
</div>
|
|
721
721
|
<UInput
|
|
722
722
|
v-model="editDraft.tags"
|
|
@@ -740,12 +740,12 @@ async function unlinkSource(id: string) {
|
|
|
740
740
|
<div v-else class="flex items-start gap-2">
|
|
741
741
|
<div class="min-w-0">
|
|
742
742
|
<div class="flex items-center gap-2">
|
|
743
|
-
<span class="font-medium text-
|
|
743
|
+
<span class="font-medium text-app-100">{{ f.title }}</span>
|
|
744
744
|
<UBadge v-if="f.source" size="xs" color="info" variant="subtle">{{
|
|
745
745
|
t('fragments.authored.fromRepo')
|
|
746
746
|
}}</UBadge>
|
|
747
747
|
</div>
|
|
748
|
-
<p class="text-sm text-
|
|
748
|
+
<p class="text-sm text-muted">{{ f.summary }}</p>
|
|
749
749
|
</div>
|
|
750
750
|
<div class="ms-auto flex gap-1">
|
|
751
751
|
<!-- Editing a repo-SOURCED fragment locally would be overwritten on the next sync,
|
|
@@ -769,7 +769,7 @@ async function unlinkSource(id: string) {
|
|
|
769
769
|
</div>
|
|
770
770
|
</div>
|
|
771
771
|
</div>
|
|
772
|
-
<p v-if="!library.fragments.length" class="text-sm text-
|
|
772
|
+
<p v-if="!library.fragments.length" class="text-sm text-dimmed">
|
|
773
773
|
{{
|
|
774
774
|
isWorkspace
|
|
775
775
|
? t('fragments.authored.empty.workspace')
|
|
@@ -777,7 +777,7 @@ async function unlinkSource(id: string) {
|
|
|
777
777
|
}}
|
|
778
778
|
</p>
|
|
779
779
|
|
|
780
|
-
<div class="rounded-md border border-
|
|
780
|
+
<div class="rounded-md border border-default p-3">
|
|
781
781
|
<p class="mb-2 text-sm font-medium">{{ t('fragments.authored.addTitle') }}</p>
|
|
782
782
|
<div class="flex flex-col gap-2">
|
|
783
783
|
<div class="flex gap-2">
|
|
@@ -822,7 +822,7 @@ async function unlinkSource(id: string) {
|
|
|
822
822
|
:placeholder="t('fragments.authored.briefPlaceholder')"
|
|
823
823
|
:rows="2"
|
|
824
824
|
/>
|
|
825
|
-
<p class="text-xs text-
|
|
825
|
+
<p class="text-xs text-dimmed">{{ t('fragments.authored.briefHint') }}</p>
|
|
826
826
|
</div>
|
|
827
827
|
<UInput v-model="draft.tags" :placeholder="t('fragments.authored.tagsPlaceholder')" />
|
|
828
828
|
<UButton
|
|
@@ -841,25 +841,25 @@ async function unlinkSource(id: string) {
|
|
|
841
841
|
|
|
842
842
|
<!-- Document-backed (living) fragments -->
|
|
843
843
|
<div v-else-if="tab === 'documents'" class="flex flex-col gap-3">
|
|
844
|
-
<p class="text-xs text-
|
|
844
|
+
<p class="text-xs text-dimmed">
|
|
845
845
|
{{ t('fragments.documents.intro') }}
|
|
846
846
|
</p>
|
|
847
847
|
|
|
848
848
|
<div
|
|
849
849
|
v-for="f in documentFragments"
|
|
850
850
|
:key="f.id"
|
|
851
|
-
class="flex items-start gap-2 rounded-md border border-
|
|
851
|
+
class="flex items-start gap-2 rounded-md border border-default bg-default/60 p-3"
|
|
852
852
|
>
|
|
853
|
-
<UIcon name="i-lucide-radio" class="mt-0.5 h-4 w-4 text-
|
|
853
|
+
<UIcon name="i-lucide-radio" class="mt-0.5 h-4 w-4 text-app-success-400" />
|
|
854
854
|
<div class="min-w-0">
|
|
855
855
|
<div class="flex items-center gap-2">
|
|
856
|
-
<span class="font-medium text-
|
|
856
|
+
<span class="font-medium text-app-100">{{ f.title }}</span>
|
|
857
857
|
<UBadge size="xs" color="success" variant="subtle">
|
|
858
858
|
{{ f.documentRef?.source }}
|
|
859
859
|
</UBadge>
|
|
860
860
|
</div>
|
|
861
|
-
<p class="text-sm text-
|
|
862
|
-
<p v-if="f.resolvedAt" class="text-[11px] text-
|
|
861
|
+
<p class="text-sm text-muted">{{ f.summary }}</p>
|
|
862
|
+
<p v-if="f.resolvedAt" class="text-[11px] text-dimmed">
|
|
863
863
|
{{
|
|
864
864
|
t('fragments.documents.lastResolved', { date: d(new Date(f.resolvedAt), 'long') })
|
|
865
865
|
}}
|
|
@@ -884,16 +884,16 @@ async function unlinkSource(id: string) {
|
|
|
884
884
|
/>
|
|
885
885
|
</div>
|
|
886
886
|
</div>
|
|
887
|
-
<p v-if="!documentFragments.length" class="text-sm text-
|
|
887
|
+
<p v-if="!documentFragments.length" class="text-sm text-dimmed">
|
|
888
888
|
{{ t('fragments.documents.empty') }}
|
|
889
889
|
</p>
|
|
890
890
|
|
|
891
|
-
<div class="rounded-md border border-
|
|
891
|
+
<div class="rounded-md border border-default p-3">
|
|
892
892
|
<p class="mb-2 text-sm font-medium">{{ t('fragments.documents.linkTitle') }}</p>
|
|
893
|
-
<div v-if="docLinkDisabled" class="text-sm text-
|
|
893
|
+
<div v-if="docLinkDisabled" class="text-sm text-dimmed">
|
|
894
894
|
{{ t('fragments.documents.disabledHint') }}
|
|
895
895
|
</div>
|
|
896
|
-
<div v-else-if="!documents.connectedSources.length" class="text-sm text-
|
|
896
|
+
<div v-else-if="!documents.connectedSources.length" class="text-sm text-dimmed">
|
|
897
897
|
{{ t('fragments.documents.connectFirst') }}
|
|
898
898
|
</div>
|
|
899
899
|
<div v-else class="flex flex-col gap-2">
|
|
@@ -921,9 +921,9 @@ async function unlinkSource(id: string) {
|
|
|
921
921
|
<GitHubRepoSearchSelect v-model="docRepoId" @update:repo="docRepo = $event" />
|
|
922
922
|
<div
|
|
923
923
|
v-if="docRepoId !== undefined"
|
|
924
|
-
class="rounded-md border border-
|
|
924
|
+
class="rounded-md border border-default bg-default/40 p-2"
|
|
925
925
|
>
|
|
926
|
-
<p class="mb-2 text-xs text-
|
|
926
|
+
<p class="mb-2 text-xs text-muted">
|
|
927
927
|
{{ t('fragments.documents.githubBrowseHint') }}
|
|
928
928
|
</p>
|
|
929
929
|
<RepoTreeBrowser
|
|
@@ -936,18 +936,15 @@ async function unlinkSource(id: string) {
|
|
|
936
936
|
@toggle="toggleDocFile"
|
|
937
937
|
/>
|
|
938
938
|
<div v-if="stagedDocRefs.length" class="mt-2 space-y-1">
|
|
939
|
-
<p class="text-xs font-medium text-
|
|
939
|
+
<p class="text-xs font-medium text-muted">
|
|
940
940
|
{{ t('fragments.documents.selectedFiles', { count: stagedDocRefs.length }) }}
|
|
941
941
|
</p>
|
|
942
942
|
<div
|
|
943
943
|
v-for="staged in stagedDocRefs"
|
|
944
944
|
:key="staged.path"
|
|
945
|
-
class="flex items-center gap-1.5 rounded bg-
|
|
945
|
+
class="flex items-center gap-1.5 rounded bg-elevated/60 px-2 py-1 text-xs text-toned"
|
|
946
946
|
>
|
|
947
|
-
<UIcon
|
|
948
|
-
name="i-lucide-file-code-2"
|
|
949
|
-
class="h-3.5 w-3.5 shrink-0 text-indigo-400"
|
|
950
|
-
/>
|
|
947
|
+
<UIcon name="i-lucide-file-code-2" class="h-3.5 w-3.5 shrink-0 text-primary" />
|
|
951
948
|
<span class="truncate">{{ staged.path }}</span>
|
|
952
949
|
<UButton
|
|
953
950
|
class="ms-auto"
|
|
@@ -985,7 +982,7 @@ async function unlinkSource(id: string) {
|
|
|
985
982
|
</UButton>
|
|
986
983
|
<p
|
|
987
984
|
v-if="docLinkBlockedReason"
|
|
988
|
-
class="flex items-center gap-1 text-xs text-
|
|
985
|
+
class="flex items-center gap-1 text-xs text-dimmed"
|
|
989
986
|
data-testid="fragment-link-blocked-reason"
|
|
990
987
|
>
|
|
991
988
|
<UIcon name="i-lucide-info" class="h-3.5 w-3.5 shrink-0" />
|
|
@@ -1001,15 +998,15 @@ async function unlinkSource(id: string) {
|
|
|
1001
998
|
<div
|
|
1002
999
|
v-for="s in library.sources"
|
|
1003
1000
|
:key="s.id"
|
|
1004
|
-
class="flex items-center gap-2 rounded-md border border-
|
|
1001
|
+
class="flex items-center gap-2 rounded-md border border-default bg-default/60 p-3"
|
|
1005
1002
|
>
|
|
1006
|
-
<UIcon name="i-lucide-git-branch" class="h-4 w-4 text-
|
|
1003
|
+
<UIcon name="i-lucide-git-branch" class="h-4 w-4 text-muted" />
|
|
1007
1004
|
<div class="min-w-0">
|
|
1008
|
-
<span class="font-mono text-sm text-
|
|
1005
|
+
<span class="font-mono text-sm text-app-100">
|
|
1009
1006
|
{{ s.repoOwner }}/{{ s.repoName
|
|
1010
|
-
}}<span class="text-
|
|
1007
|
+
}}<span class="text-dimmed">/{{ s.dirPath || '' }}</span>
|
|
1011
1008
|
</span>
|
|
1012
|
-
<p class="text-xs text-
|
|
1009
|
+
<p class="text-xs text-dimmed">
|
|
1013
1010
|
{{
|
|
1014
1011
|
s.lastSyncedAt
|
|
1015
1012
|
? t('fragments.sources.metaSynced', { ref: s.gitRef })
|
|
@@ -1051,11 +1048,11 @@ async function unlinkSource(id: string) {
|
|
|
1051
1048
|
/>
|
|
1052
1049
|
</div>
|
|
1053
1050
|
</div>
|
|
1054
|
-
<p v-if="!library.sources.length" class="text-sm text-
|
|
1051
|
+
<p v-if="!library.sources.length" class="text-sm text-dimmed">
|
|
1055
1052
|
{{ t('fragments.sources.empty') }}
|
|
1056
1053
|
</p>
|
|
1057
1054
|
|
|
1058
|
-
<div class="rounded-md border border-
|
|
1055
|
+
<div class="rounded-md border border-default p-3">
|
|
1059
1056
|
<p class="mb-2 text-sm font-medium">{{ t('fragments.sources.linkTitle') }}</p>
|
|
1060
1057
|
<div class="flex flex-col gap-2">
|
|
1061
1058
|
<!-- Connected: search a repo + browse to the guideline directory -->
|
|
@@ -1063,16 +1060,16 @@ async function unlinkSource(id: string) {
|
|
|
1063
1060
|
<GitHubRepoSearchSelect v-model="sourceRepoId" @update:repo="sourceRepo = $event" />
|
|
1064
1061
|
<div
|
|
1065
1062
|
v-if="sourceRepoId !== undefined"
|
|
1066
|
-
class="rounded-md border border-
|
|
1063
|
+
class="rounded-md border border-default bg-default/40 p-2"
|
|
1067
1064
|
>
|
|
1068
|
-
<p class="mb-2 text-xs text-
|
|
1065
|
+
<p class="mb-2 text-xs text-muted">
|
|
1069
1066
|
{{ t('fragments.sources.browseHint') }}
|
|
1070
1067
|
</p>
|
|
1071
1068
|
<RepoTreeBrowser v-model="sourceDir" :repo-github-id="sourceRepoId" mode="dir" />
|
|
1072
|
-
<p class="mt-2 truncate text-xs text-
|
|
1069
|
+
<p class="mt-2 truncate text-xs text-muted">
|
|
1073
1070
|
<template v-if="sourceDir">
|
|
1074
1071
|
{{ t('fragments.sources.selectedDir') }}
|
|
1075
|
-
<code class="text-
|
|
1072
|
+
<code class="text-default">{{ sourceDir }}</code>
|
|
1076
1073
|
</template>
|
|
1077
1074
|
<template v-else>{{ t('fragments.sources.wholeRepo') }}</template>
|
|
1078
1075
|
</p>
|
|
@@ -76,7 +76,7 @@ function manageAccount() {
|
|
|
76
76
|
<template>
|
|
77
77
|
<div>
|
|
78
78
|
<div class="mb-1 flex items-center justify-between gap-2">
|
|
79
|
-
<span v-if="label" class="text-[11px] font-semibold uppercase tracking-wide text-
|
|
79
|
+
<span v-if="label" class="text-[11px] font-semibold uppercase tracking-wide text-muted">
|
|
80
80
|
{{ label }}
|
|
81
81
|
</span>
|
|
82
82
|
<span v-else />
|
|
@@ -99,7 +99,7 @@ function manageAccount() {
|
|
|
99
99
|
<template v-if="categoryGroups.length">
|
|
100
100
|
<div v-for="group in categoryGroups" :key="group.category">
|
|
101
101
|
<p
|
|
102
|
-
class="px-2 pb-0.5 pt-1.5 text-[11px] font-semibold uppercase tracking-wide text-
|
|
102
|
+
class="px-2 pb-0.5 pt-1.5 text-[11px] font-semibold uppercase tracking-wide text-dimmed"
|
|
103
103
|
>
|
|
104
104
|
{{ group.category }}
|
|
105
105
|
</p>
|
|
@@ -107,8 +107,8 @@ function manageAccount() {
|
|
|
107
107
|
v-for="f in group.fragments"
|
|
108
108
|
:key="f.id"
|
|
109
109
|
type="button"
|
|
110
|
-
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start text-sm hover:bg-
|
|
111
|
-
:class="selectedSet.has(f.id) ? 'text-
|
|
110
|
+
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start text-sm hover:bg-elevated/60"
|
|
111
|
+
:class="selectedSet.has(f.id) ? 'text-app-100' : 'text-toned'"
|
|
112
112
|
:title="f.summary"
|
|
113
113
|
:data-testid="`fragment-option-${f.id}`"
|
|
114
114
|
:aria-pressed="selectedSet.has(f.id)"
|
|
@@ -117,38 +117,38 @@ function manageAccount() {
|
|
|
117
117
|
<UIcon
|
|
118
118
|
:name="selectedSet.has(f.id) ? 'i-lucide-check' : 'i-lucide-plus'"
|
|
119
119
|
class="h-4 w-4 shrink-0"
|
|
120
|
-
:class="selectedSet.has(f.id) ? 'text-primary
|
|
120
|
+
:class="selectedSet.has(f.id) ? 'text-primary' : 'text-dimmed'"
|
|
121
121
|
/>
|
|
122
122
|
<span class="flex-1 truncate">{{ f.title }}</span>
|
|
123
123
|
</button>
|
|
124
124
|
</div>
|
|
125
125
|
</template>
|
|
126
|
-
<p v-else class="px-2 py-3 text-[12px] text-
|
|
126
|
+
<p v-else class="px-2 py-3 text-[12px] text-dimmed">
|
|
127
127
|
{{ t('inspector.fragments.pickerEmpty') }}
|
|
128
128
|
</p>
|
|
129
129
|
|
|
130
|
-
<div class="mt-1 border-t border-
|
|
130
|
+
<div class="mt-1 border-t border-default pt-1">
|
|
131
131
|
<button
|
|
132
132
|
type="button"
|
|
133
|
-
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start text-sm text-
|
|
133
|
+
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start text-sm text-toned hover:bg-elevated/60"
|
|
134
134
|
@click="manageBoard"
|
|
135
135
|
>
|
|
136
|
-
<UIcon name="i-lucide-book-marked" class="h-4 w-4 shrink-0 text-
|
|
136
|
+
<UIcon name="i-lucide-book-marked" class="h-4 w-4 shrink-0 text-muted" />
|
|
137
137
|
<span class="flex-1 truncate">{{ t('inspector.fragments.manageBoard') }}</span>
|
|
138
138
|
</button>
|
|
139
139
|
<button
|
|
140
140
|
v-if="accounts.enabled"
|
|
141
141
|
type="button"
|
|
142
|
-
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start text-sm text-
|
|
142
|
+
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start text-sm text-toned hover:bg-elevated/60"
|
|
143
143
|
@click="manageAccount"
|
|
144
144
|
>
|
|
145
|
-
<UIcon name="i-lucide-users" class="h-4 w-4 shrink-0 text-
|
|
145
|
+
<UIcon name="i-lucide-users" class="h-4 w-4 shrink-0 text-muted" />
|
|
146
146
|
<span class="flex-1 truncate">{{ t('inspector.fragments.manageAccount') }}</span>
|
|
147
147
|
</button>
|
|
148
148
|
</div>
|
|
149
149
|
</div>
|
|
150
150
|
|
|
151
|
-
<div class="flex justify-end border-t border-
|
|
151
|
+
<div class="flex justify-end border-t border-default p-1.5">
|
|
152
152
|
<UButton
|
|
153
153
|
size="xs"
|
|
154
154
|
color="neutral"
|
|
@@ -178,7 +178,7 @@ function manageAccount() {
|
|
|
178
178
|
{{ f.title }}<UIcon name="i-lucide-x" class="ms-0.5 h-3 w-3" />
|
|
179
179
|
</UBadge>
|
|
180
180
|
</div>
|
|
181
|
-
<div v-else-if="emptyText" class="text-[11px] text-
|
|
181
|
+
<div v-else-if="emptyText" class="text-[11px] text-dimmed">
|
|
182
182
|
{{ emptyText }}
|
|
183
183
|
</div>
|
|
184
184
|
</div>
|
|
@@ -76,7 +76,7 @@ async function importUrl() {
|
|
|
76
76
|
{{ t('fragments.documents.urlImport.action') }}
|
|
77
77
|
</UButton>
|
|
78
78
|
</div>
|
|
79
|
-
<p v-if="error" class="text-xs text-
|
|
79
|
+
<p v-if="error" class="text-xs text-app-error-400" data-testid="fragment-url-import-error">
|
|
80
80
|
{{ error }}
|
|
81
81
|
</p>
|
|
82
82
|
</div>
|
|
@@ -23,12 +23,12 @@ const { t } = useI18n()
|
|
|
23
23
|
:key="`${c.name}-${i}`"
|
|
24
24
|
class="flex items-center"
|
|
25
25
|
:class="
|
|
26
|
-
dense ? 'gap-1.5' : 'gap-2 rounded-md border border-
|
|
26
|
+
dense ? 'gap-1.5' : 'gap-2 rounded-md border border-default bg-app-950/40 px-3 py-1.5'
|
|
27
27
|
"
|
|
28
28
|
>
|
|
29
29
|
<UIcon
|
|
30
30
|
name="i-lucide-circle-x"
|
|
31
|
-
class="shrink-0 text-
|
|
31
|
+
class="shrink-0 text-app-error-400"
|
|
32
32
|
:class="dense ? 'h-3 w-3' : 'h-3.5 w-3.5'"
|
|
33
33
|
/>
|
|
34
34
|
<a
|
|
@@ -36,7 +36,7 @@ const { t } = useI18n()
|
|
|
36
36
|
:href="c.url"
|
|
37
37
|
target="_blank"
|
|
38
38
|
rel="noopener"
|
|
39
|
-
class="group min-w-0 flex-1 truncate text-
|
|
39
|
+
class="group min-w-0 flex-1 truncate text-app-info-300 hover:text-app-info-200 hover:underline"
|
|
40
40
|
:class="dense ? 'text-[12px]' : 'text-[13px]'"
|
|
41
41
|
:title="t('gates.ci.openOnGithub', { name: c.name })"
|
|
42
42
|
>
|
|
@@ -49,11 +49,11 @@ const { t } = useI18n()
|
|
|
49
49
|
<span
|
|
50
50
|
v-else
|
|
51
51
|
class="min-w-0 flex-1 truncate"
|
|
52
|
-
:class="dense ? 'text-[12px] text-
|
|
52
|
+
:class="dense ? 'text-[12px] text-toned' : 'text-[13px] text-default'"
|
|
53
53
|
>{{ c.name }}</span
|
|
54
54
|
>
|
|
55
55
|
<span
|
|
56
|
-
class="shrink-0 uppercase text-
|
|
56
|
+
class="shrink-0 uppercase text-app-error-300"
|
|
57
57
|
:class="dense ? 'text-[10px]' : 'text-[11px]'"
|
|
58
58
|
>{{ c.conclusion ?? t('gates.ci.conclusionFallback') }}</span
|
|
59
59
|
>
|