@google/gemini-cli 0.27.0-preview.3 → 0.28.0-nightly.20260130.d43d772e6
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/dist/google-gemini-cli-0.28.0-nightly.20260128.adc8e11bb.tgz +0 -0
- package/dist/package.json +2 -2
- package/dist/src/commands/extensions/examples/themes-example/README.md +28 -0
- package/dist/src/commands/extensions/examples/themes-example/gemini-extension.json +29 -0
- package/dist/src/commands/extensions/update.js +9 -3
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/commands/extensions/update.test.js +26 -0
- package/dist/src/commands/extensions/update.test.js.map +1 -1
- package/dist/src/commands/mcp/add.js +4 -0
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/config/config.js +2 -2
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +1 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension-manager-themes.spec.js +196 -0
- package/dist/src/config/extension-manager-themes.spec.js.map +1 -0
- package/dist/src/config/extension-manager.d.ts +2 -0
- package/dist/src/config/extension-manager.js +14 -0
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extension.d.ts +6 -1
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +2 -1
- package/dist/src/config/keyBindings.js +13 -2
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/settings.js +13 -5
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settings.test.js +37 -17
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +10 -11
- package/dist/src/config/settingsSchema.js +13 -9
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/gemini.js +6 -3
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/nonInteractiveCli.js +4 -0
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCli.test.js +40 -0
- package/dist/src/nonInteractiveCli.test.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +4 -2
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/test-utils/createExtension.d.ts +3 -3
- package/dist/src/test-utils/createExtension.js +9 -2
- package/dist/src/test-utils/createExtension.js.map +1 -1
- package/dist/src/ui/AppContainer.js +48 -2
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +158 -3
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +2 -0
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.test.js +5 -0
- package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +4 -0
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.test.js +3 -0
- package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.js +50 -66
- package/dist/src/ui/commands/hooksCommand.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.test.js +61 -63
- package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.js +17 -0
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.test.js +18 -0
- package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
- package/dist/src/ui/components/AboutBox.js +10 -5
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AboutBox.test.js +5 -5
- package/dist/src/ui/components/AboutBox.test.js.map +1 -1
- package/dist/src/ui/components/AsciiArt.d.ts +0 -3
- package/dist/src/ui/components/AsciiArt.js +0 -36
- package/dist/src/ui/components/AsciiArt.js.map +1 -1
- package/dist/src/ui/components/Checklist.d.ts +14 -0
- package/dist/src/ui/components/Checklist.js +31 -0
- package/dist/src/ui/components/Checklist.js.map +1 -0
- package/dist/src/ui/components/Checklist.test.d.ts +6 -0
- package/dist/src/ui/components/Checklist.test.js +46 -0
- package/dist/src/ui/components/Checklist.test.js.map +1 -0
- package/dist/src/ui/components/ChecklistItem.d.ts +17 -0
- package/dist/src/ui/components/ChecklistItem.js +36 -0
- package/dist/src/ui/components/ChecklistItem.js.map +1 -0
- package/dist/src/ui/components/ChecklistItem.test.d.ts +6 -0
- package/dist/src/ui/components/ChecklistItem.test.js +38 -0
- package/dist/src/ui/components/ChecklistItem.test.js.map +1 -0
- package/dist/src/ui/components/Header.js +4 -6
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/Header.test.js +5 -26
- package/dist/src/ui/components/Header.test.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.d.ts +7 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +24 -18
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.test.js +75 -0
- package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.test.js +4 -2
- package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.d.ts +3 -0
- package/dist/src/ui/components/StatsDisplay.js +9 -2
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.test.js +46 -5
- package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +17 -25
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ToolConfirmationQueue.js +6 -6
- package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
- package/dist/src/ui/components/ToolConfirmationQueue.test.js +42 -0
- package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
- package/dist/src/ui/components/messages/Todo.js +11 -62
- package/dist/src/ui/components/messages/Todo.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js +5 -5
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +116 -47
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/triage/TriageDuplicates.js +4 -4
- package/dist/src/ui/components/triage/TriageDuplicates.js.map +1 -1
- package/dist/src/ui/constants/tips.js +2 -2
- package/dist/src/ui/constants/tips.js.map +1 -1
- package/dist/src/ui/constants.d.ts +1 -1
- package/dist/src/ui/constants.js +1 -1
- package/dist/src/ui/contexts/AskUserActionsContext.d.ts +1 -0
- package/dist/src/ui/contexts/AskUserActionsContext.js +1 -1
- package/dist/src/ui/contexts/AskUserActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.js +2 -0
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +2 -1
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +20 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +8 -1
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useHistoryManager.d.ts +2 -1
- package/dist/src/ui/hooks/useHistoryManager.js +2 -2
- package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
- package/dist/src/ui/hooks/useHistoryManager.test.js +32 -0
- package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -1
- package/dist/src/ui/hooks/useHookDisplayState.test.js +39 -19
- package/dist/src/ui/hooks/useHookDisplayState.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionResume.js +8 -0
- package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
- package/dist/src/ui/hooks/useSessionResume.test.js +64 -0
- package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +15 -4
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.d.ts +23 -2
- package/dist/src/ui/themes/theme-manager.js +108 -17
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.test.js +40 -0
- package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
- package/dist/src/ui/themes/theme.d.ts +2 -47
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/themes/theme.test.js +1 -4
- package/dist/src/ui/themes/theme.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +6 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +13 -6
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.test.d.ts +1 -0
- package/dist/src/ui/utils/TableRenderer.test.js +48 -0
- package/dist/src/ui/utils/TableRenderer.test.js.map +1 -0
- package/dist/src/utils/activityLogger.d.ts +5 -1
- package/dist/src/utils/activityLogger.js +8 -3
- package/dist/src/utils/activityLogger.js.map +1 -1
- package/dist/src/utils/gitUtils.js +22 -5
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/gitUtils.test.js +59 -0
- package/dist/src/utils/gitUtils.test.js.map +1 -1
- package/dist/src/utils/hookSettings.d.ts +30 -0
- package/dist/src/utils/hookSettings.js +114 -0
- package/dist/src/utils/hookSettings.js.map +1 -0
- package/dist/src/utils/hookSettings.test.d.ts +6 -0
- package/dist/src/utils/hookSettings.test.js +117 -0
- package/dist/src/utils/hookSettings.test.js.map +1 -0
- package/dist/src/utils/hookUtils.d.ts +12 -0
- package/dist/src/utils/hookUtils.js +51 -0
- package/dist/src/utils/hookUtils.js.map +1 -0
- package/dist/src/utils/hookUtils.test.d.ts +6 -0
- package/dist/src/utils/hookUtils.test.js +113 -0
- package/dist/src/utils/hookUtils.test.js.map +1 -0
- package/dist/src/utils/installationInfo.js +1 -1
- package/dist/src/utils/installationInfo.js.map +1 -1
- package/dist/src/utils/installationInfo.test.js +1 -1
- package/dist/src/utils/installationInfo.test.js.map +1 -1
- package/dist/src/utils/sessionCleanup.d.ts +14 -0
- package/dist/src/utils/sessionCleanup.js +106 -1
- package/dist/src/utils/sessionCleanup.js.map +1 -1
- package/dist/src/utils/sessionCleanup.test.js +12 -1
- package/dist/src/utils/sessionCleanup.test.js.map +1 -1
- package/dist/src/utils/toolOutputCleanup.test.d.ts +6 -0
- package/dist/src/utils/toolOutputCleanup.test.js +229 -0
- package/dist/src/utils/toolOutputCleanup.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/google-gemini-cli-0.27.0-preview.2.tgz +0 -0
- package/dist/src/config/skills-backward-compatibility.test.js +0 -99
- package/dist/src/config/skills-backward-compatibility.test.js.map +0 -1
- /package/dist/src/config/{skills-backward-compatibility.test.d.ts → extension-manager-themes.spec.d.ts} +0 -0
|
@@ -9,6 +9,15 @@ import {} from './types.js';
|
|
|
9
9
|
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
|
|
10
10
|
import { MessageType } from '../types.js';
|
|
11
11
|
import { formatDuration } from '../utils/formatters.js';
|
|
12
|
+
vi.mock('@google/gemini-cli-core', async (importOriginal) => {
|
|
13
|
+
const actual = await importOriginal();
|
|
14
|
+
return {
|
|
15
|
+
...actual,
|
|
16
|
+
UserAccountManager: vi.fn().mockImplementation(() => ({
|
|
17
|
+
getCachedGoogleAccount: vi.fn().mockReturnValue('mock@example.com'),
|
|
18
|
+
})),
|
|
19
|
+
};
|
|
20
|
+
});
|
|
12
21
|
describe('statsCommand', () => {
|
|
13
22
|
let mockContext;
|
|
14
23
|
const startTime = new Date('2025-07-14T10:00:00.000Z');
|
|
@@ -30,6 +39,9 @@ describe('statsCommand', () => {
|
|
|
30
39
|
expect(mockContext.ui.addItem).toHaveBeenCalledWith({
|
|
31
40
|
type: MessageType.STATS,
|
|
32
41
|
duration: expectedDuration,
|
|
42
|
+
selectedAuthType: '',
|
|
43
|
+
tier: undefined,
|
|
44
|
+
userEmail: 'mock@example.com',
|
|
33
45
|
});
|
|
34
46
|
});
|
|
35
47
|
it('should fetch and display quota if config is available', async () => {
|
|
@@ -37,13 +49,16 @@ describe('statsCommand', () => {
|
|
|
37
49
|
throw new Error('Command has no action');
|
|
38
50
|
const mockQuota = { buckets: [] };
|
|
39
51
|
const mockRefreshUserQuota = vi.fn().mockResolvedValue(mockQuota);
|
|
52
|
+
const mockGetUserTierName = vi.fn().mockReturnValue('Basic');
|
|
40
53
|
mockContext.services.config = {
|
|
41
54
|
refreshUserQuota: mockRefreshUserQuota,
|
|
55
|
+
getUserTierName: mockGetUserTierName,
|
|
42
56
|
};
|
|
43
57
|
await statsCommand.action(mockContext, '');
|
|
44
58
|
expect(mockRefreshUserQuota).toHaveBeenCalled();
|
|
45
59
|
expect(mockContext.ui.addItem).toHaveBeenCalledWith(expect.objectContaining({
|
|
46
60
|
quotas: mockQuota,
|
|
61
|
+
tier: 'Basic',
|
|
47
62
|
}));
|
|
48
63
|
});
|
|
49
64
|
it('should display model stats when using the "model" subcommand', () => {
|
|
@@ -54,6 +69,9 @@ describe('statsCommand', () => {
|
|
|
54
69
|
modelSubCommand.action(mockContext, '');
|
|
55
70
|
expect(mockContext.ui.addItem).toHaveBeenCalledWith({
|
|
56
71
|
type: MessageType.MODEL_STATS,
|
|
72
|
+
selectedAuthType: '',
|
|
73
|
+
tier: undefined,
|
|
74
|
+
userEmail: 'mock@example.com',
|
|
57
75
|
});
|
|
58
76
|
});
|
|
59
77
|
it('should display tool stats when using the "tools" subcommand', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statsCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/statsCommand.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAuB,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,WAA2B,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAErD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1B,qDAAqD;QACrD,WAAW,GAAG,wBAAwB,EAAE,CAAC;QAEzC,2DAA2D;QAC3D,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,IAAI,CAAC,YAAY,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEnE,mEAAmE;QACnE,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAErC,MAAM,gBAAgB,GAAG,cAAc,CACrC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CACxC,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,WAAW,CAAC,KAAK;YACvB,QAAQ,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"statsCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/statsCommand.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
3
|
import { theme } from '../semantic-colors.js';
|
|
4
4
|
import { GIT_COMMIT_INFO } from '../../generated/git-commit.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import { useSettings } from '../contexts/SettingsContext.js';
|
|
6
|
+
export const AboutBox = ({ cliVersion, osVersion, sandboxEnv, modelVersion, selectedAuthType, gcpProject, ideClient, userEmail, tier, }) => {
|
|
7
|
+
const settings = useSettings();
|
|
8
|
+
const showUserIdentity = settings.merged.ui.showUserIdentity;
|
|
9
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: theme.border.default, flexDirection: "column", padding: 1, marginY: 1, width: "100%", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: theme.text.accent, children: "About Gemini CLI" }) }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "CLI Version" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: cliVersion }) })] }), GIT_COMMIT_INFO && !['N/A'].includes(GIT_COMMIT_INFO) && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "Git Commit" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: GIT_COMMIT_INFO }) })] })), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "Model" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: modelVersion }) })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "Sandbox" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: sandboxEnv }) })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "OS" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: osVersion }) })] }), showUserIdentity && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "Auth Method" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: selectedAuthType.startsWith('oauth')
|
|
10
|
+
? userEmail
|
|
11
|
+
? `Logged in with Google (${userEmail})`
|
|
12
|
+
: 'Logged in with Google'
|
|
13
|
+
: selectedAuthType }) })] })), showUserIdentity && tier && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "Tier" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: tier }) })] })), gcpProject && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "GCP Project" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: gcpProject }) })] })), ideClient && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "35%", children: _jsx(Text, { bold: true, color: theme.text.link, children: "IDE Client" }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.primary, children: ideClient }) })] }))] }));
|
|
14
|
+
};
|
|
10
15
|
//# sourceMappingURL=AboutBox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutBox.js","sourceRoot":"","sources":["../../../../src/ui/components/AboutBox.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"AboutBox.js","sourceRoot":"","sources":["../../../../src/ui/components/AboutBox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
* Copyright 2025 Google LLC
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { renderWithProviders } from '../../test-utils/render.js';
|
|
8
8
|
import { AboutBox } from './AboutBox.js';
|
|
9
9
|
import { describe, it, expect, vi } from 'vitest';
|
|
10
10
|
// Mock GIT_COMMIT_INFO
|
|
@@ -22,7 +22,7 @@ describe('AboutBox', () => {
|
|
|
22
22
|
ideClient: '',
|
|
23
23
|
};
|
|
24
24
|
it('renders with required props', () => {
|
|
25
|
-
const { lastFrame } =
|
|
25
|
+
const { lastFrame } = renderWithProviders(_jsx(AboutBox, { ...defaultProps }));
|
|
26
26
|
const output = lastFrame();
|
|
27
27
|
expect(output).toContain('About Gemini CLI');
|
|
28
28
|
expect(output).toContain('1.0.0');
|
|
@@ -38,20 +38,20 @@ describe('AboutBox', () => {
|
|
|
38
38
|
['tier', 'Enterprise', 'Tier'],
|
|
39
39
|
])('renders optional prop %s', (prop, value, label) => {
|
|
40
40
|
const props = { ...defaultProps, [prop]: value };
|
|
41
|
-
const { lastFrame } =
|
|
41
|
+
const { lastFrame } = renderWithProviders(_jsx(AboutBox, { ...props }));
|
|
42
42
|
const output = lastFrame();
|
|
43
43
|
expect(output).toContain(label);
|
|
44
44
|
expect(output).toContain(value);
|
|
45
45
|
});
|
|
46
46
|
it('renders Auth Method with email when userEmail is provided', () => {
|
|
47
47
|
const props = { ...defaultProps, userEmail: 'test@example.com' };
|
|
48
|
-
const { lastFrame } =
|
|
48
|
+
const { lastFrame } = renderWithProviders(_jsx(AboutBox, { ...props }));
|
|
49
49
|
const output = lastFrame();
|
|
50
50
|
expect(output).toContain('Logged in with Google (test@example.com)');
|
|
51
51
|
});
|
|
52
52
|
it('renders Auth Method correctly when not oauth', () => {
|
|
53
53
|
const props = { ...defaultProps, selectedAuthType: 'api-key' };
|
|
54
|
-
const { lastFrame } =
|
|
54
|
+
const { lastFrame } = renderWithProviders(_jsx(AboutBox, { ...props }));
|
|
55
55
|
const output = lastFrame();
|
|
56
56
|
expect(output).toContain('api-key');
|
|
57
57
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutBox.test.js","sourceRoot":"","sources":["../../../../src/ui/components/AboutBox.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AboutBox.test.js","sourceRoot":"","sources":["../../../../src/ui/components/AboutBox.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,uBAAuB;AACvB,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,eAAe,EAAE,kBAAkB;CACpC,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,YAAY,GAAG;QACnB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,YAAY;QAC1B,gBAAgB,EAAE,OAAO;QACzB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,QAAQ,OAAK,YAAY,GAAI,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;QAC3C,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC;QACrC,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC,CAAC,0BAA0B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACpD,MAAM,KAAK,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QACjD,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,QAAQ,OAAK,KAAK,GAAI,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;QACjE,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,QAAQ,OAAK,KAAK,GAAI,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,EAAE,GAAG,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;QAC/D,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,QAAQ,OAAK,KAAK,GAAI,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -6,6 +6,3 @@
|
|
|
6
6
|
export declare const shortAsciiLogo = "\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\n \u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\n";
|
|
7
7
|
export declare const longAsciiLogo = "\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\n \u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\n";
|
|
8
8
|
export declare const tinyAsciiLogo = "\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \n\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\n \u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2591\u2591 \n \u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \n \u2588\u2588\u2588\u2591 \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \n\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \n";
|
|
9
|
-
export declare const shortAsciiLogoIde = "\n \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\n \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\n \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2591\n \u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\n \u2588\u2588\u2588\u2591\u2591 \u2591\u2591\u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2591\u2591\n \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591 \u2588\u2588\u2588\u2591\u2591\u2591\n \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\n \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n";
|
|
10
|
-
export declare const longAsciiLogoIde = "\n \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\n \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\n \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\n \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2591\n \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588\u2591 \u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591 \u2591\u2591\u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2591\u2591\n \u2591\u2591\u2591 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591 \u2588\u2588\u2588\u2591\u2591\u2591\n \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\n \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n";
|
|
11
|
-
export declare const tinyAsciiLogoIde = "\n \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\n \u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\n \u2591\u2591\u2591 \u2591\u2591\u2591\n \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\n \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588\u2591\u2591 \u2588\u2588\u2588\u2591\u2591\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591 \u2591\u2591\u2591\n \u2591\u2591\u2591 \u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2591\n \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\n \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \n";
|
|
@@ -33,40 +33,4 @@ export const tinyAsciiLogo = `
|
|
|
33
33
|
███░ ░░█████████
|
|
34
34
|
░░░ ░░░░░░░░░
|
|
35
35
|
`;
|
|
36
|
-
export const shortAsciiLogoIde = `
|
|
37
|
-
░░░░░░░░░ ░░░░░░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░
|
|
38
|
-
░░░ ░░░ ░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░░ ░░░░░ ░░░
|
|
39
|
-
░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░
|
|
40
|
-
█████████░░██████████ ██████ ░░██████░█████░██████ ░░█████ █████░
|
|
41
|
-
███░░ ███░███░░ ██████ ░██████░░███░░██████ ░█████ ███░░
|
|
42
|
-
███░░ ░░███░░ ███░███ ███ ███░░███░░███░███ ███░░ ███░░
|
|
43
|
-
███░░░░████░██████░░░░░███░░█████ ███░░███░░███░░███ ███░░░ ███░░░
|
|
44
|
-
███ ███ ███ ███ ███ ███ ███ ███ ██████ ███
|
|
45
|
-
███ ███ ███ ███ ███ ███ ███ █████ ███
|
|
46
|
-
█████████ ██████████ ███ ███ █████ ███ █████ █████
|
|
47
|
-
`;
|
|
48
|
-
export const longAsciiLogoIde = `
|
|
49
|
-
░░░ ░░░░░░░░░ ░░░░░░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░
|
|
50
|
-
░░░ ░░░ ░░░ ░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░░ ░░░░░ ░░░
|
|
51
|
-
░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░ ░░░
|
|
52
|
-
███ ░░░ █████████░░██████████ ██████ ░░██████░█████░██████ ░░█████ █████░
|
|
53
|
-
███ ░░░ ███░ ███░███░░ ██████ ░██████░░███░░██████ ░█████ ███░░
|
|
54
|
-
███ ███░░░ ░░███░░ ███░███ ███ ███░░███░░███░███ ███░░ ███░░
|
|
55
|
-
░░░ ███ ███ ░░░█████░██████░░░░░███░░█████ ███░░███░░███░░███ ███░░░ ███░░░
|
|
56
|
-
███ ███ ███ ███ ███ ███ ███ ███ ███ ██████ ███
|
|
57
|
-
███ ███ ███ ███ ███ ███ ███ ███ █████ ███
|
|
58
|
-
███ █████████ ██████████ ███ ███ █████ ███ █████ █████
|
|
59
|
-
`;
|
|
60
|
-
export const tinyAsciiLogoIde = `
|
|
61
|
-
░░░ ░░░░░░░░░
|
|
62
|
-
░░░ ░░░ ░░░
|
|
63
|
-
░░░ ░░░
|
|
64
|
-
███ ░░░ █████████░░░
|
|
65
|
-
███ ░░░ ███░░ ███░░
|
|
66
|
-
███ ███░░ ░░░
|
|
67
|
-
░░░ ███ ███░░░░████░
|
|
68
|
-
███ ███ ███
|
|
69
|
-
███ ███ ███
|
|
70
|
-
███ █████████
|
|
71
|
-
`;
|
|
72
36
|
//# sourceMappingURL=AsciiArt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsciiArt.js","sourceRoot":"","sources":["../../../../src/ui/components/AsciiArt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;CAS7B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC
|
|
1
|
+
{"version":3,"file":"AsciiArt.js","sourceRoot":"","sources":["../../../../src/ui/components/AsciiArt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;CAS7B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type React from 'react';
|
|
7
|
+
import { type ChecklistItemData } from './ChecklistItem.js';
|
|
8
|
+
export interface ChecklistProps {
|
|
9
|
+
title: string;
|
|
10
|
+
items: ChecklistItemData[];
|
|
11
|
+
isExpanded: boolean;
|
|
12
|
+
toggleHint?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const Checklist: React.FC<ChecklistProps>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { theme } from '../semantic-colors.js';
|
|
4
|
+
import { useMemo } from 'react';
|
|
5
|
+
import { ChecklistItem } from './ChecklistItem.js';
|
|
6
|
+
const ChecklistTitleDisplay = ({ title, items, toggleHint }) => {
|
|
7
|
+
const score = useMemo(() => {
|
|
8
|
+
let total = 0;
|
|
9
|
+
let completed = 0;
|
|
10
|
+
for (const item of items) {
|
|
11
|
+
if (item.status !== 'cancelled') {
|
|
12
|
+
total += 1;
|
|
13
|
+
if (item.status === 'completed') {
|
|
14
|
+
completed += 1;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return `${completed}/${total} completed`;
|
|
19
|
+
}, [items]);
|
|
20
|
+
return (_jsxs(Box, { flexDirection: "row", columnGap: 2, height: 1, children: [_jsx(Text, { color: theme.text.primary, bold: true, "aria-label": `${title} list`, children: title }), _jsxs(Text, { color: theme.text.secondary, children: [score, toggleHint ? ` (${toggleHint})` : ''] })] }));
|
|
21
|
+
};
|
|
22
|
+
const ChecklistListDisplay = ({ items, }) => (_jsx(Box, { flexDirection: "column", "aria-role": "list", children: items.map((item, index) => (_jsx(ChecklistItem, { item: item, role: "listitem" }, `${index}-${item.label}`))) }));
|
|
23
|
+
export const Checklist = ({ title, items, isExpanded, toggleHint, }) => {
|
|
24
|
+
const inProgress = useMemo(() => items.find((item) => item.status === 'in_progress') || null, [items]);
|
|
25
|
+
const hasActiveItems = useMemo(() => items.some((item) => item.status === 'pending' || item.status === 'in_progress'), [items]);
|
|
26
|
+
if (items.length === 0 || (!isExpanded && !hasActiveItems)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return (_jsx(Box, { borderStyle: "single", borderBottom: false, borderRight: false, borderLeft: false, borderColor: theme.border.default, paddingLeft: 1, paddingRight: 1, children: isExpanded ? (_jsxs(Box, { flexDirection: "column", rowGap: 1, children: [_jsx(ChecklistTitleDisplay, { title: title, items: items, toggleHint: toggleHint }), _jsx(ChecklistListDisplay, { items: items })] })) : (_jsxs(Box, { flexDirection: "row", columnGap: 1, height: 1, children: [_jsx(Box, { flexShrink: 0, flexGrow: 0, children: _jsx(ChecklistTitleDisplay, { title: title, items: items, toggleHint: toggleHint }) }), inProgress && (_jsx(Box, { flexShrink: 1, flexGrow: 1, children: _jsx(ChecklistItem, { item: inProgress, wrap: "truncate" }) }))] })) }));
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=Checklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checklist.js","sourceRoot":"","sources":["../../../../src/ui/components/Checklist.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2025 Google LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
import { render } from '../../test-utils/render.js';
|
|
8
|
+
import { describe, it, expect } from 'vitest';
|
|
9
|
+
import { Checklist } from './Checklist.js';
|
|
10
|
+
describe('<Checklist />', () => {
|
|
11
|
+
const items = [
|
|
12
|
+
{ status: 'completed', label: 'Task 1' },
|
|
13
|
+
{ status: 'in_progress', label: 'Task 2' },
|
|
14
|
+
{ status: 'pending', label: 'Task 3' },
|
|
15
|
+
{ status: 'cancelled', label: 'Task 4' },
|
|
16
|
+
];
|
|
17
|
+
it('renders nothing when list is empty', () => {
|
|
18
|
+
const { lastFrame } = render(_jsx(Checklist, { title: "Test List", items: [], isExpanded: true }));
|
|
19
|
+
expect(lastFrame()).toBe('');
|
|
20
|
+
});
|
|
21
|
+
it('renders nothing when collapsed and no active items', () => {
|
|
22
|
+
const inactiveItems = [
|
|
23
|
+
{ status: 'completed', label: 'Task 1' },
|
|
24
|
+
{ status: 'cancelled', label: 'Task 2' },
|
|
25
|
+
];
|
|
26
|
+
const { lastFrame } = render(_jsx(Checklist, { title: "Test List", items: inactiveItems, isExpanded: false }));
|
|
27
|
+
expect(lastFrame()).toBe('');
|
|
28
|
+
});
|
|
29
|
+
it('renders summary view correctly (collapsed)', () => {
|
|
30
|
+
const { lastFrame } = render(_jsx(Checklist, { title: "Test List", items: items, isExpanded: false, toggleHint: "toggle me" }));
|
|
31
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
32
|
+
});
|
|
33
|
+
it('renders expanded view correctly', () => {
|
|
34
|
+
const { lastFrame } = render(_jsx(Checklist, { title: "Test List", items: items, isExpanded: true, toggleHint: "toggle me" }));
|
|
35
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
36
|
+
});
|
|
37
|
+
it('renders summary view without in-progress item if none exists', () => {
|
|
38
|
+
const pendingItems = [
|
|
39
|
+
{ status: 'completed', label: 'Task 1' },
|
|
40
|
+
{ status: 'pending', label: 'Task 2' },
|
|
41
|
+
];
|
|
42
|
+
const { lastFrame } = render(_jsx(Checklist, { title: "Test List", items: pendingItems, isExpanded: false }));
|
|
43
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=Checklist.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checklist.test.js","sourceRoot":"","sources":["../../../../src/ui/components/Checklist.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,KAAK,GAAwB;QACjC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;QACxC,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC1C,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;QACtC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;KACzC,CAAC;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,SAAS,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,GAAI,CAC7D,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,aAAa,GAAwB;YACzC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;YACxC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;SACzC,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,SAAS,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,GAAI,CACzE,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,SAAS,IACR,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,UAAU,EAAC,WAAW,GACtB,CACH,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,SAAS,IACR,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,IAAI,EAChB,UAAU,EAAC,WAAW,GACtB,CACH,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,YAAY,GAAwB;YACxC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;YACxC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;SACvC,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,SAAS,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,GAAI,CACxE,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type React from 'react';
|
|
7
|
+
export type ChecklistStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
|
|
8
|
+
export interface ChecklistItemData {
|
|
9
|
+
status: ChecklistStatus;
|
|
10
|
+
label: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ChecklistItemProps {
|
|
13
|
+
item: ChecklistItemData;
|
|
14
|
+
wrap?: 'truncate';
|
|
15
|
+
role?: 'listitem';
|
|
16
|
+
}
|
|
17
|
+
export declare const ChecklistItem: React.FC<ChecklistItemProps>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { theme } from '../semantic-colors.js';
|
|
4
|
+
import { checkExhaustive } from '../../utils/checks.js';
|
|
5
|
+
const ChecklistStatusDisplay = ({ status, }) => {
|
|
6
|
+
switch (status) {
|
|
7
|
+
case 'completed':
|
|
8
|
+
return (_jsx(Text, { color: theme.status.success, "aria-label": "Completed", children: "\u2713" }));
|
|
9
|
+
case 'in_progress':
|
|
10
|
+
return (_jsx(Text, { color: theme.text.accent, "aria-label": "In Progress", children: "\u00BB" }));
|
|
11
|
+
case 'pending':
|
|
12
|
+
return (_jsx(Text, { color: theme.text.secondary, "aria-label": "Pending", children: "\u2610" }));
|
|
13
|
+
case 'cancelled':
|
|
14
|
+
return (_jsx(Text, { color: theme.status.error, "aria-label": "Cancelled", children: "\u2717" }));
|
|
15
|
+
default:
|
|
16
|
+
checkExhaustive(status);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export const ChecklistItem = ({ item, wrap, role: ariaRole, }) => {
|
|
20
|
+
const textColor = (() => {
|
|
21
|
+
switch (item.status) {
|
|
22
|
+
case 'in_progress':
|
|
23
|
+
return theme.text.accent;
|
|
24
|
+
case 'completed':
|
|
25
|
+
case 'cancelled':
|
|
26
|
+
return theme.text.secondary;
|
|
27
|
+
case 'pending':
|
|
28
|
+
return theme.text.primary;
|
|
29
|
+
default:
|
|
30
|
+
checkExhaustive(item.status);
|
|
31
|
+
}
|
|
32
|
+
})();
|
|
33
|
+
const strikethrough = item.status === 'cancelled';
|
|
34
|
+
return (_jsxs(Box, { flexDirection: "row", columnGap: 1, "aria-role": ariaRole, children: [_jsx(ChecklistStatusDisplay, { status: item.status }), _jsx(Box, { flexShrink: 1, children: _jsx(Text, { color: textColor, wrap: wrap, strikethrough: strikethrough, children: item.label }) })] }));
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=ChecklistItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChecklistItem.js","sourceRoot":"","sources":["../../../../src/ui/components/ChecklistItem.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAaxD,MAAM,sBAAsB,GAA0C,CAAC,EACrE,MAAM,GACP,EAAE,EAAE;IACH,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,gBAAa,WAAW,uBAElD,CACR,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,gBAAa,aAAa,uBAEjD,CACR,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAa,SAAS,uBAEhD,CACR,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,gBAAa,WAAW,uBAEhD,CACR,CAAC;QACJ;YACE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,IAAI,EACJ,IAAI,EACJ,IAAI,EAAE,QAAQ,GACf,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;QACtB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,aAAa;gBAChB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,KAAK,WAAW,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9B,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5B;gBACE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;IAElD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,SAAS,EAAE,CAAC,eAAa,QAAQ,aACxD,KAAC,sBAAsB,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,EAC/C,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,YAC7D,IAAI,CAAC,KAAK,GACN,GACH,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2025 Google LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
import { render } from '../../test-utils/render.js';
|
|
8
|
+
import { describe, it, expect } from 'vitest';
|
|
9
|
+
import { ChecklistItem } from './ChecklistItem.js';
|
|
10
|
+
import { Box } from 'ink';
|
|
11
|
+
describe('<ChecklistItem />', () => {
|
|
12
|
+
it.each([
|
|
13
|
+
{ status: 'pending', label: 'Do this' },
|
|
14
|
+
{ status: 'in_progress', label: 'Doing this' },
|
|
15
|
+
{ status: 'completed', label: 'Done this' },
|
|
16
|
+
{ status: 'cancelled', label: 'Skipped this' },
|
|
17
|
+
])('renders %s item correctly', (item) => {
|
|
18
|
+
const { lastFrame } = render(_jsx(ChecklistItem, { item: item }));
|
|
19
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
20
|
+
});
|
|
21
|
+
it('truncates long text when wrap="truncate"', () => {
|
|
22
|
+
const item = {
|
|
23
|
+
status: 'in_progress',
|
|
24
|
+
label: 'This is a very long text that should be truncated because the wrap prop is set to truncate',
|
|
25
|
+
};
|
|
26
|
+
const { lastFrame } = render(_jsx(Box, { width: 30, children: _jsx(ChecklistItem, { item: item, wrap: "truncate" }) }));
|
|
27
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
28
|
+
});
|
|
29
|
+
it('wraps long text by default', () => {
|
|
30
|
+
const item = {
|
|
31
|
+
status: 'in_progress',
|
|
32
|
+
label: 'This is a very long text that should wrap because the default behavior is wrapping',
|
|
33
|
+
};
|
|
34
|
+
const { lastFrame } = render(_jsx(Box, { width: 30, children: _jsx(ChecklistItem, { item: item }) }));
|
|
35
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=ChecklistItem.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChecklistItem.test.js","sourceRoot":"","sources":["../../../../src/ui/components/ChecklistItem.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAA0B,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;QAC9C,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;QAC3C,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE;KACxB,CAAC,CAAC,2BAA2B,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAsB;YAC9B,MAAM,EAAE,aAAa;YACrB,KAAK,EACH,4FAA4F;SAC/F,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,UAAU,GAAG,GACzC,CACP,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAsB;YAC9B,MAAM,EAAE,aAAa;YACrB,KAAK,EACH,oFAAoF;SACvF,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,GAAI,GACzB,CACP,CAAC;QACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box } from 'ink';
|
|
3
3
|
import { ThemedGradient } from './ThemedGradient.js';
|
|
4
|
-
import { shortAsciiLogo, longAsciiLogo, tinyAsciiLogo
|
|
4
|
+
import { shortAsciiLogo, longAsciiLogo, tinyAsciiLogo } from './AsciiArt.js';
|
|
5
5
|
import { getAsciiArtWidth } from '../utils/textUtils.js';
|
|
6
6
|
import { useTerminalSize } from '../hooks/useTerminalSize.js';
|
|
7
|
-
import { getTerminalProgram } from '../utils/terminalSetup.js';
|
|
8
7
|
import { useSnowfall } from '../hooks/useSnowfall.js';
|
|
9
8
|
export const Header = ({ customAsciiArt, version, nightly, }) => {
|
|
10
9
|
const { columns: terminalWidth } = useTerminalSize();
|
|
11
|
-
const isIde = getTerminalProgram();
|
|
12
10
|
let displayTitle;
|
|
13
11
|
const widthOfLongLogo = getAsciiArtWidth(longAsciiLogo);
|
|
14
12
|
const widthOfShortLogo = getAsciiArtWidth(shortAsciiLogo);
|
|
@@ -16,13 +14,13 @@ export const Header = ({ customAsciiArt, version, nightly, }) => {
|
|
|
16
14
|
displayTitle = customAsciiArt;
|
|
17
15
|
}
|
|
18
16
|
else if (terminalWidth >= widthOfLongLogo) {
|
|
19
|
-
displayTitle =
|
|
17
|
+
displayTitle = longAsciiLogo;
|
|
20
18
|
}
|
|
21
19
|
else if (terminalWidth >= widthOfShortLogo) {
|
|
22
|
-
displayTitle =
|
|
20
|
+
displayTitle = shortAsciiLogo;
|
|
23
21
|
}
|
|
24
22
|
else {
|
|
25
|
-
displayTitle =
|
|
23
|
+
displayTitle = tinyAsciiLogo;
|
|
26
24
|
}
|
|
27
25
|
const artWidth = getAsciiArtWidth(displayTitle);
|
|
28
26
|
const title = useSnowfall(displayTitle);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/ui/components/Header.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/ui/components/Header.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,cAAc,EACd,OAAO,EACP,OAAO,GACR,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,CAAC;IACrD,IAAI,YAAY,CAAC;IACjB,MAAM,eAAe,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAE1D,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;SAAM,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QAC5C,YAAY,GAAG,aAAa,CAAC;IAC/B,CAAC;SAAM,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAC;QAC7C,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,aAAa,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAExC,OAAO,CACL,MAAC,GAAG,IACF,UAAU,EAAC,YAAY,EACvB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,CAAC,EACb,aAAa,EAAC,QAAQ,aAEtB,KAAC,cAAc,cAAE,KAAK,GAAkB,EACvC,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,KAAK,EAAC,MAAM,EAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,UAAU,YAC7D,MAAC,cAAc,oBAAG,OAAO,IAAkB,GACvC,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -8,17 +8,13 @@ import { render } from '../../test-utils/render.js';
|
|
|
8
8
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
9
9
|
import { Header } from './Header.js';
|
|
10
10
|
import * as useTerminalSize from '../hooks/useTerminalSize.js';
|
|
11
|
-
import { longAsciiLogo
|
|
11
|
+
import { longAsciiLogo } from './AsciiArt.js';
|
|
12
12
|
import * as semanticColors from '../semantic-colors.js';
|
|
13
|
-
import * as terminalSetup from '../utils/terminalSetup.js';
|
|
14
13
|
import { Text } from 'ink';
|
|
15
14
|
vi.mock('../hooks/useTerminalSize.js');
|
|
16
15
|
vi.mock('../hooks/useSnowfall.js', () => ({
|
|
17
16
|
useSnowfall: vi.fn((art) => art),
|
|
18
17
|
}));
|
|
19
|
-
vi.mock('../utils/terminalSetup.js', () => ({
|
|
20
|
-
getTerminalProgram: vi.fn(),
|
|
21
|
-
}));
|
|
22
18
|
vi.mock('ink-gradient', () => {
|
|
23
19
|
const MockGradient = ({ children }) => (_jsx(_Fragment, { children: children }));
|
|
24
20
|
return {
|
|
@@ -36,7 +32,6 @@ vi.mock('ink', async () => {
|
|
|
36
32
|
describe('<Header />', () => {
|
|
37
33
|
beforeEach(() => {
|
|
38
34
|
vi.clearAllMocks();
|
|
39
|
-
vi.mocked(terminalSetup.getTerminalProgram).mockReturnValue(null);
|
|
40
35
|
});
|
|
41
36
|
it('renders the long logo on a wide terminal', () => {
|
|
42
37
|
vi.spyOn(useTerminalSize, 'useTerminalSize').mockReturnValue({
|
|
@@ -48,17 +43,6 @@ describe('<Header />', () => {
|
|
|
48
43
|
children: longAsciiLogo,
|
|
49
44
|
}), undefined);
|
|
50
45
|
});
|
|
51
|
-
it('uses the IDE logo when running in an IDE', () => {
|
|
52
|
-
vi.spyOn(useTerminalSize, 'useTerminalSize').mockReturnValue({
|
|
53
|
-
columns: 120,
|
|
54
|
-
rows: 20,
|
|
55
|
-
});
|
|
56
|
-
vi.mocked(terminalSetup.getTerminalProgram).mockReturnValue('vscode');
|
|
57
|
-
render(_jsx(Header, { version: "1.0.0", nightly: false }));
|
|
58
|
-
expect(Text).toHaveBeenCalledWith(expect.objectContaining({
|
|
59
|
-
children: longAsciiLogoIde,
|
|
60
|
-
}), undefined);
|
|
61
|
-
});
|
|
62
46
|
it('renders custom ASCII art when provided', () => {
|
|
63
47
|
const customArt = 'CUSTOM ART';
|
|
64
48
|
render(_jsx(Header, { version: "1.0.0", nightly: false, customAsciiArt: customArt }));
|
|
@@ -66,18 +50,13 @@ describe('<Header />', () => {
|
|
|
66
50
|
children: customArt,
|
|
67
51
|
}), undefined);
|
|
68
52
|
});
|
|
69
|
-
it('renders custom ASCII art as is when running in an IDE', () => {
|
|
70
|
-
const customArt = 'CUSTOM ART';
|
|
71
|
-
vi.mocked(terminalSetup.getTerminalProgram).mockReturnValue('vscode');
|
|
72
|
-
render(_jsx(Header, { version: "1.0.0", nightly: false, customAsciiArt: customArt }));
|
|
73
|
-
expect(Text).toHaveBeenCalledWith(expect.objectContaining({
|
|
74
|
-
children: customArt,
|
|
75
|
-
}), undefined);
|
|
76
|
-
});
|
|
77
53
|
it('displays the version number when nightly is true', () => {
|
|
78
54
|
render(_jsx(Header, { version: "1.0.0", nightly: true }));
|
|
79
55
|
const textCalls = Text.mock.calls;
|
|
80
|
-
|
|
56
|
+
const versionText = Array.isArray(textCalls[1][0].children)
|
|
57
|
+
? textCalls[1][0].children.join('')
|
|
58
|
+
: textCalls[1][0].children;
|
|
59
|
+
expect(versionText).toBe('v1.0.0');
|
|
81
60
|
});
|
|
82
61
|
it('does not display the version number when nightly is false', () => {
|
|
83
62
|
render(_jsx(Header, { version: "1.0.0", nightly: false }));
|