@johngarcia9110/invariant 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 ADDED
@@ -0,0 +1,161 @@
1
+ # @johngarcia9110/invariant
2
+
3
+ A reusable React component library built with TypeScript and Tailwind CSS.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @johngarcia9110/invariant
9
+ ```
10
+
11
+ **Peer Dependencies:** React 18+ is required. This library uses Tailwind CSS v4.
12
+
13
+ ## Setup
14
+
15
+ ### 1. Install Tailwind CSS v4
16
+
17
+ ```bash
18
+ npm install tailwindcss @tailwindcss/postcss postcss
19
+ ```
20
+
21
+ ### 2. Configure PostCSS
22
+
23
+ Create or update your `postcss.config.js`:
24
+
25
+ ```js
26
+ export default {
27
+ plugins: {
28
+ '@tailwindcss/postcss': {}
29
+ }
30
+ }
31
+ ```
32
+
33
+ ### 3. Import Styles
34
+
35
+ In your main CSS file:
36
+
37
+ ```css
38
+ @import "tailwindcss";
39
+ @import "@johngarcia9110/invariant/style.css";
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ```tsx
45
+ import { Button, Card, CardHeader, CardBody, Input } from '@johngarcia9110/invariant'
46
+
47
+ function App() {
48
+ return (
49
+ <Card>
50
+ <CardHeader>
51
+ <h2>Sign In</h2>
52
+ </CardHeader>
53
+ <CardBody>
54
+ <Input label="Email" type="email" placeholder="Enter your email" />
55
+ <Input label="Password" type="password" />
56
+ <Button variant="primary" size="md">
57
+ Sign In
58
+ </Button>
59
+ </CardBody>
60
+ </Card>
61
+ )
62
+ }
63
+ ```
64
+
65
+ ## Components
66
+
67
+ ### Button
68
+
69
+ ```tsx
70
+ <Button variant="primary" size="md">Click me</Button>
71
+ <Button variant="secondary" size="sm">Secondary</Button>
72
+ <Button variant="outline" size="lg">Outline</Button>
73
+ ```
74
+
75
+ **Props:**
76
+ - `variant`: `'primary'` | `'secondary'` | `'outline'` (default: `'primary'`)
77
+ - `size`: `'sm'` | `'md'` | `'lg'` (default: `'md'`)
78
+ - All standard button HTML attributes
79
+
80
+ ### Card
81
+
82
+ ```tsx
83
+ <Card>
84
+ <CardHeader>Header content</CardHeader>
85
+ <CardBody>Body content</CardBody>
86
+ <CardFooter>Footer content</CardFooter>
87
+ </Card>
88
+ ```
89
+
90
+ ### Input
91
+
92
+ ```tsx
93
+ <Input
94
+ label="Username"
95
+ placeholder="Enter username"
96
+ helperText="Must be at least 3 characters"
97
+ />
98
+
99
+ <Input
100
+ label="Email"
101
+ error="Invalid email address"
102
+ />
103
+ ```
104
+
105
+ **Props:**
106
+ - `label`: Optional label text
107
+ - `error`: Error message (shows red styling)
108
+ - `helperText`: Helper text below input
109
+ - All standard input HTML attributes
110
+
111
+ ## Utilities
112
+
113
+ ### cn()
114
+
115
+ A utility function for merging Tailwind classes:
116
+
117
+ ```tsx
118
+ import { cn } from '@johngarcia9110/invariant'
119
+
120
+ <div className={cn('p-4', isActive && 'bg-blue-500', className)}>
121
+ ```
122
+
123
+ ## Theming
124
+
125
+ Components use CSS custom properties for colors. Override them in your CSS to customize the theme:
126
+
127
+ ```css
128
+ :root {
129
+ --primary: oklch(0.205 0 0);
130
+ --primary-foreground: oklch(0.985 0 0);
131
+ --secondary: oklch(0.97 0 0);
132
+ --secondary-foreground: oklch(0.205 0 0);
133
+ --background: oklch(1 0 0);
134
+ --foreground: oklch(0.145 0 0);
135
+ --border: oklch(0.922 0 0);
136
+ --ring: oklch(0.708 0 0);
137
+ --radius: 0.625rem;
138
+ }
139
+ ```
140
+
141
+ ### Dark Mode
142
+
143
+ Add the `dark` class to your root element to enable dark mode:
144
+
145
+ ```tsx
146
+ <html className="dark">
147
+ ```
148
+
149
+ The library includes built-in dark mode styles that automatically apply when the `dark` class is present.
150
+
151
+ ## TypeScript
152
+
153
+ Types are included and exported from the package:
154
+
155
+ ```tsx
156
+ import type { ButtonProps, CardProps, InputProps } from '@johngarcia9110/invariant'
157
+ ```
158
+
159
+ ## License
160
+
161
+ MIT
@@ -0,0 +1,8 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+
3
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
4
+ variant?: 'primary' | 'secondary' | 'outline';
5
+ size?: 'sm' | 'md' | 'lg';
6
+ }
7
+ export declare const Button: import('react').ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
8
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAG7D,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;IAC7C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B;AAcD,eAAO,MAAM,MAAM,2GAoBlB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { Button, type ButtonProps } from './Button';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { HTMLAttributes } from 'react';
2
+
3
+ export interface CardProps extends HTMLAttributes<HTMLDivElement> {
4
+ }
5
+ export declare const Card: import('react').ForwardRefExoticComponent<CardProps & import('react').RefAttributes<HTMLDivElement>>;
6
+ export interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
7
+ }
8
+ export declare const CardHeader: import('react').ForwardRefExoticComponent<CardHeaderProps & import('react').RefAttributes<HTMLDivElement>>;
9
+ export interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
10
+ }
11
+ export declare const CardBody: import('react').ForwardRefExoticComponent<CardBodyProps & import('react').RefAttributes<HTMLDivElement>>;
12
+ export interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
13
+ }
14
+ export declare const CardFooter: import('react').ForwardRefExoticComponent<CardFooterProps & import('react').RefAttributes<HTMLDivElement>>;
15
+ //# sourceMappingURL=Card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAGvD,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;CAAG;AAEpE,eAAO,MAAM,IAAI,sGAehB,CAAA;AAID,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;CAAG;AAE1E,eAAO,MAAM,UAAU,4GAUtB,CAAA;AAID,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC;CAAG;AAExE,eAAO,MAAM,QAAQ,0GAUpB,CAAA;AAID,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;CAAG;AAE1E,eAAO,MAAM,UAAU,4GAUtB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { Card, CardHeader, CardBody, CardFooter, type CardProps, type CardHeaderProps, type CardBodyProps, type CardFooterProps, } from './Card';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+
3
+ export interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
4
+ label?: string;
5
+ error?: string;
6
+ helperText?: string;
7
+ }
8
+ export declare const Input: import('react').ForwardRefExoticComponent<InputProps & import('react').RefAttributes<HTMLInputElement>>;
9
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAG5D,MAAM,WAAW,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,KAAK,yGA8CjB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { Input, type InputProps } from './Input';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './Button';
2
+ export * from './Card';
3
+ export * from './Input';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,4 @@
1
+
2
+ export * from './components';
3
+ export { cn } from './utils/cn';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react/jsx-runtime"),M=require("react");function re(e){var r,t,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(r=0;r<a;r++)e[r]&&(t=re(e[r]))&&(o&&(o+=" "),o+=t)}else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}function be(){for(var e,r,t=0,o="",a=arguments.length;t<a;t++)(e=arguments[t])&&(r=re(e))&&(o&&(o+=" "),o+=r);return o}const q="-",ge=e=>{const r=me(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:i=>{const n=i.split(q);return n[0]===""&&n.length!==1&&n.shift(),te(n,r)||fe(i)},getConflictingClassGroupIds:(i,n)=>{const p=t[i]||[];return n&&o[i]?[...p,...o[i]]:p}}},te=(e,r)=>{var i;if(e.length===0)return r.classGroupId;const t=e[0],o=r.nextPart.get(t),a=o?te(e.slice(1),o):void 0;if(a)return a;if(r.validators.length===0)return;const s=e.join(q);return(i=r.validators.find(({validator:n})=>n(s)))==null?void 0:i.classGroupId},D=/^\[(.+)\]$/,fe=e=>{if(D.test(e)){const r=D.exec(e)[1],t=r==null?void 0:r.substring(0,r.indexOf(":"));if(t)return"arbitrary.."+t}},me=e=>{const{theme:r,prefix:t}=e,o={nextPart:new Map,validators:[]};return ye(Object.entries(e.classGroups),t).forEach(([s,i])=>{U(i,o,s,r)}),o},U=(e,r,t,o)=>{e.forEach(a=>{if(typeof a=="string"){const s=a===""?r:ee(r,a);s.classGroupId=t;return}if(typeof a=="function"){if(he(a)){U(a(o),r,t,o);return}r.validators.push({validator:a,classGroupId:t});return}Object.entries(a).forEach(([s,i])=>{U(i,ee(r,s),t,o)})})},ee=(e,r)=>{let t=e;return r.split(q).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},he=e=>e.isThemeGetter,ye=(e,r)=>r?e.map(([t,o])=>{const a=o.map(s=>typeof s=="string"?r+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([i,n])=>[r+i,n])):s);return[t,a]}):e,xe=e=>{if(e<1)return{get:()=>{},set:()=>{}};let r=0,t=new Map,o=new Map;const a=(s,i)=>{t.set(s,i),r++,r>e&&(r=0,o=t,t=new Map)};return{get(s){let i=t.get(s);if(i!==void 0)return i;if((i=o.get(s))!==void 0)return a(s,i),i},set(s,i){t.has(s)?t.set(s,i):a(s,i)}}},oe="!",we=e=>{const{separator:r,experimentalParseClassName:t}=e,o=r.length===1,a=r[0],s=r.length,i=n=>{const p=[];let g=0,m=0,y;for(let u=0;u<n.length;u++){let f=n[u];if(g===0){if(f===a&&(o||n.slice(u,u+s)===r)){p.push(n.slice(m,u)),m=u+s;continue}if(f==="/"){y=u;continue}}f==="["?g++:f==="]"&&g--}const x=p.length===0?n:n.substring(m),C=x.startsWith(oe),w=C?x.substring(1):x,b=y&&y>m?y-m:void 0;return{modifiers:p,hasImportantModifier:C,baseClassName:w,maybePostfixModifierPosition:b}};return t?n=>t({className:n,parseClassName:i}):i},ve=e=>{if(e.length<=1)return e;const r=[];let t=[];return e.forEach(o=>{o[0]==="["?(r.push(...t.sort(),o),t=[]):t.push(o)}),r.push(...t.sort()),r},Ce=e=>({cache:xe(e.cacheSize),parseClassName:we(e),...ge(e)}),ke=/\s+/,ze=(e,r)=>{const{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:a}=r,s=[],i=e.trim().split(ke);let n="";for(let p=i.length-1;p>=0;p-=1){const g=i[p],{modifiers:m,hasImportantModifier:y,baseClassName:x,maybePostfixModifierPosition:C}=t(g);let w=!!C,b=o(w?x.substring(0,C):x);if(!b){if(!w){n=g+(n.length>0?" "+n:n);continue}if(b=o(x),!b){n=g+(n.length>0?" "+n:n);continue}w=!1}const u=ve(m).join(":"),f=y?u+oe:u,h=f+b;if(s.includes(h))continue;s.push(h);const I=a(b,w);for(let N=0;N<I.length;++N){const L=I[N];s.push(f+L)}n=g+(n.length>0?" "+n:n)}return n};function Se(){let e=0,r,t,o="";for(;e<arguments.length;)(r=arguments[e++])&&(t=ne(r))&&(o&&(o+=" "),o+=t);return o}const ne=e=>{if(typeof e=="string")return e;let r,t="";for(let o=0;o<e.length;o++)e[o]&&(r=ne(e[o]))&&(t&&(t+=" "),t+=r);return t};function Ae(e,...r){let t,o,a,s=i;function i(p){const g=r.reduce((m,y)=>y(m),e());return t=Ce(g),o=t.cache.get,a=t.cache.set,s=n,n(p)}function n(p){const g=o(p);if(g)return g;const m=ze(p,t);return a(p,m),m}return function(){return s(Se.apply(null,arguments))}}const c=e=>{const r=t=>t[e]||[];return r.isThemeGetter=!0,r},se=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ne=/^\d+\/\d+$/,Re=new Set(["px","full","screen"]),je=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Me=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ge=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ie=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Pe=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,z=e=>j(e)||Re.has(e)||Ne.test(e),S=e=>G(e,"length",Oe),j=e=>!!e&&!Number.isNaN(Number(e)),_=e=>G(e,"number",j),E=e=>!!e&&Number.isInteger(Number(e)),Ee=e=>e.endsWith("%")&&j(e.slice(0,-1)),l=e=>se.test(e),A=e=>je.test(e),Te=new Set(["length","size","percentage"]),Le=e=>G(e,Te,ae),Be=e=>G(e,"position",ae),$e=new Set(["image","url"]),We=e=>G(e,$e,_e),Fe=e=>G(e,"",Ve),T=()=>!0,G=(e,r,t)=>{const o=se.exec(e);return o?o[1]?typeof r=="string"?o[1]===r:r.has(o[1]):t(o[2]):!1},Oe=e=>Me.test(e)&&!Ge.test(e),ae=()=>!1,Ve=e=>Ie.test(e),_e=e=>Pe.test(e),Ue=()=>{const e=c("colors"),r=c("spacing"),t=c("blur"),o=c("brightness"),a=c("borderColor"),s=c("borderRadius"),i=c("borderSpacing"),n=c("borderWidth"),p=c("contrast"),g=c("grayscale"),m=c("hueRotate"),y=c("invert"),x=c("gap"),C=c("gradientColorStops"),w=c("gradientColorStopPositions"),b=c("inset"),u=c("margin"),f=c("opacity"),h=c("padding"),I=c("saturate"),N=c("scale"),L=c("sepia"),H=c("skew"),J=c("space"),X=c("translate"),W=()=>["auto","contain","none"],F=()=>["auto","hidden","clip","visible","scroll"],O=()=>["auto",l,r],d=()=>[l,r],Z=()=>["",z,S],B=()=>["auto",j,l],K=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],$=()=>["solid","dashed","dotted","double","none"],Q=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],V=()=>["start","end","center","between","around","evenly","stretch"],P=()=>["","0",l],Y=()=>["auto","avoid","all","avoid-page","page","left","right","column"],k=()=>[j,l];return{cacheSize:500,separator:":",theme:{colors:[T],spacing:[z,S],blur:["none","",A,l],brightness:k(),borderColor:[e],borderRadius:["none","","full",A,l],borderSpacing:d(),borderWidth:Z(),contrast:k(),grayscale:P(),hueRotate:k(),invert:P(),gap:d(),gradientColorStops:[e],gradientColorStopPositions:[Ee,S],inset:O(),margin:O(),opacity:k(),padding:d(),saturate:k(),scale:k(),sepia:P(),skew:k(),space:d(),translate:d()},classGroups:{aspect:[{aspect:["auto","square","video",l]}],container:["container"],columns:[{columns:[A]}],"break-after":[{"break-after":Y()}],"break-before":[{"break-before":Y()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...K(),l]}],overflow:[{overflow:F()}],"overflow-x":[{"overflow-x":F()}],"overflow-y":[{"overflow-y":F()}],overscroll:[{overscroll:W()}],"overscroll-x":[{"overscroll-x":W()}],"overscroll-y":[{"overscroll-y":W()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[b]}],"inset-x":[{"inset-x":[b]}],"inset-y":[{"inset-y":[b]}],start:[{start:[b]}],end:[{end:[b]}],top:[{top:[b]}],right:[{right:[b]}],bottom:[{bottom:[b]}],left:[{left:[b]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",E,l]}],basis:[{basis:O()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",l]}],grow:[{grow:P()}],shrink:[{shrink:P()}],order:[{order:["first","last","none",E,l]}],"grid-cols":[{"grid-cols":[T]}],"col-start-end":[{col:["auto",{span:["full",E,l]},l]}],"col-start":[{"col-start":B()}],"col-end":[{"col-end":B()}],"grid-rows":[{"grid-rows":[T]}],"row-start-end":[{row:["auto",{span:[E,l]},l]}],"row-start":[{"row-start":B()}],"row-end":[{"row-end":B()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",l]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",l]}],gap:[{gap:[x]}],"gap-x":[{"gap-x":[x]}],"gap-y":[{"gap-y":[x]}],"justify-content":[{justify:["normal",...V()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...V(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...V(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[h]}],px:[{px:[h]}],py:[{py:[h]}],ps:[{ps:[h]}],pe:[{pe:[h]}],pt:[{pt:[h]}],pr:[{pr:[h]}],pb:[{pb:[h]}],pl:[{pl:[h]}],m:[{m:[u]}],mx:[{mx:[u]}],my:[{my:[u]}],ms:[{ms:[u]}],me:[{me:[u]}],mt:[{mt:[u]}],mr:[{mr:[u]}],mb:[{mb:[u]}],ml:[{ml:[u]}],"space-x":[{"space-x":[J]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[J]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",l,r]}],"min-w":[{"min-w":[l,r,"min","max","fit"]}],"max-w":[{"max-w":[l,r,"none","full","min","max","fit","prose",{screen:[A]},A]}],h:[{h:[l,r,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[l,r,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[l,r,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[l,r,"auto","min","max","fit"]}],"font-size":[{text:["base",A,S]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",_]}],"font-family":[{font:[T]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",l]}],"line-clamp":[{"line-clamp":["none",j,_]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",z,l]}],"list-image":[{"list-image":["none",l]}],"list-style-type":[{list:["none","disc","decimal",l]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[f]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[f]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...$(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",z,S]}],"underline-offset":[{"underline-offset":["auto",z,l]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:d()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",l]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",l]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[f]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...K(),Be]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Le]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},We]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[w]}],"gradient-via-pos":[{via:[w]}],"gradient-to-pos":[{to:[w]}],"gradient-from":[{from:[C]}],"gradient-via":[{via:[C]}],"gradient-to":[{to:[C]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[n]}],"border-w-x":[{"border-x":[n]}],"border-w-y":[{"border-y":[n]}],"border-w-s":[{"border-s":[n]}],"border-w-e":[{"border-e":[n]}],"border-w-t":[{"border-t":[n]}],"border-w-r":[{"border-r":[n]}],"border-w-b":[{"border-b":[n]}],"border-w-l":[{"border-l":[n]}],"border-opacity":[{"border-opacity":[f]}],"border-style":[{border:[...$(),"hidden"]}],"divide-x":[{"divide-x":[n]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[n]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[f]}],"divide-style":[{divide:$()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-y":[{"border-y":[a]}],"border-color-s":[{"border-s":[a]}],"border-color-e":[{"border-e":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-b":[{"border-b":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...$()]}],"outline-offset":[{"outline-offset":[z,l]}],"outline-w":[{outline:[z,S]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[f]}],"ring-offset-w":[{"ring-offset":[z,S]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",A,Fe]}],"shadow-color":[{shadow:[T]}],opacity:[{opacity:[f]}],"mix-blend":[{"mix-blend":[...Q(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Q()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[p]}],"drop-shadow":[{"drop-shadow":["","none",A,l]}],grayscale:[{grayscale:[g]}],"hue-rotate":[{"hue-rotate":[m]}],invert:[{invert:[y]}],saturate:[{saturate:[I]}],sepia:[{sepia:[L]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[p]}],"backdrop-grayscale":[{"backdrop-grayscale":[g]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m]}],"backdrop-invert":[{"backdrop-invert":[y]}],"backdrop-opacity":[{"backdrop-opacity":[f]}],"backdrop-saturate":[{"backdrop-saturate":[I]}],"backdrop-sepia":[{"backdrop-sepia":[L]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",l]}],duration:[{duration:k()}],ease:[{ease:["linear","in","out","in-out",l]}],delay:[{delay:k()}],animate:[{animate:["none","spin","ping","pulse","bounce",l]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[N]}],"scale-x":[{"scale-x":[N]}],"scale-y":[{"scale-y":[N]}],rotate:[{rotate:[E,l]}],"translate-x":[{"translate-x":[X]}],"translate-y":[{"translate-y":[X]}],"skew-x":[{"skew-x":[H]}],"skew-y":[{"skew-y":[H]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",l]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",l]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":d()}],"scroll-mx":[{"scroll-mx":d()}],"scroll-my":[{"scroll-my":d()}],"scroll-ms":[{"scroll-ms":d()}],"scroll-me":[{"scroll-me":d()}],"scroll-mt":[{"scroll-mt":d()}],"scroll-mr":[{"scroll-mr":d()}],"scroll-mb":[{"scroll-mb":d()}],"scroll-ml":[{"scroll-ml":d()}],"scroll-p":[{"scroll-p":d()}],"scroll-px":[{"scroll-px":d()}],"scroll-py":[{"scroll-py":d()}],"scroll-ps":[{"scroll-ps":d()}],"scroll-pe":[{"scroll-pe":d()}],"scroll-pt":[{"scroll-pt":d()}],"scroll-pr":[{"scroll-pr":d()}],"scroll-pb":[{"scroll-pb":d()}],"scroll-pl":[{"scroll-pl":d()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",l]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[z,S,_]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},qe=Ae(Ue);function R(...e){return qe(be(e))}const He={primary:"bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500",secondary:"bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500",outline:"border-2 border-gray-300 text-gray-700 hover:bg-gray-50 focus:ring-gray-500"},Je={sm:"px-3 py-1.5 text-sm",md:"px-4 py-2 text-base",lg:"px-6 py-3 text-lg"},ie=M.forwardRef(({className:e,variant:r="primary",size:t="md",disabled:o,children:a,...s},i)=>v.jsx("button",{ref:i,className:R("inline-flex items-center justify-center font-medium rounded-md transition-colors","focus:outline-none focus:ring-2 focus:ring-offset-2","disabled:opacity-50 disabled:cursor-not-allowed",He[r],Je[t],e),disabled:o,...s,children:a}));ie.displayName="Button";const le=M.forwardRef(({className:e,children:r,...t},o)=>v.jsx("div",{ref:o,className:R("rounded-lg border border-gray-200 bg-white shadow-sm",e),...t,children:r}));le.displayName="Card";const ce=M.forwardRef(({className:e,...r},t)=>v.jsx("div",{ref:t,className:R("px-6 py-4 border-b border-gray-200",e),...r}));ce.displayName="CardHeader";const de=M.forwardRef(({className:e,...r},t)=>v.jsx("div",{ref:t,className:R("px-6 py-4",e),...r}));de.displayName="CardBody";const ue=M.forwardRef(({className:e,...r},t)=>v.jsx("div",{ref:t,className:R("px-6 py-4 border-t border-gray-200",e),...r}));ue.displayName="CardFooter";const pe=M.forwardRef(({className:e,label:r,error:t,helperText:o,id:a,...s},i)=>{const n=a||(r==null?void 0:r.toLowerCase().replace(/\s+/g,"-"));return v.jsxs("div",{className:"w-full",children:[r&&v.jsx("label",{htmlFor:n,className:"block text-sm font-medium text-gray-700 mb-1",children:r}),v.jsx("input",{ref:i,id:n,className:R("block w-full rounded-md border px-3 py-2 text-gray-900","placeholder:text-gray-400","focus:outline-none focus:ring-2 focus:ring-offset-0","disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",t?"border-red-500 focus:border-red-500 focus:ring-red-500":"border-gray-300 focus:border-blue-500 focus:ring-blue-500",e),"aria-invalid":t?"true":void 0,"aria-describedby":t?`${n}-error`:o?`${n}-helper`:void 0,...s}),t&&v.jsx("p",{id:`${n}-error`,className:"mt-1 text-sm text-red-600",children:t}),o&&!t&&v.jsx("p",{id:`${n}-helper`,className:"mt-1 text-sm text-gray-500",children:o})]})});pe.displayName="Input";exports.Button=ie;exports.Card=le;exports.CardBody=de;exports.CardFooter=ue;exports.CardHeader=ce;exports.Input=pe;exports.cn=R;