Skip to content

Commit d7885cd

Browse files
committed
2 parents 6a7a922 + 98caf4c commit d7885cd

8 files changed

Lines changed: 212 additions & 109 deletions

File tree

Lines changed: 98 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,99 @@
11
{
2-
"name": "@panthevm_original/react-components",
3-
"private": false,
4-
"version": "1.0.10",
5-
"description": "React components library",
6-
"main": "dist/react-components.umd.js",
7-
"module": "./dist/react-components.js",
8-
"types": "./dist/types/index.d.ts",
9-
"files": [
10-
"dist"
11-
],
12-
"type": "module",
13-
"exports": {
14-
".": {
15-
"import": {
16-
"types": "./dist/types/index.d.ts",
17-
"default": "./dist/react-components.js"
18-
},
19-
"require": {
20-
"types": "./dist/types/index.d.ts",
21-
"default": "./dist/react-components.umd.js"
22-
}
23-
},
24-
"./styles.css": {
25-
"types": "./dist/types/styles.d.ts",
26-
"default": "./dist/react-components.css"
27-
}
28-
},
29-
"scripts": {
30-
"dev": "vite",
31-
"build": "tsc -p tsconfig.build.json && vite build",
32-
"lint": "eslint .",
33-
"preview": "vite preview",
34-
"storybook": "storybook dev -p 6006",
35-
"build-storybook": "storybook build",
36-
"sync-design-tokens": "node scripts/sync-design-tokens.js"
37-
},
38-
"dependencies": {
39-
"@hookform/resolvers": "^5.2.1",
40-
"@radix-ui/react-accordion": "^1.2.11",
41-
"@radix-ui/react-alert-dialog": "^1.1.14",
42-
"@radix-ui/react-aspect-ratio": "^1.1.7",
43-
"@radix-ui/react-avatar": "^1.1.10",
44-
"@radix-ui/react-checkbox": "^1.3.2",
45-
"@radix-ui/react-collapsible": "^1.1.11",
46-
"@radix-ui/react-context-menu": "^2.2.15",
47-
"@radix-ui/react-dialog": "^1.1.14",
48-
"@radix-ui/react-dropdown-menu": "^2.1.15",
49-
"@radix-ui/react-hover-card": "^1.1.14",
50-
"@radix-ui/react-label": "^2.1.7",
51-
"@radix-ui/react-menubar": "^1.1.15",
52-
"@radix-ui/react-navigation-menu": "^1.2.13",
53-
"@radix-ui/react-popover": "^1.1.14",
54-
"@radix-ui/react-progress": "^1.1.7",
55-
"@radix-ui/react-radio-group": "^1.3.7",
56-
"@radix-ui/react-scroll-area": "^1.2.9",
57-
"@radix-ui/react-select": "^2.2.5",
58-
"@radix-ui/react-separator": "^1.1.7",
59-
"@radix-ui/react-slider": "^1.3.5",
60-
"@radix-ui/react-slot": "^1.2.3",
61-
"@radix-ui/react-switch": "^1.2.5",
62-
"@radix-ui/react-tabs": "^1.1.12",
63-
"@radix-ui/react-toggle": "^1.1.9",
64-
"@radix-ui/react-toggle-group": "^1.1.10",
65-
"@radix-ui/react-tooltip": "^1.2.7",
66-
"@tailwindcss/vite": "^4.1.11",
67-
"class-variance-authority": "^0.7.1",
68-
"clsx": "^2.1.1",
69-
"cmdk": "^1.1.1",
70-
"date-fns": "^4.1.0",
71-
"embla-carousel-react": "^8.6.0",
72-
"input-otp": "^1.4.2",
73-
"lucide-react": "^0.536.0",
74-
"next-themes": "^0.4.6",
75-
"react": "^19.1.0",
76-
"react-day-picker": "^9.8.1",
77-
"react-dom": "^19.1.0",
78-
"react-hook-form": "^7.62.0",
79-
"react-resizable-panels": "^3.0.4",
80-
"recharts": "2.15.4",
81-
"sonner": "^2.0.7",
82-
"tailwind-merge": "^3.3.1",
83-
"tailwindcss": "^4.1.11",
84-
"vaul": "^1.1.2",
85-
"zod": "^4.0.14"
86-
},
87-
"devDependencies": {
88-
"@eslint/js": "^9.30.1",
89-
"@storybook/addon-storysource": "9.0.0-alpha.14",
90-
"@storybook/addon-themes": "^9.1.1",
91-
"@storybook/react-vite": "^9.1.1",
92-
"@types/node": "^24.2.0",
93-
"@types/react": "^19.1.8",
94-
"@types/react-dom": "^19.1.6",
95-
"@vitejs/plugin-react": "^4.6.0",
96-
"eslint": "^9.30.1",
97-
"eslint-plugin-react-hooks": "^5.2.0",
98-
"eslint-plugin-react-refresh": "^0.4.20",
99-
"eslint-plugin-storybook": "^9.1.1",
100-
"globals": "^16.3.0",
101-
"storybook": "^9.1.1",
102-
"tw-animate-css": "^1.3.6",
103-
"typescript": "~5.8.3",
104-
"typescript-eslint": "^8.35.1",
105-
"vite": "^7.0.4"
106-
}
107-
}
2+
"name": "@panthevm_original/react-components",
3+
"private": false,
4+
"version": "1.0.10",
5+
"description": "React components library",
6+
"main": "dist/react-components.umd.js",
7+
"module": "./dist/react-components.js",
8+
"types": "./dist/types/index.d.ts",
9+
"files": [
10+
"dist"
11+
],
12+
"type": "module",
13+
"exports": {
14+
".": {
15+
"types": "./dist/types/index.d.ts",
16+
"import": "./dist/react-components.js",
17+
"require": "./dist/react-components.umd.js"
18+
},
19+
"./styles.css": "./dist/react-components.css"
20+
},
21+
"scripts": {
22+
"dev": "vite",
23+
"build": "tsc -p tsconfig.build.json && vite build && node scripts/clean-types.js",
24+
"lint": "eslint .",
25+
"preview": "vite preview",
26+
"storybook": "storybook dev -p 6006",
27+
"build-storybook": "storybook build",
28+
"sync-design-tokens": "node scripts/sync-design-tokens.js"
29+
},
30+
"dependencies": {
31+
"@hookform/resolvers": "^5.2.1",
32+
"@radix-ui/react-accordion": "^1.2.11",
33+
"@radix-ui/react-alert-dialog": "^1.1.14",
34+
"@radix-ui/react-aspect-ratio": "^1.1.7",
35+
"@radix-ui/react-avatar": "^1.1.10",
36+
"@radix-ui/react-checkbox": "^1.3.2",
37+
"@radix-ui/react-collapsible": "^1.1.11",
38+
"@radix-ui/react-context-menu": "^2.2.15",
39+
"@radix-ui/react-dialog": "^1.1.14",
40+
"@radix-ui/react-dropdown-menu": "^2.1.15",
41+
"@radix-ui/react-hover-card": "^1.1.14",
42+
"@radix-ui/react-label": "^2.1.7",
43+
"@radix-ui/react-menubar": "^1.1.15",
44+
"@radix-ui/react-navigation-menu": "^1.2.13",
45+
"@radix-ui/react-popover": "^1.1.14",
46+
"@radix-ui/react-progress": "^1.1.7",
47+
"@radix-ui/react-radio-group": "^1.3.7",
48+
"@radix-ui/react-scroll-area": "^1.2.9",
49+
"@radix-ui/react-select": "^2.2.5",
50+
"@radix-ui/react-separator": "^1.1.7",
51+
"@radix-ui/react-slider": "^1.3.5",
52+
"@radix-ui/react-slot": "^1.2.3",
53+
"@radix-ui/react-switch": "^1.2.5",
54+
"@radix-ui/react-tabs": "^1.1.12",
55+
"@radix-ui/react-toggle": "^1.1.9",
56+
"@radix-ui/react-toggle-group": "^1.1.10",
57+
"@radix-ui/react-tooltip": "^1.2.7",
58+
"@tailwindcss/vite": "^4.1.11",
59+
"class-variance-authority": "^0.7.1",
60+
"clsx": "^2.1.1",
61+
"cmdk": "^1.1.1",
62+
"date-fns": "^4.1.0",
63+
"embla-carousel-react": "^8.6.0",
64+
"input-otp": "^1.4.2",
65+
"lucide-react": "^0.536.0",
66+
"next-themes": "^0.4.6",
67+
"react": "^19.1.0",
68+
"react-day-picker": "^9.8.1",
69+
"react-dom": "^19.1.0",
70+
"react-hook-form": "^7.62.0",
71+
"react-resizable-panels": "^3.0.4",
72+
"recharts": "2.15.4",
73+
"sonner": "^2.0.7",
74+
"tailwind-merge": "^3.3.1",
75+
"tailwindcss": "^4.1.11",
76+
"vaul": "^1.1.2",
77+
"zod": "^4.0.14"
78+
},
79+
"devDependencies": {
80+
"@eslint/js": "^9.30.1",
81+
"@storybook/addon-storysource": "9.0.0-alpha.14",
82+
"@storybook/addon-themes": "^9.1.1",
83+
"@storybook/react-vite": "^9.1.1",
84+
"@types/node": "^24.2.0",
85+
"@types/react": "^19.1.8",
86+
"@types/react-dom": "^19.1.6",
87+
"@vitejs/plugin-react": "^4.6.0",
88+
"eslint": "^9.30.1",
89+
"eslint-plugin-react-hooks": "^5.2.0",
90+
"eslint-plugin-react-refresh": "^0.4.20",
91+
"eslint-plugin-storybook": "^9.1.1",
92+
"globals": "^16.3.0",
93+
"storybook": "^9.1.1",
94+
"tw-animate-css": "^1.3.6",
95+
"typescript": "~5.8.3",
96+
"typescript-eslint": "^8.35.1",
97+
"vite": "^7.0.4"
98+
}
99+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env node
2+
3+
import fs from 'fs';
4+
import path from 'path';
5+
import { fileURLToPath } from 'url';
6+
7+
const __filename = fileURLToPath(import.meta.url);
8+
const __dirname = path.dirname(__filename);
9+
10+
const indexDtsPath = path.join(__dirname, '../dist/types/index.d.ts');
11+
12+
if (fs.existsSync(indexDtsPath)) {
13+
let content = fs.readFileSync(indexDtsPath, 'utf8');
14+
15+
// Remove CSS import from TypeScript declarations
16+
content = content.replace(/^import\s+["']\.\/index\.css["'];?\s*\n/m, '');
17+
18+
fs.writeFileSync(indexDtsPath, content);
19+
console.log('✅ Cleaned up TypeScript declarations');
20+
} else {
21+
console.log('⚠️ index.d.ts not found');
22+
}

packages/react-components/src/components/ui/input.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function Input({ className, type, ...props }: React.ComponentProps<"input">) {
88
type={type}
99
data-slot="input"
1010
className={cn(
11-
"h-[36px] file:text-foreground placeholder:text-(--color-elements-disabled) selection:bg-primary selection:text-primary-foreground border-input flex w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-(--color-elements-assistive) md:text-sm",
11+
"h-9 file:text-foreground placeholder:text-(--color-elements-disabled) selection:bg-primary selection:text-primary-foreground border-border-primary flex w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-(--color-elements-assistive) md:text-sm",
1212
"focus-visible:border-(--color-border-XS-regular-hover)",
1313
"disabled:bg-(--color-surface-1)",
1414
"aria-invalid:ring-destructive aria-invalid:text-(--color-critical-default) aria-invalid:border-destructive",
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import {
2+
Button,
3+
DropdownMenu,
4+
DropdownMenuCheckboxItem,
5+
DropdownMenuContent,
6+
DropdownMenuLabel,
7+
DropdownMenuSeparator,
8+
DropdownMenuTrigger,
9+
Input,
10+
11+
} from "../../index";
12+
13+
import {
14+
Check,
15+
ChevronDown,
16+
Copy,
17+
} from "lucide-react";
18+
import { useState } from "react";
19+
20+
const requestMethods = ["GET", "POST", "PUT", "PATCH", "DELETE"];
21+
22+
23+
// Move to copy-button.tsx
24+
function CopyButton() {
25+
const [isActive, setIsActive] = useState(false);
26+
function handleClick() {
27+
setIsActive(true);
28+
setTimeout(() => {
29+
setIsActive(false);
30+
}, 1000);
31+
}
32+
return (
33+
<Button
34+
variant="ghost"
35+
className="p-1 absolute right-2 top-1.5 text-text-secondary"
36+
onClick={handleClick}
37+
>
38+
{isActive ? <Check /> : <Copy />}
39+
</Button>
40+
);
41+
}
42+
43+
function RequestMethodSelector() {
44+
const [selectedMethod, setMethod] = useState("GET");
45+
return (
46+
<DropdownMenu>
47+
<DropdownMenuTrigger asChild>
48+
<Button
49+
variant="outline"
50+
className="rounded-r-none! border-r-0! pr-3! w-26 h-9 bg-bg-secondary"
51+
>
52+
{selectedMethod}
53+
<ChevronDown />
54+
</Button>
55+
</DropdownMenuTrigger>
56+
<DropdownMenuContent>
57+
<DropdownMenuLabel>Request method</DropdownMenuLabel>
58+
<DropdownMenuSeparator></DropdownMenuSeparator>
59+
{requestMethods.map((requestMethod) => (
60+
<DropdownMenuCheckboxItem
61+
key={requestMethod}
62+
checked={selectedMethod === requestMethod}
63+
onCheckedChange={() => setMethod(requestMethod)}
64+
>
65+
{requestMethod}
66+
</DropdownMenuCheckboxItem>
67+
))}
68+
</DropdownMenuContent>
69+
</DropdownMenu>
70+
);
71+
}
72+
73+
function ReuqestLineEditor() {
74+
return (
75+
<div className="flex relative w-full">
76+
<RequestMethodSelector />
77+
<Input className="rounded-l-none!" defaultValue="/fhir/Patient" />
78+
<CopyButton />
79+
</div>
80+
);
81+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// CSS module declaration
2+
declare const styles: void;
3+
export default styles;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// CSS entry point for the library
2+
import "./index.css";

packages/react-components/tsconfig.build.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"declaration": true,
66
"declarationMap": true,
77
"outDir": "./dist/types",
8-
"emitDeclarationOnly": true
8+
"emitDeclarationOnly": true,
9+
"skipLibCheck": true
910
},
1011
"include": ["src"],
1112
"exclude": ["src/**/*.stories.ts", "src/**/*.stories.tsx", "src/**/*.test.ts", "src/**/*.test.tsx"]

packages/react-components/vite.config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export default defineConfig({
1212
},
1313
},
1414
build: {
15+
emptyOutDir: false,
1516
lib: {
1617
name: "@panthevm_original/react-components",
1718
entry: path.resolve(__dirname, "./src/index.tsx"),
@@ -23,7 +24,8 @@ export default defineConfig({
2324
globals: {
2425
react: 'React',
2526
'react-dom': 'ReactDOM'
26-
}
27+
},
28+
assetFileNames: 'react-components.[ext]'
2729
}
2830
}
2931
}

0 commit comments

Comments
 (0)