@cat-factory/app 0.315.3 → 0.315.4
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 +25 -4
- package/app/components/assistant/AssistantModal.vue +3 -2
- package/app/components/board/AddTaskModal.vue +3 -2
- package/app/components/board/CreateInitiativeModal.vue +3 -2
- package/app/components/board/RecurringPipelineModal.vue +3 -2
- package/app/components/board/ReviewFrictionDialog.vue +4 -3
- package/app/components/bootstrap/AdoptionReviewModal.vue +2 -0
- package/app/components/bootstrap/BootstrapModal.vue +3 -2
- package/app/components/common/AppModal.vue +50 -0
- package/app/components/common/ConfirmDialog.vue +5 -3
- package/app/components/common/KeyboardShortcutsHelp.vue +6 -4
- package/app/components/documents/DocumentImportModal.vue +3 -2
- package/app/components/documents/DocumentSourceConnectModal.vue +7 -2
- package/app/components/documents/DocumentTemplatesModal.vue +3 -2
- package/app/components/documents/SpawnPreviewModal.vue +3 -2
- package/app/components/documents/StartFromDesignModal.vue +3 -2
- package/app/components/environments/EnvironmentSetupWizard.vue +2 -0
- package/app/components/foundational/FoundationalServicePanel.vue +2 -0
- package/app/components/fragments/FragmentLibraryPanel.vue +2 -0
- package/app/components/github/AddServiceFromRepoModal.vue +3 -2
- package/app/components/github/GitHubPanel.vue +3 -2
- package/app/components/layout/BoardSwitcher.vue +7 -2
- package/app/components/layout/CommandBar.vue +3 -2
- package/app/components/layout/IntegrationsHub.vue +3 -6
- package/app/components/layout/ModelProvidersHub.vue +3 -6
- package/app/components/layout/PersonalSetupModal.vue +3 -6
- package/app/components/layout/RolePrompt.vue +3 -2
- package/app/components/notifications/NotificationSettingsPanel.vue +3 -6
- package/app/components/panels/DecisionModal.vue +3 -2
- package/app/components/panels/inspector/ServiceTestConfig.vue +4 -2
- package/app/components/pipeline/AgentPromptEditor.vue +2 -0
- package/app/components/pipeline/PipelineBuilder.vue +7 -2
- package/app/components/pipeline/PipelineHealthModal.vue +3 -2
- package/app/components/providers/AiPresetMismatchDialog.vue +3 -6
- package/app/components/providers/AiProviderOnboardingModal.vue +3 -6
- package/app/components/providers/PersonalCredentialModal.vue +3 -2
- package/app/components/providers/VendorCredentialsModal.vue +3 -6
- package/app/components/queue/DescribeWorkModal.vue +3 -2
- package/app/components/sandbox/SandboxPanel.vue +2 -0
- package/app/components/settings/AccountSettingsPanel.vue +1 -0
- package/app/components/settings/ApiTokensPanel.vue +3 -2
- package/app/components/settings/InfrastructureWindow.vue +3 -6
- package/app/components/settings/LocalModelEndpointsPanel.vue +3 -6
- package/app/components/settings/ModelPresetHealthModal.vue +3 -2
- package/app/components/settings/ObservabilityConnectionPanel.vue +3 -6
- package/app/components/settings/OpenRouterCatalogPanel.vue +3 -2
- package/app/components/settings/RiskPolicyHealthModal.vue +3 -2
- package/app/components/settings/UserSecretsSection.vue +3 -6
- package/app/components/settings/WorkspaceSettingsPanel.vue +1 -0
- package/app/components/setup/SetupChecklistPanel.vue +3 -2
- package/app/components/slack/SlackPanel.vue +3 -2
- package/app/components/tasks/BugHuntModal.vue +2 -0
- package/app/components/tasks/TaskImportModal.vue +3 -2
- package/app/components/tasks/TaskSourceConnectModal.vue +3 -2
- package/app/components/theme/ThemeImportModal.vue +4 -2
- package/app/components/tutorial/TutorialCatalogue.vue +4 -3
- package/app/components/tutorial/TutorialPrompt.vue +3 -2
- package/app/utils/overlaySize.ts +22 -0
- package/package.json +1 -1
|
@@ -19,6 +19,7 @@ import ContextIssuePicker from '~/components/tasks/ContextIssuePicker.vue'
|
|
|
19
19
|
import IntegrationBackTitle from '~/components/layout/IntegrationBackTitle.vue'
|
|
20
20
|
import SectionLabel from '~/components/common/SectionLabel.vue'
|
|
21
21
|
import EmptyState from '~/components/common/EmptyState.vue'
|
|
22
|
+
import AppModal from '~/components/common/AppModal.vue'
|
|
22
23
|
|
|
23
24
|
const { t } = useI18n()
|
|
24
25
|
const ui = useUiStore()
|
|
@@ -120,7 +121,7 @@ async function doSpawnEpic() {
|
|
|
120
121
|
</script>
|
|
121
122
|
|
|
122
123
|
<template>
|
|
123
|
-
<
|
|
124
|
+
<AppModal size="form" v-model:open="open" :title="title">
|
|
124
125
|
<template #title>
|
|
125
126
|
<IntegrationBackTitle :title="title" @back="back" />
|
|
126
127
|
</template>
|
|
@@ -215,5 +216,5 @@ async function doSpawnEpic() {
|
|
|
215
216
|
</div>
|
|
216
217
|
</div>
|
|
217
218
|
</template>
|
|
218
|
-
</
|
|
219
|
+
</AppModal>
|
|
219
220
|
</template>
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// available (Jira connected / the GitHub App installed) — there is nothing to offer
|
|
13
13
|
// before that.
|
|
14
14
|
import IntegrationBackTitle from '~/components/layout/IntegrationBackTitle.vue'
|
|
15
|
+
import AppModal from '~/components/common/AppModal.vue'
|
|
15
16
|
|
|
16
17
|
const { t } = useI18n()
|
|
17
18
|
const ui = useUiStore()
|
|
@@ -116,7 +117,7 @@ async function toggleEnabled(enabled: boolean) {
|
|
|
116
117
|
</script>
|
|
117
118
|
|
|
118
119
|
<template>
|
|
119
|
-
<
|
|
120
|
+
<AppModal size="form" v-model:open="open" :title="descriptor?.label ?? t('tasks.connect.title')">
|
|
120
121
|
<template #title>
|
|
121
122
|
<IntegrationBackTitle :title="descriptor?.label ?? t('tasks.connect.title')" @back="back" />
|
|
122
123
|
</template>
|
|
@@ -212,5 +213,5 @@ async function toggleEnabled(enabled: boolean) {
|
|
|
212
213
|
</div>
|
|
213
214
|
</div>
|
|
214
215
|
</template>
|
|
215
|
-
</
|
|
216
|
+
</AppModal>
|
|
216
217
|
</template>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { computed, ref, watch } from 'vue'
|
|
3
3
|
import { useThemeStore } from '~/stores/theme'
|
|
4
4
|
import { decodeThemeLink, type ThemeLinkDecodeResult } from '~/utils/theme/link'
|
|
5
|
+
import AppModal from '~/components/common/AppModal.vue'
|
|
5
6
|
|
|
6
7
|
// Import a theme built in the Nuxt UI theme editor (https://ui.nuxt.com/theme): the user pastes
|
|
7
8
|
// the editor's share link (or the raw document JSON), names it, and the theme is stored in this
|
|
@@ -60,7 +61,8 @@ async function submit() {
|
|
|
60
61
|
</script>
|
|
61
62
|
|
|
62
63
|
<template>
|
|
63
|
-
<
|
|
64
|
+
<AppModal
|
|
65
|
+
size="prompt"
|
|
64
66
|
v-model:open="open"
|
|
65
67
|
:title="t('appearance.import.title')"
|
|
66
68
|
:description="t('appearance.import.description')"
|
|
@@ -111,5 +113,5 @@ async function submit() {
|
|
|
111
113
|
</div>
|
|
112
114
|
</UForm>
|
|
113
115
|
</template>
|
|
114
|
-
</
|
|
116
|
+
</AppModal>
|
|
115
117
|
</template>
|
|
@@ -14,6 +14,7 @@ import { buildCatalogueRows, summarizeProgress } from './TutorialCatalogue.logic
|
|
|
14
14
|
import type { TutorialCatalogueRow } from './TutorialCatalogue.logic'
|
|
15
15
|
import { TUTORIAL_ACTION_KEYS, TUTORIAL_STATUS_KEYS } from '~/utils/tutorial'
|
|
16
16
|
import EmptyState from '~/components/common/EmptyState.vue'
|
|
17
|
+
import AppModal from '~/components/common/AppModal.vue'
|
|
17
18
|
|
|
18
19
|
const { t } = useI18n()
|
|
19
20
|
const tutorial = useTutorialStore()
|
|
@@ -51,11 +52,11 @@ const statusColor = (row: TutorialCatalogueRow) =>
|
|
|
51
52
|
</script>
|
|
52
53
|
|
|
53
54
|
<template>
|
|
54
|
-
<
|
|
55
|
+
<AppModal
|
|
56
|
+
size="form"
|
|
55
57
|
v-model:open="open"
|
|
56
58
|
:title="t('tutorial.catalogue.title')"
|
|
57
59
|
:description="t('tutorial.catalogue.intro')"
|
|
58
|
-
:ui="{ content: 'max-w-2xl' }"
|
|
59
60
|
>
|
|
60
61
|
<template #body>
|
|
61
62
|
<div class="space-y-4" data-testid="tutorial-catalogue">
|
|
@@ -162,5 +163,5 @@ const statusColor = (row: TutorialCatalogueRow) =>
|
|
|
162
163
|
</UButton>
|
|
163
164
|
</div>
|
|
164
165
|
</template>
|
|
165
|
-
</
|
|
166
|
+
</AppModal>
|
|
166
167
|
</template>
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
// prompt never auto-opens again), while closing without answering defers to next launch.
|
|
16
16
|
import { TUTORIAL_ACTION_KEYS } from '~/utils/tutorial'
|
|
17
17
|
import EmptyState from '~/components/common/EmptyState.vue'
|
|
18
|
+
import AppModal from '~/components/common/AppModal.vue'
|
|
18
19
|
|
|
19
20
|
const { t } = useI18n()
|
|
20
21
|
const tutorial = useTutorialStore()
|
|
@@ -34,7 +35,7 @@ const undecided = computed(() => tutorial.decision === null)
|
|
|
34
35
|
</script>
|
|
35
36
|
|
|
36
37
|
<template>
|
|
37
|
-
<
|
|
38
|
+
<AppModal size="prompt" v-model:open="open" :title="t('tutorial.prompt.title')">
|
|
38
39
|
<template #body>
|
|
39
40
|
<!-- NOTE for spec authors: this marks the modal's BODY, so it is the "prompt is
|
|
40
41
|
showing" signal, not a container for everything in the prompt. The footer's
|
|
@@ -125,5 +126,5 @@ const undecided = computed(() => tutorial.decision === null)
|
|
|
125
126
|
</div>
|
|
126
127
|
</div>
|
|
127
128
|
</template>
|
|
128
|
-
</
|
|
129
|
+
</AppModal>
|
|
129
130
|
</template>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The named overlay widths (#2251). A dialog names the KIND of content it holds, not a width:
|
|
3
|
+
*
|
|
4
|
+
* - `prompt` (448px): a confirmation, a decision, a short read, or a dialog with one or two fields.
|
|
5
|
+
* - `form` (576px): a form, a list or a hub to work through.
|
|
6
|
+
* - `wide` (672px): cards that each carry a paragraph and an action beside it, a row of tabs over
|
|
7
|
+
* a form, or three pickers side by side (the AI provider onboarding, the vendor credentials, the
|
|
8
|
+
* setup checklist, describe new work).
|
|
9
|
+
*
|
|
10
|
+
* A workbench surface (the sandbox, the agent prompt editor, the libraries
|
|
11
|
+
* and settings panels) is wider than `wide` on purpose and keeps its literal width until #2359
|
|
12
|
+
* decides its shell; it says so with a `workbench-width-ok:` comment that
|
|
13
|
+
* `scripts/check-frontend-geometry.mjs` reads. A `Record` over the union, so a new size fails to
|
|
14
|
+
* compile until it is mapped.
|
|
15
|
+
*/
|
|
16
|
+
export type OverlaySize = 'prompt' | 'form' | 'wide'
|
|
17
|
+
|
|
18
|
+
export const OVERLAY_WIDTH_CLASS: Record<OverlaySize, string> = {
|
|
19
|
+
prompt: 'max-w-md',
|
|
20
|
+
form: 'max-w-xl',
|
|
21
|
+
wide: 'max-w-2xl',
|
|
22
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.315.
|
|
3
|
+
"version": "0.315.4",
|
|
4
4
|
"description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|