czero 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.
@@ -0,0 +1,336 @@
1
+ /**
2
+ * CZero Component Styles
3
+ * Pure CSS using --cz-* design tokens
4
+ */
5
+
6
+ /* ===== UTILITIES ===== */
7
+
8
+ /* Display */
9
+ .cz-inline-flex { display: inline-flex; }
10
+ .cz-flex { display: flex; }
11
+ .cz-flex-col { flex-direction: column; }
12
+ .cz-items-center { align-items: center; }
13
+ .cz-justify-center { justify-content: center; }
14
+ .cz-flex-wrap { flex-wrap: wrap; }
15
+
16
+ /* Gap */
17
+ .cz-gap-1 { gap: 0.25rem; }
18
+ .cz-gap-1\.5 { gap: 0.375rem; }
19
+ .cz-gap-2 { gap: 0.5rem; }
20
+
21
+ /* Width */
22
+ .cz-w-full { width: 100%; }
23
+
24
+ /* Whitespace */
25
+ .cz-whitespace-nowrap { white-space: nowrap; }
26
+
27
+ /* Opacity */
28
+ .cz-opacity-25 { opacity: 0.25; }
29
+ .cz-opacity-50 { opacity: 0.5; }
30
+ .cz-opacity-75 { opacity: 0.75; }
31
+
32
+ /* Animation */
33
+ @keyframes cz-spin {
34
+ from { transform: rotate(0deg); }
35
+ to { transform: rotate(360deg); }
36
+ }
37
+ .cz-animate-spin { animation: cz-spin 1s linear infinite; }
38
+
39
+ /* Sizing */
40
+ .cz-h-4 { height: 1rem; }
41
+ .cz-w-4 { width: 1rem; }
42
+ .cz-h-8 { height: 2rem; }
43
+ .cz-h-10 { height: 2.5rem; }
44
+ .cz-h-12 { height: 3rem; }
45
+
46
+ /* Padding */
47
+ .cz-px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
48
+ .cz-px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
49
+ .cz-px-4 { padding-left: 1rem; padding-right: 1rem; }
50
+ .cz-px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
51
+ .cz-py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
52
+ .cz-p-lg { padding: var(--cz-spacing-lg); }
53
+ .cz-pb-md { padding-bottom: var(--cz-spacing-md); }
54
+ .cz-pt-md { padding-top: var(--cz-spacing-md); }
55
+ .cz-px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
56
+
57
+ /* Margin */
58
+ .cz-mb-md { margin-bottom: var(--cz-spacing-md); }
59
+ .cz-mt-md { margin-top: var(--cz-spacing-md); }
60
+
61
+ /* Typography */
62
+ .cz-text-xs { font-size: var(--cz-font-size-xs); }
63
+ .cz-text-sm { font-size: var(--cz-font-size-sm); }
64
+ .cz-text-md { font-size: var(--cz-font-size-md); }
65
+ .cz-text-lg { font-size: var(--cz-font-size-lg); }
66
+ .cz-font-medium { font-weight: var(--cz-font-weight-medium); }
67
+ .cz-font-semibold { font-weight: var(--cz-font-weight-semibold); }
68
+ .cz-leading-tight { line-height: var(--cz-font-lineHeight-tight); }
69
+
70
+ /* Colors - Background */
71
+ .cz-bg-bg { background-color: hsl(var(--cz-color-bg)); }
72
+ .cz-bg-primary { background-color: hsl(var(--cz-color-primary)); }
73
+ .cz-bg-secondary { background-color: hsl(var(--cz-color-secondary)); }
74
+ .cz-bg-muted { background-color: hsl(var(--cz-color-muted)); }
75
+ .cz-bg-danger { background-color: hsl(var(--cz-color-danger)); }
76
+ .cz-bg-success { background-color: hsl(var(--cz-color-success)); }
77
+ .cz-bg-warning { background-color: hsl(var(--cz-color-warning)); }
78
+ .cz-bg-transparent { background-color: transparent; }
79
+
80
+ /* Colors - Text */
81
+ .cz-text-fg { color: hsl(var(--cz-color-fg)); }
82
+ .cz-text-primary-fg { color: hsl(var(--cz-color-primaryFg)); }
83
+ .cz-text-secondary-fg { color: hsl(var(--cz-color-secondaryFg)); }
84
+ .cz-text-muted-fg { color: hsl(var(--cz-color-mutedFg)); }
85
+ .cz-text-danger { color: hsl(var(--cz-color-danger)); }
86
+ .cz-text-danger-fg { color: hsl(var(--cz-color-dangerFg)); }
87
+ .cz-text-success-fg { color: hsl(var(--cz-color-successFg)); }
88
+ .cz-text-warning-fg { color: hsl(var(--cz-color-warningFg)); }
89
+
90
+ /* Border */
91
+ .cz-border { border-width: 1px; border-style: solid; }
92
+ .cz-border-b { border-bottom-width: 1px; border-bottom-style: solid; }
93
+ .cz-border-t { border-top-width: 1px; border-top-style: solid; }
94
+ .cz-border-border { border-color: hsl(var(--cz-color-border)); }
95
+ .cz-border-danger { border-color: hsl(var(--cz-color-danger)); }
96
+
97
+ /* Border Radius */
98
+ .cz-rounded-sm { border-radius: var(--cz-radius-sm); }
99
+ .cz-rounded-md { border-radius: var(--cz-radius-md); }
100
+ .cz-rounded-lg { border-radius: var(--cz-radius-lg); }
101
+ .cz-rounded-full { border-radius: var(--cz-radius-full); }
102
+
103
+ /* Shadow */
104
+ .cz-shadow-sm { box-shadow: var(--cz-shadow-sm); }
105
+
106
+ /* Transitions */
107
+ .cz-transition { transition: all var(--cz-transition-fast); }
108
+
109
+ /* States */
110
+ .cz-disabled {
111
+ pointer-events: none;
112
+ opacity: 0.5;
113
+ cursor: not-allowed;
114
+ }
115
+
116
+ /* Focus */
117
+ .cz-focus-ring:focus {
118
+ outline: none;
119
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
120
+ }
121
+
122
+ .cz-focus-ring:focus-visible {
123
+ outline: none;
124
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
125
+ }
126
+
127
+ /* Hover states */
128
+ .cz-hover-opacity:hover { opacity: 0.9; }
129
+ .cz-hover-muted:hover { background-color: hsl(var(--cz-color-muted)); }
130
+
131
+ /* ===== BUTTON ===== */
132
+
133
+ .cz-btn {
134
+ display: inline-flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ gap: 0.5rem;
138
+ border-radius: var(--cz-radius-md);
139
+ font-weight: var(--cz-font-weight-medium);
140
+ transition: all var(--cz-transition-fast);
141
+ cursor: pointer;
142
+ border: none;
143
+ }
144
+
145
+ .cz-btn:focus-visible {
146
+ outline: none;
147
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
148
+ }
149
+
150
+ .cz-btn:disabled {
151
+ pointer-events: none;
152
+ opacity: 0.5;
153
+ }
154
+
155
+ /* Button Sizes */
156
+ .cz-btn-sm { height: 2rem; padding: 0 0.75rem; font-size: var(--cz-font-size-sm); }
157
+ .cz-btn-md { height: 2.5rem; padding: 0 1rem; font-size: var(--cz-font-size-md); }
158
+ .cz-btn-lg { height: 3rem; padding: 0 1.5rem; font-size: var(--cz-font-size-lg); }
159
+
160
+ /* Button Variants */
161
+ .cz-btn-primary {
162
+ background-color: hsl(var(--cz-color-primary));
163
+ color: hsl(var(--cz-color-primaryFg));
164
+ }
165
+ .cz-btn-primary:hover { opacity: 0.9; }
166
+
167
+ .cz-btn-secondary {
168
+ background-color: hsl(var(--cz-color-secondary));
169
+ color: hsl(var(--cz-color-secondaryFg));
170
+ }
171
+ .cz-btn-secondary:hover { opacity: 0.8; }
172
+
173
+ .cz-btn-outline {
174
+ background-color: transparent;
175
+ border: 1px solid hsl(var(--cz-color-border));
176
+ color: hsl(var(--cz-color-fg));
177
+ }
178
+ .cz-btn-outline:hover { background-color: hsl(var(--cz-color-muted)); }
179
+
180
+ .cz-btn-ghost {
181
+ background-color: transparent;
182
+ color: hsl(var(--cz-color-fg));
183
+ }
184
+ .cz-btn-ghost:hover { background-color: hsl(var(--cz-color-muted)); }
185
+
186
+ .cz-btn-danger {
187
+ background-color: hsl(var(--cz-color-danger));
188
+ color: hsl(var(--cz-color-dangerFg));
189
+ }
190
+ .cz-btn-danger:hover { opacity: 0.9; }
191
+
192
+ /* ===== INPUT ===== */
193
+
194
+ .cz-input {
195
+ width: 100%;
196
+ border-radius: var(--cz-radius-md);
197
+ border: 1px solid hsl(var(--cz-color-border));
198
+ background-color: hsl(var(--cz-color-bg));
199
+ color: hsl(var(--cz-color-fg));
200
+ transition: all var(--cz-transition-fast);
201
+ }
202
+
203
+ .cz-input::placeholder {
204
+ color: hsl(var(--cz-color-mutedFg));
205
+ }
206
+
207
+ .cz-input:focus {
208
+ outline: none;
209
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-ring));
210
+ }
211
+
212
+ .cz-input:disabled {
213
+ cursor: not-allowed;
214
+ opacity: 0.5;
215
+ }
216
+
217
+ .cz-input-error {
218
+ border-color: hsl(var(--cz-color-danger));
219
+ }
220
+ .cz-input-error:focus {
221
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-danger));
222
+ }
223
+
224
+ /* Input Sizes */
225
+ .cz-input-sm { height: 2rem; padding: 0 0.5rem; font-size: var(--cz-font-size-sm); }
226
+ .cz-input-md { height: 2.5rem; padding: 0 0.75rem; font-size: var(--cz-font-size-md); }
227
+ .cz-input-lg { height: 3rem; padding: 0 1rem; font-size: var(--cz-font-size-lg); }
228
+
229
+ /* ===== CARD ===== */
230
+
231
+ .cz-card {
232
+ border-radius: var(--cz-radius-lg);
233
+ border: 1px solid hsl(var(--cz-color-border));
234
+ background-color: hsl(var(--cz-color-bg));
235
+ box-shadow: var(--cz-shadow-sm);
236
+ padding: var(--cz-spacing-lg);
237
+ }
238
+
239
+ .cz-card-no-padding {
240
+ padding: 0;
241
+ }
242
+
243
+ .cz-card-header {
244
+ display: flex;
245
+ flex-direction: column;
246
+ gap: 0.375rem;
247
+ padding-bottom: var(--cz-spacing-md);
248
+ border-bottom: 1px solid hsl(var(--cz-color-border));
249
+ margin-bottom: var(--cz-spacing-md);
250
+ }
251
+
252
+ .cz-card-title {
253
+ font-size: var(--cz-font-size-lg);
254
+ font-weight: var(--cz-font-weight-semibold);
255
+ color: hsl(var(--cz-color-fg));
256
+ line-height: var(--cz-font-lineHeight-tight);
257
+ }
258
+
259
+ .cz-card-description {
260
+ font-size: var(--cz-font-size-sm);
261
+ color: hsl(var(--cz-color-mutedFg));
262
+ }
263
+
264
+ .cz-card-body {
265
+ color: hsl(var(--cz-color-fg));
266
+ }
267
+
268
+ .cz-card-footer {
269
+ display: flex;
270
+ align-items: center;
271
+ gap: 0.5rem;
272
+ padding-top: var(--cz-spacing-md);
273
+ margin-top: var(--cz-spacing-md);
274
+ border-top: 1px solid hsl(var(--cz-color-border));
275
+ }
276
+
277
+ /* ===== BADGE ===== */
278
+
279
+ .cz-badge {
280
+ display: inline-flex;
281
+ align-items: center;
282
+ border-radius: var(--cz-radius-full);
283
+ font-weight: var(--cz-font-weight-medium);
284
+ white-space: nowrap;
285
+ }
286
+
287
+ /* Badge Sizes */
288
+ .cz-badge-sm { padding: 0.125rem 0.375rem; font-size: 0.7rem; }
289
+ .cz-badge-md { padding: 0.125rem 0.5rem; font-size: var(--cz-font-size-xs); }
290
+
291
+ /* Badge Variants */
292
+ .cz-badge-default {
293
+ background-color: hsl(var(--cz-color-secondary));
294
+ color: hsl(var(--cz-color-secondaryFg));
295
+ }
296
+
297
+ .cz-badge-primary {
298
+ background-color: hsl(var(--cz-color-primary));
299
+ color: hsl(var(--cz-color-primaryFg));
300
+ }
301
+
302
+ .cz-badge-success {
303
+ background-color: hsl(var(--cz-color-success));
304
+ color: hsl(var(--cz-color-successFg));
305
+ }
306
+
307
+ .cz-badge-danger {
308
+ background-color: hsl(var(--cz-color-danger));
309
+ color: hsl(var(--cz-color-dangerFg));
310
+ }
311
+
312
+ .cz-badge-warning {
313
+ background-color: hsl(var(--cz-color-warning));
314
+ color: hsl(var(--cz-color-warningFg));
315
+ }
316
+
317
+ .cz-badge-outline {
318
+ background-color: transparent;
319
+ border: 1px solid hsl(var(--cz-color-border));
320
+ color: hsl(var(--cz-color-fg));
321
+ }
322
+
323
+ /* ===== LABEL ===== */
324
+
325
+ .cz-label {
326
+ font-size: var(--cz-font-size-sm);
327
+ font-weight: var(--cz-font-weight-medium);
328
+ color: hsl(var(--cz-color-fg));
329
+ }
330
+
331
+ /* ===== ERROR TEXT ===== */
332
+
333
+ .cz-error {
334
+ font-size: var(--cz-font-size-sm);
335
+ color: hsl(var(--cz-color-danger));
336
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Build script to generate CSS from theme.config.ts
3
+ * Outputs tokens.css with --cz-* prefixed CSS variables
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=build-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-tokens.d.ts","sourceRoot":"","sources":["../../../src/core/build-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * CZero Design Tokens
3
+ * Single source of truth for all design values
4
+ */
5
+ export declare const theme: {
6
+ readonly color: {
7
+ readonly bg: {
8
+ readonly light: "0 0% 100%";
9
+ readonly dark: "220 40% 3%";
10
+ };
11
+ readonly fg: {
12
+ readonly light: "220 15% 10%";
13
+ readonly dark: "210 40% 96%";
14
+ };
15
+ readonly primary: {
16
+ readonly light: "222 47% 45%";
17
+ readonly dark: "210 80% 65%";
18
+ };
19
+ readonly primaryFg: {
20
+ readonly light: "0 0% 100%";
21
+ readonly dark: "220 40% 3%";
22
+ };
23
+ readonly secondary: {
24
+ readonly light: "220 10% 95%";
25
+ readonly dark: "220 8% 25%";
26
+ };
27
+ readonly secondaryFg: {
28
+ readonly light: "220 15% 10%";
29
+ readonly dark: "210 40% 96%";
30
+ };
31
+ readonly muted: {
32
+ readonly light: "220 10% 95%";
33
+ readonly dark: "220 8% 20%";
34
+ };
35
+ readonly mutedFg: {
36
+ readonly light: "220 10% 40%";
37
+ readonly dark: "220 10% 60%";
38
+ };
39
+ readonly danger: {
40
+ readonly light: "0 70% 55%";
41
+ readonly dark: "0 80% 65%";
42
+ };
43
+ readonly dangerFg: {
44
+ readonly light: "0 0% 100%";
45
+ readonly dark: "0 0% 100%";
46
+ };
47
+ readonly success: {
48
+ readonly light: "142 70% 45%";
49
+ readonly dark: "142 70% 55%";
50
+ };
51
+ readonly successFg: {
52
+ readonly light: "0 0% 100%";
53
+ readonly dark: "0 0% 100%";
54
+ };
55
+ readonly warning: {
56
+ readonly light: "38 92% 50%";
57
+ readonly dark: "38 92% 60%";
58
+ };
59
+ readonly warningFg: {
60
+ readonly light: "0 0% 100%";
61
+ readonly dark: "0 0% 0%";
62
+ };
63
+ readonly border: {
64
+ readonly light: "220 13% 90%";
65
+ readonly dark: "220 10% 20%";
66
+ };
67
+ readonly ring: {
68
+ readonly light: "222 47% 45%";
69
+ readonly dark: "210 80% 65%";
70
+ };
71
+ };
72
+ readonly radius: {
73
+ readonly none: "0";
74
+ readonly sm: "0.25rem";
75
+ readonly md: "0.5rem";
76
+ readonly lg: "0.75rem";
77
+ readonly xl: "1rem";
78
+ readonly full: "9999px";
79
+ };
80
+ readonly shadow: {
81
+ readonly none: "none";
82
+ readonly sm: "0 1px 2px rgb(0 0 0 / 0.05)";
83
+ readonly md: "0 2px 4px rgb(0 0 0 / 0.08)";
84
+ readonly lg: "0 4px 12px rgb(0 0 0 / 0.12)";
85
+ };
86
+ readonly spacing: {
87
+ readonly xs: "0.25rem";
88
+ readonly sm: "0.5rem";
89
+ readonly md: "0.75rem";
90
+ readonly lg: "1rem";
91
+ readonly xl: "1.5rem";
92
+ readonly "2xl": "2rem";
93
+ };
94
+ readonly typography: {
95
+ readonly fontFamily: "Inter, system-ui, -apple-system, sans-serif";
96
+ readonly size: {
97
+ readonly xs: "0.75rem";
98
+ readonly sm: "0.875rem";
99
+ readonly md: "1rem";
100
+ readonly lg: "1.125rem";
101
+ readonly xl: "1.25rem";
102
+ };
103
+ readonly weight: {
104
+ readonly normal: "400";
105
+ readonly medium: "500";
106
+ readonly semibold: "600";
107
+ readonly bold: "700";
108
+ };
109
+ readonly lineHeight: {
110
+ readonly tight: "1.25";
111
+ readonly normal: "1.5";
112
+ readonly relaxed: "1.75";
113
+ };
114
+ };
115
+ readonly transition: {
116
+ readonly fast: "150ms ease";
117
+ readonly normal: "200ms ease";
118
+ readonly slow: "300ms ease";
119
+ };
120
+ };
121
+ export type Theme = typeof theme;
122
+ //# sourceMappingURL=theme.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.config.d.ts","sourceRoot":"","sources":["../../../src/core/theme.config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmER,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
24
+
25
+ const Button = React__namespace.forwardRef(({ className = "", variant = "primary", size = "md", loading = false, disabled, children, ...props }, ref) => {
26
+ const classes = [
27
+ "cz-btn",
28
+ `cz-btn-${variant}`,
29
+ `cz-btn-${size}`,
30
+ className,
31
+ ].filter(Boolean).join(" ");
32
+ return (jsxRuntime.jsxs("button", { ref: ref, className: classes, disabled: disabled || loading, ...props, children: [loading && (jsxRuntime.jsxs("svg", { className: "cz-animate-spin cz-h-4 cz-w-4", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [jsxRuntime.jsx("circle", { className: "cz-opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), jsxRuntime.jsx("path", { className: "cz-opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] })), children] }));
33
+ });
34
+ Button.displayName = "Button";
35
+
36
+ const Input = React__namespace.forwardRef(({ className = "", label, error, size = "md", id, ...props }, ref) => {
37
+ const inputId = id || React__namespace.useId();
38
+ const inputClasses = [
39
+ "cz-input",
40
+ `cz-input-${size}`,
41
+ error && "cz-input-error",
42
+ className,
43
+ ].filter(Boolean).join(" ");
44
+ return (jsxRuntime.jsxs("div", { className: "cz-flex cz-flex-col cz-gap-1.5", children: [label && (jsxRuntime.jsx("label", { htmlFor: inputId, className: "cz-label", children: label })), jsxRuntime.jsx("input", { ref: ref, id: inputId, className: inputClasses, ...props }), error && jsxRuntime.jsx("span", { className: "cz-error", children: error })] }));
45
+ });
46
+ Input.displayName = "Input";
47
+
48
+ const CardRoot = React__namespace.forwardRef(({ className = "", noPadding, ...props }, ref) => {
49
+ const classes = [
50
+ "cz-card",
51
+ noPadding && "cz-card-no-padding",
52
+ className,
53
+ ].filter(Boolean).join(" ");
54
+ return jsxRuntime.jsx("div", { ref: ref, className: classes, ...props });
55
+ });
56
+ CardRoot.displayName = "Card";
57
+ const CardHeader = React__namespace.forwardRef(({ className = "", ...props }, ref) => (jsxRuntime.jsx("div", { ref: ref, className: `cz-card-header ${className}`, ...props })));
58
+ CardHeader.displayName = "Card.Header";
59
+ const CardTitle = React__namespace.forwardRef(({ className = "", ...props }, ref) => (jsxRuntime.jsx("h3", { ref: ref, className: `cz-card-title ${className}`, ...props })));
60
+ CardTitle.displayName = "Card.Title";
61
+ const CardDescription = React__namespace.forwardRef(({ className = "", ...props }, ref) => (jsxRuntime.jsx("p", { ref: ref, className: `cz-card-description ${className}`, ...props })));
62
+ CardDescription.displayName = "Card.Description";
63
+ const CardBody = React__namespace.forwardRef(({ className = "", ...props }, ref) => (jsxRuntime.jsx("div", { ref: ref, className: `cz-card-body ${className}`, ...props })));
64
+ CardBody.displayName = "Card.Body";
65
+ const CardFooter = React__namespace.forwardRef(({ className = "", ...props }, ref) => (jsxRuntime.jsx("div", { ref: ref, className: `cz-card-footer ${className}`, ...props })));
66
+ CardFooter.displayName = "Card.Footer";
67
+ const Card = Object.assign(CardRoot, {
68
+ Header: CardHeader,
69
+ Title: CardTitle,
70
+ Description: CardDescription,
71
+ Body: CardBody,
72
+ Footer: CardFooter,
73
+ });
74
+
75
+ const Badge = React__namespace.forwardRef(({ className = "", variant = "default", size = "md", ...props }, ref) => {
76
+ const classes = [
77
+ "cz-badge",
78
+ `cz-badge-${variant}`,
79
+ `cz-badge-${size}`,
80
+ className,
81
+ ].filter(Boolean).join(" ");
82
+ return jsxRuntime.jsx("span", { ref: ref, className: classes, ...props });
83
+ });
84
+ Badge.displayName = "Badge";
85
+
86
+ exports.Badge = Badge;
87
+ exports.Button = Button;
88
+ exports.Card = Card;
89
+ exports.Input = Input;
90
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/react/components/button.tsx","../../../src/react/components/input.tsx","../../../src/react/components/card.tsx","../../../src/react/components/badge.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n loading?: boolean;\r\n}\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className = \"\",\r\n variant = \"primary\",\r\n size = \"md\",\r\n loading = false,\r\n disabled,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const classes = [\r\n \"cz-btn\",\r\n `cz-btn-${variant}`,\r\n `cz-btn-${size}`,\r\n className,\r\n ].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={classes}\r\n disabled={disabled || loading}\r\n {...props}\r\n >\r\n {loading && (\r\n <svg\r\n className=\"cz-animate-spin cz-h-4 cz-w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <circle\r\n className=\"cz-opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"cz-opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\r\n />\r\n </svg>\r\n )}\r\n {children}\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 InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\r\n label?: string;\r\n error?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className = \"\", label, error, size = \"md\", id, ...props }, ref) => {\r\n const inputId = id || React.useId();\r\n\r\n const inputClasses = [\r\n \"cz-input\",\r\n `cz-input-${size}`,\r\n error && \"cz-input-error\",\r\n className,\r\n ].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className=\"cz-flex cz-flex-col cz-gap-1.5\">\r\n {label && (\r\n <label htmlFor={inputId} className=\"cz-label\">\r\n {label}\r\n </label>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n className={inputClasses}\r\n {...props}\r\n />\r\n {error && <span className=\"cz-error\">{error}</span>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n","import * as React from \"react\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n noPadding?: boolean;\n}\n\nconst CardRoot = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className = \"\", noPadding, ...props }, ref) => {\n const classes = [\n \"cz-card\",\n noPadding && \"cz-card-no-padding\",\n className,\n ].filter(Boolean).join(\" \");\n\n return <div ref={ref} className={classes} {...props} />;\n }\n);\nCardRoot.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className = \"\", ...props }, ref) => (\n <div ref={ref} className={`cz-card-header ${className}`} {...props} />\n));\nCardHeader.displayName = \"Card.Header\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className = \"\", ...props }, ref) => (\n <h3 ref={ref} className={`cz-card-title ${className}`} {...props} />\n));\nCardTitle.displayName = \"Card.Title\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className = \"\", ...props }, ref) => (\n <p ref={ref} className={`cz-card-description ${className}`} {...props} />\n));\nCardDescription.displayName = \"Card.Description\";\n\nconst CardBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className = \"\", ...props }, ref) => (\n <div ref={ref} className={`cz-card-body ${className}`} {...props} />\n));\nCardBody.displayName = \"Card.Body\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className = \"\", ...props }, ref) => (\n <div ref={ref} className={`cz-card-footer ${className}`} {...props} />\n));\nCardFooter.displayName = \"Card.Footer\";\n\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Title: CardTitle,\n Description: CardDescription,\n Body: CardBody,\n Footer: CardFooter,\n});\n","import * as React from \"react\";\r\n\r\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n variant?: \"default\" | \"primary\" | \"success\" | \"danger\" | \"warning\" | \"outline\";\r\n size?: \"sm\" | \"md\";\r\n}\r\n\r\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\r\n ({ className = \"\", variant = \"default\", size = \"md\", ...props }, ref) => {\r\n const classes = [\r\n \"cz-badge\",\r\n `cz-badge-${variant}`,\r\n `cz-badge-${size}`,\r\n className,\r\n ].filter(Boolean).join(\" \");\r\n\r\n return <span ref={ref} className={classes} {...props} />;\r\n }\r\n);\r\n\r\nBadge.displayName = \"Badge\";\r\n"],"names":["React","_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+
3
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
+ variant?: "primary" | "secondary" | "outline" | "ghost" | "danger";
5
+ size?: "sm" | "md" | "lg";
6
+ loading?: boolean;
7
+ }
8
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
9
+
10
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
11
+ label?: string;
12
+ error?: string;
13
+ size?: "sm" | "md" | "lg";
14
+ }
15
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
16
+
17
+ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
18
+ noPadding?: boolean;
19
+ }
20
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>> & {
21
+ Header: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
22
+ Title: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
23
+ Description: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
24
+ Body: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
25
+ Footer: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
26
+ };
27
+
28
+ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
29
+ variant?: "default" | "primary" | "success" | "danger" | "warning" | "outline";
30
+ size?: "sm" | "md";
31
+ }
32
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
33
+
34
+ export { Badge, Button, Card, Input };
35
+ export type { BadgeProps, ButtonProps, CardProps, InputProps };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC"}