From a00b15d08d05c1003d8c2d472643eee3f00f6240 Mon Sep 17 00:00:00 2001 From: Pavel Prichodko <14926950+prichodko@users.noreply.github.com> Date: Tue, 17 Jan 2023 14:32:04 +0100 Subject: [PATCH] add icons package --- packages/icons/package.json | 28 +++++++++++++++++++++ packages/icons/src/index.tsx | 2 ++ packages/icons/src/members-icon.tsx | 29 +++++++++++++++++++++ packages/icons/src/options-icon.tsx | 20 +++++++++++++++ packages/icons/src/types.ts | 6 +++++ packages/icons/tsconfig.json | 9 +++++++ packages/icons/vite.config.ts | 39 +++++++++++++++++++++++++++++ 7 files changed, 133 insertions(+) create mode 100644 packages/icons/package.json create mode 100644 packages/icons/src/index.tsx create mode 100644 packages/icons/src/members-icon.tsx create mode 100644 packages/icons/src/options-icon.tsx create mode 100644 packages/icons/src/types.ts create mode 100644 packages/icons/tsconfig.json create mode 100644 packages/icons/vite.config.ts diff --git a/packages/icons/package.json b/packages/icons/package.json new file mode 100644 index 00000000..ff22cfbd --- /dev/null +++ b/packages/icons/package.json @@ -0,0 +1,28 @@ +{ + "name": "@status-im/icons", + "version": "0.0.1", + "types": "src/index.tsx", + "main": "src/index.tsx", + "private": true, + "files": [ + "types", + "dist" + ], + "scripts": { + "dev": "vite build --watch --mode development", + "build": "vite build", + "postbuild": "yarn typegen", + "#test": "vitest", + "typecheck": "tsc", + "typegen": "tsc --noEmit false --emitDeclarationOnly || true", + "lint": "eslint src", + "format": "prettier --write src", + "clean": "rm -rf dist node_modules .turbo" + }, + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + }, + "devDependencies": { + "vite": "^4.0.4" + } +} diff --git a/packages/icons/src/index.tsx b/packages/icons/src/index.tsx new file mode 100644 index 00000000..e4471c39 --- /dev/null +++ b/packages/icons/src/index.tsx @@ -0,0 +1,2 @@ +export { MembersIcon } from './members-icon' +export { OptionsIcon } from './options-icon' diff --git a/packages/icons/src/members-icon.tsx b/packages/icons/src/members-icon.tsx new file mode 100644 index 00000000..a5eb5976 --- /dev/null +++ b/packages/icons/src/members-icon.tsx @@ -0,0 +1,29 @@ +import type { IconProps } from './types' + +export function MembersIcon(props: IconProps) { + const { color = 'currentColor', ...rest } = props + + return ( + + + + + ) +} diff --git a/packages/icons/src/options-icon.tsx b/packages/icons/src/options-icon.tsx new file mode 100644 index 00000000..e9cda24d --- /dev/null +++ b/packages/icons/src/options-icon.tsx @@ -0,0 +1,20 @@ +import type { IconProps } from './types' + +export function OptionsIcon(props: IconProps) { + const { color = 'currentColor', ...rest } = props + + return ( + + + + + + ) +} diff --git a/packages/icons/src/types.ts b/packages/icons/src/types.ts new file mode 100644 index 00000000..b844e9a0 --- /dev/null +++ b/packages/icons/src/types.ts @@ -0,0 +1,6 @@ +import type { SVGAttributes } from 'react' + +export interface IconProps extends SVGAttributes { + children?: never + color?: string +} diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json new file mode 100644 index 00000000..bbbb84f2 --- /dev/null +++ b/packages/icons/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src"], + "compilerOptions": { + "outDir": "./dist", + "declarationDir": "dist/types", + "resolveJsonModule": true + } +} diff --git a/packages/icons/vite.config.ts b/packages/icons/vite.config.ts new file mode 100644 index 00000000..8595de6d --- /dev/null +++ b/packages/icons/vite.config.ts @@ -0,0 +1,39 @@ +/// + +import react from '@vitejs/plugin-react' +import { defineConfig } from 'vite' + +import { peerDependencies } from './package.json' + +const external = [ + // ...Object.keys(dependencies || {}), + ...Object.keys(peerDependencies || {}), +].map(name => new RegExp(`^${name}(/.*)?`)) + +export default defineConfig(({ mode }) => { + return { + build: { + target: 'es2020', + lib: { + entry: './src/index.tsx', + fileName: 'index', + formats: ['es'], + }, + sourcemap: true, + emptyOutDir: mode === 'production', + rollupOptions: { + external, + }, + }, + + plugins: [react()], + + // plugins: [ + // react(), + // ], + + test: { + environment: 'happy-dom', + }, + } +})