soongle-ui 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +12 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.js +92 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +92 -5
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +198 -0
- package/package.json +58 -51
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
|
-
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
-
children
|
|
3
|
+
interface ButtonProps$1 extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
variant?: "default" | "primary" | "secondary" | "danger" | "ghost";
|
|
6
|
+
size?: "sm" | "md" | "lg";
|
|
7
|
+
className?: string;
|
|
5
8
|
}
|
|
9
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps$1 & React.RefAttributes<HTMLButtonElement>>;
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
variant?: "default" | "primary" | "secondary" | "danger" | "ghost";
|
|
14
|
+
size?: "sm" | "md" | "lg";
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
8
17
|
|
|
9
18
|
export { Button, type ButtonProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
|
-
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
-
children
|
|
3
|
+
interface ButtonProps$1 extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
variant?: "default" | "primary" | "secondary" | "danger" | "ghost";
|
|
6
|
+
size?: "sm" | "md" | "lg";
|
|
7
|
+
className?: string;
|
|
5
8
|
}
|
|
9
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps$1 & React.RefAttributes<HTMLButtonElement>>;
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
variant?: "default" | "primary" | "secondary" | "danger" | "ghost";
|
|
14
|
+
size?: "sm" | "md" | "lg";
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
8
17
|
|
|
9
18
|
export { Button, type ButtonProps };
|
package/dist/index.js
CHANGED
|
@@ -36,17 +36,104 @@ __export(index_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(index_exports);
|
|
37
37
|
|
|
38
38
|
// src/components/Button/Button.tsx
|
|
39
|
+
var React2 = __toESM(require("react"));
|
|
40
|
+
|
|
41
|
+
// src/components/Text/Text.tsx
|
|
39
42
|
var React = __toESM(require("react"));
|
|
40
43
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
var sizeClasses = {
|
|
45
|
+
xs: "text-xs",
|
|
46
|
+
sm: "text-sm",
|
|
47
|
+
base: "text-base",
|
|
48
|
+
lg: "text-lg",
|
|
49
|
+
xl: "text-xl",
|
|
50
|
+
"2xl": "text-2xl",
|
|
51
|
+
"3xl": "text-3xl",
|
|
52
|
+
"4xl": "text-4xl"
|
|
53
|
+
};
|
|
54
|
+
var weightClasses = {
|
|
55
|
+
light: "font-light",
|
|
56
|
+
normal: "font-normal",
|
|
57
|
+
medium: "font-medium",
|
|
58
|
+
semibold: "font-semibold",
|
|
59
|
+
bold: "font-bold"
|
|
60
|
+
};
|
|
61
|
+
var colorClasses = {
|
|
62
|
+
default: "text-gray-900",
|
|
63
|
+
muted: "text-gray-500",
|
|
64
|
+
primary: "text-blue-600",
|
|
65
|
+
secondary: "text-green-600",
|
|
66
|
+
danger: "text-red-600",
|
|
67
|
+
success: "text-emerald-600"
|
|
68
|
+
};
|
|
69
|
+
var alignClasses = {
|
|
70
|
+
left: "text-left",
|
|
71
|
+
center: "text-center",
|
|
72
|
+
right: "text-right"
|
|
73
|
+
};
|
|
74
|
+
var Text = React.forwardRef(
|
|
75
|
+
({
|
|
76
|
+
children,
|
|
77
|
+
as: Component = "p",
|
|
78
|
+
size = "base",
|
|
79
|
+
weight = "normal",
|
|
80
|
+
color = "default",
|
|
81
|
+
align = "left",
|
|
82
|
+
className = "",
|
|
83
|
+
...props
|
|
84
|
+
}, ref) => {
|
|
85
|
+
const classes = [
|
|
86
|
+
sizeClasses[size],
|
|
87
|
+
weightClasses[weight],
|
|
88
|
+
colorClasses[color],
|
|
89
|
+
alignClasses[align],
|
|
90
|
+
className
|
|
91
|
+
].filter(Boolean).join(" ");
|
|
92
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ref, className: classes, ...props, children });
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
Text.displayName = "Text";
|
|
96
|
+
|
|
97
|
+
// src/components/Button/Button.tsx
|
|
98
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
99
|
+
var variantClasses = {
|
|
100
|
+
default: "bg-gray-200 text-gray-900 hover:bg-gray-300",
|
|
101
|
+
primary: "bg-blue-600 text-white hover:bg-blue-700",
|
|
102
|
+
secondary: "bg-green-600 text-white hover:bg-green-700",
|
|
103
|
+
danger: "bg-red-600 text-white hover:bg-red-700",
|
|
104
|
+
ghost: "bg-transparent text-gray-700 hover:bg-gray-100"
|
|
105
|
+
};
|
|
106
|
+
var sizeClasses2 = {
|
|
107
|
+
sm: "px-3 py-1.5",
|
|
108
|
+
md: "px-4 py-2",
|
|
109
|
+
lg: "px-6 py-3"
|
|
110
|
+
};
|
|
111
|
+
var textSizeMap = {
|
|
112
|
+
sm: "sm",
|
|
113
|
+
md: "base",
|
|
114
|
+
lg: "lg"
|
|
115
|
+
};
|
|
116
|
+
var Button = React2.forwardRef(
|
|
117
|
+
({ className = "", children, variant = "default", size = "md", ...props }, ref) => {
|
|
118
|
+
const variantClass = variantClasses[variant];
|
|
119
|
+
const sizeClass = sizeClasses2[size];
|
|
120
|
+
const textSize = textSizeMap[size];
|
|
121
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
44
122
|
"button",
|
|
45
123
|
{
|
|
46
124
|
ref,
|
|
47
|
-
className: `cursor-pointer inline-flex items-center justify-center rounded-md
|
|
125
|
+
className: `cursor-pointer inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 ${variantClass} ${sizeClass} ${className}`,
|
|
48
126
|
...props,
|
|
49
|
-
children
|
|
127
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
128
|
+
Text,
|
|
129
|
+
{
|
|
130
|
+
as: "span",
|
|
131
|
+
size: textSize,
|
|
132
|
+
weight: "medium",
|
|
133
|
+
className: "leading-none",
|
|
134
|
+
children
|
|
135
|
+
}
|
|
136
|
+
)
|
|
50
137
|
}
|
|
51
138
|
);
|
|
52
139
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/Button/Button.tsx"],"sourcesContent":["// Export components\r\nexport * from './components';\r\n","import * as React from
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/Button/Button.tsx","../src/components/Text/Text.tsx"],"sourcesContent":["// Export components\r\nexport * from './components';\r\n","import * as React from \"react\";\r\nimport { Text } from \"../Text/Text\";\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children?: React.ReactNode;\r\n variant?: \"default\" | \"primary\" | \"secondary\" | \"danger\" | \"ghost\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variantClasses = {\r\n default: \"bg-gray-200 text-gray-900 hover:bg-gray-300\",\r\n primary: \"bg-blue-600 text-white hover:bg-blue-700\",\r\n secondary: \"bg-green-600 text-white hover:bg-green-700\",\r\n danger: \"bg-red-600 text-white hover:bg-red-700\",\r\n ghost: \"bg-transparent text-gray-700 hover:bg-gray-100\",\r\n};\r\n\r\nconst sizeClasses = {\r\n sm: \"px-3 py-1.5\",\r\n md: \"px-4 py-2\",\r\n lg: \"px-6 py-3\",\r\n};\r\n\r\nconst textSizeMap = {\r\n sm: \"sm\" as const,\r\n md: \"base\" as const,\r\n lg: \"lg\" as const,\r\n};\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n { className = \"\", children, variant = \"default\", size = \"md\", ...props },\r\n ref\r\n ) => {\r\n const variantClass = variantClasses[variant];\r\n const sizeClass = sizeClasses[size];\r\n const textSize = textSizeMap[size];\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={`cursor-pointer inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 ${variantClass} ${sizeClass} ${className}`}\r\n {...props}\r\n >\r\n <Text\r\n as=\"span\"\r\n size={textSize}\r\n weight=\"medium\"\r\n className=\"leading-none\"\r\n >\r\n {children}\r\n </Text>\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n","import * as React from \"react\";\r\n\r\nexport interface TextProps {\r\n children?: React.ReactNode;\r\n as?: \"p\" | \"span\" | \"div\" | \"label\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\r\n size?: \"xs\" | \"sm\" | \"base\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\";\r\n weight?: \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\";\r\n color?: \"default\" | \"muted\" | \"primary\" | \"secondary\" | \"danger\" | \"success\";\r\n align?: \"left\" | \"center\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nconst sizeClasses = {\r\n xs: \"text-xs\",\r\n sm: \"text-sm\",\r\n base: \"text-base\",\r\n lg: \"text-lg\",\r\n xl: \"text-xl\",\r\n \"2xl\": \"text-2xl\",\r\n \"3xl\": \"text-3xl\",\r\n \"4xl\": \"text-4xl\",\r\n};\r\n\r\nconst weightClasses = {\r\n light: \"font-light\",\r\n normal: \"font-normal\",\r\n medium: \"font-medium\",\r\n semibold: \"font-semibold\",\r\n bold: \"font-bold\",\r\n};\r\n\r\nconst colorClasses = {\r\n default: \"text-gray-900\",\r\n muted: \"text-gray-500\",\r\n primary: \"text-blue-600\",\r\n secondary: \"text-green-600\",\r\n danger: \"text-red-600\",\r\n success: \"text-emerald-600\",\r\n};\r\n\r\nconst alignClasses = {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n};\r\n\r\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\r\n (\r\n {\r\n children,\r\n as: Component = \"p\",\r\n size = \"base\",\r\n weight = \"normal\",\r\n color = \"default\",\r\n align = \"left\",\r\n className = \"\",\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const classes = [\r\n sizeClasses[size],\r\n weightClasses[weight],\r\n colorClasses[color],\r\n alignClasses[align],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <Component ref={ref as any} className={classes} {...props}>\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nText.displayName = \"Text\";\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,SAAuB;;;ACAvB,YAAuB;AAuEjB;AA3DN,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAEA,IAAM,gBAAgB;AAAA,EACpB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AACR;AAEA,IAAM,eAAe;AAAA,EACnB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AAEO,IAAM,OAAa;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA,IAAI,YAAY;AAAA,IAChB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,UAAU;AAAA,MACd,YAAY,IAAI;AAAA,MAChB,cAAc,MAAM;AAAA,MACpB,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB;AAAA,IACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,4CAAC,aAAU,KAAiB,WAAW,SAAU,GAAG,OACjD,UACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ADhCX,IAAAC,sBAAA;AAnCR,IAAM,iBAAiB;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAMC,eAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,SAAe;AAAA,EAC1B,CACE,EAAE,YAAY,IAAI,UAAU,UAAU,WAAW,OAAO,MAAM,GAAG,MAAM,GACvE,QACG;AACH,UAAM,eAAe,eAAe,OAAO;AAC3C,UAAM,YAAYA,aAAY,IAAI;AAClC,UAAM,WAAW,YAAY,IAAI;AAEjC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,gOAAgO,YAAY,IAAI,SAAS,IAAI,SAAS;AAAA,QAChR,GAAG;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,MAAM;AAAA,YACN,QAAO;AAAA,YACP,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;","names":["React","import_jsx_runtime","sizeClasses"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,17 +1,104 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
// src/components/Button/Button.tsx
|
|
4
|
+
import * as React2 from "react";
|
|
5
|
+
|
|
6
|
+
// src/components/Text/Text.tsx
|
|
4
7
|
import * as React from "react";
|
|
5
8
|
import { jsx } from "react/jsx-runtime";
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
var sizeClasses = {
|
|
10
|
+
xs: "text-xs",
|
|
11
|
+
sm: "text-sm",
|
|
12
|
+
base: "text-base",
|
|
13
|
+
lg: "text-lg",
|
|
14
|
+
xl: "text-xl",
|
|
15
|
+
"2xl": "text-2xl",
|
|
16
|
+
"3xl": "text-3xl",
|
|
17
|
+
"4xl": "text-4xl"
|
|
18
|
+
};
|
|
19
|
+
var weightClasses = {
|
|
20
|
+
light: "font-light",
|
|
21
|
+
normal: "font-normal",
|
|
22
|
+
medium: "font-medium",
|
|
23
|
+
semibold: "font-semibold",
|
|
24
|
+
bold: "font-bold"
|
|
25
|
+
};
|
|
26
|
+
var colorClasses = {
|
|
27
|
+
default: "text-gray-900",
|
|
28
|
+
muted: "text-gray-500",
|
|
29
|
+
primary: "text-blue-600",
|
|
30
|
+
secondary: "text-green-600",
|
|
31
|
+
danger: "text-red-600",
|
|
32
|
+
success: "text-emerald-600"
|
|
33
|
+
};
|
|
34
|
+
var alignClasses = {
|
|
35
|
+
left: "text-left",
|
|
36
|
+
center: "text-center",
|
|
37
|
+
right: "text-right"
|
|
38
|
+
};
|
|
39
|
+
var Text = React.forwardRef(
|
|
40
|
+
({
|
|
41
|
+
children,
|
|
42
|
+
as: Component = "p",
|
|
43
|
+
size = "base",
|
|
44
|
+
weight = "normal",
|
|
45
|
+
color = "default",
|
|
46
|
+
align = "left",
|
|
47
|
+
className = "",
|
|
48
|
+
...props
|
|
49
|
+
}, ref) => {
|
|
50
|
+
const classes = [
|
|
51
|
+
sizeClasses[size],
|
|
52
|
+
weightClasses[weight],
|
|
53
|
+
colorClasses[color],
|
|
54
|
+
alignClasses[align],
|
|
55
|
+
className
|
|
56
|
+
].filter(Boolean).join(" ");
|
|
57
|
+
return /* @__PURE__ */ jsx(Component, { ref, className: classes, ...props, children });
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
Text.displayName = "Text";
|
|
61
|
+
|
|
62
|
+
// src/components/Button/Button.tsx
|
|
63
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
64
|
+
var variantClasses = {
|
|
65
|
+
default: "bg-gray-200 text-gray-900 hover:bg-gray-300",
|
|
66
|
+
primary: "bg-blue-600 text-white hover:bg-blue-700",
|
|
67
|
+
secondary: "bg-green-600 text-white hover:bg-green-700",
|
|
68
|
+
danger: "bg-red-600 text-white hover:bg-red-700",
|
|
69
|
+
ghost: "bg-transparent text-gray-700 hover:bg-gray-100"
|
|
70
|
+
};
|
|
71
|
+
var sizeClasses2 = {
|
|
72
|
+
sm: "px-3 py-1.5",
|
|
73
|
+
md: "px-4 py-2",
|
|
74
|
+
lg: "px-6 py-3"
|
|
75
|
+
};
|
|
76
|
+
var textSizeMap = {
|
|
77
|
+
sm: "sm",
|
|
78
|
+
md: "base",
|
|
79
|
+
lg: "lg"
|
|
80
|
+
};
|
|
81
|
+
var Button = React2.forwardRef(
|
|
82
|
+
({ className = "", children, variant = "default", size = "md", ...props }, ref) => {
|
|
83
|
+
const variantClass = variantClasses[variant];
|
|
84
|
+
const sizeClass = sizeClasses2[size];
|
|
85
|
+
const textSize = textSizeMap[size];
|
|
86
|
+
return /* @__PURE__ */ jsx2(
|
|
9
87
|
"button",
|
|
10
88
|
{
|
|
11
89
|
ref,
|
|
12
|
-
className: `cursor-pointer inline-flex items-center justify-center rounded-md
|
|
90
|
+
className: `cursor-pointer inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 ${variantClass} ${sizeClass} ${className}`,
|
|
13
91
|
...props,
|
|
14
|
-
children
|
|
92
|
+
children: /* @__PURE__ */ jsx2(
|
|
93
|
+
Text,
|
|
94
|
+
{
|
|
95
|
+
as: "span",
|
|
96
|
+
size: textSize,
|
|
97
|
+
weight: "medium",
|
|
98
|
+
className: "leading-none",
|
|
99
|
+
children
|
|
100
|
+
}
|
|
101
|
+
)
|
|
15
102
|
}
|
|
16
103
|
);
|
|
17
104
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import * as React from
|
|
1
|
+
{"version":3,"sources":["../src/components/Button/Button.tsx","../src/components/Text/Text.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Text } from \"../Text/Text\";\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children?: React.ReactNode;\r\n variant?: \"default\" | \"primary\" | \"secondary\" | \"danger\" | \"ghost\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variantClasses = {\r\n default: \"bg-gray-200 text-gray-900 hover:bg-gray-300\",\r\n primary: \"bg-blue-600 text-white hover:bg-blue-700\",\r\n secondary: \"bg-green-600 text-white hover:bg-green-700\",\r\n danger: \"bg-red-600 text-white hover:bg-red-700\",\r\n ghost: \"bg-transparent text-gray-700 hover:bg-gray-100\",\r\n};\r\n\r\nconst sizeClasses = {\r\n sm: \"px-3 py-1.5\",\r\n md: \"px-4 py-2\",\r\n lg: \"px-6 py-3\",\r\n};\r\n\r\nconst textSizeMap = {\r\n sm: \"sm\" as const,\r\n md: \"base\" as const,\r\n lg: \"lg\" as const,\r\n};\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n { className = \"\", children, variant = \"default\", size = \"md\", ...props },\r\n ref\r\n ) => {\r\n const variantClass = variantClasses[variant];\r\n const sizeClass = sizeClasses[size];\r\n const textSize = textSizeMap[size];\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={`cursor-pointer inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 ${variantClass} ${sizeClass} ${className}`}\r\n {...props}\r\n >\r\n <Text\r\n as=\"span\"\r\n size={textSize}\r\n weight=\"medium\"\r\n className=\"leading-none\"\r\n >\r\n {children}\r\n </Text>\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n","import * as React from \"react\";\r\n\r\nexport interface TextProps {\r\n children?: React.ReactNode;\r\n as?: \"p\" | \"span\" | \"div\" | \"label\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\r\n size?: \"xs\" | \"sm\" | \"base\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\";\r\n weight?: \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\";\r\n color?: \"default\" | \"muted\" | \"primary\" | \"secondary\" | \"danger\" | \"success\";\r\n align?: \"left\" | \"center\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nconst sizeClasses = {\r\n xs: \"text-xs\",\r\n sm: \"text-sm\",\r\n base: \"text-base\",\r\n lg: \"text-lg\",\r\n xl: \"text-xl\",\r\n \"2xl\": \"text-2xl\",\r\n \"3xl\": \"text-3xl\",\r\n \"4xl\": \"text-4xl\",\r\n};\r\n\r\nconst weightClasses = {\r\n light: \"font-light\",\r\n normal: \"font-normal\",\r\n medium: \"font-medium\",\r\n semibold: \"font-semibold\",\r\n bold: \"font-bold\",\r\n};\r\n\r\nconst colorClasses = {\r\n default: \"text-gray-900\",\r\n muted: \"text-gray-500\",\r\n primary: \"text-blue-600\",\r\n secondary: \"text-green-600\",\r\n danger: \"text-red-600\",\r\n success: \"text-emerald-600\",\r\n};\r\n\r\nconst alignClasses = {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n};\r\n\r\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\r\n (\r\n {\r\n children,\r\n as: Component = \"p\",\r\n size = \"base\",\r\n weight = \"normal\",\r\n color = \"default\",\r\n align = \"left\",\r\n className = \"\",\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const classes = [\r\n sizeClasses[size],\r\n weightClasses[weight],\r\n colorClasses[color],\r\n alignClasses[align],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <Component ref={ref as any} className={classes} {...props}>\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nText.displayName = \"Text\";\r\n"],"mappings":";;;AAAA,YAAYA,YAAW;;;ACAvB,YAAY,WAAW;AAuEjB;AA3DN,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAEA,IAAM,gBAAgB;AAAA,EACpB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AACR;AAEA,IAAM,eAAe;AAAA,EACnB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AAEO,IAAM,OAAa;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA,IAAI,YAAY;AAAA,IAChB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,UAAU;AAAA,MACd,YAAY,IAAI;AAAA,MAChB,cAAc,MAAM;AAAA,MACpB,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB;AAAA,IACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,oBAAC,aAAU,KAAiB,WAAW,SAAU,GAAG,OACjD,UACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ADhCX,gBAAAC,YAAA;AAnCR,IAAM,iBAAiB;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAMC,eAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,SAAe;AAAA,EAC1B,CACE,EAAE,YAAY,IAAI,UAAU,UAAU,WAAW,OAAO,MAAM,GAAG,MAAM,GACvE,QACG;AACH,UAAM,eAAe,eAAe,OAAO;AAC3C,UAAM,YAAYA,aAAY,IAAI;AAClC,UAAM,WAAW,YAAY,IAAI;AAEjC,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,gOAAgO,YAAY,IAAI,SAAS,IAAI,SAAS;AAAA,QAChR,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,MAAM;AAAA,YACN,QAAO;AAAA,YACP,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;","names":["React","jsx","sizeClasses"]}
|
package/dist/styles.css
CHANGED
|
@@ -7,8 +7,42 @@
|
|
|
7
7
|
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
8
8
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
|
9
9
|
"Courier New", monospace;
|
|
10
|
+
--color-red-600: oklch(57.7% 0.245 27.325);
|
|
11
|
+
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
12
|
+
--color-green-600: oklch(62.7% 0.194 149.214);
|
|
13
|
+
--color-green-700: oklch(52.7% 0.154 150.069);
|
|
14
|
+
--color-emerald-600: oklch(59.6% 0.145 163.225);
|
|
15
|
+
--color-blue-600: oklch(54.6% 0.245 262.881);
|
|
16
|
+
--color-blue-700: oklch(48.8% 0.243 264.376);
|
|
17
|
+
--color-gray-100: oklch(96.7% 0.003 264.542);
|
|
18
|
+
--color-gray-200: oklch(92.8% 0.006 264.531);
|
|
19
|
+
--color-gray-300: oklch(87.2% 0.01 258.338);
|
|
20
|
+
--color-gray-500: oklch(55.1% 0.027 264.364);
|
|
21
|
+
--color-gray-700: oklch(37.3% 0.034 259.733);
|
|
22
|
+
--color-gray-900: oklch(21% 0.034 264.665);
|
|
23
|
+
--color-white: #fff;
|
|
10
24
|
--spacing: 0.25rem;
|
|
25
|
+
--text-xs: 0.75rem;
|
|
26
|
+
--text-xs--line-height: calc(1 / 0.75);
|
|
27
|
+
--text-sm: 0.875rem;
|
|
28
|
+
--text-sm--line-height: calc(1.25 / 0.875);
|
|
29
|
+
--text-base: 1rem;
|
|
30
|
+
--text-base--line-height: calc(1.5 / 1);
|
|
31
|
+
--text-lg: 1.125rem;
|
|
32
|
+
--text-lg--line-height: calc(1.75 / 1.125);
|
|
33
|
+
--text-xl: 1.25rem;
|
|
34
|
+
--text-xl--line-height: calc(1.75 / 1.25);
|
|
35
|
+
--text-2xl: 1.5rem;
|
|
36
|
+
--text-2xl--line-height: calc(2 / 1.5);
|
|
37
|
+
--text-3xl: 1.875rem;
|
|
38
|
+
--text-3xl--line-height: calc(2.25 / 1.875);
|
|
39
|
+
--text-4xl: 2.25rem;
|
|
40
|
+
--text-4xl--line-height: calc(2.5 / 2.25);
|
|
41
|
+
--font-weight-light: 300;
|
|
42
|
+
--font-weight-normal: 400;
|
|
11
43
|
--font-weight-medium: 500;
|
|
44
|
+
--font-weight-semibold: 600;
|
|
45
|
+
--font-weight-bold: 700;
|
|
12
46
|
--radius-md: 0.375rem;
|
|
13
47
|
--default-transition-duration: 150ms;
|
|
14
48
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -165,36 +199,195 @@
|
|
|
165
199
|
}
|
|
166
200
|
}
|
|
167
201
|
@layer utilities {
|
|
202
|
+
.flex {
|
|
203
|
+
display: flex;
|
|
204
|
+
}
|
|
168
205
|
.inline-flex {
|
|
169
206
|
display: inline-flex;
|
|
170
207
|
}
|
|
171
208
|
.cursor-pointer {
|
|
172
209
|
cursor: pointer;
|
|
173
210
|
}
|
|
211
|
+
.flex-col {
|
|
212
|
+
flex-direction: column;
|
|
213
|
+
}
|
|
174
214
|
.items-center {
|
|
175
215
|
align-items: center;
|
|
176
216
|
}
|
|
177
217
|
.justify-center {
|
|
178
218
|
justify-content: center;
|
|
179
219
|
}
|
|
220
|
+
.gap-2 {
|
|
221
|
+
gap: calc(var(--spacing) * 2);
|
|
222
|
+
}
|
|
223
|
+
.gap-4 {
|
|
224
|
+
gap: calc(var(--spacing) * 4);
|
|
225
|
+
}
|
|
180
226
|
.rounded-md {
|
|
181
227
|
border-radius: var(--radius-md);
|
|
182
228
|
}
|
|
229
|
+
.bg-blue-600 {
|
|
230
|
+
background-color: var(--color-blue-600);
|
|
231
|
+
}
|
|
232
|
+
.bg-gray-200 {
|
|
233
|
+
background-color: var(--color-gray-200);
|
|
234
|
+
}
|
|
235
|
+
.bg-green-600 {
|
|
236
|
+
background-color: var(--color-green-600);
|
|
237
|
+
}
|
|
238
|
+
.bg-red-600 {
|
|
239
|
+
background-color: var(--color-red-600);
|
|
240
|
+
}
|
|
241
|
+
.bg-transparent {
|
|
242
|
+
background-color: transparent;
|
|
243
|
+
}
|
|
244
|
+
.px-3 {
|
|
245
|
+
padding-inline: calc(var(--spacing) * 3);
|
|
246
|
+
}
|
|
183
247
|
.px-4 {
|
|
184
248
|
padding-inline: calc(var(--spacing) * 4);
|
|
185
249
|
}
|
|
250
|
+
.px-6 {
|
|
251
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
252
|
+
}
|
|
253
|
+
.py-1\.5 {
|
|
254
|
+
padding-block: calc(var(--spacing) * 1.5);
|
|
255
|
+
}
|
|
186
256
|
.py-2 {
|
|
187
257
|
padding-block: calc(var(--spacing) * 2);
|
|
188
258
|
}
|
|
259
|
+
.py-3 {
|
|
260
|
+
padding-block: calc(var(--spacing) * 3);
|
|
261
|
+
}
|
|
262
|
+
.text-center {
|
|
263
|
+
text-align: center;
|
|
264
|
+
}
|
|
265
|
+
.text-left {
|
|
266
|
+
text-align: left;
|
|
267
|
+
}
|
|
268
|
+
.text-right {
|
|
269
|
+
text-align: right;
|
|
270
|
+
}
|
|
271
|
+
.text-2xl {
|
|
272
|
+
font-size: var(--text-2xl);
|
|
273
|
+
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
274
|
+
}
|
|
275
|
+
.text-3xl {
|
|
276
|
+
font-size: var(--text-3xl);
|
|
277
|
+
line-height: var(--tw-leading, var(--text-3xl--line-height));
|
|
278
|
+
}
|
|
279
|
+
.text-4xl {
|
|
280
|
+
font-size: var(--text-4xl);
|
|
281
|
+
line-height: var(--tw-leading, var(--text-4xl--line-height));
|
|
282
|
+
}
|
|
283
|
+
.text-base {
|
|
284
|
+
font-size: var(--text-base);
|
|
285
|
+
line-height: var(--tw-leading, var(--text-base--line-height));
|
|
286
|
+
}
|
|
287
|
+
.text-lg {
|
|
288
|
+
font-size: var(--text-lg);
|
|
289
|
+
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
290
|
+
}
|
|
291
|
+
.text-sm {
|
|
292
|
+
font-size: var(--text-sm);
|
|
293
|
+
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
294
|
+
}
|
|
295
|
+
.text-xl {
|
|
296
|
+
font-size: var(--text-xl);
|
|
297
|
+
line-height: var(--tw-leading, var(--text-xl--line-height));
|
|
298
|
+
}
|
|
299
|
+
.text-xs {
|
|
300
|
+
font-size: var(--text-xs);
|
|
301
|
+
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
302
|
+
}
|
|
303
|
+
.leading-none {
|
|
304
|
+
--tw-leading: 1;
|
|
305
|
+
line-height: 1;
|
|
306
|
+
}
|
|
307
|
+
.font-bold {
|
|
308
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
309
|
+
font-weight: var(--font-weight-bold);
|
|
310
|
+
}
|
|
311
|
+
.font-light {
|
|
312
|
+
--tw-font-weight: var(--font-weight-light);
|
|
313
|
+
font-weight: var(--font-weight-light);
|
|
314
|
+
}
|
|
189
315
|
.font-medium {
|
|
190
316
|
--tw-font-weight: var(--font-weight-medium);
|
|
191
317
|
font-weight: var(--font-weight-medium);
|
|
192
318
|
}
|
|
319
|
+
.font-normal {
|
|
320
|
+
--tw-font-weight: var(--font-weight-normal);
|
|
321
|
+
font-weight: var(--font-weight-normal);
|
|
322
|
+
}
|
|
323
|
+
.font-semibold {
|
|
324
|
+
--tw-font-weight: var(--font-weight-semibold);
|
|
325
|
+
font-weight: var(--font-weight-semibold);
|
|
326
|
+
}
|
|
327
|
+
.text-blue-600 {
|
|
328
|
+
color: var(--color-blue-600);
|
|
329
|
+
}
|
|
330
|
+
.text-emerald-600 {
|
|
331
|
+
color: var(--color-emerald-600);
|
|
332
|
+
}
|
|
333
|
+
.text-gray-500 {
|
|
334
|
+
color: var(--color-gray-500);
|
|
335
|
+
}
|
|
336
|
+
.text-gray-700 {
|
|
337
|
+
color: var(--color-gray-700);
|
|
338
|
+
}
|
|
339
|
+
.text-gray-900 {
|
|
340
|
+
color: var(--color-gray-900);
|
|
341
|
+
}
|
|
342
|
+
.text-green-600 {
|
|
343
|
+
color: var(--color-green-600);
|
|
344
|
+
}
|
|
345
|
+
.text-red-600 {
|
|
346
|
+
color: var(--color-red-600);
|
|
347
|
+
}
|
|
348
|
+
.text-white {
|
|
349
|
+
color: var(--color-white);
|
|
350
|
+
}
|
|
193
351
|
.transition-colors {
|
|
194
352
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
|
|
195
353
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
196
354
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
197
355
|
}
|
|
356
|
+
.hover\:bg-blue-700 {
|
|
357
|
+
&:hover {
|
|
358
|
+
@media (hover: hover) {
|
|
359
|
+
background-color: var(--color-blue-700);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
.hover\:bg-gray-100 {
|
|
364
|
+
&:hover {
|
|
365
|
+
@media (hover: hover) {
|
|
366
|
+
background-color: var(--color-gray-100);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
.hover\:bg-gray-300 {
|
|
371
|
+
&:hover {
|
|
372
|
+
@media (hover: hover) {
|
|
373
|
+
background-color: var(--color-gray-300);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
.hover\:bg-green-700 {
|
|
378
|
+
&:hover {
|
|
379
|
+
@media (hover: hover) {
|
|
380
|
+
background-color: var(--color-green-700);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
.hover\:bg-red-700 {
|
|
385
|
+
&:hover {
|
|
386
|
+
@media (hover: hover) {
|
|
387
|
+
background-color: var(--color-red-700);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
198
391
|
.focus-visible\:ring-2 {
|
|
199
392
|
&:focus-visible {
|
|
200
393
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
@@ -224,6 +417,10 @@
|
|
|
224
417
|
}
|
|
225
418
|
}
|
|
226
419
|
}
|
|
420
|
+
@property --tw-leading {
|
|
421
|
+
syntax: "*";
|
|
422
|
+
inherits: false;
|
|
423
|
+
}
|
|
227
424
|
@property --tw-font-weight {
|
|
228
425
|
syntax: "*";
|
|
229
426
|
inherits: false;
|
|
@@ -296,6 +493,7 @@
|
|
|
296
493
|
@layer properties {
|
|
297
494
|
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
298
495
|
*, ::before, ::after, ::backdrop {
|
|
496
|
+
--tw-leading: initial;
|
|
299
497
|
--tw-font-weight: initial;
|
|
300
498
|
--tw-shadow: 0 0 #0000;
|
|
301
499
|
--tw-shadow-color: initial;
|
package/package.json
CHANGED
|
@@ -1,51 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "soongle-ui",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A design system library for React.js and Next.js with TailwindCSS v4 by Soongle",
|
|
5
|
-
"publishConfig": {
|
|
6
|
-
"access": "public"
|
|
7
|
-
},
|
|
8
|
-
"main": "./dist/index.js",
|
|
9
|
-
"module": "./dist/index.mjs",
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"exports": {
|
|
12
|
-
".": {
|
|
13
|
-
"types": "./dist/index.d.ts",
|
|
14
|
-
"import": "./dist/index.mjs",
|
|
15
|
-
"require": "./dist/index.js"
|
|
16
|
-
},
|
|
17
|
-
"./styles.css": "./dist/styles.css"
|
|
18
|
-
},
|
|
19
|
-
"files": [
|
|
20
|
-
"dist"
|
|
21
|
-
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"build": "tsup && npm run build:css",
|
|
24
|
-
"build:css": "npx @tailwindcss/cli -i ./src/styles.css -o ./dist/styles.css",
|
|
25
|
-
"dev": "tsup --watch",
|
|
26
|
-
"type-check": "tsc --noEmit"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"@
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "soongle-ui",
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "A design system library for React.js and Next.js with TailwindCSS v4 by Soongle",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.mjs",
|
|
15
|
+
"require": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./styles.css": "./dist/styles.css"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsup && npm run build:css",
|
|
24
|
+
"build:css": "npx @tailwindcss/cli -i ./src/styles.css -o ./dist/styles.css",
|
|
25
|
+
"dev": "tsup --watch",
|
|
26
|
+
"type-check": "tsc --noEmit",
|
|
27
|
+
"storybook": "storybook dev -p 6006",
|
|
28
|
+
"build-storybook": "storybook build"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"design-system",
|
|
32
|
+
"react",
|
|
33
|
+
"nextjs",
|
|
34
|
+
"tailwindcss",
|
|
35
|
+
"ui-library"
|
|
36
|
+
],
|
|
37
|
+
"author": "",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
41
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@storybook/react-vite": "^10.1.11",
|
|
45
|
+
"@tailwindcss/cli": "^4.1.18",
|
|
46
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
47
|
+
"@types/react": "^18.2.48",
|
|
48
|
+
"@types/react-dom": "^18.2.18",
|
|
49
|
+
"@vitejs/plugin-react": "^5.1.2",
|
|
50
|
+
"react": "^18.2.0",
|
|
51
|
+
"react-dom": "^18.2.0",
|
|
52
|
+
"storybook": "^10.1.11",
|
|
53
|
+
"tailwindcss": "^4.0.0",
|
|
54
|
+
"tsup": "^8.0.1",
|
|
55
|
+
"typescript": "^5.3.3",
|
|
56
|
+
"vite": "^7.3.0"
|
|
57
|
+
}
|
|
58
|
+
}
|