Skip to content

Commit d898dcd

Browse files
committed
feat(editor): add inspector components and section renderers
1 parent 22701c1 commit d898dcd

29 files changed

Lines changed: 2863 additions & 25 deletions

packages/editor/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,13 @@
140140
"prismjs": "^1.30.0"
141141
},
142142
"devDependencies": {
143+
"@radix-ui/react-icons": "^1.3.2",
143144
"@testing-library/react": "16.3.2",
144145
"@types/node": "catalog:",
145146
"@types/prismjs": "1.26.6",
146147
"@vitejs/plugin-react": "catalog:",
147148
"@vitest/browser-playwright": "4.0.17",
149+
"lucide-react": "^1.7.0",
148150
"playwright": "1.58.2",
149151
"postcss": "8.5.8",
150152
"postcss-import": "16.1.1",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { fireEvent, render } from '@testing-library/react';
2+
import { describe, expect, it, vi } from 'vitest';
3+
4+
vi.mock('../../../plugins/email-theming/themes', () => ({
5+
SUPPORTED_CSS_PROPERTIES: {
6+
borderWidth: { defaultValue: 0 },
7+
borderColor: { defaultValue: '#000000' },
8+
borderStyle: {
9+
defaultValue: 'solid',
10+
options: {
11+
solid: 'Solid',
12+
dashed: 'Dashed',
13+
dotted: 'Dotted',
14+
none: 'None',
15+
},
16+
},
17+
},
18+
}));
19+
20+
import { BorderPicker } from './border-picker';
21+
22+
describe('BorderPicker', () => {
23+
const uniformStyle = {
24+
borderWidth: '1',
25+
borderColor: '#000',
26+
borderStyle: 'solid',
27+
};
28+
29+
it('renders in uniform mode when all sides are equal', () => {
30+
const { getByText } = render(
31+
<BorderPicker styleObject={uniformStyle} onChange={() => {}} />,
32+
);
33+
expect(getByText('Border')).toBeDefined();
34+
});
35+
36+
it('toggles to per-side mode', () => {
37+
const handler = vi.fn();
38+
const { getByText } = render(
39+
<BorderPicker styleObject={uniformStyle} onChange={handler} />,
40+
);
41+
const perSideBtn = getByText('Per side')
42+
.closest('[data-re-inspector-tooltip]')
43+
?.querySelector('button');
44+
fireEvent.click(perSideBtn!);
45+
expect(handler).toHaveBeenCalled();
46+
});
47+
48+
it('does not fire onChange on initial render', () => {
49+
const handler = vi.fn();
50+
render(<BorderPicker styleObject={uniformStyle} onChange={handler} />);
51+
expect(handler).not.toHaveBeenCalled();
52+
});
53+
});

0 commit comments

Comments
 (0)