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,66 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ const Button = React.forwardRef(({ className = "", variant = "primary", size = "md", loading = false, disabled, children, ...props }, ref) => {
5
+ const classes = [
6
+ "cz-btn",
7
+ `cz-btn-${variant}`,
8
+ `cz-btn-${size}`,
9
+ className,
10
+ ].filter(Boolean).join(" ");
11
+ return (jsxs("button", { ref: ref, className: classes, disabled: disabled || loading, ...props, children: [loading && (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: [jsx("circle", { className: "cz-opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), 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] }));
12
+ });
13
+ Button.displayName = "Button";
14
+
15
+ const Input = React.forwardRef(({ className = "", label, error, size = "md", id, ...props }, ref) => {
16
+ const inputId = id || React.useId();
17
+ const inputClasses = [
18
+ "cz-input",
19
+ `cz-input-${size}`,
20
+ error && "cz-input-error",
21
+ className,
22
+ ].filter(Boolean).join(" ");
23
+ return (jsxs("div", { className: "cz-flex cz-flex-col cz-gap-1.5", children: [label && (jsx("label", { htmlFor: inputId, className: "cz-label", children: label })), jsx("input", { ref: ref, id: inputId, className: inputClasses, ...props }), error && jsx("span", { className: "cz-error", children: error })] }));
24
+ });
25
+ Input.displayName = "Input";
26
+
27
+ const CardRoot = React.forwardRef(({ className = "", noPadding, ...props }, ref) => {
28
+ const classes = [
29
+ "cz-card",
30
+ noPadding && "cz-card-no-padding",
31
+ className,
32
+ ].filter(Boolean).join(" ");
33
+ return jsx("div", { ref: ref, className: classes, ...props });
34
+ });
35
+ CardRoot.displayName = "Card";
36
+ const CardHeader = React.forwardRef(({ className = "", ...props }, ref) => (jsx("div", { ref: ref, className: `cz-card-header ${className}`, ...props })));
37
+ CardHeader.displayName = "Card.Header";
38
+ const CardTitle = React.forwardRef(({ className = "", ...props }, ref) => (jsx("h3", { ref: ref, className: `cz-card-title ${className}`, ...props })));
39
+ CardTitle.displayName = "Card.Title";
40
+ const CardDescription = React.forwardRef(({ className = "", ...props }, ref) => (jsx("p", { ref: ref, className: `cz-card-description ${className}`, ...props })));
41
+ CardDescription.displayName = "Card.Description";
42
+ const CardBody = React.forwardRef(({ className = "", ...props }, ref) => (jsx("div", { ref: ref, className: `cz-card-body ${className}`, ...props })));
43
+ CardBody.displayName = "Card.Body";
44
+ const CardFooter = React.forwardRef(({ className = "", ...props }, ref) => (jsx("div", { ref: ref, className: `cz-card-footer ${className}`, ...props })));
45
+ CardFooter.displayName = "Card.Footer";
46
+ const Card = Object.assign(CardRoot, {
47
+ Header: CardHeader,
48
+ Title: CardTitle,
49
+ Description: CardDescription,
50
+ Body: CardBody,
51
+ Footer: CardFooter,
52
+ });
53
+
54
+ const Badge = React.forwardRef(({ className = "", variant = "default", size = "md", ...props }, ref) => {
55
+ const classes = [
56
+ "cz-badge",
57
+ `cz-badge-${variant}`,
58
+ `cz-badge-${size}`,
59
+ className,
60
+ ].filter(Boolean).join(" ");
61
+ return jsx("span", { ref: ref, className: classes, ...props });
62
+ });
63
+ Badge.displayName = "Badge";
64
+
65
+ export { Badge, Button, Card, Input };
66
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","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":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
3
+ variant?: "default" | "primary" | "success" | "danger" | "warning" | "outline";
4
+ size?: "sm" | "md";
5
+ }
6
+ export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
7
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../src/react/components/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC/E,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,KAAK,oFAWjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
+ variant?: "primary" | "secondary" | "outline" | "ghost" | "danger";
4
+ size?: "sm" | "md" | "lg";
5
+ loading?: boolean;
6
+ }
7
+ export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
8
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/react/components/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACrD,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,MAAM,uFAqDlB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ noPadding?: boolean;
4
+ }
5
+ export declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>> & {
6
+ Header: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
7
+ Title: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
8
+ Description: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
9
+ Body: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
10
+ Footer: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
11
+ };
12
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/react/components/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAuDD,eAAO,MAAM,IAAI;;;;;;CAMf,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
3
+ label?: string;
4
+ error?: string;
5
+ size?: "sm" | "md" | "lg";
6
+ }
7
+ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
8
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../src/react/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,KAAK,qFA4BjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CZero React Components
3
+ */
4
+ export { Button, type ButtonProps } from "./components/button";
5
+ export { Input, type InputProps } from "./components/input";
6
+ export { Card, type CardProps } from "./components/card";
7
+ export { Badge, type BadgeProps } from "./components/badge";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Class name utility - combines clsx and tailwind-merge
3
+ * Used for conditional and merged class names
4
+ */
5
+ import { type ClassValue } from "clsx";
6
+ export declare function cn(...inputs: ClassValue[]): string;
7
+ //# sourceMappingURL=cn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../../src/react/lib/cn.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD"}
package/dist/reset.css ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CZero Minimal Reset
3
+ */
4
+
5
+ *, *::before, *::after {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ * {
10
+ margin: 0;
11
+ }
12
+
13
+ body {
14
+ line-height: var(--cz-font-lineHeight-normal);
15
+ -webkit-font-smoothing: antialiased;
16
+ font-family: var(--cz-font-fontFamily);
17
+ }
18
+
19
+ button, input, textarea, select {
20
+ font: inherit;
21
+ }
@@ -0,0 +1,431 @@
1
+ /**
2
+ * CZero Minimal Reset
3
+ */
4
+
5
+ *, *::before, *::after {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ * {
10
+ margin: 0;
11
+ }
12
+
13
+ body {
14
+ line-height: var(--cz-font-lineHeight-normal);
15
+ -webkit-font-smoothing: antialiased;
16
+ font-family: var(--cz-font-fontFamily);
17
+ }
18
+
19
+ button, input, textarea, select {
20
+ font: inherit;
21
+ }
22
+ /**
23
+ * CZero Design Tokens
24
+ * Auto-generated from theme.config.ts - DO NOT EDIT MANUALLY
25
+ */
26
+
27
+ :root {
28
+ --cz-color-bg: 0 0% 100%;
29
+ --cz-color-fg: 220 15% 10%;
30
+ --cz-color-primary: 222 47% 45%;
31
+ --cz-color-primaryFg: 0 0% 100%;
32
+ --cz-color-secondary: 220 10% 95%;
33
+ --cz-color-secondaryFg: 220 15% 10%;
34
+ --cz-color-muted: 220 10% 95%;
35
+ --cz-color-mutedFg: 220 10% 40%;
36
+ --cz-color-danger: 0 70% 55%;
37
+ --cz-color-dangerFg: 0 0% 100%;
38
+ --cz-color-success: 142 70% 45%;
39
+ --cz-color-successFg: 0 0% 100%;
40
+ --cz-color-warning: 38 92% 50%;
41
+ --cz-color-warningFg: 0 0% 100%;
42
+ --cz-color-border: 220 13% 90%;
43
+ --cz-color-ring: 222 47% 45%;
44
+ --cz-radius-none: 0;
45
+ --cz-radius-sm: 0.25rem;
46
+ --cz-radius-md: 0.5rem;
47
+ --cz-radius-lg: 0.75rem;
48
+ --cz-radius-xl: 1rem;
49
+ --cz-radius-full: 9999px;
50
+ --cz-shadow-none: none;
51
+ --cz-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.05);
52
+ --cz-shadow-md: 0 2px 4px rgb(0 0 0 / 0.08);
53
+ --cz-shadow-lg: 0 4px 12px rgb(0 0 0 / 0.12);
54
+ --cz-spacing-xs: 0.25rem;
55
+ --cz-spacing-sm: 0.5rem;
56
+ --cz-spacing-md: 0.75rem;
57
+ --cz-spacing-lg: 1rem;
58
+ --cz-spacing-xl: 1.5rem;
59
+ --cz-spacing-2xl: 2rem;
60
+ --cz-transition-fast: 150ms ease;
61
+ --cz-transition-normal: 200ms ease;
62
+ --cz-transition-slow: 300ms ease;
63
+ --cz-font-fontFamily: Inter, system-ui, -apple-system, sans-serif;
64
+ --cz-font-size-xs: 0.75rem;
65
+ --cz-font-size-sm: 0.875rem;
66
+ --cz-font-size-md: 1rem;
67
+ --cz-font-size-lg: 1.125rem;
68
+ --cz-font-size-xl: 1.25rem;
69
+ --cz-font-weight-normal: 400;
70
+ --cz-font-weight-medium: 500;
71
+ --cz-font-weight-semibold: 600;
72
+ --cz-font-weight-bold: 700;
73
+ --cz-font-lineHeight-tight: 1.25;
74
+ --cz-font-lineHeight-normal: 1.5;
75
+ --cz-font-lineHeight-relaxed: 1.75;
76
+ }
77
+
78
+ .dark {
79
+ --cz-color-bg: 220 40% 3%;
80
+ --cz-color-fg: 210 40% 96%;
81
+ --cz-color-primary: 210 80% 65%;
82
+ --cz-color-primaryFg: 220 40% 3%;
83
+ --cz-color-secondary: 220 8% 25%;
84
+ --cz-color-secondaryFg: 210 40% 96%;
85
+ --cz-color-muted: 220 8% 20%;
86
+ --cz-color-mutedFg: 220 10% 60%;
87
+ --cz-color-danger: 0 80% 65%;
88
+ --cz-color-dangerFg: 0 0% 100%;
89
+ --cz-color-success: 142 70% 55%;
90
+ --cz-color-successFg: 0 0% 100%;
91
+ --cz-color-warning: 38 92% 60%;
92
+ --cz-color-warningFg: 0 0% 0%;
93
+ --cz-color-border: 220 10% 20%;
94
+ --cz-color-ring: 210 80% 65%;
95
+ }
96
+ /**
97
+ * CZero Component Styles
98
+ * Pure CSS using --cz-* design tokens
99
+ */
100
+
101
+ /* ===== UTILITIES ===== */
102
+
103
+ /* Display */
104
+ .cz-inline-flex { display: inline-flex; }
105
+ .cz-flex { display: flex; }
106
+ .cz-flex-col { flex-direction: column; }
107
+ .cz-items-center { align-items: center; }
108
+ .cz-justify-center { justify-content: center; }
109
+ .cz-flex-wrap { flex-wrap: wrap; }
110
+
111
+ /* Gap */
112
+ .cz-gap-1 { gap: 0.25rem; }
113
+ .cz-gap-1\.5 { gap: 0.375rem; }
114
+ .cz-gap-2 { gap: 0.5rem; }
115
+
116
+ /* Width */
117
+ .cz-w-full { width: 100%; }
118
+
119
+ /* Whitespace */
120
+ .cz-whitespace-nowrap { white-space: nowrap; }
121
+
122
+ /* Opacity */
123
+ .cz-opacity-25 { opacity: 0.25; }
124
+ .cz-opacity-50 { opacity: 0.5; }
125
+ .cz-opacity-75 { opacity: 0.75; }
126
+
127
+ /* Animation */
128
+ @keyframes cz-spin {
129
+ from { transform: rotate(0deg); }
130
+ to { transform: rotate(360deg); }
131
+ }
132
+ .cz-animate-spin { animation: cz-spin 1s linear infinite; }
133
+
134
+ /* Sizing */
135
+ .cz-h-4 { height: 1rem; }
136
+ .cz-w-4 { width: 1rem; }
137
+ .cz-h-8 { height: 2rem; }
138
+ .cz-h-10 { height: 2.5rem; }
139
+ .cz-h-12 { height: 3rem; }
140
+
141
+ /* Padding */
142
+ .cz-px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
143
+ .cz-px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
144
+ .cz-px-4 { padding-left: 1rem; padding-right: 1rem; }
145
+ .cz-px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
146
+ .cz-py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
147
+ .cz-p-lg { padding: var(--cz-spacing-lg); }
148
+ .cz-pb-md { padding-bottom: var(--cz-spacing-md); }
149
+ .cz-pt-md { padding-top: var(--cz-spacing-md); }
150
+ .cz-px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
151
+
152
+ /* Margin */
153
+ .cz-mb-md { margin-bottom: var(--cz-spacing-md); }
154
+ .cz-mt-md { margin-top: var(--cz-spacing-md); }
155
+
156
+ /* Typography */
157
+ .cz-text-xs { font-size: var(--cz-font-size-xs); }
158
+ .cz-text-sm { font-size: var(--cz-font-size-sm); }
159
+ .cz-text-md { font-size: var(--cz-font-size-md); }
160
+ .cz-text-lg { font-size: var(--cz-font-size-lg); }
161
+ .cz-font-medium { font-weight: var(--cz-font-weight-medium); }
162
+ .cz-font-semibold { font-weight: var(--cz-font-weight-semibold); }
163
+ .cz-leading-tight { line-height: var(--cz-font-lineHeight-tight); }
164
+
165
+ /* Colors - Background */
166
+ .cz-bg-bg { background-color: hsl(var(--cz-color-bg)); }
167
+ .cz-bg-primary { background-color: hsl(var(--cz-color-primary)); }
168
+ .cz-bg-secondary { background-color: hsl(var(--cz-color-secondary)); }
169
+ .cz-bg-muted { background-color: hsl(var(--cz-color-muted)); }
170
+ .cz-bg-danger { background-color: hsl(var(--cz-color-danger)); }
171
+ .cz-bg-success { background-color: hsl(var(--cz-color-success)); }
172
+ .cz-bg-warning { background-color: hsl(var(--cz-color-warning)); }
173
+ .cz-bg-transparent { background-color: transparent; }
174
+
175
+ /* Colors - Text */
176
+ .cz-text-fg { color: hsl(var(--cz-color-fg)); }
177
+ .cz-text-primary-fg { color: hsl(var(--cz-color-primaryFg)); }
178
+ .cz-text-secondary-fg { color: hsl(var(--cz-color-secondaryFg)); }
179
+ .cz-text-muted-fg { color: hsl(var(--cz-color-mutedFg)); }
180
+ .cz-text-danger { color: hsl(var(--cz-color-danger)); }
181
+ .cz-text-danger-fg { color: hsl(var(--cz-color-dangerFg)); }
182
+ .cz-text-success-fg { color: hsl(var(--cz-color-successFg)); }
183
+ .cz-text-warning-fg { color: hsl(var(--cz-color-warningFg)); }
184
+
185
+ /* Border */
186
+ .cz-border { border-width: 1px; border-style: solid; }
187
+ .cz-border-b { border-bottom-width: 1px; border-bottom-style: solid; }
188
+ .cz-border-t { border-top-width: 1px; border-top-style: solid; }
189
+ .cz-border-border { border-color: hsl(var(--cz-color-border)); }
190
+ .cz-border-danger { border-color: hsl(var(--cz-color-danger)); }
191
+
192
+ /* Border Radius */
193
+ .cz-rounded-sm { border-radius: var(--cz-radius-sm); }
194
+ .cz-rounded-md { border-radius: var(--cz-radius-md); }
195
+ .cz-rounded-lg { border-radius: var(--cz-radius-lg); }
196
+ .cz-rounded-full { border-radius: var(--cz-radius-full); }
197
+
198
+ /* Shadow */
199
+ .cz-shadow-sm { box-shadow: var(--cz-shadow-sm); }
200
+
201
+ /* Transitions */
202
+ .cz-transition { transition: all var(--cz-transition-fast); }
203
+
204
+ /* States */
205
+ .cz-disabled {
206
+ pointer-events: none;
207
+ opacity: 0.5;
208
+ cursor: not-allowed;
209
+ }
210
+
211
+ /* Focus */
212
+ .cz-focus-ring:focus {
213
+ outline: none;
214
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
215
+ }
216
+
217
+ .cz-focus-ring:focus-visible {
218
+ outline: none;
219
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
220
+ }
221
+
222
+ /* Hover states */
223
+ .cz-hover-opacity:hover { opacity: 0.9; }
224
+ .cz-hover-muted:hover { background-color: hsl(var(--cz-color-muted)); }
225
+
226
+ /* ===== BUTTON ===== */
227
+
228
+ .cz-btn {
229
+ display: inline-flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+ gap: 0.5rem;
233
+ border-radius: var(--cz-radius-md);
234
+ font-weight: var(--cz-font-weight-medium);
235
+ transition: all var(--cz-transition-fast);
236
+ cursor: pointer;
237
+ border: none;
238
+ }
239
+
240
+ .cz-btn:focus-visible {
241
+ outline: none;
242
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
243
+ }
244
+
245
+ .cz-btn:disabled {
246
+ pointer-events: none;
247
+ opacity: 0.5;
248
+ }
249
+
250
+ /* Button Sizes */
251
+ .cz-btn-sm { height: 2rem; padding: 0 0.75rem; font-size: var(--cz-font-size-sm); }
252
+ .cz-btn-md { height: 2.5rem; padding: 0 1rem; font-size: var(--cz-font-size-md); }
253
+ .cz-btn-lg { height: 3rem; padding: 0 1.5rem; font-size: var(--cz-font-size-lg); }
254
+
255
+ /* Button Variants */
256
+ .cz-btn-primary {
257
+ background-color: hsl(var(--cz-color-primary));
258
+ color: hsl(var(--cz-color-primaryFg));
259
+ }
260
+ .cz-btn-primary:hover { opacity: 0.9; }
261
+
262
+ .cz-btn-secondary {
263
+ background-color: hsl(var(--cz-color-secondary));
264
+ color: hsl(var(--cz-color-secondaryFg));
265
+ }
266
+ .cz-btn-secondary:hover { opacity: 0.8; }
267
+
268
+ .cz-btn-outline {
269
+ background-color: transparent;
270
+ border: 1px solid hsl(var(--cz-color-border));
271
+ color: hsl(var(--cz-color-fg));
272
+ }
273
+ .cz-btn-outline:hover { background-color: hsl(var(--cz-color-muted)); }
274
+
275
+ .cz-btn-ghost {
276
+ background-color: transparent;
277
+ color: hsl(var(--cz-color-fg));
278
+ }
279
+ .cz-btn-ghost:hover { background-color: hsl(var(--cz-color-muted)); }
280
+
281
+ .cz-btn-danger {
282
+ background-color: hsl(var(--cz-color-danger));
283
+ color: hsl(var(--cz-color-dangerFg));
284
+ }
285
+ .cz-btn-danger:hover { opacity: 0.9; }
286
+
287
+ /* ===== INPUT ===== */
288
+
289
+ .cz-input {
290
+ width: 100%;
291
+ border-radius: var(--cz-radius-md);
292
+ border: 1px solid hsl(var(--cz-color-border));
293
+ background-color: hsl(var(--cz-color-bg));
294
+ color: hsl(var(--cz-color-fg));
295
+ transition: all var(--cz-transition-fast);
296
+ }
297
+
298
+ .cz-input::placeholder {
299
+ color: hsl(var(--cz-color-mutedFg));
300
+ }
301
+
302
+ .cz-input:focus {
303
+ outline: none;
304
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-ring));
305
+ }
306
+
307
+ .cz-input:disabled {
308
+ cursor: not-allowed;
309
+ opacity: 0.5;
310
+ }
311
+
312
+ .cz-input-error {
313
+ border-color: hsl(var(--cz-color-danger));
314
+ }
315
+ .cz-input-error:focus {
316
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-danger));
317
+ }
318
+
319
+ /* Input Sizes */
320
+ .cz-input-sm { height: 2rem; padding: 0 0.5rem; font-size: var(--cz-font-size-sm); }
321
+ .cz-input-md { height: 2.5rem; padding: 0 0.75rem; font-size: var(--cz-font-size-md); }
322
+ .cz-input-lg { height: 3rem; padding: 0 1rem; font-size: var(--cz-font-size-lg); }
323
+
324
+ /* ===== CARD ===== */
325
+
326
+ .cz-card {
327
+ border-radius: var(--cz-radius-lg);
328
+ border: 1px solid hsl(var(--cz-color-border));
329
+ background-color: hsl(var(--cz-color-bg));
330
+ box-shadow: var(--cz-shadow-sm);
331
+ padding: var(--cz-spacing-lg);
332
+ }
333
+
334
+ .cz-card-no-padding {
335
+ padding: 0;
336
+ }
337
+
338
+ .cz-card-header {
339
+ display: flex;
340
+ flex-direction: column;
341
+ gap: 0.375rem;
342
+ padding-bottom: var(--cz-spacing-md);
343
+ border-bottom: 1px solid hsl(var(--cz-color-border));
344
+ margin-bottom: var(--cz-spacing-md);
345
+ }
346
+
347
+ .cz-card-title {
348
+ font-size: var(--cz-font-size-lg);
349
+ font-weight: var(--cz-font-weight-semibold);
350
+ color: hsl(var(--cz-color-fg));
351
+ line-height: var(--cz-font-lineHeight-tight);
352
+ }
353
+
354
+ .cz-card-description {
355
+ font-size: var(--cz-font-size-sm);
356
+ color: hsl(var(--cz-color-mutedFg));
357
+ }
358
+
359
+ .cz-card-body {
360
+ color: hsl(var(--cz-color-fg));
361
+ }
362
+
363
+ .cz-card-footer {
364
+ display: flex;
365
+ align-items: center;
366
+ gap: 0.5rem;
367
+ padding-top: var(--cz-spacing-md);
368
+ margin-top: var(--cz-spacing-md);
369
+ border-top: 1px solid hsl(var(--cz-color-border));
370
+ }
371
+
372
+ /* ===== BADGE ===== */
373
+
374
+ .cz-badge {
375
+ display: inline-flex;
376
+ align-items: center;
377
+ border-radius: var(--cz-radius-full);
378
+ font-weight: var(--cz-font-weight-medium);
379
+ white-space: nowrap;
380
+ }
381
+
382
+ /* Badge Sizes */
383
+ .cz-badge-sm { padding: 0.125rem 0.375rem; font-size: 0.7rem; }
384
+ .cz-badge-md { padding: 0.125rem 0.5rem; font-size: var(--cz-font-size-xs); }
385
+
386
+ /* Badge Variants */
387
+ .cz-badge-default {
388
+ background-color: hsl(var(--cz-color-secondary));
389
+ color: hsl(var(--cz-color-secondaryFg));
390
+ }
391
+
392
+ .cz-badge-primary {
393
+ background-color: hsl(var(--cz-color-primary));
394
+ color: hsl(var(--cz-color-primaryFg));
395
+ }
396
+
397
+ .cz-badge-success {
398
+ background-color: hsl(var(--cz-color-success));
399
+ color: hsl(var(--cz-color-successFg));
400
+ }
401
+
402
+ .cz-badge-danger {
403
+ background-color: hsl(var(--cz-color-danger));
404
+ color: hsl(var(--cz-color-dangerFg));
405
+ }
406
+
407
+ .cz-badge-warning {
408
+ background-color: hsl(var(--cz-color-warning));
409
+ color: hsl(var(--cz-color-warningFg));
410
+ }
411
+
412
+ .cz-badge-outline {
413
+ background-color: transparent;
414
+ border: 1px solid hsl(var(--cz-color-border));
415
+ color: hsl(var(--cz-color-fg));
416
+ }
417
+
418
+ /* ===== LABEL ===== */
419
+
420
+ .cz-label {
421
+ font-size: var(--cz-font-size-sm);
422
+ font-weight: var(--cz-font-weight-medium);
423
+ color: hsl(var(--cz-color-fg));
424
+ }
425
+
426
+ /* ===== ERROR TEXT ===== */
427
+
428
+ .cz-error {
429
+ font-size: var(--cz-font-size-sm);
430
+ color: hsl(var(--cz-color-danger));
431
+ }