Skip to content

Commit

Permalink
Add ui-informed package (#8)
Browse files Browse the repository at this point in the history
* Copy `ui` package into `ui-informed`

* Clear configs and `package.json` and add very basic control with storybook

* Improve initial clean ui-informed after review

* Fix build
  • Loading branch information
Matushl authored Mar 21, 2024
1 parent 4430f40 commit 5433aef
Show file tree
Hide file tree
Showing 18 changed files with 6,559 additions and 4,587 deletions.
10,883 changes: 6,297 additions & 4,586 deletions package-lock.json

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions packages/ui-informed/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*
!dist/**/*
!package.json
36 changes: 36 additions & 0 deletions packages/ui-informed/.storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import path from 'path';

import type { StorybookConfig } from '@storybook/react-vite';
import tsconfigPaths from 'vite-tsconfig-paths';

/**
* This function is used to resolve the absolute path of a package.
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
*/
function getAbsolutePath(value) {
return path.dirname(require.resolve(path.join(value, 'package.json')));
}

const config: StorybookConfig = {
viteFinal: async config => {
config.plugins?.push(tsconfigPaths());

return config;
},
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: [
getAbsolutePath('@storybook/addon-links'),
getAbsolutePath('@storybook/addon-essentials'),
getAbsolutePath('@storybook/addon-onboarding'),
getAbsolutePath('@storybook/addon-interactions'),
],
framework: {
name: getAbsolutePath('@storybook/react-vite') as any,
options: {},
},
docs: {
autodocs: 'tag',
},
};

export default config;
3 changes: 3 additions & 0 deletions packages/ui-informed/.storybook/preview.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
16 changes: 16 additions & 0 deletions packages/ui-informed/.storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { type Preview } from '@storybook/react';
import './preview.css';

const preview: Preview = {
parameters: {
actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
};

export default preview;
1 change: 1 addition & 0 deletions packages/ui-informed/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# @utima/ui-informed
7 changes: 7 additions & 0 deletions packages/ui-informed/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# @utima/ui-informed

Combination of components from Utima/ui and form library Informed.

# Development

For this package to be working locally for you, you need to have have @utima/ui package built.
9 changes: 9 additions & 0 deletions packages/ui-informed/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import baseConfig from '@utima/eslint-config';

export default [
{
// FIXME - typescript eslint not working here
ignores: ['**/.storybook/**'],
},
...baseConfig,
];
60 changes: 60 additions & 0 deletions packages/ui-informed/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"name": "@utima/ui-informed",
"version": "0.0.0",
"description": "Utima UI-Informed based on Utima UI and form library Informed with support for Zod validations.",
"sideEffects": false,
"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",
"types": "dist/src/index.d.ts",
"scripts": {
"build": "rollup -c",
"dev": "rollup -c -w",
"lint": "ESLINT_USE_FLAT_CONFIG=true eslint -c ./eslint.config.mjs './**/*.{js,ts,jsx,tsx,cjs,mjs}'",
"lint:fix": "npm run lint -- --fix",
"storybook": "storybook dev -p 6006",
"storybook:build": "npm run build; storybook build"
},
"exports": {
".": {
"import": "./dist/esm/index.js",
"types": "./dist/src/index.d.ts",
"default": "./dist/cjs/index.js"
}
},
"keywords": [
"utima",
"ui",
"informed",
"radix",
"shadcn",
"react",
"zod",
"validation",
"form",
"form-library",
"component",
"library",
"components"
],
"author": "Matúš Hlaváčik",
"license": "MIT",
"devDependencies": {
"@storybook/addon-essentials": "^7.6.16",
"@storybook/addon-interactions": "^7.6.16",
"@storybook/addon-links": "^7.6.16",
"@storybook/addon-onboarding": "^1.0.11",
"@storybook/react": "^7.6.16",
"@storybook/react-vite": "^7.6.16",
"@utima/ui": "^0.16.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"storybook": "^7.6.16",
"tailwindcss": "^3.4.1",
"vite-tsconfig-paths": "^4.3.1"
},
"peerDependencies": {
"@utima/ui": "^0.16.2",
"react": ">=18",
"react-dom": ">=18"
}
}
6 changes: 6 additions & 0 deletions packages/ui-informed/postcss.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
33 changes: 33 additions & 0 deletions packages/ui-informed/rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { nodeExternals } from 'rollup-plugin-node-externals';
import typescript from 'rollup-plugin-typescript2';

/**
* @type {import('rollup').RollupOptions[]}
*/
export default [
{
input: `src/index.ts`,
plugins: [
nodeExternals(),
typescript({
rollupCommonJSResolveHack: false,
useTsconfigDeclarationDir: true,
tsconfig: 'tsconfig.build.json',
}),
],
output: [
{
dir: './dist/esm',
format: 'es',
sourcemap: true,
preserveModules: true,
},
{
dir: './dist/cjs',
format: 'cjs',
sourcemap: true,
preserveModules: true,
},
],
},
];
21 changes: 21 additions & 0 deletions packages/ui-informed/src/controls/InputControl.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import type { Meta, StoryObj } from '@storybook/react';

import { InputControl } from './InputControl';

const meta: Meta<typeof InputControl> = {
component: InputControl,
tags: ['autodocs'],
title: 'Controls/InputControl',
args: {
name: 'Name',
placeholder: 'Placeholder',
},
};

export default meta;

type Story = StoryObj<typeof InputControl>;

export const Basic: Story = {
args: {},
};
8 changes: 8 additions & 0 deletions packages/ui-informed/src/controls/InputControl.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { Input, type InputProps } from '@utima/ui';

Check warning on line 1 in packages/ui-informed/src/controls/InputControl.tsx

View workflow job for this annotation

GitHub Actions / CI

Unable to resolve path to module '@utima/ui'

/**
* Input component that is just returning siple Input component from @utima/ui
*/
export function InputControl({ type = 'text', ...restProps }: InputProps) {
return <Input variant='default' type={type} {...restProps} />;
}
4 changes: 4 additions & 0 deletions packages/ui-informed/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/**
* Controls
*/
export { InputControl } from './controls/InputControl';
16 changes: 16 additions & 0 deletions packages/ui-informed/tailwind.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import path from 'node:path';

import utimaUi from '@utima/ui/plugin';

/** @type {import('tailwindcss').Config} */
export default {
content: [
'./index.html',
'./src/**/*.{js,ts,jsx,tsx}',
`${path.dirname(require.resolve('@utima/ui'))}/**/*.js`,
],
theme: {
extend: {},
},
plugins: [utimaUi()],
};
9 changes: 9 additions & 0 deletions packages/ui-informed/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"declarationDir": "dist",
},
"exclude": [
"**/__tests__/*",
]
}
30 changes: 30 additions & 0 deletions packages/ui-informed/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"extends": "../../tsconfig.lib.json",
"compilerOptions": {
"target": "ES2018",
"lib": [
"ES2018",
"DOM",
"DOM.Iterable"
],
"module": "ESNext",
"moduleResolution": "Bundler",
"jsx": "react-jsx",
"outDir": "./dist",
"baseUrl": ".",
"paths": {
"@/*": [
"./src/*"
],
},
},
"include": [
"src",
"plugin.d.ts"
],
"exclude": [
"**/.*/",
"**/node_modules/**",
"**/dist/**"
],
}
1 change: 0 additions & 1 deletion packages/ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@
"@storybook/react-vite": "^7.6.16",
"@storybook/test": "^7.6.16",
"@types/lodash.get": "^4.4.9",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"storybook": "^7.6.16",
Expand Down

0 comments on commit 5433aef

Please sign in to comment.