[REFACTOR] Twenty UI multi barrel (#11301)

# Introduction
closes https://github.com/twentyhq/core-team-issues/issues/591
Same than for `twenty-shared` made in
https://github.com/twentyhq/twenty/pull/11083.

## TODO
- [x] Manual migrate twenty-website twenty-ui imports

## What's next:
- Generate barrel and migration script factorization within own package
+ tests
- Refactoring using preconstruct ? TimeBox
- Lint circular dependencies
- Lint import from barrel and forbid them

### Preconstruct
We need custom rollup plugins addition, but preconstruct does not expose
its rollup configuration. It might be possible to handle this using the
babel overrides. But was a big tunnel.
We could give it a try afterwards ! ( allowing cjs interop and stuff
like that )
Stuck to vite lib app

Closed related PRs:
- https://github.com/twentyhq/twenty/pull/11294
- https://github.com/twentyhq/twenty/pull/11203
This commit is contained in:
Paul Rastoin
2025-04-03 11:47:55 +02:00
committed by GitHub
parent 8c9fcfe5a4
commit 4a4e65fe4a
1009 changed files with 5757 additions and 2828 deletions

View File

@ -1,14 +1,9 @@
import { useEffect } from 'react';
import { ThemeProvider } from '@emotion/react';
import { Preview } from '@storybook/react';
import { THEME_DARK, THEME_LIGHT, ThemeContextProvider } from '@ui/theme';
import { useEffect } from 'react';
import { useDarkMode } from 'storybook-dark-mode';
import {
THEME_DARK,
THEME_LIGHT,
ThemeContextProvider,
} from '../src/theme/index';
const preview: Preview = {
decorators: [
(Story) => {

View File

@ -21,7 +21,7 @@ const jestConfig: JestConfigWithTsJest = {
],
},
moduleNameMapper: {
'\\.(jpg|jpeg|png|gif|webp|svg|svg\\?react)$':
'\\.(jpg|jpeg|png|gif|webp|svg|svg)$':
'<rootDir>/__mocks__/imageMock.js',
...pathsToModuleNameMapper(tsConfig.compilerOptions.paths, {
prefix: '<rootDir>/',

View File

@ -1,19 +1,124 @@
{
"name": "twenty-ui",
"version": "0.51.0-canary",
"main": "dist/index.cjs",
"module": "dist/index.mjs",
"style": "./dist/style.css",
"type": "module",
"main": "./src/index.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"require": "./dist/index.cjs"
}
"devDependencies": {
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@prettier/sync": "^0.5.2",
"@swc/plugin-emotion": "4.0.2",
"@types/babel__preset-env": "^7",
"@types/react": "^18.2.39",
"@types/react-dom": "^18.2.15",
"@wyw-in-js/babel-preset": "^0.6.0",
"babel-plugin-inline-import": "^3.0.0",
"babel-plugin-inline-react-svg": "^2.0.2",
"babel-plugin-module-resolver": "^5.0.2",
"cpx": "^1.5.0",
"tsx": "^4.19.3",
"vite-plugin-svgr": "^4.3.0"
},
"dependencies": {
"twenty-shared": "workspace:*"
"@emotion/is-prop-valid": "^1.3.0",
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@linaria/react": "^6.2.1",
"@monaco-editor/react": "^4.6.0",
"@sniptt/guards": "^0.2.0",
"@tabler/icons-react": "^3.31.0",
"date-fns": "^2.30.0",
"framer-motion": "^11.18.0",
"glob": "^11.0.1",
"hex-rgb": "^5.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-responsive": "^9.0.2",
"react-router-dom": "^6.4.4",
"react-tooltip": "^5.13.1",
"recoil": "^0.7.7",
"twenty-shared": "workspace:*",
"zod": "3.23.8"
},
"scripts": {
"build": "npx vite build"
},
"files": [
"dist",
"assets",
"accessibility",
"components",
"display",
"feedback",
"input",
"json-visualizer",
"layout",
"navigation",
"testing",
"theme",
"utilities"
],
"sideEffects": [
"**/*.css"
],
"exports": {
"./style.css": "./dist/style.css",
"./accessibility": {
"types": "./dist/accessibility/index.d.ts",
"import": "./dist/accessibility.mjs",
"require": "./dist/accessibility.cjs"
},
"./components": {
"types": "./dist/components/index.d.ts",
"import": "./dist/components.mjs",
"require": "./dist/components.cjs"
},
"./display": {
"types": "./dist/display/index.d.ts",
"import": "./dist/display.mjs",
"require": "./dist/display.cjs"
},
"./feedback": {
"types": "./dist/feedback/index.d.ts",
"import": "./dist/feedback.mjs",
"require": "./dist/feedback.cjs"
},
"./input": {
"types": "./dist/input/index.d.ts",
"import": "./dist/input.mjs",
"require": "./dist/input.cjs"
},
"./json-visualizer": {
"types": "./dist/json-visualizer/index.d.ts",
"import": "./dist/json-visualizer.mjs",
"require": "./dist/json-visualizer.cjs"
},
"./layout": {
"types": "./dist/layout/index.d.ts",
"import": "./dist/layout.mjs",
"require": "./dist/layout.cjs"
},
"./navigation": {
"types": "./dist/navigation/index.d.ts",
"import": "./dist/navigation.mjs",
"require": "./dist/navigation.cjs"
},
"./testing": {
"types": "./dist/testing/index.d.ts",
"import": "./dist/testing.mjs",
"require": "./dist/testing.cjs"
},
"./theme": {
"types": "./dist/theme/index.d.ts",
"import": "./dist/theme.mjs",
"require": "./dist/theme.cjs"
},
"./utilities": {
"types": "./dist/utilities/index.d.ts",
"import": "./dist/utilities.mjs",
"require": "./dist/utilities.cjs"
}
}
}

View File

@ -3,18 +3,60 @@
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/twenty-ui/src",
"projectType": "library",
"tags": ["scope:frontend"],
"tags": [
"scope:frontend"
],
"targets": {
"build": {
"dependsOn": ["^build", "generateBarrels"]
"dependsOn": [
"^build",
"generateBarrels"
],
"outputs": [
"{projectRoot}/dist",
"{projectRoot}/accessibility/package.json",
"{projectRoot}/accessibility/dist",
"{projectRoot}/components/package.json",
"{projectRoot}/components/dist",
"{projectRoot}/display/package.json",
"{projectRoot}/display/dist",
"{projectRoot}/feedback/package.json",
"{projectRoot}/feedback/dist",
"{projectRoot}/input/package.json",
"{projectRoot}/input/dist",
"{projectRoot}/json-visualizer/package.json",
"{projectRoot}/json-visualizer/dist",
"{projectRoot}/layout/package.json",
"{projectRoot}/layout/dist",
"{projectRoot}/navigation/package.json",
"{projectRoot}/navigation/dist",
"{projectRoot}/testing/package.json",
"{projectRoot}/testing/dist",
"{projectRoot}/theme/package.json",
"{projectRoot}/theme/dist",
"{projectRoot}/utilities/package.json",
"{projectRoot}/utilities/dist"
]
},
"generateBarrels": {
"executor": "nx:run-commands",
"cache": true,
"inputs": ["production", "{projectRoot}/scripts/generateBarrels.js"],
"outputs": ["{projectRoot}/src/index.ts", "{projectRoot}/src/*/index.ts"],
"inputs": [
"production",
"{projectRoot}/scripts/generateBarrels.ts"
],
"outputs": [
"{projectRoot}/src/**/*/index.ts",
"{projectRoot}/package.json"
],
"options": {
"command": "node {projectRoot}/scripts/generateBarrels.js"
"command": "tsx {projectRoot}/scripts/generateBarrels.ts"
}
},
"clean": {
"executor": "nx:run-commands",
"options": {
"command": "rimraf {projectRoot}/dist"
}
},
"lint": {
@ -44,7 +86,9 @@
}
},
"storybook:serve:dev": {
"options": { "port": 6007 }
"options": {
"port": 6007
}
},
"storybook:serve:static": {
"options": {
@ -57,10 +101,14 @@
},
"storybook:coverage": {},
"storybook:test": {
"options": { "port": 6007 }
"options": {
"port": 6007
}
},
"storybook:serve-and-test:static": {
"options": { "port": 6007 }
"options": {
"port": 6007
}
}
}
}

View File

@ -1,105 +0,0 @@
import * as fs from 'fs';
import path from 'path';
import slash from 'slash';
const extensions = ['.ts', '.tsx'];
const excludedExtensions = [
'.test.ts',
'.test.tsx',
'.spec.ts',
'.spec.tsx',
'.stories.ts',
'.stories.tsx',
];
const excludedDirectories = [
'__tests__',
'__mocks__',
'__stories__',
'internal',
];
const srcPath = path.resolve('packages/twenty-ui/src');
/**
* @param {string} directoryPath
* @returns {string[]}
*/
const getSubDirectoryPaths = (directoryPath) =>
fs
.readdirSync(directoryPath)
.filter(
(fileOrDirectoryName) =>
!excludedDirectories.includes(fileOrDirectoryName) &&
fs
.statSync(path.join(directoryPath, fileOrDirectoryName))
.isDirectory(),
)
.map((subDirectoryName) => path.join(directoryPath, subDirectoryName));
/**
*
* @param {string} directoryPath
* @returns {string[]}
*/
const getDirectoryPathsRecursive = (directoryPath) => [
directoryPath,
...getSubDirectoryPaths(directoryPath).flatMap(getDirectoryPathsRecursive),
];
/**
*
* @param {string} directoryPath
* @returns {string[]}
*/
const getFilesPaths = (directoryPath) =>
fs
.readdirSync(directoryPath)
.filter(
(filePath) =>
fs.statSync(path.join(directoryPath, filePath)).isFile() &&
!filePath.startsWith('index.') &&
extensions.some((extension) => filePath.endsWith(extension)) &&
excludedExtensions.every(
(excludedExtension) => !filePath.endsWith(excludedExtension),
),
);
const moduleDirectories = getSubDirectoryPaths(srcPath);
moduleDirectories.forEach((moduleDirectoryPath) => {
const directoryPaths = getDirectoryPathsRecursive(moduleDirectoryPath);
const moduleExports = directoryPaths
.flatMap((directoryPath) => {
const directFilesPaths = getFilesPaths(directoryPath);
return directFilesPaths.map((filePath) => {
const fileName = filePath.split('.').slice(0, -1).join('.');
return `export * from './${slash(path.relative(
moduleDirectoryPath,
path.join(directoryPath, fileName),
))}';`;
});
})
.sort((a, b) => a.localeCompare(b))
.join('\n');
fs.writeFileSync(
path.join(moduleDirectoryPath, 'index.ts'),
`${moduleExports}\n`,
'utf-8',
);
});
const mainBarrelExports = moduleDirectories
.map(
(moduleDirectoryPath) =>
`export * from './${slash(path.relative(srcPath, moduleDirectoryPath))}';`,
)
.sort((a, b) => a.localeCompare(b))
.join('\n');
fs.writeFileSync(
path.join(srcPath, 'index.ts'),
`${mainBarrelExports}\n`,
'utf-8',
);

View File

@ -0,0 +1,484 @@
import prettier from '@prettier/sync';
import * as fs from 'fs';
import { globSync } from 'glob';
import path from 'path';
import { Options } from 'prettier';
import slash from 'slash';
import ts from 'typescript';
// TODO prastoin refactor this file in several one into its dedicated package and make it a TypeScript CLI
const INDEX_FILENAME = 'index';
const PACKAGE_JSON_FILENAME = 'package.json';
const NX_PROJECT_CONFIGURATION_FILENAME = 'project.json';
const PACKAGE_PATH = path.resolve('packages/twenty-ui');
const SRC_PATH = path.resolve(`${PACKAGE_PATH}/src`);
const PACKAGE_JSON_PATH = path.join(PACKAGE_PATH, PACKAGE_JSON_FILENAME);
const NX_PROJECT_CONFIGURATION_PATH = path.join(
PACKAGE_PATH,
NX_PROJECT_CONFIGURATION_FILENAME,
);
const prettierConfigFile = prettier.resolveConfigFile();
if (prettierConfigFile == null) {
throw new Error('Prettier config file not found');
}
const prettierConfiguration = prettier.resolveConfig(prettierConfigFile);
const prettierFormat = (str: string, parser: Options['parser']) =>
prettier.format(str, {
...prettierConfiguration,
parser,
});
type createTypeScriptFileArgs = {
path: string;
content: string;
filename: string;
};
const createTypeScriptFile = ({
content,
path: filePath,
filename,
}: createTypeScriptFileArgs) => {
const header = `
/*
* _____ _
*|_ _|_ _____ _ __ | |_ _ _
* | | \\ \\ /\\ / / _ \\ '_ \\| __| | | | Auto-generated file
* | | \\ V V / __/ | | | |_| |_| | Any edits to this will be overridden
* |_| \\_/\\_/ \\___|_| |_|\\__|\\__, |
* |___/
*/
`;
const formattedContent = prettierFormat(
`${header}\n${content}\n`,
'typescript',
);
fs.writeFileSync(
path.join(filePath, `${filename}.ts`),
formattedContent,
'utf-8',
);
};
const getLastPathFolder = (pathStr: string) => path.basename(pathStr);
const getSubDirectoryPaths = (directoryPath: string): string[] => {
const pattern = slash(path.join(directoryPath, '*/'));
return globSync(pattern, {
ignore: [...EXCLUDED_DIRECTORIES],
cwd: SRC_PATH,
nodir: false,
maxDepth: 1,
}).sort((a, b) => a.localeCompare(b));
};
const partitionFileExportsByType = (declarations: DeclarationOccurence[]) => {
return declarations.reduce<{
typeAndInterfaceDeclarations: DeclarationOccurence[];
otherDeclarations: DeclarationOccurence[];
}>(
(acc, { kind, name }) => {
if (kind === 'type' || kind === 'interface') {
return {
...acc,
typeAndInterfaceDeclarations: [
...acc.typeAndInterfaceDeclarations,
{ kind, name },
],
};
}
return {
...acc,
otherDeclarations: [...acc.otherDeclarations, { kind, name }],
};
},
{
typeAndInterfaceDeclarations: [],
otherDeclarations: [],
},
);
};
const generateModuleIndexFiles = (exportByBarrel: ExportByBarrel[]) => {
return exportByBarrel.map<createTypeScriptFileArgs>(
({ barrel: { moduleDirectory }, allFileExports }) => {
const content = allFileExports
.sort((a, b) => a.file.localeCompare(b.file))
.map(({ exports, file }) => {
const { otherDeclarations, typeAndInterfaceDeclarations } =
partitionFileExportsByType(exports);
const fileWithoutExtension = path.parse(file).name;
const pathToImport = slash(
path.relative(
moduleDirectory,
path.join(path.dirname(file), fileWithoutExtension),
),
);
const mapDeclarationNameAndJoin = (
declarations: DeclarationOccurence[],
) => declarations.map(({ name }) => name).join(', ');
const typeExport =
typeAndInterfaceDeclarations.length > 0
? `export type { ${mapDeclarationNameAndJoin(typeAndInterfaceDeclarations)} } from "./${pathToImport}"`
: '';
const othersExport =
otherDeclarations.length > 0
? `export { ${mapDeclarationNameAndJoin(otherDeclarations)} } from "./${pathToImport}"`
: '';
return [typeExport, othersExport]
.filter((el) => el !== '')
.join('\n');
})
.join('\n');
return {
content,
path: moduleDirectory,
filename: INDEX_FILENAME,
};
},
);
};
type JsonUpdate = Record<string, any>;
type WriteInJsonFileArgs = {
content: JsonUpdate;
file: string;
};
const updateJsonFile = ({ content, file }: WriteInJsonFileArgs) => {
const updatedJsonFile = JSON.stringify(content);
const formattedContent = prettierFormat(updatedJsonFile, 'json-stringify');
fs.writeFileSync(file, formattedContent, 'utf-8');
};
const writeInPackageJson = (update: JsonUpdate) => {
const rawJsonFile = fs.readFileSync(PACKAGE_JSON_PATH, 'utf-8');
const initialJsonFile = JSON.parse(rawJsonFile);
updateJsonFile({
file: PACKAGE_JSON_PATH,
content: {
...initialJsonFile,
...update,
},
});
};
const updateNxProjectConfigurationBuildOutputs = (outputs: JsonUpdate) => {
const rawJsonFile = fs.readFileSync(NX_PROJECT_CONFIGURATION_PATH, 'utf-8');
const initialJsonFile = JSON.parse(rawJsonFile);
updateJsonFile({
file: NX_PROJECT_CONFIGURATION_PATH,
content: {
...initialJsonFile,
targets: {
...initialJsonFile.targets,
build: {
...initialJsonFile.targets.build,
outputs,
},
},
},
});
};
type ExportOccurence = {
types: string;
import: string;
require: string;
};
type ExportsConfig = Record<string, ExportOccurence | string>;
const generateModulePackageExports = (moduleDirectories: string[]) => {
return moduleDirectories.reduce<ExportsConfig>(
(acc, moduleDirectory) => {
const moduleName = getLastPathFolder(moduleDirectory);
if (moduleName === undefined) {
throw new Error(
`Should never occur, moduleName is undefined ${moduleDirectory}`,
);
}
return {
...acc,
[`./${moduleName}`]: {
types: `./dist/${moduleName}/index.d.ts`,
import: `./dist/${moduleName}.mjs`,
require: `./dist/${moduleName}.cjs`,
},
};
},
{
'./style.css': './dist/style.css',
},
);
};
const computePackageJsonFilesAndExportsConfig = (
moduleDirectories: string[],
) => {
const entrypoints = moduleDirectories.map(getLastPathFolder);
const exports = generateModulePackageExports(moduleDirectories);
return {
exports,
files: ['dist', 'assets', ...entrypoints],
};
};
const computeProjectNxBuildOutputsPath = (moduleDirectories: string[]) => {
const dynamicOutputsPath = moduleDirectories
.map(getLastPathFolder)
.flatMap((barrelName) =>
['package.json', 'dist'].map(
(subPath) => `{projectRoot}/${barrelName}/${subPath}`,
),
);
return ['{projectRoot}/dist', ...dynamicOutputsPath];
};
const EXCLUDED_EXTENSIONS = [
'**/*.test.ts',
'**/*.test.tsx',
'**/*.spec.ts',
'**/*.spec.tsx',
'**/*.stories.ts',
'**/*.stories.tsx',
] as const;
const EXCLUDED_DIRECTORIES = [
'**/__tests__/**',
'**/__mocks__/**',
'**/__stories__/**',
'**/internal/**',
'**/assets/**',
] as const;
function getTypeScriptFiles(
directoryPath: string,
includeIndex: boolean = false,
): string[] {
const pattern = slash(path.join(directoryPath, '**', '*.{ts,tsx}'));
const files = globSync(pattern, {
cwd: SRC_PATH,
nodir: true,
ignore: [...EXCLUDED_EXTENSIONS, ...EXCLUDED_DIRECTORIES],
});
return files.filter(
(file) =>
!file.endsWith('.d.ts') &&
(includeIndex ? true : !file.endsWith('index.ts')),
);
}
const getKind = (
node: ts.VariableStatement,
): Extract<ExportKind, 'const' | 'let' | 'var'> => {
const isConst = (node.declarationList.flags & ts.NodeFlags.Const) !== 0;
if (isConst) {
return 'const';
}
const isLet = (node.declarationList.flags & ts.NodeFlags.Let) !== 0;
if (isLet) {
return 'let';
}
return 'var';
};
function extractExportsFromSourceFile(sourceFile: ts.SourceFile) {
const exports: DeclarationOccurence[] = [];
function visit(node: ts.Node) {
if (!ts.canHaveModifiers(node)) {
return ts.forEachChild(node, visit);
}
const modifiers = ts.getModifiers(node);
const isExport = modifiers?.some(
(mod) => mod.kind === ts.SyntaxKind.ExportKeyword,
);
if (!isExport && !ts.isExportDeclaration(node)) {
return ts.forEachChild(node, visit);
}
switch (true) {
case ts.isTypeAliasDeclaration(node):
exports.push({
kind: 'type',
name: node.name.text,
});
break;
case ts.isInterfaceDeclaration(node):
exports.push({
kind: 'interface',
name: node.name.text,
});
break;
case ts.isEnumDeclaration(node):
exports.push({
kind: 'enum',
name: node.name.text,
});
break;
case ts.isFunctionDeclaration(node) && node.name !== undefined:
exports.push({
kind: 'function',
name: node.name.text,
});
break;
case ts.isVariableStatement(node):
node.declarationList.declarations.forEach((decl) => {
const kind = getKind(node);
if (ts.isIdentifier(decl.name)) {
exports.push({
kind,
name: decl.name.text,
});
} else if (ts.isObjectBindingPattern(decl.name)) {
decl.name.elements.forEach((element) => {
if (
!ts.isBindingElement(element) ||
!ts.isIdentifier(element.name)
) {
return;
}
exports.push({
kind,
name: element.name.text,
});
});
}
});
break;
case ts.isClassDeclaration(node) && node.name !== undefined:
exports.push({
kind: 'class',
name: node.name.text,
});
break;
case ts.isExportDeclaration(node):
if (node.exportClause && ts.isNamedExports(node.exportClause)) {
node.exportClause.elements.forEach((element) => {
const exportName = element.name.text;
// Check both the declaration and the individual specifier for type-only exports
const isTypeExport =
node.isTypeOnly || ts.isTypeOnlyExportDeclaration(node);
if (isTypeExport) {
// should handle kind
exports.push({
kind: 'type',
name: exportName,
});
return;
}
exports.push({
kind: 'const',
name: exportName,
});
});
}
break;
}
return ts.forEachChild(node, visit);
}
visit(sourceFile);
return exports;
}
type ExportKind =
| 'type'
| 'interface'
| 'enum'
| 'function'
| 'const'
| 'let'
| 'var'
| 'class';
type DeclarationOccurence = { kind: ExportKind; name: string };
type FileExports = Array<{
file: string;
exports: DeclarationOccurence[];
}>;
function findAllExports(directoryPath: string): FileExports {
const results: FileExports = [];
const files = getTypeScriptFiles(directoryPath);
for (const file of files) {
const sourceFile = ts.createSourceFile(
file,
fs.readFileSync(file, 'utf8'),
ts.ScriptTarget.Latest,
true,
);
const exports = extractExportsFromSourceFile(sourceFile);
if (exports.length > 0) {
results.push({
file,
exports,
});
}
}
return results;
}
type ExportByBarrel = {
barrel: {
moduleName: string;
moduleDirectory: string;
};
allFileExports: FileExports;
};
const retrieveExportsByBarrel = (barrelDirectories: string[]) => {
return barrelDirectories.map<ExportByBarrel>((moduleDirectory) => {
const moduleExportsPerFile = findAllExports(moduleDirectory);
const moduleName = getLastPathFolder(moduleDirectory);
if (!moduleName) {
throw new Error(
`Should never occur moduleName not found ${moduleDirectory}`,
);
}
return {
barrel: {
moduleName,
moduleDirectory,
},
allFileExports: moduleExportsPerFile,
};
});
};
const main = () => {
const moduleDirectories = getSubDirectoryPaths(SRC_PATH);
const exportsByBarrel = retrieveExportsByBarrel(moduleDirectories);
const moduleIndexFiles = generateModuleIndexFiles(exportsByBarrel);
const packageJsonConfig =
computePackageJsonFilesAndExportsConfig(moduleDirectories);
const nxBuildOutputsPath =
computeProjectNxBuildOutputsPath(moduleDirectories);
updateNxProjectConfigurationBuildOutputs(nxBuildOutputsPath);
writeInPackageJson(packageJsonConfig);
moduleIndexFiles.forEach(createTypeScriptFile);
};
main();

View File

@ -0,0 +1,527 @@
import prettier from '@prettier/sync';
import * as fs from 'fs';
import { globSync } from 'glob';
import * as path from 'path';
import ts from 'typescript';
const prettierConfigFile = prettier.resolveConfigFile();
if (prettierConfigFile == null) {
throw new Error('Prettier config file not found');
}
const prettierConfiguration = prettier.resolveConfig(prettierConfigFile);
type DeclarationOccurence = { kind: string; name: string };
type ExtractedExports = Array<{
file: string;
exports: DeclarationOccurence[];
}>;
type ExtractedImports = Array<{ file: string; imports: string[] }>;
type ExportPerModule = Array<{
moduleName: string;
exports: ExtractedExports[number]['exports'];
}>;
function findAllExports(directoryPath: string): ExtractedExports {
const results: ExtractedExports = [];
const files = getTypeScriptFiles(directoryPath);
for (const file of files) {
const sourceFile = ts.createSourceFile(
file,
fs.readFileSync(file, 'utf8'),
ts.ScriptTarget.Latest,
true,
);
const exports = extractExports(sourceFile);
if (exports.length > 0) {
results.push({
file,
exports,
});
}
}
return results;
}
function findAllImports(directoryPath: string): ExtractedImports {
const results: ExtractedImports = [];
const includeIndex = true;
const files = getTypeScriptFiles(directoryPath, includeIndex);
for (const file of files) {
try {
const sourceFile = ts.createSourceFile(
file,
fs.readFileSync(file, 'utf8'),
ts.ScriptTarget.Latest,
true,
);
const imports = extractImports(sourceFile);
if (imports.length > 0) {
results.push({
file,
imports,
});
}
} catch (e) {
console.log(e);
console.log('Because of file: ', file);
throw e;
}
}
return results;
}
function getTypeScriptFiles(
directoryPath: string,
includeIndex: boolean = false,
): string[] {
const pattern = path.join(directoryPath, '**/*.{ts,tsx,d.ts}');
const files = globSync(pattern);
return files.filter(
(file) =>
(includeIndex ? true : !file.endsWith('.d.ts')) &&
(includeIndex ? true : !file.endsWith('index.ts')),
);
}
const getKind = (node: ts.VariableStatement) => {
const isConst = (node.declarationList.flags & ts.NodeFlags.Const) !== 0;
if (isConst) {
return 'const';
}
const isLet = (node.declarationList.flags & ts.NodeFlags.Let) !== 0;
if (isLet) {
return 'let';
}
return 'var';
};
function extractExports(sourceFile: ts.SourceFile) {
const exports: DeclarationOccurence[] = [];
function visit(node: ts.Node) {
if (!ts.canHaveModifiers(node)) {
return ts.forEachChild(node, visit);
}
const modifiers = ts.getModifiers(node);
const isExport = modifiers?.some(
(mod) => mod.kind === ts.SyntaxKind.ExportKeyword,
);
if (!isExport && !ts.isExportDeclaration(node)) {
return ts.forEachChild(node, visit);
}
switch (true) {
case ts.isTypeAliasDeclaration(node):
exports.push({
kind: 'type',
name: node.name.text,
});
break;
case ts.isInterfaceDeclaration(node):
exports.push({
kind: 'interface',
name: node.name.text,
});
break;
case ts.isEnumDeclaration(node):
exports.push({
kind: 'enum',
name: node.name.text,
});
break;
case ts.isFunctionDeclaration(node) && node.name !== undefined:
exports.push({
kind: 'function',
name: node.name.text,
});
break;
case ts.isVariableStatement(node):
node.declarationList.declarations.forEach((decl) => {
const kind = getKind(node);
if (ts.isIdentifier(decl.name)) {
exports.push({
kind,
name: decl.name.text,
});
} else if (ts.isObjectBindingPattern(decl.name)) {
decl.name.elements.forEach((element) => {
if (
!ts.isBindingElement(element) ||
!ts.isIdentifier(element.name)
) {
return;
}
exports.push({
kind,
name: element.name.text,
});
});
}
});
break;
case ts.isClassDeclaration(node) && node.name !== undefined:
exports.push({
kind: 'class',
name: node.name.text,
});
break;
case ts.isExportDeclaration(node):
if (node.exportClause && ts.isNamedExports(node.exportClause)) {
node.exportClause.elements.forEach((element) => {
const exportName = element.name.text;
// Check both the declaration and the individual specifier for type-only exports
const isTypeExport =
node.isTypeOnly || ts.isTypeOnlyExportDeclaration(node);
if (isTypeExport) {
// should handle kind
exports.push({
kind: 'type',
name: exportName,
});
return;
}
exports.push({
kind: 'const',
name: exportName,
});
});
}
break;
}
return ts.forEachChild(node, visit);
}
visit(sourceFile);
return exports;
}
function extractImports(sourceFile: ts.SourceFile): string[] {
const imports: string[] = [];
function visit(node: ts.Node) {
if (!ts.isImportDeclaration(node)) {
return ts.forEachChild(node, visit);
}
const modulePath = node.moduleSpecifier.getText(sourceFile);
// Quite static
if (modulePath !== `'twenty-ui'` && modulePath !== '"twenty-ui"') {
return ts.forEachChild(node, visit);
}
if (!node.importClause) {
return ts.forEachChild(node, visit);
}
if (!node.importClause.namedBindings) {
return ts.forEachChild(node, visit);
}
if (ts.isNamedImports(node.importClause.namedBindings)) {
const namedImports = node.importClause.namedBindings.elements.map(
(element) => {
if (element.propertyName) {
return `${element.propertyName.text} as ${element.name.text}`;
}
return element.name.text;
},
);
// imports.push(`import { ${namedImports} } from ${modulePath}`);
namedImports.forEach((namedImport) => {
imports.push(namedImport);
});
}
ts.forEachChild(node, visit);
}
visit(sourceFile);
return imports;
}
const getSubDirectoryPaths = (directoryPath: string): string[] =>
fs
.readdirSync(directoryPath)
.filter((fileOrDirectoryName) => {
const isDirectory = fs
.statSync(path.join(directoryPath, fileOrDirectoryName))
.isDirectory();
return isDirectory;
})
.map((subDirectoryName) => path.join(directoryPath, subDirectoryName));
const retrievePackageExportsPerModule = (srcPath: string) => {
const subdirectories = getSubDirectoryPaths(srcPath);
return subdirectories.map<ExportPerModule[number]>((moduleDirectory) => {
const moduleExportsPerFile = findAllExports(moduleDirectory);
const moduleName = moduleDirectory.split('/').pop();
if (!moduleName) {
throw new Error(
`Should never occurs moduleName not found ${moduleDirectory}`,
);
}
const flattenExports = Object.values(moduleExportsPerFile).flatMap(
(arr) => arr.exports,
);
return {
moduleName,
exports: flattenExports,
};
});
};
type NewImport = { barrel: string; modules: string[] };
type MappedResolution = {
newImports: Record<string, NewImport>;
file: string;
};
type MapSourceImportToBarrelArgs = {
importsPerFile: ExtractedImports;
exportsPerModule: ExportPerModule;
};
const mapSourceImportToBarrel = ({
exportsPerModule,
importsPerFile,
}: MapSourceImportToBarrelArgs): MappedResolution[] => {
const mappedResolution: MappedResolution[] = [];
for (const fileImport of importsPerFile) {
const { file, imports } = fileImport;
let result: MappedResolution = {
file,
newImports: {},
};
for (const importedDeclaration of imports) {
const findResult = exportsPerModule.find(({ exports }) =>
exports.some((el) => el.name === importedDeclaration),
);
if (findResult === undefined) {
throw new Error(
`Should never occurs no barrel exports ${importedDeclaration}`,
);
}
const { moduleName } = findResult;
if (result.newImports[moduleName]) {
result.newImports[moduleName].modules.push(importedDeclaration);
} else {
result.newImports[moduleName] = {
barrel: moduleName,
modules: [importedDeclaration],
};
}
}
mappedResolution.push(result);
}
return mappedResolution;
};
const retrieveImportFromPackageInSource = (srcPath: string) => {
return findAllImports(srcPath);
};
/**
* Inserts a new import statement at the top of a TypeScript file
* @param filePath Path to the TypeScript file
* @param importSpecifier The module to import from (e.g., 'twenty-ui/utils')
* @param namedImports Array of named imports (e.g., ['useQuery', 'useMutation'])
*/
type InsertImportAtTopArgs = {
filePath: string;
importSpecifier: string;
namedImports: string[];
};
function insertImportAtTop({
filePath,
importSpecifier,
namedImports,
}: InsertImportAtTopArgs): void {
// Read the file content
const sourceText = fs.readFileSync(filePath, 'utf8');
// Create a source file
const sourceFile = ts.createSourceFile(
filePath,
sourceText,
ts.ScriptTarget.Latest,
true,
);
// Build the new import statement
let newImport = `import { ${namedImports.join(', ')} } from '${importSpecifier}';\n`;
// Find the position to insert the import
let insertPos = 0;
// Case 1: File has imports - insert after the last import
let lastImportEnd = 0;
ts.forEachChild(sourceFile, (node) => {
if (
ts.isImportDeclaration(node) ||
ts.isImportEqualsDeclaration(node) ||
(ts.isExpressionStatement(node) &&
ts.isCallExpression(node.expression) &&
node.expression.expression.kind === ts.SyntaxKind.ImportKeyword) // Overkill ?
) {
const end = node.getEnd();
if (end > lastImportEnd) {
lastImportEnd = end;
}
}
});
if (lastImportEnd > 0) {
// Insert after the last import with a newline
insertPos = lastImportEnd;
// Check if there's already a newline after the last import
if (sourceText[insertPos] !== '\n') {
newImport = '\n' + newImport;
}
}
// Insert the new import
const updatedSourceText =
sourceText.substring(0, insertPos) +
newImport +
sourceText.substring(insertPos);
// Write back to file
fs.writeFileSync(
filePath,
prettier.format(updatedSourceText, {
parser: 'typescript',
...prettierConfiguration,
}),
'utf8',
);
}
type RemoveSpecificImports = {
filePath: string;
moduleSpecifier: string;
};
function removeSpecificImports({
filePath,
moduleSpecifier,
}: RemoveSpecificImports) {
const sourceText = fs.readFileSync(filePath, 'utf8');
const sourceFile = ts.createSourceFile(
filePath,
sourceText,
ts.ScriptTarget.Latest,
true,
);
type Replacement = {
start: number;
end: number;
newText: string;
};
let replacement: Replacement | undefined;
function visit(node: ts.Node) {
if (ts.isImportDeclaration(node)) {
const importSource = node.moduleSpecifier
.getText(sourceFile)
.replace(/^['"]|['"]$/g, '');
if (importSource === moduleSpecifier && node.importClause) {
replacement = {
start: node.getFullStart(),
end: node.getEnd(),
newText: '',
};
}
}
ts.forEachChild(node, visit);
}
visit(sourceFile);
let updatedSourceText = sourceText;
if (replacement) {
const { end, newText, start } = replacement;
updatedSourceText =
updatedSourceText.substring(0, start) +
newText +
updatedSourceText.substring(end);
fs.writeFileSync(
filePath,
prettier.format(updatedSourceText, {
parser: 'typescript',
...prettierConfiguration,
}),
'utf8',
);
}
}
const migrateImports = (mappedResolutions: MappedResolution[]) => {
for (const { file, newImports } of mappedResolutions) {
for (const { barrel, modules } of Object.values(newImports)) {
// TODO could refactor to avoid double source file and read
removeSpecificImports({
filePath: file,
moduleSpecifier: 'twenty-ui',
});
insertImportAtTop({
filePath: file,
importSpecifier: `twenty-ui/${barrel}`,
namedImports: modules,
});
}
}
};
const main = () => {
const packageSrcPath = 'packages/twenty-ui/src';
const exportsPerModule = retrievePackageExportsPerModule(packageSrcPath);
const packagesToMigrate = ['twenty-front'];
for (const currPackage of packagesToMigrate) {
console.log(`About to run over ${currPackage}`);
const importsPerFile = retrieveImportFromPackageInSource(
`packages/${currPackage}`,
);
const mappedResolutions = mapSourceImportToBarrel({
exportsPerModule,
importsPerFile,
});
migrateImports(mappedResolutions);
console.log(`${currPackage} migrated`);
}
console.log('SUCCESSFULLY COMPLETED');
};
main();

View File

@ -1,3 +1,12 @@
export * from './components/VisibilityHidden';
export * from './components/VisibilityHiddenInput';
export * from './utils/visibility-hidden';
/*
* _____ _
*|_ _|_ _____ _ __ | |_ _ _
* | | \ \ /\ / / _ \ '_ \| __| | | | Auto-generated file
* | | \ V V / __/ | | | |_| |_| | Any edits to this will be overridden
* |_| \_/\_/ \___|_| |_|\__|\__, |
* |___/
*/
export { VisibilityHidden } from './components/VisibilityHidden';
export { VisibilityHiddenInput } from './components/VisibilityHiddenInput';
export { VISIBILITY_HIDDEN } from './utils/visibility-hidden';

View File

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 536 B

View File

Before

Width:  |  Height:  |  Size: 563 B

After

Width:  |  Height:  |  Size: 563 B

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 956 B

After

Width:  |  Height:  |  Size: 956 B

View File

Before

Width:  |  Height:  |  Size: 850 B

After

Width:  |  Height:  |  Size: 850 B

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 974 B

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 908 B

After

Width:  |  Height:  |  Size: 908 B

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 419 B

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 355 B

After

Width:  |  Height:  |  Size: 355 B

View File

Before

Width:  |  Height:  |  Size: 668 B

After

Width:  |  Height:  |  Size: 668 B

View File

Before

Width:  |  Height:  |  Size: 663 B

After

Width:  |  Height:  |  Size: 663 B

View File

Before

Width:  |  Height:  |  Size: 478 B

After

Width:  |  Height:  |  Size: 478 B

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -1,7 +1,7 @@
import { Meta, StoryObj } from '@storybook/react';
import { Pill } from '@ui/components/Pill/Pill';
import { ComponentDecorator } from '../../../testing/decorators/ComponentDecorator';
import { Pill } from '../Pill';
const meta: Meta<typeof Pill> = {
title: 'UI/Display/Pill',

View File

@ -1,6 +1,6 @@
import { AvatarChipsLeftComponent } from '@ui/display/avatar-chip/components/AvatarChipLeftComponent';
import { AvatarChipsCommonProps } from '@ui/display/avatar-chip/types/AvatarChipsCommonProps.type';
import { Chip, ChipVariant } from '@ui/display/chip/components/Chip';
import { AvatarChipsLeftComponent } from '@ui/components/avatar-chip/AvatarChipLeftComponent';
import { AvatarChipsCommonProps } from '@ui/components/avatar-chip/types/AvatarChipsCommonProps.type';
import { Chip, ChipVariant } from '@ui/components/chip/Chip';
export type AvatarChipProps = AvatarChipsCommonProps;
export const AvatarChip = ({

View File

@ -3,7 +3,7 @@ import styled from '@emotion/styled';
import { Avatar } from '@ui/display/avatar/components/Avatar';
import { AvatarType } from '@ui/display/avatar/types/AvatarType';
import { IconComponent } from '@ui/display/icon/types/IconComponent';
import { Nullable } from 'vitest';
import { Nullable } from '@ui/utilities';
import { isDefined } from 'twenty-shared/utils';
const StyledInvertedIconContainer = styled.div<{ backgroundColor: string }>`

View File

@ -1,8 +1,8 @@
import { AvatarChipsLeftComponent } from '@ui/display/avatar-chip/components/AvatarChipLeftComponent';
import { AvatarChipsCommonProps } from '@ui/display/avatar-chip/types/AvatarChipsCommonProps.type';
import { AvatarChipVariant } from '@ui/display/avatar-chip/types/AvatarChipsVariant.type';
import { ChipVariant } from '@ui/display/chip/components/Chip';
import { LinkChip, LinkChipProps } from '@ui/display/chip/components/LinkChip';
import { AvatarChipsLeftComponent } from '@ui/components/avatar-chip/AvatarChipLeftComponent';
import { AvatarChipsCommonProps } from '@ui/components/avatar-chip/types/AvatarChipsCommonProps.type';
import { AvatarChipVariant } from '@ui/components/avatar-chip/types/AvatarChipsVariant.type';
import { ChipVariant } from '@ui/components/chip/Chip';
import { LinkChip, LinkChipProps } from '@ui/components/chip/LinkChip';
export type LinkAvatarChipProps = Omit<AvatarChipsCommonProps, 'clickable'> & {
to: string;

View File

@ -0,0 +1,8 @@
import { AvatarChipsLeftComponentProps } from '@ui/components/avatar-chip/AvatarChipLeftComponent';
import { ChipSize } from '@ui/components/chip/Chip';
export type AvatarChipsCommonProps = {
size?: ChipSize;
className?: string;
maxWidth?: number;
} & AvatarChipsLeftComponentProps;

View File

@ -5,7 +5,7 @@ import {
ChipProps,
ChipSize,
ChipVariant,
} from '@ui/display/chip/components/Chip';
} from '@ui/components/chip/Chip';
import { MouseEvent } from 'react';
import { Link } from 'react-router-dom';

View File

@ -1,12 +1,16 @@
import { Meta, StoryObj } from '@storybook/react';
import { AvatarChip } from '@ui/display/avatar-chip/components/AvatarChip';
import { AvatarChip } from '@ui/components/avatar-chip/AvatarChip';
import { ComponentDecorator, RouterDecorator } from '@ui/testing';
import {
ComponentDecorator,
RecoilRootDecorator,
RouterDecorator,
} from '@ui/testing';
const meta: Meta<typeof AvatarChip> = {
title: 'UI/Display/Chip/AvatarChip',
component: AvatarChip,
decorators: [RouterDecorator, ComponentDecorator],
decorators: [RouterDecorator, ComponentDecorator, RecoilRootDecorator],
args: {
name: 'Entity name',
avatarType: 'squared',

View File

@ -1 +1,24 @@
export * from './Pill/Pill';
/*
* _____ _
*|_ _|_ _____ _ __ | |_ _ _
* | | \ \ /\ / / _ \ '_ \| __| | | | Auto-generated file
* | | \ V V / __/ | | | |_| |_| | Any edits to this will be overridden
* |_| \_/\_/ \___|_| |_|\__|\__, |
* |___/
*/
export type { AvatarChipProps } from './avatar-chip/AvatarChip';
export { AvatarChip } from './avatar-chip/AvatarChip';
export type { AvatarChipsLeftComponentProps } from './avatar-chip/AvatarChipLeftComponent';
export { AvatarChipsLeftComponent } from './avatar-chip/AvatarChipLeftComponent';
export type { LinkAvatarChipProps } from './avatar-chip/LinkAvatarChip';
export { LinkAvatarChip } from './avatar-chip/LinkAvatarChip';
export type { AvatarChipsCommonProps } from './avatar-chip/types/AvatarChipsCommonProps.type';
export { AvatarChipVariant } from './avatar-chip/types/AvatarChipsVariant.type';
export type { ChipProps } from './chip/Chip';
export { ChipSize, ChipAccent, ChipVariant, Chip } from './chip/Chip';
export type { LinkChipProps } from './chip/LinkChip';
export { LinkChip } from './chip/LinkChip';
export { Pill } from './Pill/Pill';
export type { TagColor } from './tag/Tag';
export { Tag } from './tag/Tag';

View File

@ -1,7 +1,9 @@
import { styled } from '@linaria/react';
import { useContext } from 'react';
import { IconComponent, OverflowingTextWithTooltip } from '@ui/display';
// TODO prastoin We should forbid barrel import within the twenty-ui package
import { IconComponent } from '@ui/display/icon/types/IconComponent';
import { OverflowingTextWithTooltip } from '@ui/display/tooltip/OverflowingTextWithTooltip';
import {
BORDER_COMMON,
THEME_COMMON,

View File

@ -1,8 +0,0 @@
import { AvatarChipsLeftComponentProps } from '@ui/display/avatar-chip/components/AvatarChipLeftComponent';
import { ChipSize } from '@ui/display/chip/components/Chip';
export type AvatarChipsCommonProps = {
size?: ChipSize;
className?: string;
maxWidth?: number;
} & AvatarChipsLeftComponentProps;

View File

@ -1,13 +1,17 @@
import { Meta, StoryObj } from '@storybook/react';
import { AVATAR_URL_MOCK, ComponentDecorator } from '@ui/testing';
import {
AVATAR_URL_MOCK,
ComponentDecorator,
RecoilRootDecorator,
} from '@ui/testing';
import { Avatar } from '../Avatar';
const meta: Meta<typeof Avatar> = {
title: 'Modules/Users/Avatar',
component: Avatar,
decorators: [ComponentDecorator],
decorators: [ComponentDecorator, RecoilRootDecorator],
args: {
avatarUrl: AVATAR_URL_MOCK,
size: 'md',

View File

@ -7,6 +7,7 @@ import {
AVATAR_URL_MOCK,
CatalogDecorator,
ComponentDecorator,
RecoilRootDecorator,
} from '@ui/testing';
import { AvatarGroup, AvatarGroupProps } from '../AvatarGroup';
@ -38,7 +39,7 @@ export default meta;
type Story = StoryObj<typeof AvatarGroup>;
export const Default: Story = {
decorators: [ComponentDecorator],
decorators: [ComponentDecorator, RecoilRootDecorator],
};
export const Catalog: Story = {
@ -63,5 +64,5 @@ export const Catalog: Story = {
],
},
},
decorators: [CatalogDecorator],
decorators: [CatalogDecorator, RecoilRootDecorator],
};

View File

@ -1,6 +1,5 @@
import IconAddressBookRaw from '@assets/icons/address-book.svg?react';
import { useTheme } from '@emotion/react';
import IconAddressBookRaw from '@ui/display/icon/assets/address-book.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconAddressBookProps = Pick<

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconGmailRaw from '@ui/display/icon/assets/gmail.svg?react';
import IconGmailRaw from '@assets/icons/gmail.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconGmailProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconGoogleRaw from '@ui/display/icon/assets/google.svg?react';
import IconGoogleRaw from '@assets/icons/google-calendar.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconGoogleProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconGoogleCalendarRaw from '@ui/display/icon/assets/google-calendar.svg?react';
import IconGoogleCalendarRaw from '@assets/icons/google-calendar.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconGoogleCalendarProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconLockRaw from '@ui/display/icon/assets/lock.svg?react';
import IconLockRaw from '@assets/icons/lock.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconLockCustomProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconMicrosoftRaw from '../assets/microsoft.svg?react';
import IconMicrosoftRaw from '@assets/icons/microsoft.svg?react';
interface IconMicrosoftProps {
size?: number | string;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconMicrosoftCalendarRaw from '../assets/microsoft-calendar.svg?react';
import IconMicrosoftCalendarRaw from '@assets/icons/microsoft-calendar.svg?react';
interface IconMicrosoftCalendarProps {
size?: number | string;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconMicrosoftOutlookRaw from '../assets/microsoft-outlook.svg?react';
import IconMicrosoftOutlookRaw from '@assets/icons/microsoft-outlook.svg?react';
interface IconMicrosoftOutlookProps {
size?: number | string;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconRelationManyToOneRaw from '@ui/display/icon/assets/many-to-one.svg?react';
import IconRelationManyToOneRaw from '@assets/icons/many-to-one.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconRelationManyToOneProps = Pick<IconComponentProps, 'size' | 'stroke'>;

View File

@ -1,6 +1,6 @@
import { useTheme } from '@emotion/react';
import IconTwentyStarRaw from '@ui/display/icon/assets/twenty-star.svg?react';
import IconTwentyStarRaw from '@assets/icons/twenty-star.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconTwentyStarProps = Pick<IconComponentProps, 'size' | 'stroke'>;

View File

@ -1,4 +1,4 @@
import IconTwentyStarFilledRaw from '@ui/display/icon/assets/twenty-star-filled.svg?react';
import IconTwentyStarFilledRaw from '@assets/icons/twenty-star-filled.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
import { THEME_COMMON } from '@ui/theme';

View File

@ -1,5 +1,5 @@
import IllustrationIconArrayRaw from '@assets/icons/illustration-array.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconArrayRaw from '@ui/display/icon/assets/illustration-array.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconArrayProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,5 +1,5 @@
import IllustrationIconCalendarEventRaw from '@assets/icons/illustration-calendar-event.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconCalendarEventRaw from '@ui/display/icon/assets/illustration-calendar-event.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconCalendarEventProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,5 +1,5 @@
import IllustrationIconCalendarTimeRaw from '@assets/icons/illustration-calendar-time.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconCalendarTimeRaw from '@ui/display/icon/assets/illustration-calendar-time.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconCurrencyRaw from '@ui/display/icon/assets/illustration-currency.svg?react';
import IllustrationIconCurrencyRaw from '@assets/icons/illustration-currency.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconCurrencyProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconJsonRaw from '@ui/display/icon/assets/illustration-json.svg?react';
import IllustrationIconJsonRaw from '@assets/icons/illustration-json.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconJsonProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconLinkRaw from '@ui/display/icon/assets/illustration-link.svg?react';
import IllustrationIconLinkRaw from '@assets/icons/illustration-link.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconLinkProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,5 +1,5 @@
import IllustrationIconMailRaw from '@assets/icons/illustration-mail.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconMailRaw from '@ui/display/icon/assets/illustration-mail.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';

View File

@ -1,5 +1,5 @@
import IllustrationIconManyToManyRaw from '@assets/icons/illustration-many-to-many.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconManyToManyRaw from '@ui/display/icon/assets/illustration-many-to-many.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';

View File

@ -1,5 +1,5 @@
import IllustrationIconMapRaw from '@assets/icons/illustration-map.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconMapRaw from '@ui/display/icon/assets/illustration-map.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';

View File

@ -1,5 +1,5 @@
import IllustrationIconNumbersRaw from '@assets/icons/illustration-numbers.svg?react';
import { useTheme } from '@emotion/react';
import IllustrationIconNumbersRaw from '@ui/display/icon/assets/illustration-numbers.svg?react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconOneToManyRaw from '@ui/display/icon/assets/illustration-one-to-many.svg?react';
import IllustrationIconOneToManyRaw from '@assets/icons/illustration-one-to-many.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconOneToManyProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconOneToOneRaw from '@ui/display/icon/assets/illustration-one-to-one.svg?react';
import IllustrationIconOneToOneRaw from '@assets/icons/illustration-one-to-one.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconOneToOneProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconPhoneRaw from '@ui/display/icon/assets/illustration-phone.svg?react';
import IllustrationIconPhoneRaw from '@assets/icons/illustration-phone.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconPhoneProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconSettingRaw from '@ui/display/icon/assets/illustration-setting.svg?react';
import IllustrationIconSettingRaw from '@assets/icons/illustration-setting.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconSettingProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconStarRaw from '@ui/display/icon/assets/illustration-star.svg?react';
import IllustrationIconStarRaw from '@assets/icons/illustration-star.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconStarProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconTagRaw from '@ui/display/icon/assets/illustration-tag.svg?react';
import IllustrationIconTagRaw from '@assets/icons/illustration-tag.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconTagProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconTagsRaw from '@ui/display/icon/assets/illustration-tags.svg?react';
import IllustrationIconTagsRaw from '@assets/icons/illustration-tags.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconTagsProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconTextRaw from '@ui/display/icon/assets/illustration-text.svg?react';
import IllustrationIconTextRaw from '@assets/icons/illustration-text.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconTextProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconToggleRaw from '@ui/display/icon/assets/illustration-toggle.svg?react';
import IllustrationIconToggleRaw from '@assets/icons/illustration-toggle.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconToggleProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconUidRaw from '@ui/display/icon/assets/illustration-uid.svg?react';
import IllustrationIconUidRaw from '@assets/icons/illustration-uid.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconUidProps = Pick<IconComponentProps, 'size'>;

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import { IllustrationIconWrapper } from '@ui/display/icon/components/IllustrationIconWrapper';
import IllustrationIconUserRaw from '@ui/display/icon/assets/illustration-user.svg?react';
import IllustrationIconUserRaw from '@assets/icons/illustration-user.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IllustrationIconUserProps = Pick<IconComponentProps, 'size'>;

View File

@ -4,18 +4,18 @@ export {
IconAlertCircle,
IconAlertTriangle,
IconApi,
IconApps,
IconAppWindow,
IconApps,
IconArchive,
IconArchiveOff,
IconArrowBackUp,
IconArrowDown,
IconArrowLeft,
IconArrowRight,
IconArrowsDiagonal,
IconArrowsVertical,
IconArrowUp,
IconArrowUpRight,
IconArrowsDiagonal,
IconArrowsVertical,
IconAt,
IconBaselineDensitySmall,
IconBell,
@ -47,8 +47,8 @@ export {
IconChevronDown,
IconChevronLeft,
IconChevronRight,
IconChevronsRight,
IconChevronUp,
IconChevronsRight,
IconCircleDot,
IconCircleOff,
IconCirclePlus,
@ -293,6 +293,7 @@ export {
IconVariable,
IconVariablePlus,
IconVersions,
IconVersionsOff,
IconVideo,
IconWand,
IconWebhook,

View File

@ -11,8 +11,8 @@ export const IconsProvider = ({ children }: IconsProviderProps) => {
const setIcons = useSetRecoilState(iconsState);
useEffect(() => {
import('./internal/AllIcons').then((lazyLoadedIcons) => {
setIcons(lazyLoadedIcons.ALL_ICONS);
import('./internal/AllIcons').then(({ ALL_ICONS }) => {
setIcons(ALL_ICONS);
});
}, [setIcons]);

View File

@ -4185,30 +4185,24 @@ import {
} from '@tabler/icons-react';
export const ALL_ICONS = {
IconAuth2fa,
IconCube3dSphere,
IconCube3dSphereOff,
IconRotate3d,
IconHours24,
Icon123,
IconRotate360,
IconView360,
IconAB,
IconAB2,
IconABOff,
IconAbacus,
IconAbacusOff,
IconAbc,
IconABOff,
IconAccessible,
IconAccessibleOff,
IconAccessPoint,
IconAccessPointOff,
IconAccessible,
IconAccessibleOff,
IconActivity,
IconActivityHeartbeat,
IconAd,
IconAd2,
IconAdCircle,
IconAdCircleOff,
IconAdOff,
IconAddressBookOff,
IconAdjustments,
IconAdjustmentsAlt,
@ -4233,7 +4227,6 @@ export const ALL_ICONS = {
IconAdjustmentsStar,
IconAdjustmentsUp,
IconAdjustmentsX,
IconAdOff,
IconAerialLift,
IconAffiliate,
IconAirBalloon,
@ -4303,10 +4296,10 @@ export const ALL_ICONS = {
IconApiApp,
IconApiAppOff,
IconApiOff,
IconAppWindow,
IconApple,
IconApps,
IconAppsOff,
IconAppWindow,
IconArchive,
IconArchiveOff,
IconArmchair,
@ -4418,6 +4411,23 @@ export const ALL_ICONS = {
IconArrowRotaryStraight,
IconArrowRoundaboutLeft,
IconArrowRoundaboutRight,
IconArrowSharpTurnLeft,
IconArrowSharpTurnRight,
IconArrowUp,
IconArrowUpBar,
IconArrowUpCircle,
IconArrowUpLeft,
IconArrowUpLeftCircle,
IconArrowUpRhombus,
IconArrowUpRight,
IconArrowUpRightCircle,
IconArrowUpSquare,
IconArrowUpTail,
IconArrowWaveLeftDown,
IconArrowWaveLeftUp,
IconArrowWaveRightDown,
IconArrowWaveRightUp,
IconArrowZigZag,
IconArrowsCross,
IconArrowsDiagonal,
IconArrowsDiagonal2,
@ -4432,8 +4442,6 @@ export const ALL_ICONS = {
IconArrowsDownUp,
IconArrowsExchange,
IconArrowsExchange2,
IconArrowSharpTurnLeft,
IconArrowSharpTurnRight,
IconArrowsHorizontal,
IconArrowsJoin,
IconArrowsJoin2,
@ -4461,21 +4469,6 @@ export const ALL_ICONS = {
IconArrowsUpLeft,
IconArrowsUpRight,
IconArrowsVertical,
IconArrowUp,
IconArrowUpBar,
IconArrowUpCircle,
IconArrowUpLeft,
IconArrowUpLeftCircle,
IconArrowUpRhombus,
IconArrowUpRight,
IconArrowUpRightCircle,
IconArrowUpSquare,
IconArrowUpTail,
IconArrowWaveLeftDown,
IconArrowWaveLeftUp,
IconArrowWaveRightDown,
IconArrowWaveRightUp,
IconArrowZigZag,
IconArtboard,
IconArtboardOff,
IconArticle,
@ -4495,6 +4488,7 @@ export const ALL_ICONS = {
IconAugmentedReality,
IconAugmentedReality2,
IconAugmentedRealityOff,
IconAuth2fa,
IconAward,
IconAwardOff,
IconAxe,
@ -4516,13 +4510,13 @@ export const ALL_ICONS = {
IconBadgeCc,
IconBadgeHd,
IconBadgeOff,
IconBadges,
IconBadgeSd,
IconBadgesOff,
IconBadgeTm,
IconBadgeVo,
IconBadgeVr,
IconBadgeWc,
IconBadges,
IconBadgesOff,
IconBaguette,
IconBallAmericanFootball,
IconBallAmericanFootballOff,
@ -4531,12 +4525,12 @@ export const ALL_ICONS = {
IconBallBowling,
IconBallFootball,
IconBallFootballOff,
IconBallTennis,
IconBallVolleyball,
IconBalloon,
IconBalloonOff,
IconBallpen,
IconBallpenOff,
IconBallTennis,
IconBallVolleyball,
IconBan,
IconBandage,
IconBandageOff,
@ -4653,6 +4647,8 @@ export const ALL_ICONS = {
IconBook,
IconBook2,
IconBookDownload,
IconBookOff,
IconBookUpload,
IconBookmark,
IconBookmarkEdit,
IconBookmarkMinus,
@ -4661,10 +4657,8 @@ export const ALL_ICONS = {
IconBookmarkQuestion,
IconBookmarks,
IconBookmarksOff,
IconBookOff,
IconBooks,
IconBooksOff,
IconBookUpload,
IconBorderAll,
IconBorderBottom,
IconBorderCorners,
@ -4766,6 +4760,7 @@ export const ALL_ICONS = {
IconBrandBulma,
IconBrandBumble,
IconBrandBunpo,
IconBrandCSharp,
IconBrandCake,
IconBrandCakephp,
IconBrandCampaignmonitor,
@ -4787,7 +4782,6 @@ export const ALL_ICONS = {
IconBrandCpp,
IconBrandCraft,
IconBrandCrunchbase,
IconBrandCSharp,
IconBrandCss3,
IconBrandCtemplar,
IconBrandCucumber,
@ -4923,8 +4917,8 @@ export const ALL_ICONS = {
IconBrandOkRu,
IconBrandOnedrive,
IconBrandOnlyfans,
IconBrandOpenai,
IconBrandOpenSource,
IconBrandOpenai,
IconBrandOpenvpn,
IconBrandOpera,
IconBrandPagekit,
@ -5077,6 +5071,7 @@ export const ALL_ICONS = {
IconBroadcastOff,
IconBrowser,
IconBrowserCheck,
IconBrowserMaximize,
IconBrowserOff,
IconBrowserPlus,
IconBrowserX,
@ -5118,9 +5113,9 @@ export const ALL_ICONS = {
IconBulbOff,
IconBulldozer,
IconBus,
IconBusinessplan,
IconBusOff,
IconBusStop,
IconBusinessplan,
IconButterfly,
IconCactus,
IconCactusOff,
@ -5190,9 +5185,11 @@ export const ALL_ICONS = {
IconCapture,
IconCaptureOff,
IconCar,
IconCaravan,
IconCarCrane,
IconCarCrash,
IconCarOff,
IconCarTurbine,
IconCaravan,
IconCardboards,
IconCardboardsOff,
IconCards,
@ -5200,12 +5197,10 @@ export const ALL_ICONS = {
IconCaretLeft,
IconCaretRight,
IconCaretUp,
IconCarOff,
IconCarouselHorizontal,
IconCarouselVertical,
IconCarrot,
IconCarrotOff,
IconCarTurbine,
IconCash,
IconCashBanknote,
IconCashBanknoteOff,
@ -5216,6 +5211,7 @@ export const ALL_ICONS = {
IconCategory,
IconCategory2,
IconCe,
IconCeOff,
IconCell,
IconCellSignal1,
IconCellSignal2,
@ -5223,7 +5219,6 @@ export const ALL_ICONS = {
IconCellSignal4,
IconCellSignal5,
IconCellSignalOff,
IconCeOff,
IconCertificate,
IconCertificate2,
IconCertificate2Off,
@ -5289,6 +5284,9 @@ export const ALL_ICONS = {
IconChevronLeftPipe,
IconChevronRight,
IconChevronRightPipe,
IconChevronUp,
IconChevronUpLeft,
IconChevronUpRight,
IconChevronsDown,
IconChevronsDownLeft,
IconChevronsDownRight,
@ -5297,9 +5295,6 @@ export const ALL_ICONS = {
IconChevronsUp,
IconChevronsUpLeft,
IconChevronsUpRight,
IconChevronUp,
IconChevronUpLeft,
IconChevronUpRight,
IconChisel,
IconChristmasTree,
IconChristmasTreeOff,
@ -5320,11 +5315,11 @@ export const ALL_ICONS = {
IconCircleChevronDown,
IconCircleChevronLeft,
IconCircleChevronRight,
IconCircleChevronUp,
IconCircleChevronsDown,
IconCircleChevronsLeft,
IconCircleChevronsRight,
IconCircleChevronsUp,
IconCircleChevronUp,
IconCircleDashed,
IconCircleDot,
IconCircleDotted,
@ -5373,11 +5368,11 @@ export const ALL_ICONS = {
IconCirclePlus,
IconCircleRectangle,
IconCircleRectangleOff,
IconCircles,
IconCircleSquare,
IconCirclesRelation,
IconCircleTriangle,
IconCircleX,
IconCircles,
IconCirclesRelation,
IconCircuitAmmeter,
IconCircuitBattery,
IconCircuitBulb,
@ -5424,6 +5419,9 @@ export const ALL_ICONS = {
IconClockExclamation,
IconClockHeart,
IconClockHour1,
IconClockHour10,
IconClockHour11,
IconClockHour12,
IconClockHour2,
IconClockHour3,
IconClockHour4,
@ -5432,9 +5430,6 @@ export const ALL_ICONS = {
IconClockHour7,
IconClockHour8,
IconClockHour9,
IconClockHour10,
IconClockHour11,
IconClockHour12,
IconClockMinus,
IconClockOff,
IconClockPause,
@ -5503,9 +5498,9 @@ export const ALL_ICONS = {
IconCoinOff,
IconCoinPound,
IconCoinRupee,
IconCoins,
IconCoinYen,
IconCoinYuan,
IconCoins,
IconColorFilter,
IconColorPicker,
IconColorPickerOff,
@ -5544,9 +5539,9 @@ export const ALL_ICONS = {
IconCookieMan,
IconCookieOff,
IconCopy,
IconCopyOff,
IconCopyleft,
IconCopyleftOff,
IconCopyOff,
IconCopyright,
IconCopyrightOff,
IconCornerDownLeft,
@ -5582,8 +5577,8 @@ export const ALL_ICONS = {
IconCricket,
IconCrop,
IconCross,
IconCrosshair,
IconCrossOff,
IconCrosshair,
IconCrown,
IconCrownOff,
IconCrutches,
@ -5591,6 +5586,8 @@ export const ALL_ICONS = {
IconCrystalBall,
IconCsv,
IconCube,
IconCube3dSphere,
IconCube3dSphereOff,
IconCubeOff,
IconCubePlus,
IconCubeSend,
@ -5831,37 +5828,13 @@ export const ALL_ICONS = {
IconDeviceNintendoOff,
IconDeviceProjector,
IconDeviceRemote,
IconDevices,
IconDevices2,
IconDevicesBolt,
IconDevicesCancel,
IconDevicesCheck,
IconDevicesCode,
IconDevicesCog,
IconDeviceSdCard,
IconDevicesDollar,
IconDevicesDown,
IconDevicesExclamation,
IconDevicesHeart,
IconDeviceSim,
IconDeviceSim1,
IconDeviceSim2,
IconDeviceSim3,
IconDevicesMinus,
IconDevicesOff,
IconDevicesPause,
IconDevicesPc,
IconDevicesPcOff,
IconDeviceSpeaker,
IconDeviceSpeakerOff,
IconDevicesPin,
IconDevicesPlus,
IconDevicesQuestion,
IconDevicesSearch,
IconDevicesShare,
IconDevicesStar,
IconDevicesUp,
IconDevicesX,
IconDeviceTablet,
IconDeviceTabletBolt,
IconDeviceTabletCancel,
@ -5910,6 +5883,30 @@ export const ALL_ICONS = {
IconDeviceWatchStats2,
IconDeviceWatchUp,
IconDeviceWatchX,
IconDevices,
IconDevices2,
IconDevicesBolt,
IconDevicesCancel,
IconDevicesCheck,
IconDevicesCode,
IconDevicesCog,
IconDevicesDollar,
IconDevicesDown,
IconDevicesExclamation,
IconDevicesHeart,
IconDevicesMinus,
IconDevicesOff,
IconDevicesPause,
IconDevicesPc,
IconDevicesPcOff,
IconDevicesPin,
IconDevicesPlus,
IconDevicesQuestion,
IconDevicesSearch,
IconDevicesShare,
IconDevicesStar,
IconDevicesUp,
IconDevicesX,
IconDiabolo,
IconDiaboloOff,
IconDiaboloPlus,
@ -5928,9 +5925,9 @@ export const ALL_ICONS = {
IconDimensions,
IconDirection,
IconDirectionHorizontal,
IconDirections,
IconDirectionSign,
IconDirectionSignOff,
IconDirections,
IconDirectionsOff,
IconDisabled,
IconDisabled2,
@ -5981,13 +5978,14 @@ export const ALL_ICONS = {
IconDropletPin,
IconDropletPlus,
IconDropletQuestion,
IconDroplets,
IconDropletSearch,
IconDropletShare,
IconDropletStar,
IconDropletUp,
IconDropletX,
IconDroplets,
IconDualScreen,
IconEPassport,
IconEar,
IconEarOff,
IconEaseIn,
@ -6013,7 +6011,6 @@ export const ALL_ICONS = {
IconEmphasis,
IconEngine,
IconEngineOff,
IconEPassport,
IconEqual,
IconEqualDouble,
IconEqualNot,
@ -6052,9 +6049,6 @@ export const ALL_ICONS = {
IconEyeDown,
IconEyeEdit,
IconEyeExclamation,
IconEyeglass,
IconEyeglass2,
IconEyeglassOff,
IconEyeHeart,
IconEyeMinus,
IconEyeOff,
@ -6068,6 +6062,9 @@ export const ALL_ICONS = {
IconEyeTable,
IconEyeUp,
IconEyeX,
IconEyeglass,
IconEyeglass2,
IconEyeglassOff,
IconFaceId,
IconFaceIdError,
IconFaceMask,
@ -6122,13 +6119,11 @@ export const ALL_ICONS = {
IconFilePower,
IconFileReport,
IconFileRss,
IconFiles,
IconFileScissors,
IconFileSearch,
IconFileSettings,
IconFileShredder,
IconFileSignal,
IconFilesOff,
IconFileSpreadsheet,
IconFileStack,
IconFileStar,
@ -6165,6 +6160,8 @@ export const ALL_ICONS = {
IconFileVector,
IconFileX,
IconFileZip,
IconFiles,
IconFilesOff,
IconFilter,
IconFilterBolt,
IconFilterCancel,
@ -6183,12 +6180,12 @@ export const ALL_ICONS = {
IconFilterPin,
IconFilterPlus,
IconFilterQuestion,
IconFilters,
IconFilterSearch,
IconFilterShare,
IconFilterStar,
IconFilterUp,
IconFilterX,
IconFilters,
IconFingerprint,
IconFingerprintOff,
IconFireExtinguisher,
@ -6250,6 +6247,7 @@ export const ALL_ICONS = {
IconFocusCentered,
IconFold,
IconFoldDown,
IconFoldUp,
IconFolder,
IconFolderBolt,
IconFolderCancel,
@ -6267,15 +6265,14 @@ export const ALL_ICONS = {
IconFolderPin,
IconFolderPlus,
IconFolderQuestion,
IconFolders,
IconFolderSearch,
IconFolderShare,
IconFoldersOff,
IconFolderStar,
IconFolderSymlink,
IconFolderUp,
IconFolderX,
IconFoldUp,
IconFolders,
IconFoldersOff,
IconForbid,
IconForbid2,
IconForklift,
@ -6403,7 +6400,6 @@ export const ALL_ICONS = {
IconHeadsetOff,
IconHealthRecognition,
IconHeart,
IconHeartbeat,
IconHeartBolt,
IconHeartBroken,
IconHeartCancel,
@ -6422,13 +6418,14 @@ export const ALL_ICONS = {
IconHeartPlus,
IconHeartQuestion,
IconHeartRateMonitor,
IconHearts,
IconHeartSearch,
IconHeartShare,
IconHeartsOff,
IconHeartStar,
IconHeartUp,
IconHeartX,
IconHeartbeat,
IconHearts,
IconHeartsOff,
IconHelicopter,
IconHelicopterLanding,
IconHelmet,
@ -6447,12 +6444,6 @@ export const ALL_ICONS = {
IconHemispherePlus,
IconHexagon,
IconHexagon3d,
IconHexagonalPrism,
IconHexagonalPrismOff,
IconHexagonalPrismPlus,
IconHexagonalPyramid,
IconHexagonalPyramidOff,
IconHexagonalPyramidPlus,
IconHexagonLetterA,
IconHexagonLetterB,
IconHexagonLetterC,
@ -6490,6 +6481,12 @@ export const ALL_ICONS = {
IconHexagonNumber8,
IconHexagonNumber9,
IconHexagonOff,
IconHexagonalPrism,
IconHexagonalPrismOff,
IconHexagonalPrismPlus,
IconHexagonalPyramid,
IconHexagonalPyramidOff,
IconHexagonalPyramidPlus,
IconHexagons,
IconHexagonsOff,
IconHierarchy,
@ -6538,6 +6535,7 @@ export const ALL_ICONS = {
IconHourglassHigh,
IconHourglassLow,
IconHourglassOff,
IconHours24,
IconHtml,
IconHttpConnect,
IconHttpDelete,
@ -6602,6 +6600,7 @@ export const ALL_ICONS = {
IconKarate,
IconKayak,
IconKey,
IconKeyOff,
IconKeyboard,
IconKeyboardHide,
IconKeyboardOff,
@ -6611,7 +6610,6 @@ export const ALL_ICONS = {
IconKeyframeAlignHorizontal,
IconKeyframeAlignVertical,
IconKeyframes,
IconKeyOff,
IconLadder,
IconLadderOff,
IconLadle,
@ -6805,8 +6803,6 @@ export const ALL_ICONS = {
IconMail,
IconMailAi,
IconMailBolt,
IconMailbox,
IconMailboxOff,
IconMailCancel,
IconMailCheck,
IconMailCode,
@ -6829,6 +6825,8 @@ export const ALL_ICONS = {
IconMailStar,
IconMailUp,
IconMailX,
IconMailbox,
IconMailboxOff,
IconMan,
IconManualGearbox,
IconMap,
@ -6862,12 +6860,12 @@ export const ALL_ICONS = {
IconMapPinPin,
IconMapPinPlus,
IconMapPinQuestion,
IconMapPins,
IconMapPinSearch,
IconMapPinShare,
IconMapPinStar,
IconMapPinUp,
IconMapPinX,
IconMapPins,
IconMapPlus,
IconMapQuestion,
IconMapSearch,
@ -6898,8 +6896,8 @@ export const ALL_ICONS = {
IconMathFunctionY,
IconMathGreater,
IconMathIntegral,
IconMathIntegrals,
IconMathIntegralX,
IconMathIntegrals,
IconMathLower,
IconMathMax,
IconMathMin,
@ -6997,13 +6995,13 @@ export const ALL_ICONS = {
IconMessagePlus,
IconMessageQuestion,
IconMessageReport,
IconMessages,
IconMessageSearch,
IconMessageShare,
IconMessagesOff,
IconMessageStar,
IconMessageUp,
IconMessageX,
IconMessages,
IconMessagesOff,
IconMeteor,
IconMeteorOff,
IconMichelinBibGourmand,
@ -7093,10 +7091,10 @@ export const ALL_ICONS = {
IconMovieOff,
IconMug,
IconMugOff,
IconMultiplier1x,
IconMultiplier2x,
IconMultiplier05x,
IconMultiplier15x,
IconMultiplier1x,
IconMultiplier2x,
IconMushroom,
IconMushroomOff,
IconMusic,
@ -7148,8 +7146,8 @@ export const ALL_ICONS = {
IconNeedleThread,
IconNetwork,
IconNetworkOff,
IconNews,
IconNewSection,
IconNews,
IconNewsOff,
IconNfc,
IconNfcOff,
@ -7158,9 +7156,9 @@ export const ALL_ICONS = {
IconNoDerivatives,
IconNorthStar,
IconNote,
IconNoteOff,
IconNotebook,
IconNotebookOff,
IconNoteOff,
IconNotes,
IconNotesOff,
IconNotification,
@ -7319,8 +7317,8 @@ export const ALL_ICONS = {
IconPlaneDeparture,
IconPlaneInflight,
IconPlaneOff,
IconPlanet,
IconPlaneTilt,
IconPlanet,
IconPlanetOff,
IconPlant,
IconPlant2,
@ -7329,6 +7327,9 @@ export const ALL_ICONS = {
IconPlayBasketball,
IconPlayCard,
IconPlayCardOff,
IconPlayFootball,
IconPlayHandball,
IconPlayVolleyball,
IconPlayerEject,
IconPlayerPause,
IconPlayerPlay,
@ -7338,8 +7339,6 @@ export const ALL_ICONS = {
IconPlayerStop,
IconPlayerTrackNext,
IconPlayerTrackPrev,
IconPlayFootball,
IconPlayHandball,
IconPlaylist,
IconPlaylistAdd,
IconPlaylistOff,
@ -7348,7 +7347,6 @@ export const ALL_ICONS = {
IconPlaystationSquare,
IconPlaystationTriangle,
IconPlaystationX,
IconPlayVolleyball,
IconPlug,
IconPlugConnected,
IconPlugConnectedX,
@ -7361,6 +7359,7 @@ export const ALL_ICONS = {
IconPodium,
IconPodiumOff,
IconPoint,
IconPointOff,
IconPointer,
IconPointerBolt,
IconPointerCancel,
@ -7382,7 +7381,6 @@ export const ALL_ICONS = {
IconPointerStar,
IconPointerUp,
IconPointerX,
IconPointOff,
IconPokeball,
IconPokeballOff,
IconPokerChip,
@ -7432,9 +7430,9 @@ export const ALL_ICONS = {
IconRadar2,
IconRadarOff,
IconRadio,
IconRadioOff,
IconRadioactive,
IconRadioactiveOff,
IconRadioOff,
IconRadiusBottomLeft,
IconRadiusBottomRight,
IconRadiusTopLeft,
@ -7491,20 +7489,20 @@ export const ALL_ICONS = {
IconReservedLine,
IconResize,
IconRestore,
IconRewindBackward5,
IconRewindBackward10,
IconRewindBackward15,
IconRewindBackward20,
IconRewindBackward30,
IconRewindBackward40,
IconRewindBackward5,
IconRewindBackward50,
IconRewindBackward60,
IconRewindForward5,
IconRewindForward10,
IconRewindForward15,
IconRewindForward20,
IconRewindForward30,
IconRewindForward40,
IconRewindForward5,
IconRewindForward50,
IconRewindForward60,
IconRibbonHealth,
@ -7518,9 +7516,9 @@ export const ALL_ICONS = {
IconRobotOff,
IconRocket,
IconRocketOff,
IconRollerSkating,
IconRollercoaster,
IconRollercoasterOff,
IconRollerSkating,
IconRosette,
IconRosetteNumber0,
IconRosetteNumber1,
@ -7534,6 +7532,8 @@ export const ALL_ICONS = {
IconRosetteNumber9,
IconRotate,
IconRotate2,
IconRotate360,
IconRotate3d,
IconRotateClockwise,
IconRotateClockwise2,
IconRotateDot,
@ -7556,6 +7556,10 @@ export const ALL_ICONS = {
IconRulerMeasure,
IconRulerOff,
IconRun,
IconSTurnDown,
IconSTurnLeft,
IconSTurnRight,
IconSTurnUp,
IconSailboat,
IconSailboat2,
IconSailboatOff,
@ -7710,6 +7714,8 @@ export const ALL_ICONS = {
IconShoppingCartX,
IconShovel,
IconShredder,
IconSignLeft,
IconSignRight,
IconSignal2g,
IconSignal3g,
IconSignal4g,
@ -7723,13 +7729,11 @@ export const ALL_ICONS = {
IconSignalLte,
IconSignature,
IconSignatureOff,
IconSignLeft,
IconSignRight,
IconSitemap,
IconSitemapOff,
IconSkateboard,
IconSkateboarding,
IconSkateboardOff,
IconSkateboarding,
IconSkull,
IconSlash,
IconSlashes,
@ -7753,11 +7757,11 @@ export const ALL_ICONS = {
IconSolarPanel2,
IconSort09,
IconSort90,
IconSortAZ,
IconSortAscending,
IconSortAscending2,
IconSortAscendingLetters,
IconSortAscendingNumbers,
IconSortAZ,
IconSortDescending,
IconSortDescending2,
IconSortDescendingLetters,
@ -7796,11 +7800,11 @@ export const ALL_ICONS = {
IconSquareChevronDown,
IconSquareChevronLeft,
IconSquareChevronRight,
IconSquareChevronUp,
IconSquareChevronsDown,
IconSquareChevronsLeft,
IconSquareChevronsRight,
IconSquareChevronsUp,
IconSquareChevronUp,
IconSquareDot,
IconSquareF0,
IconSquareF1,
@ -7870,11 +7874,11 @@ export const ALL_ICONS = {
IconSquareRoundedChevronDown,
IconSquareRoundedChevronLeft,
IconSquareRoundedChevronRight,
IconSquareRoundedChevronUp,
IconSquareRoundedChevronsDown,
IconSquareRoundedChevronsLeft,
IconSquareRoundedChevronsRight,
IconSquareRoundedChevronsUp,
IconSquareRoundedChevronUp,
IconSquareRoundedLetterA,
IconSquareRoundedLetterB,
IconSquareRoundedLetterC,
@ -7914,10 +7918,10 @@ export const ALL_ICONS = {
IconSquareRoundedNumber9,
IconSquareRoundedPlus,
IconSquareRoundedX,
IconSquaresDiagonal,
IconSquareToggle,
IconSquareToggleHorizontal,
IconSquareX,
IconSquaresDiagonal,
IconStack,
IconStack2,
IconStack3,
@ -7946,25 +7950,21 @@ export const ALL_ICONS = {
IconStretching,
IconStretching2,
IconStrikethrough,
IconSTurnDown,
IconSTurnLeft,
IconSTurnRight,
IconSTurnUp,
IconSubmarine,
IconSubscript,
IconSubtask,
IconSum,
IconSumOff,
IconSun,
IconSunglasses,
IconSunHigh,
IconSunLow,
IconSunMoon,
IconSunOff,
IconSunWind,
IconSunglasses,
IconSunrise,
IconSunset,
IconSunset2,
IconSunWind,
IconSuperscript,
IconSvg,
IconSwimming,
@ -8035,28 +8035,28 @@ export const ALL_ICONS = {
IconTextResize,
IconTextSize,
IconTextSpellcheck,
IconTexture,
IconTextWrap,
IconTextWrapDisabled,
IconTexture,
IconTheater,
IconThermometer,
IconThumbDown,
IconThumbDownOff,
IconThumbUp,
IconThumbUpOff,
IconTicTac,
IconTicket,
IconTicketOff,
IconTicTac,
IconTie,
IconTilde,
IconTiltShift,
IconTiltShiftOff,
IconTimeDuration0,
IconTimeDuration5,
IconTimeDuration10,
IconTimeDuration15,
IconTimeDuration30,
IconTimeDuration45,
IconTimeDuration5,
IconTimeDuration60,
IconTimeDuration90,
IconTimeDurationOff,
@ -8132,8 +8132,8 @@ export const ALL_ICONS = {
IconTriangle,
IconTriangleInverted,
IconTriangleOff,
IconTriangles,
IconTriangleSquareCircle,
IconTriangles,
IconTrident,
IconTrolley,
IconTrophy,
@ -8174,16 +8174,16 @@ export const ALL_ICONS = {
IconUserPin,
IconUserPlus,
IconUserQuestion,
IconUsers,
IconUserSearch,
IconUsersGroup,
IconUserShare,
IconUserShield,
IconUsersMinus,
IconUsersPlus,
IconUserStar,
IconUserUp,
IconUserX,
IconUsers,
IconUsersGroup,
IconUsersMinus,
IconUsersPlus,
IconUvIndex,
IconUxCircle,
IconVaccine,
@ -8211,6 +8211,7 @@ export const ALL_ICONS = {
IconVideoMinus,
IconVideoOff,
IconVideoPlus,
IconView360,
IconView360Off,
IconViewfinder,
IconViewfinderOff,
@ -8231,9 +8232,9 @@ export const ALL_ICONS = {
IconVolumeOff,
IconWalk,
IconWall,
IconWallOff,
IconWallet,
IconWalletOff,
IconWallOff,
IconWallpaper,
IconWallpaperOff,
IconWand,
@ -8244,8 +8245,6 @@ export const ALL_ICONS = {
IconWashDry2,
IconWashDry3,
IconWashDryA,
IconWashDryclean,
IconWashDrycleanOff,
IconWashDryDip,
IconWashDryF,
IconWashDryFlat,
@ -8254,6 +8253,8 @@ export const ALL_ICONS = {
IconWashDryP,
IconWashDryShade,
IconWashDryW,
IconWashDryclean,
IconWashDrycleanOff,
IconWashEco,
IconWashGentle,
IconWashHand,
@ -8284,9 +8285,9 @@ export const ALL_ICONS = {
IconWifi2,
IconWifiOff,
IconWind,
IconWindOff,
IconWindmill,
IconWindmillOff,
IconWindOff,
IconWindow,
IconWindowMaximize,
IconWindowMinimize,
@ -8366,5 +8367,4 @@ export const ALL_ICONS = {
IconZoomReset,
IconZzz,
IconZzzOff,
IconBrowserMaximize,
};

View File

@ -1,67 +1,392 @@
export * from './avatar-chip/components/AvatarChip';
export * from './avatar-chip/components/AvatarChipLeftComponent';
export * from './avatar-chip/components/LinkAvatarChip';
export * from './avatar-chip/types/AvatarChipsCommonProps.type';
export * from './avatar-chip/types/AvatarChipsVariant.type';
export * from './avatar/components/Avatar';
export * from './avatar/components/AvatarGroup';
export * from './avatar/components/states/isInvalidAvatarUrlState';
export * from './avatar/constants/AvatarPropertiesBySize';
export * from './avatar/types/AvatarSize';
export * from './avatar/types/AvatarType';
export * from './banner/components/Banner';
export * from './checkmark/components/AnimatedCheckmark';
export * from './checkmark/components/Checkmark';
export * from './chip/components/Chip';
export * from './chip/components/LinkChip';
export * from './color/components/ColorSample';
export * from './icon/components/IconAddressBook';
export * from './icon/components/IconGmail';
export * from './icon/components/IconGoogle';
export * from './icon/components/IconGoogleCalendar';
export * from './icon/components/IconLock';
export * from './icon/components/IconMicrosoft';
export * from './icon/components/IconMicrosoftCalendar';
export * from './icon/components/IconMicrosoftOutlook';
export * from './icon/components/IconRelationManyToOne';
export * from './icon/components/IconTwentyStar';
export * from './icon/components/IconTwentyStarFilled';
export * from './icon/components/IllustrationIconArray';
export * from './icon/components/IllustrationIconCalendarEvent';
export * from './icon/components/IllustrationIconCalendarTime';
export * from './icon/components/IllustrationIconCurrency';
export * from './icon/components/IllustrationIconJson';
export * from './icon/components/IllustrationIconLink';
export * from './icon/components/IllustrationIconMail';
export * from './icon/components/IllustrationIconManyToMany';
export * from './icon/components/IllustrationIconMap';
export * from './icon/components/IllustrationIconNumbers';
export * from './icon/components/IllustrationIconOneToMany';
export * from './icon/components/IllustrationIconOneToOne';
export * from './icon/components/IllustrationIconPhone';
export * from './icon/components/IllustrationIconSetting';
export * from './icon/components/IllustrationIconStar';
export * from './icon/components/IllustrationIconTag';
export * from './icon/components/IllustrationIconTags';
export * from './icon/components/IllustrationIconText';
export * from './icon/components/IllustrationIconToggle';
export * from './icon/components/IllustrationIconUid';
export * from './icon/components/IllustrationIconUser';
export * from './icon/components/IllustrationIconWrapper';
export * from './icon/components/TablerIcons';
export * from './icon/hooks/useIcons';
export * from './icon/providers/IconsProvider';
export * from './icon/states/iconsState';
export * from './icon/types/IconComponent';
export * from './info/components/Info';
export * from './status/components/Status';
export * from './tag/components/Tag';
export * from './text/components/HorizontalSeparator';
export * from './text/components/SeparatorLineText';
export * from './tooltip/AppTooltip';
export * from './tooltip/OverflowingTextWithTooltip';
export * from './typography/components/H1Title';
export * from './typography/components/H2Title';
export * from './typography/components/H3Title';
export * from './typography/components/Label';
export * from './typography/components/StyledText';
/*
* _____ _
*|_ _|_ _____ _ __ | |_ _ _
* | | \ \ /\ / / _ \ '_ \| __| | | | Auto-generated file
* | | \ V V / __/ | | | |_| |_| | Any edits to this will be overridden
* |_| \_/\_/ \___|_| |_|\__|\__, |
* |___/
*/
export type { AvatarProps } from './avatar/components/Avatar';
export { Avatar } from './avatar/components/Avatar';
export type { AvatarGroupProps } from './avatar/components/AvatarGroup';
export { AvatarGroup } from './avatar/components/AvatarGroup';
export { invalidAvatarUrlsState } from './avatar/components/states/isInvalidAvatarUrlState';
export { AVATAR_PROPERTIES_BY_SIZE } from './avatar/constants/AvatarPropertiesBySize';
export type { AvatarSize } from './avatar/types/AvatarSize';
export type { AvatarType } from './avatar/types/AvatarType';
export type { BannerVariant } from './banner/components/Banner';
export { Banner } from './banner/components/Banner';
export type { AnimatedCheckmarkProps } from './checkmark/components/AnimatedCheckmark';
export { AnimatedCheckmark } from './checkmark/components/AnimatedCheckmark';
export type { CheckmarkProps } from './checkmark/components/Checkmark';
export { Checkmark } from './checkmark/components/Checkmark';
export type {
ColorSampleVariant,
ColorSampleProps,
} from './color/components/ColorSample';
export { ColorSample } from './color/components/ColorSample';
export { IconAddressBook } from './icon/components/IconAddressBook';
export { IconGmail } from './icon/components/IconGmail';
export { IconGoogle } from './icon/components/IconGoogle';
export { IconGoogleCalendar } from './icon/components/IconGoogleCalendar';
export { IconLockCustom } from './icon/components/IconLock';
export { IconMicrosoft } from './icon/components/IconMicrosoft';
export { IconMicrosoftCalendar } from './icon/components/IconMicrosoftCalendar';
export { IconMicrosoftOutlook } from './icon/components/IconMicrosoftOutlook';
export { IconRelationManyToOne } from './icon/components/IconRelationManyToOne';
export { IconTwentyStar } from './icon/components/IconTwentyStar';
export { IconTwentyStarFilled } from './icon/components/IconTwentyStarFilled';
export { IllustrationIconArray } from './icon/components/IllustrationIconArray';
export { IllustrationIconCalendarEvent } from './icon/components/IllustrationIconCalendarEvent';
export { IllustrationIconCalendarTime } from './icon/components/IllustrationIconCalendarTime';
export { IllustrationIconCurrency } from './icon/components/IllustrationIconCurrency';
export { IllustrationIconJson } from './icon/components/IllustrationIconJson';
export { IllustrationIconLink } from './icon/components/IllustrationIconLink';
export { IllustrationIconMail } from './icon/components/IllustrationIconMail';
export { IllustrationIconManyToMany } from './icon/components/IllustrationIconManyToMany';
export { IllustrationIconMap } from './icon/components/IllustrationIconMap';
export { IllustrationIconNumbers } from './icon/components/IllustrationIconNumbers';
export { IllustrationIconOneToMany } from './icon/components/IllustrationIconOneToMany';
export { IllustrationIconOneToOne } from './icon/components/IllustrationIconOneToOne';
export { IllustrationIconPhone } from './icon/components/IllustrationIconPhone';
export { IllustrationIconSetting } from './icon/components/IllustrationIconSetting';
export { IllustrationIconStar } from './icon/components/IllustrationIconStar';
export { IllustrationIconTag } from './icon/components/IllustrationIconTag';
export { IllustrationIconTags } from './icon/components/IllustrationIconTags';
export { IllustrationIconText } from './icon/components/IllustrationIconText';
export { IllustrationIconToggle } from './icon/components/IllustrationIconToggle';
export { IllustrationIconUid } from './icon/components/IllustrationIconUid';
export { IllustrationIconUser } from './icon/components/IllustrationIconUser';
export { IllustrationIconWrapper } from './icon/components/IllustrationIconWrapper';
export type { TablerIconsProps } from './icon/components/TablerIcons';
export {
Icon123,
IconAlertCircle,
IconAlertTriangle,
IconApi,
IconAppWindow,
IconApps,
IconArchive,
IconArchiveOff,
IconArrowBackUp,
IconArrowDown,
IconArrowLeft,
IconArrowRight,
IconArrowUp,
IconArrowUpRight,
IconArrowsDiagonal,
IconArrowsVertical,
IconAt,
IconBaselineDensitySmall,
IconBell,
IconBolt,
IconBook2,
IconBookmark,
IconBookmarkPlus,
IconBox,
IconBrackets,
IconBracketsAngle,
IconBracketsContain,
IconBrandDaysCounter,
IconBrandGithub,
IconBrandGoogle,
IconBrandGraphql,
IconBrandLinkedin,
IconBrandX,
IconBriefcase,
IconBrowserMaximize,
IconBuildingSkyscraper,
IconCalendar,
IconCalendarDue,
IconCalendarEvent,
IconCalendarTime,
IconCalendarX,
IconChartCandle,
IconCheck,
IconCheckbox,
IconChevronDown,
IconChevronLeft,
IconChevronRight,
IconChevronUp,
IconChevronsRight,
IconCircleDot,
IconCircleOff,
IconCirclePlus,
IconCircleX,
IconClick,
IconClockHour8,
IconClockPlay,
IconClockShare,
IconCode,
IconCodeCircle,
IconCoins,
IconColorSwatch,
IconComment,
IconCopy,
IconCreativeCommonsSa,
IconCreditCard,
IconCsv,
IconCube,
IconCurrencyAfghani,
IconCurrencyBahraini,
IconCurrencyBaht,
IconCurrencyDinar,
IconCurrencyDirham,
IconCurrencyDollar,
IconCurrencyDollarAustralian,
IconCurrencyDollarBrunei,
IconCurrencyDollarCanadian,
IconCurrencyDollarGuyanese,
IconCurrencyDollarSingapore,
IconCurrencyDong,
IconCurrencyDram,
IconCurrencyEuro,
IconCurrencyFlorin,
IconCurrencyForint,
IconCurrencyFrank,
IconCurrencyGuarani,
IconCurrencyHryvnia,
IconCurrencyIranianRial,
IconCurrencyKip,
IconCurrencyKroneCzech,
IconCurrencyKroneDanish,
IconCurrencyKroneSwedish,
IconCurrencyLari,
IconCurrencyLeu,
IconCurrencyLira,
IconCurrencyLyd,
IconCurrencyManat,
IconCurrencyNaira,
IconCurrencyPaanga,
IconCurrencyPeso,
IconCurrencyPound,
IconCurrencyQuetzal,
IconCurrencyReal,
IconCurrencyRenminbi,
IconCurrencyRiyal,
IconCurrencyRubel,
IconCurrencyRufiyaa,
IconCurrencyRupee,
IconCurrencyRupeeNepalese,
IconCurrencyShekel,
IconCurrencySom,
IconCurrencyTaka,
IconCurrencyTenge,
IconCurrencyTugrik,
IconCurrencyWon,
IconCurrencyYen,
IconCurrencyYuan,
IconCurrencyZloty,
IconDatabase,
IconDatabaseExport,
IconDecimal,
IconDeviceFloppy,
IconDoorEnter,
IconDotsVertical,
IconDownload,
IconEditCircle,
IconExternalLink,
IconEye,
IconEyeOff,
IconEyeShare,
IconFile,
IconFileCheck,
IconFileExport,
IconFileImport,
IconFilePencil,
IconFileText,
IconFileUpload,
IconFileZip,
IconFilter,
IconFilterCog,
IconFilterOff,
IconFlag,
IconFlask,
IconFocusCentered,
IconFolder,
IconFolderOpen,
IconFolderPlus,
IconFolderRoot,
IconForbid,
IconFunction,
IconGauge,
IconGitCommit,
IconGripVertical,
IconH1,
IconH2,
IconH3,
IconHandClick,
IconHandMove,
IconHeadphones,
IconHeart,
IconHeartOff,
IconHeartRateMonitor,
IconHelpCircle,
IconHierarchy,
IconHierarchy2,
IconHistory,
IconHistoryToggle,
IconHome,
IconHours24,
IconId,
IconInbox,
IconInfoCircle,
IconJson,
IconKey,
IconLanguage,
IconLayersLinked,
IconLayout,
IconLayoutKanban,
IconLayoutList,
IconLayoutNavbar,
IconLayoutSidebarLeftCollapse,
IconLayoutSidebarRight,
IconLayoutSidebarRightCollapse,
IconLayoutSidebarRightExpand,
IconLibraryPlus,
IconLifebuoy,
IconLink,
IconLinkOff,
IconList,
IconListCheck,
IconListDetails,
IconListNumbers,
IconLoader,
IconLock,
IconLockOpen,
IconLogin2,
IconLogout,
IconMail,
IconMailCog,
IconMap,
IconMaximize,
IconMessage,
IconMinus,
IconMoneybag,
IconMoodSmile,
IconMoon,
IconMouse2,
IconNorthStar,
IconNoteOff,
IconNotes,
IconNumber9,
IconNumbers,
IconPaperclip,
IconPassword,
IconPencil,
IconPercentage,
IconPhone,
IconPhoto,
IconPhotoUp,
IconPilcrow,
IconPlayerPause,
IconPlayerPlay,
IconPlayerStop,
IconPlaylistAdd,
IconPlaystationSquare,
IconPlug,
IconPlus,
IconPoint,
IconPower,
IconPresentation,
IconPrinter,
IconProgressCheck,
IconPuzzle,
IconQuestionMark,
IconRefresh,
IconRefreshDot,
IconRelationManyToMany,
IconRelationOneToMany,
IconRelationOneToOne,
IconReload,
IconRepeat,
IconRestore,
IconRobot,
IconRocket,
IconRotate,
IconRotate2,
IconSearch,
IconSend,
IconServer,
IconServer2,
IconSettings,
IconSettings2,
IconSettingsAutomation,
IconSlash,
IconSortAZ,
IconSortDescending,
IconSortZA,
IconSparkles,
IconSql,
IconSquare,
IconSquareKey,
IconSquareRoundedCheck,
IconSquareRoundedX,
IconStatusChange,
IconStepInto,
IconSun,
IconSunMoon,
IconSwitchHorizontal,
IconTable,
IconTag,
IconTags,
IconTarget,
IconTargetArrow,
IconTestPipe,
IconTextSize,
IconTextWrap,
IconTimeDuration30,
IconTimeDuration60,
IconTimelineEvent,
IconTool,
IconTrash,
IconTrashX,
IconTypography,
IconUnlink,
IconUpload,
IconUser,
IconUserCircle,
IconUserCog,
IconUserPin,
IconUserPlus,
IconUsers,
IconVariable,
IconVariablePlus,
IconVersions,
IconVersionsOff,
IconVideo,
IconWand,
IconWebhook,
IconWorld,
IconX,
} from './icon/components/TablerIcons';
export { useIcons } from './icon/hooks/useIcons';
export { IconsProvider } from './icon/providers/IconsProvider';
export { iconsState } from './icon/states/iconsState';
export type {
IconComponentProps,
IconComponent,
} from './icon/types/IconComponent';
export type { InfoAccent, InfoProps } from './info/components/Info';
export { Info } from './info/components/Info';
export { Status } from './status/components/Status';
export { HorizontalSeparator } from './text/components/HorizontalSeparator';
export { SeparatorLineText } from './text/components/SeparatorLineText';
export type { AppTooltipProps } from './tooltip/AppTooltip';
export {
TooltipPosition,
TooltipDelay,
AppTooltip,
} from './tooltip/AppTooltip';
export { OverflowingTextWithTooltip } from './tooltip/OverflowingTextWithTooltip';
export { H1TitleFontColor, H1Title } from './typography/components/H1Title';
export { H2Title } from './typography/components/H2Title';
export { H3Title } from './typography/components/H3Title';
export type { LabelVariant } from './typography/components/Label';
export { Label } from './typography/components/Label';
export {
StyledTextContent,
StyledTextWrapper,
StyledText,
} from './typography/components/StyledText';

View File

@ -69,14 +69,18 @@ export const AppTooltip = ({
width,
isOpen,
}: AppTooltipProps) => {
const delayInMs =
delay === TooltipDelay.noDelay
? 0
: delay === TooltipDelay.shortDelay
? 300
: delay === TooltipDelay.mediumDelay
? 500
: 1000;
const getDelayInMis = (delay: TooltipDelay) => {
switch (delay) {
case TooltipDelay.noDelay:
return 0;
case TooltipDelay.shortDelay:
return 300;
case TooltipDelay.mediumDelay:
return 500;
case TooltipDelay.longDelay:
return 1000;
}
};
return (
<StyledAppTooltip
@ -84,7 +88,7 @@ export const AppTooltip = ({
anchorSelect,
className,
content,
delayShow: delayInMs,
delayShow: getDelayInMis(delay),
delayHide: 20,
hidden,
noArrow,

View File

@ -1,4 +1,17 @@
export * from './loader/components/Loader';
export * from './progress-bar/components/CircularProgressBar';
export * from './progress-bar/components/ProgressBar';
export * from './progress-bar/hooks/useProgressAnimation';
/*
* _____ _
*|_ _|_ _____ _ __ | |_ _ _
* | | \ \ /\ / / _ \ '_ \| __| | | | Auto-generated file
* | | \ V V / __/ | | | |_| |_| | Any edits to this will be overridden
* |_| \_/\_/ \___|_| |_|\__|\__, |
* |___/
*/
export { Loader } from './loader/components/Loader';
export { CircularProgressBar } from './progress-bar/components/CircularProgressBar';
export type {
ProgressBarProps,
StyledBarProps,
} from './progress-bar/components/ProgressBar';
export { ProgressBar } from './progress-bar/components/ProgressBar';
export { useProgressAnimation } from './progress-bar/hooks/useProgressAnimation';

View File

@ -1,11 +1 @@
export * from './accessibility';
export * from './components';
export * from './display';
export * from './feedback';
export * from './input';
export * from './json-visualizer';
export * from './layout';
export * from './navigation';
export * from './testing';
export * from './theme';
export * from './utilities';
export default {};

View File

@ -1,11 +1,11 @@
import { css, useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { Pill } from '@ui/components/Pill/Pill';
import { useIsMobile } from '@ui/utilities';
import { getOsShortcutSeparator } from '@ui/utilities/device/getOsShortcutSeparator';
import { MotionProps, motion } from 'framer-motion';
import { Link } from 'react-router-dom';
import { Pill } from '@ui/components/Pill/Pill';
import {
ButtonAccent,
ButtonProps,

View File

@ -1,4 +1,4 @@
import IconListViewGripRaw from '@ui/input/components/list-view-grip.svg?react';
import IconListViewGripRaw from '@assets/misc/list-view-grip.svg?react';
import { IconComponentProps } from '@ui/display/icon/types/IconComponent';
type IconListViewGripProps = Pick<IconComponentProps, 'size' | 'stroke'>;

Some files were not shown because too many files have changed in this diff Show More