+
Example!
+
+
Counter: {count}
+
+
+
+
+
+
+ );
+}
+
+export default Example;
diff --git a/frontend/packages/ui/tsconfig.json b/frontend/packages/ui/tsconfig.json
new file mode 100644
index 0000000000..988cd3dd6d
--- /dev/null
+++ b/frontend/packages/ui/tsconfig.json
@@ -0,0 +1,33 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "ESNext",
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": false,
+ "noEmit": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true,
+ "jsx": "react-jsx",
+ "types": ["vite/client", "vitest"],
+ "baseUrl": "."
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ },
+ {
+ "path": "./tsconfig.storybook.json"
+ }
+ ]
+}
diff --git a/frontend/packages/ui/tsconfig.lib.json b/frontend/packages/ui/tsconfig.lib.json
new file mode 100644
index 0000000000..224969e95e
--- /dev/null
+++ b/frontend/packages/ui/tsconfig.lib.json
@@ -0,0 +1,37 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../dist/out-tsc",
+ "types": [
+ "node",
+ "vite/client"
+ ]
+ },
+ "exclude": [
+ "**/*.spec.ts",
+ "**/*.test.ts",
+ "**/*.spec.tsx",
+ "**/*.test.tsx",
+ "**/*.spec.js",
+ "**/*.test.js",
+ "**/*.spec.jsx",
+ "**/*.test.jsx",
+ "vite.config.ts",
+ "vite.config.mts",
+ "vitest.config.ts",
+ "vitest.config.mts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx",
+ "**/*.stories.ts",
+ "**/*.stories.js",
+ "**/*.stories.jsx",
+ "**/*.stories.tsx"
+ ],
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/frontend/packages/ui/tsconfig.spec.json b/frontend/packages/ui/tsconfig.spec.json
new file mode 100644
index 0000000000..56b7488879
--- /dev/null
+++ b/frontend/packages/ui/tsconfig.spec.json
@@ -0,0 +1,28 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../dist/out-tsc",
+ "types": [
+ "vitest/globals",
+ "vitest/importMeta",
+ "vite/client",
+ "node",
+ "vitest"
+ ]
+ },
+ "include": [
+ "vite.config.ts",
+ "vite.config.mts",
+ "vitest.config.ts",
+ "vitest.config.mts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx",
+ "src/**/*.d.ts"
+ ]
+}
diff --git a/frontend/packages/ui/tsconfig.storybook.json b/frontend/packages/ui/tsconfig.storybook.json
new file mode 100644
index 0000000000..4a43d7d4fa
--- /dev/null
+++ b/frontend/packages/ui/tsconfig.storybook.json
@@ -0,0 +1,28 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "emitDecoratorMetadata": true,
+ "outDir": "",
+ "module": "esnext",
+ "moduleResolution": "bundler"
+ },
+ "exclude": [
+ "src/**/*.spec.ts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.js",
+ "src/**/*.test.js",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.jsx",
+ "src/**/*.test.js"
+ ],
+ "include": [
+ "src/**/*.stories.ts",
+ "src/**/*.stories.js",
+ "src/**/*.stories.jsx",
+ "src/**/*.stories.tsx",
+ "src/**/*.stories.mdx",
+ ".storybook/*.js",
+ ".storybook/*.ts"
+ ]
+}
diff --git a/frontend/packages/ui/vite.config.mts b/frontend/packages/ui/vite.config.mts
new file mode 100644
index 0000000000..a1f91b23c1
--- /dev/null
+++ b/frontend/packages/ui/vite.config.mts
@@ -0,0 +1,66 @@
+///