Skip to content

Commit a0eae87

Browse files
committed
chore: setup twenty-ui absolute src path
1 parent e0c8b7e commit a0eae87

File tree

28 files changed

+163
-92
lines changed

28 files changed

+163
-92
lines changed

Diff for: nx.json

+39-14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"cache": true,
2020
"dependsOn": ["^build"]
2121
},
22+
"storybook:build": {
23+
"cache": true,
24+
"inputs": [
25+
"default",
26+
"^default",
27+
"{projectRoot}/.storybook/**/*",
28+
"{projectRoot}/tsconfig.storybook.json"
29+
]
30+
},
31+
"storybook:dev": {
32+
"cache": true,
33+
"dependsOn": ["^build"]
34+
},
2235
"@nx/jest:jest": {
2336
"cache": true,
2437
"inputs": ["default", "^default", "{workspaceRoot}/jest.preset.js"],
@@ -39,6 +52,15 @@
3952
"{workspaceRoot}/.eslintrc.js",
4053
"{workspaceRoot}/tools/eslint-rules/**/*"
4154
]
55+
},
56+
"@nx/vite:test": {
57+
"cache": true,
58+
"inputs": ["default", "^default"]
59+
},
60+
"@nx/vite:build": {
61+
"cache": true,
62+
"dependsOn": ["^build"],
63+
"inputs": ["default", "^default"]
4264
}
4365
},
4466
"installation": {
@@ -47,28 +69,31 @@
4769
"generators": {
4870
"@nx/react": {
4971
"application": {
50-
"babel": true
72+
"babel": true,
73+
"style": "@emotion/styled",
74+
"linter": "eslint",
75+
"bundler": "vite",
76+
"compiler": "swc",
77+
"unitTestRunner": "jest",
78+
"projectNameAndRootFormat": "derived"
5179
},
5280
"library": {
53-
"unitTestRunner": "none"
81+
"style": "@emotion/styled",
82+
"linter": "eslint",
83+
"bundler": "vite",
84+
"compiler": "swc",
85+
"unitTestRunner": "jest",
86+
"projectNameAndRootFormat": "derived"
87+
},
88+
"component": {
89+
"style": "@emotion/styled"
5490
}
5591
}
5692
},
57-
"plugins": [
58-
{
59-
"plugin": "@nx/storybook/plugin",
60-
"options": {
61-
"buildStorybookTargetName": "build-storybook",
62-
"serveStorybookTargetName": "storybook",
63-
"testStorybookTargetName": "test-storybook",
64-
"staticStorybookTargetName": "static-storybook"
65-
}
66-
}
67-
],
6893
"tasksRunnerOptions": {
6994
"default": {
7095
"options": {
71-
"cacheableOperations": ["build-storybook"]
96+
"cacheableOperations": ["storybook:build"]
7297
}
7398
}
7499
},

Diff for: packages/twenty-front/jest.config.ts

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
1-
export default {
1+
import { JestConfigWithTsJest } from 'ts-jest';
2+
3+
const jestConfig: JestConfigWithTsJest = {
24
// to enable logs, comment out the following line
35
silent: true,
4-
setupFilesAfterEnv: ['./src/setupTests.ts'],
6+
displayName: 'twenty-front',
7+
preset: '../../jest.preset.js',
8+
setupFilesAfterEnv: ['./setupTests.ts'],
59
testEnvironment: 'jsdom',
10+
transformIgnorePatterns: ['../../node_modules/'],
611
transform: {
712
'^.+\\.(ts|js|tsx|jsx)$': '@swc/jest',
813
},
914
moduleNameMapper: {
1015
'~/(.+)': '<rootDir>/src/$1',
1116
'@/(.+)': '<rootDir>/src/modules/$1',
12-
'twenty-ui': '<rootDir>/../twenty-ui/src/index.ts',
13-
'@testing/(.+)': '<rootDir>/src/testing/$1',
1417
'\\.(jpg|jpeg|png|gif|webp|svg|svg\\?react)$':
1518
'<rootDir>/__mocks__/imageMock.js',
1619
'\\.css$': '<rootDir>/__mocks__/styleMock.js',
1720
},
21+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
1822
extensionsToTreatAsEsm: ['.ts', '.tsx'],
1923
coverageThreshold: {
2024
global: {
@@ -41,5 +45,7 @@ export default {
4145
'__stories__/*',
4246
'display/icon/index.ts',
4347
],
44-
// coverageDirectory: '<rootDir>/coverage/',
48+
coverageDirectory: './coverage',
4549
};
50+
51+
export default jestConfig;
File renamed without changes.

Diff for: packages/twenty-front/src/modules/activities/timeline/components/TimelineCreateButtonGroup.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { useSetRecoilState } from 'recoil';
2-
import { Button, ButtonGroup } from 'tsup.ui.index';
32
import { IconCheckbox, IconNotes, IconPaperclip } from 'twenty-ui';
43

54
import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer';
65
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
6+
import { Button } from '@/ui/input/button/components/Button';
7+
import { ButtonGroup } from '@/ui/input/button/components/ButtonGroup';
78
import { TAB_LIST_COMPONENT_ID } from '@/ui/layout/show-page/components/ShowPageRightContainer';
89
import { useTabList } from '@/ui/layout/tab/hooks/useTabList';
910

Diff for: packages/twenty-front/src/modules/error-handler/components/GenericErrorFallback.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { FallbackProps } from 'react-error-boundary';
2-
import { Button } from 'tsup.ui.index';
32
import { IconRefresh } from 'twenty-ui';
43

4+
import { Button } from '@/ui/input/button/components/Button';
55
import AnimatedPlaceholder from '@/ui/layout/animated-placeholder/components/AnimatedPlaceholder';
66
import {
77
AnimatedPlaceholderEmptyContainer,

Diff for: packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOptionSelect.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { useEffect, useState } from 'react';
22
import { useRecoilValue } from 'recoil';
3-
import { MenuItem, MenuItemMultiSelect } from 'tsup.ui.index';
43

54
import { FieldMetadataItemOption } from '@/object-metadata/types/FieldMetadataItem';
65
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
76
import { useOptionsForSelect } from '@/object-record/object-filter-dropdown/hooks/useOptionsForSelect';
87
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
8+
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
9+
import { MenuItemMultiSelect } from '@/ui/navigation/menu-item/components/MenuItemMultiSelect';
910
import { isDefined } from '~/utils/isDefined';
1011

1112
export const EMPTY_FILTER_VALUE = '';

Diff for: packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownRecordRemoveFilterMenuItem.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { MenuItem } from 'tsup.ui.index';
21
import { IconFilterOff } from 'twenty-ui';
32

43
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
54
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
65
import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown';
6+
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
77

88
export const ObjectFilterDropdownRecordRemoveFilterMenuItem = () => {
99
const { emptyFilterButKeepDefinition } = useFilterDropdown();

Diff for: packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnDropdownMenu.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { useCallback, useContext, useRef } from 'react';
22
import styled from '@emotion/styled';
3-
import { MenuItem } from 'tsup.ui.index';
43

54
import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext';
65
import { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu';
76
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
7+
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
88
import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside';
99

1010
const StyledMenuContainer = styled.div`

Diff for: packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { useCallback, useContext } from 'react';
22
import { css } from '@emotion/react';
33
import styled from '@emotion/styled';
44
import { motion } from 'framer-motion';
5-
import { LightIconButton, MenuItem } from 'tsup.ui.index';
65
import {
76
IconChevronDown,
87
IconDotsVertical,
@@ -32,10 +31,12 @@ import { useSetRecordInStore } from '@/object-record/record-store/hooks/useSetRe
3231
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
3332
import { isFieldCellSupported } from '@/object-record/utils/isFieldCellSupported';
3433
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
34+
import { LightIconButton } from '@/ui/input/button/components/LightIconButton';
3535
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
3636
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
3737
import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown';
3838
import { DropdownScope } from '@/ui/layout/dropdown/scopes/DropdownScope';
39+
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
3940
import { AnimatedEaseInOut } from '@/ui/utilities/animation/components/AnimatedEaseInOut';
4041

4142
const StyledListItem = styled(RecordDetailRecordsListItem)<{

Diff for: packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsMessageChannelsListCard.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useNavigate } from 'react-router-dom';
22
import styled from '@emotion/styled';
33
import { useRecoilValue } from 'recoil';
4-
import { LightIconButton } from 'tsup.ui.index';
54
import { IconChevronRight } from 'twenty-ui';
65

76
import { ConnectedAccount } from '@/accounts/types/ConnectedAccount';
@@ -16,6 +15,7 @@ import {
1615
} from '@/settings/accounts/components/SettingsAccountsSynchronizationStatus';
1716
import { SettingsListCard } from '@/settings/components/SettingsListCard';
1817
import { IconGmail } from '@/ui/display/icon/components/IconGmail';
18+
import { LightIconButton } from '@/ui/input/button/components/LightIconButton';
1919

2020
const StyledRowRightContainer = styled.div`
2121
align-items: center;

Diff for: packages/twenty-front/src/modules/ui/navigation/action-bar/components/ActionBarItem.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { useTheme } from '@emotion/react';
22
import styled from '@emotion/styled';
3-
import { MenuItem } from 'tsup.ui.index';
43
import { IconChevronDown } from 'twenty-ui';
54

65
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
76
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
87
import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown';
98
import { ActionBarEntry } from '@/ui/navigation/action-bar/types/ActionBarEntry';
9+
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
1010
import { MenuItemAccent } from '@/ui/navigation/menu-item/types/MenuItemAccent';
1111

1212
type ActionBarItemProps = {

Diff for: packages/twenty-front/src/modules/ui/navigation/menu-item/components/MenuItemMultiSelect.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import styled from '@emotion/styled';
2-
import { Tag } from 'tsup.ui.index';
32

43
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
4+
import { Tag } from '@/ui/display/tag/components/Tag';
55
import { Checkbox } from '@/ui/input/components/Checkbox';
66
import { MenuItemLeftContent } from '@/ui/navigation/menu-item/internals/components/MenuItemLeftContent';
77
import { ThemeColor } from '@/ui/theme/constants/MainColorNames';

Diff for: packages/twenty-front/src/modules/ui/navigation/menu-item/components/MenuItemSelectTag.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useTheme } from '@emotion/react';
2-
import { Tag } from 'tsup.ui.index';
32
import { IconCheck } from 'twenty-ui';
43

4+
import { Tag } from '@/ui/display/tag/components/Tag';
55
import { ThemeColor } from '@/ui/theme/constants/MainColorNames';
66

77
import { StyledMenuItemLeftContent } from '../internals/components/StyledMenuItemBase';

Diff for: packages/twenty-front/src/nx-react.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/// <reference types="@nx/react/typings/cssmodule.d.ts" />
2+
/// <reference types="@nx/react/typings/image.d.ts" />
3+
/// <reference types="@nx/react/typings/styled-jsx.d.ts" />

Diff for: packages/twenty-front/src/pages/auth/Authorize.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { useEffect, useState } from 'react';
22
import { useNavigate, useSearchParams } from 'react-router-dom';
33
import styled from '@emotion/styled';
4-
import { MainButton } from 'tsup.ui.index';
54

65
import { AppPath } from '@/types/AppPath';
6+
import { MainButton } from '@/ui/input/button/components/MainButton';
77
import { useAuthorizeAppMutation } from '~/generated/graphql';
88
import { isDefined } from '~/utils/isDefined';
99

Diff for: packages/twenty-front/tsconfig.app.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
{
22
"extends": "./tsconfig.json",
33
"compilerOptions": {
4-
"outDir": "../../dist/out-tsc"
4+
"outDir": "../../dist/out-tsc",
5+
"types": ["node"]
56
},
67
"exclude": [
78
"**/*.spec.ts",
89
"**/*.test.ts",
910
"**/*.spec.tsx",
1011
"**/*.test.tsx",
11-
"jest.config.ts",
12-
"tsup.config.ts",
13-
"tsup.ui.index.tsx"
12+
"**/*.spec.js",
13+
"**/*.test.js",
14+
"**/*.spec.jsx",
15+
"**/*.test.jsx",
16+
"**/*.stories.tsx"
1417
],
1518
"include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
1619
}

Diff for: packages/twenty-front/tsconfig.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
"skipLibCheck": true,
88
"allowJs": true,
99
"esModuleInterop": true,
10-
"baseUrl": ".",
1110
"paths": {
12-
"@/*": ["src/modules/*"],
13-
"~/*": ["src/*"],
14-
"twenty-ui": ["../twenty-ui/src/index.ts"]
11+
"@/*": ["packages/twenty-front/src/modules/*"],
12+
"~/*": ["packages/twenty-front/src/*"],
13+
"twenty-ui": ["packages/twenty-ui/src/index.ts"]
1514
},
1615

1716
/* Bundler mode */
@@ -28,7 +27,7 @@
2827
"noUnusedLocals": false,
2928
"noUnusedParameters": false,
3029
"noFallthroughCasesInSwitch": true,
31-
"forceConsistentCasingInFileNames": true,
30+
"forceConsistentCasingInFileNames": true
3231
},
3332
"files": [],
3433
"include": [],
@@ -40,4 +39,5 @@
4039
"path": "./tsconfig.spec.json"
4140
}
4241
],
42+
"extends": "../../tsconfig.base.json"
4343
}

Diff for: packages/twenty-front/tsconfig.spec.json

+13-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,19 @@
77
"include": [
88
"vite.config.ts",
99
"jest.config.ts",
10-
"**/*.test.ts",
11-
"**/*.test.tsx",
12-
"**/*.spec.ts",
13-
"**/*.d.ts",
10+
"setupTests.ts",
11+
"tsup.config.ts",
12+
"tsup.ui.index.tsx",
1413
".storybook/**/*",
15-
"**/*.stories.tsx"
14+
"src/**/*.test.ts",
15+
"src/**/*.spec.ts",
16+
"src/**/*.test.tsx",
17+
"src/**/*.spec.tsx",
18+
"src/**/*.test.js",
19+
"src/**/*.spec.js",
20+
"src/**/*.test.jsx",
21+
"src/**/*.spec.jsx",
22+
"src/**/*.d.ts",
23+
"src/**/*.stories.tsx"
1624
]
1725
}

Diff for: packages/twenty-front/vite.config.ts

+24-15
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import react from '@vitejs/plugin-react-swc';
22
import { defineConfig, loadEnv } from 'vite';
33
import checker from 'vite-plugin-checker';
44
import svgr from 'vite-plugin-svgr';
5-
import tsconfigPaths from 'vite-tsconfig-paths';
65

76
type Checkers = Parameters<typeof checker>[0];
87

@@ -31,24 +30,34 @@ export default defineConfig(({ command, mode }) => {
3130
};
3231
}
3332

34-
const plugins = [
35-
react({ jsxImportSource: '@emotion/react' }),
36-
tsconfigPaths(),
37-
svgr(),
38-
checker(checkers),
39-
];
40-
4133
return {
42-
// base: ,
43-
envPrefix: 'REACT_APP_',
44-
build: {
45-
outDir: 'build',
46-
},
47-
plugins,
34+
root: __dirname,
35+
cacheDir: '../../node_modules/.vite/packages/twenty-front',
36+
4837
server: {
49-
// open: true,
5038
port: 3001,
39+
host: 'localhost',
5140
},
41+
42+
plugins: [
43+
react({ jsxImportSource: '@emotion/react' }),
44+
svgr(),
45+
checker(checkers),
46+
],
47+
48+
resolve: {
49+
alias: {
50+
'~': './src',
51+
'@': './src/modules',
52+
},
53+
},
54+
55+
build: {
56+
outDir: 'build',
57+
},
58+
59+
envPrefix: 'REACT_APP_',
60+
5261
define: {
5362
'process.env': {
5463
REACT_APP_SERVER_BASE_URL,

0 commit comments

Comments
 (0)