github-issue-tower-defence-management 1.92.0 → 1.93.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/adapter/entry-points/console/consoleServer.js +1 -0
  3. package/bin/adapter/entry-points/console/consoleServer.js.map +1 -1
  4. package/package.json +1 -1
  5. package/src/adapter/entry-points/console/consoleServer.test.ts +23 -0
  6. package/src/adapter/entry-points/console/consoleServer.ts +1 -0
  7. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleChangedFileList.test.tsx +49 -1
  8. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleChangedFileList.tsx +36 -20
  9. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.stories.tsx +19 -0
  10. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.test.tsx +24 -0
  11. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.tsx +30 -0
  12. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsolePullRequestDetail.tsx +30 -24
  13. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.stories.tsx +47 -0
  14. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.test.tsx +54 -0
  15. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.tsx +36 -0
  16. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleActionQueue.test.ts +117 -0
  17. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleActionQueue.ts +105 -0
  18. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleSwipeNavigation.test.ts +115 -0
  19. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleSwipeNavigation.ts +115 -0
  20. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.test.ts +153 -0
  21. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.ts +103 -0
  22. package/src/adapter/entry-points/console/ui/src/features/console/logic/diff.test.ts +81 -0
  23. package/src/adapter/entry-points/console/ui/src/features/console/logic/diff.ts +61 -0
  24. package/src/adapter/entry-points/console/ui/src/features/console/logic/navigation.test.ts +53 -0
  25. package/src/adapter/entry-points/console/ui/src/features/console/logic/navigation.ts +33 -0
  26. package/src/adapter/entry-points/console/ui/src/features/console/logic/swipe.test.ts +34 -0
  27. package/src/adapter/entry-points/console/ui/src/features/console/logic/swipe.ts +28 -0
  28. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.test.tsx +9 -1
  29. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.tsx +51 -6
  30. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +263 -17
  31. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +85 -3
  32. package/src/adapter/entry-points/console/ui/src/features/console/testing/fixtures.ts +19 -3
  33. package/src/adapter/entry-points/console/ui/src/index.css +205 -1
  34. package/src/adapter/entry-points/console/ui-dist/assets/index-C5nxEEOu.css +1 -0
  35. package/src/adapter/entry-points/console/ui-dist/assets/index-DoJ05EuW.js +101 -0
  36. package/src/adapter/entry-points/console/ui-dist/index.html +2 -2
  37. package/types/adapter/entry-points/console/consoleServer.d.ts.map +1 -1
  38. package/src/adapter/entry-points/console/ui-dist/assets/index-BJixkRxv.css +0 -1
  39. package/src/adapter/entry-points/console/ui-dist/assets/index-BSNMvjcB.js +0 -100
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.93.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.92.1...v1.93.0) (2026-06-22)
2
+
3
+
4
+ ### Features
5
+
6
+ * **console:** cancellable action toast, auto-advance, file diff, and swipe navigation for reference parity ([#893](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/893)) ([9f983af](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/9f983af0dfff353ff22c9d126b18aff31bbcb082)), closes [#891](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/891)
7
+
8
+ ## [1.92.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.92.0...v1.92.1) (2026-06-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **console:** send Content-Length for flat in-tmux JSON responses ([#890](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/890)) ([56b8216](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/56b82169140bbf1fdf3c9b664fcd02e283e350d1))
14
+
1
15
  # [1.92.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.91.5...v1.92.0) (2026-06-21)
2
16
 
3
17
 
@@ -331,6 +331,7 @@ const handleTokenedRequest = async (options, request, response, requestPath, sea
331
331
  response.writeHead(200, {
332
332
  'Content-Type': 'application/json; charset=utf-8',
333
333
  'Cache-Control': 'no-store',
334
+ 'Content-Length': String(flatContent.length),
334
335
  });
335
336
  response.end(flatContent);
336
337
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"consoleServer.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consoleServer.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.92.0",
3
+ "version": "1.93.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -761,6 +761,8 @@ describe('consoleServer flat in-tmux-by-human route integration', () => {
761
761
  body: string;
762
762
  cacheControl: string | undefined;
763
763
  contentType: string | undefined;
764
+ contentLength: string | undefined;
765
+ transferEncoding: string | undefined;
764
766
  }> => {
765
767
  const address = server.address();
766
768
  if (address === null || typeof address === 'string') {
@@ -779,6 +781,8 @@ describe('consoleServer flat in-tmux-by-human route integration', () => {
779
781
  body: Buffer.concat(chunks).toString('utf-8'),
780
782
  cacheControl: response.headers['cache-control'],
781
783
  contentType: response.headers['content-type'],
784
+ contentLength: response.headers['content-length'],
785
+ transferEncoding: response.headers['transfer-encoding'],
782
786
  });
783
787
  });
784
788
  },
@@ -841,6 +845,25 @@ describe('consoleServer flat in-tmux-by-human route integration', () => {
841
845
  }
842
846
  });
843
847
 
848
+ it('sends an explicit Content-Length and no chunked encoding for the flat index.v4.json', async () => {
849
+ const { server, tmpDir } = await startWithFixture();
850
+ try {
851
+ const response = await requestServer(
852
+ server,
853
+ `/in-tmux-by-human/index.v4.json?k=${testToken}`,
854
+ );
855
+ expect(response.statusCode).toBe(200);
856
+ expect(response.contentLength).toBe(
857
+ String(Buffer.byteLength(indexV4Raw)),
858
+ );
859
+ expect(response.transferEncoding).toBeUndefined();
860
+ expect(response.body).toBe(indexV4Raw);
861
+ } finally {
862
+ await closeServer(server);
863
+ fs.rmSync(tmpDir, { recursive: true, force: true });
864
+ }
865
+ });
866
+
844
867
  it('rejects the flat route without a token', async () => {
845
868
  const { server, tmpDir } = await startWithFixture();
846
869
  try {
@@ -404,6 +404,7 @@ const handleTokenedRequest = async (
404
404
  response.writeHead(200, {
405
405
  'Content-Type': 'application/json; charset=utf-8',
406
406
  'Cache-Control': 'no-store',
407
+ 'Content-Length': String(flatContent.length),
407
408
  });
408
409
  response.end(flatContent);
409
410
  return;
@@ -1,4 +1,4 @@
1
- import { render } from '@testing-library/react';
1
+ import { fireEvent, render } from '@testing-library/react';
2
2
  import { consoleChangedFilesFixture } from '../../testing/fixtures';
3
3
  import { ConsoleChangedFileList } from './ConsoleChangedFileList';
4
4
 
@@ -19,6 +19,54 @@ describe('ConsoleChangedFileList', () => {
19
19
  expect(getByText('M')).toBeInTheDocument();
20
20
  });
21
21
 
22
+ it('keeps the diff hidden until the file row is clicked', () => {
23
+ const { container, getByText } = render(
24
+ <ConsoleChangedFileList
25
+ files={consoleChangedFilesFixture}
26
+ isLoading={false}
27
+ error={null}
28
+ />,
29
+ );
30
+ expect(container.querySelector('.console-file-diff')).toBeNull();
31
+ fireEvent.click(
32
+ getByText('src/adapter/entry-points/console/consoleServer.ts'),
33
+ );
34
+ expect(container.querySelector('.console-file-diff')).toBeInTheDocument();
35
+ const codeText = [...container.querySelectorAll('.console-diff-code')].map(
36
+ (cell) => cell.textContent,
37
+ );
38
+ expect(codeText).toContain('+ npm ci');
39
+ });
40
+
41
+ it('collapses the diff again when the file row is clicked twice', () => {
42
+ const { container, getByText } = render(
43
+ <ConsoleChangedFileList
44
+ files={consoleChangedFilesFixture}
45
+ isLoading={false}
46
+ error={null}
47
+ />,
48
+ );
49
+ const path = getByText('src/adapter/entry-points/console/consoleServer.ts');
50
+ fireEvent.click(path);
51
+ expect(container.querySelector('.console-file-diff')).toBeInTheDocument();
52
+ fireEvent.click(path);
53
+ expect(container.querySelector('.console-file-diff')).toBeNull();
54
+ });
55
+
56
+ it('marks the expanded file row via aria-expanded', () => {
57
+ const { getAllByRole } = render(
58
+ <ConsoleChangedFileList
59
+ files={consoleChangedFilesFixture}
60
+ isLoading={false}
61
+ error={null}
62
+ />,
63
+ );
64
+ const firstRow = getAllByRole('button')[0];
65
+ expect(firstRow).toHaveAttribute('aria-expanded', 'false');
66
+ fireEvent.click(firstRow);
67
+ expect(firstRow).toHaveAttribute('aria-expanded', 'true');
68
+ });
69
+
22
70
  it('shows the loading state', () => {
23
71
  const { getByText } = render(
24
72
  <ConsoleChangedFileList files={[]} isLoading error={null} />,
@@ -1,5 +1,7 @@
1
+ import { useState } from 'react';
1
2
  import { fileStatusBadge } from '../../logic/fileStatus';
2
3
  import type { ConsoleChangedFile } from '../../logic/types';
4
+ import { ConsoleFileDiff } from './ConsoleFileDiff';
3
5
 
4
6
  export type ConsoleChangedFileListProps = {
5
7
  files: ConsoleChangedFile[];
@@ -7,6 +9,37 @@ export type ConsoleChangedFileListProps = {
7
9
  error: string | null;
8
10
  };
9
11
 
12
+ const ConsoleChangedFileRow = ({ file }: { file: ConsoleChangedFile }) => {
13
+ const [expanded, setExpanded] = useState<boolean>(false);
14
+ const badge = fileStatusBadge(file.status);
15
+ return (
16
+ <li className="console-file">
17
+ <button
18
+ type="button"
19
+ className="console-file-row"
20
+ aria-expanded={expanded}
21
+ onClick={() => setExpanded((value) => !value)}
22
+ >
23
+ <span className="console-file-caret">{expanded ? '▾' : '▸'}</span>
24
+ <span
25
+ className="console-file-badge"
26
+ style={{ color: badge.color, borderColor: badge.color }}
27
+ >
28
+ {badge.label}
29
+ </span>
30
+ <span className="console-file-path">{file.path}</span>
31
+ <span className="console-file-stat console-file-add">
32
+ +{file.additions}
33
+ </span>
34
+ <span className="console-file-stat console-file-del">
35
+ -{file.deletions}
36
+ </span>
37
+ </button>
38
+ {expanded && <ConsoleFileDiff patch={file.patch} />}
39
+ </li>
40
+ );
41
+ };
42
+
10
43
  export const ConsoleChangedFileList = ({
11
44
  files,
12
45
  isLoading,
@@ -30,26 +63,9 @@ export const ConsoleChangedFileList = ({
30
63
 
31
64
  return (
32
65
  <ul className="console-files">
33
- {files.map((file) => {
34
- const badge = fileStatusBadge(file.status);
35
- return (
36
- <li key={file.path} className="console-file">
37
- <span
38
- className="console-file-badge"
39
- style={{ color: badge.color, borderColor: badge.color }}
40
- >
41
- {badge.label}
42
- </span>
43
- <span className="console-file-path">{file.path}</span>
44
- <span className="console-file-stat console-file-add">
45
- +{file.additions}
46
- </span>
47
- <span className="console-file-stat console-file-del">
48
- -{file.deletions}
49
- </span>
50
- </li>
51
- );
52
- })}
66
+ {files.map((file) => (
67
+ <ConsoleChangedFileRow key={file.path} file={file} />
68
+ ))}
53
69
  </ul>
54
70
  );
55
71
  };
@@ -0,0 +1,19 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { consoleChangedFilesFixture } from '../../testing/fixtures';
3
+ import { ConsoleFileDiff } from './ConsoleFileDiff';
4
+
5
+ const meta: Meta<typeof ConsoleFileDiff> = {
6
+ title: 'Console/ConsoleFileDiff',
7
+ component: ConsoleFileDiff,
8
+ args: { patch: consoleChangedFilesFixture[0].patch },
9
+ };
10
+
11
+ export default meta;
12
+
13
+ type Story = StoryObj<typeof ConsoleFileDiff>;
14
+
15
+ export const WithPatch: Story = {};
16
+
17
+ export const NoPatch: Story = {
18
+ args: { patch: null },
19
+ };
@@ -0,0 +1,24 @@
1
+ import { render } from '@testing-library/react';
2
+ import { consoleChangedFilesFixture } from '../../testing/fixtures';
3
+ import { ConsoleFileDiff } from './ConsoleFileDiff';
4
+
5
+ describe('ConsoleFileDiff', () => {
6
+ it('renders added, removed and context lines from the patch', () => {
7
+ const { container } = render(
8
+ <ConsoleFileDiff patch={consoleChangedFilesFixture[0].patch} />,
9
+ );
10
+ const codeText = [...container.querySelectorAll('.console-diff-code')].map(
11
+ (cell) => cell.textContent,
12
+ );
13
+ expect(codeText).toContain('+ npm ci');
14
+ expect(codeText).toContain('- npm install');
15
+ expect(container.querySelectorAll('.console-diff-add').length).toBe(2);
16
+ expect(container.querySelectorAll('.console-diff-del').length).toBe(1);
17
+ expect(container.querySelectorAll('.console-diff-hunk').length).toBe(1);
18
+ });
19
+
20
+ it('shows a placeholder when there is no patch', () => {
21
+ const { getByText } = render(<ConsoleFileDiff patch={null} />);
22
+ expect(getByText('(no diff / binary or too large)')).toBeInTheDocument();
23
+ });
24
+ });
@@ -0,0 +1,30 @@
1
+ import { parseUnifiedDiff } from '../../logic/diff';
2
+
3
+ export type ConsoleFileDiffProps = {
4
+ patch: string | null;
5
+ };
6
+
7
+ export const ConsoleFileDiff = ({ patch }: ConsoleFileDiffProps) => {
8
+ if (patch === null || patch === '') {
9
+ return (
10
+ <p className="console-file-diff-empty">(no diff / binary or too large)</p>
11
+ );
12
+ }
13
+ const rows = parseUnifiedDiff(patch);
14
+ return (
15
+ <table className="console-file-diff">
16
+ <tbody>
17
+ {rows.map((row) => (
18
+ <tr
19
+ key={`${row.kind}:${row.oldLineNumber ?? 'x'}:${row.newLineNumber ?? 'x'}:${row.content}`}
20
+ className={`console-diff-row console-diff-${row.kind}`}
21
+ >
22
+ <td className="console-diff-ln">{row.oldLineNumber ?? ''}</td>
23
+ <td className="console-diff-ln">{row.newLineNumber ?? ''}</td>
24
+ <td className="console-diff-code">{row.content}</td>
25
+ </tr>
26
+ ))}
27
+ </tbody>
28
+ </table>
29
+ );
30
+ };
@@ -34,9 +34,13 @@ export const ConsolePullRequestDetail = ({
34
34
  now,
35
35
  }: ConsolePullRequestSectionProps) => {
36
36
  const summary = pullRequest.summary;
37
+ const filesCount =
38
+ filesAreLoading || filesError !== null ? null : files.length;
39
+ const commitsCount =
40
+ commitsAreLoading || commitsError !== null ? null : commits.length;
37
41
  return (
38
- <section className="console-pr-section">
39
- <header className="console-pr-section-header">
42
+ <>
43
+ <div className="console-pr-header">
40
44
  <a
41
45
  href={pullRequest.url}
42
46
  className="console-pr-section-title"
@@ -48,34 +52,36 @@ export const ConsolePullRequestDetail = ({
48
52
  {pullRequest.isDraft && (
49
53
  <span className="console-pr-section-state">draft</span>
50
54
  )}
51
- </header>
52
- <div className="console-pr-statbar">
53
- {pullRequest.branchName !== null && (
54
- <span className="console-pr-branch">{pullRequest.branchName}</span>
55
- )}
56
- {summary !== null && (
57
- <>
58
- <span className="console-pr-add">+{summary.additions}</span>
59
- <span className="console-pr-del">-{summary.deletions}</span>
60
- <span className="console-pr-files-count">
61
- {summary.changedFiles} files
62
- </span>
63
- </>
64
- )}
55
+ <div className="console-pr-statbar">
56
+ {pullRequest.branchName !== null && (
57
+ <span className="console-pr-branch">{pullRequest.branchName}</span>
58
+ )}
59
+ {summary !== null && (
60
+ <>
61
+ <span className="console-pr-add">+{summary.additions}</span>
62
+ <span className="console-pr-del">-{summary.deletions}</span>
63
+ <span className="console-pr-files-count">
64
+ {summary.changedFiles} files
65
+ </span>
66
+ </>
67
+ )}
68
+ </div>
65
69
  </div>
66
- {bodyIsLoading ? (
67
- <p className="console-pr-body-loading">Loading description...</p>
68
- ) : (
69
- <ConsoleMarkdownContent body={summary?.body ?? body} />
70
- )}
71
- <ConsolePanel title="Changed files">
70
+ <ConsolePanel title="Description" defaultCollapsed>
71
+ {bodyIsLoading ? (
72
+ <p className="console-pr-body-loading">Loading description...</p>
73
+ ) : (
74
+ <ConsoleMarkdownContent body={summary?.body ?? body} />
75
+ )}
76
+ </ConsolePanel>
77
+ <ConsolePanel title="Changed files" count={filesCount}>
72
78
  <ConsoleChangedFileList
73
79
  files={files}
74
80
  isLoading={filesAreLoading}
75
81
  error={filesError}
76
82
  />
77
83
  </ConsolePanel>
78
- <ConsolePanel title="Commits" defaultCollapsed>
84
+ <ConsolePanel title="Commits" count={commitsCount} defaultCollapsed>
79
85
  <ConsoleCommitList
80
86
  commits={commits}
81
87
  isLoading={commitsAreLoading}
@@ -83,6 +89,6 @@ export const ConsolePullRequestDetail = ({
83
89
  now={now}
84
90
  />
85
91
  </ConsolePanel>
86
- </section>
92
+ </>
87
93
  );
88
94
  };
@@ -0,0 +1,47 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { ConsoleUndoToast } from './ConsoleUndoToast';
3
+
4
+ const meta: Meta<typeof ConsoleUndoToast> = {
5
+ title: 'Console/ConsoleUndoToast',
6
+ component: ConsoleUndoToast,
7
+ args: {
8
+ message: 'Approved — PR #851',
9
+ color: 'green',
10
+ remainingSeconds: 5,
11
+ progress: 1,
12
+ onUndo: () => {},
13
+ },
14
+ };
15
+
16
+ export default meta;
17
+
18
+ type Story = StoryObj<typeof ConsoleUndoToast>;
19
+
20
+ export const Approve: Story = {};
21
+
22
+ export const Reject: Story = {
23
+ args: {
24
+ message: 'Rejected — PR #853',
25
+ color: 'amber',
26
+ remainingSeconds: 3,
27
+ progress: 0.6,
28
+ },
29
+ };
30
+
31
+ export const StatusChange: Story = {
32
+ args: {
33
+ message: 'Status → Awaiting Workspace — #845',
34
+ color: 'blue',
35
+ remainingSeconds: 2,
36
+ progress: 0.4,
37
+ },
38
+ };
39
+
40
+ export const CloseIssue: Story = {
41
+ args: {
42
+ message: 'Closed — #845',
43
+ color: 'red',
44
+ remainingSeconds: 1,
45
+ progress: 0.2,
46
+ },
47
+ };
@@ -0,0 +1,54 @@
1
+ import { fireEvent, render } from '@testing-library/react';
2
+ import { ConsoleUndoToast } from './ConsoleUndoToast';
3
+
4
+ describe('ConsoleUndoToast', () => {
5
+ const baseProps = {
6
+ message: 'Approved — PR #851',
7
+ color: 'green' as const,
8
+ remainingSeconds: 5,
9
+ progress: 1,
10
+ onUndo: () => {},
11
+ };
12
+
13
+ it('shows the action message and the countdown', () => {
14
+ const { getByText } = render(<ConsoleUndoToast {...baseProps} />);
15
+ expect(getByText('Approved — PR #851')).toBeInTheDocument();
16
+ expect(getByText('5s')).toBeInTheDocument();
17
+ });
18
+
19
+ it('renders the color modifier class', () => {
20
+ const { container } = render(<ConsoleUndoToast {...baseProps} />);
21
+ expect(
22
+ container.querySelector('.console-undo-toast-green'),
23
+ ).toBeInTheDocument();
24
+ });
25
+
26
+ it('shrinks the progress bar with the remaining fraction', () => {
27
+ const { container } = render(
28
+ <ConsoleUndoToast {...baseProps} progress={0.4} />,
29
+ );
30
+ const bar = container.querySelector(
31
+ '.console-undo-toast-bar',
32
+ ) as HTMLElement;
33
+ expect(bar.style.width).toBe('40%');
34
+ });
35
+
36
+ it('clamps the progress bar width within 0 and 100 percent', () => {
37
+ const { container } = render(
38
+ <ConsoleUndoToast {...baseProps} progress={1.4} />,
39
+ );
40
+ const bar = container.querySelector(
41
+ '.console-undo-toast-bar',
42
+ ) as HTMLElement;
43
+ expect(bar.style.width).toBe('100%');
44
+ });
45
+
46
+ it('invokes onUndo when the Undo control is clicked', () => {
47
+ const onUndo = jest.fn();
48
+ const { getByText } = render(
49
+ <ConsoleUndoToast {...baseProps} onUndo={onUndo} />,
50
+ );
51
+ fireEvent.click(getByText('Undo'));
52
+ expect(onUndo).toHaveBeenCalledTimes(1);
53
+ });
54
+ });
@@ -0,0 +1,36 @@
1
+ import type { ConsoleToastColor } from '../../logic/actionToast';
2
+
3
+ export type ConsoleUndoToastProps = {
4
+ message: string;
5
+ color: ConsoleToastColor;
6
+ remainingSeconds: number;
7
+ progress: number;
8
+ onUndo: () => void;
9
+ };
10
+
11
+ export const ConsoleUndoToast = ({
12
+ message,
13
+ color,
14
+ remainingSeconds,
15
+ progress,
16
+ onUndo,
17
+ }: ConsoleUndoToastProps) => (
18
+ <div
19
+ className={`console-undo-toast console-undo-toast-${color}`}
20
+ role="status"
21
+ aria-live="polite"
22
+ >
23
+ <span className="console-undo-toast-message">{message}</span>
24
+ <button type="button" className="console-undo-toast-undo" onClick={onUndo}>
25
+ Undo
26
+ </button>
27
+ <span className="console-undo-toast-countdown" aria-hidden="true">
28
+ {remainingSeconds}s
29
+ </span>
30
+ <span
31
+ className="console-undo-toast-bar"
32
+ aria-hidden="true"
33
+ style={{ width: `${Math.max(0, Math.min(100, progress * 100))}%` }}
34
+ />
35
+ </div>
36
+ );