soongle-ui 0.1.0
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/README.md +41 -0
- package/dist/index.d.mts +133 -0
- package/dist/index.d.ts +133 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +179 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +507 -0
- package/package.json +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# soongle-ui
|
|
2
|
+
|
|
3
|
+
A design system library for React.js and Next.js with TailwindCSS.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install soongle-ui
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### 1. Import Styles
|
|
14
|
+
|
|
15
|
+
Import the CSS file in your root layout or entry file (e.g., `_app.tsx`, `layout.tsx`, or `src/index.tsx`):
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import 'soongle-ui/styles.css';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 2. Use Components
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
import { Button } from 'soongle-ui';
|
|
25
|
+
|
|
26
|
+
function App() {
|
|
27
|
+
return (
|
|
28
|
+
<div>
|
|
29
|
+
<Button variant="primary">Click me</Button>
|
|
30
|
+
<Button variant="outline">Outline</Button>
|
|
31
|
+
</div>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- Built with React and Tailwind CSS
|
|
39
|
+
- Fully typed with TypeScript
|
|
40
|
+
- Supports Light/Dark modes (if applicable)
|
|
41
|
+
- Tree-shakable exports
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'success' | 'warning' | 'error';
|
|
4
|
+
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
5
|
+
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
6
|
+
variant?: ButtonVariant;
|
|
7
|
+
size?: ButtonSize;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
12
|
+
|
|
13
|
+
declare const colors: {
|
|
14
|
+
readonly primary: {
|
|
15
|
+
readonly 50: "#eff6ff";
|
|
16
|
+
readonly 100: "#dbeafe";
|
|
17
|
+
readonly 200: "#bfdbfe";
|
|
18
|
+
readonly 300: "#93c5fd";
|
|
19
|
+
readonly 400: "#60a5fa";
|
|
20
|
+
readonly 500: "#3b82f6";
|
|
21
|
+
readonly 600: "#2563eb";
|
|
22
|
+
readonly 700: "#1d4ed8";
|
|
23
|
+
readonly 800: "#1e40af";
|
|
24
|
+
readonly 900: "#1e3a8a";
|
|
25
|
+
readonly 950: "#172554";
|
|
26
|
+
};
|
|
27
|
+
readonly secondary: {
|
|
28
|
+
readonly 50: "#f8fafc";
|
|
29
|
+
readonly 100: "#f1f5f9";
|
|
30
|
+
readonly 200: "#e2e8f0";
|
|
31
|
+
readonly 300: "#cbd5e1";
|
|
32
|
+
readonly 400: "#94a3b8";
|
|
33
|
+
readonly 500: "#64748b";
|
|
34
|
+
readonly 600: "#475569";
|
|
35
|
+
readonly 700: "#334155";
|
|
36
|
+
readonly 800: "#1e293b";
|
|
37
|
+
readonly 900: "#0f172a";
|
|
38
|
+
readonly 950: "#020617";
|
|
39
|
+
};
|
|
40
|
+
readonly success: {
|
|
41
|
+
readonly 50: "#f0fdf4";
|
|
42
|
+
readonly 100: "#dcfce7";
|
|
43
|
+
readonly 200: "#bbf7d0";
|
|
44
|
+
readonly 300: "#86efac";
|
|
45
|
+
readonly 400: "#4ade80";
|
|
46
|
+
readonly 500: "#22c55e";
|
|
47
|
+
readonly 600: "#16a34a";
|
|
48
|
+
readonly 700: "#15803d";
|
|
49
|
+
readonly 800: "#166534";
|
|
50
|
+
readonly 900: "#14532d";
|
|
51
|
+
readonly 950: "#052e16";
|
|
52
|
+
};
|
|
53
|
+
readonly warning: {
|
|
54
|
+
readonly 50: "#fffbeb";
|
|
55
|
+
readonly 100: "#fef3c7";
|
|
56
|
+
readonly 200: "#fde68a";
|
|
57
|
+
readonly 300: "#fcd34d";
|
|
58
|
+
readonly 400: "#fbbf24";
|
|
59
|
+
readonly 500: "#f59e0b";
|
|
60
|
+
readonly 600: "#d97706";
|
|
61
|
+
readonly 700: "#b45309";
|
|
62
|
+
readonly 800: "#92400e";
|
|
63
|
+
readonly 900: "#78350f";
|
|
64
|
+
readonly 950: "#451a03";
|
|
65
|
+
};
|
|
66
|
+
readonly error: {
|
|
67
|
+
readonly 50: "#fef2f2";
|
|
68
|
+
readonly 100: "#fee2e2";
|
|
69
|
+
readonly 200: "#fecaca";
|
|
70
|
+
readonly 300: "#fca5a5";
|
|
71
|
+
readonly 400: "#f87171";
|
|
72
|
+
readonly 500: "#ef4444";
|
|
73
|
+
readonly 600: "#dc2626";
|
|
74
|
+
readonly 700: "#b91c1c";
|
|
75
|
+
readonly 800: "#991b1b";
|
|
76
|
+
readonly 900: "#7f1d1d";
|
|
77
|
+
readonly 950: "#450a0a";
|
|
78
|
+
};
|
|
79
|
+
readonly neutral: {
|
|
80
|
+
readonly 50: "#fafafa";
|
|
81
|
+
readonly 100: "#f5f5f5";
|
|
82
|
+
readonly 200: "#e5e5e5";
|
|
83
|
+
readonly 300: "#d4d4d4";
|
|
84
|
+
readonly 400: "#a3a3a3";
|
|
85
|
+
readonly 500: "#737373";
|
|
86
|
+
readonly 600: "#525252";
|
|
87
|
+
readonly 700: "#404040";
|
|
88
|
+
readonly 800: "#262626";
|
|
89
|
+
readonly 900: "#171717";
|
|
90
|
+
readonly 950: "#0a0a0a";
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
declare const spacing: {
|
|
95
|
+
readonly xs: "0.5rem";
|
|
96
|
+
readonly sm: "0.75rem";
|
|
97
|
+
readonly md: "1rem";
|
|
98
|
+
readonly lg: "1.5rem";
|
|
99
|
+
readonly xl: "2rem";
|
|
100
|
+
readonly '2xl': "3rem";
|
|
101
|
+
readonly '3xl': "4rem";
|
|
102
|
+
readonly '4xl': "6rem";
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
declare const typography: {
|
|
106
|
+
readonly fontSizes: {
|
|
107
|
+
readonly xs: "0.75rem";
|
|
108
|
+
readonly sm: "0.875rem";
|
|
109
|
+
readonly base: "1rem";
|
|
110
|
+
readonly lg: "1.125rem";
|
|
111
|
+
readonly xl: "1.25rem";
|
|
112
|
+
readonly '2xl': "1.5rem";
|
|
113
|
+
readonly '3xl': "1.875rem";
|
|
114
|
+
readonly '4xl': "2.25rem";
|
|
115
|
+
readonly '5xl': "3rem";
|
|
116
|
+
};
|
|
117
|
+
readonly fontWeights: {
|
|
118
|
+
readonly light: "300";
|
|
119
|
+
readonly normal: "400";
|
|
120
|
+
readonly medium: "500";
|
|
121
|
+
readonly semibold: "600";
|
|
122
|
+
readonly bold: "700";
|
|
123
|
+
readonly extrabold: "800";
|
|
124
|
+
};
|
|
125
|
+
readonly lineHeights: {
|
|
126
|
+
readonly tight: "1.25";
|
|
127
|
+
readonly normal: "1.5";
|
|
128
|
+
readonly relaxed: "1.75";
|
|
129
|
+
readonly loose: "2";
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export { Button, type ButtonProps, colors, spacing, typography };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'success' | 'warning' | 'error';
|
|
4
|
+
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
5
|
+
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
6
|
+
variant?: ButtonVariant;
|
|
7
|
+
size?: ButtonSize;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
12
|
+
|
|
13
|
+
declare const colors: {
|
|
14
|
+
readonly primary: {
|
|
15
|
+
readonly 50: "#eff6ff";
|
|
16
|
+
readonly 100: "#dbeafe";
|
|
17
|
+
readonly 200: "#bfdbfe";
|
|
18
|
+
readonly 300: "#93c5fd";
|
|
19
|
+
readonly 400: "#60a5fa";
|
|
20
|
+
readonly 500: "#3b82f6";
|
|
21
|
+
readonly 600: "#2563eb";
|
|
22
|
+
readonly 700: "#1d4ed8";
|
|
23
|
+
readonly 800: "#1e40af";
|
|
24
|
+
readonly 900: "#1e3a8a";
|
|
25
|
+
readonly 950: "#172554";
|
|
26
|
+
};
|
|
27
|
+
readonly secondary: {
|
|
28
|
+
readonly 50: "#f8fafc";
|
|
29
|
+
readonly 100: "#f1f5f9";
|
|
30
|
+
readonly 200: "#e2e8f0";
|
|
31
|
+
readonly 300: "#cbd5e1";
|
|
32
|
+
readonly 400: "#94a3b8";
|
|
33
|
+
readonly 500: "#64748b";
|
|
34
|
+
readonly 600: "#475569";
|
|
35
|
+
readonly 700: "#334155";
|
|
36
|
+
readonly 800: "#1e293b";
|
|
37
|
+
readonly 900: "#0f172a";
|
|
38
|
+
readonly 950: "#020617";
|
|
39
|
+
};
|
|
40
|
+
readonly success: {
|
|
41
|
+
readonly 50: "#f0fdf4";
|
|
42
|
+
readonly 100: "#dcfce7";
|
|
43
|
+
readonly 200: "#bbf7d0";
|
|
44
|
+
readonly 300: "#86efac";
|
|
45
|
+
readonly 400: "#4ade80";
|
|
46
|
+
readonly 500: "#22c55e";
|
|
47
|
+
readonly 600: "#16a34a";
|
|
48
|
+
readonly 700: "#15803d";
|
|
49
|
+
readonly 800: "#166534";
|
|
50
|
+
readonly 900: "#14532d";
|
|
51
|
+
readonly 950: "#052e16";
|
|
52
|
+
};
|
|
53
|
+
readonly warning: {
|
|
54
|
+
readonly 50: "#fffbeb";
|
|
55
|
+
readonly 100: "#fef3c7";
|
|
56
|
+
readonly 200: "#fde68a";
|
|
57
|
+
readonly 300: "#fcd34d";
|
|
58
|
+
readonly 400: "#fbbf24";
|
|
59
|
+
readonly 500: "#f59e0b";
|
|
60
|
+
readonly 600: "#d97706";
|
|
61
|
+
readonly 700: "#b45309";
|
|
62
|
+
readonly 800: "#92400e";
|
|
63
|
+
readonly 900: "#78350f";
|
|
64
|
+
readonly 950: "#451a03";
|
|
65
|
+
};
|
|
66
|
+
readonly error: {
|
|
67
|
+
readonly 50: "#fef2f2";
|
|
68
|
+
readonly 100: "#fee2e2";
|
|
69
|
+
readonly 200: "#fecaca";
|
|
70
|
+
readonly 300: "#fca5a5";
|
|
71
|
+
readonly 400: "#f87171";
|
|
72
|
+
readonly 500: "#ef4444";
|
|
73
|
+
readonly 600: "#dc2626";
|
|
74
|
+
readonly 700: "#b91c1c";
|
|
75
|
+
readonly 800: "#991b1b";
|
|
76
|
+
readonly 900: "#7f1d1d";
|
|
77
|
+
readonly 950: "#450a0a";
|
|
78
|
+
};
|
|
79
|
+
readonly neutral: {
|
|
80
|
+
readonly 50: "#fafafa";
|
|
81
|
+
readonly 100: "#f5f5f5";
|
|
82
|
+
readonly 200: "#e5e5e5";
|
|
83
|
+
readonly 300: "#d4d4d4";
|
|
84
|
+
readonly 400: "#a3a3a3";
|
|
85
|
+
readonly 500: "#737373";
|
|
86
|
+
readonly 600: "#525252";
|
|
87
|
+
readonly 700: "#404040";
|
|
88
|
+
readonly 800: "#262626";
|
|
89
|
+
readonly 900: "#171717";
|
|
90
|
+
readonly 950: "#0a0a0a";
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
declare const spacing: {
|
|
95
|
+
readonly xs: "0.5rem";
|
|
96
|
+
readonly sm: "0.75rem";
|
|
97
|
+
readonly md: "1rem";
|
|
98
|
+
readonly lg: "1.5rem";
|
|
99
|
+
readonly xl: "2rem";
|
|
100
|
+
readonly '2xl': "3rem";
|
|
101
|
+
readonly '3xl': "4rem";
|
|
102
|
+
readonly '4xl': "6rem";
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
declare const typography: {
|
|
106
|
+
readonly fontSizes: {
|
|
107
|
+
readonly xs: "0.75rem";
|
|
108
|
+
readonly sm: "0.875rem";
|
|
109
|
+
readonly base: "1rem";
|
|
110
|
+
readonly lg: "1.125rem";
|
|
111
|
+
readonly xl: "1.25rem";
|
|
112
|
+
readonly '2xl': "1.5rem";
|
|
113
|
+
readonly '3xl': "1.875rem";
|
|
114
|
+
readonly '4xl': "2.25rem";
|
|
115
|
+
readonly '5xl': "3rem";
|
|
116
|
+
};
|
|
117
|
+
readonly fontWeights: {
|
|
118
|
+
readonly light: "300";
|
|
119
|
+
readonly normal: "400";
|
|
120
|
+
readonly medium: "500";
|
|
121
|
+
readonly semibold: "600";
|
|
122
|
+
readonly bold: "700";
|
|
123
|
+
readonly extrabold: "800";
|
|
124
|
+
};
|
|
125
|
+
readonly lineHeights: {
|
|
126
|
+
readonly tight: "1.25";
|
|
127
|
+
readonly normal: "1.5";
|
|
128
|
+
readonly relaxed: "1.75";
|
|
129
|
+
readonly loose: "2";
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export { Button, type ButtonProps, colors, spacing, typography };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/index.ts
|
|
32
|
+
var index_exports = {};
|
|
33
|
+
__export(index_exports, {
|
|
34
|
+
Button: () => Button,
|
|
35
|
+
colors: () => colors,
|
|
36
|
+
spacing: () => spacing,
|
|
37
|
+
typography: () => typography
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(index_exports);
|
|
40
|
+
|
|
41
|
+
// src/components/Button/Button.tsx
|
|
42
|
+
var React = __toESM(require("react"));
|
|
43
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
44
|
+
var baseStyles = "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";
|
|
45
|
+
var variantStyles = {
|
|
46
|
+
primary: "bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 focus-visible:ring-primary-500",
|
|
47
|
+
secondary: "bg-secondary-600 text-white hover:bg-secondary-700 active:bg-secondary-800 focus-visible:ring-secondary-500",
|
|
48
|
+
outline: "border-2 border-primary-600 text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500",
|
|
49
|
+
ghost: "text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500",
|
|
50
|
+
success: "bg-success-600 text-white hover:bg-success-700 active:bg-success-800 focus-visible:ring-success-500",
|
|
51
|
+
warning: "bg-warning-600 text-white hover:bg-warning-700 active:bg-warning-800 focus-visible:ring-warning-500",
|
|
52
|
+
error: "bg-error-600 text-white hover:bg-error-700 active:bg-error-800 focus-visible:ring-error-500"
|
|
53
|
+
};
|
|
54
|
+
var sizeStyles = {
|
|
55
|
+
sm: "h-9 px-3 text-sm",
|
|
56
|
+
md: "h-10 px-4 text-base",
|
|
57
|
+
lg: "h-11 px-6 text-lg"
|
|
58
|
+
};
|
|
59
|
+
var Button = React.forwardRef(
|
|
60
|
+
({ className = "", variant = "primary", size = "md", children, ...props }, ref) => {
|
|
61
|
+
const computedClassName = [
|
|
62
|
+
baseStyles,
|
|
63
|
+
variantStyles[variant],
|
|
64
|
+
sizeStyles[size],
|
|
65
|
+
className
|
|
66
|
+
].filter(Boolean).join(" ");
|
|
67
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { ref, className: computedClassName, ...props, children });
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
Button.displayName = "Button";
|
|
71
|
+
|
|
72
|
+
// src/tokens/colors.ts
|
|
73
|
+
var colors = {
|
|
74
|
+
primary: {
|
|
75
|
+
50: "#eff6ff",
|
|
76
|
+
100: "#dbeafe",
|
|
77
|
+
200: "#bfdbfe",
|
|
78
|
+
300: "#93c5fd",
|
|
79
|
+
400: "#60a5fa",
|
|
80
|
+
500: "#3b82f6",
|
|
81
|
+
600: "#2563eb",
|
|
82
|
+
700: "#1d4ed8",
|
|
83
|
+
800: "#1e40af",
|
|
84
|
+
900: "#1e3a8a",
|
|
85
|
+
950: "#172554"
|
|
86
|
+
},
|
|
87
|
+
secondary: {
|
|
88
|
+
50: "#f8fafc",
|
|
89
|
+
100: "#f1f5f9",
|
|
90
|
+
200: "#e2e8f0",
|
|
91
|
+
300: "#cbd5e1",
|
|
92
|
+
400: "#94a3b8",
|
|
93
|
+
500: "#64748b",
|
|
94
|
+
600: "#475569",
|
|
95
|
+
700: "#334155",
|
|
96
|
+
800: "#1e293b",
|
|
97
|
+
900: "#0f172a",
|
|
98
|
+
950: "#020617"
|
|
99
|
+
},
|
|
100
|
+
success: {
|
|
101
|
+
50: "#f0fdf4",
|
|
102
|
+
100: "#dcfce7",
|
|
103
|
+
200: "#bbf7d0",
|
|
104
|
+
300: "#86efac",
|
|
105
|
+
400: "#4ade80",
|
|
106
|
+
500: "#22c55e",
|
|
107
|
+
600: "#16a34a",
|
|
108
|
+
700: "#15803d",
|
|
109
|
+
800: "#166534",
|
|
110
|
+
900: "#14532d",
|
|
111
|
+
950: "#052e16"
|
|
112
|
+
},
|
|
113
|
+
warning: {
|
|
114
|
+
50: "#fffbeb",
|
|
115
|
+
100: "#fef3c7",
|
|
116
|
+
200: "#fde68a",
|
|
117
|
+
300: "#fcd34d",
|
|
118
|
+
400: "#fbbf24",
|
|
119
|
+
500: "#f59e0b",
|
|
120
|
+
600: "#d97706",
|
|
121
|
+
700: "#b45309",
|
|
122
|
+
800: "#92400e",
|
|
123
|
+
900: "#78350f",
|
|
124
|
+
950: "#451a03"
|
|
125
|
+
},
|
|
126
|
+
error: {
|
|
127
|
+
50: "#fef2f2",
|
|
128
|
+
100: "#fee2e2",
|
|
129
|
+
200: "#fecaca",
|
|
130
|
+
300: "#fca5a5",
|
|
131
|
+
400: "#f87171",
|
|
132
|
+
500: "#ef4444",
|
|
133
|
+
600: "#dc2626",
|
|
134
|
+
700: "#b91c1c",
|
|
135
|
+
800: "#991b1b",
|
|
136
|
+
900: "#7f1d1d",
|
|
137
|
+
950: "#450a0a"
|
|
138
|
+
},
|
|
139
|
+
neutral: {
|
|
140
|
+
50: "#fafafa",
|
|
141
|
+
100: "#f5f5f5",
|
|
142
|
+
200: "#e5e5e5",
|
|
143
|
+
300: "#d4d4d4",
|
|
144
|
+
400: "#a3a3a3",
|
|
145
|
+
500: "#737373",
|
|
146
|
+
600: "#525252",
|
|
147
|
+
700: "#404040",
|
|
148
|
+
800: "#262626",
|
|
149
|
+
900: "#171717",
|
|
150
|
+
950: "#0a0a0a"
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
// src/tokens/spacing.ts
|
|
155
|
+
var spacing = {
|
|
156
|
+
xs: "0.5rem",
|
|
157
|
+
// 8px
|
|
158
|
+
sm: "0.75rem",
|
|
159
|
+
// 12px
|
|
160
|
+
md: "1rem",
|
|
161
|
+
// 16px
|
|
162
|
+
lg: "1.5rem",
|
|
163
|
+
// 24px
|
|
164
|
+
xl: "2rem",
|
|
165
|
+
// 32px
|
|
166
|
+
"2xl": "3rem",
|
|
167
|
+
// 48px
|
|
168
|
+
"3xl": "4rem",
|
|
169
|
+
// 64px
|
|
170
|
+
"4xl": "6rem"
|
|
171
|
+
// 96px
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// src/tokens/typography.ts
|
|
175
|
+
var typography = {
|
|
176
|
+
fontSizes: {
|
|
177
|
+
xs: "0.75rem",
|
|
178
|
+
// 12px
|
|
179
|
+
sm: "0.875rem",
|
|
180
|
+
// 14px
|
|
181
|
+
base: "1rem",
|
|
182
|
+
// 16px
|
|
183
|
+
lg: "1.125rem",
|
|
184
|
+
// 18px
|
|
185
|
+
xl: "1.25rem",
|
|
186
|
+
// 20px
|
|
187
|
+
"2xl": "1.5rem",
|
|
188
|
+
// 24px
|
|
189
|
+
"3xl": "1.875rem",
|
|
190
|
+
// 30px
|
|
191
|
+
"4xl": "2.25rem",
|
|
192
|
+
// 36px
|
|
193
|
+
"5xl": "3rem"
|
|
194
|
+
// 48px
|
|
195
|
+
},
|
|
196
|
+
fontWeights: {
|
|
197
|
+
light: "300",
|
|
198
|
+
normal: "400",
|
|
199
|
+
medium: "500",
|
|
200
|
+
semibold: "600",
|
|
201
|
+
bold: "700",
|
|
202
|
+
extrabold: "800"
|
|
203
|
+
},
|
|
204
|
+
lineHeights: {
|
|
205
|
+
tight: "1.25",
|
|
206
|
+
normal: "1.5",
|
|
207
|
+
relaxed: "1.75",
|
|
208
|
+
loose: "2"
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
212
|
+
0 && (module.exports = {
|
|
213
|
+
Button,
|
|
214
|
+
colors,
|
|
215
|
+
spacing,
|
|
216
|
+
typography
|
|
217
|
+
});
|
|
218
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/Button/Button.tsx","../src/tokens/colors.ts","../src/tokens/spacing.ts","../src/tokens/typography.ts"],"sourcesContent":["// Export components\r\nexport * from './components';\r\n\r\n// Export design tokens\r\nexport * from './tokens';\r\n\r\n","import * as React from 'react';\r\nimport { ButtonProps, ButtonSize, ButtonVariant } from './types';\r\n\r\nconst baseStyles =\r\n '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';\r\n\r\nconst variantStyles: Record<ButtonVariant, string> = {\r\n primary:\r\n 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 focus-visible:ring-primary-500',\r\n secondary:\r\n 'bg-secondary-600 text-white hover:bg-secondary-700 active:bg-secondary-800 focus-visible:ring-secondary-500',\r\n outline:\r\n 'border-2 border-primary-600 text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500',\r\n ghost:\r\n 'text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500',\r\n success:\r\n 'bg-success-600 text-white hover:bg-success-700 active:bg-success-800 focus-visible:ring-success-500',\r\n warning:\r\n 'bg-warning-600 text-white hover:bg-warning-700 active:bg-warning-800 focus-visible:ring-warning-500',\r\n error:\r\n 'bg-error-600 text-white hover:bg-error-700 active:bg-error-800 focus-visible:ring-error-500',\r\n};\r\n\r\nconst sizeStyles: Record<ButtonSize, string> = {\r\n sm: 'h-9 px-3 text-sm',\r\n md: 'h-10 px-4 text-base',\r\n lg: 'h-11 px-6 text-lg',\r\n};\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n { className = '', variant = 'primary', size = 'md', children, ...props },\r\n ref\r\n ) => {\r\n const computedClassName = [\r\n baseStyles,\r\n variantStyles[variant],\r\n sizeStyles[size],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <button ref={ref} className={computedClassName} {...props}>\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n","export const colors = {\r\n primary: {\r\n 50: '#eff6ff',\r\n 100: '#dbeafe',\r\n 200: '#bfdbfe',\r\n 300: '#93c5fd',\r\n 400: '#60a5fa',\r\n 500: '#3b82f6',\r\n 600: '#2563eb',\r\n 700: '#1d4ed8',\r\n 800: '#1e40af',\r\n 900: '#1e3a8a',\r\n 950: '#172554',\r\n },\r\n secondary: {\r\n 50: '#f8fafc',\r\n 100: '#f1f5f9',\r\n 200: '#e2e8f0',\r\n 300: '#cbd5e1',\r\n 400: '#94a3b8',\r\n 500: '#64748b',\r\n 600: '#475569',\r\n 700: '#334155',\r\n 800: '#1e293b',\r\n 900: '#0f172a',\r\n 950: '#020617',\r\n },\r\n success: {\r\n 50: '#f0fdf4',\r\n 100: '#dcfce7',\r\n 200: '#bbf7d0',\r\n 300: '#86efac',\r\n 400: '#4ade80',\r\n 500: '#22c55e',\r\n 600: '#16a34a',\r\n 700: '#15803d',\r\n 800: '#166534',\r\n 900: '#14532d',\r\n 950: '#052e16',\r\n },\r\n warning: {\r\n 50: '#fffbeb',\r\n 100: '#fef3c7',\r\n 200: '#fde68a',\r\n 300: '#fcd34d',\r\n 400: '#fbbf24',\r\n 500: '#f59e0b',\r\n 600: '#d97706',\r\n 700: '#b45309',\r\n 800: '#92400e',\r\n 900: '#78350f',\r\n 950: '#451a03',\r\n },\r\n error: {\r\n 50: '#fef2f2',\r\n 100: '#fee2e2',\r\n 200: '#fecaca',\r\n 300: '#fca5a5',\r\n 400: '#f87171',\r\n 500: '#ef4444',\r\n 600: '#dc2626',\r\n 700: '#b91c1c',\r\n 800: '#991b1b',\r\n 900: '#7f1d1d',\r\n 950: '#450a0a',\r\n },\r\n neutral: {\r\n 50: '#fafafa',\r\n 100: '#f5f5f5',\r\n 200: '#e5e5e5',\r\n 300: '#d4d4d4',\r\n 400: '#a3a3a3',\r\n 500: '#737373',\r\n 600: '#525252',\r\n 700: '#404040',\r\n 800: '#262626',\r\n 900: '#171717',\r\n 950: '#0a0a0a',\r\n },\r\n} as const;\r\n","export const spacing = {\r\n xs: '0.5rem', // 8px\r\n sm: '0.75rem', // 12px\r\n md: '1rem', // 16px\r\n lg: '1.5rem', // 24px\r\n xl: '2rem', // 32px\r\n '2xl': '3rem', // 48px\r\n '3xl': '4rem', // 64px\r\n '4xl': '6rem', // 96px\r\n} as const;\r\n","export const typography = {\r\n fontSizes: {\r\n xs: '0.75rem', // 12px\r\n sm: '0.875rem', // 14px\r\n base: '1rem', // 16px\r\n lg: '1.125rem', // 18px\r\n xl: '1.25rem', // 20px\r\n '2xl': '1.5rem', // 24px\r\n '3xl': '1.875rem', // 30px\r\n '4xl': '2.25rem', // 36px\r\n '5xl': '3rem', // 48px\r\n },\r\n fontWeights: {\r\n light: '300',\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n extrabold: '800',\r\n },\r\n lineHeights: {\r\n tight: '1.25',\r\n normal: '1.5',\r\n relaxed: '1.75',\r\n loose: '2',\r\n },\r\n} as const;\r\n"],"mappings":"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","names":[]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/Button/Button.tsx
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
var baseStyles = "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";
|
|
7
|
+
var variantStyles = {
|
|
8
|
+
primary: "bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 focus-visible:ring-primary-500",
|
|
9
|
+
secondary: "bg-secondary-600 text-white hover:bg-secondary-700 active:bg-secondary-800 focus-visible:ring-secondary-500",
|
|
10
|
+
outline: "border-2 border-primary-600 text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500",
|
|
11
|
+
ghost: "text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500",
|
|
12
|
+
success: "bg-success-600 text-white hover:bg-success-700 active:bg-success-800 focus-visible:ring-success-500",
|
|
13
|
+
warning: "bg-warning-600 text-white hover:bg-warning-700 active:bg-warning-800 focus-visible:ring-warning-500",
|
|
14
|
+
error: "bg-error-600 text-white hover:bg-error-700 active:bg-error-800 focus-visible:ring-error-500"
|
|
15
|
+
};
|
|
16
|
+
var sizeStyles = {
|
|
17
|
+
sm: "h-9 px-3 text-sm",
|
|
18
|
+
md: "h-10 px-4 text-base",
|
|
19
|
+
lg: "h-11 px-6 text-lg"
|
|
20
|
+
};
|
|
21
|
+
var Button = React.forwardRef(
|
|
22
|
+
({ className = "", variant = "primary", size = "md", children, ...props }, ref) => {
|
|
23
|
+
const computedClassName = [
|
|
24
|
+
baseStyles,
|
|
25
|
+
variantStyles[variant],
|
|
26
|
+
sizeStyles[size],
|
|
27
|
+
className
|
|
28
|
+
].filter(Boolean).join(" ");
|
|
29
|
+
return /* @__PURE__ */ jsx("button", { ref, className: computedClassName, ...props, children });
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
Button.displayName = "Button";
|
|
33
|
+
|
|
34
|
+
// src/tokens/colors.ts
|
|
35
|
+
var colors = {
|
|
36
|
+
primary: {
|
|
37
|
+
50: "#eff6ff",
|
|
38
|
+
100: "#dbeafe",
|
|
39
|
+
200: "#bfdbfe",
|
|
40
|
+
300: "#93c5fd",
|
|
41
|
+
400: "#60a5fa",
|
|
42
|
+
500: "#3b82f6",
|
|
43
|
+
600: "#2563eb",
|
|
44
|
+
700: "#1d4ed8",
|
|
45
|
+
800: "#1e40af",
|
|
46
|
+
900: "#1e3a8a",
|
|
47
|
+
950: "#172554"
|
|
48
|
+
},
|
|
49
|
+
secondary: {
|
|
50
|
+
50: "#f8fafc",
|
|
51
|
+
100: "#f1f5f9",
|
|
52
|
+
200: "#e2e8f0",
|
|
53
|
+
300: "#cbd5e1",
|
|
54
|
+
400: "#94a3b8",
|
|
55
|
+
500: "#64748b",
|
|
56
|
+
600: "#475569",
|
|
57
|
+
700: "#334155",
|
|
58
|
+
800: "#1e293b",
|
|
59
|
+
900: "#0f172a",
|
|
60
|
+
950: "#020617"
|
|
61
|
+
},
|
|
62
|
+
success: {
|
|
63
|
+
50: "#f0fdf4",
|
|
64
|
+
100: "#dcfce7",
|
|
65
|
+
200: "#bbf7d0",
|
|
66
|
+
300: "#86efac",
|
|
67
|
+
400: "#4ade80",
|
|
68
|
+
500: "#22c55e",
|
|
69
|
+
600: "#16a34a",
|
|
70
|
+
700: "#15803d",
|
|
71
|
+
800: "#166534",
|
|
72
|
+
900: "#14532d",
|
|
73
|
+
950: "#052e16"
|
|
74
|
+
},
|
|
75
|
+
warning: {
|
|
76
|
+
50: "#fffbeb",
|
|
77
|
+
100: "#fef3c7",
|
|
78
|
+
200: "#fde68a",
|
|
79
|
+
300: "#fcd34d",
|
|
80
|
+
400: "#fbbf24",
|
|
81
|
+
500: "#f59e0b",
|
|
82
|
+
600: "#d97706",
|
|
83
|
+
700: "#b45309",
|
|
84
|
+
800: "#92400e",
|
|
85
|
+
900: "#78350f",
|
|
86
|
+
950: "#451a03"
|
|
87
|
+
},
|
|
88
|
+
error: {
|
|
89
|
+
50: "#fef2f2",
|
|
90
|
+
100: "#fee2e2",
|
|
91
|
+
200: "#fecaca",
|
|
92
|
+
300: "#fca5a5",
|
|
93
|
+
400: "#f87171",
|
|
94
|
+
500: "#ef4444",
|
|
95
|
+
600: "#dc2626",
|
|
96
|
+
700: "#b91c1c",
|
|
97
|
+
800: "#991b1b",
|
|
98
|
+
900: "#7f1d1d",
|
|
99
|
+
950: "#450a0a"
|
|
100
|
+
},
|
|
101
|
+
neutral: {
|
|
102
|
+
50: "#fafafa",
|
|
103
|
+
100: "#f5f5f5",
|
|
104
|
+
200: "#e5e5e5",
|
|
105
|
+
300: "#d4d4d4",
|
|
106
|
+
400: "#a3a3a3",
|
|
107
|
+
500: "#737373",
|
|
108
|
+
600: "#525252",
|
|
109
|
+
700: "#404040",
|
|
110
|
+
800: "#262626",
|
|
111
|
+
900: "#171717",
|
|
112
|
+
950: "#0a0a0a"
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// src/tokens/spacing.ts
|
|
117
|
+
var spacing = {
|
|
118
|
+
xs: "0.5rem",
|
|
119
|
+
// 8px
|
|
120
|
+
sm: "0.75rem",
|
|
121
|
+
// 12px
|
|
122
|
+
md: "1rem",
|
|
123
|
+
// 16px
|
|
124
|
+
lg: "1.5rem",
|
|
125
|
+
// 24px
|
|
126
|
+
xl: "2rem",
|
|
127
|
+
// 32px
|
|
128
|
+
"2xl": "3rem",
|
|
129
|
+
// 48px
|
|
130
|
+
"3xl": "4rem",
|
|
131
|
+
// 64px
|
|
132
|
+
"4xl": "6rem"
|
|
133
|
+
// 96px
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// src/tokens/typography.ts
|
|
137
|
+
var typography = {
|
|
138
|
+
fontSizes: {
|
|
139
|
+
xs: "0.75rem",
|
|
140
|
+
// 12px
|
|
141
|
+
sm: "0.875rem",
|
|
142
|
+
// 14px
|
|
143
|
+
base: "1rem",
|
|
144
|
+
// 16px
|
|
145
|
+
lg: "1.125rem",
|
|
146
|
+
// 18px
|
|
147
|
+
xl: "1.25rem",
|
|
148
|
+
// 20px
|
|
149
|
+
"2xl": "1.5rem",
|
|
150
|
+
// 24px
|
|
151
|
+
"3xl": "1.875rem",
|
|
152
|
+
// 30px
|
|
153
|
+
"4xl": "2.25rem",
|
|
154
|
+
// 36px
|
|
155
|
+
"5xl": "3rem"
|
|
156
|
+
// 48px
|
|
157
|
+
},
|
|
158
|
+
fontWeights: {
|
|
159
|
+
light: "300",
|
|
160
|
+
normal: "400",
|
|
161
|
+
medium: "500",
|
|
162
|
+
semibold: "600",
|
|
163
|
+
bold: "700",
|
|
164
|
+
extrabold: "800"
|
|
165
|
+
},
|
|
166
|
+
lineHeights: {
|
|
167
|
+
tight: "1.25",
|
|
168
|
+
normal: "1.5",
|
|
169
|
+
relaxed: "1.75",
|
|
170
|
+
loose: "2"
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
export {
|
|
174
|
+
Button,
|
|
175
|
+
colors,
|
|
176
|
+
spacing,
|
|
177
|
+
typography
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Button/Button.tsx","../src/tokens/colors.ts","../src/tokens/spacing.ts","../src/tokens/typography.ts"],"sourcesContent":["import * as React from 'react';\r\nimport { ButtonProps, ButtonSize, ButtonVariant } from './types';\r\n\r\nconst baseStyles =\r\n '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';\r\n\r\nconst variantStyles: Record<ButtonVariant, string> = {\r\n primary:\r\n 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 focus-visible:ring-primary-500',\r\n secondary:\r\n 'bg-secondary-600 text-white hover:bg-secondary-700 active:bg-secondary-800 focus-visible:ring-secondary-500',\r\n outline:\r\n 'border-2 border-primary-600 text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500',\r\n ghost:\r\n 'text-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:ring-primary-500',\r\n success:\r\n 'bg-success-600 text-white hover:bg-success-700 active:bg-success-800 focus-visible:ring-success-500',\r\n warning:\r\n 'bg-warning-600 text-white hover:bg-warning-700 active:bg-warning-800 focus-visible:ring-warning-500',\r\n error:\r\n 'bg-error-600 text-white hover:bg-error-700 active:bg-error-800 focus-visible:ring-error-500',\r\n};\r\n\r\nconst sizeStyles: Record<ButtonSize, string> = {\r\n sm: 'h-9 px-3 text-sm',\r\n md: 'h-10 px-4 text-base',\r\n lg: 'h-11 px-6 text-lg',\r\n};\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n { className = '', variant = 'primary', size = 'md', children, ...props },\r\n ref\r\n ) => {\r\n const computedClassName = [\r\n baseStyles,\r\n variantStyles[variant],\r\n sizeStyles[size],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <button ref={ref} className={computedClassName} {...props}>\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n","export const colors = {\r\n primary: {\r\n 50: '#eff6ff',\r\n 100: '#dbeafe',\r\n 200: '#bfdbfe',\r\n 300: '#93c5fd',\r\n 400: '#60a5fa',\r\n 500: '#3b82f6',\r\n 600: '#2563eb',\r\n 700: '#1d4ed8',\r\n 800: '#1e40af',\r\n 900: '#1e3a8a',\r\n 950: '#172554',\r\n },\r\n secondary: {\r\n 50: '#f8fafc',\r\n 100: '#f1f5f9',\r\n 200: '#e2e8f0',\r\n 300: '#cbd5e1',\r\n 400: '#94a3b8',\r\n 500: '#64748b',\r\n 600: '#475569',\r\n 700: '#334155',\r\n 800: '#1e293b',\r\n 900: '#0f172a',\r\n 950: '#020617',\r\n },\r\n success: {\r\n 50: '#f0fdf4',\r\n 100: '#dcfce7',\r\n 200: '#bbf7d0',\r\n 300: '#86efac',\r\n 400: '#4ade80',\r\n 500: '#22c55e',\r\n 600: '#16a34a',\r\n 700: '#15803d',\r\n 800: '#166534',\r\n 900: '#14532d',\r\n 950: '#052e16',\r\n },\r\n warning: {\r\n 50: '#fffbeb',\r\n 100: '#fef3c7',\r\n 200: '#fde68a',\r\n 300: '#fcd34d',\r\n 400: '#fbbf24',\r\n 500: '#f59e0b',\r\n 600: '#d97706',\r\n 700: '#b45309',\r\n 800: '#92400e',\r\n 900: '#78350f',\r\n 950: '#451a03',\r\n },\r\n error: {\r\n 50: '#fef2f2',\r\n 100: '#fee2e2',\r\n 200: '#fecaca',\r\n 300: '#fca5a5',\r\n 400: '#f87171',\r\n 500: '#ef4444',\r\n 600: '#dc2626',\r\n 700: '#b91c1c',\r\n 800: '#991b1b',\r\n 900: '#7f1d1d',\r\n 950: '#450a0a',\r\n },\r\n neutral: {\r\n 50: '#fafafa',\r\n 100: '#f5f5f5',\r\n 200: '#e5e5e5',\r\n 300: '#d4d4d4',\r\n 400: '#a3a3a3',\r\n 500: '#737373',\r\n 600: '#525252',\r\n 700: '#404040',\r\n 800: '#262626',\r\n 900: '#171717',\r\n 950: '#0a0a0a',\r\n },\r\n} as const;\r\n","export const spacing = {\r\n xs: '0.5rem', // 8px\r\n sm: '0.75rem', // 12px\r\n md: '1rem', // 16px\r\n lg: '1.5rem', // 24px\r\n xl: '2rem', // 32px\r\n '2xl': '3rem', // 48px\r\n '3xl': '4rem', // 64px\r\n '4xl': '6rem', // 96px\r\n} as const;\r\n","export const typography = {\r\n fontSizes: {\r\n xs: '0.75rem', // 12px\r\n sm: '0.875rem', // 14px\r\n base: '1rem', // 16px\r\n lg: '1.125rem', // 18px\r\n xl: '1.25rem', // 20px\r\n '2xl': '1.5rem', // 24px\r\n '3xl': '1.875rem', // 30px\r\n '4xl': '2.25rem', // 36px\r\n '5xl': '3rem', // 48px\r\n },\r\n fontWeights: {\r\n light: '300',\r\n normal: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n extrabold: '800',\r\n },\r\n lineHeights: {\r\n tight: '1.25',\r\n normal: '1.5',\r\n relaxed: '1.75',\r\n loose: '2',\r\n },\r\n} as const;\r\n"],"mappings":"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","names":[]}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties;
|
|
3
|
+
@layer theme, base, components, utilities;
|
|
4
|
+
@layer theme {
|
|
5
|
+
:root, :host {
|
|
6
|
+
--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
|
7
|
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
8
|
+
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
|
9
|
+
"Courier New", monospace;
|
|
10
|
+
--color-white: #fff;
|
|
11
|
+
--spacing: 0.25rem;
|
|
12
|
+
--text-sm: 0.875rem;
|
|
13
|
+
--text-sm--line-height: calc(1.25 / 0.875);
|
|
14
|
+
--text-base: 1rem;
|
|
15
|
+
--text-base--line-height: calc(1.5 / 1);
|
|
16
|
+
--text-lg: 1.125rem;
|
|
17
|
+
--text-lg--line-height: calc(1.75 / 1.125);
|
|
18
|
+
--font-weight-medium: 500;
|
|
19
|
+
--radius-md: 0.375rem;
|
|
20
|
+
--default-transition-duration: 150ms;
|
|
21
|
+
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
22
|
+
--default-font-family: var(--font-sans);
|
|
23
|
+
--default-mono-font-family: var(--font-mono);
|
|
24
|
+
--color-primary-50: #eff6ff;
|
|
25
|
+
--color-primary-100: #dbeafe;
|
|
26
|
+
--color-primary-500: #3b82f6;
|
|
27
|
+
--color-primary-600: #2563eb;
|
|
28
|
+
--color-primary-700: #1d4ed8;
|
|
29
|
+
--color-primary-800: #1e40af;
|
|
30
|
+
--color-secondary-500: #64748b;
|
|
31
|
+
--color-secondary-600: #475569;
|
|
32
|
+
--color-secondary-700: #334155;
|
|
33
|
+
--color-secondary-800: #1e293b;
|
|
34
|
+
--color-success-500: #22c55e;
|
|
35
|
+
--color-success-600: #16a34a;
|
|
36
|
+
--color-success-700: #15803d;
|
|
37
|
+
--color-success-800: #166534;
|
|
38
|
+
--color-warning-500: #f59e0b;
|
|
39
|
+
--color-warning-600: #d97706;
|
|
40
|
+
--color-warning-700: #b45309;
|
|
41
|
+
--color-warning-800: #92400e;
|
|
42
|
+
--color-error-500: #ef4444;
|
|
43
|
+
--color-error-600: #dc2626;
|
|
44
|
+
--color-error-700: #b91c1c;
|
|
45
|
+
--color-error-800: #991b1b;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
@layer base {
|
|
49
|
+
*, ::after, ::before, ::backdrop, ::file-selector-button {
|
|
50
|
+
box-sizing: border-box;
|
|
51
|
+
margin: 0;
|
|
52
|
+
padding: 0;
|
|
53
|
+
border: 0 solid;
|
|
54
|
+
}
|
|
55
|
+
html, :host {
|
|
56
|
+
line-height: 1.5;
|
|
57
|
+
-webkit-text-size-adjust: 100%;
|
|
58
|
+
tab-size: 4;
|
|
59
|
+
font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
|
|
60
|
+
font-feature-settings: var(--default-font-feature-settings, normal);
|
|
61
|
+
font-variation-settings: var(--default-font-variation-settings, normal);
|
|
62
|
+
-webkit-tap-highlight-color: transparent;
|
|
63
|
+
}
|
|
64
|
+
hr {
|
|
65
|
+
height: 0;
|
|
66
|
+
color: inherit;
|
|
67
|
+
border-top-width: 1px;
|
|
68
|
+
}
|
|
69
|
+
abbr:where([title]) {
|
|
70
|
+
-webkit-text-decoration: underline dotted;
|
|
71
|
+
text-decoration: underline dotted;
|
|
72
|
+
}
|
|
73
|
+
h1, h2, h3, h4, h5, h6 {
|
|
74
|
+
font-size: inherit;
|
|
75
|
+
font-weight: inherit;
|
|
76
|
+
}
|
|
77
|
+
a {
|
|
78
|
+
color: inherit;
|
|
79
|
+
-webkit-text-decoration: inherit;
|
|
80
|
+
text-decoration: inherit;
|
|
81
|
+
}
|
|
82
|
+
b, strong {
|
|
83
|
+
font-weight: bolder;
|
|
84
|
+
}
|
|
85
|
+
code, kbd, samp, pre {
|
|
86
|
+
font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
|
|
87
|
+
font-feature-settings: var(--default-mono-font-feature-settings, normal);
|
|
88
|
+
font-variation-settings: var(--default-mono-font-variation-settings, normal);
|
|
89
|
+
font-size: 1em;
|
|
90
|
+
}
|
|
91
|
+
small {
|
|
92
|
+
font-size: 80%;
|
|
93
|
+
}
|
|
94
|
+
sub, sup {
|
|
95
|
+
font-size: 75%;
|
|
96
|
+
line-height: 0;
|
|
97
|
+
position: relative;
|
|
98
|
+
vertical-align: baseline;
|
|
99
|
+
}
|
|
100
|
+
sub {
|
|
101
|
+
bottom: -0.25em;
|
|
102
|
+
}
|
|
103
|
+
sup {
|
|
104
|
+
top: -0.5em;
|
|
105
|
+
}
|
|
106
|
+
table {
|
|
107
|
+
text-indent: 0;
|
|
108
|
+
border-color: inherit;
|
|
109
|
+
border-collapse: collapse;
|
|
110
|
+
}
|
|
111
|
+
:-moz-focusring {
|
|
112
|
+
outline: auto;
|
|
113
|
+
}
|
|
114
|
+
progress {
|
|
115
|
+
vertical-align: baseline;
|
|
116
|
+
}
|
|
117
|
+
summary {
|
|
118
|
+
display: list-item;
|
|
119
|
+
}
|
|
120
|
+
ol, ul, menu {
|
|
121
|
+
list-style: none;
|
|
122
|
+
}
|
|
123
|
+
img, svg, video, canvas, audio, iframe, embed, object {
|
|
124
|
+
display: block;
|
|
125
|
+
vertical-align: middle;
|
|
126
|
+
}
|
|
127
|
+
img, video {
|
|
128
|
+
max-width: 100%;
|
|
129
|
+
height: auto;
|
|
130
|
+
}
|
|
131
|
+
button, input, select, optgroup, textarea, ::file-selector-button {
|
|
132
|
+
font: inherit;
|
|
133
|
+
font-feature-settings: inherit;
|
|
134
|
+
font-variation-settings: inherit;
|
|
135
|
+
letter-spacing: inherit;
|
|
136
|
+
color: inherit;
|
|
137
|
+
border-radius: 0;
|
|
138
|
+
background-color: transparent;
|
|
139
|
+
opacity: 1;
|
|
140
|
+
}
|
|
141
|
+
:where(select:is([multiple], [size])) optgroup {
|
|
142
|
+
font-weight: bolder;
|
|
143
|
+
}
|
|
144
|
+
:where(select:is([multiple], [size])) optgroup option {
|
|
145
|
+
padding-inline-start: 20px;
|
|
146
|
+
}
|
|
147
|
+
::file-selector-button {
|
|
148
|
+
margin-inline-end: 4px;
|
|
149
|
+
}
|
|
150
|
+
::placeholder {
|
|
151
|
+
opacity: 1;
|
|
152
|
+
}
|
|
153
|
+
@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
|
|
154
|
+
::placeholder {
|
|
155
|
+
color: currentcolor;
|
|
156
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
157
|
+
color: color-mix(in oklab, currentcolor 50%, transparent);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
textarea {
|
|
162
|
+
resize: vertical;
|
|
163
|
+
}
|
|
164
|
+
::-webkit-search-decoration {
|
|
165
|
+
-webkit-appearance: none;
|
|
166
|
+
}
|
|
167
|
+
::-webkit-date-and-time-value {
|
|
168
|
+
min-height: 1lh;
|
|
169
|
+
text-align: inherit;
|
|
170
|
+
}
|
|
171
|
+
::-webkit-datetime-edit {
|
|
172
|
+
display: inline-flex;
|
|
173
|
+
}
|
|
174
|
+
::-webkit-datetime-edit-fields-wrapper {
|
|
175
|
+
padding: 0;
|
|
176
|
+
}
|
|
177
|
+
::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
|
|
178
|
+
padding-block: 0;
|
|
179
|
+
}
|
|
180
|
+
::-webkit-calendar-picker-indicator {
|
|
181
|
+
line-height: 1;
|
|
182
|
+
}
|
|
183
|
+
:-moz-ui-invalid {
|
|
184
|
+
box-shadow: none;
|
|
185
|
+
}
|
|
186
|
+
button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {
|
|
187
|
+
appearance: button;
|
|
188
|
+
}
|
|
189
|
+
::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
|
|
190
|
+
height: auto;
|
|
191
|
+
}
|
|
192
|
+
[hidden]:where(:not([hidden="until-found"])) {
|
|
193
|
+
display: none !important;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
@layer utilities {
|
|
197
|
+
.inline-flex {
|
|
198
|
+
display: inline-flex;
|
|
199
|
+
}
|
|
200
|
+
.h-9 {
|
|
201
|
+
height: calc(var(--spacing) * 9);
|
|
202
|
+
}
|
|
203
|
+
.h-10 {
|
|
204
|
+
height: calc(var(--spacing) * 10);
|
|
205
|
+
}
|
|
206
|
+
.h-11 {
|
|
207
|
+
height: calc(var(--spacing) * 11);
|
|
208
|
+
}
|
|
209
|
+
.items-center {
|
|
210
|
+
align-items: center;
|
|
211
|
+
}
|
|
212
|
+
.justify-center {
|
|
213
|
+
justify-content: center;
|
|
214
|
+
}
|
|
215
|
+
.rounded-md {
|
|
216
|
+
border-radius: var(--radius-md);
|
|
217
|
+
}
|
|
218
|
+
.border-2 {
|
|
219
|
+
border-style: var(--tw-border-style);
|
|
220
|
+
border-width: 2px;
|
|
221
|
+
}
|
|
222
|
+
.border-primary-600 {
|
|
223
|
+
border-color: var(--color-primary-600);
|
|
224
|
+
}
|
|
225
|
+
.bg-error-600 {
|
|
226
|
+
background-color: var(--color-error-600);
|
|
227
|
+
}
|
|
228
|
+
.bg-primary-600 {
|
|
229
|
+
background-color: var(--color-primary-600);
|
|
230
|
+
}
|
|
231
|
+
.bg-secondary-600 {
|
|
232
|
+
background-color: var(--color-secondary-600);
|
|
233
|
+
}
|
|
234
|
+
.bg-success-600 {
|
|
235
|
+
background-color: var(--color-success-600);
|
|
236
|
+
}
|
|
237
|
+
.bg-warning-600 {
|
|
238
|
+
background-color: var(--color-warning-600);
|
|
239
|
+
}
|
|
240
|
+
.px-3 {
|
|
241
|
+
padding-inline: calc(var(--spacing) * 3);
|
|
242
|
+
}
|
|
243
|
+
.px-4 {
|
|
244
|
+
padding-inline: calc(var(--spacing) * 4);
|
|
245
|
+
}
|
|
246
|
+
.px-6 {
|
|
247
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
248
|
+
}
|
|
249
|
+
.text-base {
|
|
250
|
+
font-size: var(--text-base);
|
|
251
|
+
line-height: var(--tw-leading, var(--text-base--line-height));
|
|
252
|
+
}
|
|
253
|
+
.text-lg {
|
|
254
|
+
font-size: var(--text-lg);
|
|
255
|
+
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
256
|
+
}
|
|
257
|
+
.text-sm {
|
|
258
|
+
font-size: var(--text-sm);
|
|
259
|
+
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
260
|
+
}
|
|
261
|
+
.font-medium {
|
|
262
|
+
--tw-font-weight: var(--font-weight-medium);
|
|
263
|
+
font-weight: var(--font-weight-medium);
|
|
264
|
+
}
|
|
265
|
+
.text-primary-600 {
|
|
266
|
+
color: var(--color-primary-600);
|
|
267
|
+
}
|
|
268
|
+
.text-white {
|
|
269
|
+
color: var(--color-white);
|
|
270
|
+
}
|
|
271
|
+
.outline {
|
|
272
|
+
outline-style: var(--tw-outline-style);
|
|
273
|
+
outline-width: 1px;
|
|
274
|
+
}
|
|
275
|
+
.transition-colors {
|
|
276
|
+
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
|
|
277
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
278
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
279
|
+
}
|
|
280
|
+
.hover\:bg-error-700 {
|
|
281
|
+
&:hover {
|
|
282
|
+
@media (hover: hover) {
|
|
283
|
+
background-color: var(--color-error-700);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
.hover\:bg-primary-50 {
|
|
288
|
+
&:hover {
|
|
289
|
+
@media (hover: hover) {
|
|
290
|
+
background-color: var(--color-primary-50);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
.hover\:bg-primary-700 {
|
|
295
|
+
&:hover {
|
|
296
|
+
@media (hover: hover) {
|
|
297
|
+
background-color: var(--color-primary-700);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
.hover\:bg-secondary-700 {
|
|
302
|
+
&:hover {
|
|
303
|
+
@media (hover: hover) {
|
|
304
|
+
background-color: var(--color-secondary-700);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
.hover\:bg-success-700 {
|
|
309
|
+
&:hover {
|
|
310
|
+
@media (hover: hover) {
|
|
311
|
+
background-color: var(--color-success-700);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
.hover\:bg-warning-700 {
|
|
316
|
+
&:hover {
|
|
317
|
+
@media (hover: hover) {
|
|
318
|
+
background-color: var(--color-warning-700);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
.focus-visible\:ring-2 {
|
|
323
|
+
&:focus-visible {
|
|
324
|
+
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
325
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
.focus-visible\:ring-error-500 {
|
|
329
|
+
&:focus-visible {
|
|
330
|
+
--tw-ring-color: var(--color-error-500);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
.focus-visible\:ring-primary-500 {
|
|
334
|
+
&:focus-visible {
|
|
335
|
+
--tw-ring-color: var(--color-primary-500);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
.focus-visible\:ring-secondary-500 {
|
|
339
|
+
&:focus-visible {
|
|
340
|
+
--tw-ring-color: var(--color-secondary-500);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
.focus-visible\:ring-success-500 {
|
|
344
|
+
&:focus-visible {
|
|
345
|
+
--tw-ring-color: var(--color-success-500);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
.focus-visible\:ring-warning-500 {
|
|
349
|
+
&:focus-visible {
|
|
350
|
+
--tw-ring-color: var(--color-warning-500);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
.focus-visible\:ring-offset-2 {
|
|
354
|
+
&:focus-visible {
|
|
355
|
+
--tw-ring-offset-width: 2px;
|
|
356
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
.focus-visible\:outline-none {
|
|
360
|
+
&:focus-visible {
|
|
361
|
+
--tw-outline-style: none;
|
|
362
|
+
outline-style: none;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
.active\:bg-error-800 {
|
|
366
|
+
&:active {
|
|
367
|
+
background-color: var(--color-error-800);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
.active\:bg-primary-100 {
|
|
371
|
+
&:active {
|
|
372
|
+
background-color: var(--color-primary-100);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
.active\:bg-primary-800 {
|
|
376
|
+
&:active {
|
|
377
|
+
background-color: var(--color-primary-800);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
.active\:bg-secondary-800 {
|
|
381
|
+
&:active {
|
|
382
|
+
background-color: var(--color-secondary-800);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
.active\:bg-success-800 {
|
|
386
|
+
&:active {
|
|
387
|
+
background-color: var(--color-success-800);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
.active\:bg-warning-800 {
|
|
391
|
+
&:active {
|
|
392
|
+
background-color: var(--color-warning-800);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
.disabled\:pointer-events-none {
|
|
396
|
+
&:disabled {
|
|
397
|
+
pointer-events: none;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
.disabled\:opacity-50 {
|
|
401
|
+
&:disabled {
|
|
402
|
+
opacity: 50%;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
@property --tw-border-style {
|
|
407
|
+
syntax: "*";
|
|
408
|
+
inherits: false;
|
|
409
|
+
initial-value: solid;
|
|
410
|
+
}
|
|
411
|
+
@property --tw-font-weight {
|
|
412
|
+
syntax: "*";
|
|
413
|
+
inherits: false;
|
|
414
|
+
}
|
|
415
|
+
@property --tw-outline-style {
|
|
416
|
+
syntax: "*";
|
|
417
|
+
inherits: false;
|
|
418
|
+
initial-value: solid;
|
|
419
|
+
}
|
|
420
|
+
@property --tw-shadow {
|
|
421
|
+
syntax: "*";
|
|
422
|
+
inherits: false;
|
|
423
|
+
initial-value: 0 0 #0000;
|
|
424
|
+
}
|
|
425
|
+
@property --tw-shadow-color {
|
|
426
|
+
syntax: "*";
|
|
427
|
+
inherits: false;
|
|
428
|
+
}
|
|
429
|
+
@property --tw-shadow-alpha {
|
|
430
|
+
syntax: "<percentage>";
|
|
431
|
+
inherits: false;
|
|
432
|
+
initial-value: 100%;
|
|
433
|
+
}
|
|
434
|
+
@property --tw-inset-shadow {
|
|
435
|
+
syntax: "*";
|
|
436
|
+
inherits: false;
|
|
437
|
+
initial-value: 0 0 #0000;
|
|
438
|
+
}
|
|
439
|
+
@property --tw-inset-shadow-color {
|
|
440
|
+
syntax: "*";
|
|
441
|
+
inherits: false;
|
|
442
|
+
}
|
|
443
|
+
@property --tw-inset-shadow-alpha {
|
|
444
|
+
syntax: "<percentage>";
|
|
445
|
+
inherits: false;
|
|
446
|
+
initial-value: 100%;
|
|
447
|
+
}
|
|
448
|
+
@property --tw-ring-color {
|
|
449
|
+
syntax: "*";
|
|
450
|
+
inherits: false;
|
|
451
|
+
}
|
|
452
|
+
@property --tw-ring-shadow {
|
|
453
|
+
syntax: "*";
|
|
454
|
+
inherits: false;
|
|
455
|
+
initial-value: 0 0 #0000;
|
|
456
|
+
}
|
|
457
|
+
@property --tw-inset-ring-color {
|
|
458
|
+
syntax: "*";
|
|
459
|
+
inherits: false;
|
|
460
|
+
}
|
|
461
|
+
@property --tw-inset-ring-shadow {
|
|
462
|
+
syntax: "*";
|
|
463
|
+
inherits: false;
|
|
464
|
+
initial-value: 0 0 #0000;
|
|
465
|
+
}
|
|
466
|
+
@property --tw-ring-inset {
|
|
467
|
+
syntax: "*";
|
|
468
|
+
inherits: false;
|
|
469
|
+
}
|
|
470
|
+
@property --tw-ring-offset-width {
|
|
471
|
+
syntax: "<length>";
|
|
472
|
+
inherits: false;
|
|
473
|
+
initial-value: 0px;
|
|
474
|
+
}
|
|
475
|
+
@property --tw-ring-offset-color {
|
|
476
|
+
syntax: "*";
|
|
477
|
+
inherits: false;
|
|
478
|
+
initial-value: #fff;
|
|
479
|
+
}
|
|
480
|
+
@property --tw-ring-offset-shadow {
|
|
481
|
+
syntax: "*";
|
|
482
|
+
inherits: false;
|
|
483
|
+
initial-value: 0 0 #0000;
|
|
484
|
+
}
|
|
485
|
+
@layer properties {
|
|
486
|
+
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
487
|
+
*, ::before, ::after, ::backdrop {
|
|
488
|
+
--tw-border-style: solid;
|
|
489
|
+
--tw-font-weight: initial;
|
|
490
|
+
--tw-outline-style: solid;
|
|
491
|
+
--tw-shadow: 0 0 #0000;
|
|
492
|
+
--tw-shadow-color: initial;
|
|
493
|
+
--tw-shadow-alpha: 100%;
|
|
494
|
+
--tw-inset-shadow: 0 0 #0000;
|
|
495
|
+
--tw-inset-shadow-color: initial;
|
|
496
|
+
--tw-inset-shadow-alpha: 100%;
|
|
497
|
+
--tw-ring-color: initial;
|
|
498
|
+
--tw-ring-shadow: 0 0 #0000;
|
|
499
|
+
--tw-inset-ring-color: initial;
|
|
500
|
+
--tw-inset-ring-shadow: 0 0 #0000;
|
|
501
|
+
--tw-ring-inset: initial;
|
|
502
|
+
--tw-ring-offset-width: 0px;
|
|
503
|
+
--tw-ring-offset-color: #fff;
|
|
504
|
+
--tw-ring-offset-shadow: 0 0 #0000;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "soongle-ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A design system library for React.js and Next.js with TailwindCSS v4",
|
|
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
|
+
"keywords": [
|
|
29
|
+
"design-system",
|
|
30
|
+
"react",
|
|
31
|
+
"nextjs",
|
|
32
|
+
"tailwindcss",
|
|
33
|
+
"ui-library"
|
|
34
|
+
],
|
|
35
|
+
"author": "",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
39
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"class-variance-authority": "^0.7.0",
|
|
43
|
+
"clsx": "^2.1.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@tailwindcss/cli": "^4.1.18",
|
|
47
|
+
"@types/react": "^18.2.48",
|
|
48
|
+
"@types/react-dom": "^18.2.18",
|
|
49
|
+
"react": "^18.2.0",
|
|
50
|
+
"react-dom": "^18.2.0",
|
|
51
|
+
"tailwindcss": "^4.0.0",
|
|
52
|
+
"tsup": "^8.0.1",
|
|
53
|
+
"typescript": "^5.3.3"
|
|
54
|
+
}
|
|
55
|
+
}
|