@startsimpli/ui 0.4.6 → 0.4.8
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/package.json +2 -1
- package/src/__mocks__/next/link.js +11 -0
- package/src/components/ActivityTimeline.tsx +173 -0
- package/src/components/LogActivityDialog.tsx +303 -0
- package/src/components/QuickLogButtons.tsx +32 -0
- package/src/components/account/__tests__/account.test.tsx +315 -0
- package/src/components/badge/StageBadge.tsx +31 -0
- package/src/components/badge/index.ts +3 -0
- package/src/components/command-palette/CommandGroup.tsx +23 -0
- package/src/components/command-palette/CommandPalette.tsx +327 -0
- package/src/components/command-palette/CommandResultItem.tsx +59 -0
- package/src/components/command-palette/__tests__/CommandGroup.test.tsx +81 -0
- package/src/components/command-palette/__tests__/CommandResultItem.test.tsx +166 -0
- package/src/components/command-palette/__tests__/command-palette-context.test.tsx +166 -0
- package/src/components/command-palette/__tests__/useCommandPaletteSearch.test.ts +271 -0
- package/src/components/command-palette/command-palette-context.tsx +51 -0
- package/src/components/command-palette/index.ts +9 -0
- package/src/components/command-palette/useCommandPaletteSearch.ts +114 -0
- package/src/components/compose/__tests__/compose.test.tsx +656 -0
- package/src/components/compose/compose-header.tsx +72 -0
- package/src/components/compose/compose-loading.tsx +13 -0
- package/src/components/compose/index.ts +6 -0
- package/src/components/compose/save-status-indicator.tsx +57 -0
- package/src/components/compose/send-confirmation-dialog.tsx +87 -0
- package/src/components/compose/subject-input.tsx +25 -0
- package/src/components/compose/useAutoSave.ts +93 -0
- package/src/components/dashboard/DashboardGrid.tsx +32 -0
- package/src/components/dashboard/DashboardSection.tsx +32 -0
- package/src/components/dashboard/MetricCard.tsx +129 -0
- package/src/components/dashboard/PeriodSelector.tsx +55 -0
- package/src/components/dashboard/PipelineFunnel.tsx +126 -0
- package/src/components/dashboard/SparklineTrend.tsx +102 -0
- package/src/components/dashboard/TopCampaigns.tsx +132 -0
- package/src/components/dashboard/__tests__/dashboard.test.tsx +785 -0
- package/src/components/dashboard/index.ts +20 -0
- package/src/components/dialog/ConfirmDialog.tsx +72 -0
- package/src/components/dialog/__tests__/ConfirmDialog.test.tsx +126 -0
- package/src/components/dialog/index.ts +3 -0
- package/src/components/email-dialogs/__tests__/email-dialogs.test.tsx +982 -0
- package/src/components/email-dialogs/index.ts +14 -0
- package/src/components/email-dialogs/merge-fields.tsx +196 -0
- package/src/components/email-dialogs/preview-dialog.tsx +194 -0
- package/src/components/email-dialogs/schedule-dialog.tsx +297 -0
- package/src/components/email-dialogs/template-picker.tsx +225 -0
- package/src/components/email-dialogs/test-send-dialog.tsx +188 -0
- package/src/components/email-editor/BlockRenderer.tsx +120 -0
- package/src/components/email-editor/__tests__/BlockRenderer.test.tsx +332 -0
- package/src/components/email-editor/__tests__/block-renderers.test.ts +624 -0
- package/src/components/email-editor/__tests__/email-html-renderer.test.ts +376 -0
- package/src/components/email-editor/add-block-menu.tsx +151 -0
- package/src/components/email-editor/block-toolbar.tsx +73 -0
- package/src/components/email-editor/blocks/__tests__/blocks.test.tsx +818 -0
- package/src/components/email-editor/blocks/button-block.tsx +44 -0
- package/src/components/email-editor/blocks/divider-block.tsx +43 -0
- package/src/components/email-editor/blocks/footer-block.tsx +39 -0
- package/src/components/email-editor/blocks/header-block.tsx +39 -0
- package/src/components/email-editor/blocks/image-block.tsx +61 -0
- package/src/components/email-editor/blocks/index.ts +9 -0
- package/src/components/email-editor/blocks/metrics-block.tsx +198 -0
- package/src/components/email-editor/blocks/social-block.tsx +75 -0
- package/src/components/email-editor/blocks/spacer-block.tsx +26 -0
- package/src/components/email-editor/blocks/text-block.tsx +75 -0
- package/src/components/email-editor/editor-sidebar.tsx +66 -0
- package/src/components/email-editor/email-editor.tsx +497 -0
- package/src/components/email-editor/hooks/__tests__/useDragDrop.test.ts +355 -0
- package/src/components/email-editor/hooks/__tests__/useEmailEditorState.test.ts +551 -0
- package/src/components/email-editor/hooks/useDragDrop.ts +181 -0
- package/src/components/email-editor/hooks/useEmailEditorState.ts +426 -0
- package/src/components/email-editor/index.ts +51 -0
- package/src/components/email-editor/panels/BlockPropertyPanel.tsx +637 -0
- package/src/components/email-editor/panels/GlobalStylesPanel.tsx +108 -0
- package/src/components/email-editor/panels/SectionSettingsPanel.tsx +80 -0
- package/src/components/email-editor/panels/__tests__/BlockPropertyPanel.test.tsx +707 -0
- package/src/components/email-editor/panels/__tests__/GlobalStylesPanel.test.tsx +226 -0
- package/src/components/email-editor/panels/index.ts +3 -0
- package/src/components/email-editor/renderer/block-renderers.ts +209 -0
- package/src/components/email-editor/renderer/email-html-renderer.ts +128 -0
- package/src/components/email-editor/types.ts +413 -0
- package/src/components/email-editor/utils/defaults.ts +116 -0
- package/src/components/email-editor/utils/undo-redo.ts +59 -0
- package/src/components/enrichment/EnrichButton.tsx +33 -0
- package/src/components/enrichment/EnrichmentProgress.tsx +66 -0
- package/src/components/enrichment/QualityBadge.tsx +43 -0
- package/src/components/enrichment/__tests__/enrichment.test.tsx +184 -0
- package/src/components/enrichment/index.ts +8 -0
- package/src/components/gantt/GanttBoardView.tsx +71 -0
- package/src/components/gantt/GanttChart.tsx +140 -887
- package/src/components/gantt/GanttFilterBar.tsx +100 -0
- package/src/components/gantt/GanttListView.tsx +63 -0
- package/src/components/gantt/GanttTimelineView.tsx +215 -0
- package/src/components/gantt/__tests__/GanttBoardView.test.tsx +305 -0
- package/src/components/gantt/__tests__/GanttFilterBar.test.tsx +544 -0
- package/src/components/gantt/__tests__/GanttListView.test.tsx +337 -0
- package/src/components/gantt/__tests__/GanttTimelineView.test.tsx +375 -0
- package/src/components/gantt/__tests__/gantt-utils.test.ts +341 -0
- package/src/components/gantt/__tests__/useGanttState.test.ts +535 -0
- package/src/components/gantt/hooks/useGanttState.ts +644 -0
- package/src/components/gantt/index.ts +10 -0
- package/src/components/gantt/types.ts +5 -5
- package/src/components/index.ts +46 -0
- package/src/components/integrations/ConnectionStatus.tsx +77 -0
- package/src/components/integrations/IntegrationCard.tsx +92 -0
- package/src/components/integrations/__tests__/integrations.test.tsx +191 -0
- package/src/components/integrations/index.ts +5 -0
- package/src/components/kanban/KanbanBoard.tsx +103 -0
- package/src/components/kanban/__tests__/kanban.test.tsx +157 -0
- package/src/components/kanban/index.ts +2 -0
- package/src/components/lists/CreateListDialog.tsx +158 -0
- package/src/components/lists/ListCard.tsx +77 -0
- package/src/components/lists/__tests__/lists.test.tsx +263 -0
- package/src/components/lists/index.ts +5 -0
- package/src/components/loading/__tests__/loading.test.tsx +114 -0
- package/src/components/navigation/__tests__/navigation.test.tsx +194 -0
- package/src/components/pipeline/StageTransitionModal.tsx +146 -0
- package/src/components/pipeline/__tests__/pipeline.test.tsx +169 -0
- package/src/components/pipeline/index.ts +2 -0
- package/src/components/settings/SettingsCard.tsx +33 -0
- package/src/components/settings/SettingsLayout.tsx +28 -0
- package/src/components/settings/SettingsNav.tsx +42 -0
- package/src/components/settings/__tests__/settings.test.tsx +181 -0
- package/src/components/settings/index.ts +6 -0
- package/src/components/wizard/__tests__/wizard.test.tsx +97 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { render, screen, fireEvent } from '@testing-library/react'
|
|
2
|
+
import { SettingsLayout } from '../SettingsLayout'
|
|
3
|
+
import { SettingsNav } from '../SettingsNav'
|
|
4
|
+
import { SettingsCard } from '../SettingsCard'
|
|
5
|
+
|
|
6
|
+
const TestIcon = () => <svg data-testid="settings-icon" />
|
|
7
|
+
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// SettingsLayout
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
describe('SettingsLayout', () => {
|
|
13
|
+
it('renders children', () => {
|
|
14
|
+
render(
|
|
15
|
+
<SettingsLayout>
|
|
16
|
+
<div>Child content</div>
|
|
17
|
+
</SettingsLayout>
|
|
18
|
+
)
|
|
19
|
+
expect(screen.getByText('Child content')).toBeInTheDocument()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('renders title when provided', () => {
|
|
23
|
+
render(
|
|
24
|
+
<SettingsLayout title="Settings">
|
|
25
|
+
<div />
|
|
26
|
+
</SettingsLayout>
|
|
27
|
+
)
|
|
28
|
+
expect(screen.getByText('Settings')).toBeInTheDocument()
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('does not render title element when title is not provided', () => {
|
|
32
|
+
render(
|
|
33
|
+
<SettingsLayout>
|
|
34
|
+
<div />
|
|
35
|
+
</SettingsLayout>
|
|
36
|
+
)
|
|
37
|
+
expect(screen.queryByRole('heading')).not.toBeInTheDocument()
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('renders description when both title and description are provided', () => {
|
|
41
|
+
render(
|
|
42
|
+
<SettingsLayout title="Settings" description="Manage your preferences">
|
|
43
|
+
<div />
|
|
44
|
+
</SettingsLayout>
|
|
45
|
+
)
|
|
46
|
+
expect(screen.getByText('Manage your preferences')).toBeInTheDocument()
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
it('does not render description when description is not provided', () => {
|
|
50
|
+
render(
|
|
51
|
+
<SettingsLayout title="Settings">
|
|
52
|
+
<div />
|
|
53
|
+
</SettingsLayout>
|
|
54
|
+
)
|
|
55
|
+
expect(screen.queryByText(/manage/i)).not.toBeInTheDocument()
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// SettingsNav
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
|
|
63
|
+
const navItems = [
|
|
64
|
+
{ id: 'account', label: 'Account', href: '/settings/account' },
|
|
65
|
+
{ id: 'billing', label: 'Billing', href: '/settings/billing', icon: TestIcon },
|
|
66
|
+
{ id: 'integrations', label: 'Integrations', href: '/settings/integrations' },
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
describe('SettingsNav', () => {
|
|
70
|
+
it('renders all nav items', () => {
|
|
71
|
+
render(
|
|
72
|
+
<SettingsNav items={navItems} onNavigate={jest.fn()} />
|
|
73
|
+
)
|
|
74
|
+
expect(screen.getByText('Account')).toBeInTheDocument()
|
|
75
|
+
expect(screen.getByText('Billing')).toBeInTheDocument()
|
|
76
|
+
expect(screen.getByText('Integrations')).toBeInTheDocument()
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it('renders icons for items that have icons', () => {
|
|
80
|
+
render(
|
|
81
|
+
<SettingsNav items={navItems} onNavigate={jest.fn()} />
|
|
82
|
+
)
|
|
83
|
+
expect(screen.getByTestId('settings-icon')).toBeInTheDocument()
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
it('marks active item with active styles', () => {
|
|
87
|
+
render(
|
|
88
|
+
<SettingsNav items={navItems} activeId="account" onNavigate={jest.fn()} />
|
|
89
|
+
)
|
|
90
|
+
const accountBtn = screen.getByRole('button', { name: 'Account' })
|
|
91
|
+
expect(accountBtn).toHaveClass('bg-gray-100', 'text-gray-900')
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
it('inactive items do not have active styles', () => {
|
|
95
|
+
render(
|
|
96
|
+
<SettingsNav items={navItems} activeId="account" onNavigate={jest.fn()} />
|
|
97
|
+
)
|
|
98
|
+
const billingBtn = screen.getByRole('button', { name: 'Billing' })
|
|
99
|
+
expect(billingBtn).not.toHaveClass('bg-gray-100')
|
|
100
|
+
expect(billingBtn).toHaveClass('text-gray-600')
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
it('calls onNavigate with the correct href on click', () => {
|
|
104
|
+
const onNavigate = jest.fn()
|
|
105
|
+
render(
|
|
106
|
+
<SettingsNav items={navItems} onNavigate={onNavigate} />
|
|
107
|
+
)
|
|
108
|
+
fireEvent.click(screen.getByRole('button', { name: 'Billing' }))
|
|
109
|
+
expect(onNavigate).toHaveBeenCalledWith('/settings/billing')
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
it('renders all items as buttons', () => {
|
|
113
|
+
render(
|
|
114
|
+
<SettingsNav items={navItems} onNavigate={jest.fn()} />
|
|
115
|
+
)
|
|
116
|
+
expect(screen.getAllByRole('button')).toHaveLength(navItems.length)
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
it('renders inside a nav element', () => {
|
|
120
|
+
render(
|
|
121
|
+
<SettingsNav items={navItems} onNavigate={jest.fn()} />
|
|
122
|
+
)
|
|
123
|
+
expect(screen.getByRole('navigation')).toBeInTheDocument()
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
// SettingsCard
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
|
|
131
|
+
describe('SettingsCard', () => {
|
|
132
|
+
it('renders the title', () => {
|
|
133
|
+
render(<SettingsCard title="API Keys" />)
|
|
134
|
+
expect(screen.getByText('API Keys')).toBeInTheDocument()
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
it('renders description when provided', () => {
|
|
138
|
+
render(<SettingsCard title="API Keys" description="Manage your API tokens." />)
|
|
139
|
+
expect(screen.getByText('Manage your API tokens.')).toBeInTheDocument()
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
it('does not render description when not provided', () => {
|
|
143
|
+
render(<SettingsCard title="API Keys" />)
|
|
144
|
+
expect(screen.queryByText(/manage/i)).not.toBeInTheDocument()
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
it('renders icon when provided', () => {
|
|
148
|
+
render(<SettingsCard title="API Keys" icon={TestIcon} />)
|
|
149
|
+
expect(screen.getByTestId('settings-icon')).toBeInTheDocument()
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
it('does not render icon when not provided', () => {
|
|
153
|
+
render(<SettingsCard title="API Keys" />)
|
|
154
|
+
expect(screen.queryByTestId('settings-icon')).not.toBeInTheDocument()
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
it('renders action node when provided', () => {
|
|
158
|
+
render(
|
|
159
|
+
<SettingsCard
|
|
160
|
+
title="API Keys"
|
|
161
|
+
action={<button>Add Key</button>}
|
|
162
|
+
/>
|
|
163
|
+
)
|
|
164
|
+
expect(screen.getByRole('button', { name: 'Add Key' })).toBeInTheDocument()
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
it('renders children content', () => {
|
|
168
|
+
render(
|
|
169
|
+
<SettingsCard title="API Keys">
|
|
170
|
+
<p>Card body content</p>
|
|
171
|
+
</SettingsCard>
|
|
172
|
+
)
|
|
173
|
+
expect(screen.getByText('Card body content')).toBeInTheDocument()
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
it('does not render children section when children is not provided', () => {
|
|
177
|
+
const { container } = render(<SettingsCard title="API Keys" />)
|
|
178
|
+
// The children container (px-6 pb-6 pt-0) should not be present
|
|
179
|
+
expect(container.querySelector('.px-6.pb-6.pt-0')).not.toBeInTheDocument()
|
|
180
|
+
})
|
|
181
|
+
})
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { SettingsLayout } from './SettingsLayout'
|
|
2
|
+
export type { SettingsLayoutProps, SettingsNavItem as SettingsLayoutNavItem } from './SettingsLayout'
|
|
3
|
+
export { SettingsNav } from './SettingsNav'
|
|
4
|
+
export type { SettingsNavProps, SettingsNavItem } from './SettingsNav'
|
|
5
|
+
export { SettingsCard } from './SettingsCard'
|
|
6
|
+
export type { SettingsCardProps } from './SettingsCard'
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react'
|
|
2
|
+
import { StepIndicator } from '../StepIndicator'
|
|
3
|
+
|
|
4
|
+
const steps = [
|
|
5
|
+
{ label: 'Account', description: 'Set up your account' },
|
|
6
|
+
{ label: 'Profile', description: 'Complete your profile' },
|
|
7
|
+
{ label: 'Review', description: 'Review and confirm' },
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
describe('StepIndicator', () => {
|
|
11
|
+
it('renders all step labels', () => {
|
|
12
|
+
render(<StepIndicator steps={steps} currentIndex={0} />)
|
|
13
|
+
expect(screen.getByText('Account')).toBeInTheDocument()
|
|
14
|
+
expect(screen.getByText('Profile')).toBeInTheDocument()
|
|
15
|
+
expect(screen.getByText('Review')).toBeInTheDocument()
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
it('renders step numbers for non-completed steps', () => {
|
|
19
|
+
render(<StepIndicator steps={steps} currentIndex={0} />)
|
|
20
|
+
// Step 1 is active (no check icon), steps 2 and 3 are upcoming
|
|
21
|
+
expect(screen.getByText('2')).toBeInTheDocument()
|
|
22
|
+
expect(screen.getByText('3')).toBeInTheDocument()
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
it('renders as an ordered list', () => {
|
|
26
|
+
render(<StepIndicator steps={steps} currentIndex={0} />)
|
|
27
|
+
expect(screen.getByRole('list')).toBeInTheDocument()
|
|
28
|
+
expect(screen.getAllByRole('listitem')).toHaveLength(3)
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('applies active styles to the current step label', () => {
|
|
32
|
+
render(<StepIndicator steps={steps} currentIndex={1} />)
|
|
33
|
+
const profileLabel = screen.getByText('Profile')
|
|
34
|
+
expect(profileLabel).toHaveClass('text-primary-600')
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('applies completed styles to past step labels', () => {
|
|
38
|
+
render(<StepIndicator steps={steps} currentIndex={2} />)
|
|
39
|
+
const accountLabel = screen.getByText('Account')
|
|
40
|
+
expect(accountLabel).toHaveClass('text-gray-600')
|
|
41
|
+
const profileLabel = screen.getByText('Profile')
|
|
42
|
+
expect(profileLabel).toHaveClass('text-gray-600')
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
it('applies upcoming styles to future step labels', () => {
|
|
46
|
+
render(<StepIndicator steps={steps} currentIndex={0} />)
|
|
47
|
+
const reviewLabel = screen.getByText('Review')
|
|
48
|
+
expect(reviewLabel).toHaveClass('text-gray-400')
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
it('does not render a connector after the last step', () => {
|
|
52
|
+
const { container } = render(<StepIndicator steps={steps} currentIndex={0} />)
|
|
53
|
+
// Connectors are h-0.5 divs between steps; should be n-1 = 2 connectors
|
|
54
|
+
const connectors = container.querySelectorAll('.h-0\\.5')
|
|
55
|
+
expect(connectors.length).toBe(steps.length - 1)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('completed step connectors have primary color', () => {
|
|
59
|
+
const { container } = render(<StepIndicator steps={steps} currentIndex={2} />)
|
|
60
|
+
const connectors = container.querySelectorAll('.h-0\\.5')
|
|
61
|
+
// Both connectors (between steps 1-2 and 2-3) should be completed
|
|
62
|
+
connectors.forEach((connector) => {
|
|
63
|
+
expect(connector).toHaveClass('bg-primary-600')
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('incomplete step connectors have gray color', () => {
|
|
68
|
+
const { container } = render(<StepIndicator steps={steps} currentIndex={0} />)
|
|
69
|
+
const connectors = container.querySelectorAll('.h-0\\.5')
|
|
70
|
+
connectors.forEach((connector) => {
|
|
71
|
+
expect(connector).toHaveClass('bg-gray-200')
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
it('applies custom className', () => {
|
|
76
|
+
const { container } = render(
|
|
77
|
+
<StepIndicator steps={steps} currentIndex={0} className="my-wizard" />
|
|
78
|
+
)
|
|
79
|
+
expect(container.firstChild).toHaveClass('my-wizard')
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
it('renders correctly with a single step', () => {
|
|
83
|
+
render(<StepIndicator steps={[{ label: 'Only Step' }]} currentIndex={0} />)
|
|
84
|
+
expect(screen.getByText('Only Step')).toBeInTheDocument()
|
|
85
|
+
// No connector for a single step
|
|
86
|
+
const { container } = render(
|
|
87
|
+
<StepIndicator steps={[{ label: 'Only Step' }]} currentIndex={0} />
|
|
88
|
+
)
|
|
89
|
+
expect(container.querySelectorAll('.h-0\\.5')).toHaveLength(0)
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
it('renders with currentIndex at last step', () => {
|
|
93
|
+
render(<StepIndicator steps={steps} currentIndex={2} />)
|
|
94
|
+
// "Review" should be active
|
|
95
|
+
expect(screen.getByText('Review')).toHaveClass('text-primary-600')
|
|
96
|
+
})
|
|
97
|
+
})
|